Qt Quick's ability to interoperate with custom, native graphics rendering code (Vulkan, Metal, D3D11, OpenGL) should be on part with what we offer when Qt Quick is using OpenGL directly. Losing functionality is only acceptable in cases that are accepted to be rarely used and/or seen as an outdated approach.
The following items should have a solution in Qt 6.0:
- How does one request extension on the Vulkan instance created by the renderloop? Currently can't, yet important when integrating external Vulkan content since Qt Quick cannot alone decide what extensions to enable for arbitrary 3rd party rendering code.
- How does one import a native device and similar objects? This would involve passing a QRhiXxxxNativeHandles to QRhi::create() in code working directly with QRhi. But since Qt Quick hides all that, this becomes impossible. Yet it is fairly essential for some advanced use cases. [customer input]
- How does one customize QRhi backend stuff, like which queues to request for the Vulkan device? Currently can't, may be relevant for external content - we had external contributions in QVulkanWindow for this, so interesting for some use cases.
- Even the recently introduced env.vars. are a bit suboptimal: consider code like this: https://github.com/alpqr/qrhivknvraytracing/commit/b8d9eb06810531fc1ed28ff237040ca52ca473c6#diff-29224632153b3e0f053085ebecf62728R105