Shuffle the internal memory type ids by one, and turn them into clean enum values. Also make sure to validate the VA surface memory type early enough.
Signed-off-by: Gwenole Beauchesne <[email protected]> --- src/i965_drv_video.c | 5 +++++ src/i965_drv_video.h | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c index 0b04bd5..799ebad 100644 --- a/src/i965_drv_video.c +++ b/src/i965_drv_video.c @@ -1240,6 +1240,8 @@ i965_CreateSurfaces2( memory_type = I965_SURFACE_MEM_DRM_PRIME; /* drm prime fd */ else if (attrib_list[i].value.value.i == VA_SURFACE_ATTRIB_MEM_TYPE_VA) memory_type = I965_SURFACE_MEM_NATIVE; /* va native memory, to be allocated */ + else + memory_type = 0; } if ((attrib_list[i].type == VASurfaceAttribExternalBufferDescriptor) && @@ -1249,6 +1251,9 @@ i965_CreateSurfaces2( } } + if (!memory_type) + return VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE; + /* support 420 & 422 & RGB32 format, 422 and RGB32 are only used * for post-processing (including color conversion) */ if (VA_RT_FORMAT_YUV420 != format && diff --git a/src/i965_drv_video.h b/src/i965_drv_video.h index 188cecf..c39d53b 100644 --- a/src/i965_drv_video.h +++ b/src/i965_drv_video.h @@ -505,9 +505,11 @@ extern VAStatus i965_CreateSurfaces(VADriverContextP ctx, int num_surfaces, VASurfaceID *surfaces); -#define I965_SURFACE_MEM_NATIVE 0 -#define I965_SURFACE_MEM_GEM_FLINK 1 -#define I965_SURFACE_MEM_DRM_PRIME 2 +enum { + I965_SURFACE_MEM_NATIVE = 1, + I965_SURFACE_MEM_GEM_FLINK, + I965_SURFACE_MEM_DRM_PRIME, +}; void i965_destroy_surface_storage(struct object_surface *obj_surface); -- 1.9.1 _______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
