mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +00:00
rsx: Get rid of invalid_command_interrupt_raised
This commit is contained in:
parent
d97e9f7b4a
commit
2ed370093e
@ -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));
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user