summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/Render.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2017-07-20 15:25:24 +1000
committerStenzek <stenzek@gmail.com>2017-07-30 17:43:59 +1000
commit7d78cf0f6fbca526e748590aeb6dfdc3c016669e (patch)
tree8aaeae2df72e621fdc722e818d746ad6cbbbf442 /Source/Core/VideoBackends/OGL/Render.cpp
parent07591e7d5cf1a909a1691492337cda55025c0d20 (diff)
ShaderGen: Implement pixel ubershaders
Diffstat (limited to 'Source/Core/VideoBackends/OGL/Render.cpp')
-rw-r--r--Source/Core/VideoBackends/OGL/Render.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp
index 4392da994c..66edbf5d74 100644
--- a/Source/Core/VideoBackends/OGL/Render.cpp
+++ b/Source/Core/VideoBackends/OGL/Render.cpp
@@ -447,6 +447,12 @@ Renderer::Renderer()
// Clip distance support is useless without a method to clamp the depth range
g_Config.backend_info.bSupportsDepthClamp = GLExtensions::Supports("GL_ARB_depth_clamp");
+ // Desktop OpenGL supports bitfield manulipation and dynamic sampler indexing if it supports
+ // shader5. OpenGL ES 3.1 supports it implicitly without an extension
+ g_Config.backend_info.bSupportsBitfield = GLExtensions::Supports("GL_ARB_gpu_shader5");
+ g_Config.backend_info.bSupportsDynamicSamplerIndexing =
+ GLExtensions::Supports("GL_ARB_gpu_shader5");
+
g_ogl_config.bSupportsGLSLCache = GLExtensions::Supports("GL_ARB_get_program_binary");
g_ogl_config.bSupportsGLPinnedMemory = GLExtensions::Supports("GL_AMD_pinned_memory");
g_ogl_config.bSupportsGLSync = GLExtensions::Supports("GL_ARB_sync");
@@ -515,6 +521,8 @@ Renderer::Renderer()
g_ogl_config.bSupportsMSAA = true;
g_ogl_config.bSupportsTextureStorage = true;
g_ogl_config.bSupports2DTextureStorageMultisample = true;
+ g_Config.backend_info.bSupportsBitfield = true;
+ g_Config.backend_info.bSupportsDynamicSamplerIndexing = g_ogl_config.bSupportsAEP;
if (g_ActiveConfig.iStereoMode > 0 && g_ActiveConfig.iMultisamples > 1 &&
!g_ogl_config.bSupports3DTextureStorageMultisample)
{
@@ -542,6 +550,8 @@ Renderer::Renderer()
g_ogl_config.bSupportsTextureStorage = true;
g_ogl_config.bSupports2DTextureStorageMultisample = true;
g_ogl_config.bSupports3DTextureStorageMultisample = true;
+ g_Config.backend_info.bSupportsBitfield = true;
+ g_Config.backend_info.bSupportsDynamicSamplerIndexing = true;
}
}
else