summaryrefslogtreecommitdiff
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2022-12-07 00:28:35 +0100
committerGravatar Fernando Sahmkow2023-01-01 16:43:58 -0500
commit581a7d785bb4936c92d320f17d3d824e244eee5a (patch)
treef378a4075f924ad9b5a775195e0b32e5ca032c7a /src/video_core/engines
parentRasterizerMemory: Add filtering for flushing/invalidation operations. (diff)
downloadyuzu-581a7d785bb4936c92d320f17d3d824e244eee5a.tar.gz
yuzu-581a7d785bb4936c92d320f17d3d824e244eee5a.tar.xz
yuzu-581a7d785bb4936c92d320f17d3d824e244eee5a.zip
Rasterizer: Setup skeleton for Host Conditional rendering
Diffstat (limited to 'src/video_core/engines')
-rw-r--r--src/video_core/engines/maxwell_3d.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index d44a5cabf..943a69935 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -16,7 +16,6 @@
16#include "video_core/rasterizer_interface.h" 16#include "video_core/rasterizer_interface.h"
17#include "video_core/textures/texture.h" 17#include "video_core/textures/texture.h"
18 18
19
20namespace Tegra::Engines { 19namespace Tegra::Engines {
21 20
22using VideoCore::QueryType; 21using VideoCore::QueryType;
@@ -538,13 +537,17 @@ void Maxwell3D::ProcessQueryGet() {
538void Maxwell3D::ProcessQueryCondition() { 537void Maxwell3D::ProcessQueryCondition() {
539 const GPUVAddr condition_address{regs.render_enable.Address()}; 538 const GPUVAddr condition_address{regs.render_enable.Address()};
540 switch (regs.render_enable_override) { 539 switch (regs.render_enable_override) {
541 case Regs::RenderEnable::Override::AlwaysRender: 540 case Regs::RenderEnable::Override::AlwaysRender: {
542 execute_on = true; 541 execute_on = true;
543 break; 542 break;
544 case Regs::RenderEnable::Override::NeverRender: 543 case Regs::RenderEnable::Override::NeverRender:
545 execute_on = false; 544 execute_on = false;
546 break; 545 break;
547 case Regs::RenderEnable::Override::UseRenderEnable: 546 case Regs::RenderEnable::Override::UseRenderEnable: {
547 if (rasterizer->AccelerateConditionalRendering()) {
548 execute_on = true;
549 return;
550 }
548 switch (regs.render_enable.mode) { 551 switch (regs.render_enable.mode) {
549 case Regs::RenderEnable::Mode::True: { 552 case Regs::RenderEnable::Mode::True: {
550 execute_on = true; 553 execute_on = true;
@@ -582,6 +585,8 @@ void Maxwell3D::ProcessQueryCondition() {
582 } 585 }
583 break; 586 break;
584 } 587 }
588 }
589 }
585} 590}
586 591
587void Maxwell3D::ProcessCounterReset() { 592void Maxwell3D::ProcessCounterReset() {
@@ -618,7 +623,8 @@ std::optional<u64> Maxwell3D::GetQueryResult() {
618} 623}
619 624
620void Maxwell3D::ProcessCBBind(size_t stage_index) { 625void Maxwell3D::ProcessCBBind(size_t stage_index) {
621 // Bind the buffer currently in CB_ADDRESS to the specified index in the desired shader stage. 626 // Bind the buffer currently in CB_ADDRESS to the specified index in the desired shader
627 // stage.
622 const auto& bind_data = regs.bind_groups[stage_index]; 628 const auto& bind_data = regs.bind_groups[stage_index];
623 auto& buffer = state.shader_stages[stage_index].const_buffers[bind_data.shader_slot]; 629 auto& buffer = state.shader_stages[stage_index].const_buffers[bind_data.shader_slot];
624 buffer.enabled = bind_data.valid.Value() != 0; 630 buffer.enabled = bind_data.valid.Value() != 0;