[游戏错误]:《未解之谜:纳坦·德雷克系列》(CUSA02320) — 三个由根引起的崩溃(GPU卡死、菜单崩溃、EOP断言) + 解决方法
作者: MrBossHunter创建于 2026年9月15日更新于 2026年9月15日
证据
VK_EXT_device_fault(本地添加)仅报告InstructionPointerUnknown地址,没有Read/WriteInvalid,即是卡顿而不是页故障。nvlddmkm事件153在每次崩溃时都会被记录。将TdrDelay设置为10 s不会改变任何情况。VK_NV_device_diagnostic_checkpoints(本地添加,标记=着色器哈希)显示最后执行的命令是**cs0x43b8ee5e**的调用(阶段0x2000=计算)。- 在
cs_0x43b8ee5e的IR中,着色器有8个循环(多个嵌套)。它们的边界来自ReadConst(flags=0x0)%ptr, #idx,这是一个通过客户端指针的动态读取(例如,在ptr + i*224处迭代224字节的记录,而i < ReadConst(ptr, 2))。 EmitReadConst(emit_spirv_context_get_set.cpp):
对于动态读取,if (!EmulatorSettings.IsDirectMemoryAccessEnabled()) { return ctx.EmitFlatbufferLoad(ctx.ConstU32(flatbuf_off_dw)); // flatbuf_off_dw == 0 for dynamic reads }flatbuf_off_dw为0,因此着色器读取了平坦缓冲区的单字,其中存储了不相关的数据。循环计数…
内容来源: shadps4-emu/shadPS4