diff options
| author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-10-30 18:17:27 -0300 |
|---|---|---|
| committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-12-09 23:52:28 -0300 |
| commit | 0b5b93053d5f427c668a2494c52adfd468cf5728 (patch) | |
| tree | b850d080dce2c8f1c496c03a995b033fb2e4fad3 /src/video_core/shader | |
| parent | ecbfa416f0ab7e6c830e3df0d83158865de49ad8 (diff) | |
shader_ir/other: Implement S2R InvocationId
Diffstat (limited to 'src/video_core/shader')
| -rw-r--r-- | src/video_core/shader/decode/other.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/shader/node.h | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/src/video_core/shader/decode/other.cpp b/src/video_core/shader/decode/other.cpp index 17cd45d3c..5c802886b 100644 --- a/src/video_core/shader/decode/other.cpp +++ b/src/video_core/shader/decode/other.cpp @@ -69,6 +69,8 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { case OpCode::Id::MOV_SYS: { const Node value = [this, instr] { switch (instr.sys20) { + case SystemVariable::InvocationId: + return Operation(OperationCode::InvocationId); case SystemVariable::Ydirection: return Operation(OperationCode::YNegate); case SystemVariable::InvocationInfo: diff --git a/src/video_core/shader/node.h b/src/video_core/shader/node.h index 8f4811c88..1a4d28ae9 100644 --- a/src/video_core/shader/node.h +++ b/src/video_core/shader/node.h @@ -172,6 +172,7 @@ enum class OperationCode { EmitVertex, /// () -> void EndPrimitive, /// () -> void + InvocationId, /// () -> int YNegate, /// () -> float LocalInvocationIdX, /// () -> uint LocalInvocationIdY, /// () -> uint |
