Zink support for new GL exts (past GL4.6) exposing equivalent new D3D11.x features? ( Tiled resources (sparse buffer/tex), Conservative Rasterization, Rasterizer Ordered Views (fragment interlock))
Hi @zmike, first note I have no real need right now but seeing how fast Zink is evolving and having already 4.6 support for some time guessing what more GL support can be added.. title resumes all wanted..
just seeing what D3D11 added next (in point releases) before D3D12 we have mainly these new graphics features: (https://docs.microsoft.com/en-us/windows/win32/direct3d11/direct3d-11-2-features) (https://docs.microsoft.com/en-us/windows/win32/direct3d11/direct3d-11-3-features)
- D3D11.2: Tiled resources (optional).
- D3D11.3: Conservative Rasterization (optional).
- D3D11.3: Rasterizer Ordered Views (optional).
many if not all started appearing on Nvidia since Maxwell2(end 2014) and AMD since RX Vega (mid 2017) and Intel Skylake (mid 2015)..
all have equivalent OpenGL extensions (there are some EXT+vendor exts: either before ARB was released or adding more features) but roughly ARB extensions should be:
- sparse/tiled:GL_ARB_sparse_texture+GL_ARB_sparse_buffer
- conser. raster: no ARB here, just similar GL_INTEL_conservative_rasterization and GL_NV_conservative_raster
- ROV:GL_ARB_fragment_shader_interlock
just seeing existing Mesa extension support (which should help in case interested implementing for Zink):
- sparse: only GL_ARB_sparse_buffer (exposed on AMD GPUs only) no sparse_texture support on Mesa for any driver sadly..
- Conser. raster: Mesa supports only INTEL variant: GL_INTEL_conservative_rasterization on Intel GPUs
- ROV: GL_ARB_fragment_shader_interlock (exposed on Intel GPUs only)
seeing this, seems would be reasonable to ask Zink support only for:
- GL_ARB_sparse_buffer
- GL_INTEL_conservative_rasterization
- GL_ARB_fragment_shader_interlock
of course Vulkan support for these HW features (so for exposing this GL exts) is even more broadly supported (checked vulkan.gpuinfo.org):
- sparse support: support for AMD+NV+Intel on Win+Lin exceptuating Intel ANV Mesa(linux) need to ask for sparse support for ANV needed for VKD3D for games like Valhalla..
- VK_EXT_conservative_rasterization: equal to sparse support i.e. all except Intel Mesa and asked for support for ANV here for DXVK+VKD3D which started making use of it recently: #4480 (closed)
- VK_EXT_fragment_shader_interlock: only missing AMD GPUs.. NV+Intel support on Win+Lin.
for GL samples to test Zink we have https://github.com/g-truc/ogl-samples:
- https://github.com/g-truc/ogl-samples/blob/master/samples/gl-500-buffer-sparse-arb.cpp
- https://github.com/g-truc/ogl-samples/blob/master/samples/gl-500-conservative-raster-nv.cpp but uses NV instead of GL_INTEL_conservative_rasterization so glEnable/Disable(GL_CONSERVATIVE_RASTERIZATION_NV); should be changed to equivalent one.. glEnable/Disable(GL_CONSERVATIVE_RASTERIZATION_INTEL);
- https://github.com/g-truc/ogl-samples/blob/master/samples/gl-500-shader-blend-nv.cpp but uses GL_NV_fragment_shader_interlock instead of GL_ARB_fragment_shader_interlock.. minor changes needed..
thanks..