diff options
| author | 2015-08-30 09:15:35 -0300 | |
|---|---|---|
| committer | 2015-09-03 15:09:51 -0300 | |
| commit | 466e608c19c5bd70392bd4f4049fc7ba9963a14c (patch) | |
| tree | e08a8ca19c935f4b2513151e0f280a29940f6d24 /src | |
| parent | OpenGL: Add support for Sampler Objects to state tracker (diff) | |
| download | yuzu-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.h | 4 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 6 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/pica_to_gl.h | 10 |
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 | ||
| 660 | void RasterizerOpenGL::SyncBlendColor() { | 660 | void 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 | ||
| 730 | void RasterizerOpenGL::SyncTevColor(unsigned stage_index, const Pica::Regs::TevStageConfig& config) { | 730 | void 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 | ||
| 739 | void RasterizerOpenGL::SyncCombinerColor() { | 739 | void 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 | ||
| 178 | inline std::array<GLfloat, 4> ColorRGBA8(const u8* bytes) { | 178 | inline 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 | ||