[Mesa-dev] [PATCH] gallium/vl: use compute preference for all multimedia, not just blit

Marek Olšák maraeo at gmail.com
Tue Aug 20 17:01:31 UTC 2019


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Sat, Aug 17, 2019 at 12:17 PM Ilia Mirkin <imirkin at alum.mit.edu> wrote:

> The compute paths in vl are a bit AMD-specific. For example, they (on
> nouveau), try to use a BGRX8 image format, which is not supported.
> Fixing all this is probably possible, but since the compute paths aren't
> in any way better, it's difficult to care.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111213
> Fixes: 9364d66cb7 (gallium/auxiliary/vl: Add video compositor compute
> shader render)
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>  src/gallium/auxiliary/util/u_screen.c    | 2 +-
>  src/gallium/auxiliary/vl/vl_compositor.c | 2 +-
>  src/gallium/docs/source/screen.rst       | 4 ++--
>  src/gallium/drivers/radeonsi/si_get.c    | 2 +-
>  src/gallium/include/pipe/p_defines.h     | 2 +-
>  src/gallium/state_trackers/va/postproc.c | 2 +-
>  6 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/src/gallium/auxiliary/util/u_screen.c
> b/src/gallium/auxiliary/util/u_screen.c
> index 0b4bb067d6d..88f4945e755 100644
> --- a/src/gallium/auxiliary/util/u_screen.c
> +++ b/src/gallium/auxiliary/util/u_screen.c
> @@ -331,7 +331,7 @@ u_pipe_screen_get_param_defaults(struct pipe_screen
> *pscreen,
>     case PIPE_CAP_TGSI_ATOMFADD:
>     case PIPE_CAP_TGSI_SKIP_SHRINK_IO_ARRAYS:
>     case PIPE_CAP_IMAGE_LOAD_FORMATTED:
> -   case PIPE_CAP_PREFER_COMPUTE_BLIT_FOR_MULTIMEDIA:
> +   case PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA:
>     case PIPE_CAP_FRAGMENT_SHADER_INTERLOCK:
>     case PIPE_CAP_CS_DERIVED_SYSTEM_VALUES_SUPPORTED:
>     case PIPE_CAP_ATOMIC_FLOAT_MINMAX:
> diff --git a/src/gallium/auxiliary/vl/vl_compositor.c
> b/src/gallium/auxiliary/vl/vl_compositor.c
> index 04808e80d84..a381af108b3 100644
> --- a/src/gallium/auxiliary/vl/vl_compositor.c
> +++ b/src/gallium/auxiliary/vl/vl_compositor.c
> @@ -764,7 +764,7 @@ vl_compositor_init(struct vl_compositor *c, struct
> pipe_context *pipe)
>
>     memset(c, 0, sizeof(*c));
>
> -   c->pipe_cs_composit_supported = pipe->screen->get_param(pipe->screen,
> PIPE_CAP_COMPUTE) &&
> +   c->pipe_cs_composit_supported = pipe->screen->get_param(pipe->screen,
> PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA) &&
>              pipe->screen->get_param(pipe->screen,
> PIPE_CAP_TGSI_TEX_TXF_LZ) &&
>              pipe->screen->get_param(pipe->screen, PIPE_CAP_TGSI_DIV);
>
> diff --git a/src/gallium/docs/source/screen.rst
> b/src/gallium/docs/source/screen.rst
> index c033321ec66..d149a2f4c9f 100644
> --- a/src/gallium/docs/source/screen.rst
> +++ b/src/gallium/docs/source/screen.rst
> @@ -528,8 +528,8 @@ The integer capabilities:
>    execution. 0 = throttling is disabled.
>  * ``PIPE_CAP_DMABUF``: Whether Linux DMABUF handles are supported by
>    resource_from_handle and resource_get_handle.
> -* ``PIPE_CAP_PREFER_COMPUTE_BLIT_FOR_MULTIMEDIA``: Whether VDPAU, VAAPI,
> and
> -  OpenMAX should use a compute-based blit instead of pipe_context::blit.
> +* ``PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA``: Whether VDPAU, VAAPI, and
> +  OpenMAX should use a compute-based blit instead of pipe_context::blit
> and compute pipeline for compositing images.
>  * ``PIPE_CAP_FRAGMENT_SHADER_INTERLOCK``: True if fragment shader
> interlock
>    functionality is supported.
>  * ``PIPE_CAP_CS_DERIVED_SYSTEM_VALUES_SUPPORTED``: True if driver handles
> diff --git a/src/gallium/drivers/radeonsi/si_get.c
> b/src/gallium/drivers/radeonsi/si_get.c
> index c9895edafb8..f85a53393aa 100644
> --- a/src/gallium/drivers/radeonsi/si_get.c
> +++ b/src/gallium/drivers/radeonsi/si_get.c
> @@ -156,7 +156,7 @@ static int si_get_param(struct pipe_screen *pscreen,
> enum pipe_cap param)
>         case PIPE_CAP_FBFETCH:
>         case PIPE_CAP_COMPUTE_GRID_INFO_LAST_BLOCK:
>         case PIPE_CAP_IMAGE_LOAD_FORMATTED:
> -       case PIPE_CAP_PREFER_COMPUTE_BLIT_FOR_MULTIMEDIA:
> +       case PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA:
>         case PIPE_CAP_TGSI_DIV:
>                 return 1;
>
> diff --git a/src/gallium/include/pipe/p_defines.h
> b/src/gallium/include/pipe/p_defines.h
> index 0c79cac5cff..808c2b8cfaf 100644
> --- a/src/gallium/include/pipe/p_defines.h
> +++ b/src/gallium/include/pipe/p_defines.h
> @@ -885,7 +885,7 @@ enum pipe_cap
>     PIPE_CAP_IMAGE_LOAD_FORMATTED,
>     PIPE_CAP_MAX_FRAMES_IN_FLIGHT,
>     PIPE_CAP_DMABUF,
> -   PIPE_CAP_PREFER_COMPUTE_BLIT_FOR_MULTIMEDIA,
> +   PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA,
>     PIPE_CAP_FRAGMENT_SHADER_INTERLOCK,
>     PIPE_CAP_FBFETCH_COHERENT,
>     PIPE_CAP_CS_DERIVED_SYSTEM_VALUES_SUPPORTED,
> diff --git a/src/gallium/state_trackers/va/postproc.c
> b/src/gallium/state_trackers/va/postproc.c
> index fbc55b7714b..3431b1b48c7 100644
> --- a/src/gallium/state_trackers/va/postproc.c
> +++ b/src/gallium/state_trackers/va/postproc.c
> @@ -222,7 +222,7 @@ static VAStatus vlVaPostProcBlit(vlVaDriver *drv,
> vlVaContext *context,
>        blit.filter = PIPE_TEX_MIPFILTER_LINEAR;
>
>        if (drv->pipe->screen->get_param(drv->pipe->screen,
> -
>  PIPE_CAP_PREFER_COMPUTE_BLIT_FOR_MULTIMEDIA))
> +
>  PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA))
>           util_compute_blit(drv->pipe, &blit, &context->blit_cs);
>        else
>           drv->pipe->blit(drv->pipe, &blit);
> --
> 2.21.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/20190820/34b9fbea/attachment.html>


More information about the mesa-dev mailing list