1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +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) { ID3D11Buffer** ppSOTargets) {
D3D10DeviceLock lock = LockContext(); D3D10DeviceLock lock = LockContext();
for (uint32_t i = 0; i < NumBuffers; i++) for (uint32_t i = 0; i < NumBuffers; i++) {
ppSOTargets[i] = m_state.so.targets[i].buffer.ref(); 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(); D3D10DeviceLock lock = LockContext();
for (uint32_t i = 0; i < NumBuffers; i++) { for (uint32_t i = 0; i < NumBuffers; i++) {
if (ppSOTargets != nullptr) const bool inRange = i < m_state.so.targets.size();
ppSOTargets[i] = m_state.so.targets[i].buffer.ref();
if (pOffsets != nullptr) if (ppSOTargets != nullptr) {
pOffsets[i] = m_state.so.targets[i].offset; ppSOTargets[i] = inRange
? m_state.so.targets[i].buffer.ref()
: nullptr;
}
if (pOffsets != nullptr) {
pOffsets[i] = inRange
? m_state.so.targets[i].offset
: 0u;
}
} }
} }