diff options
| author | Scott Mansell <phiren@gmail.com> | 2015-10-18 02:14:52 +1300 |
|---|---|---|
| committer | Scott Mansell <phiren@gmail.com> | 2015-10-18 02:14:52 +1300 |
| commit | 8b1138943d014bee7e11f0658010ac7e96c4b59d (patch) | |
| tree | 10518776e68995f05dce4e12609fc05d8a61db5b /Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp | |
| parent | 34d46d69109b6fc83986d0f1e1337da7887455df (diff) | |
| parent | e7b2a22225b7d11f38dd045c990370df1daac61e (diff) | |
Merge pull request #3179 from phire/mesa-early-z
Support Conservative Depth as a fallback for Early Z (Mesa support for ZCompLoc)
Diffstat (limited to 'Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp index 60a5b4bc99..67f96e2380 100644 --- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp +++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp @@ -554,6 +554,22 @@ void ProgramShaderCache::CreateHeader() break; } + const char* earlyz_string = ""; + if (!is_glsles && g_ActiveConfig.backend_info.bSupportsEarlyZ) + { + if (g_ogl_config.bSupportsEarlyFragmentTests) + { + earlyz_string = "#extension GL_ARB_shader_image_load_store : enable\n" + "#define FORCE_EARLY_Z layout(early_fragment_tests) in\n"; + } + else if(g_ogl_config.bSupportsConservativeDepth) + { + // See PixelShaderGen for details about this fallback. + earlyz_string = "#extension GL_ARB_conservative_depth : enable\n" + "#define FORCE_EARLY_Z layout(depth_unchanged) out float gl_FragDepth\n"; + } + } + snprintf(s_glsl_header, sizeof(s_glsl_header), "%s\n" "%s\n" // ubo @@ -594,7 +610,7 @@ void ProgramShaderCache::CreateHeader() , GetGLSLVersionString().c_str() , v < GLSL_140 ? "#extension GL_ARB_uniform_buffer_object : enable" : "" - , !is_glsles && g_ActiveConfig.backend_info.bSupportsEarlyZ ? "#extension GL_ARB_shader_image_load_store : enable" : "" + , earlyz_string , (g_ActiveConfig.backend_info.bSupportsBindingLayout && v < GLSLES_310) ? "#extension GL_ARB_shading_language_420pack : enable" : "" , (g_ogl_config.bSupportsMSAA && v < GLSL_150) ? "#extension GL_ARB_texture_multisample : enable" : "" , g_ActiveConfig.backend_info.bSupportsBindingLayout ? "#define SAMPLER_BINDING(x) layout(binding = x)" : "#define SAMPLER_BINDING(x)" |
