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,