[Mesa-dev] [PATCH] radv: move fast clear before resolve into own loop.
Bas Nieuwenhuizen
bas at basnieuwenhuizen.nl
Tue Mar 7 00:46:13 UTC 2017
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
On Tue, Mar 7, 2017 at 12:33 AM, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at 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 <airlied at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list