Commit 63f85159 authored by Gwenole Beauchesne's avatar Gwenole Beauchesne Committed by Xiang, Haihao

[G45] Fix check for VC-1 decoding support

parent b9c7e24f
...@@ -48,6 +48,8 @@ ...@@ -48,6 +48,8 @@
#define IMAGE_ID_OFFSET 0x0a000000 #define IMAGE_ID_OFFSET 0x0a000000
#define SUBPIC_ID_OFFSET 0x10000000 #define SUBPIC_ID_OFFSET 0x10000000
#define HAS_VC1(ctx) (IS_GEN6((ctx)->intel.device_id))
enum { enum {
I965_SURFACETYPE_RGBA = 1, I965_SURFACETYPE_RGBA = 1,
I965_SURFACETYPE_YUV, I965_SURFACETYPE_YUV,
...@@ -119,7 +121,7 @@ i965_QueryConfigProfiles(VADriverContextP ctx, ...@@ -119,7 +121,7 @@ i965_QueryConfigProfiles(VADriverContextP ctx,
VAProfile *profile_list, /* out */ VAProfile *profile_list, /* out */
int *num_profiles) /* out */ int *num_profiles) /* out */
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data * const i965 = i965_driver_data(ctx);
int i = 0; int i = 0;
profile_list[i++] = VAProfileMPEG2Simple; profile_list[i++] = VAProfileMPEG2Simple;
...@@ -128,7 +130,7 @@ i965_QueryConfigProfiles(VADriverContextP ctx, ...@@ -128,7 +130,7 @@ i965_QueryConfigProfiles(VADriverContextP ctx,
profile_list[i++] = VAProfileH264Main; profile_list[i++] = VAProfileH264Main;
profile_list[i++] = VAProfileH264High; profile_list[i++] = VAProfileH264High;
if (IS_GEN6(i965->intel.device_id)) { if (HAS_VC1(i965)) {
profile_list[i++] = VAProfileVC1Simple; profile_list[i++] = VAProfileVC1Simple;
profile_list[i++] = VAProfileVC1Main; profile_list[i++] = VAProfileVC1Main;
profile_list[i++] = VAProfileVC1Advanced; profile_list[i++] = VAProfileVC1Advanced;
...@@ -147,39 +149,36 @@ i965_QueryConfigEntrypoints(VADriverContextP ctx, ...@@ -147,39 +149,36 @@ i965_QueryConfigEntrypoints(VADriverContextP ctx,
VAEntrypoint *entrypoint_list, /* out */ VAEntrypoint *entrypoint_list, /* out */
int *num_entrypoints) /* out */ int *num_entrypoints) /* out */
{ {
VAStatus vaStatus = VA_STATUS_SUCCESS; struct i965_driver_data * const i965 = i965_driver_data(ctx);
int n = 0;
switch (profile) { switch (profile) {
case VAProfileMPEG2Simple: case VAProfileMPEG2Simple:
case VAProfileMPEG2Main: case VAProfileMPEG2Main:
*num_entrypoints = 1; entrypoint_list[n++] = VAEntrypointVLD;
entrypoint_list[0] = VAEntrypointVLD;
break; break;
case VAProfileH264Baseline: case VAProfileH264Baseline:
case VAProfileH264Main: case VAProfileH264Main:
case VAProfileH264High: case VAProfileH264High:
*num_entrypoints = 1; entrypoint_list[n++] = VAEntrypointVLD;
entrypoint_list[0] = VAEntrypointVLD;
break; break;
case VAProfileVC1Simple: case VAProfileVC1Simple:
case VAProfileVC1Main: case VAProfileVC1Main:
case VAProfileVC1Advanced: case VAProfileVC1Advanced:
*num_entrypoints = 1; if (HAS_VC1(i965))
entrypoint_list[0] = VAEntrypointVLD; entrypoint_list[n++] = VAEntrypointVLD;
break; break;
default: default:
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
*num_entrypoints = 0;
break; break;
} }
/* If the assert fails then I965_MAX_ENTRYPOINTS needs to be bigger */ /* If the assert fails then I965_MAX_ENTRYPOINTS needs to be bigger */
assert(*num_entrypoints <= I965_MAX_ENTRYPOINTS); assert(n <= I965_MAX_ENTRYPOINTS);
*num_entrypoints = n;
return vaStatus; return n > 0 ? VA_STATUS_SUCCESS : VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
} }
VAStatus VAStatus
...@@ -248,7 +247,7 @@ i965_CreateConfig(VADriverContextP ctx, ...@@ -248,7 +247,7 @@ i965_CreateConfig(VADriverContextP ctx,
int num_attribs, int num_attribs,
VAConfigID *config_id) /* out */ VAConfigID *config_id) /* out */
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data * const i965 = i965_driver_data(ctx);
struct object_config *obj_config; struct object_config *obj_config;
int configID; int configID;
int i; int i;
...@@ -279,7 +278,7 @@ i965_CreateConfig(VADriverContextP ctx, ...@@ -279,7 +278,7 @@ i965_CreateConfig(VADriverContextP ctx,
case VAProfileVC1Simple: case VAProfileVC1Simple:
case VAProfileVC1Main: case VAProfileVC1Main:
case VAProfileVC1Advanced: case VAProfileVC1Advanced:
if (VAEntrypointVLD == entrypoint) { if (HAS_VC1(i965) && VAEntrypointVLD == entrypoint) {
vaStatus = VA_STATUS_SUCCESS; vaStatus = VA_STATUS_SUCCESS;
} else { } else {
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT; vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment