diff --git a/rpcs3/Emu/RSX/GL/GLDraw.cpp b/rpcs3/Emu/RSX/GL/GLDraw.cpp index c3fb54c35..1604edc26 100644 --- a/rpcs3/Emu/RSX/GL/GLDraw.cpp +++ b/rpcs3/Emu/RSX/GL/GLDraw.cpp @@ -621,13 +621,6 @@ void GLGSRender::end() if (m_graphics_state & (rsx::pipeline_state::fragment_program_ucode_dirty | rsx::pipeline_state::vertex_program_ucode_dirty)) { - // TODO: Move to shared code - if ((m_graphics_state & rsx::pipeline_state::vertex_program_ucode_dirty) && - m_vertex_prog && !m_vertex_prog->has_indexed_constants) - { - m_graphics_state |= rsx::pipeline_state::transform_constants_dirty; - } - analyse_current_rsx_pipeline(); } diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index bc931c887..bfa0e05ad 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -1649,6 +1649,9 @@ namespace rsx m_graphics_state &= ~rsx::pipeline_state::fragment_program_ucode_dirty; + // Request for update of fragment constants if the program block is invalidated + m_graphics_state |= rsx::pipeline_state::fragment_constants_dirty; + const auto [program_offset, program_location] = method_registers.shader_program_address(); const auto prev_textures_reference_mask = current_fp_metadata.referenced_textures_mask; @@ -1693,6 +1696,9 @@ namespace rsx m_graphics_state &= ~rsx::pipeline_state::vertex_program_ucode_dirty; + // Reload transform constants unconditionally for now + m_graphics_state |= rsx::pipeline_state::transform_constants_dirty; + const u32 transform_program_start = rsx::method_registers.transform_program_start(); current_vertex_program.data.reserve(512 * 4); current_vertex_program.jump_table.clear(); @@ -1724,12 +1730,6 @@ namespace rsx void thread::analyse_current_rsx_pipeline() { - if (m_graphics_state & rsx::pipeline_state::fragment_program_ucode_dirty) - { - // Request for update of fragment constants if the program block is invalidated - m_graphics_state |= rsx::pipeline_state::fragment_constants_dirty; - } - prefetch_vertex_program(); prefetch_fragment_program(); } diff --git a/rpcs3/Emu/RSX/VK/VKDraw.cpp b/rpcs3/Emu/RSX/VK/VKDraw.cpp index 8a4024106..568d72f86 100644 --- a/rpcs3/Emu/RSX/VK/VKDraw.cpp +++ b/rpcs3/Emu/RSX/VK/VKDraw.cpp @@ -1030,13 +1030,6 @@ void VKGSRender::end() if (m_graphics_state & (rsx::pipeline_state::fragment_program_ucode_dirty | rsx::pipeline_state::vertex_program_ucode_dirty)) { - // TODO: Move to shared code - if ((m_graphics_state & rsx::pipeline_state::vertex_program_ucode_dirty) && - m_vertex_prog && !m_vertex_prog->has_indexed_constants) - { - m_graphics_state |= rsx::pipeline_state::transform_constants_dirty; - } - analyse_current_rsx_pipeline(); }