rsx: Get rid of invalid_command_interrupt_raised

This commit is contained in:
Eladash 2020-03-28 13:11:35 +03:00 committed by kd-11
parent d97e9f7b4a
commit 2ed370093e
4 changed files with 4 additions and 12 deletions

View File

@ -614,13 +614,6 @@ namespace rsx
if (auto method = methods[reg]) if (auto method = methods[reg])
{ {
method(this, reg, value); method(this, reg, value);
if (invalid_command_interrupt_raised)
{
fifo_ctrl->abort();
recover_fifo();
return;
}
} }
} }
while (fifo_ctrl->read_unsafe(command)); while (fifo_ctrl->read_unsafe(command));

View File

@ -2277,7 +2277,7 @@ namespace rsx
fifo_ctrl->set_get(restore_point); fifo_ctrl->set_get(restore_point);
fifo_ret_addr = saved_fifo_ret; fifo_ret_addr = saved_fifo_ret;
std::this_thread::sleep_for(1ms); std::this_thread::sleep_for(1ms);
invalid_command_interrupt_raised = false; fifo_ctrl->abort();
if (std::exchange(in_begin_end, false) && !rsx::method_registers.current_draw_clause.empty()) if (std::exchange(in_begin_end, false) && !rsx::method_registers.current_draw_clause.empty())
{ {

View File

@ -723,7 +723,6 @@ namespace rsx
bool capture_current_frame = false; bool capture_current_frame = false;
public: public:
bool invalid_command_interrupt_raised = false;
bool sync_point_request = false; bool sync_point_request = false;
bool in_begin_end = false; bool in_begin_end = false;

View File

@ -43,7 +43,7 @@ namespace rsx
const u32 cmd = rsx->get_fifo_cmd(); const u32 cmd = rsx->get_fifo_cmd();
rsx_log.error("Invalid RSX method 0x%x (arg=0x%x, start=0x%x, count=0x%x, non-inc=%s)", _reg << 2, arg, rsx_log.error("Invalid RSX method 0x%x (arg=0x%x, start=0x%x, count=0x%x, non-inc=%s)", _reg << 2, arg,
cmd & 0xfffc, (cmd >> 18) & 0x7ff, !!(cmd & RSX_METHOD_NON_INCREMENT_CMD)); cmd & 0xfffc, (cmd >> 18) & 0x7ff, !!(cmd & RSX_METHOD_NON_INCREMENT_CMD));
rsx->invalid_command_interrupt_raised = true; rsx->recover_fifo();
} }
void trace_method(thread* rsx, u32 _reg, u32 arg) void trace_method(thread* rsx, u32 _reg, u32 arg)
@ -541,7 +541,7 @@ namespace rsx
if (rsx::method_registers.current_draw_clause.primitive == rsx::primitive_type::invalid) if (rsx::method_registers.current_draw_clause.primitive == rsx::primitive_type::invalid)
{ {
// Recover from invalid primitive only if draw clause is not empty // Recover from invalid primitive only if draw clause is not empty
rsxthr->invalid_command_interrupt_raised = true; rsxthr->recover_fifo();
rsx_log.error("NV4097_SET_BEGIN_END aborted due to invalid primitive!"); rsx_log.error("NV4097_SET_BEGIN_END aborted due to invalid primitive!");
return; return;
@ -755,7 +755,7 @@ namespace rsx
{ {
// Ignore invalid value, recover // Ignore invalid value, recover
method_registers.registers[reg] = method_registers.register_previous_value; method_registers.registers[reg] = method_registers.register_previous_value;
rsx->invalid_command_interrupt_raised = true; rsx->recover_fifo();
rsx_log.error("Invalid NV4097_SET_INDEX_ARRAY_DMA value: 0x%x", arg); rsx_log.error("Invalid NV4097_SET_INDEX_ARRAY_DMA value: 0x%x", arg);
} }