From 1ea07954fb71d3445aab4f11411ed7187e7c911f Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Fri, 18 Oct 2019 01:23:10 -0300 Subject: shader_ir/memory: Ignore global memory when tracking fails Ignore global memory operations instead of invoking undefined behaviour when constant buffer tracking fails and we are blasting through asserts, ignore the operation. In the case of LDG this means filling the destination registers with zeroes; for STG this means ignore the instruction as a whole. The default behaviour is still to abort execution on failure. --- src/video_core/shader/shader_ir.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/video_core/shader/shader_ir.h') diff --git a/src/video_core/shader/shader_ir.h b/src/video_core/shader/shader_ir.h index 105981d67..91cd0a534 100644 --- a/src/video_core/shader/shader_ir.h +++ b/src/video_core/shader/shader_ir.h @@ -371,8 +371,9 @@ private: std::pair TrackRegister(const GprNode* tracked, const NodeBlock& code, s64 cursor) const; - std::tuple TrackAndGetGlobalMemory( - NodeBlock& bb, Tegra::Shader::Instruction instr, bool is_write); + std::tuple TrackGlobalMemory(NodeBlock& bb, + Tegra::Shader::Instruction instr, + bool is_write); const ProgramCode& program_code; const u32 main_offset; -- cgit v1.2.3