summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_state_tracker.h
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2020-08-21 04:07:30 +0200
committerReinUsesLisp <reinuseslisp@airmail.cc>2020-08-21 04:07:30 +0200
commitaed6011d7c3a26b1121a98c3cb322fbc6ee7d7a7 (patch)
tree57585d1912e84a9c4f70ffc444bd78c9e14491c0 /src/video_core/renderer_vulkan/vk_state_tracker.h
parentMerge pull request #4546 from lioncash/telemetry (diff)
downloadyuzu-aed6011d7c3a26b1121a98c3cb322fbc6ee7d7a7.tar
yuzu-aed6011d7c3a26b1121a98c3cb322fbc6ee7d7a7.tar.gz
yuzu-aed6011d7c3a26b1121a98c3cb322fbc6ee7d7a7.tar.bz2
yuzu-aed6011d7c3a26b1121a98c3cb322fbc6ee7d7a7.tar.lz
yuzu-aed6011d7c3a26b1121a98c3cb322fbc6ee7d7a7.tar.xz
yuzu-aed6011d7c3a26b1121a98c3cb322fbc6ee7d7a7.tar.zst
yuzu-aed6011d7c3a26b1121a98c3cb322fbc6ee7d7a7.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_vulkan/vk_state_tracker.h16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/video_core/renderer_vulkan/vk_state_tracker.h b/src/video_core/renderer_vulkan/vk_state_tracker.h
index 54ca0d6c6..13a6ce786 100644
--- a/src/video_core/renderer_vulkan/vk_state_tracker.h
+++ b/src/video_core/renderer_vulkan/vk_state_tracker.h
@@ -32,7 +32,6 @@ enum : u8 {
DepthWriteEnable,
DepthCompareOp,
FrontFace,
- PrimitiveTopology,
StencilOp,
StencilTestEnable,
@@ -43,6 +42,8 @@ static_assert(Last <= std::numeric_limits<u8>::max());
} // namespace Dirty
class StateTracker {
+ using Maxwell = Tegra::Engines::Maxwell3D::Regs;
+
public:
explicit StateTracker(Core::System& system);
@@ -102,10 +103,6 @@ public:
return Exchange(Dirty::FrontFace, false);
}
- bool TouchPrimitiveTopology() {
- return Exchange(Dirty::PrimitiveTopology, false);
- }
-
bool TouchStencilOp() {
return Exchange(Dirty::StencilOp, false);
}
@@ -114,7 +111,15 @@ public:
return Exchange(Dirty::StencilTestEnable, false);
}
+ bool ChangePrimitiveTopology(Maxwell::PrimitiveTopology new_topology) {
+ const bool has_changed = current_topology != new_topology;
+ current_topology = new_topology;
+ return has_changed;
+ }
+
private:
+ static constexpr auto INVALID_TOPOLOGY = static_cast<Maxwell::PrimitiveTopology>(~0u);
+
bool Exchange(std::size_t id, bool new_value) const noexcept {
auto& flags = system.GPU().Maxwell3D().dirty.flags;
const bool is_dirty = flags[id];
@@ -124,6 +129,7 @@ private:
Core::System& system;
Tegra::Engines::Maxwell3D::DirtyState::Flags invalidation_flags;
+ Maxwell::PrimitiveTopology current_topology = INVALID_TOPOLOGY;
};
} // namespace Vulkan