rsx: Fix processing of deferred indexed draw parameter updates

This commit is contained in:
kd-11 2024-05-14 03:29:38 +03:00 committed by kd-11
parent 0e3fd6a582
commit 781c5a76d9
3 changed files with 4 additions and 4 deletions

View File

@ -30,7 +30,7 @@ namespace rsx
REGS(ctx)->register_vertex_info[attrib_index].data[channel_select] = value; REGS(ctx)->register_vertex_info[attrib_index].data[channel_select] = value;
} }
void push_draw_parameter_change(rsx::context* ctx, rsx::command_barrier_type type, u32 reg, u32 arg) void push_draw_parameter_change(rsx::context* ctx, rsx::command_barrier_type type, u32 reg, u32 arg0, u32 arg1, u32 index)
{ {
// NOTE: We can't test against latch here, since a previous change may be buffered in a pending barrier. // NOTE: We can't test against latch here, since a previous change may be buffered in a pending barrier.
if (!RSX(ctx)->in_begin_end || REGS(ctx)->current_draw_clause.empty()) if (!RSX(ctx)->in_begin_end || REGS(ctx)->current_draw_clause.empty())
@ -42,7 +42,7 @@ namespace rsx
REGS(ctx)->decode(reg, REGS(ctx)->latch); REGS(ctx)->decode(reg, REGS(ctx)->latch);
// Insert barrier to reinsert the value later // Insert barrier to reinsert the value later
REGS(ctx)->current_draw_clause.insert_command_barrier(type, arg); REGS(ctx)->current_draw_clause.insert_command_barrier(type, arg0, arg1, index);
} }
u32 get_report_data_impl([[maybe_unused]] rsx::context* ctx, u32 offset) u32 get_report_data_impl([[maybe_unused]] rsx::context* ctx, u32 offset)

View File

@ -15,7 +15,7 @@ namespace rsx
void push_vertex_data(rsx::context* ctx, u32 attrib_index, u32 channel_select, int count, rsx::vertex_base_type vtype, u32 value); void push_vertex_data(rsx::context* ctx, u32 attrib_index, u32 channel_select, int count, rsx::vertex_base_type vtype, u32 value);
void push_draw_parameter_change(rsx::context* ctx, rsx::command_barrier_type type, u32 reg, u32 arg); void push_draw_parameter_change(rsx::context* ctx, rsx::command_barrier_type type, u32 reg, u32 arg0, u32 arg1 = 0u, u32 index = 0u);
void set_fragment_texture_dirty_bit(rsx::context* ctx, u32 index); void set_fragment_texture_dirty_bit(rsx::context* ctx, u32 index);

View File

@ -217,7 +217,7 @@ namespace rsx
{ {
static void impl(context* ctx, u32 reg, u32 arg) static void impl(context* ctx, u32 reg, u32 arg)
{ {
util::push_draw_parameter_change(ctx, vertex_array_offset_modifier_barrier, reg, arg); util::push_draw_parameter_change(ctx, vertex_array_offset_modifier_barrier, reg, arg, 0, index);
} }
}; };