Browse Source

shader: Keep track of shaders using warp instructions

nce_cpp
ReinUsesLisp 6 years ago
parent
commit
f2de7089e1
  1. 3
      src/video_core/shader/decode/warp.cpp
  2. 5
      src/video_core/shader/shader_ir.h

3
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 Instruction instr = {program_code[pc]};
const auto opcode = OpCode::Decode(instr); const auto opcode = OpCode::Decode(instr);
// Signal the backend that this shader uses warp instructions.
uses_warps = true;
switch (opcode->get().GetId()) { switch (opcode->get().GetId()) {
case OpCode::Id::VOTE: { case OpCode::Id::VOTE: {
const Node value = GetPredicate(instr.vote.value, instr.vote.negate_value != 0); const Node value = GetPredicate(instr.vote.value, instr.vote.negate_value != 0);

5
src/video_core/shader/shader_ir.h

@ -137,6 +137,10 @@ public:
return uses_vertex_id; return uses_vertex_id;
} }
bool UsesWarps() const {
return uses_warps;
}
bool HasPhysicalAttributes() const { bool HasPhysicalAttributes() const {
return uses_physical_attributes; return uses_physical_attributes;
} }
@ -415,6 +419,7 @@ private:
bool uses_physical_attributes{}; // Shader uses AL2P or physical attribute read/writes bool uses_physical_attributes{}; // Shader uses AL2P or physical attribute read/writes
bool uses_instance_id{}; bool uses_instance_id{};
bool uses_vertex_id{}; bool uses_vertex_id{};
bool uses_warps{};
Tegra::Shader::Header header; Tegra::Shader::Header header;
}; };

Loading…
Cancel
Save