In a blog post, Microsoft says Collabora will help build on Microsoft's existing mapping layers. For example, D3D11On12, D3D9On12, and the D3D12 Transition Layer library. However, the new collaboration will be seeking to extend further into open source libraries.
This will be achieved by leveraging Mesa 3D, which is an open source implementation of OpenGL and other graphics APIs. Microsoft and Collabora will integrate a D3D12 backend to Mesa 3D, allowing it to support OpenGL and OpenCL.
Microsoft says this will happen starting with version 1.2 of OpenCL and version 3.3 of OpenGL:
By adding more mapping layers, the companies will improve compatibility for machines that don't have native support for OpenGL and OpenCL. Leadng the list of goals is a desire to boost compatibility across productivity apps as opposed to games.
Microsoft details the following goals of the project:
- “Improve support for OpenCL- and OpenGL-based productivity and creative apps where native drivers are not available. We talk a lot about gaming on this blog, but this time the focus is on work, not play. By building the mapping layers on D3D12, we are building on the hard work we and our hardware partners have put into delivering stable and performant DirectX 12 drivers. When complete, the OpenCL and OpenGL mapping layers will provide hardware acceleration to more of your productivity and creative apps with just a DX12 driver, no other driver required.
- Contribute back to the graphics community. As we are building the mapping layers using an open source project, we intend to participate in the open source community. We will upstream the D3D12 backend to the main Mesa repository as we continue its development, and we hope that the Mesa and broader graphics development community will benefit from our contribution. In the meantime, you can check out the work in progress.
- Make it easier for developers to port their apps to D3D12. For developers looking to move from older OpenCL and OpenGL API versions to D3D12, the open source mapping layers will provide helpful example code on how to use the D3D12 Translation Layer library.”