diff --git a/WickedEngine/wiGraphicsDevice_DX12.cpp b/WickedEngine/wiGraphicsDevice_DX12.cpp index 9ae00efa5..d497c2d6c 100644 --- a/WickedEngine/wiGraphicsDevice_DX12.cpp +++ b/WickedEngine/wiGraphicsDevice_DX12.cpp @@ -1554,11 +1554,6 @@ using namespace DX12_Internal; uploaddesc.Usage = USAGE_UPLOAD; bool upload_success = device->CreateBuffer(&uploaddesc, nullptr, &cmd.uploadbuffer); assert(upload_success); - - cmd.upload_resource = to_internal(&cmd.uploadbuffer)->resource.Get(); - CD3DX12_RANGE readRange(0, 0); - HRESULT hr = cmd.upload_resource->Map(0, &readRange, &cmd.data); - assert(SUCCEEDED(hr)); } // begin command list in valid state: @@ -2885,12 +2880,12 @@ using namespace DX12_Internal; { auto cmd = copyAllocator.allocate(pDesc->ByteWidth); - memcpy(cmd.data, pInitialData->pSysMem, pDesc->ByteWidth); + memcpy(cmd.uploadbuffer.mapped_data, pInitialData->pSysMem, pDesc->ByteWidth); cmd.commandList->CopyBufferRegion( internal_state->resource.Get(), 0, - cmd.upload_resource, + to_internal(&cmd.uploadbuffer)->resource.Get(), 0, pDesc->ByteWidth ); @@ -3080,7 +3075,7 @@ using namespace DX12_Internal; if (rowSizesInBytes[i] > (SIZE_T)-1) continue; D3D12_MEMCPY_DEST DestData = {}; - DestData.pData = (void*)((UINT64)cmd.data + layouts[i].Offset); + DestData.pData = (void*)((UINT64)cmd.uploadbuffer.mapped_data + layouts[i].Offset); DestData.RowPitch = (SIZE_T)layouts[i].Footprint.RowPitch; DestData.SlicePitch = (SIZE_T)layouts[i].Footprint.RowPitch * (SIZE_T)numRows[i]; MemcpySubresource(&DestData, &data[i], (SIZE_T)rowSizesInBytes[i], numRows[i], layouts[i].Footprint.Depth); @@ -3089,7 +3084,7 @@ using namespace DX12_Internal; for (UINT i = 0; i < dataCount; ++i) { CD3DX12_TEXTURE_COPY_LOCATION Dst(internal_state->resource.Get(), i); - CD3DX12_TEXTURE_COPY_LOCATION Src(cmd.upload_resource, layouts[i]); + CD3DX12_TEXTURE_COPY_LOCATION Src(to_internal(&cmd.uploadbuffer)->resource.Get(), layouts[i]); cmd.commandList->CopyTextureRegion( &Dst, 0, diff --git a/WickedEngine/wiGraphicsDevice_DX12.h b/WickedEngine/wiGraphicsDevice_DX12.h index 6a8549e97..3ecbeca7a 100644 --- a/WickedEngine/wiGraphicsDevice_DX12.h +++ b/WickedEngine/wiGraphicsDevice_DX12.h @@ -88,8 +88,6 @@ namespace wiGraphics Microsoft::WRL::ComPtr commandList; Microsoft::WRL::ComPtr fence; GPUBuffer uploadbuffer; - void* data = nullptr; - ID3D12Resource* upload_resource = nullptr; }; std::vector freelist; diff --git a/WickedEngine/wiGraphicsDevice_Vulkan.cpp b/WickedEngine/wiGraphicsDevice_Vulkan.cpp index b14dfb9b6..1684772f0 100644 --- a/WickedEngine/wiGraphicsDevice_Vulkan.cpp +++ b/WickedEngine/wiGraphicsDevice_Vulkan.cpp @@ -1053,11 +1053,6 @@ using namespace Vulkan_Internal; uploaddesc.Usage = USAGE_UPLOAD; bool upload_success = device->CreateBuffer(&uploaddesc, nullptr, &cmd.uploadbuffer); assert(upload_success); - - VmaAllocation upload_allocation = to_internal(&cmd.uploadbuffer)->allocation; - cmd.data = upload_allocation->GetMappedData(); - assert(cmd.data != nullptr); - cmd.upload_resource = to_internal(&cmd.uploadbuffer)->resource; } // begin command list in valid state: @@ -3038,7 +3033,7 @@ using namespace Vulkan_Internal; { auto cmd = copyAllocator.allocate(pDesc->ByteWidth); - memcpy(cmd.data, pInitialData->pSysMem, pBuffer->desc.ByteWidth); + memcpy(cmd.uploadbuffer.mapped_data, pInitialData->pSysMem, pBuffer->desc.ByteWidth); { auto& frame = GetFrameResources(); @@ -3070,7 +3065,7 @@ using namespace Vulkan_Internal; vkCmdCopyBuffer( cmd.commandBuffer, - cmd.upload_resource, + to_internal(&cmd.uploadbuffer)->resource, internal_state->resource, 1, ©Region @@ -3318,7 +3313,7 @@ using namespace Vulkan_Internal; { cpysize /= 4; } - uint8_t* cpyaddr = (uint8_t*)cmd.data + cpyoffset; + uint8_t* cpyaddr = (uint8_t*)cmd.uploadbuffer.mapped_data + cpyoffset; memcpy(cpyaddr, subresourceData.pSysMem, cpysize); VkBufferImageCopy copyRegion = {}; @@ -3373,7 +3368,7 @@ using namespace Vulkan_Internal; 1, &barrier ); - vkCmdCopyBufferToImage(cmd.commandBuffer, cmd.upload_resource, internal_state->resource, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (uint32_t)copyRegions.size(), copyRegions.data()); + vkCmdCopyBufferToImage(cmd.commandBuffer, to_internal(&cmd.uploadbuffer)->resource, internal_state->resource, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (uint32_t)copyRegions.size(), copyRegions.data()); copyAllocator.submit(cmd); diff --git a/WickedEngine/wiGraphicsDevice_Vulkan.h b/WickedEngine/wiGraphicsDevice_Vulkan.h index e362994b8..d5eaa735a 100644 --- a/WickedEngine/wiGraphicsDevice_Vulkan.h +++ b/WickedEngine/wiGraphicsDevice_Vulkan.h @@ -161,8 +161,6 @@ namespace wiGraphics VkCommandBuffer commandBuffer = VK_NULL_HANDLE; uint64_t target = 0; GPUBuffer uploadbuffer; - void* data = nullptr; - VkBuffer upload_resource = VK_NULL_HANDLE; }; std::vector freelist; // available std::vector worklist; // in progress diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 423372ef5..b1b28cfe3 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wiVersion // minor features, major updates, breaking compatibility changes const int minor = 57; // minor bug fixes, alterations, refactors, updates - const int revision = 2; + const int revision = 3; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);