[Nouveau] [PATCH] nv50: enable H.264 for NV98+ (VP3, VP4.0)

Ilia Mirkin imirkin at alum.mit.edu
Sat Dec 7 21:31:16 PST 2013


On Fri, Dec 6, 2013 at 11:43 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> Create the ref_bo without any storage type flags set for now. This can
> probably be split up somehow later on, but this seems to work.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: "10.0" <mesa-stable at lists.freedesktop.org>
> ---
>
> Would be great if someone could see if this also makes MPEG4 work on NVA3+. In
> order to do that, remove the if (chipset < 0xc0) conditional entirely from
> nouveau_vp3_video.c (which I modify in this patch).

Martin Peres did that, and it seems to work. I'm going to send an
updated series.

>
>  src/gallium/drivers/nouveau/nouveau_vp3_video.c | 5 +++--
>  src/gallium/drivers/nouveau/nv50/nv98_video.c   | 2 +-
>  2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/drivers/nouveau/nouveau_vp3_video.c b/src/gallium/drivers/nouveau/nouveau_vp3_video.c
> index 07ce016..2f4196c 100644
> --- a/src/gallium/drivers/nouveau/nouveau_vp3_video.c
> +++ b/src/gallium/drivers/nouveau/nouveau_vp3_video.c
> @@ -362,10 +362,11 @@ nouveau_vp3_screen_get_video_param(struct pipe_screen *pscreen,
>     enum pipe_video_format codec = u_reduce_video_profile(profile);
>     switch (param) {
>     case PIPE_VIDEO_CAP_SUPPORTED:
> -      /* For now, h264 and mpeg4 don't work on pre-nvc0. */
> +      /* For now, mpeg4 doesn't work on pre-nvc0. */
>        if (chipset < 0xc0)
>           return codec == PIPE_VIDEO_FORMAT_MPEG12 ||
> -            codec == PIPE_VIDEO_FORMAT_VC1;
> +            codec == PIPE_VIDEO_FORMAT_VC1 ||
> +            codec == PIPE_VIDEO_FORMAT_MPEG4_AVC;
>        /* In the general case, this should work, once the pre-nvc0 problems are
>         * resolved. */
>        return profile >= PIPE_VIDEO_PROFILE_MPEG1 && (
> diff --git a/src/gallium/drivers/nouveau/nv50/nv98_video.c b/src/gallium/drivers/nouveau/nv50/nv98_video.c
> index 069481d..f748c81 100644
> --- a/src/gallium/drivers/nouveau/nv50/nv98_video.c
> +++ b/src/gallium/drivers/nouveau/nv50/nv98_video.c
> @@ -200,7 +200,7 @@ nv98_create_decoder(struct pipe_context *context,
>     dec->ref_stride = mb(templ->width)*16 * (mb_half(templ->height)*32 + nouveau_vp3_video_align(templ->height)/2);
>     ret = nouveau_bo_new(screen->device, NOUVEAU_BO_VRAM, 0,
>                          dec->ref_stride * (templ->max_references+2) + tmp_size,
> -                        &cfg, &dec->ref_bo);
> +                        NULL, &dec->ref_bo);
>     if (ret)
>        goto fail;
>
> --
> 1.8.3.2
>


More information about the Nouveau mailing list