mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 15:48:36 +02:00
radv: move fast clear before resolve into own loop.
Don't fast clear inside the meta loop as things get confused, fixes a crash in: dEQP-VK.api.copy_and_blit.resolve_image.whole_array_image.2_bit Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
0ab2dd361f
commit
c5947e9787
1 changed files with 15 additions and 8 deletions
|
|
@ -326,6 +326,21 @@ void radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer,
|
|||
struct radv_meta_saved_compute_state saved_state;
|
||||
const uint32_t samples = src_image->samples;
|
||||
const uint32_t samples_log2 = ffs(samples) - 1;
|
||||
|
||||
for (uint32_t r = 0; r < region_count; ++r) {
|
||||
const VkImageResolve *region = ®ions[r];
|
||||
const uint32_t src_base_layer =
|
||||
radv_meta_get_iview_layer(src_image, ®ion->srcSubresource,
|
||||
®ion->srcOffset);
|
||||
VkImageSubresourceRange range;
|
||||
range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
range.baseMipLevel = region->srcSubresource.mipLevel;
|
||||
range.levelCount = 1;
|
||||
range.baseArrayLayer = src_base_layer;
|
||||
range.layerCount = region->srcSubresource.layerCount;
|
||||
radv_fast_clear_flush_image_inplace(cmd_buffer, src_image, &range);
|
||||
}
|
||||
|
||||
radv_meta_save_compute(&saved_state, cmd_buffer, 16);
|
||||
|
||||
for (uint32_t r = 0; r < region_count; ++r) {
|
||||
|
|
@ -350,14 +365,6 @@ void radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer,
|
|||
const struct VkOffset3D dstOffset =
|
||||
radv_sanitize_image_offset(dest_image->type, region->dstOffset);
|
||||
|
||||
VkImageSubresourceRange range;
|
||||
range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
range.baseMipLevel = region->srcSubresource.mipLevel;
|
||||
range.levelCount = 1;
|
||||
range.baseArrayLayer = src_base_layer;
|
||||
range.layerCount = region->srcSubresource.layerCount;
|
||||
radv_fast_clear_flush_image_inplace(cmd_buffer, src_image, &range);
|
||||
|
||||
for (uint32_t layer = 0; layer < region->srcSubresource.layerCount;
|
||||
++layer) {
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue