diff options
author | bunnei <bunneidev@gmail.com> | 2020-04-09 06:17:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-09 06:17:39 +0200 |
commit | b96fd0bd0e562770399441c8164069d2437f00e7 (patch) | |
tree | 44c8516bec954176e6c68796a660cfa82023b253 /src/video_core/shader | |
parent | Merge pull request #3624 from Kewlan/fix-sl-sr-position (diff) | |
parent | shader/other: Add error message for some S2R registers (diff) | |
download | yuzu-b96fd0bd0e562770399441c8164069d2437f00e7.tar yuzu-b96fd0bd0e562770399441c8164069d2437f00e7.tar.gz yuzu-b96fd0bd0e562770399441c8164069d2437f00e7.tar.bz2 yuzu-b96fd0bd0e562770399441c8164069d2437f00e7.tar.lz yuzu-b96fd0bd0e562770399441c8164069d2437f00e7.tar.xz yuzu-b96fd0bd0e562770399441c8164069d2437f00e7.tar.zst yuzu-b96fd0bd0e562770399441c8164069d2437f00e7.zip |
Diffstat (limited to 'src/video_core/shader')
-rw-r--r-- | src/video_core/shader/decode/other.cpp | 12 | ||||
-rw-r--r-- | src/video_core/shader/shader_ir.cpp | 3 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/video_core/shader/decode/other.cpp b/src/video_core/shader/decode/other.cpp index e6edec459..d4f95b18c 100644 --- a/src/video_core/shader/decode/other.cpp +++ b/src/video_core/shader/decode/other.cpp @@ -71,18 +71,24 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { bb.push_back(Operation(OperationCode::Discard)); break; } - case OpCode::Id::MOV_SYS: { + case OpCode::Id::S2R: { const Node value = [this, instr] { switch (instr.sys20) { case SystemVariable::LaneId: - LOG_WARNING(HW_GPU, "MOV_SYS instruction with LaneId is incomplete"); + LOG_WARNING(HW_GPU, "S2R instruction with LaneId is incomplete"); return Immediate(0U); case SystemVariable::InvocationId: return Operation(OperationCode::InvocationId); case SystemVariable::Ydirection: return Operation(OperationCode::YNegate); case SystemVariable::InvocationInfo: - LOG_WARNING(HW_GPU, "MOV_SYS instruction with InvocationInfo is incomplete"); + LOG_WARNING(HW_GPU, "S2R instruction with InvocationInfo is incomplete"); + return Immediate(0U); + case SystemVariable::WscaleFactorXY: + UNIMPLEMENTED_MSG("S2R WscaleFactorXY is not implemented"); + return Immediate(0U); + case SystemVariable::WscaleFactorZ: + UNIMPLEMENTED_MSG("S2R WscaleFactorZ is not implemented"); return Immediate(0U); case SystemVariable::Tid: { Node value = Immediate(0); diff --git a/src/video_core/shader/shader_ir.cpp b/src/video_core/shader/shader_ir.cpp index baf7188d2..8852c8a1b 100644 --- a/src/video_core/shader/shader_ir.cpp +++ b/src/video_core/shader/shader_ir.cpp @@ -359,6 +359,9 @@ Node ShaderIR::GetConditionCode(Tegra::Shader::ConditionCode cc) const { switch (cc) { case Tegra::Shader::ConditionCode::NEU: return GetInternalFlag(InternalFlag::Zero, true); + case Tegra::Shader::ConditionCode::FCSM_TR: + UNIMPLEMENTED_MSG("EXIT.FCSM_TR is not implemented"); + return MakeNode<PredicateNode>(Pred::NeverExecute, false); default: UNIMPLEMENTED_MSG("Unimplemented condition code: {}", static_cast<u32>(cc)); return MakeNode<PredicateNode>(Pred::NeverExecute, false); |