From 0d35363ea0d7984047f166181646677d47b1d9c2 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Fri, 3 Nov 2017 21:09:29 +0300 Subject: [PATCH] rsx: Minor optimization - dont update sampler state if texture state registers have not changed --- rpcs3/Emu/RSX/GL/GLGSRender.cpp | 4 +++- rpcs3/Emu/RSX/VK/VKGSRender.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/GL/GLGSRender.cpp b/rpcs3/Emu/RSX/GL/GLGSRender.cpp index ce27833442..150e70f42f 100644 --- a/rpcs3/Emu/RSX/GL/GLGSRender.cpp +++ b/rpcs3/Emu/RSX/GL/GLGSRender.cpp @@ -250,7 +250,9 @@ void GLGSRender::end() if (rsx::method_registers.fragment_textures[i].enabled()) { *sampler_state = m_gl_texture_cache.upload_texture(unused, rsx::method_registers.fragment_textures[i], m_rtts); - m_gl_sampler_states[i].apply(rsx::method_registers.fragment_textures[i]); + + if (m_textures_dirty[i]) + m_gl_sampler_states[i].apply(rsx::method_registers.fragment_textures[i]); } else { diff --git a/rpcs3/Emu/RSX/VK/VKGSRender.cpp b/rpcs3/Emu/RSX/VK/VKGSRender.cpp index 4881d523f0..6d55de692e 100644 --- a/rpcs3/Emu/RSX/VK/VKGSRender.cpp +++ b/rpcs3/Emu/RSX/VK/VKGSRender.cpp @@ -1101,7 +1101,7 @@ void VKGSRender::end() mip_mode = VK_SAMPLER_MIPMAP_MODE_NEAREST; } - if (fs_sampler_handles[i]) + if (fs_sampler_handles[i] && m_textures_dirty[i]) { if (!fs_sampler_handles[i]->matches(wrap_s, wrap_t, wrap_r, false, lod_bias, af_level, min_lod, max_lod, min_filter, mag_filter, mip_mode, border_color, fs_sampler_state[i]->is_depth_texture, depth_compare))