radeon/uvd: implement HEVC support
[mesa.git] / src / gallium / drivers / radeon / radeon_video.c
index 5a8d18762d90d8dc63bde20bc7ee3f1862dc0b70..3a1834b948f812d9b7e0324d4aa2b61d7baead13 100644 (file)
@@ -264,6 +264,10 @@ int rvid_get_video_param(struct pipe_screen *screen,
                        /* FIXME: VC-1 simple/main profile is broken */
                        return profile == PIPE_VIDEO_PROFILE_VC1_ADVANCED &&
                               entrypoint != PIPE_VIDEO_ENTRYPOINT_ENCODE;
+               case PIPE_VIDEO_FORMAT_HEVC:
+                       /* Carrizo only supports HEVC Main */
+                       return rscreen->family >= CHIP_CARRIZO &&
+                                  profile == PIPE_VIDEO_PROFILE_HEVC_MAIN;
                default:
                        return false;
                }
@@ -276,8 +280,12 @@ int rvid_get_video_param(struct pipe_screen *screen,
        case PIPE_VIDEO_CAP_PREFERED_FORMAT:
                return PIPE_FORMAT_NV12;
        case PIPE_VIDEO_CAP_PREFERS_INTERLACED:
+               if (u_reduce_video_profile(profile) == PIPE_VIDEO_FORMAT_HEVC)
+                       return false; //The hardware doesn't support interlaced HEVC.
                return true;
        case PIPE_VIDEO_CAP_SUPPORTS_INTERLACED:
+               if (u_reduce_video_profile(profile) == PIPE_VIDEO_FORMAT_HEVC)
+                       return false; //The hardware doesn't support interlaced HEVC.
                return true;
        case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
                return true;
@@ -302,6 +310,8 @@ int rvid_get_video_param(struct pipe_screen *screen,
                case PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN:
                case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH:
                        return 41;
+               case PIPE_VIDEO_PROFILE_HEVC_MAIN:
+                       return 186;
                default:
                        return 0;
                }