diff --git a/src/common/logging/filter.cpp b/src/common/logging/filter.cpp index dc2e8f02..6ea076ed 100644 --- a/src/common/logging/filter.cpp +++ b/src/common/logging/filter.cpp @@ -110,6 +110,7 @@ bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) { CLS(Frontend) \ CLS(Render) \ SUB(Render, Vulkan) \ + SUB(Render, Recompiler) \ CLS(Input) \ CLS(Tty) \ CLS(Loader) diff --git a/src/common/logging/types.h b/src/common/logging/types.h index 687bcfce..3d9c87b1 100644 --- a/src/common/logging/types.h +++ b/src/common/logging/types.h @@ -77,6 +77,7 @@ enum class Class : u8 { Frontend, ///< Emulator UI Render, ///< Video Core Render_Vulkan, ///< Vulkan backend + Render_Recompiler, ///< Shader recompiler Loader, ///< ROM loader Input, ///< Input emulation Tty, ///< Debug output from emu diff --git a/src/shader_recompiler/frontend/structured_control_flow.cpp b/src/shader_recompiler/frontend/structured_control_flow.cpp index 49fe2052..8acd93d4 100644 --- a/src/shader_recompiler/frontend/structured_control_flow.cpp +++ b/src/shader_recompiler/frontend/structured_control_flow.cpp @@ -823,6 +823,9 @@ IR::AbstractSyntaxList BuildASL(ObjectPool& inst_pool, ObjectPool inst_list, Info& info) break; default: const u32 opcode = u32(inst.opcode); - UNREACHABLE_MSG("Unknown opcode {} ({})", magic_enum::enum_name(inst.opcode), opcode); + LOG_ERROR(Render_Recompiler, "Unknown opcode {} ({})", + magic_enum::enum_name(inst.opcode), opcode); + info.translation_failed = true; } } } diff --git a/src/shader_recompiler/runtime_info.h b/src/shader_recompiler/runtime_info.h index c7318460..63474958 100644 --- a/src/shader_recompiler/runtime_info.h +++ b/src/shader_recompiler/runtime_info.h @@ -127,6 +127,7 @@ struct Info { Stage stage; bool uses_group_quad{}; + bool translation_failed{}; // indicates that shader has unsupported instructions template T ReadUd(u32 ptr_index, u32 dword_offset) const noexcept {