Previously, P016 was used for the decoding of 10-bit HEVC/H.265 encoded
videos, which worked fine for mpv and ffmpeg. GStreamer specifically looks
for P010, so this patch sets the default buffer type to P010 for HEVC
decoding.
Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3153>
        }
 
        if (pic->base.profile == PIPE_VIDEO_PROFILE_HEVC_MAIN_10) {
-               if (target->buffer_format == PIPE_FORMAT_P016) {
+               if (target->buffer_format == PIPE_FORMAT_P010 ||
+                       target->buffer_format == PIPE_FORMAT_P016) {
                        result.p010_mode = 1;
                        result.msb_mode = 1;
                } else {
 
        }
 
        if (pic->base.profile == PIPE_VIDEO_PROFILE_HEVC_MAIN_10) {
-               if (target->buffer_format == PIPE_FORMAT_P016) {
+               if (target->buffer_format == PIPE_FORMAT_P010 ||
+                   target->buffer_format == PIPE_FORMAT_P016) {
                        result.p010_mode = 1;
                        result.msb_mode = 1;
                } else {
 
        }
 
        if (pic->base.profile == PIPE_VIDEO_PROFILE_HEVC_MAIN_10) {
-               if (target->buffer_format == PIPE_FORMAT_P016) {
+               if (target->buffer_format == PIPE_FORMAT_P010 ||
+                       target->buffer_format == PIPE_FORMAT_P016) {
                        result.p010_mode = 1;
                        result.msb_mode = 1;
                } else {
        result.ref_frame_sign_bias[2] = pic->picture_parameter.pic_fields.alt_ref_frame_sign_bias;
 
        if (pic->base.profile == PIPE_VIDEO_PROFILE_VP9_PROFILE2) {
-               if (target->buffer_format == PIPE_FORMAT_P016) {
+               if (target->buffer_format == PIPE_FORMAT_P010 ||
+                       target->buffer_format == PIPE_FORMAT_P016) {
                        result.p010_mode = 1;
                        result.msb_mode = 1;
                } else {
 
                        return (sscreen->info.family < CHIP_TONGA) ? 1152 : 4096;
                }
        case PIPE_VIDEO_CAP_PREFERED_FORMAT:
-               if (profile == PIPE_VIDEO_PROFILE_HEVC_MAIN_10 ||
-                   profile == PIPE_VIDEO_PROFILE_VP9_PROFILE2)
+               if (profile == PIPE_VIDEO_PROFILE_HEVC_MAIN_10)
+                       return PIPE_FORMAT_P010;
+               else if (profile == PIPE_VIDEO_PROFILE_VP9_PROFILE2)
                        return PIPE_FORMAT_P016;
                else
                        return PIPE_FORMAT_NV12;