From 3efc7f339afa78e9c43d314f0d5c1abbffea4f29 Mon Sep 17 00:00:00 2001 From: "Dr. Chat" Date: Sat, 14 Nov 2015 22:34:34 -0600 Subject: [PATCH] Make sure texture swizzles match before performing a copy --- src/xenia/ui/gl/blitter.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/xenia/ui/gl/blitter.cc b/src/xenia/ui/gl/blitter.cc index 37e282d5b..fc86d5682 100644 --- a/src/xenia/ui/gl/blitter.cc +++ b/src/xenia/ui/gl/blitter.cc @@ -268,6 +268,15 @@ void Blitter::CopyColorTexture2D(GLuint src_texture, Rect2D src_rect, glDepthMask(GL_FALSE); glBindProgramPipeline(color_pipeline_); + // Make sure the texture swizzles match before performing a copy + // TODO: Is this a good place for this? + GLint swizzle_map[2][4] = {{0, 0, 0, 0}, {0, 0, 0, 0}}; + glGetTextureParameteriv(src_texture, GL_TEXTURE_SWIZZLE_RGBA, swizzle_map[0]); + glGetTextureParameteriv(dest_texture, GL_TEXTURE_SWIZZLE_RGBA, + swizzle_map[1]); + + glTextureParameteriv(src_texture, GL_TEXTURE_SWIZZLE_RGBA, swizzle_map[1]); + glNamedFramebufferTexture(scratch_framebuffer_, GL_COLOR_ATTACHMENT0, dest_texture, 0); glNamedFramebufferDrawBuffer(scratch_framebuffer_, GL_COLOR_ATTACHMENT0); @@ -277,6 +286,8 @@ void Blitter::CopyColorTexture2D(GLuint src_texture, Rect2D src_rect, glNamedFramebufferTexture(scratch_framebuffer_, GL_COLOR_ATTACHMENT0, GL_NONE, 0); + glTextureParameteriv(src_texture, GL_TEXTURE_SWIZZLE_RGBA, swizzle_map[0]); + state.Restore(); }