Respect render mode override
This commit is contained in:
parent
49219b8a86
commit
a78372110c
1 changed files with 39 additions and 29 deletions
|
@ -486,6 +486,14 @@ 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_override) {
|
||||||
|
case Regs::RenderEnable::Override::AlwaysRender:
|
||||||
|
execute_on = true;
|
||||||
|
break;
|
||||||
|
case Regs::RenderEnable::Override::NeverRender:
|
||||||
|
execute_on = false;
|
||||||
|
break;
|
||||||
|
case Regs::RenderEnable::Override::UseRenderEnable:
|
||||||
switch (regs.render_enable.mode) {
|
switch (regs.render_enable.mode) {
|
||||||
case Regs::RenderEnable::Mode::True: {
|
case Regs::RenderEnable::Mode::True: {
|
||||||
execute_on = true;
|
execute_on = true;
|
||||||
|
@ -504,15 +512,15 @@ void Maxwell3D::ProcessQueryCondition() {
|
||||||
case Regs::RenderEnable::Mode::IfEqual: {
|
case Regs::RenderEnable::Mode::IfEqual: {
|
||||||
Regs::ReportSemaphore::Compare cmp;
|
Regs::ReportSemaphore::Compare cmp;
|
||||||
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
|
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
|
||||||
execute_on =
|
execute_on = cmp.initial_sequence == cmp.current_sequence &&
|
||||||
cmp.initial_sequence == cmp.current_sequence && cmp.initial_mode == cmp.current_mode;
|
cmp.initial_mode == cmp.current_mode;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Regs::RenderEnable::Mode::IfNotEqual: {
|
case Regs::RenderEnable::Mode::IfNotEqual: {
|
||||||
Regs::ReportSemaphore::Compare cmp;
|
Regs::ReportSemaphore::Compare cmp;
|
||||||
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
|
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
|
||||||
execute_on =
|
execute_on = cmp.initial_sequence != cmp.current_sequence ||
|
||||||
cmp.initial_sequence != cmp.current_sequence || cmp.initial_mode != cmp.current_mode;
|
cmp.initial_mode != cmp.current_mode;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
@ -521,6 +529,8 @@ void Maxwell3D::ProcessQueryCondition() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Maxwell3D::ProcessCounterReset() {
|
void Maxwell3D::ProcessCounterReset() {
|
||||||
|
|
Loading…
Reference in a new issue