diff options
Diffstat (limited to 'src/video_core/shader/decode')
| -rw-r--r-- | src/video_core/shader/decode/arithmetic.cpp | 3 | ||||
| -rw-r--r-- | src/video_core/shader/decode/arithmetic_integer.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/shader/decode/arithmetic_integer_immediate.cpp | 5 | ||||
| -rw-r--r-- | src/video_core/shader/decode/conversion.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/shader/decode/memory.cpp | 25 | ||||
| -rw-r--r-- | src/video_core/shader/decode/other.cpp | 34 | ||||
| -rw-r--r-- | src/video_core/shader/decode/shift.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/shader/decode/texture.cpp | 9 | ||||
| -rw-r--r-- | src/video_core/shader/decode/warp.cpp | 2 |
9 files changed, 38 insertions, 48 deletions
diff --git a/src/video_core/shader/decode/arithmetic.cpp b/src/video_core/shader/decode/arithmetic.cpp index afef5948d..15eb700e7 100644 --- a/src/video_core/shader/decode/arithmetic.cpp +++ b/src/video_core/shader/decode/arithmetic.cpp | |||
| @@ -110,8 +110,7 @@ u32 ShaderIR::DecodeArithmetic(NodeBlock& bb, u32 pc) { | |||
| 110 | case SubOp::Sqrt: | 110 | case SubOp::Sqrt: |
| 111 | return Operation(OperationCode::FSqrt, PRECISE, op_a); | 111 | return Operation(OperationCode::FSqrt, PRECISE, op_a); |
| 112 | default: | 112 | default: |
| 113 | UNIMPLEMENTED_MSG("Unhandled MUFU sub op={0:x}", | 113 | UNIMPLEMENTED_MSG("Unhandled MUFU sub op={0:x}", instr.sub_op.Value()); |
| 114 | static_cast<unsigned>(instr.sub_op.Value())); | ||
| 115 | return Immediate(0); | 114 | return Immediate(0); |
| 116 | } | 115 | } |
| 117 | }(); | 116 | }(); |
diff --git a/src/video_core/shader/decode/arithmetic_integer.cpp b/src/video_core/shader/decode/arithmetic_integer.cpp index f32c3134b..7b5bb7003 100644 --- a/src/video_core/shader/decode/arithmetic_integer.cpp +++ b/src/video_core/shader/decode/arithmetic_integer.cpp | |||
| @@ -83,7 +83,7 @@ u32 ShaderIR::DecodeArithmeticInteger(NodeBlock& bb, u32 pc) { | |||
| 83 | case IAdd3Height::UpperHalfWord: | 83 | case IAdd3Height::UpperHalfWord: |
| 84 | return BitfieldExtract(value, 16, 16); | 84 | return BitfieldExtract(value, 16, 16); |
| 85 | default: | 85 | default: |
| 86 | UNIMPLEMENTED_MSG("Unhandled IADD3 height: {}", static_cast<u32>(height)); | 86 | UNIMPLEMENTED_MSG("Unhandled IADD3 height: {}", height); |
| 87 | return Immediate(0); | 87 | return Immediate(0); |
| 88 | } | 88 | } |
| 89 | }; | 89 | }; |
diff --git a/src/video_core/shader/decode/arithmetic_integer_immediate.cpp b/src/video_core/shader/decode/arithmetic_integer_immediate.cpp index 2a30aab2b..73580277a 100644 --- a/src/video_core/shader/decode/arithmetic_integer_immediate.cpp +++ b/src/video_core/shader/decode/arithmetic_integer_immediate.cpp | |||
| @@ -72,7 +72,7 @@ void ShaderIR::WriteLogicOperation(NodeBlock& bb, Register dest, LogicOperation | |||
| 72 | case LogicOperation::PassB: | 72 | case LogicOperation::PassB: |
| 73 | return op_b; | 73 | return op_b; |
| 74 | default: | 74 | default: |
| 75 | UNIMPLEMENTED_MSG("Unimplemented logic operation={}", static_cast<u32>(logic_op)); | 75 | UNIMPLEMENTED_MSG("Unimplemented logic operation={}", logic_op); |
| 76 | return Immediate(0); | 76 | return Immediate(0); |
| 77 | } | 77 | } |
| 78 | }(); | 78 | }(); |
| @@ -92,8 +92,7 @@ void ShaderIR::WriteLogicOperation(NodeBlock& bb, Register dest, LogicOperation | |||
| 92 | break; | 92 | break; |
| 93 | } | 93 | } |
| 94 | default: | 94 | default: |
| 95 | UNIMPLEMENTED_MSG("Unimplemented predicate result mode: {}", | 95 | UNIMPLEMENTED_MSG("Unimplemented predicate result mode: {}", predicate_mode); |
| 96 | static_cast<u32>(predicate_mode)); | ||
| 97 | } | 96 | } |
| 98 | } | 97 | } |
| 99 | 98 | ||
diff --git a/src/video_core/shader/decode/conversion.cpp b/src/video_core/shader/decode/conversion.cpp index b9989c88c..fea7a54df 100644 --- a/src/video_core/shader/decode/conversion.cpp +++ b/src/video_core/shader/decode/conversion.cpp | |||
| @@ -244,7 +244,7 @@ u32 ShaderIR::DecodeConversion(NodeBlock& bb, u32 pc) { | |||
| 244 | return Operation(OperationCode::FTrunc, value); | 244 | return Operation(OperationCode::FTrunc, value); |
| 245 | default: | 245 | default: |
| 246 | UNIMPLEMENTED_MSG("Unimplemented F2F rounding mode {}", | 246 | UNIMPLEMENTED_MSG("Unimplemented F2F rounding mode {}", |
| 247 | static_cast<u32>(instr.conversion.f2f.rounding.Value())); | 247 | instr.conversion.f2f.rounding.Value()); |
| 248 | return value; | 248 | return value; |
| 249 | } | 249 | } |
| 250 | }(); | 250 | }(); |
| @@ -300,7 +300,7 @@ u32 ShaderIR::DecodeConversion(NodeBlock& bb, u32 pc) { | |||
| 300 | return Operation(OperationCode::FTrunc, PRECISE, value); | 300 | return Operation(OperationCode::FTrunc, PRECISE, value); |
| 301 | default: | 301 | default: |
| 302 | UNIMPLEMENTED_MSG("Unimplemented F2I rounding mode {}", | 302 | UNIMPLEMENTED_MSG("Unimplemented F2I rounding mode {}", |
| 303 | static_cast<u32>(instr.conversion.f2i.rounding.Value())); | 303 | instr.conversion.f2i.rounding.Value()); |
| 304 | return Immediate(0); | 304 | return Immediate(0); |
| 305 | } | 305 | } |
| 306 | }(); | 306 | }(); |
diff --git a/src/video_core/shader/decode/memory.cpp b/src/video_core/shader/decode/memory.cpp index e2bba88dd..50f4e7d35 100644 --- a/src/video_core/shader/decode/memory.cpp +++ b/src/video_core/shader/decode/memory.cpp | |||
| @@ -47,7 +47,7 @@ OperationCode GetAtomOperation(AtomicOp op) { | |||
| 47 | case AtomicOp::Exch: | 47 | case AtomicOp::Exch: |
| 48 | return OperationCode::AtomicIExchange; | 48 | return OperationCode::AtomicIExchange; |
| 49 | default: | 49 | default: |
| 50 | UNIMPLEMENTED_MSG("op={}", static_cast<int>(op)); | 50 | UNIMPLEMENTED_MSG("op={}", op); |
| 51 | return OperationCode::AtomicIAdd; | 51 | return OperationCode::AtomicIAdd; |
| 52 | } | 52 | } |
| 53 | } | 53 | } |
| @@ -83,7 +83,7 @@ u32 GetMemorySize(Tegra::Shader::UniformType uniform_type) { | |||
| 83 | case Tegra::Shader::UniformType::UnsignedQuad: | 83 | case Tegra::Shader::UniformType::UnsignedQuad: |
| 84 | return 128; | 84 | return 128; |
| 85 | default: | 85 | default: |
| 86 | UNIMPLEMENTED_MSG("Unimplemented size={}!", static_cast<u32>(uniform_type)); | 86 | UNIMPLEMENTED_MSG("Unimplemented size={}!", uniform_type); |
| 87 | return 32; | 87 | return 32; |
| 88 | } | 88 | } |
| 89 | } | 89 | } |
| @@ -175,12 +175,12 @@ u32 ShaderIR::DecodeMemory(NodeBlock& bb, u32 pc) { | |||
| 175 | break; | 175 | break; |
| 176 | } | 176 | } |
| 177 | default: | 177 | default: |
| 178 | UNIMPLEMENTED_MSG("Unhandled type: {}", static_cast<unsigned>(instr.ld_c.type.Value())); | 178 | UNIMPLEMENTED_MSG("Unhandled type: {}", instr.ld_c.type.Value()); |
| 179 | } | 179 | } |
| 180 | break; | 180 | break; |
| 181 | } | 181 | } |
| 182 | case OpCode::Id::LD_L: | 182 | case OpCode::Id::LD_L: |
| 183 | LOG_DEBUG(HW_GPU, "LD_L cache management mode: {}", static_cast<u64>(instr.ld_l.unknown)); | 183 | LOG_DEBUG(HW_GPU, "LD_L cache management mode: {}", instr.ld_l.unknown); |
| 184 | [[fallthrough]]; | 184 | [[fallthrough]]; |
| 185 | case OpCode::Id::LD_S: { | 185 | case OpCode::Id::LD_S: { |
| 186 | const auto GetAddress = [&](s32 offset) { | 186 | const auto GetAddress = [&](s32 offset) { |
| @@ -224,7 +224,7 @@ u32 ShaderIR::DecodeMemory(NodeBlock& bb, u32 pc) { | |||
| 224 | } | 224 | } |
| 225 | default: | 225 | default: |
| 226 | UNIMPLEMENTED_MSG("{} Unhandled type: {}", opcode->get().GetName(), | 226 | UNIMPLEMENTED_MSG("{} Unhandled type: {}", opcode->get().GetName(), |
| 227 | static_cast<u32>(instr.ldst_sl.type.Value())); | 227 | instr.ldst_sl.type.Value()); |
| 228 | } | 228 | } |
| 229 | break; | 229 | break; |
| 230 | } | 230 | } |
| @@ -306,8 +306,7 @@ u32 ShaderIR::DecodeMemory(NodeBlock& bb, u32 pc) { | |||
| 306 | break; | 306 | break; |
| 307 | } | 307 | } |
| 308 | case OpCode::Id::ST_L: | 308 | case OpCode::Id::ST_L: |
| 309 | LOG_DEBUG(HW_GPU, "ST_L cache management mode: {}", | 309 | LOG_DEBUG(HW_GPU, "ST_L cache management mode: {}", instr.st_l.cache_management.Value()); |
| 310 | static_cast<u64>(instr.st_l.cache_management.Value())); | ||
| 311 | [[fallthrough]]; | 310 | [[fallthrough]]; |
| 312 | case OpCode::Id::ST_S: { | 311 | case OpCode::Id::ST_S: { |
| 313 | const auto GetAddress = [&](s32 offset) { | 312 | const auto GetAddress = [&](s32 offset) { |
| @@ -340,7 +339,7 @@ u32 ShaderIR::DecodeMemory(NodeBlock& bb, u32 pc) { | |||
| 340 | } | 339 | } |
| 341 | default: | 340 | default: |
| 342 | UNIMPLEMENTED_MSG("{} unhandled type: {}", opcode->get().GetName(), | 341 | UNIMPLEMENTED_MSG("{} unhandled type: {}", opcode->get().GetName(), |
| 343 | static_cast<u32>(instr.ldst_sl.type.Value())); | 342 | instr.ldst_sl.type.Value()); |
| 344 | } | 343 | } |
| 345 | break; | 344 | break; |
| 346 | } | 345 | } |
| @@ -387,7 +386,7 @@ u32 ShaderIR::DecodeMemory(NodeBlock& bb, u32 pc) { | |||
| 387 | } | 386 | } |
| 388 | case OpCode::Id::RED: { | 387 | case OpCode::Id::RED: { |
| 389 | UNIMPLEMENTED_IF_MSG(instr.red.type != GlobalAtomicType::U32, "type={}", | 388 | UNIMPLEMENTED_IF_MSG(instr.red.type != GlobalAtomicType::U32, "type={}", |
| 390 | static_cast<int>(instr.red.type.Value())); | 389 | instr.red.type.Value()); |
| 391 | const auto [real_address, base_address, descriptor] = | 390 | const auto [real_address, base_address, descriptor] = |
| 392 | TrackGlobalMemory(bb, instr, true, true); | 391 | TrackGlobalMemory(bb, instr, true, true); |
| 393 | if (!real_address || !base_address) { | 392 | if (!real_address || !base_address) { |
| @@ -403,12 +402,12 @@ u32 ShaderIR::DecodeMemory(NodeBlock& bb, u32 pc) { | |||
| 403 | UNIMPLEMENTED_IF_MSG(instr.atom.operation == AtomicOp::Inc || | 402 | UNIMPLEMENTED_IF_MSG(instr.atom.operation == AtomicOp::Inc || |
| 404 | instr.atom.operation == AtomicOp::Dec || | 403 | instr.atom.operation == AtomicOp::Dec || |
| 405 | instr.atom.operation == AtomicOp::SafeAdd, | 404 | instr.atom.operation == AtomicOp::SafeAdd, |
| 406 | "operation={}", static_cast<int>(instr.atom.operation.Value())); | 405 | "operation={}", instr.atom.operation.Value()); |
| 407 | UNIMPLEMENTED_IF_MSG(instr.atom.type == GlobalAtomicType::S64 || | 406 | UNIMPLEMENTED_IF_MSG(instr.atom.type == GlobalAtomicType::S64 || |
| 408 | instr.atom.type == GlobalAtomicType::U64 || | 407 | instr.atom.type == GlobalAtomicType::U64 || |
| 409 | instr.atom.type == GlobalAtomicType::F16x2_FTZ_RN || | 408 | instr.atom.type == GlobalAtomicType::F16x2_FTZ_RN || |
| 410 | instr.atom.type == GlobalAtomicType::F32_FTZ_RN, | 409 | instr.atom.type == GlobalAtomicType::F32_FTZ_RN, |
| 411 | "type={}", static_cast<int>(instr.atom.type.Value())); | 410 | "type={}", instr.atom.type.Value()); |
| 412 | 411 | ||
| 413 | const auto [real_address, base_address, descriptor] = | 412 | const auto [real_address, base_address, descriptor] = |
| 414 | TrackGlobalMemory(bb, instr, true, true); | 413 | TrackGlobalMemory(bb, instr, true, true); |
| @@ -428,10 +427,10 @@ u32 ShaderIR::DecodeMemory(NodeBlock& bb, u32 pc) { | |||
| 428 | case OpCode::Id::ATOMS: { | 427 | case OpCode::Id::ATOMS: { |
| 429 | UNIMPLEMENTED_IF_MSG(instr.atoms.operation == AtomicOp::Inc || | 428 | UNIMPLEMENTED_IF_MSG(instr.atoms.operation == AtomicOp::Inc || |
| 430 | instr.atoms.operation == AtomicOp::Dec, | 429 | instr.atoms.operation == AtomicOp::Dec, |
| 431 | "operation={}", static_cast<int>(instr.atoms.operation.Value())); | 430 | "operation={}", instr.atoms.operation.Value()); |
| 432 | UNIMPLEMENTED_IF_MSG(instr.atoms.type == AtomicType::S64 || | 431 | UNIMPLEMENTED_IF_MSG(instr.atoms.type == AtomicType::S64 || |
| 433 | instr.atoms.type == AtomicType::U64, | 432 | instr.atoms.type == AtomicType::U64, |
| 434 | "type={}", static_cast<int>(instr.atoms.type.Value())); | 433 | "type={}", instr.atoms.type.Value()); |
| 435 | const bool is_signed = | 434 | const bool is_signed = |
| 436 | instr.atoms.type == AtomicType::S32 || instr.atoms.type == AtomicType::S64; | 435 | instr.atoms.type == AtomicType::S32 || instr.atoms.type == AtomicType::S64; |
| 437 | const s32 offset = instr.atoms.GetImmediateOffset(); | 436 | const s32 offset = instr.atoms.GetImmediateOffset(); |
diff --git a/src/video_core/shader/decode/other.cpp b/src/video_core/shader/decode/other.cpp index 1db500bc4..d3ea07aac 100644 --- a/src/video_core/shader/decode/other.cpp +++ b/src/video_core/shader/decode/other.cpp | |||
| @@ -34,14 +34,13 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { | |||
| 34 | break; | 34 | break; |
| 35 | } | 35 | } |
| 36 | case OpCode::Id::EXIT: { | 36 | case OpCode::Id::EXIT: { |
| 37 | const Tegra::Shader::ConditionCode cc = instr.flow_condition_code; | 37 | const ConditionCode cc = instr.flow_condition_code; |
| 38 | UNIMPLEMENTED_IF_MSG(cc != Tegra::Shader::ConditionCode::T, "EXIT condition code used: {}", | 38 | UNIMPLEMENTED_IF_MSG(cc != ConditionCode::T, "EXIT condition code used: {}", cc); |
| 39 | static_cast<u32>(cc)); | ||
| 40 | 39 | ||
| 41 | switch (instr.flow.cond) { | 40 | switch (instr.flow.cond) { |
| 42 | case Tegra::Shader::FlowCondition::Always: | 41 | case Tegra::Shader::FlowCondition::Always: |
| 43 | bb.push_back(Operation(OperationCode::Exit)); | 42 | bb.push_back(Operation(OperationCode::Exit)); |
| 44 | if (instr.pred.pred_index == static_cast<u64>(Tegra::Shader::Pred::UnusedIndex)) { | 43 | if (instr.pred.pred_index == static_cast<u64>(Pred::UnusedIndex)) { |
| 45 | // If this is an unconditional exit then just end processing here, | 44 | // If this is an unconditional exit then just end processing here, |
| 46 | // otherwise we have to account for the possibility of the condition | 45 | // otherwise we have to account for the possibility of the condition |
| 47 | // not being met, so continue processing the next instruction. | 46 | // not being met, so continue processing the next instruction. |
| @@ -56,17 +55,15 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { | |||
| 56 | break; | 55 | break; |
| 57 | 56 | ||
| 58 | default: | 57 | default: |
| 59 | UNIMPLEMENTED_MSG("Unhandled flow condition: {}", | 58 | UNIMPLEMENTED_MSG("Unhandled flow condition: {}", instr.flow.cond.Value()); |
| 60 | static_cast<u32>(instr.flow.cond.Value())); | ||
| 61 | } | 59 | } |
| 62 | break; | 60 | break; |
| 63 | } | 61 | } |
| 64 | case OpCode::Id::KIL: { | 62 | case OpCode::Id::KIL: { |
| 65 | UNIMPLEMENTED_IF(instr.flow.cond != Tegra::Shader::FlowCondition::Always); | 63 | UNIMPLEMENTED_IF(instr.flow.cond != Tegra::Shader::FlowCondition::Always); |
| 66 | 64 | ||
| 67 | const Tegra::Shader::ConditionCode cc = instr.flow_condition_code; | 65 | const ConditionCode cc = instr.flow_condition_code; |
| 68 | UNIMPLEMENTED_IF_MSG(cc != Tegra::Shader::ConditionCode::T, "KIL condition code used: {}", | 66 | UNIMPLEMENTED_IF_MSG(cc != ConditionCode::T, "KIL condition code used: {}", cc); |
| 69 | static_cast<u32>(cc)); | ||
| 70 | 67 | ||
| 71 | bb.push_back(Operation(OperationCode::Discard)); | 68 | bb.push_back(Operation(OperationCode::Discard)); |
| 72 | break; | 69 | break; |
| @@ -130,8 +127,7 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { | |||
| 130 | return Immediate(0u); | 127 | return Immediate(0u); |
| 131 | } | 128 | } |
| 132 | default: | 129 | default: |
| 133 | UNIMPLEMENTED_MSG("Unhandled system move: {}", | 130 | UNIMPLEMENTED_MSG("Unhandled system move: {}", instr.sys20.Value()); |
| 134 | static_cast<u32>(instr.sys20.Value())); | ||
| 135 | return Immediate(0u); | 131 | return Immediate(0u); |
| 136 | } | 132 | } |
| 137 | }(); | 133 | }(); |
| @@ -181,8 +177,8 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { | |||
| 181 | } | 177 | } |
| 182 | const Node branch = Operation(OperationCode::BranchIndirect, operand); | 178 | const Node branch = Operation(OperationCode::BranchIndirect, operand); |
| 183 | 179 | ||
| 184 | const Tegra::Shader::ConditionCode cc = instr.flow_condition_code; | 180 | const ConditionCode cc = instr.flow_condition_code; |
| 185 | if (cc != Tegra::Shader::ConditionCode::T) { | 181 | if (cc != ConditionCode::T) { |
| 186 | bb.push_back(Conditional(GetConditionCode(cc), {branch})); | 182 | bb.push_back(Conditional(GetConditionCode(cc), {branch})); |
| 187 | } else { | 183 | } else { |
| 188 | bb.push_back(branch); | 184 | bb.push_back(branch); |
| @@ -218,9 +214,8 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { | |||
| 218 | break; | 214 | break; |
| 219 | } | 215 | } |
| 220 | case OpCode::Id::SYNC: { | 216 | case OpCode::Id::SYNC: { |
| 221 | const Tegra::Shader::ConditionCode cc = instr.flow_condition_code; | 217 | const ConditionCode cc = instr.flow_condition_code; |
| 222 | UNIMPLEMENTED_IF_MSG(cc != Tegra::Shader::ConditionCode::T, "SYNC condition code used: {}", | 218 | UNIMPLEMENTED_IF_MSG(cc != ConditionCode::T, "SYNC condition code used: {}", cc); |
| 223 | static_cast<u32>(cc)); | ||
| 224 | 219 | ||
| 225 | if (decompiled) { | 220 | if (decompiled) { |
| 226 | break; | 221 | break; |
| @@ -231,9 +226,8 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { | |||
| 231 | break; | 226 | break; |
| 232 | } | 227 | } |
| 233 | case OpCode::Id::BRK: { | 228 | case OpCode::Id::BRK: { |
| 234 | const Tegra::Shader::ConditionCode cc = instr.flow_condition_code; | 229 | const ConditionCode cc = instr.flow_condition_code; |
| 235 | UNIMPLEMENTED_IF_MSG(cc != Tegra::Shader::ConditionCode::T, "BRK condition code used: {}", | 230 | UNIMPLEMENTED_IF_MSG(cc != ConditionCode::T, "BRK condition code used: {}", cc); |
| 236 | static_cast<u32>(cc)); | ||
| 237 | if (decompiled) { | 231 | if (decompiled) { |
| 238 | break; | 232 | break; |
| 239 | } | 233 | } |
| @@ -306,7 +300,7 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { | |||
| 306 | case Tegra::Shader::MembarType::GL: | 300 | case Tegra::Shader::MembarType::GL: |
| 307 | return OperationCode::MemoryBarrierGlobal; | 301 | return OperationCode::MemoryBarrierGlobal; |
| 308 | default: | 302 | default: |
| 309 | UNIMPLEMENTED_MSG("MEMBAR type={}", static_cast<int>(instr.membar.type.Value())); | 303 | UNIMPLEMENTED_MSG("MEMBAR type={}", instr.membar.type.Value()); |
| 310 | return OperationCode::MemoryBarrierGlobal; | 304 | return OperationCode::MemoryBarrierGlobal; |
| 311 | } | 305 | } |
| 312 | }(); | 306 | }(); |
diff --git a/src/video_core/shader/decode/shift.cpp b/src/video_core/shader/decode/shift.cpp index d4ffa8014..a53819c15 100644 --- a/src/video_core/shader/decode/shift.cpp +++ b/src/video_core/shader/decode/shift.cpp | |||
| @@ -125,7 +125,7 @@ u32 ShaderIR::DecodeShift(NodeBlock& bb, u32 pc) { | |||
| 125 | case OpCode::Id::SHF_LEFT_IMM: { | 125 | case OpCode::Id::SHF_LEFT_IMM: { |
| 126 | UNIMPLEMENTED_IF(instr.generates_cc); | 126 | UNIMPLEMENTED_IF(instr.generates_cc); |
| 127 | UNIMPLEMENTED_IF_MSG(instr.shf.xmode != ShfXmode::None, "xmode={}", | 127 | UNIMPLEMENTED_IF_MSG(instr.shf.xmode != ShfXmode::None, "xmode={}", |
| 128 | static_cast<int>(instr.shf.xmode.Value())); | 128 | instr.shf.xmode.Value()); |
| 129 | 129 | ||
| 130 | if (instr.is_b_imm) { | 130 | if (instr.is_b_imm) { |
| 131 | op_b = Immediate(static_cast<u32>(instr.shf.immediate)); | 131 | op_b = Immediate(static_cast<u32>(instr.shf.immediate)); |
diff --git a/src/video_core/shader/decode/texture.cpp b/src/video_core/shader/decode/texture.cpp index 02fdccd86..fb18f631f 100644 --- a/src/video_core/shader/decode/texture.cpp +++ b/src/video_core/shader/decode/texture.cpp | |||
| @@ -34,7 +34,7 @@ static std::size_t GetCoordCount(TextureType texture_type) { | |||
| 34 | case TextureType::TextureCube: | 34 | case TextureType::TextureCube: |
| 35 | return 3; | 35 | return 3; |
| 36 | default: | 36 | default: |
| 37 | UNIMPLEMENTED_MSG("Unhandled texture type: {}", static_cast<u32>(texture_type)); | 37 | UNIMPLEMENTED_MSG("Unhandled texture type: {}", texture_type); |
| 38 | return 0; | 38 | return 0; |
| 39 | } | 39 | } |
| 40 | } | 40 | } |
| @@ -255,8 +255,7 @@ u32 ShaderIR::DecodeTexture(NodeBlock& bb, u32 pc) { | |||
| 255 | break; | 255 | break; |
| 256 | } | 256 | } |
| 257 | default: | 257 | default: |
| 258 | UNIMPLEMENTED_MSG("Unhandled texture query type: {}", | 258 | UNIMPLEMENTED_MSG("Unhandled texture query type: {}", instr.txq.query_type.Value()); |
| 259 | static_cast<u32>(instr.txq.query_type.Value())); | ||
| 260 | } | 259 | } |
| 261 | break; | 260 | break; |
| 262 | } | 261 | } |
| @@ -302,7 +301,7 @@ u32 ShaderIR::DecodeTexture(NodeBlock& bb, u32 pc) { | |||
| 302 | case TextureType::TextureCube: | 301 | case TextureType::TextureCube: |
| 303 | return 3; | 302 | return 3; |
| 304 | default: | 303 | default: |
| 305 | UNIMPLEMENTED_MSG("Unhandled texture type {}", static_cast<int>(texture_type)); | 304 | UNIMPLEMENTED_MSG("Unhandled texture type {}", texture_type); |
| 306 | return 2; | 305 | return 2; |
| 307 | } | 306 | } |
| 308 | }(); | 307 | }(); |
| @@ -595,7 +594,7 @@ Node4 ShaderIR::GetTextureCode(Instruction instr, TextureType texture_type, | |||
| 595 | lod = GetRegister(instr.gpr20.Value() + bias_offset); | 594 | lod = GetRegister(instr.gpr20.Value() + bias_offset); |
| 596 | break; | 595 | break; |
| 597 | default: | 596 | default: |
| 598 | UNIMPLEMENTED_MSG("Unimplemented process mode={}", static_cast<u32>(process_mode)); | 597 | UNIMPLEMENTED_MSG("Unimplemented process mode={}", process_mode); |
| 599 | break; | 598 | break; |
| 600 | } | 599 | } |
| 601 | 600 | ||
diff --git a/src/video_core/shader/decode/warp.cpp b/src/video_core/shader/decode/warp.cpp index 11b77f795..37433d783 100644 --- a/src/video_core/shader/decode/warp.cpp +++ b/src/video_core/shader/decode/warp.cpp | |||
| @@ -27,7 +27,7 @@ OperationCode GetOperationCode(VoteOperation vote_op) { | |||
| 27 | case VoteOperation::Eq: | 27 | case VoteOperation::Eq: |
| 28 | return OperationCode::VoteEqual; | 28 | return OperationCode::VoteEqual; |
| 29 | default: | 29 | default: |
| 30 | UNREACHABLE_MSG("Invalid vote operation={}", static_cast<u64>(vote_op)); | 30 | UNREACHABLE_MSG("Invalid vote operation={}", vote_op); |
| 31 | return OperationCode::VoteAll; | 31 | return OperationCode::VoteAll; |
| 32 | } | 32 | } |
| 33 | } | 33 | } |