mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-18 18:58:55 +02:00
[GLES] Support texture_buffer for palette texture conversion.
OpenGL ES 3.2 adds this feature to core It was available to GLES 3.1 as GL_{EXT, OES}_texture_buffer as well. For the non-Nvidia vendors that implemented this is: - Qualcomm's Adreno 4xx - IMGTec's PowerVR Rogue
This commit is contained in:
@ -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" : ""
|
||||
|
Reference in New Issue
Block a user