From 6e3f8617dce7b2745c0dfe969e224879ce87aaea Mon Sep 17 00:00:00 2001 From: Turanszki Janos Date: Sun, 10 Dec 2017 17:07:12 +0000 Subject: [PATCH] updated tex uploader --- WickedEngine/wiGraphicsDevice_DX12.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/WickedEngine/wiGraphicsDevice_DX12.cpp b/WickedEngine/wiGraphicsDevice_DX12.cpp index 5d8967a21..83fa16de6 100644 --- a/WickedEngine/wiGraphicsDevice_DX12.cpp +++ b/WickedEngine/wiGraphicsDevice_DX12.cpp @@ -2241,9 +2241,12 @@ namespace wiGraphicsTypes UINT NumSubresources = pDesc->ArraySize; UINT FirstSubresource = 0; + UINT64 RequiredSize = 0; + device->GetCopyableFootprints(&desc, 0, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize); + uint8_t* dest = textureUploader->allocate(RequiredSize, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT); + UINT64 dataSize = UpdateSubresources(static_cast(copyCommandList), (*ppTexture2D)->resource_DX12, - textureUploader->resource, textureUploader->calculateOffset(textureUploader->dataCur), 0, NumSubresources, data); - textureUploader->allocate(dataSize, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT); // just update the buffer offset + textureUploader->resource, textureUploader->calculateOffset(dest), 0, NumSubresources, data); } @@ -3784,9 +3787,13 @@ namespace wiGraphicsTypes (*ppTexture)->SRV_DX12->ptr = ResourceAllocator->allocate(); device->CreateShaderResourceView((*ppTexture)->resource_DX12, &srv_desc, *(*ppTexture)->SRV_DX12); + + UINT64 RequiredSize = 0; + device->GetCopyableFootprints(&desc, 0, (UINT)subresources.size(), 0, nullptr, nullptr, nullptr, &RequiredSize); + uint8_t* dest = textureUploader->allocate(RequiredSize, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT); + UINT64 dataSize = UpdateSubresources(static_cast(copyCommandList), (*ppTexture)->resource_DX12, - textureUploader->resource, textureUploader->calculateOffset(textureUploader->dataCur), 0, (UINT)subresources.size(), subresources.data()); - textureUploader->allocate(dataSize, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT); // just update the buffer offset + textureUploader->resource, textureUploader->calculateOffset(dest), 0, (UINT)subresources.size(), subresources.data()); } return hr;