[Mesa-dev] [PATCH 05/13] anv: Set anv_surface::offset earlier

Jason Ekstrand jason at jlekstrand.net
Tue Mar 7 22:49:36 UTC 2017


On Mon, Mar 6, 2017 at 12:40 PM, Chad Versace <chadversary at chromium.org>
wrote:

> Set anv_surface::offset *before* calling add_surface().
>
> No intended change in behavior. This patch prepares for supporting
> user-provided surface offsets, a feature required for
> VK_MESAX_external_image_dma_buf.
> ---
>  src/intel/vulkan/anv_image.c | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
> index 18ba53c4e6d..7798f325082 100644
> --- a/src/intel/vulkan/anv_image.c
> +++ b/src/intel/vulkan/anv_image.c
> @@ -122,12 +122,17 @@ choose_isl_tiling_flags(const struct
> anv_image_create_info *anv_info)
>  }
>
>  static void
> -add_surface(struct anv_image *image, struct anv_surface *surf)
> +set_min_surface_offset(const struct anv_image *image, struct anv_surface
> *surf)
>  {
>     assert(surf->isl.size > 0); /* isl surface must be initialized */
> -
>     surf->offset = align_u32(image->size, surf->isl.alignment);
> -   image->size = surf->offset + surf->isl.size;
> +}
> +
> +static void
> +add_surface(struct anv_image *image, const struct anv_surface *surf)
> +{
> +   assert(surf->isl.size > 0); /* isl surface must be initialized */
> +   image->size = MAX2(image->size, surf->offset + surf->isl.size);
>     image->alignment = MAX2(image->alignment, surf->isl.alignment);
>  }
>
> @@ -161,6 +166,7 @@ make_hiz_surface_maybe(const struct anv_device *dev,
>        if (!ok)
>           return;
>
> +      set_min_surface_offset(image, &image->aux_surface);
>        add_surface(image, &image->aux_surface);
>

Another option would be to make add_surface take an offset (or maybe
min_offset?) and then it would just be one call.  I'll keep reading.


>        image->aux_usage = ISL_AUX_USAGE_HIZ;
>     }
> @@ -183,6 +189,7 @@ make_ccs_surface_maybe(const struct anv_device *dev,
>     if (!ok)
>        return;
>
> +   set_min_surface_offset(image, &image->aux_surface);
>     add_surface(image, &image->aux_surface);
>
>     /* For images created without MUTABLE_FORMAT_BIT set, we know that
> they will
> @@ -214,6 +221,7 @@ make_mcs_surface_maybe(const struct anv_device *dev,
>     if (!ok)
>        return;
>
> +   set_min_surface_offset(image, &image->aux_surface);
>     add_surface(image, &image->aux_surface);
>     image->aux_usage = ISL_AUX_USAGE_MCS;
>  }
> @@ -283,6 +291,7 @@ make_main_surface(const struct anv_device *dev,
>      */
>     assert(ok);
>
> +   set_min_surface_offset(image, anv_surf);
>     add_surface(image, anv_surf);
>  }
>
> --
> 2.12.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/20170307/2800558e/attachment.html>


More information about the mesa-dev mailing list