Handle NULL resource for AtomicOp's

Was already handled for UAV Load/Stores
Increase assert value for components (maximum is 16 instead of 4)
This commit is contained in:
Jake Turner
2025-02-25 18:44:21 +00:00
parent bfe042a288
commit 60d0c6b21c
+10 -2
View File
@@ -3394,7 +3394,15 @@ bool ThreadState::ExecuteInstruction(DebugAPIWrapper *apiWrapper,
RDCERR("Unhandled dxOpCode %s", ToStr(dxOpCode).c_str());
}
TypedUAVStore(fmt, (byte *)data, res.value);
// NULL resource or out of bounds
if((!texData && elemIdx >= numElems) || (texData && dataOffset >= dataSize))
{
RDCERR("Ignoring store to unbound resource %s", GetArgumentName(1).c_str());
}
else
{
TypedUAVStore(fmt, (byte *)data, res.value);
}
// result is the original value
result.value = a.value;
@@ -5733,7 +5741,7 @@ void ThreadState::SetResult(const Id &id, ShaderVariable &result, Operation op,
ShaderEvents flags)
{
RDCASSERT((result.rows > 0 && result.columns > 0) || !result.members.empty());
RDCASSERT(result.columns <= 4);
RDCASSERT(result.columns <= 16);
RDCASSERTNOTEQUAL(result.type, VarType::Unknown);
// Can only flush denorms for float types