Rephrasing CopyBufferToTexture validation
Moved some of the validation helper functions from CommandEncoder.cpp
to CommandValidation.cpp. This will make them accessible for
Queue::WriteTexture. Also introduced ValidateLinearTextureData
and ValidateTextureCopyRange which combine already implemented
checks in a way that's defined in WebGPU spec.
Bug: dawn:483
Change-Id: I04304c5e4906f3745c6adf75758fae179c6ffcfe
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/24283
Commit-Queue: Tomek Ponitka <tommek@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
diff --git a/src/dawn_native/CommandValidation.h b/src/dawn_native/CommandValidation.h
index 49da94d..34ff7a4 100644
--- a/src/dawn_native/CommandValidation.h
+++ b/src/dawn_native/CommandValidation.h
@@ -17,6 +17,7 @@
#include "dawn_native/CommandAllocator.h"
#include "dawn_native/Error.h"
+#include "dawn_native/Texture.h"
#include <vector>
@@ -39,6 +40,28 @@
MaybeError ValidateTimestampQuery(QuerySetBase* querySet, uint32_t queryIndex);
+ MaybeError ValidateLinearTextureData(const TextureDataLayout& layout,
+ uint64_t byteSize,
+ const Format& format,
+ const Extent3D& copyExtent);
+ MaybeError ValidateTextureCopyRange(const TextureCopyView& textureCopyView,
+ const Extent3D& copySize);
+
+ MaybeError ValidateBufferCopyView(DeviceBase const* device,
+ const BufferCopyView& bufferCopyView);
+ MaybeError ValidateTextureCopyView(DeviceBase const* device,
+ const TextureCopyView& textureCopyView);
+
+ MaybeError ValidateRowsPerImage(const Format& format,
+ uint32_t rowsPerImage,
+ uint32_t copyHeight);
+ MaybeError ValidateBytesPerRow(const Format& format,
+ const Extent3D& copySize,
+ uint32_t bytesPerRow);
+ MaybeError ValidateCopySizeFitsInBuffer(const Ref<BufferBase>& buffer,
+ uint64_t offset,
+ uint64_t size);
+
bool IsRangeOverlapped(uint32_t startA, uint32_t startB, uint32_t length);
} // namespace dawn_native