[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