Open Bug 1844779 Opened 1 year ago Updated 11 months ago

Vulkan backend does not implement copying between compressed textures correctly

Categories

(Core :: Graphics: WebGPU, defect, P2)

defect

Tracking

()

People

(Reporter: nical, Unassigned)

References

(Blocks 2 open bugs)

Details

 1:15.90 TEST_START: /_mozilla/webgpu/chunked/2/cts.https.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,compressed,non_array:*
 1:15.92 INFO Closing window 9f712506-f586-4d1f-ae1f-2a7db700904f
 1:17.37 pid:136757 [Child 137020, Main Thread] WARNING: IPC message 'PSessionStore::Msg_SessionStoreUpdate' discarded: actor cannot send: file /var/home/nical/dev/mozilla/unified/ipc/glue/ProtocolUtils.cpp:508
 1:25.41 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstImage-01732 (0x6a05d345)]
 1:25.41 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstImage-01732 ] Object 0: handle = 0x7f19ce5ec000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5020000000502, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x6a05d345 | vkCmdCopyImage: pRegion[0] dst_copy_extent width (15) must be a multiple of the blocked texture block width (4), or when added to dstOffset.x (0) must equal the image subresource width (64). The Vulkan spec states: For each element of pRegions, if the sum of dstOffset.x and extent.width does not equal the width of the subresource specified by dstSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of dstImage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstImage-01732)
 1:25.41 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19ce5ec000, name: ?), (type: IMAGE, hndl: 0x5020000000502, name: ?)
 1:25.41 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstOffset-01784 (0x23b47ce9)]
 1:25.41 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstOffset-01784 ] Object 0: handle = 0x7f19ce5ec000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5020000000502, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x23b47ce9 | vkCmdCopyImage: pRegion[0].extent (w=15, h=8, d=1) dimensions must be even integer multiples of this command buffer's queue family image transfer granularity (w=4, h=4, d=1) or offset (x=0, y=0, z=0) + extent (w=15, h=8, d=1) must match the image subresource extents (w=64, h=32, d=1). The Vulkan spec states: The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstOffset-01784)
 1:25.41 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19ce5ec000, name: ?), (type: IMAGE, hndl: 0x5020000000502, name: ?)
 1:25.41 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstImage-01732 (0x6a05d345)]
 1:25.41 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstImage-01732 ] Object 0: handle = 0x7f19ce5ec000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5070000000507, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x6a05d345 | vkCmdCopyImage: pRegion[0] dst_copy_extent width (15) must be a multiple of the blocked texture block width (4), or when added to dstOffset.x (0) must equal the image subresource width (16). The Vulkan spec states: For each element of pRegions, if the sum of dstOffset.x and extent.width does not equal the width of the subresource specified by dstSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of dstImage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstImage-01732)
 1:25.41 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19ce5ec000, name: ?), (type: IMAGE, hndl: 0x5070000000507, name: ?)
 1:25.41 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstOffset-01784 (0x23b47ce9)]
 1:25.41 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstOffset-01784 ] Object 0: handle = 0x7f19ce5ec000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5070000000507, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x23b47ce9 | vkCmdCopyImage: pRegion[0].extent (w=15, h=8, d=1) dimensions must be even integer multiples of this command buffer's queue family image transfer granularity (w=4, h=4, d=1) or offset (x=0, y=0, z=0) + extent (w=15, h=8, d=1) must match the image subresource extents (w=16, h=8, d=1). The Vulkan spec states: The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstOffset-01784)
 1:25.41 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19ce5ec000, name: ?), (type: IMAGE, hndl: 0x5070000000507, name: ?)
 1:25.43 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstImage-01732 (0x6a05d345)]
 1:25.44 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstImage-01732 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x52a000000052a, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x6a05d345 | vkCmdCopyImage: pRegion[0] dst_copy_extent width (15) must be a multiple of the blocked texture block width (4), or when added to dstOffset.x (0) must equal the image subresource width (64). The Vulkan spec states: For each element of pRegions, if the sum of dstOffset.x and extent.width does not equal the width of the subresource specified by dstSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of dstImage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstImage-01732)
 1:25.44 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x52a000000052a, name: ?)
 1:25.44 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstOffset-01784 (0x23b47ce9)]
 1:25.44 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstOffset-01784 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x52a000000052a, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x23b47ce9 | vkCmdCopyImage: pRegion[0].extent (w=15, h=4, d=1) dimensions must be even integer multiples of this command buffer's queue family image transfer granularity (w=4, h=4, d=1) or offset (x=0, y=4, z=0) + extent (w=15, h=4, d=1) must match the image subresource extents (w=64, h=32, d=1). The Vulkan spec states: The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstOffset-01784)
 1:25.44 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x52a000000052a, name: ?)
 1:25.44 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstImage-01732 (0x6a05d345)]
 1:25.44 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstImage-01732 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x52f000000052f, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x6a05d345 | vkCmdCopyImage: pRegion[0] dst_copy_extent width (15) must be a multiple of the blocked texture block width (4), or when added to dstOffset.x (0) must equal the image subresource width (16). The Vulkan spec states: For each element of pRegions, if the sum of dstOffset.x and extent.width does not equal the width of the subresource specified by dstSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of dstImage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstImage-01732)
 1:25.44 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x52f000000052f, name: ?)
 1:25.44 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstOffset-01784 (0x23b47ce9)]
 1:25.44 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstOffset-01784 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x52f000000052f, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x23b47ce9 | vkCmdCopyImage: pRegion[0].extent (w=15, h=4, d=1) dimensions must be even integer multiples of this command buffer's queue family image transfer granularity (w=4, h=4, d=1) or offset (x=0, y=4, z=0) + extent (w=15, h=4, d=1) must match the image subresource extents (w=16, h=8, d=1). The Vulkan spec states: The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstOffset-01784)
 1:25.44 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x52f000000052f, name: ?)
 1:25.45 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstImage-01732 (0x6a05d345)]
 1:25.45 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstImage-01732 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x53e000000053e, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x6a05d345 | vkCmdCopyImage: pRegion[0] dst_copy_extent width (11) must be a multiple of the blocked texture block width (4), or when added to dstOffset.x (0) must equal the image subresource width (64). The Vulkan spec states: For each element of pRegions, if the sum of dstOffset.x and extent.width does not equal the width of the subresource specified by dstSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of dstImage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstImage-01732)
 1:25.45 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x53e000000053e, name: ?)
 1:25.45 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstOffset-01784 (0x23b47ce9)]
 1:25.45 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstOffset-01784 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x53e000000053e, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x23b47ce9 | vkCmdCopyImage: pRegion[0].extent (w=11, h=8, d=1) dimensions must be even integer multiples of this command buffer's queue family image transfer granularity (w=4, h=4, d=1) or offset (x=0, y=0, z=0) + extent (w=11, h=8, d=1) must match the image subresource extents (w=64, h=32, d=1). The Vulkan spec states: The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstOffset-01784)
 1:25.45 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x53e000000053e, name: ?)
 1:25.45 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstImage-01732 (0x6a05d345)]
 1:25.45 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstImage-01732 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5430000000543, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x6a05d345 | vkCmdCopyImage: pRegion[0] dst_copy_extent width (11) must be a multiple of the blocked texture block width (4), or when added to dstOffset.x (0) must equal the image subresource width (16). The Vulkan spec states: For each element of pRegions, if the sum of dstOffset.x and extent.width does not equal the width of the subresource specified by dstSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of dstImage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstImage-01732)
 1:25.45 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x5430000000543, name: ?)
 1:25.45 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstOffset-01784 (0x23b47ce9)]
 1:25.45 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstOffset-01784 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5430000000543, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x23b47ce9 | vkCmdCopyImage: pRegion[0].extent (w=11, h=8, d=1) dimensions must be even integer multiples of this command buffer's queue family image transfer granularity (w=4, h=4, d=1) or offset (x=0, y=0, z=0) + extent (w=11, h=8, d=1) must match the image subresource extents (w=16, h=8, d=1). The Vulkan spec states: The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstOffset-01784)
 1:25.45 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x5430000000543, name: ?)
 1:25.47 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstImage-01732 (0x6a05d345)]
 1:25.47 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstImage-01732 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5520000000552, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x6a05d345 | vkCmdCopyImage: pRegion[0] dst_copy_extent width (15) must be a multiple of the blocked texture block width (4), or when added to dstOffset.x (0) must equal the image subresource width (64). The Vulkan spec states: For each element of pRegions, if the sum of dstOffset.x and extent.width does not equal the width of the subresource specified by dstSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of dstImage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstImage-01732)
 1:25.47 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x5520000000552, name: ?)
 1:25.47 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstOffset-01784 (0x23b47ce9)]
 1:25.47 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstOffset-01784 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5520000000552, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x23b47ce9 | vkCmdCopyImage: pRegion[0].extent (w=15, h=4, d=1) dimensions must be even integer multiples of this command buffer's queue family image transfer granularity (w=4, h=4, d=1) or offset (x=0, y=0, z=0) + extent (w=15, h=4, d=1) must match the image subresource extents (w=64, h=32, d=1). The Vulkan spec states: The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstOffset-01784)
 1:25.47 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x5520000000552, name: ?)
 1:25.47 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstImage-01732 (0x6a05d345)]
 1:25.47 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstImage-01732 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5570000000557, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x6a05d345 | vkCmdCopyImage: pRegion[0] dst_copy_extent width (15) must be a multiple of the blocked texture block width (4), or when added to dstOffset.x (0) must equal the image subresource width (16). The Vulkan spec states: For each element of pRegions, if the sum of dstOffset.x and extent.width does not equal the width of the subresource specified by dstSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of dstImage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstImage-01732)
 1:25.47 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x5570000000557, name: ?)
 1:25.47 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-dstOffset-01784 (0x23b47ce9)]
 1:25.47 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-dstOffset-01784 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5570000000557, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x23b47ce9 | vkCmdCopyImage: pRegion[0].extent (w=15, h=4, d=1) dimensions must be even integer multiples of this command buffer's queue family image transfer granularity (w=4, h=4, d=1) or offset (x=0, y=0, z=0) + extent (w=15, h=4, d=1) must match the image subresource extents (w=16, h=8, d=1). The Vulkan spec states: The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-dstOffset-01784)
 1:25.47 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x5570000000557, name: ?)
 1:25.50 pid:136757 [ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-srcImage-01728 (0x6b654496)]
 1:25.50 pid:136757     	Validation Error: [ VUID-vkCmdCopyImage-srcImage-01728 ] Object 0: handle = 0x7f19bb3b0000, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x5880000000588, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x6b654496 | vkCmdCopyImage: pRegion[0] extent width (15) must be a multiple of the blocked texture block width (4), or when added to srcOffset.x (0) must equal the image subresource width (64). The Vulkan spec states: For each element of pRegions, if the sum of srcOffset.x and extent.width does not equal the width of the subresource specified by srcSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of srcImage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-srcImage-01728)
 1:25.50 pid:136757 [ERROR wgpu_hal::vulkan::instance] 	objects: (type: COMMAND_BUFFER, hndl: 0x7f19bb3b0000, name: ?), (type: IMAGE, hndl: 0x5880000000588, name: ?)

... and much more of the same

To run locally: ./mach wpt '/_mozilla/webgpu/chunked/2'

Severity: -- → S3
Priority: -- → P2

(edit) redacted my first guess which was completely off.

Relevant vulkan spec link
Some useful info here: https://github.com/gpuweb/gpuweb/issues/363
See also the implementation in Dawn

Unfortunately the vulkan backend logic for copying to and from compressed texture will require an indirection. This is because the copy extents must be multiples of the block size unless the extents are equal to the subresource width. This requirement can clash between the input and output textures.

For example (as dawn's code puts it), when the source is the first level of a 16x16 texture in BC format (block size 4), and the destination is the third level of a 60x60 texture in the same format, neither 16x16 nor 15x15 is valid for the extent of vkCmdCopyImage.

Dawn implements that via a copy into a temporary texture and I don't see any other way around the problem.

Summary: Loads of vulkan validation errors in `api,operation,command_buffer,copyTextureToTexture:color_textures,compressed,non_array:*` → Vulkan backend does not implement copying between compressed textures correctly
You need to log in before you can comment on or make changes to this bug.