diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2022-12-07 00:28:35 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-01-01 22:43:58 +0100 |
commit | 581a7d785bb4936c92d320f17d3d824e244eee5a (patch) | |
tree | f378a4075f924ad9b5a775195e0b32e5ca032c7a /src/video_core/engines/maxwell_3d.cpp | |
parent | RasterizerMemory: Add filtering for flushing/invalidation operations. (diff) | |
download | yuzu-581a7d785bb4936c92d320f17d3d824e244eee5a.tar yuzu-581a7d785bb4936c92d320f17d3d824e244eee5a.tar.gz yuzu-581a7d785bb4936c92d320f17d3d824e244eee5a.tar.bz2 yuzu-581a7d785bb4936c92d320f17d3d824e244eee5a.tar.lz yuzu-581a7d785bb4936c92d320f17d3d824e244eee5a.tar.xz yuzu-581a7d785bb4936c92d320f17d3d824e244eee5a.tar.zst yuzu-581a7d785bb4936c92d320f17d3d824e244eee5a.zip |
Diffstat (limited to 'src/video_core/engines/maxwell_3d.cpp')
-rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 14 |
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 @@ #include "video_core/rasterizer_interface.h" #include "video_core/textures/texture.h" - namespace Tegra::Engines { using VideoCore::QueryType; @@ -538,13 +537,17 @@ void Maxwell3D::ProcessQueryGet() { void Maxwell3D::ProcessQueryCondition() { const GPUVAddr condition_address{regs.render_enable.Address()}; switch (regs.render_enable_override) { - case Regs::RenderEnable::Override::AlwaysRender: + case Regs::RenderEnable::Override::AlwaysRender: { execute_on = true; break; case Regs::RenderEnable::Override::NeverRender: execute_on = false; break; - case Regs::RenderEnable::Override::UseRenderEnable: + case Regs::RenderEnable::Override::UseRenderEnable: { + if (rasterizer->AccelerateConditionalRendering()) { + execute_on = true; + return; + } switch (regs.render_enable.mode) { case Regs::RenderEnable::Mode::True: { execute_on = true; @@ -582,6 +585,8 @@ void Maxwell3D::ProcessQueryCondition() { } break; } + } + } } void Maxwell3D::ProcessCounterReset() { @@ -618,7 +623,8 @@ std::optional<u64> Maxwell3D::GetQueryResult() { } void Maxwell3D::ProcessCBBind(size_t stage_index) { - // Bind the buffer currently in CB_ADDRESS to the specified index in the desired shader stage. + // Bind the buffer currently in CB_ADDRESS to the specified index in the desired shader + // stage. const auto& bind_data = regs.bind_groups[stage_index]; auto& buffer = state.shader_stages[stage_index].const_buffers[bind_data.shader_slot]; buffer.enabled = bind_data.valid.Value() != 0; |