Read more at https://yuzu-emu.org/entry/yuzu-vulkan/
In regards to bindless, wouldn’t VK_EXT_descriptor_indexing essentially cover the bindless texture functionality OpenGL had? OGL’s bindless implementation maintained a descriptor table behind the scenes, which in turn is similar to the descriptor sets being used by this vulkan extension, with the difference being the fact that it’s explicitly created by users with Vulkan. General functionality however should be similar once used.
It’s actually the other way around. On Nvidia the “descriptor table” is where you put the texture info into in hardware. Bindless texture is exactly how it works in hardware while descriptor indexing is a high level abstraction to support mobile GPUs.
We can still abstract our code to be able to interact with both descriptor indexing and bindless textures. That said, bindless textures doesn’t require interaction from the driver (the handle they return is the handle the hardware uses), meanwhile updating descriptor sets through VK_EXT_descriptor_indexing still requires translating the opaque handle.
Regarding the GLSL vs SPIR-V compilation times. Perhaps https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gl_spirv.txt could be used on OpenGL to combine OpenGL with SPIR-V shaders to have OpenGL performance with the SPIR-V shader compilation times?