Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net>

Wouldn't be a bad idea to do this for all compressed formats.  It doesn't
really matter though since blorp will nuke the format the moment it cones
into blorp_copy anyway.

On Nov 2, 2016 4:56 PM, "Nanley Chery" <nanleych...@gmail.com> wrote:

> Such a surface is not possible on our hardware. Without this change, ISL
> surface creation would fail with the next patch.
>
> Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
> ---
>
> This series requires the following extra patch, seemingly due to the
> recent changes with blorp.
>
>  src/intel/vulkan/anv_blorp.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
>
> diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c
> index 87f242c..0feb5d5 100644
> --- a/src/intel/vulkan/anv_blorp.c
> +++ b/src/intel/vulkan/anv_blorp.c
> @@ -126,6 +126,22 @@ get_blorp_surf_for_anv_buffer(struct anv_device
> *device,
>                                struct blorp_surf *blorp_surf,
>                                struct isl_surf *isl_surf)
>  {
> +   const struct isl_format_layout *fmtl =
> +      isl_format_get_layout(format);
> +
> +   /* ASTC is the only format which doesn't support linear layouts.
> +    * Create an equivalently sized surface with ISL to get around this.
> +    */
> +   if (fmtl->txc == ISL_TXC_ASTC) {
> +      /* Use an equivalently sized format */
> +      format = ISL_FORMAT_R32G32B32A32_UINT;
> +      assert(fmtl->bpb == isl_format_get_layout(format)->bpb);
> +
> +      /* Shrink the dimensions for the new format */
> +      width = DIV_ROUND_UP(width, fmtl->bw);
> +      height = DIV_ROUND_UP(height, fmtl->bh);
> +   }
> +
>     *blorp_surf = (struct blorp_surf) {
>        .surf = isl_surf,
>        .addr = {
> --
> 2.10.2
>
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to