rsx: Fix insertion of execution barriers

- Ignore barriers inserted after BEGIN but before any draw commands are emitted
- Properly process tail barriers inserted before END but after draw commands are submitted
- Ignore execution barriers with no effect (same register value written)
This commit is contained in:
kd-11 2018-11-13 13:12:18 +03:00 committed by kd-11
parent 1d19f71a46
commit 8a186bb97e
4 changed files with 47 additions and 5 deletions

View file

@ -632,7 +632,9 @@ namespace rsx
void set_vertex_base_offset(thread* rsx, u32 reg, u32 arg)
{
if (rsx->in_begin_end)
if (rsx->in_begin_end &&
!rsx::method_registers.current_draw_clause.empty() &&
reg != method_registers.register_previous_value)
{
// Revert change to queue later
method_registers.decode(reg, method_registers.register_previous_value);
@ -644,7 +646,9 @@ namespace rsx
void set_index_base_offset(thread* rsx, u32 reg, u32 arg)
{
if (rsx->in_begin_end)
if (rsx->in_begin_end &&
!rsx::method_registers.current_draw_clause.empty() &&
reg != method_registers.register_previous_value)
{
// Revert change to queue later
method_registers.decode(reg, method_registers.register_previous_value);