[Mesa-dev] [Nouveau] [PATCH mesa 2/4] nv30: Implement color resolve for msaa

Ilia Mirkin imirkin at alum.mit.edu
Thu Sep 3 10:29:13 PDT 2015


On Thu, Sep 3, 2015 at 7:25 AM, Hans de Goede <hdegoede at redhat.com> wrote:
> Note this is not ideal. Since the sifm can only do source sizes upto
> 1024x1024 we end up using the blitter on nv4x, which is not that fast.

Moral of the story: don't do use nv3x/nv4x :)

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Cc: "10.6 11.0" <mesa-stable at lists.freedesktop.org>

>
> And on nv3x we end up using the cpu which is really slow.
>
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
>  src/gallium/drivers/nouveau/nv30/nv30_miptree.c  | 19 ++++++++-----------
>  src/gallium/drivers/nouveau/nv30/nv30_resource.h |  3 ---
>  2 files changed, 8 insertions(+), 14 deletions(-)
>
> diff --git a/src/gallium/drivers/nouveau/nv30/nv30_miptree.c b/src/gallium/drivers/nouveau/nv30/nv30_miptree.c
> index 2276347..76bb8b8 100644
> --- a/src/gallium/drivers/nouveau/nv30/nv30_miptree.c
> +++ b/src/gallium/drivers/nouveau/nv30/nv30_miptree.c
> @@ -145,21 +145,18 @@ nv30_resource_copy_region(struct pipe_context *pipe,
>     nv30_transfer_rect(nv30, NEAREST, &src, &dst);
>  }
>
> -void
> -nv30_resource_resolve(struct pipe_context *pipe,
> -                      const struct pipe_resolve_info *info)
> +static void
> +nv30_resource_resolve(struct nv30_context *nv30,
> +                      const struct pipe_blit_info *info)
>  {
> -#if 0
> -   struct nv30_context *nv30 = nv30_context(pipe);
>     struct nv30_rect src, dst;
>
> -   define_rect(info->src.res, 0, 0, info->src.x0, info->src.y0,
> -               info->src.x1 - info->src.x0, info->src.y1 - info->src.y0, &src);
> -   define_rect(info->dst.res, info->dst.level, 0, info->dst.x0, info->dst.y0,
> -               info->dst.x1 - info->dst.x0, info->dst.y1 - info->dst.y0, &dst);
> +   define_rect(info->src.resource, 0, info->src.box.z, info->src.box.x,
> +      info->src.box.y, info->src.box.width, info->src.box.height, &src);
> +   define_rect(info->dst.resource, 0, info->dst.box.z, info->dst.box.x,
> +      info->dst.box.y, info->dst.box.width, info->dst.box.height, &dst);
>
>     nv30_transfer_rect(nv30, BILINEAR, &src, &dst);
> -#endif
>  }
>
>  void
> @@ -173,7 +170,7 @@ nv30_blit(struct pipe_context *pipe,
>         info.dst.resource->nr_samples <= 1 &&
>         !util_format_is_depth_or_stencil(info.src.resource->format) &&
>         !util_format_is_pure_integer(info.src.resource->format)) {
> -      debug_printf("nv30: color resolve unimplemented\n");
> +      nv30_resource_resolve(nv30, blit_info);
>        return;
>     }
>
> diff --git a/src/gallium/drivers/nouveau/nv30/nv30_resource.h b/src/gallium/drivers/nouveau/nv30/nv30_resource.h
> index 8dac779..20d86b6 100644
> --- a/src/gallium/drivers/nouveau/nv30/nv30_resource.h
> +++ b/src/gallium/drivers/nouveau/nv30/nv30_resource.h
> @@ -66,9 +66,6 @@ nv30_resource_copy_region(struct pipe_context *pipe,
>                            const struct pipe_box *src_box);
>
>  void
> -nv30_resource_resolve(struct pipe_context *, const struct pipe_resolve_info *);
> -
> -void
>  nv30_blit(struct pipe_context *pipe,
>            const struct pipe_blit_info *blit_info);
>
> --
> 2.4.3
>
> _______________________________________________
> Nouveau mailing list
> Nouveau at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/nouveau


More information about the mesa-dev mailing list