summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-12-10 03:40:32 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-12-10 03:40:41 +0100
commit9ad6327fbda8761da8d11b24999e66418228727c (patch)
treec992b78a5e606eb4ac3c5b4d5af7367c841f1386
parentshader_ir/memory: Implement patch stores (diff)
downloadyuzu-9ad6327fbda8761da8d11b24999e66418228727c.tar
yuzu-9ad6327fbda8761da8d11b24999e66418228727c.tar.gz
yuzu-9ad6327fbda8761da8d11b24999e66418228727c.tar.bz2
yuzu-9ad6327fbda8761da8d11b24999e66418228727c.tar.lz
yuzu-9ad6327fbda8761da8d11b24999e66418228727c.tar.xz
yuzu-9ad6327fbda8761da8d11b24999e66418228727c.tar.zst
yuzu-9ad6327fbda8761da8d11b24999e66418228727c.zip
-rw-r--r--src/video_core/shader/decode/warp.cpp3
-rw-r--r--src/video_core/shader/shader_ir.h5
2 files changed, 8 insertions, 0 deletions
diff --git a/src/video_core/shader/decode/warp.cpp b/src/video_core/shader/decode/warp.cpp
index d98d0e1dd..11b77f795 100644
--- a/src/video_core/shader/decode/warp.cpp
+++ b/src/video_core/shader/decode/warp.cpp
@@ -38,6 +38,9 @@ u32 ShaderIR::DecodeWarp(NodeBlock& bb, u32 pc) {
const Instruction instr = {program_code[pc]};
const auto opcode = OpCode::Decode(instr);
+ // Signal the backend that this shader uses warp instructions.
+ uses_warps = true;
+
switch (opcode->get().GetId()) {
case OpCode::Id::VOTE: {
const Node value = GetPredicate(instr.vote.value, instr.vote.negate_value != 0);
diff --git a/src/video_core/shader/shader_ir.h b/src/video_core/shader/shader_ir.h
index 2f71a50d2..580f84fcb 100644
--- a/src/video_core/shader/shader_ir.h
+++ b/src/video_core/shader/shader_ir.h
@@ -137,6 +137,10 @@ public:
return uses_vertex_id;
}
+ bool UsesWarps() const {
+ return uses_warps;
+ }
+
bool HasPhysicalAttributes() const {
return uses_physical_attributes;
}
@@ -415,6 +419,7 @@ private:
bool uses_physical_attributes{}; // Shader uses AL2P or physical attribute read/writes
bool uses_instance_id{};
bool uses_vertex_id{};
+ bool uses_warps{};
Tegra::Shader::Header header;
};