[Mesa-dev] [PATCH 07/29] anv/image: Support color aspects in layout_to_aux_usage

Nanley Chery nanleychery at gmail.com
Mon Dec 11 23:41:12 UTC 2017


On Mon, Nov 27, 2017 at 07:05:57PM -0800, Jason Ekstrand wrote:
> ---
>  src/intel/vulkan/anv_image.c | 48 ++++++++++++++++++++++++++------------------
>  1 file changed, 29 insertions(+), 19 deletions(-)
> 

This patch is
Reviewed-by: Nanley Chery <nanley.g.chery at intel.com>

> diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
> index 561da28..7e89f75 100644
> --- a/src/intel/vulkan/anv_image.c
> +++ b/src/intel/vulkan/anv_image.c
> @@ -748,12 +748,6 @@ anv_layout_to_aux_usage(const struct gen_device_info * const devinfo,
>     /* Stencil has no aux */
>     assert(aspect != VK_IMAGE_ASPECT_STENCIL_BIT);
>  
> -   /* The following switch currently only handles depth stencil aspects.
> -    * TODO: Handle the color aspect.
> -    */
> -   if (image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV)
> -      return image->planes[plane].aux_usage;
> -
>     switch (layout) {
>  
>     /* Invalid Layouts */
> @@ -773,28 +767,38 @@ anv_layout_to_aux_usage(const struct gen_device_info * const devinfo,
>  
>  
>     /* Transfer Layouts
> -    *
> -    * This buffer could be a depth buffer used in a transfer operation. BLORP
> -    * currently doesn't use HiZ for transfer operations so we must use the main
> -    * buffer for this layout. TODO: Enable HiZ in BLORP.
>      */
>     case VK_IMAGE_LAYOUT_GENERAL:
>     case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
>     case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
> -      return ISL_AUX_USAGE_NONE;
> +      if (aspect == VK_IMAGE_ASPECT_DEPTH_BIT) {
> +         /* This buffer could be a depth buffer used in a transfer operation.
> +          * BLORP currently doesn't use HiZ for transfer operations so we must
> +          * use the main buffer for this layout. TODO: Enable HiZ in BLORP.
> +          */
> +         assert(image->planes[plane].aux_usage == ISL_AUX_USAGE_HIZ);
> +         return ISL_AUX_USAGE_NONE;
> +      } else {
> +         assert(image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV);
> +         return image->planes[plane].aux_usage;
> +      }
>  
>  
>     /* Sampling Layouts */
>     case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:
> +   case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR:
>        assert((image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV) == 0);
>        /* Fall-through */
>     case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
> -   case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR:
> -      assert(aspect == VK_IMAGE_ASPECT_DEPTH_BIT);
> -      if (anv_can_sample_with_hiz(devinfo, image))
> -         return ISL_AUX_USAGE_HIZ;
> -      else
> -         return ISL_AUX_USAGE_NONE;
> +      if (aspect == VK_IMAGE_ASPECT_DEPTH_BIT) {
> +         if (anv_can_sample_with_hiz(devinfo, image))
> +            return ISL_AUX_USAGE_HIZ;
> +         else
> +            return ISL_AUX_USAGE_NONE;
> +      } else {
> +         return image->planes[plane].aux_usage;
> +      }
> +
>  
>     case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:
>        assert(image->aspects == VK_IMAGE_ASPECT_COLOR_BIT);
> @@ -819,8 +823,14 @@ anv_layout_to_aux_usage(const struct gen_device_info * const devinfo,
>  
>     /* Rendering Layouts */
>     case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
> -      assert(image->aspects == VK_IMAGE_ASPECT_COLOR_BIT);
> -      unreachable("Color images are not yet supported.");
> +      assert(aspect & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV);
> +      if (image->planes[plane].aux_usage == ISL_AUX_USAGE_NONE) {
> +         assert(image->samples == 1);
> +         return ISL_AUX_USAGE_CCS_D;
> +      } else {
> +         assert(image->planes[plane].aux_usage != ISL_AUX_USAGE_CCS_D);
> +         return image->planes[plane].aux_usage;
> +      }
>  
>     case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
>     case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR:
> -- 
> 2.5.0.400.gff86faf
> 
> _______________________________________________
> 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