mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-12 01:38:37 +12:00
rsx: Critical pipeline fixes
- Fix scissor and viewport binding behavior - Fixes recovery if empty scissor is specified and then 'fixed' later - Optimizes state binding a bit
This commit is contained in:
parent
1ad76ad331
commit
54ec363e88
7 changed files with 93 additions and 29 deletions
|
@ -650,7 +650,7 @@ namespace rsx
|
|||
}
|
||||
}
|
||||
|
||||
void set_vertex_env_dirty_bit(thread* rsx, u32 reg, u32 arg)
|
||||
void set_vertex_env_dirty_bit(thread* rsx, u32, u32 arg)
|
||||
{
|
||||
if (arg != method_registers.register_previous_value)
|
||||
{
|
||||
|
@ -658,7 +658,7 @@ namespace rsx
|
|||
}
|
||||
}
|
||||
|
||||
void set_fragment_env_dirty_bit(thread* rsx, u32 reg, u32 arg)
|
||||
void set_fragment_env_dirty_bit(thread* rsx, u32, u32 arg)
|
||||
{
|
||||
if (arg != method_registers.register_previous_value)
|
||||
{
|
||||
|
@ -666,6 +666,14 @@ namespace rsx
|
|||
}
|
||||
}
|
||||
|
||||
void set_scissor_dirty_bit(thread* rsx, u32 reg, u32 arg)
|
||||
{
|
||||
if (arg != method_registers.register_previous_value)
|
||||
{
|
||||
rsx->m_graphics_state |= rsx::pipeline_state::scissor_config_state_dirty;
|
||||
}
|
||||
}
|
||||
|
||||
template<u32 index>
|
||||
struct set_texture_dirty_bit
|
||||
{
|
||||
|
@ -2729,6 +2737,8 @@ namespace rsx
|
|||
bind<NV4097_SET_SHADER_PACKER, nv4097::set_ROP_state_dirty_bit>();
|
||||
bind<NV4097_SET_SHADER_WINDOW, nv4097::set_ROP_state_dirty_bit>();
|
||||
bind<NV4097_SET_FOG_MODE, nv4097::set_ROP_state_dirty_bit>();
|
||||
bind<NV4097_SET_SCISSOR_HORIZONTAL, nv4097::set_scissor_dirty_bit>();
|
||||
bind<NV4097_SET_SCISSOR_VERTICAL, nv4097::set_scissor_dirty_bit>();
|
||||
bind_array<NV4097_SET_FOG_PARAMS, 1, 2, nv4097::set_ROP_state_dirty_bit>();
|
||||
bind_range<NV4097_SET_VIEWPORT_SCALE, 1, 3, nv4097::set_viewport_dirty_bit>();
|
||||
bind_range<NV4097_SET_VIEWPORT_OFFSET, 1, 3, nv4097::set_viewport_dirty_bit>();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue