X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fstate_trackers%2Fva%2Fva_private.h;h=130d2dff1a02ecd08f9ca4dd8d7c4fa1387a2492;hb=2825ef3abf29b152b12faef8cd5a373c71b9fbaf;hp=f1023dbf87b138b1e538e138beb37d3b44dc6fab;hpb=5e5d7acc2f93ddad8212b00c845dbd6381ee4119;p=mesa.git diff --git a/src/gallium/state_trackers/va/va_private.h b/src/gallium/state_trackers/va/va_private.h index f1023dbf87b..130d2dff1a0 100644 --- a/src/gallium/state_trackers/va/va_private.h +++ b/src/gallium/state_trackers/va/va_private.h @@ -1,6 +1,7 @@ /************************************************************************** * * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. + * Copyright 2014 Advanced Micro Devices, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -18,7 +19,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -28,135 +29,156 @@ #ifndef VA_PRIVATE_H #define VA_PRIVATE_H +#include + #include #include -#include -#include +#include "pipe/p_video_enums.h" -#define VA_DEBUG(_str,...) debug_printf("[Gallium VA backend]: " _str,__VA_ARGS__) -#define VA_INFO(_str,...) VA_DEBUG("INFO: " _str,__VA_ARGS__) -#define VA_WARNING(_str,...) VA_DEBUG("WARNING: " _str,__VA_ARGS__) -#define VA_ERROR(_str,...) VA_DEBUG("ERROR: " _str,__VA_ARGS__) +#define VL_VA_DRIVER(ctx) ((vlVaDriver *)ctx->pDriverData) +#define VL_VA_PSCREEN(ctx) (VL_VA_DRIVER(ctx)->vscreen->pscreen) -#define VA_MAX_IMAGE_FORMATS_SUPPORTED 2 -#define VA_MAX_SUBPIC_FORMATS_SUPPORTED 2 -#define VA_MAX_ENTRYPOINTS 1 +static inline VAProfile +PipeToProfile(enum pipe_video_profile profile) +{ + switch (profile) { + case PIPE_VIDEO_PROFILE_MPEG2_SIMPLE: + return VAProfileMPEG2Simple; + case PIPE_VIDEO_PROFILE_MPEG2_MAIN: + return VAProfileMPEG2Main; + case PIPE_VIDEO_PROFILE_MPEG4_SIMPLE: + return VAProfileMPEG4Simple; + case PIPE_VIDEO_PROFILE_MPEG4_ADVANCED_SIMPLE: + return VAProfileMPEG4AdvancedSimple; + case PIPE_VIDEO_PROFILE_VC1_SIMPLE: + return VAProfileVC1Simple; + case PIPE_VIDEO_PROFILE_VC1_MAIN: + return VAProfileVC1Main; + case PIPE_VIDEO_PROFILE_VC1_ADVANCED: + return VAProfileVC1Advanced; + case PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE: + return VAProfileH264Baseline; + case PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN: + return VAProfileH264Main; + case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH: + return VAProfileH264High; + case PIPE_VIDEO_PROFILE_MPEG4_AVC_EXTENDED: + return VAProfileNone; + default: + assert(0); + return -1; + } +} -#define VL_HANDLES +static inline enum pipe_video_profile +ProfileToPipe(VAProfile profile) +{ + switch (profile) { + case VAProfileMPEG2Simple: + return PIPE_VIDEO_PROFILE_MPEG2_SIMPLE; + case VAProfileMPEG2Main: + return PIPE_VIDEO_PROFILE_MPEG2_MAIN; + case VAProfileMPEG4Simple: + return PIPE_VIDEO_PROFILE_MPEG4_SIMPLE; + case VAProfileMPEG4AdvancedSimple: + return PIPE_VIDEO_PROFILE_MPEG4_ADVANCED_SIMPLE; + case VAProfileVC1Simple: + return PIPE_VIDEO_PROFILE_VC1_SIMPLE; + case VAProfileVC1Main: + return PIPE_VIDEO_PROFILE_VC1_MAIN; + case VAProfileVC1Advanced: + return PIPE_VIDEO_PROFILE_VC1_ADVANCED; + case VAProfileH264Baseline: + return PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE; + case VAProfileH264Main: + return PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN; + case VAProfileH264High: + return PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH; + default: + return PIPE_VIDEO_PROFILE_UNKNOWN; + } +} typedef struct { struct vl_screen *vscreen; - struct pipe_surface *backbuffer; -} vlVaDriverContextPriv; - -typedef struct { - unsigned int width; - unsigned int height; - enum pipe_video_chroma_format format; - VADriverContextP ctx; -} vlVaSurfacePriv; +} vlVaDriver; // Public functions: -VAStatus __vaDriverInit_0_31 (VADriverContextP ctx); - -// Private functions: -struct VADriverVTable vlVaGetVtable(); - -bool vlCreateHTAB(void); -void vlDestroyHTAB(void); -VAGenericID vlAddDataHTAB(void *data); -void* vlGetDataHTAB(VAGenericID handle); +VAStatus VA_DRIVER_INIT_FUNC(VADriverContextP ctx); -// Vtable functions: -VAStatus vlVaTerminate (VADriverContextP ctx); -VAStatus vlVaQueryConfigProfiles (VADriverContextP ctx, VAProfile *profile_list,int *num_profiles); -VAStatus vlVaQueryConfigEntrypoints (VADriverContextP ctx, VAProfile profile, VAEntrypoint *entrypoint_list, int *num_entrypoints); -VAStatus vlVaGetConfigAttributes (VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint, VAConfigAttrib *attrib_list, int num_attribs); -VAStatus vlVaCreateConfig (VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint, VAConfigAttrib *attrib_list, int num_attribs, VAConfigID *config_id); -VAStatus vlVaDestroyConfig (VADriverContextP ctx, VAConfigID config_id); -VAStatus vlVaQueryConfigAttributes (VADriverContextP ctx, VAConfigID config_id, VAProfile *profile, VAEntrypoint *entrypoint, VAConfigAttrib *attrib_list, int *num_attribs); -VAStatus vlVaCreateSurfaces (VADriverContextP ctx,int width,int height,int format,int num_surfaces,VASurfaceID *surfaces); -VAStatus vlVaDestroySurfaces (VADriverContextP ctx, VASurfaceID *surface_list, int num_surfaces); -VAStatus vlVaCreateContext (VADriverContextP ctx,VAConfigID config_id,int picture_width,int picture_height,int flag,VASurfaceID *render_targets,int num_render_targets,VAContextID *context); -VAStatus vlVaDestroyContext (VADriverContextP ctx,VAContextID context); -VAStatus vlVaCreateBuffer (VADriverContextP ctx,VAContextID context,VABufferType type,unsigned int size,unsigned int num_elements,void *data,VABufferID *buf_id); -VAStatus vlVaBufferSetNumElements (VADriverContextP ctx,VABufferID buf_id,unsigned int num_elements); -VAStatus vlVaMapBuffer (VADriverContextP ctx,VABufferID buf_id,void **pbuf); -VAStatus vlVaUnmapBuffer (VADriverContextP ctx,VABufferID buf_id); -VAStatus vlVaDestroyBuffer (VADriverContextP ctx,VABufferID buffer_id); -VAStatus vlVaBeginPicture (VADriverContextP ctx,VAContextID context,VASurfaceID render_target); -VAStatus vlVaRenderPicture (VADriverContextP ctx,VAContextID context,VABufferID *buffers,int num_buffers); -VAStatus vlVaEndPicture (VADriverContextP ctx,VAContextID context); -VAStatus vlVaSyncSurface (VADriverContextP ctx,VASurfaceID render_target); -VAStatus vlVaQuerySurfaceStatus (VADriverContextP ctx,VASurfaceID render_target,VASurfaceStatus *status); -VAStatus vlVaPutSurface (VADriverContextP ctx, - VASurfaceID surface, - void* draw, - short srcx, - short srcy, - unsigned short srcw, - unsigned short srch, - short destx, - short desty, - unsigned short destw, - unsigned short desth, - VARectangle *cliprects, - unsigned int number_cliprects, - unsigned int flags); -VAStatus vlVaQueryImageFormats (VADriverContextP ctx,VAImageFormat *format_list,int *num_formats); -VAStatus vlVaQuerySubpictureFormats(VADriverContextP ctx,VAImageFormat *format_list,unsigned int *flags,unsigned int *num_formats); -VAStatus vlVaCreateImage(VADriverContextP ctx,VAImageFormat *format,int width,int height,VAImage *image); -VAStatus vlVaDeriveImage(VADriverContextP ctx,VASurfaceID surface,VAImage *image); -VAStatus vlVaDestroyImage(VADriverContextP ctx,VAImageID image); -VAStatus vlVaSetImagePalette(VADriverContextP ctx,VAImageID image, unsigned char *palette); -VAStatus vlVaGetImage(VADriverContextP ctx,VASurfaceID surface,int x,int y,unsigned int width,unsigned int height,VAImageID image); -VAStatus vlVaPutImage(VADriverContextP ctx, - VASurfaceID surface, - VAImageID image, - int src_x, - int src_y, - unsigned int src_width, - unsigned int src_height, - int dest_x, - int dest_y, - unsigned int dest_width, - unsigned int dest_height); -VAStatus vlVaQuerySubpictureFormats(VADriverContextP ctx,VAImageFormat *format_list,unsigned int *flags,unsigned int *num_formats); -VAStatus vlVaCreateSubpicture(VADriverContextP ctx,VAImageID image,VASubpictureID *subpicture); -VAStatus vlVaDestroySubpicture(VADriverContextP ctx,VASubpictureID subpicture); -VAStatus vlVaSubpictureImage(VADriverContextP ctx,VASubpictureID subpicture,VAImageID image); -VAStatus vlVaSetSubpictureChromakey(VADriverContextP ctx,VASubpictureID subpicture,unsigned int chromakey_min,unsigned int chromakey_max,unsigned int chromakey_mask); -VAStatus vlVaSetSubpictureGlobalAlpha(VADriverContextP ctx,VASubpictureID subpicture,float global_alpha); -VAStatus vlVaAssociateSubpicture(VADriverContextP ctx, - VASubpictureID subpicture, - VASurfaceID *target_surfaces, - int num_surfaces, - short src_x, - short src_y, - unsigned short src_width, - unsigned short src_height, - short dest_x, - short dest_y, - unsigned short dest_width, - unsigned short dest_height, +// vtable functions: +VAStatus vlVaTerminate(VADriverContextP ctx); +VAStatus vlVaQueryConfigProfiles(VADriverContextP ctx, VAProfile *profile_list,int *num_profiles); +VAStatus vlVaQueryConfigEntrypoints(VADriverContextP ctx, VAProfile profile, + VAEntrypoint *entrypoint_list, int *num_entrypoints); +VAStatus vlVaGetConfigAttributes(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint, + VAConfigAttrib *attrib_list, int num_attribs); +VAStatus vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint, + VAConfigAttrib *attrib_list, int num_attribs, VAConfigID *config_id); +VAStatus vlVaDestroyConfig(VADriverContextP ctx, VAConfigID config_id); +VAStatus vlVaQueryConfigAttributes(VADriverContextP ctx, VAConfigID config_id, VAProfile *profile, + VAEntrypoint *entrypoint, VAConfigAttrib *attrib_list, int *num_attribs); +VAStatus vlVaCreateSurfaces(VADriverContextP ctx, int width, int height, int format, + int num_surfaces, VASurfaceID *surfaces); +VAStatus vlVaDestroySurfaces(VADriverContextP ctx, VASurfaceID *surface_list, int num_surfaces); +VAStatus vlVaCreateContext(VADriverContextP ctx, VAConfigID config_id, int picture_width, int picture_height, + int flag, VASurfaceID *render_targets, int num_render_targets, VAContextID *context); +VAStatus vlVaDestroyContext(VADriverContextP ctx, VAContextID context); +VAStatus vlVaCreateBuffer(VADriverContextP ctx, VAContextID context, VABufferType type, unsigned int size, + unsigned int num_elements, void *data, VABufferID *buf_id); +VAStatus vlVaBufferSetNumElements(VADriverContextP ctx, VABufferID buf_id, unsigned int num_elements); +VAStatus vlVaMapBuffer(VADriverContextP ctx, VABufferID buf_id, void **pbuf); +VAStatus vlVaUnmapBuffer(VADriverContextP ctx, VABufferID buf_id); +VAStatus vlVaDestroyBuffer(VADriverContextP ctx, VABufferID buffer_id); +VAStatus vlVaBeginPicture(VADriverContextP ctx, VAContextID context, VASurfaceID render_target); +VAStatus vlVaRenderPicture(VADriverContextP ctx, VAContextID context, VABufferID *buffers, int num_buffers); +VAStatus vlVaEndPicture(VADriverContextP ctx, VAContextID context); +VAStatus vlVaSyncSurface(VADriverContextP ctx, VASurfaceID render_target); +VAStatus vlVaQuerySurfaceStatus(VADriverContextP ctx, VASurfaceID render_target, VASurfaceStatus *status); +VAStatus vlVaQuerySurfaceError(VADriverContextP ctx, VASurfaceID render_target, + VAStatus error_status, void **error_info); +VAStatus vlVaPutSurface(VADriverContextP ctx, VASurfaceID surface, void* draw, short srcx, short srcy, + unsigned short srcw, unsigned short srch, short destx, short desty, unsigned short destw, + unsigned short desth, VARectangle *cliprects, unsigned int number_cliprects, + unsigned int flags); +VAStatus vlVaQueryImageFormats(VADriverContextP ctx, VAImageFormat *format_list, int *num_formats); +VAStatus vlVaQuerySubpictureFormats(VADriverContextP ctx, VAImageFormat *format_list, + unsigned int *flags, unsigned int *num_formats); +VAStatus vlVaCreateImage(VADriverContextP ctx, VAImageFormat *format, int width, int height, VAImage *image); +VAStatus vlVaDeriveImage(VADriverContextP ctx, VASurfaceID surface, VAImage *image); +VAStatus vlVaDestroyImage(VADriverContextP ctx, VAImageID image); +VAStatus vlVaSetImagePalette(VADriverContextP ctx, VAImageID image, unsigned char *palette); +VAStatus vlVaGetImage(VADriverContextP ctx, VASurfaceID surface, int x, int y, + unsigned int width, unsigned int height, VAImageID image); +VAStatus vlVaPutImage(VADriverContextP ctx, VASurfaceID surface, VAImageID image, int src_x, int src_y, + unsigned int src_width, unsigned int src_height, int dest_x, int dest_y, + unsigned int dest_width, unsigned int dest_height); +VAStatus vlVaQuerySubpictureFormats(VADriverContextP ctx, VAImageFormat *format_list, + unsigned int *flags, unsigned int *num_formats); +VAStatus vlVaCreateSubpicture(VADriverContextP ctx, VAImageID image, VASubpictureID *subpicture); +VAStatus vlVaDestroySubpicture(VADriverContextP ctx, VASubpictureID subpicture); +VAStatus vlVaSubpictureImage(VADriverContextP ctx, VASubpictureID subpicture, VAImageID image); +VAStatus vlVaSetSubpictureChromakey(VADriverContextP ctx, VASubpictureID subpicture, + unsigned int chromakey_min, unsigned int chromakey_max, + unsigned int chromakey_mask); +VAStatus vlVaSetSubpictureGlobalAlpha(VADriverContextP ctx, VASubpictureID subpicture, float global_alpha); +VAStatus vlVaAssociateSubpicture(VADriverContextP ctx, VASubpictureID subpicture, VASurfaceID *target_surfaces, + int num_surfaces, short src_x, short src_y, + unsigned short src_width, unsigned short src_height, + short dest_x, short dest_y, unsigned short dest_width, unsigned short dest_height, unsigned int flags); -VAStatus vlVaDeassociateSubpicture(VADriverContextP ctx,VASubpictureID subpicture,VASurfaceID *target_surfaces,int num_surfaces); -VAStatus vlVaQueryDisplayAttributes(VADriverContextP ctx,VADisplayAttribute *attr_list,int *num_attributes); -VAStatus vlVaGetDisplayAttributes(VADriverContextP ctx,VADisplayAttribute *attr_list,int num_attributes); -VAStatus vlVaSetDisplayAttributes(VADriverContextP ctx,VADisplayAttribute *attr_list,int num_attributes); -VAStatus vlVaBufferInfo(VADriverContextP ctx,VAContextID context,VABufferID buf_id,VABufferType *type,unsigned int *size,unsigned int *num_elements); -VAStatus vlVaLockSurface(VADriverContextP ctx, - VASurfaceID surface, - unsigned int *fourcc, - unsigned int *luma_stride, - unsigned int *chroma_u_stride, - unsigned int *chroma_v_stride, - unsigned int *luma_offset, - unsigned int *chroma_u_offset, - unsigned int *chroma_v_offset, - unsigned int *buffer_name, - void **buffer); -VAStatus vlVaUnlockSurface(VADriverContextP ctx,VASurfaceID surface); +VAStatus vlVaDeassociateSubpicture(VADriverContextP ctx, VASubpictureID subpicture, + VASurfaceID *target_surfaces, int num_surfaces); +VAStatus vlVaQueryDisplayAttributes(VADriverContextP ctx, VADisplayAttribute *attr_list, int *num_attributes); +VAStatus vlVaGetDisplayAttributes(VADriverContextP ctx, VADisplayAttribute *attr_list, int num_attributes); +VAStatus vlVaSetDisplayAttributes(VADriverContextP ctx, VADisplayAttribute *attr_list, int num_attributes); +VAStatus vlVaBufferInfo(VADriverContextP ctx, VABufferID buf_id, VABufferType *type, + unsigned int *size, unsigned int *num_elements); +VAStatus vlVaLockSurface(VADriverContextP ctx, VASurfaceID surface, unsigned int *fourcc, + unsigned int *luma_stride, unsigned int *chroma_u_stride, unsigned int *chroma_v_stride, + unsigned int *luma_offset, unsigned int *chroma_u_offset, unsigned int *chroma_v_offset, + unsigned int *buffer_name, void **buffer); +VAStatus vlVaUnlockSurface(VADriverContextP ctx, VASurfaceID surface); #endif //VA_PRIVATE_H