Merged to QTBUG-78640. Closing this.
All these need further thinking first.
- Conclude if we can live without push constants. (we only support uniform buffers with QRhi, even though some backends (Vulkan, OpenGL?) could offer another (limited) form of sending data to the shader - no option for D3D11 and Metal, however)
- Conclude if never using uniform buffers in the OpenGL backend is suitable for all users, including Quick 3D. (The GL backend decomposes uniform buffer data into individual uniforms. We never generate true uniform blocks in the SPIRV-Cross generated GLSL shaders, since for Qt Quick & co. this is not worth it. But think of other clients, e.g. Quick 3D with a larger amount of light data)
- Vulkan backend: staging for immut/static buffers should be persistently mapped too?
- Metal backend: should pipeline objects and such be deferred-released too?
- storage buffer bind-range alignment? (check, perhaps just needs documenting it's same as ubuf?)
- make some warnings/errors nicer (e.g. print backend name when failed to create)
- improve QRhi internal docs about barriers: add a note about barriers to beginPass and beginComputePass at least. Check the general section too.
- do we need a waitIdle (or similar) in the renderloop before cleaning up nodes? (but watch out for deviceLost flag)
- OpenGL backend: sRGB textures, what's the story there, what's missing. May not map well to what we've been implementing for the other backends. Note separate task for HDR in colorspace in general. This is just feature parity in OpenGL backend vs. the other three.
- storage buffers with dynamic offset (add it to api, and all backends vk, mtl, d3d, gl)
- rgba16f test - must be in the manual test, similarly to (or in) the floattexture one that exercises rgba32f
- replace some Q_UNREACHABLE with Q_ASSERT_X? - check if we are following the right pattern here
- utilize recently added bgr888 QImage format in some form? Perhaps not very relevant for now.