[Mesa-dev] [PATCH 15/22] anv: Disable HiZ for input attachments

Jason Ekstrand jason at jlekstrand.net
Thu Jan 12 04:15:35 UTC 2017


On Wed, Jan 11, 2017 at 8:05 PM, Jason Ekstrand <jason at jlekstrand.net>
wrote:

> On Wed, Jan 11, 2017 at 5:55 PM, Nanley Chery <nanleychery at gmail.com>
> wrote:
>
>> Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
>> ---
>>  src/intel/vulkan/anv_image.c       | 17 +++++++++++++----
>>  src/intel/vulkan/genX_cmd_buffer.c | 10 ++++------
>>  2 files changed, 17 insertions(+), 10 deletions(-)
>>
>> diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
>> index d821629191..f8a21c2982 100644
>> --- a/src/intel/vulkan/anv_image.c
>> +++ b/src/intel/vulkan/anv_image.c
>> @@ -182,6 +182,14 @@ make_surface(const struct anv_device *dev,
>>         */
>>        if (!(image->usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT))
>> {
>>           /* It will never be used as an attachment, HiZ is pointless. */
>> +      } else if (image->usage & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT) {
>> +         /* It will never have a layout of
>> +          * VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, so HiZ is
>> +          * currently pointless. If transfer operations learn to use the
>> HiZ
>> +          * buffer, we can enable HiZ for VK_IMAGE_LAYOUT_GENERAL and
>> support
>> +          * input attachments.
>> +          */
>>
>
> From the 1.0.37 spec:
>
> "An attachment used as an input attachment and depth/stencil attachment
> must be in either VK_IMAGE_LAYOUT_GENERAL or
> VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL."
>
> So it can happen.  Since gen8 can texture from HiZ, this shouldn't be a
> problem.  I think we'll need this for gen7 though.
>
>
>> +         anv_finishme("Implement HiZ for input attachments");
>>        } else if (!env_var_as_boolean("INTEL_VK_HIZ", dev->info.gen >=
>> 8)) {
>>           anv_finishme("Implement gen7 HiZ");
>>        } else if (vk_info->mipLevels > 1) {
>> @@ -529,14 +537,15 @@ anv_CreateImageView(VkDevice _device,
>>     if (surf_usage == ISL_AUX_USAGE_HIZ)
>>        surf_usage = ISL_AUX_USAGE_NONE;
>>
>> -   /* Input attachment surfaces for color or depth are allocated and
>> filled
>> +   /* Input attachment surfaces for color are allocated and filled
>>      * out at BeginRenderPass time because they need compression
>> information.
>> -    * Stencil image do not support compression so we just use the texture
>> -    * surface from the image view.
>> +    * Compression is not yet enabled for depth textures and stencil
>> doesn't
>> +    * allow compression so we can just use the texture surface state
>> from the
>> +    * view.
>>      */
>>     if (image->usage & VK_IMAGE_USAGE_SAMPLED_BIT ||
>>         (image->usage & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT &&
>> -        (iview->aspect_mask & VK_IMAGE_ASPECT_STENCIL_BIT))) {
>> +        !(iview->aspect_mask & VK_IMAGE_ASPECT_COLOR_BIT))) {
>>        iview->sampler_surface_state = alloc_surface_state(device);
>>
>>        struct isl_view view = iview->isl;
>> diff --git a/src/intel/vulkan/genX_cmd_buffer.c
>> b/src/intel/vulkan/genX_cmd_buffer.c
>> index baa932e517..1793c4df26 100644
>> --- a/src/intel/vulkan/genX_cmd_buffer.c
>> +++ b/src/intel/vulkan/genX_cmd_buffer.c
>> @@ -303,11 +303,11 @@ need_input_attachment_state(const struct
>> anv_render_pass_attachment *att)
>>     if (!(att->usage & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT))
>>        return false;
>>
>> -   /* We only allocate input attachment states for color and depth
>> surfaces.
>> -    * Stencil doesn't allow compression so we can just use the texture
>> surface
>> -    * state from the view
>> +   /* We only allocate input attachment states for color surfaces.
>> Compression
>> +    * is not yet enabled for depth textures and stencil doesn't allow
>> +    * compression so we can just use the texture surface state from the
>> view.
>>      */
>> -   return vk_format_is_color(att->format) ||
>> vk_format_has_depth(att->format);
>> +   return vk_format_is_color(att->format);
>>  }
>>
>>  static enum isl_aux_usage
>> @@ -518,8 +518,6 @@ genX(cmd_buffer_setup_attachments)(struct
>> anv_cmd_buffer *cmd_buffer,
>>              const struct isl_surf *surf;
>>              if (att_aspects == VK_IMAGE_ASPECT_COLOR_BIT) {
>>                 surf = &iview->image->color_surface.isl;
>> -            } else {
>> -               surf = &iview->image->depth_surface.isl;
>>              }
>>
>
I think we can just drop conditional all together.


>
>>              struct isl_view view = iview->isl;
>> --
>> 2.11.0
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170111/a6952cb3/attachment-0001.html>


More information about the mesa-dev mailing list