mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-21 15:28:18 +02:00
radv: do not fallback to compute for image->buffer copies with emulated formats
This shouldn't be necessary because SDMA can detile the image just fine, only buffer->image and image->image need to fallback. It just works on GFX10+ because RADV is using NBC views, and I think it works on eg. VEGA10 just by luck due to different swizzles/alignments. Fixes:3d803d7a2e("radv: Use compute copy for emulated formats") Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> (cherry picked from commit5a95658fa8) Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41540>
This commit is contained in:
parent
ee15c432e8
commit
a9ef72f485
5 changed files with 6 additions and 71 deletions
|
|
@ -1484,7 +1484,7 @@
|
|||
"description": "radv: do not fallback to compute for image->buffer copies with emulated formats",
|
||||
"nominated": true,
|
||||
"nomination_type": 2,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "3d803d7a2e0e7d46c04381896168c344d59d88e4",
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -1,68 +1,3 @@
|
|||
# RADV_PERFTEST=transfer_queue+vk_require_etc2=true regressions since 3d803d7a2e0e7d46c04381896168c344d59d88e4
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_snorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_snorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_snorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a1_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a1_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a1_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a8_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a8_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a8_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_snorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_snorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_snorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a1_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a1_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a1_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a8_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a8_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.core.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a8_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_snorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_snorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_snorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11g11_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a1_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a1_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a1_unorm_block_64x192_5_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a8_unorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a8_unorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer_transfer_queue.2d_images.mip_copies_etc2_r8g8b8a8_unorm_block_64x192_5_layers,Fail
|
||||
|
||||
# https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/6256
|
||||
dEQP-VK.sparse_resources.image_sparse_residency.2d.r10x6_unorm_pack16.1024_128_1,Crash
|
||||
dEQP-VK.sparse_resources.image_sparse_residency.2d.r10x6_unorm_pack16.11_137_1,Crash
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ transfer_copy_memory_image(struct radv_cmd_buffer *cmd_buffer, uint64_t buffer_v
|
|||
const struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
|
||||
struct radv_cmd_stream *cs = cmd_buffer->cs;
|
||||
|
||||
if (!radv_sdma_supports_image(device, image)) {
|
||||
if (!radv_sdma_supports_image(device, image, to_image)) {
|
||||
if (!radv_gang_init(cmd_buffer))
|
||||
return;
|
||||
|
||||
|
|
@ -474,7 +474,7 @@ transfer_copy_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image *src_i
|
|||
struct radv_cmd_stream *cs = cmd_buffer->cs;
|
||||
unsigned int dst_aspect_mask_remaining = region->dstSubresource.aspectMask;
|
||||
|
||||
if (!radv_sdma_supports_image(device, src_image) || !radv_sdma_supports_image(device, dst_image)) {
|
||||
if (!radv_sdma_supports_image(device, src_image, false) || !radv_sdma_supports_image(device, dst_image, true)) {
|
||||
if (!radv_gang_init(cmd_buffer))
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -718,12 +718,12 @@ radv_sdma_copy_image_t2t_scanline(const struct radv_device *device, struct radv_
|
|||
}
|
||||
|
||||
bool
|
||||
radv_sdma_supports_image(const struct radv_device *device, const struct radv_image *image)
|
||||
radv_sdma_supports_image(const struct radv_device *device, const struct radv_image *image, bool to_image)
|
||||
{
|
||||
const struct radv_physical_device *pdev = radv_device_physical(device);
|
||||
|
||||
if (radv_is_format_emulated(pdev, image->vk.format))
|
||||
return false;
|
||||
return to_image ? false : true;
|
||||
|
||||
if (!pdev->info.sdma_supports_sparse &&
|
||||
(image->vk.create_flags & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT))
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ void radv_sdma_copy_memory(const struct radv_device *device, struct radv_cmd_str
|
|||
uint64_t dst_va, uint64_t size);
|
||||
void radv_sdma_fill_memory(const struct radv_device *device, struct radv_cmd_stream *cs, const uint64_t va,
|
||||
const uint64_t size, const uint32_t value);
|
||||
bool radv_sdma_supports_image(const struct radv_device *device, const struct radv_image *image);
|
||||
bool radv_sdma_supports_image(const struct radv_device *device, const struct radv_image *image, bool to_image);
|
||||
|
||||
void radv_sdma_emit_nop(const struct radv_device *device, struct radv_cmd_stream *cs);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue