From 363a0f8a6b5a941e69c56fe62a288bac68af26f2 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Tue, 23 Jan 2018 19:10:48 +0100 Subject: [PATCH] [d3d11] Implemented IAGetIndexBuffer an IAGetVertexBuffers TressFX needs this. --- src/d3d11/d3d11_context.cpp | 26 +++++++++++++++++++++----- src/d3d11/d3d11_context.h | 6 +++--- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/d3d11/d3d11_context.cpp b/src/d3d11/d3d11_context.cpp index d52374e2..6c9de2b4 100644 --- a/src/d3d11/d3d11_context.cpp +++ b/src/d3d11/d3d11_context.cpp @@ -947,15 +947,31 @@ namespace dxvk { ID3D11Buffer** ppVertexBuffers, UINT* pStrides, UINT* pOffsets) { - Logger::err("D3D11DeviceContext::IAGetVertexBuffers: Not implemented"); + for (uint32_t i = 0; i < NumBuffers; i++) { + if (ppVertexBuffers != nullptr) + ppVertexBuffers[i] = m_state.ia.vertexBuffers[StartSlot + i].buffer.ref(); + + if (pStrides != nullptr) + pStrides[i] = m_state.ia.vertexBuffers[StartSlot + i].stride; + + if (pOffsets != nullptr) + pOffsets[i] = m_state.ia.vertexBuffers[StartSlot + i].offset; + } } void STDMETHODCALLTYPE D3D11DeviceContext::IAGetIndexBuffer( - ID3D11Buffer** pIndexBuffer, - DXGI_FORMAT* Format, - UINT* Offset) { - Logger::err("D3D11DeviceContext::IAGetIndexBuffer: Not implemented"); + ID3D11Buffer** ppIndexBuffer, + DXGI_FORMAT* pFormat, + UINT* pOffset) { + if (ppIndexBuffer != nullptr) + *ppIndexBuffer = m_state.ia.indexBuffer.buffer.ref(); + + if (pFormat != nullptr) + *pFormat = m_state.ia.indexBuffer.format; + + if (pOffset != nullptr) + *pOffset = m_state.ia.indexBuffer.offset; } diff --git a/src/d3d11/d3d11_context.h b/src/d3d11/d3d11_context.h index bbe52260..a8fa0726 100644 --- a/src/d3d11/d3d11_context.h +++ b/src/d3d11/d3d11_context.h @@ -182,9 +182,9 @@ namespace dxvk { UINT* pOffsets) final; void STDMETHODCALLTYPE IAGetIndexBuffer( - ID3D11Buffer** pIndexBuffer, - DXGI_FORMAT* Format, - UINT* Offset) final; + ID3D11Buffer** ppIndexBuffer, + DXGI_FORMAT* pFormat, + UINT* pOffset) final; void STDMETHODCALLTYPE VSSetShader( ID3D11VertexShader* pVertexShader,