diff --git a/rpcs3/Emu/GS/GL/GLGSRender.cpp b/rpcs3/Emu/GS/GL/GLGSRender.cpp index cabcd745d7..d99eb1d104 100644 --- a/rpcs3/Emu/GS/GL/GLGSRender.cpp +++ b/rpcs3/Emu/GS/GL/GLGSRender.cpp @@ -1150,6 +1150,10 @@ void GLGSRender::Flip() glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_ONE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + if(m_set_texture_border_color) + { + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_BORDER_COLOR,(GLint)m_border_color); + } glMatrixMode(GL_PROJECTION); glLoadIdentity(); diff --git a/rpcs3/Emu/GS/RSXThread.cpp b/rpcs3/Emu/GS/RSXThread.cpp index 4868845eb0..e9ed13df1c 100644 --- a/rpcs3/Emu/GS/RSXThread.cpp +++ b/rpcs3/Emu/GS/RSXThread.cpp @@ -322,6 +322,13 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t& args, const u3 } break; + case NV4097_SET_TEXTURE_BORDER_COLOR: + { + m_set_texture_border_color = true; + m_border_color=ARGS(0); + break; + } + case NV4097_SET_SURFACE_FORMAT: { u32 a0 = ARGS(0); diff --git a/rpcs3/Emu/GS/RSXThread.h b/rpcs3/Emu/GS/RSXThread.h index c0e55d7871..887cf61b87 100644 --- a/rpcs3/Emu/GS/RSXThread.h +++ b/rpcs3/Emu/GS/RSXThread.h @@ -272,6 +272,9 @@ public: u8 m_blend_color_b; u8 m_blend_color_a; + bool m_set_texture_border_color; + u32 m_border_color; + u8 m_clear_color_r; u8 m_clear_color_g; u8 m_clear_color_b; @@ -400,6 +403,7 @@ protected: { m_set_alpha_test = false; m_set_blend = false; + m_set_texture_border_color = false; m_set_depth_bounds_test = false; m_depth_test_enable = false; m_set_logic_op = false; @@ -419,6 +423,8 @@ protected: m_clear_z = 0xffffff; m_clear_s = 0; + m_border_color = 0; + m_depth_bounds_min = 0.0; m_depth_bounds_max = 1.0; m_restart_index = 0xffffffff; @@ -442,6 +448,7 @@ protected: void Reset() { m_set_color_mask = false; + m_set_texture_border_color = false; m_set_clip = false; m_set_depth_func = false; m_set_depth_bounds = false;