)]}'
{
  "commit": "e6d53ca5a4f9335e68bf64286ecd787ce82cc7e4",
  "tree": "5488d8139df8ad52b9cd451c85967cedda3b647b",
  "parents": [
    "f3810cdba9cd8cf93e8b07723371315e31d922a3"
  ],
  "author": {
    "name": "Sarath Singapati",
    "email": "sarath.singapati@huawei.com",
    "time": "Thu Jun 18 01:52:17 2026 -0700"
  },
  "committer": {
    "name": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Jun 18 01:52:17 2026 -0700"
  },
  "message": "vulkan: Split multi-layer buffer copies on Maleoon\n\nHuawei Maleoon drivers mis-stride multi-layer buffer\u003c-\u003eimage copies: in\na single VkBufferImageCopy region with layerCount \u003e 1 and a padded\nbufferImageHeight, only the first array layer / depth slice lands at the\ncorrect buffer offset; every later layer is read/written at the wrong\noffset and comes back corrupted.\n\nAdd a VulkanSplitBufferTextureCopyForArrayLayers toggle that emits one\ncopy region per layer, each with layerCount \u003d 1 and an explicit\nper-layer buffer offset, so the driver never strides between layers\nitself. The toggle is enabled by default only on Maleoon and applies to\nboth CopyBufferToTexture and CopyTextureToBuffer.\n\nFixes the WebGPU CTS image_copy clusters on Mate60 / Maleoon 910:\napi,operation,command_buffer,image_copy:mip_levels:*\napi,operation,command_buffer,image_copy:rowsPerImage_and_bytesPerRow:*\napi,operation,command_buffer,image_copy:rowsPerImage_and_bytesPerRow_depth_stencil:*\n\nBug: 520126486, 520126487\nChange-Id: Ic913e3ca25c84169f9ff19d974e86ecf0b61f650\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/317116\nReviewed-by: Brandon Jones \u003cbajones@chromium.org\u003e\nReviewed-by: Kai Ninomiya \u003ckainino@chromium.org\u003e\nCommit-Queue: Kai Ninomiya \u003ckainino@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "444f39de909c8f262fe4cff8553cbcf875aa1aed",
      "old_mode": 33188,
      "old_path": "src/dawn/native/Toggles.cpp",
      "new_id": "5ade3d60162d90bf5a7a26bebfa10d9e4e3a940c",
      "new_mode": 33188,
      "new_path": "src/dawn/native/Toggles.cpp"
    },
    {
      "type": "modify",
      "old_id": "5434a6292ed41bd078fde77fcfa3c51a224af4f1",
      "old_mode": 33188,
      "old_path": "src/dawn/native/Toggles.h",
      "new_id": "2d1020e7c94e53d8a44cc06315699690df4fe518",
      "new_mode": 33188,
      "new_path": "src/dawn/native/Toggles.h"
    },
    {
      "type": "modify",
      "old_id": "382b359b441eee9652d558f8e77dfed2fcebe64b",
      "old_mode": 33188,
      "old_path": "src/dawn/native/vulkan/CommandBufferVk.cpp",
      "new_id": "9601d529cfbe08f5e7285e51cf711d6da9e45b6f",
      "new_mode": 33188,
      "new_path": "src/dawn/native/vulkan/CommandBufferVk.cpp"
    },
    {
      "type": "modify",
      "old_id": "b3fa6a4244f41c77272d2a840e1addd0cfb1caf0",
      "old_mode": 33188,
      "old_path": "src/dawn/native/vulkan/PhysicalDeviceVk.cpp",
      "new_id": "e38794bd2ad8147795c6851f604611611f0b6401",
      "new_mode": 33188,
      "new_path": "src/dawn/native/vulkan/PhysicalDeviceVk.cpp"
    }
  ]
}
