Revert "D3D12: Upload data from `mStagingBuffer` with `CopyResource()`"
This reverts commit b355a39819d6ba788308926b58e3b23a365029d1.
Reason for revert: Causing crash in 378567679
Original change's description:
> D3D12: Upload data from `mStagingBuffer` with `CopyResource()`
>
> This patch uses `CopyResource()` in the code that uploads data from
> staging buffer to the destination buffer when handling
> `mappedAtCreation`.
>
> Bug: chromium:42242066
> Test: dawn_end2end_tests
> Change-Id: I60b845507792c682ab2cf33da9ed368f52700143
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/213001
> Reviewed-by: Loko Kung <lokokung@google.com>
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: 378567679
Change-Id: Ia6a086e4f3b954d9060519086b729e0254aeb273
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/214774
Auto-Submit: Loko Kung <lokokung@google.com>
Reviewed-by: Loko Kung <lokokung@google.com>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/src/dawn/native/d3d12/CommandBufferD3D12.cpp b/src/dawn/native/d3d12/CommandBufferD3D12.cpp
index 2e0f32c..b422f40 100644
--- a/src/dawn/native/d3d12/CommandBufferD3D12.cpp
+++ b/src/dawn/native/d3d12/CommandBufferD3D12.cpp
@@ -104,6 +104,12 @@
copySize.depthOrArrayLayers == srcSize.depthOrArrayLayers;
}
+bool CanUseCopyResource(CopyBufferToBufferCmd* copy) {
+ return copy->sourceOffset == 0 && copy->destinationOffset == 0 &&
+ copy->size == copy->source->GetSize() && copy->size == copy->destination->GetSize() &&
+ copy->source->GetAllocatedSize() == copy->destination->GetAllocatedSize();
+}
+
void RecordWriteTimestampCmd(ID3D12GraphicsCommandList* commandList,
QuerySetBase* querySet,
uint32_t queryIndex) {
@@ -856,8 +862,7 @@
srcBuffer->TrackUsageAndTransitionNow(commandContext, wgpu::BufferUsage::CopySrc);
dstBuffer->TrackUsageAndTransitionNow(commandContext, wgpu::BufferUsage::CopyDst);
- if (CanCopyBufferToBufferWithCopyResource(srcBuffer, copy->sourceOffset, dstBuffer,
- copy->destinationOffset, copy->size)) {
+ if (CanUseCopyResource(copy)) {
commandList->CopyResource(dstBuffer->GetD3D12Resource(),
srcBuffer->GetD3D12Resource());
} else {
diff --git a/src/dawn/native/d3d12/DeviceD3D12.cpp b/src/dawn/native/d3d12/DeviceD3D12.cpp
index 789f6d7..7929842 100644
--- a/src/dawn/native/d3d12/DeviceD3D12.cpp
+++ b/src/dawn/native/d3d12/DeviceD3D12.cpp
@@ -517,15 +517,9 @@
Buffer* srcBuffer = ToBackend(source);
dstBuffer->TrackUsageAndTransitionNow(commandContext, wgpu::BufferUsage::CopyDst);
- if (CanCopyBufferToBufferWithCopyResource(srcBuffer, sourceOffset, dstBuffer, destinationOffset,
- size)) {
- commandContext->GetCommandList()->CopyResource(dstBuffer->GetD3D12Resource(),
- srcBuffer->GetD3D12Resource());
- } else {
- commandContext->GetCommandList()->CopyBufferRegion(
- dstBuffer->GetD3D12Resource(), destinationOffset, srcBuffer->GetD3D12Resource(),
- sourceOffset, size);
- }
+ commandContext->GetCommandList()->CopyBufferRegion(
+ dstBuffer->GetD3D12Resource(), destinationOffset, srcBuffer->GetD3D12Resource(),
+ sourceOffset, size);
}
MaybeError Device::CopyFromStagingToTextureImpl(const BufferBase* source,
diff --git a/src/dawn/native/d3d12/UtilsD3D12.cpp b/src/dawn/native/d3d12/UtilsD3D12.cpp
index 6b14e58..f2b55c5 100644
--- a/src/dawn/native/d3d12/UtilsD3D12.cpp
+++ b/src/dawn/native/d3d12/UtilsD3D12.cpp
@@ -344,14 +344,4 @@
object->SetPrivateData(WKPDID_D3DDebugObjectName, objectName.length(), objectName.c_str());
}
-bool CanCopyBufferToBufferWithCopyResource(Buffer* sourceBuffer,
- uint64_t sourceOffset,
- Buffer* destinationBuffer,
- uint64_t destinationOffset,
- uint64_t copySize) {
- return sourceOffset == 0 && destinationOffset == 0 && sourceBuffer->GetSize() == copySize &&
- destinationBuffer->GetSize() == copySize &&
- sourceBuffer->GetAllocatedSize() == destinationBuffer->GetAllocatedSize();
-}
-
} // namespace dawn::native::d3d12
diff --git a/src/dawn/native/d3d12/UtilsD3D12.h b/src/dawn/native/d3d12/UtilsD3D12.h
index 10b902a..ec0b7c8 100644
--- a/src/dawn/native/d3d12/UtilsD3D12.h
+++ b/src/dawn/native/d3d12/UtilsD3D12.h
@@ -72,12 +72,6 @@
void SetDebugName(Device* device, ID3D12Object* object, const char* prefix, std::string label = "");
-bool CanCopyBufferToBufferWithCopyResource(Buffer* sourceBuffer,
- uint64_t sourceOffset,
- Buffer* destinationBuffer,
- uint64_t destinationOffset,
- uint64_t copySize);
-
} // namespace dawn::native::d3d12
#endif // SRC_DAWN_NATIVE_D3D12_UTILSD3D12_H_