From 5728d105874175854a5033a4c6ef079187697885 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Tue, 25 Jun 2019 14:22:47 +0200 Subject: [PATCH] [d3d11] Copy initial texture data to mapped buffer, if available Otherwise, if an application maps the image right after creating it, we might end up reading garbage data or overriding the image data. --- src/d3d11/d3d11_initializer.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/d3d11/d3d11_initializer.cpp b/src/d3d11/d3d11_initializer.cpp index 3559f254..b9b3eda4 100644 --- a/src/d3d11/d3d11_initializer.cpp +++ b/src/d3d11/d3d11_initializer.cpp @@ -155,6 +155,12 @@ namespace dxvk { pInitialData[id].SysMemSlicePitch, packedFormat); } + + if (pTexture->GetMapMode() == D3D11_COMMON_TEXTURE_MAP_MODE_BUFFER) { + util::packImageData(pTexture->GetMappedBuffer(id)->mapPtr(0), pInitialData[id].pSysMem, + util::computeBlockCount(image->mipLevelExtent(level), formatInfo->blockSize), + formatInfo->elementSize, pInitialData[id].SysMemPitch, pInitialData[id].SysMemSlicePitch); + } } } } else {