From 475bf4e9c14794906bc3c69db4e33e21f7ce25b8 Mon Sep 17 00:00:00 2001 From: WinterSnowfall Date: Tue, 7 Jan 2025 17:50:36 +0200 Subject: [PATCH] [d3d9] Use cdw to iterate over register tokens in D3D9ShaderValidator --- src/d3d9/d3d9_shader_validator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/d3d9/d3d9_shader_validator.cpp b/src/d3d9/d3d9_shader_validator.cpp index a4f983e53..13d7e3434 100644 --- a/src/d3d9/d3d9_shader_validator.cpp +++ b/src/d3d9/d3d9_shader_validator.cpp @@ -87,7 +87,7 @@ namespace dxvk { default: // Iterate over register tokens. Bit 31 of register tokens is always 1. - for (uint32_t instNum = 1; pdwInst[instNum] & 0x80000000; instNum++) { + for (uint32_t instNum = 1; instNum < cdw && (pdwInst[instNum] >> 31); instNum++) { DWORD regType = ((pdwInst[instNum] & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT) | ((pdwInst[instNum] & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2); DWORD regIndex = pdwInst[instNum] & D3DSP_REGNUM_MASK;