diff --git a/src/amd/vulkan/radv_meta_resolve.c b/src/amd/vulkan/radv_meta_resolve.c index a72c1242c76..e37bb6fad78 100644 --- a/src/amd/vulkan/radv_meta_resolve.c +++ b/src/amd/vulkan/radv_meta_resolve.c @@ -548,7 +548,10 @@ radv_CmdResolveImage2(VkCommandBuffer commandBuffer, RADV_FROM_HANDLE(radv_image, dst_image, pResolveImageInfo->dstImage); VkImageLayout src_image_layout = pResolveImageInfo->srcImageLayout; VkImageLayout dst_image_layout = pResolveImageInfo->dstImageLayout; - enum radv_resolve_method resolve_method = RESOLVE_HW; + const struct radv_physical_device *pdevice = cmd_buffer->device->physical_device; + enum radv_resolve_method resolve_method = + pdevice->rad_info.gfx_level >= GFX11 ? RESOLVE_FRAGMENT : RESOLVE_HW; + /* we can use the hw resolve only for single full resolves */ if (pResolveImageInfo->regionCount == 1) { if (pResolveImageInfo->pRegions[0].srcOffset.x || @@ -648,8 +651,10 @@ radv_cmd_buffer_resolve_subpass_hw(struct radv_cmd_buffer *cmd_buffer) void radv_cmd_buffer_resolve_subpass(struct radv_cmd_buffer *cmd_buffer) { + const struct radv_physical_device *pdevice = cmd_buffer->device->physical_device; const struct radv_subpass *subpass = cmd_buffer->state.subpass; - enum radv_resolve_method resolve_method = RESOLVE_HW; + enum radv_resolve_method resolve_method = + pdevice->rad_info.gfx_level >= GFX11 ? RESOLVE_FRAGMENT : RESOLVE_HW; if (!subpass->has_color_resolve && !subpass->ds_resolve_attachment) return;