GPUShader: Add support for vertex shader gl_Layer and fallback
This adds the possibility to use the `gpu_Layer` builtin to support layered rendering without geometry shader. The `BuiltinBits::LAYER` builtin needs to be manually added to the `GPUShaderCreateInfo` in order to use this feature. Note: This is only available for shaders using `GPUShaderCreateInfo`. A geometry shader fallback is generated if the extension `AMD_shader_explicit_vertex_parameter` is not available.
This commit is contained in:
@@ -248,6 +248,7 @@ static void detect_workarounds()
|
||||
GLContext::direct_state_access_support = false;
|
||||
GLContext::fixed_restart_index_support = false;
|
||||
GLContext::geometry_shader_invocations = false;
|
||||
GLContext::layered_rendering_support = false;
|
||||
GLContext::multi_bind_support = false;
|
||||
GLContext::multi_draw_indirect_support = false;
|
||||
GLContext::shader_draw_parameters_support = false;
|
||||
@@ -445,6 +446,7 @@ bool GLContext::direct_state_access_support = false;
|
||||
bool GLContext::explicit_location_support = false;
|
||||
bool GLContext::geometry_shader_invocations = false;
|
||||
bool GLContext::fixed_restart_index_support = false;
|
||||
bool GLContext::layered_rendering_support = false;
|
||||
bool GLContext::multi_bind_support = false;
|
||||
bool GLContext::multi_draw_indirect_support = false;
|
||||
bool GLContext::shader_draw_parameters_support = false;
|
||||
@@ -505,6 +507,7 @@ void GLBackend::capabilities_init()
|
||||
GLContext::explicit_location_support = GLEW_VERSION_4_3;
|
||||
GLContext::geometry_shader_invocations = GLEW_ARB_gpu_shader5;
|
||||
GLContext::fixed_restart_index_support = GLEW_ARB_ES3_compatibility;
|
||||
GLContext::layered_rendering_support = GLEW_AMD_vertex_shader_layer;
|
||||
GLContext::multi_bind_support = GLEW_ARB_multi_bind;
|
||||
GLContext::multi_draw_indirect_support = GLEW_ARB_multi_draw_indirect;
|
||||
GLContext::shader_draw_parameters_support = GLEW_ARB_shader_draw_parameters;
|
||||
|
||||
Reference in New Issue
Block a user