[d3d10] Support pOffsets parameter in SOGetTargets

This commit is contained in:
Philip Rebohle 2018-08-31 12:29:33 +02:00
parent 93a851a2fc
commit 406816d17c
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
3 changed files with 23 additions and 4 deletions

View File

@ -1550,7 +1550,10 @@ namespace dxvk {
ID3D10Buffer** ppSOTargets,
UINT* pOffsets) {
ID3D11Buffer* d3d11Buffers[D3D10_SO_BUFFER_SLOT_COUNT];
m_context->SOGetTargets(NumBuffers, ppSOTargets ? d3d11Buffers : nullptr);
m_context->SOGetTargetsWithOffsets(NumBuffers,
ppSOTargets ? d3d11Buffers : nullptr,
pOffsets);
if (ppSOTargets != nullptr) {
for (uint32_t i = 0; i < NumBuffers; i++) {
@ -1559,9 +1562,6 @@ namespace dxvk {
: nullptr;
}
}
if (pOffsets != nullptr)
Logger::warn("D3D10: SOGetTargets: Reporting buffer offsets not supported");
}

View File

@ -2561,6 +2561,20 @@ namespace dxvk {
}
void STDMETHODCALLTYPE D3D11DeviceContext::SOGetTargetsWithOffsets(
UINT NumBuffers,
ID3D11Buffer** ppSOTargets,
UINT* pOffsets) {
for (uint32_t i = 0; i < NumBuffers; i++) {
if (ppSOTargets != nullptr)
ppSOTargets[i] = m_state.so.targets[i].buffer.ref();
if (pOffsets != nullptr)
pOffsets[i] = m_state.so.targets[i].offset;
}
}
void STDMETHODCALLTYPE D3D11DeviceContext::TransitionSurfaceLayout(
IDXGIVkInteropSurface* pSurface,
const VkImageSubresourceRange* pSubresources,

View File

@ -631,6 +631,11 @@ namespace dxvk {
UINT NumBuffers,
ID3D11Buffer** ppSOTargets) final;
void STDMETHODCALLTYPE SOGetTargetsWithOffsets(
UINT NumBuffers,
ID3D11Buffer** ppSOTargets,
UINT* pOffsets);
void STDMETHODCALLTYPE TransitionSurfaceLayout(
IDXGIVkInteropSurface* pSurface,
const VkImageSubresourceRange* pSubresources,