Merge pull request #9360 from Kelebek1/R-E-S-P-E-C-T

Respect render mode override
pull/8/head
liamwhite 2 years ago committed by GitHub
commit 90145c424d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -493,41 +493,51 @@ void Maxwell3D::ProcessQueryGet() {
void Maxwell3D::ProcessQueryCondition() { void Maxwell3D::ProcessQueryCondition() {
const GPUVAddr condition_address{regs.render_enable.Address()}; const GPUVAddr condition_address{regs.render_enable.Address()};
switch (regs.render_enable.mode) { switch (regs.render_enable_override) {
case Regs::RenderEnable::Mode::True: { case Regs::RenderEnable::Override::AlwaysRender:
execute_on = true; execute_on = true;
break; break;
} case Regs::RenderEnable::Override::NeverRender:
case Regs::RenderEnable::Mode::False: {
execute_on = false; execute_on = false;
break; break;
} case Regs::RenderEnable::Override::UseRenderEnable:
case Regs::RenderEnable::Mode::Conditional: { switch (regs.render_enable.mode) {
Regs::ReportSemaphore::Compare cmp; case Regs::RenderEnable::Mode::True: {
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp)); execute_on = true;
execute_on = cmp.initial_sequence != 0U && cmp.initial_mode != 0U; break;
break; }
} case Regs::RenderEnable::Mode::False: {
case Regs::RenderEnable::Mode::IfEqual: { execute_on = false;
Regs::ReportSemaphore::Compare cmp; break;
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp)); }
execute_on = case Regs::RenderEnable::Mode::Conditional: {
cmp.initial_sequence == cmp.current_sequence && cmp.initial_mode == cmp.current_mode; Regs::ReportSemaphore::Compare cmp;
break; memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
} execute_on = cmp.initial_sequence != 0U && cmp.initial_mode != 0U;
case Regs::RenderEnable::Mode::IfNotEqual: { break;
Regs::ReportSemaphore::Compare cmp; }
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp)); case Regs::RenderEnable::Mode::IfEqual: {
execute_on = Regs::ReportSemaphore::Compare cmp;
cmp.initial_sequence != cmp.current_sequence || cmp.initial_mode != cmp.current_mode; memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
break; execute_on = cmp.initial_sequence == cmp.current_sequence &&
} cmp.initial_mode == cmp.current_mode;
default: { break;
UNIMPLEMENTED_MSG("Uninplemented Condition Mode!"); }
execute_on = true; case Regs::RenderEnable::Mode::IfNotEqual: {
Regs::ReportSemaphore::Compare cmp;
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
execute_on = cmp.initial_sequence != cmp.current_sequence ||
cmp.initial_mode != cmp.current_mode;
break;
}
default: {
UNIMPLEMENTED_MSG("Uninplemented Condition Mode!");
execute_on = true;
break;
}
}
break; break;
} }
}
} }
void Maxwell3D::ProcessCounterReset() { void Maxwell3D::ProcessCounterReset() {

Loading…
Cancel
Save