Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
On Tue, Mar 7, 2017 at 12:33 AM, Dave Airlie <airl...@gmail.com> wrote: > From: Dave Airlie <airl...@redhat.com> > > 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 > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/amd/vulkan/radv_meta_resolve_cs.c | 23 +++++++++++++++-------- > 1 file changed, 15 insertions(+), 8 deletions(-) > > diff --git a/src/amd/vulkan/radv_meta_resolve_cs.c > b/src/amd/vulkan/radv_meta_resolve_cs.c > index 9cb4ce8..3272d1f 100644 > --- a/src/amd/vulkan/radv_meta_resolve_cs.c > +++ b/src/amd/vulkan/radv_meta_resolve_cs.c > @@ -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) { > > -- > 2.7.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev