<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jan 22, 2018 at 12:07 AM, Pohjolainen, Topi <span dir="ltr"><<a href="mailto:topi.pohjolainen@gmail.com" target="_blank">topi.pohjolainen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Fri, Jan 19, 2018 at 03:47:24PM -0800, Jason Ekstrand wrote:<br>
> Reviewed-by: Nanley Chery <<a href="mailto:nanley.g.chery@intel.com">nanley.g.chery@intel.com</a>><br>
> ---<br>
>  src/intel/vulkan/anv_image.c | 48 ++++++++++++++++++++++++++----<wbr>--------------<br>
>  1 file changed, 29 insertions(+), 19 deletions(-)<br>
><br>
> diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c<br>
> index 84e4b96..e34ac95 100644<br>
> --- a/src/intel/vulkan/anv_image.c<br>
> +++ b/src/intel/vulkan/anv_image.c<br>
> @@ -774,12 +774,6 @@ anv_layout_to_aux_usage(const struct gen_device_info * const devinfo,<br>
>     /* Stencil has no aux */<br>
>     assert(aspect != VK_IMAGE_ASPECT_STENCIL_BIT);<br>
><br>
> -   /* The following switch currently only handles depth stencil aspects.<br>
> -    * TODO: Handle the color aspect.<br>
> -    */<br>
> -   if (image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_<wbr>ANV)<br>
> -      return image->planes[plane].aux_<wbr>usage;<br>
> -<br>
>     switch (layout) {<br>
><br>
>     /* Invalid Layouts */<br>
> @@ -799,28 +793,38 @@ anv_layout_to_aux_usage(const struct gen_device_info * const devinfo,<br>
><br>
><br>
>     /* Transfer Layouts<br>
> -    *<br>
> -    * This buffer could be a depth buffer used in a transfer operation. BLORP<br>
> -    * currently doesn't use HiZ for transfer operations so we must use the main<br>
> -    * buffer for this layout. TODO: Enable HiZ in BLORP.<br>
>      */<br>
>     case VK_IMAGE_LAYOUT_GENERAL:<br>
>     case VK_IMAGE_LAYOUT_TRANSFER_DST_<wbr>OPTIMAL:<br>
>     case VK_IMAGE_LAYOUT_TRANSFER_SRC_<wbr>OPTIMAL:<br>
> -      return ISL_AUX_USAGE_NONE;<br>
> +      if (aspect == VK_IMAGE_ASPECT_DEPTH_BIT) {<br>
> +         /* This buffer could be a depth buffer used in a transfer operation.<br>
> +          * BLORP currently doesn't use HiZ for transfer operations so we must<br>
> +          * use the main buffer for this layout. TODO: Enable HiZ in BLORP.<br>
> +          */<br>
> +         assert(image->planes[plane].<wbr>aux_usage == ISL_AUX_USAGE_HIZ);<br>
> +         return ISL_AUX_USAGE_NONE;<br>
> +      } else {<br>
> +         assert(image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_<wbr>ANV);<br>
> +         return image->planes[plane].aux_<wbr>usage;<br>
> +      }<br>
><br>
><br>
>     /* Sampling Layouts */<br>
>     case VK_IMAGE_LAYOUT_DEPTH_STENCIL_<wbr>READ_ONLY_OPTIMAL:<br>
> +   case VK_IMAGE_LAYOUT_DEPTH_READ_<wbr>ONLY_STENCIL_ATTACHMENT_<wbr>OPTIMAL_KHR:<br>
>        assert((image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_<wbr>ANV) == 0);<br>
>        /* Fall-through */<br>
>     case VK_IMAGE_LAYOUT_SHADER_READ_<wbr>ONLY_OPTIMAL:<br>
> -   case VK_IMAGE_LAYOUT_DEPTH_READ_<wbr>ONLY_STENCIL_ATTACHMENT_<wbr>OPTIMAL_KHR:<br>
> -      assert(aspect == VK_IMAGE_ASPECT_DEPTH_BIT);<br>
> -      if (anv_can_sample_with_hiz(<wbr>devinfo, image))<br>
> -         return ISL_AUX_USAGE_HIZ;<br>
> -      else<br>
> -         return ISL_AUX_USAGE_NONE;<br>
> +      if (aspect == VK_IMAGE_ASPECT_DEPTH_BIT) {<br>
> +         if (anv_can_sample_with_hiz(<wbr>devinfo, image))<br>
> +            return ISL_AUX_USAGE_HIZ;<br>
> +         else<br>
> +            return ISL_AUX_USAGE_NONE;<br>
> +      } else {<br>
> +         return image->planes[plane].aux_<wbr>usage;<br>
> +      }<br>
> +<br>
><br>
>     case VK_IMAGE_LAYOUT_PRESENT_SRC_<wbr>KHR:<br>
>        assert(image->aspects == VK_IMAGE_ASPECT_COLOR_BIT);<br>
> @@ -845,8 +849,14 @@ anv_layout_to_aux_usage(const struct gen_device_info * const devinfo,<br>
><br>
>     /* Rendering Layouts */<br>
>     case VK_IMAGE_LAYOUT_COLOR_<wbr>ATTACHMENT_OPTIMAL:<br>
> -      assert(image->aspects == VK_IMAGE_ASPECT_COLOR_BIT);<br>
> -      unreachable("Color images are not yet supported.");<br>
> +      assert(aspect & VK_IMAGE_ASPECT_ANY_COLOR_BIT_<wbr>ANV);<br>
> +      if (image->planes[plane].aux_<wbr>usage == ISL_AUX_USAGE_NONE) {<br>
> +         assert(image->samples == 1);<br>
> +         return ISL_AUX_USAGE_CCS_D;<br>
<br>
</div></div>Just checking that I understand what is going on. Earlier in this function<br>
there is early return for "image->planes[plane].aux_<wbr>surface.isl.size == 0".<br>
That means that we end up here only if there is auxiliary. Moreover if CCS_E<br>
should be used then image->planes[plane].aux_usage is set already?<span class=""><br></span></blockquote><div><br></div><div>Yes and no.  Yes, we only get here if we actually have an aux surface.  For color images, aux_usage is the "default" aux_usage.  Specifically, it's CCS_E for images where we can enable proper compression and NONE when we cannot.  It's a bit of an artifact of history and we should probably change it at some point.  For aux_usage == NONE, we can still enable CCS_D for color attachments and we do a full resolve when we transition from COLOR_ATTACHMENT_OPTIMAL to basically any other layout.</div><div><br></div><div>We could also enable CCS_E if we wanted in certain cases, but it's not clear that doing so would actually be faster since a full resolve of a CCS_E image can actually be more expensive than a full resolve of CCS_D.  (For CCS_D the hardware can just ignore any blocks that aren't clear whereas a full resolve with CCS_E will touch almost every pixel.)<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
> +      } else {<br>
> +         assert(image->planes[plane].<wbr>aux_usage != ISL_AUX_USAGE_CCS_D);<br>
> +         return image->planes[plane].aux_<wbr>usage;<br>
> +      }<br>
><br>
>     case VK_IMAGE_LAYOUT_DEPTH_STENCIL_<wbr>ATTACHMENT_OPTIMAL:<br>
>     case VK_IMAGE_LAYOUT_DEPTH_<wbr>ATTACHMENT_STENCIL_READ_ONLY_<wbr>OPTIMAL_KHR:<br>
> --<br>
> 2.5.0.400.gff86faf<br>
><br>
</span>> ______________________________<wbr>_________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</blockquote></div><br></div></div>