1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-18 13:54:16 +01:00

[d3d11] Add range checking to SOGetTargets

This commit is contained in:
Philip Rebohle 2021-04-21 13:12:56 +02:00
parent 11a02831a9
commit 2d9c229eaa
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99

View File

@ -3062,8 +3062,11 @@ namespace dxvk {
ID3D11Buffer** ppSOTargets) {
D3D10DeviceLock lock = LockContext();
for (uint32_t i = 0; i < NumBuffers; i++)
ppSOTargets[i] = m_state.so.targets[i].buffer.ref();
for (uint32_t i = 0; i < NumBuffers; i++) {
ppSOTargets[i] = i < m_state.so.targets.size()
? m_state.so.targets[i].buffer.ref()
: nullptr;
}
}
@ -3074,11 +3077,19 @@ namespace dxvk {
D3D10DeviceLock lock = LockContext();
for (uint32_t i = 0; i < NumBuffers; i++) {
if (ppSOTargets != nullptr)
ppSOTargets[i] = m_state.so.targets[i].buffer.ref();
const bool inRange = i < m_state.so.targets.size();
if (pOffsets != nullptr)
pOffsets[i] = m_state.so.targets[i].offset;
if (ppSOTargets != nullptr) {
ppSOTargets[i] = inRange
? m_state.so.targets[i].buffer.ref()
: nullptr;
}
if (pOffsets != nullptr) {
pOffsets[i] = inRange
? m_state.so.targets[i].offset
: 0u;
}
}
}