Skip to content

Commit

Permalink
[WebGPU] Partial 3D image_copy tests are failing
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=271382
<radar://125168133>

Reviewed by Tadeu Zagallo.

For the purpose of validation of bytesPerRow, we should be
using the 2D dimension as the issue is we would crash at the metal validation layer.

No test expectations update since the expectations were set to passing and this
test does not run in EWS as it takes too long.

* Source/WebGPU/WebGPU/CommandEncoder.mm:
(WebGPU::CommandEncoder::copyBufferToTexture):
(WebGPU::CommandEncoder::copyTextureToBuffer):
* Source/WebGPU/WebGPU/Queue.mm:
(WebGPU::Queue::writeTexture):

Canonical link: https://commits.webkit.org/276649@main
  • Loading branch information
mwyrzykowski committed Mar 25, 2024
1 parent 313a887 commit 4a40e77
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 9 deletions.
8 changes: 2 additions & 6 deletions Source/WebGPU/WebGPU/CommandEncoder.mm
Original file line number Diff line number Diff line change
Expand Up @@ -923,10 +923,8 @@ static bool refersToAllAspects(WGPUTextureFormat format, WGPUTextureAspect aspec
sourceBytesPerRow = std::min<uint32_t>(sourceBytesPerRow, blockSize * m_device->limits().maxTextureDimension1D);
break;
case WGPUTextureDimension_2D:
sourceBytesPerRow = std::min<uint32_t>(sourceBytesPerRow, blockSize * m_device->limits().maxTextureDimension2D);
break;
case WGPUTextureDimension_3D:
sourceBytesPerRow = std::min<uint32_t>(sourceBytesPerRow, blockSize * m_device->limits().maxTextureDimension3D);
sourceBytesPerRow = std::min<uint32_t>(sourceBytesPerRow, blockSize * m_device->limits().maxTextureDimension2D);
break;
case WGPUTextureDimension_Force32:
break;
Expand Down Expand Up @@ -1262,10 +1260,8 @@ static bool refersToAllAspects(WGPUTextureFormat format, WGPUTextureAspect aspec
destinationBytesPerRow = std::min<uint32_t>(destinationBytesPerRow, blockSize * m_device->limits().maxTextureDimension1D);
break;
case WGPUTextureDimension_2D:
destinationBytesPerRow = std::min<uint32_t>(destinationBytesPerRow, blockSize * m_device->limits().maxTextureDimension2D);
break;
case WGPUTextureDimension_3D:
destinationBytesPerRow = std::min<uint32_t>(destinationBytesPerRow, blockSize * m_device->limits().maxTextureDimension3D);
destinationBytesPerRow = std::min<uint32_t>(destinationBytesPerRow, blockSize * m_device->limits().maxTextureDimension2D);
break;
case WGPUTextureDimension_Force32:
break;
Expand Down
4 changes: 1 addition & 3 deletions Source/WebGPU/WebGPU/Queue.mm
Original file line number Diff line number Diff line change
Expand Up @@ -477,10 +477,8 @@
bytesPerRow = std::min<uint32_t>(bytesPerRow, blockSize * device->limits().maxTextureDimension1D);
break;
case WGPUTextureDimension_2D:
bytesPerRow = std::min<uint32_t>(bytesPerRow, blockSize * device->limits().maxTextureDimension2D);
break;
case WGPUTextureDimension_3D:
bytesPerRow = std::min<uint32_t>(bytesPerRow, blockSize * device->limits().maxTextureDimension3D);
bytesPerRow = std::min<uint32_t>(bytesPerRow, blockSize * device->limits().maxTextureDimension2D);
break;
case WGPUTextureDimension_Force32:
break;
Expand Down

0 comments on commit 4a40e77

Please sign in to comment.