Ilia Mirkin
2013-Dec-07 04:43 UTC
[Nouveau] [PATCH] nv50: enable H.264 for NV98+ (VP3, VP4.0)
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). 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
Martin Peres
2013-Dec-07 13:11 UTC
[Nouveau] [PATCH] nv50: enable MPEG-4 for NVA3+ (VP4.0)
From: Martin Peres <martin.peres at labri.fr> This patch is a follow-up from Ilia Mirkin's enable H.264 patch which solves the problem that prevented MPEG-4 videos to play correctly. Tested on an nva3. Signed-off-by: Martin Peres <martin.peres at labri.fr> Tested-by: Martin Peres <martin.peres at labri.fr> Cc: "10.0" <mesa-stable at lists.freedesktop.org> --- src/gallium/drivers/nouveau/nouveau_vp3_video.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/gallium/drivers/nouveau/nouveau_vp3_video.c b/src/gallium/drivers/nouveau/nouveau_vp3_video.c index 2f4196c..0843b78 100644 --- a/src/gallium/drivers/nouveau/nouveau_vp3_video.c +++ b/src/gallium/drivers/nouveau/nouveau_vp3_video.c @@ -362,11 +362,6 @@ 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, 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_MPEG4_AVC; /* In the general case, this should work, once the pre-nvc0 problems are * resolved. */ return profile >= PIPE_VIDEO_PROFILE_MPEG1 && ( -- 1.8.4.2
On Sat, Dec 7, 2013 at 8:11 AM, Martin Peres <martin.peres at free.fr> wrote:> From: Martin Peres <martin.peres at labri.fr> > > This patch is a follow-up from Ilia Mirkin's enable H.264 patch which > solves the problem that prevented MPEG-4 videos to play correctly. > > Tested on an nva3.I might reword this as """ VP3/VP4 now work on all the codecs they are supposed to, remove old restriction. Tested on NVA3 """ Or something like that...> Signed-off-by: Martin Peres <martin.peres at labri.fr> > Tested-by: Martin Peres <martin.peres at labri.fr> > Cc: "10.0" <mesa-stable at lists.freedesktop.org> > --- > src/gallium/drivers/nouveau/nouveau_vp3_video.c | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/src/gallium/drivers/nouveau/nouveau_vp3_video.c b/src/gallium/drivers/nouveau/nouveau_vp3_video.c > index 2f4196c..0843b78 100644 > --- a/src/gallium/drivers/nouveau/nouveau_vp3_video.c > +++ b/src/gallium/drivers/nouveau/nouveau_vp3_video.c > @@ -362,11 +362,6 @@ 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, 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_MPEG4_AVC; > /* In the general case, this should work, once the pre-nvc0 problems are > * resolved. */Update this comment to reflect reality. Or just remove it. With that change, Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu> Or I can fold this into my h264 change if you don't want to send a v2, up to you.> return profile >= PIPE_VIDEO_PROFILE_MPEG1 && ( > -- > 1.8.4.2 > > _______________________________________________ > Nouveau mailing list > Nouveau at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/nouveau
Ilia Mirkin
2013-Dec-08 05:31 UTC
[Nouveau] [PATCH] nv50: enable H.264 for NV98+ (VP3, VP4.0)
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 >
Reasonably Related Threads
- [PATCH] nv50: enable MPEG-4 for NVA3+ (VP4.0)
- [PATCH] nv50: enable H.264 for NV98+ (VP3, VP4.0)
- [PATCH 1/3] nv50: enable h264 and mpeg4 for nv98+ (vp3, vp4.0)
- [PATCH] nouveau/video: make sure that firmware is present when checking caps
- [PATCH 02/11] drm/nv50/pm: Fix last timing register in NVA3+, fix typo in NV50