From 68d0d264efc02dffc08a8b6afc296b8bc53efeee Mon Sep 17 00:00:00 2001 From: "Xiang, Haihao" Date: Thu, 10 Mar 2011 13:02:36 +0800 Subject: [PATCH] i965_drv_video: don't support MPEG2/VC1/H264 without BSD support on SandyBridge. Signed-off-by: Xiang, Haihao --- i965_drv_video/i965_drv_video.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c index 0c8c1be..6a44403 100644 --- a/i965_drv_video/i965_drv_video.c +++ b/i965_drv_video/i965_drv_video.c @@ -49,13 +49,15 @@ #define IMAGE_ID_OFFSET 0x0a000000 #define SUBPIC_ID_OFFSET 0x10000000 -#define HAS_VC1(ctx) (IS_GEN6((ctx)->intel.device_id)) +#define HAS_MPEG2(ctx) (IS_G4X((ctx)->intel.device_id) || \ + IS_IRONLAKE((ctx)->intel.device_id) || \ + (IS_GEN6((ctx)->intel.device_id) && (ctx)->intel.has_bsd)) -/* Defined to 1 if GPU supports H.264 decoding */ -/* XXX: drop IS_IRONLAKE(ctx) check once G4X support is available */ -#define HAS_H264(ctx) (IS_GEN6((ctx)->intel.device_id) || \ - (IS_IRONLAKE((ctx)->intel.device_id) && \ - (ctx)->intel.has_bsd)) +#define HAS_H264(ctx) ((IS_GEN6((ctx)->intel.device_id) || \ + IS_IRONLAKE((ctx)->intel.device_id)) && \ + (ctx)->intel.has_bsd) + +#define HAS_VC1(ctx) (IS_GEN6((ctx)->intel.device_id) && (ctx)->intel.has_bsd) #define HAS_TILED_SURFACE(ctx) (IS_GEN6((ctx)->intel.device_id)) @@ -133,8 +135,10 @@ i965_QueryConfigProfiles(VADriverContextP ctx, struct i965_driver_data * const i965 = i965_driver_data(ctx); int i = 0; - profile_list[i++] = VAProfileMPEG2Simple; - profile_list[i++] = VAProfileMPEG2Main; + if (HAS_MPEG2(i965)) { + profile_list[i++] = VAProfileMPEG2Simple; + profile_list[i++] = VAProfileMPEG2Main; + } if (HAS_H264(i965)) { profile_list[i++] = VAProfileH264Baseline; @@ -167,7 +171,8 @@ i965_QueryConfigEntrypoints(VADriverContextP ctx, switch (profile) { case VAProfileMPEG2Simple: case VAProfileMPEG2Main: - entrypoint_list[n++] = VAEntrypointVLD; + if (HAS_MPEG2(i965)) + entrypoint_list[n++] = VAEntrypointVLD; break; case VAProfileH264Baseline: @@ -270,7 +275,7 @@ i965_CreateConfig(VADriverContextP ctx, switch (profile) { case VAProfileMPEG2Simple: case VAProfileMPEG2Main: - if (VAEntrypointVLD == entrypoint) { + if (HAS_MPEG2(i965) && VAEntrypointVLD == entrypoint) { vaStatus = VA_STATUS_SUCCESS; } else { vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT; -- 2.11.0