summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2019-07-05 20:13:14 +0200
committerFernandoS27 <fsahmkow27@gmail.com>2019-07-09 23:15:45 +0200
commitf2549739d1166d9177bfff3a6af150266ba5309f (patch)
tree606e744b19db98c940b9cde236ad062afb678bb1
parentshader_ir: limit explorastion to best known program size. (diff)
downloadyuzu-f2549739d1166d9177bfff3a6af150266ba5309f.tar
yuzu-f2549739d1166d9177bfff3a6af150266ba5309f.tar.gz
yuzu-f2549739d1166d9177bfff3a6af150266ba5309f.tar.bz2
yuzu-f2549739d1166d9177bfff3a6af150266ba5309f.tar.lz
yuzu-f2549739d1166d9177bfff3a6af150266ba5309f.tar.xz
yuzu-f2549739d1166d9177bfff3a6af150266ba5309f.tar.zst
yuzu-f2549739d1166d9177bfff3a6af150266ba5309f.zip
-rw-r--r--src/video_core/shader/decode.cpp7
-rw-r--r--src/video_core/shader/shader_ir.h4
2 files changed, 9 insertions, 2 deletions
diff --git a/src/video_core/shader/decode.cpp b/src/video_core/shader/decode.cpp
index b0bd6630f..29c8895c5 100644
--- a/src/video_core/shader/decode.cpp
+++ b/src/video_core/shader/decode.cpp
@@ -146,15 +146,18 @@ u32 ShaderIR::DecodeInstr(NodeBlock& bb, u32 pc) {
const Instruction instr = {program_code[pc]};
const auto opcode = OpCode::Decode(instr);
+ const u32 nv_address = ConvertAddressToNvidiaSpace(pc);
// Decoding failure
if (!opcode) {
UNIMPLEMENTED_MSG("Unhandled instruction: {0:x}", instr.value);
+ bb.push_back(Comment(fmt::format("{:05x} Unimplemented Shader instruction (0x{:016x})",
+ nv_address, instr.value)));
return pc + 1;
}
- bb.push_back(
- Comment(fmt::format("{}: {} (0x{:016x})", pc, opcode->get().GetName(), instr.value)));
+ bb.push_back(Comment(
+ fmt::format("{:05x} {} (0x{:016x})", nv_address, opcode->get().GetName(), instr.value)));
using Tegra::Shader::Pred;
UNIMPLEMENTED_IF_MSG(instr.pred.full_pred == Pred::NeverExecute,
diff --git a/src/video_core/shader/shader_ir.h b/src/video_core/shader/shader_ir.h
index 928ac7cb5..6145f0a70 100644
--- a/src/video_core/shader/shader_ir.h
+++ b/src/video_core/shader/shader_ir.h
@@ -127,6 +127,10 @@ public:
return disable_flow_stack;
}
+ u32 ConvertAddressToNvidiaSpace(const u32 address) const {
+ return (address - main_offset) * sizeof(Tegra::Shader::Instruction);
+ }
+
private:
void Decode();