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