summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner2015-08-30 09:15:35 -0300
committerGravatar Yuri Kunde Schlesner2015-09-03 15:09:51 -0300
commit466e608c19c5bd70392bd4f4049fc7ba9963a14c (patch)
treee08a8ca19c935f4b2513151e0f280a29940f6d24 /src
parentOpenGL: Add support for Sampler Objects to state tracker (diff)
downloadyuzu-466e608c19c5bd70392bd4f4049fc7ba9963a14c.tar.gz
yuzu-466e608c19c5bd70392bd4f4049fc7ba9963a14c.tar.xz
yuzu-466e608c19c5bd70392bd4f4049fc7ba9963a14c.zip
OpenGL: Remove ugly and endian-unsafe color pointer casts
Diffstat (limited to 'src')
-rw-r--r--src/video_core/pica.h4
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp6
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer_cache.cpp2
-rw-r--r--src/video_core/renderer_opengl/pica_to_gl.h10
4 files changed, 13 insertions, 9 deletions
diff --git a/src/video_core/pica.h b/src/video_core/pica.h
index 855cb442e..c1dca5087 100644
--- a/src/video_core/pica.h
+++ b/src/video_core/pica.h
@@ -135,6 +135,7 @@ struct Regs {
135 }; 135 };
136 136
137 union { 137 union {
138 u32 raw;
138 BitField< 0, 8, u32> r; 139 BitField< 0, 8, u32> r;
139 BitField< 8, 8, u32> g; 140 BitField< 8, 8, u32> g;
140 BitField<16, 8, u32> b; 141 BitField<16, 8, u32> b;
@@ -339,6 +340,7 @@ struct Regs {
339 }; 340 };
340 341
341 union { 342 union {
343 u32 const_color;
342 BitField< 0, 8, u32> const_r; 344 BitField< 0, 8, u32> const_r;
343 BitField< 8, 8, u32> const_g; 345 BitField< 8, 8, u32> const_g;
344 BitField<16, 8, u32> const_b; 346 BitField<16, 8, u32> const_b;
@@ -389,6 +391,7 @@ struct Regs {
389 TevStageConfig tev_stage5; 391 TevStageConfig tev_stage5;
390 392
391 union { 393 union {
394 u32 raw;
392 BitField< 0, 8, u32> r; 395 BitField< 0, 8, u32> r;
393 BitField< 8, 8, u32> g; 396 BitField< 8, 8, u32> g;
394 BitField<16, 8, u32> b; 397 BitField<16, 8, u32> b;
@@ -473,6 +476,7 @@ struct Regs {
473 }; 476 };
474 477
475 union { 478 union {
479 u32 raw;
476 BitField< 0, 8, u32> r; 480 BitField< 0, 8, u32> r;
477 BitField< 8, 8, u32> g; 481 BitField< 8, 8, u32> g;
478 BitField<16, 8, u32> b; 482 BitField<16, 8, u32> b;
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 80e773728..b556ea65b 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -658,7 +658,7 @@ void RasterizerOpenGL::SyncBlendFuncs() {
658} 658}
659 659
660void RasterizerOpenGL::SyncBlendColor() { 660void RasterizerOpenGL::SyncBlendColor() {
661 auto blend_color = PicaToGL::ColorRGBA8((u8*)&Pica::g_state.regs.output_merger.blend_const.r); 661 auto blend_color = PicaToGL::ColorRGBA8(Pica::g_state.regs.output_merger.blend_const.raw);
662 state.blend.color.red = blend_color[0]; 662 state.blend.color.red = blend_color[0];
663 state.blend.color.green = blend_color[1]; 663 state.blend.color.green = blend_color[1];
664 state.blend.color.blue = blend_color[2]; 664 state.blend.color.blue = blend_color[2];
@@ -728,7 +728,7 @@ void RasterizerOpenGL::SyncTevOps(unsigned stage_index, const Pica::Regs::TevSta
728} 728}
729 729
730void RasterizerOpenGL::SyncTevColor(unsigned stage_index, const Pica::Regs::TevStageConfig& config) { 730void RasterizerOpenGL::SyncTevColor(unsigned stage_index, const Pica::Regs::TevStageConfig& config) {
731 auto const_color = PicaToGL::ColorRGBA8((u8*)&config.const_r); 731 auto const_color = PicaToGL::ColorRGBA8(config.const_color);
732 glUniform4fv(uniform_tev_cfgs[stage_index].const_color, 1, const_color.data()); 732 glUniform4fv(uniform_tev_cfgs[stage_index].const_color, 1, const_color.data());
733} 733}
734 734
@@ -737,7 +737,7 @@ void RasterizerOpenGL::SyncTevMultipliers(unsigned stage_index, const Pica::Regs
737} 737}
738 738
739void RasterizerOpenGL::SyncCombinerColor() { 739void RasterizerOpenGL::SyncCombinerColor() {
740 auto combiner_color = PicaToGL::ColorRGBA8((u8*)&Pica::g_state.regs.tev_combiner_buffer_color.r); 740 auto combiner_color = PicaToGL::ColorRGBA8(Pica::g_state.regs.tev_combiner_buffer_color.raw);
741 glUniform4fv(uniform_tev_combiner_buffer_color, 1, combiner_color.data()); 741 glUniform4fv(uniform_tev_combiner_buffer_color, 1, combiner_color.data());
742} 742}
743 743
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
index 1e38c2e6d..5d9a80cd4 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
@@ -46,7 +46,7 @@ void RasterizerCacheOpenGL::LoadAndBindTexture(OpenGLState &state, unsigned text
46 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_t); 46 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_t);
47 47
48 if (wrap_s == GL_CLAMP_TO_BORDER || wrap_t == GL_CLAMP_TO_BORDER) { 48 if (wrap_s == GL_CLAMP_TO_BORDER || wrap_t == GL_CLAMP_TO_BORDER) {
49 auto border_color = PicaToGL::ColorRGBA8((u8*)&config.config.border_color.r); 49 auto border_color = PicaToGL::ColorRGBA8(config.config.border_color.raw);
50 glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, border_color.data()); 50 glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, border_color.data());
51 } 51 }
52 52
diff --git a/src/video_core/renderer_opengl/pica_to_gl.h b/src/video_core/renderer_opengl/pica_to_gl.h
index 6344f467f..04c1d1a34 100644
--- a/src/video_core/renderer_opengl/pica_to_gl.h
+++ b/src/video_core/renderer_opengl/pica_to_gl.h
@@ -175,11 +175,11 @@ inline GLenum StencilOp(Pica::Regs::StencilAction action) {
175 return stencil_op_table[(unsigned)action]; 175 return stencil_op_table[(unsigned)action];
176} 176}
177 177
178inline std::array<GLfloat, 4> ColorRGBA8(const u8* bytes) { 178inline std::array<GLfloat, 4> ColorRGBA8(const u32 color) {
179 return { { bytes[0] / 255.0f, 179 return { { (color >> 0 & 0xFF) / 255.0f,
180 bytes[1] / 255.0f, 180 (color >> 8 & 0xFF) / 255.0f,
181 bytes[2] / 255.0f, 181 (color >> 16 & 0xFF) / 255.0f,
182 bytes[3] / 255.0f 182 (color >> 24 & 0xFF) / 255.0f
183 } }; 183 } };
184} 184}
185 185