summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp')
-rw-r--r--Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
index 22e86cfe42..8b60fe069e 100644
--- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
+++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
@@ -524,6 +524,7 @@ void ProgramShaderCache::CreateHeader()
GLSL_VERSION v = g_ogl_config.eSupportedGLSLVersion;
bool is_glsles = v >= GLSLES_300;
std::string SupportedESPointSize;
+ std::string SupportedESTextureBuffer;
switch (g_ogl_config.SupportedESPointSize)
{
case 1: SupportedESPointSize = "#extension GL_OES_geometry_point_size : enable"; break;
@@ -531,6 +532,20 @@ void ProgramShaderCache::CreateHeader()
default: SupportedESPointSize = ""; break;
}
+ switch (g_ogl_config.SupportedESTextureBuffer)
+ {
+ case ES_TEXBUF_TYPE::TEXBUF_EXT:
+ SupportedESTextureBuffer = "#extension GL_EXT_texture_buffer : enable";
+ break;
+ case ES_TEXBUF_TYPE::TEXBUF_OES:
+ SupportedESTextureBuffer = "#extension GL_OES_texture_buffer : enable";
+ break;
+ case ES_TEXBUF_TYPE::TEXBUF_CORE:
+ case ES_TEXBUF_TYPE::TEXBUF_NONE:
+ SupportedESTextureBuffer = "";
+ break;
+ }
+
snprintf(s_glsl_header, sizeof(s_glsl_header),
"%s\n"
"%s\n" // ubo
@@ -544,11 +559,13 @@ void ProgramShaderCache::CreateHeader()
"%s\n" // Geometry point size
"%s\n" // AEP
"%s\n" // texture buffer
+ "%s\n" // ES texture buffer
// Precision defines for GLSL ES
"%s\n"
"%s\n"
"%s\n"
+ "%s\n"
// Silly differences
"#define float2 vec2\n"
@@ -581,10 +598,12 @@ void ProgramShaderCache::CreateHeader()
, SupportedESPointSize.c_str()
, g_ogl_config.bSupportsAEP ? "#extension GL_ANDROID_extension_pack_es31a : enable" : ""
, v<GLSL_140 && g_ActiveConfig.backend_info.bSupportsPaletteConversion ? "#extension GL_ARB_texture_buffer_object : enable" : ""
+ , SupportedESTextureBuffer.c_str()
, is_glsles ? "precision highp float;" : ""
, is_glsles ? "precision highp int;" : ""
, is_glsles ? "precision highp sampler2DArray;" : ""
+ , (is_glsles && g_ActiveConfig.backend_info.bSupportsPaletteConversion) ? "precision highp usamplerBuffer;" : ""
, DriverDetails::HasBug(DriverDetails::BUG_BROKENTEXTURESIZE) ? "#define textureSize(x, y) ivec2(1, 1)" : ""
, DriverDetails::HasBug(DriverDetails::BUG_BROKENCENTROID) ? "#define centroid" : ""