Hi,

On 23.09.2015 10:11, Christian König wrote:
> From: Boyuan Zhang <boyuan.zh...@amd.com>
> 
> Signed-off-by: Boyuan Zhang <boyuan.zh...@amd.com>
> Reviewed-by: Christian König <christian.koe...@amd.com>
> ---

Thanks, nice to see this finally getting fixed, and it was a pretty
simple thing after all... well, not quite yet apparently. Sometimes
playback works correctly, sometimes it doesn't and glitches around, on
my CIK (Bonaire) GPU. It seems random, but isn't as bad and
hang-inducing compared to before this was disabled in Mesa. Maybe some
state isn't being set all the time?

I tested these two samples:

> http://samples.ffmpeg.org/asf-wmv/asf_with_chapters.wmv
> http://samples.ffmpeg.org/V-codecs/WVC1/Test_1440x576_WVC1_6Mbps.wmv

I used "mpv --hwdec=vdpau --vo=vdpau" to test this.

Best regards
Grigori

>  src/gallium/drivers/radeon/radeon_uvd.c   | 6 ++++++
>  src/gallium/drivers/radeon/radeon_video.c | 5 +----
>  2 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeon/radeon_uvd.c 
> b/src/gallium/drivers/radeon/radeon_uvd.c
> index 81f3f45..9edb511 100644
> --- a/src/gallium/drivers/radeon/radeon_uvd.c
> +++ b/src/gallium/drivers/radeon/radeon_uvd.c
> @@ -940,6 +940,12 @@ static void ruvd_end_frame(struct pipe_video_codec 
> *decoder,
>       dec->msg->body.decode.width_in_samples = dec->base.width;
>       dec->msg->body.decode.height_in_samples = dec->base.height;
>  
> +     if ((picture->profile == PIPE_VIDEO_PROFILE_VC1_SIMPLE)
> +        || (picture->profile == PIPE_VIDEO_PROFILE_VC1_MAIN)) {
> +             dec->msg->body.decode.width_in_samples = 
> align(dec->msg->body.decode.width_in_samples, 16) / 16;
> +             dec->msg->body.decode.height_in_samples = 
> align(dec->msg->body.decode.height_in_samples, 16) / 16;
> +     }
> +
>       dec->msg->body.decode.dpb_size = dec->dpb.res->buf->size;
>       dec->msg->body.decode.bsd_size = bs_size;
>       dec->msg->body.decode.db_pitch = dec->base.width;
> diff --git a/src/gallium/drivers/radeon/radeon_video.c 
> b/src/gallium/drivers/radeon/radeon_video.c
> index 3a1834b..e6cfdf6 100644
> --- a/src/gallium/drivers/radeon/radeon_video.c
> +++ b/src/gallium/drivers/radeon/radeon_video.c
> @@ -259,11 +259,8 @@ int rvid_get_video_param(struct pipe_screen *screen,
>               case PIPE_VIDEO_FORMAT_MPEG12:
>               case PIPE_VIDEO_FORMAT_MPEG4:
>               case PIPE_VIDEO_FORMAT_MPEG4_AVC:
> -                     return entrypoint != PIPE_VIDEO_ENTRYPOINT_ENCODE;
>               case PIPE_VIDEO_FORMAT_VC1:
> -                     /* FIXME: VC-1 simple/main profile is broken */
> -                     return profile == PIPE_VIDEO_PROFILE_VC1_ADVANCED &&
> -                            entrypoint != PIPE_VIDEO_ENTRYPOINT_ENCODE;
> +                     return entrypoint != PIPE_VIDEO_ENTRYPOINT_ENCODE;
>               case PIPE_VIDEO_FORMAT_HEVC:
>                       /* Carrizo only supports HEVC Main */
>                       return rscreen->family >= CHIP_CARRIZO &&
> 


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to