summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/TextureCache.cpp
diff options
context:
space:
mode:
authorMat M <mathew1800@gmail.com>2016-09-30 19:15:50 -0400
committerGitHub <noreply@github.com>2016-09-30 19:15:50 -0400
commit46b9383280a623753686ab6df6c479e784e416ae (patch)
tree9ffb2cbdba6d39a29d6fed9df4db03166755a20d /Source/Core/VideoBackends/OGL/TextureCache.cpp
parentf3cdc6433cba253fa4485cd7e27025c31410ed0c (diff)
parenta8194cff3ca8f9b85a779da6b8214b58ba3fa7d0 (diff)
Merge pull request #3935 from stenzek/vulkan-pr
Vulkan Backend
Diffstat (limited to 'Source/Core/VideoBackends/OGL/TextureCache.cpp')
-rw-r--r--Source/Core/VideoBackends/OGL/TextureCache.cpp52
1 files changed, 33 insertions, 19 deletions
diff --git a/Source/Core/VideoBackends/OGL/TextureCache.cpp b/Source/Core/VideoBackends/OGL/TextureCache.cpp
index 6643e6b9cd..dc9d290f3e 100644
--- a/Source/Core/VideoBackends/OGL/TextureCache.cpp
+++ b/Source/Core/VideoBackends/OGL/TextureCache.cpp
@@ -314,7 +314,7 @@ void TextureCache::SetStage()
glActiveTexture(GL_TEXTURE0 + s_ActiveTexture);
}
-void TextureCache::CompileShaders()
+bool TextureCache::CompileShaders()
{
constexpr const char* color_copy_program = "SAMPLER_BINDING(9) uniform sampler2DArray samp9;\n"
"in vec3 f_uv0;\n"
@@ -398,15 +398,18 @@ void TextureCache::CompileShaders()
const char* prefix = geo_program.empty() ? "f" : "v";
const char* depth_layer = g_ActiveConfig.bStereoEFBMonoDepth ? "0.0" : "f_uv0.z";
- ProgramShaderCache::CompileShader(s_ColorCopyProgram,
- StringFromFormat(vertex_program, prefix, prefix),
- color_copy_program, geo_program);
- ProgramShaderCache::CompileShader(s_ColorMatrixProgram,
- StringFromFormat(vertex_program, prefix, prefix),
- color_matrix_program, geo_program);
- ProgramShaderCache::CompileShader(
- s_DepthMatrixProgram, StringFromFormat(vertex_program, prefix, prefix),
- StringFromFormat(depth_matrix_program, depth_layer), geo_program);
+ if (!ProgramShaderCache::CompileShader(s_ColorCopyProgram,
+ StringFromFormat(vertex_program, prefix, prefix),
+ color_copy_program, geo_program) ||
+ !ProgramShaderCache::CompileShader(s_ColorMatrixProgram,
+ StringFromFormat(vertex_program, prefix, prefix),
+ color_matrix_program, geo_program) ||
+ !ProgramShaderCache::CompileShader(
+ s_DepthMatrixProgram, StringFromFormat(vertex_program, prefix, prefix),
+ StringFromFormat(depth_matrix_program, depth_layer), geo_program))
+ {
+ return false;
+ }
s_ColorMatrixUniform = glGetUniformLocation(s_ColorMatrixProgram.glprogid, "colmat");
s_DepthMatrixUniform = glGetUniformLocation(s_DepthMatrixProgram.glprogid, "colmat");
@@ -500,9 +503,12 @@ void TextureCache::CompileShaders()
if (g_ActiveConfig.backend_info.bSupportsPaletteConversion)
{
- ProgramShaderCache::CompileShader(
- s_palette_pixel_shader[GX_TL_IA8], StringFromFormat(vertex_program, prefix, prefix),
- "#define DECODE DecodePixel_IA8" + palette_shader, geo_program);
+ if (!ProgramShaderCache::CompileShader(
+ s_palette_pixel_shader[GX_TL_IA8], StringFromFormat(vertex_program, prefix, prefix),
+ "#define DECODE DecodePixel_IA8" + palette_shader, geo_program))
+ {
+ return false;
+ }
s_palette_buffer_offset_uniform[GX_TL_IA8] =
glGetUniformLocation(s_palette_pixel_shader[GX_TL_IA8].glprogid, "texture_buffer_offset");
s_palette_multiplier_uniform[GX_TL_IA8] =
@@ -510,9 +516,12 @@ void TextureCache::CompileShaders()
s_palette_copy_position_uniform[GX_TL_IA8] =
glGetUniformLocation(s_palette_pixel_shader[GX_TL_IA8].glprogid, "copy_position");
- ProgramShaderCache::CompileShader(
- s_palette_pixel_shader[GX_TL_RGB565], StringFromFormat(vertex_program, prefix, prefix),
- "#define DECODE DecodePixel_RGB565" + palette_shader, geo_program);
+ if (!ProgramShaderCache::CompileShader(
+ s_palette_pixel_shader[GX_TL_RGB565], StringFromFormat(vertex_program, prefix, prefix),
+ "#define DECODE DecodePixel_RGB565" + palette_shader, geo_program))
+ {
+ return false;
+ }
s_palette_buffer_offset_uniform[GX_TL_RGB565] = glGetUniformLocation(
s_palette_pixel_shader[GX_TL_RGB565].glprogid, "texture_buffer_offset");
s_palette_multiplier_uniform[GX_TL_RGB565] =
@@ -520,9 +529,12 @@ void TextureCache::CompileShaders()
s_palette_copy_position_uniform[GX_TL_RGB565] =
glGetUniformLocation(s_palette_pixel_shader[GX_TL_RGB565].glprogid, "copy_position");
- ProgramShaderCache::CompileShader(
- s_palette_pixel_shader[GX_TL_RGB5A3], StringFromFormat(vertex_program, prefix, prefix),
- "#define DECODE DecodePixel_RGB5A3" + palette_shader, geo_program);
+ if (!ProgramShaderCache::CompileShader(
+ s_palette_pixel_shader[GX_TL_RGB5A3], StringFromFormat(vertex_program, prefix, prefix),
+ "#define DECODE DecodePixel_RGB5A3" + palette_shader, geo_program))
+ {
+ return false;
+ }
s_palette_buffer_offset_uniform[GX_TL_RGB5A3] = glGetUniformLocation(
s_palette_pixel_shader[GX_TL_RGB5A3].glprogid, "texture_buffer_offset");
s_palette_multiplier_uniform[GX_TL_RGB5A3] =
@@ -530,6 +542,8 @@ void TextureCache::CompileShaders()
s_palette_copy_position_uniform[GX_TL_RGB5A3] =
glGetUniformLocation(s_palette_pixel_shader[GX_TL_RGB5A3].glprogid, "copy_position");
}
+
+ return true;
}
void TextureCache::DeleteShaders()