1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00

[d3d11] Avoid emitting redundant vertex and index buffer updates

This commit is contained in:
Philip Rebohle 2019-06-03 00:18:54 +02:00
parent 19adccea8f
commit 58d838b915

View File

@ -1588,11 +1588,15 @@ namespace dxvk {
for (uint32_t i = 0; i < NumBuffers; i++) { for (uint32_t i = 0; i < NumBuffers; i++) {
auto newBuffer = static_cast<D3D11Buffer*>(ppVertexBuffers[i]); auto newBuffer = static_cast<D3D11Buffer*>(ppVertexBuffers[i]);
m_state.ia.vertexBuffers[StartSlot + i].buffer = newBuffer; if (m_state.ia.vertexBuffers[StartSlot + i].buffer != newBuffer
m_state.ia.vertexBuffers[StartSlot + i].offset = pOffsets[i]; || m_state.ia.vertexBuffers[StartSlot + i].offset != pOffsets[i]
m_state.ia.vertexBuffers[StartSlot + i].stride = pStrides[i]; || m_state.ia.vertexBuffers[StartSlot + i].stride != pStrides[i]) {
m_state.ia.vertexBuffers[StartSlot + i].buffer = newBuffer;
BindVertexBuffer(StartSlot + i, newBuffer, pOffsets[i], pStrides[i]); m_state.ia.vertexBuffers[StartSlot + i].offset = pOffsets[i];
m_state.ia.vertexBuffers[StartSlot + i].stride = pStrides[i];
BindVertexBuffer(StartSlot + i, newBuffer, pOffsets[i], pStrides[i]);
}
} }
} }
@ -1605,11 +1609,15 @@ namespace dxvk {
auto newBuffer = static_cast<D3D11Buffer*>(pIndexBuffer); auto newBuffer = static_cast<D3D11Buffer*>(pIndexBuffer);
m_state.ia.indexBuffer.buffer = newBuffer; if (m_state.ia.indexBuffer.buffer != newBuffer
m_state.ia.indexBuffer.offset = Offset; || m_state.ia.indexBuffer.offset != Offset
m_state.ia.indexBuffer.format = Format; || m_state.ia.indexBuffer.format != Format) {
m_state.ia.indexBuffer.buffer = newBuffer;
BindIndexBuffer(newBuffer, Offset, Format); m_state.ia.indexBuffer.offset = Offset;
m_state.ia.indexBuffer.format = Format;
BindIndexBuffer(newBuffer, Offset, Format);
}
} }