1*54e60f84SAndroid Build Coastguard Worker /* 2*54e60f84SAndroid Build Coastguard Worker * Copyright (c) 2007 Intel Corporation. All Rights Reserved. 3*54e60f84SAndroid Build Coastguard Worker * 4*54e60f84SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*54e60f84SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the 6*54e60f84SAndroid Build Coastguard Worker * "Software"), to deal in the Software without restriction, including 7*54e60f84SAndroid Build Coastguard Worker * without limitation the rights to use, copy, modify, merge, publish, 8*54e60f84SAndroid Build Coastguard Worker * distribute, sub license, and/or sell copies of the Software, and to 9*54e60f84SAndroid Build Coastguard Worker * permit persons to whom the Software is furnished to do so, subject to 10*54e60f84SAndroid Build Coastguard Worker * the following conditions: 11*54e60f84SAndroid Build Coastguard Worker * 12*54e60f84SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the 13*54e60f84SAndroid Build Coastguard Worker * next paragraph) shall be included in all copies or substantial portions 14*54e60f84SAndroid Build Coastguard Worker * of the Software. 15*54e60f84SAndroid Build Coastguard Worker * 16*54e60f84SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17*54e60f84SAndroid Build Coastguard Worker * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18*54e60f84SAndroid Build Coastguard Worker * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 19*54e60f84SAndroid Build Coastguard Worker * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 20*54e60f84SAndroid Build Coastguard Worker * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21*54e60f84SAndroid Build Coastguard Worker * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22*54e60f84SAndroid Build Coastguard Worker * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23*54e60f84SAndroid Build Coastguard Worker */ 24*54e60f84SAndroid Build Coastguard Worker 25*54e60f84SAndroid Build Coastguard Worker /* 26*54e60f84SAndroid Build Coastguard Worker * Video Decode Acceleration -Backend API 27*54e60f84SAndroid Build Coastguard Worker */ 28*54e60f84SAndroid Build Coastguard Worker 29*54e60f84SAndroid Build Coastguard Worker #ifndef _VA_BACKEND_H_ 30*54e60f84SAndroid Build Coastguard Worker #define _VA_BACKEND_H_ 31*54e60f84SAndroid Build Coastguard Worker 32*54e60f84SAndroid Build Coastguard Worker #include <va/va.h> 33*54e60f84SAndroid Build Coastguard Worker 34*54e60f84SAndroid Build Coastguard Worker typedef struct VADriverContext *VADriverContextP; 35*54e60f84SAndroid Build Coastguard Worker typedef struct VADisplayContext *VADisplayContextP; 36*54e60f84SAndroid Build Coastguard Worker 37*54e60f84SAndroid Build Coastguard Worker /** \brief VA display types. */ 38*54e60f84SAndroid Build Coastguard Worker enum { 39*54e60f84SAndroid Build Coastguard Worker /** \brief Mask to major identifier for VA display type. */ 40*54e60f84SAndroid Build Coastguard Worker VA_DISPLAY_MAJOR_MASK = 0xf0, 41*54e60f84SAndroid Build Coastguard Worker 42*54e60f84SAndroid Build Coastguard Worker /** \brief VA/X11 API is used, through vaGetDisplay() entry-point. */ 43*54e60f84SAndroid Build Coastguard Worker VA_DISPLAY_X11 = 0x10, 44*54e60f84SAndroid Build Coastguard Worker /** \brief VA/GLX API is used, through vaGetDisplayGLX() entry-point. */ 45*54e60f84SAndroid Build Coastguard Worker VA_DISPLAY_GLX = (VA_DISPLAY_X11 | (1 << 0)), 46*54e60f84SAndroid Build Coastguard Worker /** \brief VA/Android API is used, through vaGetDisplay() entry-point. */ 47*54e60f84SAndroid Build Coastguard Worker VA_DISPLAY_ANDROID = 0x20, 48*54e60f84SAndroid Build Coastguard Worker /** \brief VA/DRM API is used, through vaGetDisplayDRM() entry-point. */ 49*54e60f84SAndroid Build Coastguard Worker VA_DISPLAY_DRM = 0x30, 50*54e60f84SAndroid Build Coastguard Worker /** \brief VA/DRM API is used, with a render-node device path */ 51*54e60f84SAndroid Build Coastguard Worker VA_DISPLAY_DRM_RENDERNODES = (VA_DISPLAY_DRM | (1 << 0)), 52*54e60f84SAndroid Build Coastguard Worker /** \brief VA/Wayland API is used, through vaGetDisplayWl() entry-point. */ 53*54e60f84SAndroid Build Coastguard Worker VA_DISPLAY_WAYLAND = 0x40, 54*54e60f84SAndroid Build Coastguard Worker /** \brief VA/Win32 API is used, through vaGetDisplayWin32() entry-point. */ 55*54e60f84SAndroid Build Coastguard Worker VA_DISPLAY_WIN32 = 0x80, 56*54e60f84SAndroid Build Coastguard Worker }; 57*54e60f84SAndroid Build Coastguard Worker 58*54e60f84SAndroid Build Coastguard Worker struct VADriverVTable { 59*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaTerminate)(VADriverContextP ctx); 60*54e60f84SAndroid Build Coastguard Worker 61*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaQueryConfigProfiles)( 62*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 63*54e60f84SAndroid Build Coastguard Worker VAProfile *profile_list, /* out */ 64*54e60f84SAndroid Build Coastguard Worker int *num_profiles /* out */ 65*54e60f84SAndroid Build Coastguard Worker ); 66*54e60f84SAndroid Build Coastguard Worker 67*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaQueryConfigEntrypoints)( 68*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 69*54e60f84SAndroid Build Coastguard Worker VAProfile profile, 70*54e60f84SAndroid Build Coastguard Worker VAEntrypoint *entrypoint_list, /* out */ 71*54e60f84SAndroid Build Coastguard Worker int *num_entrypoints /* out */ 72*54e60f84SAndroid Build Coastguard Worker ); 73*54e60f84SAndroid Build Coastguard Worker 74*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaGetConfigAttributes)( 75*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 76*54e60f84SAndroid Build Coastguard Worker VAProfile profile, 77*54e60f84SAndroid Build Coastguard Worker VAEntrypoint entrypoint, 78*54e60f84SAndroid Build Coastguard Worker VAConfigAttrib *attrib_list, /* in/out */ 79*54e60f84SAndroid Build Coastguard Worker int num_attribs 80*54e60f84SAndroid Build Coastguard Worker ); 81*54e60f84SAndroid Build Coastguard Worker 82*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaCreateConfig)( 83*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 84*54e60f84SAndroid Build Coastguard Worker VAProfile profile, 85*54e60f84SAndroid Build Coastguard Worker VAEntrypoint entrypoint, 86*54e60f84SAndroid Build Coastguard Worker VAConfigAttrib *attrib_list, 87*54e60f84SAndroid Build Coastguard Worker int num_attribs, 88*54e60f84SAndroid Build Coastguard Worker VAConfigID *config_id /* out */ 89*54e60f84SAndroid Build Coastguard Worker ); 90*54e60f84SAndroid Build Coastguard Worker 91*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaDestroyConfig)( 92*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 93*54e60f84SAndroid Build Coastguard Worker VAConfigID config_id 94*54e60f84SAndroid Build Coastguard Worker ); 95*54e60f84SAndroid Build Coastguard Worker 96*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaQueryConfigAttributes)( 97*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 98*54e60f84SAndroid Build Coastguard Worker VAConfigID config_id, 99*54e60f84SAndroid Build Coastguard Worker VAProfile *profile, /* out */ 100*54e60f84SAndroid Build Coastguard Worker VAEntrypoint *entrypoint, /* out */ 101*54e60f84SAndroid Build Coastguard Worker VAConfigAttrib *attrib_list, /* out */ 102*54e60f84SAndroid Build Coastguard Worker int *num_attribs /* out */ 103*54e60f84SAndroid Build Coastguard Worker ); 104*54e60f84SAndroid Build Coastguard Worker 105*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaCreateSurfaces)( 106*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 107*54e60f84SAndroid Build Coastguard Worker int width, 108*54e60f84SAndroid Build Coastguard Worker int height, 109*54e60f84SAndroid Build Coastguard Worker int format, 110*54e60f84SAndroid Build Coastguard Worker int num_surfaces, 111*54e60f84SAndroid Build Coastguard Worker VASurfaceID *surfaces /* out */ 112*54e60f84SAndroid Build Coastguard Worker ); 113*54e60f84SAndroid Build Coastguard Worker 114*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaDestroySurfaces)( 115*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 116*54e60f84SAndroid Build Coastguard Worker VASurfaceID *surface_list, 117*54e60f84SAndroid Build Coastguard Worker int num_surfaces 118*54e60f84SAndroid Build Coastguard Worker ); 119*54e60f84SAndroid Build Coastguard Worker 120*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaCreateContext)( 121*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 122*54e60f84SAndroid Build Coastguard Worker VAConfigID config_id, 123*54e60f84SAndroid Build Coastguard Worker int picture_width, 124*54e60f84SAndroid Build Coastguard Worker int picture_height, 125*54e60f84SAndroid Build Coastguard Worker int flag, 126*54e60f84SAndroid Build Coastguard Worker VASurfaceID *render_targets, 127*54e60f84SAndroid Build Coastguard Worker int num_render_targets, 128*54e60f84SAndroid Build Coastguard Worker VAContextID *context /* out */ 129*54e60f84SAndroid Build Coastguard Worker ); 130*54e60f84SAndroid Build Coastguard Worker 131*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaDestroyContext)( 132*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 133*54e60f84SAndroid Build Coastguard Worker VAContextID context 134*54e60f84SAndroid Build Coastguard Worker ); 135*54e60f84SAndroid Build Coastguard Worker 136*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaCreateBuffer)( 137*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 138*54e60f84SAndroid Build Coastguard Worker VAContextID context, /* in */ 139*54e60f84SAndroid Build Coastguard Worker VABufferType type, /* in */ 140*54e60f84SAndroid Build Coastguard Worker unsigned int size, /* in */ 141*54e60f84SAndroid Build Coastguard Worker unsigned int num_elements, /* in */ 142*54e60f84SAndroid Build Coastguard Worker void *data, /* in */ 143*54e60f84SAndroid Build Coastguard Worker VABufferID *buf_id 144*54e60f84SAndroid Build Coastguard Worker ); 145*54e60f84SAndroid Build Coastguard Worker 146*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaBufferSetNumElements)( 147*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 148*54e60f84SAndroid Build Coastguard Worker VABufferID buf_id, /* in */ 149*54e60f84SAndroid Build Coastguard Worker unsigned int num_elements /* in */ 150*54e60f84SAndroid Build Coastguard Worker ); 151*54e60f84SAndroid Build Coastguard Worker 152*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaMapBuffer)( 153*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 154*54e60f84SAndroid Build Coastguard Worker VABufferID buf_id, /* in */ 155*54e60f84SAndroid Build Coastguard Worker void **pbuf /* out */ 156*54e60f84SAndroid Build Coastguard Worker ); 157*54e60f84SAndroid Build Coastguard Worker 158*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaUnmapBuffer)( 159*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 160*54e60f84SAndroid Build Coastguard Worker VABufferID buf_id /* in */ 161*54e60f84SAndroid Build Coastguard Worker ); 162*54e60f84SAndroid Build Coastguard Worker 163*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaDestroyBuffer)( 164*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 165*54e60f84SAndroid Build Coastguard Worker VABufferID buffer_id 166*54e60f84SAndroid Build Coastguard Worker ); 167*54e60f84SAndroid Build Coastguard Worker 168*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaBeginPicture)( 169*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 170*54e60f84SAndroid Build Coastguard Worker VAContextID context, 171*54e60f84SAndroid Build Coastguard Worker VASurfaceID render_target 172*54e60f84SAndroid Build Coastguard Worker ); 173*54e60f84SAndroid Build Coastguard Worker 174*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaRenderPicture)( 175*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 176*54e60f84SAndroid Build Coastguard Worker VAContextID context, 177*54e60f84SAndroid Build Coastguard Worker VABufferID *buffers, 178*54e60f84SAndroid Build Coastguard Worker int num_buffers 179*54e60f84SAndroid Build Coastguard Worker ); 180*54e60f84SAndroid Build Coastguard Worker 181*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaEndPicture)( 182*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 183*54e60f84SAndroid Build Coastguard Worker VAContextID context 184*54e60f84SAndroid Build Coastguard Worker ); 185*54e60f84SAndroid Build Coastguard Worker 186*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaSyncSurface)( 187*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 188*54e60f84SAndroid Build Coastguard Worker VASurfaceID render_target 189*54e60f84SAndroid Build Coastguard Worker ); 190*54e60f84SAndroid Build Coastguard Worker 191*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaQuerySurfaceStatus)( 192*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 193*54e60f84SAndroid Build Coastguard Worker VASurfaceID render_target, 194*54e60f84SAndroid Build Coastguard Worker VASurfaceStatus *status /* out */ 195*54e60f84SAndroid Build Coastguard Worker ); 196*54e60f84SAndroid Build Coastguard Worker 197*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaQuerySurfaceError)( 198*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 199*54e60f84SAndroid Build Coastguard Worker VASurfaceID render_target, 200*54e60f84SAndroid Build Coastguard Worker VAStatus error_status, 201*54e60f84SAndroid Build Coastguard Worker void **error_info /*out*/ 202*54e60f84SAndroid Build Coastguard Worker ); 203*54e60f84SAndroid Build Coastguard Worker 204*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaPutSurface)( 205*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 206*54e60f84SAndroid Build Coastguard Worker VASurfaceID surface, 207*54e60f84SAndroid Build Coastguard Worker void* draw, /* Drawable of window system */ 208*54e60f84SAndroid Build Coastguard Worker short srcx, 209*54e60f84SAndroid Build Coastguard Worker short srcy, 210*54e60f84SAndroid Build Coastguard Worker unsigned short srcw, 211*54e60f84SAndroid Build Coastguard Worker unsigned short srch, 212*54e60f84SAndroid Build Coastguard Worker short destx, 213*54e60f84SAndroid Build Coastguard Worker short desty, 214*54e60f84SAndroid Build Coastguard Worker unsigned short destw, 215*54e60f84SAndroid Build Coastguard Worker unsigned short desth, 216*54e60f84SAndroid Build Coastguard Worker VARectangle *cliprects, /* client supplied clip list */ 217*54e60f84SAndroid Build Coastguard Worker unsigned int number_cliprects, /* number of clip rects in the clip list */ 218*54e60f84SAndroid Build Coastguard Worker unsigned int flags /* de-interlacing flags */ 219*54e60f84SAndroid Build Coastguard Worker ); 220*54e60f84SAndroid Build Coastguard Worker 221*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaQueryImageFormats)( 222*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 223*54e60f84SAndroid Build Coastguard Worker VAImageFormat *format_list, /* out */ 224*54e60f84SAndroid Build Coastguard Worker int *num_formats /* out */ 225*54e60f84SAndroid Build Coastguard Worker ); 226*54e60f84SAndroid Build Coastguard Worker 227*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaCreateImage)( 228*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 229*54e60f84SAndroid Build Coastguard Worker VAImageFormat *format, 230*54e60f84SAndroid Build Coastguard Worker int width, 231*54e60f84SAndroid Build Coastguard Worker int height, 232*54e60f84SAndroid Build Coastguard Worker VAImage *image /* out */ 233*54e60f84SAndroid Build Coastguard Worker ); 234*54e60f84SAndroid Build Coastguard Worker 235*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaDeriveImage)( 236*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 237*54e60f84SAndroid Build Coastguard Worker VASurfaceID surface, 238*54e60f84SAndroid Build Coastguard Worker VAImage *image /* out */ 239*54e60f84SAndroid Build Coastguard Worker ); 240*54e60f84SAndroid Build Coastguard Worker 241*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaDestroyImage)( 242*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 243*54e60f84SAndroid Build Coastguard Worker VAImageID image 244*54e60f84SAndroid Build Coastguard Worker ); 245*54e60f84SAndroid Build Coastguard Worker 246*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaSetImagePalette)( 247*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 248*54e60f84SAndroid Build Coastguard Worker VAImageID image, 249*54e60f84SAndroid Build Coastguard Worker /* 250*54e60f84SAndroid Build Coastguard Worker * pointer to an array holding the palette data. The size of the array is 251*54e60f84SAndroid Build Coastguard Worker * num_palette_entries * entry_bytes in size. The order of the components 252*54e60f84SAndroid Build Coastguard Worker * in the palette is described by the component_order in VAImage struct 253*54e60f84SAndroid Build Coastguard Worker */ 254*54e60f84SAndroid Build Coastguard Worker unsigned char *palette 255*54e60f84SAndroid Build Coastguard Worker ); 256*54e60f84SAndroid Build Coastguard Worker 257*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaGetImage)( 258*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 259*54e60f84SAndroid Build Coastguard Worker VASurfaceID surface, 260*54e60f84SAndroid Build Coastguard Worker int x, /* coordinates of the upper left source pixel */ 261*54e60f84SAndroid Build Coastguard Worker int y, 262*54e60f84SAndroid Build Coastguard Worker unsigned int width, /* width and height of the region */ 263*54e60f84SAndroid Build Coastguard Worker unsigned int height, 264*54e60f84SAndroid Build Coastguard Worker VAImageID image 265*54e60f84SAndroid Build Coastguard Worker ); 266*54e60f84SAndroid Build Coastguard Worker 267*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaPutImage)( 268*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 269*54e60f84SAndroid Build Coastguard Worker VASurfaceID surface, 270*54e60f84SAndroid Build Coastguard Worker VAImageID image, 271*54e60f84SAndroid Build Coastguard Worker int src_x, 272*54e60f84SAndroid Build Coastguard Worker int src_y, 273*54e60f84SAndroid Build Coastguard Worker unsigned int src_width, 274*54e60f84SAndroid Build Coastguard Worker unsigned int src_height, 275*54e60f84SAndroid Build Coastguard Worker int dest_x, 276*54e60f84SAndroid Build Coastguard Worker int dest_y, 277*54e60f84SAndroid Build Coastguard Worker unsigned int dest_width, 278*54e60f84SAndroid Build Coastguard Worker unsigned int dest_height 279*54e60f84SAndroid Build Coastguard Worker ); 280*54e60f84SAndroid Build Coastguard Worker 281*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaQuerySubpictureFormats)( 282*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 283*54e60f84SAndroid Build Coastguard Worker VAImageFormat *format_list, /* out */ 284*54e60f84SAndroid Build Coastguard Worker unsigned int *flags, /* out */ 285*54e60f84SAndroid Build Coastguard Worker unsigned int *num_formats /* out */ 286*54e60f84SAndroid Build Coastguard Worker ); 287*54e60f84SAndroid Build Coastguard Worker 288*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaCreateSubpicture)( 289*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 290*54e60f84SAndroid Build Coastguard Worker VAImageID image, 291*54e60f84SAndroid Build Coastguard Worker VASubpictureID *subpicture /* out */ 292*54e60f84SAndroid Build Coastguard Worker ); 293*54e60f84SAndroid Build Coastguard Worker 294*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaDestroySubpicture)( 295*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 296*54e60f84SAndroid Build Coastguard Worker VASubpictureID subpicture 297*54e60f84SAndroid Build Coastguard Worker ); 298*54e60f84SAndroid Build Coastguard Worker 299*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaSetSubpictureImage)( 300*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 301*54e60f84SAndroid Build Coastguard Worker VASubpictureID subpicture, 302*54e60f84SAndroid Build Coastguard Worker VAImageID image 303*54e60f84SAndroid Build Coastguard Worker ); 304*54e60f84SAndroid Build Coastguard Worker 305*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaSetSubpictureChromakey)( 306*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 307*54e60f84SAndroid Build Coastguard Worker VASubpictureID subpicture, 308*54e60f84SAndroid Build Coastguard Worker unsigned int chromakey_min, 309*54e60f84SAndroid Build Coastguard Worker unsigned int chromakey_max, 310*54e60f84SAndroid Build Coastguard Worker unsigned int chromakey_mask 311*54e60f84SAndroid Build Coastguard Worker ); 312*54e60f84SAndroid Build Coastguard Worker 313*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaSetSubpictureGlobalAlpha)( 314*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 315*54e60f84SAndroid Build Coastguard Worker VASubpictureID subpicture, 316*54e60f84SAndroid Build Coastguard Worker float global_alpha 317*54e60f84SAndroid Build Coastguard Worker ); 318*54e60f84SAndroid Build Coastguard Worker 319*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaAssociateSubpicture)( 320*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 321*54e60f84SAndroid Build Coastguard Worker VASubpictureID subpicture, 322*54e60f84SAndroid Build Coastguard Worker VASurfaceID *target_surfaces, 323*54e60f84SAndroid Build Coastguard Worker int num_surfaces, 324*54e60f84SAndroid Build Coastguard Worker short src_x, /* upper left offset in subpicture */ 325*54e60f84SAndroid Build Coastguard Worker short src_y, 326*54e60f84SAndroid Build Coastguard Worker unsigned short src_width, 327*54e60f84SAndroid Build Coastguard Worker unsigned short src_height, 328*54e60f84SAndroid Build Coastguard Worker short dest_x, /* upper left offset in surface */ 329*54e60f84SAndroid Build Coastguard Worker short dest_y, 330*54e60f84SAndroid Build Coastguard Worker unsigned short dest_width, 331*54e60f84SAndroid Build Coastguard Worker unsigned short dest_height, 332*54e60f84SAndroid Build Coastguard Worker /* 333*54e60f84SAndroid Build Coastguard Worker * whether to enable chroma-keying or global-alpha 334*54e60f84SAndroid Build Coastguard Worker * see VA_SUBPICTURE_XXX values 335*54e60f84SAndroid Build Coastguard Worker */ 336*54e60f84SAndroid Build Coastguard Worker unsigned int flags 337*54e60f84SAndroid Build Coastguard Worker ); 338*54e60f84SAndroid Build Coastguard Worker 339*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaDeassociateSubpicture)( 340*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 341*54e60f84SAndroid Build Coastguard Worker VASubpictureID subpicture, 342*54e60f84SAndroid Build Coastguard Worker VASurfaceID *target_surfaces, 343*54e60f84SAndroid Build Coastguard Worker int num_surfaces 344*54e60f84SAndroid Build Coastguard Worker ); 345*54e60f84SAndroid Build Coastguard Worker 346*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaQueryDisplayAttributes)( 347*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 348*54e60f84SAndroid Build Coastguard Worker VADisplayAttribute *attr_list, /* out */ 349*54e60f84SAndroid Build Coastguard Worker int *num_attributes /* out */ 350*54e60f84SAndroid Build Coastguard Worker ); 351*54e60f84SAndroid Build Coastguard Worker 352*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaGetDisplayAttributes)( 353*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 354*54e60f84SAndroid Build Coastguard Worker VADisplayAttribute *attr_list, /* in/out */ 355*54e60f84SAndroid Build Coastguard Worker int num_attributes 356*54e60f84SAndroid Build Coastguard Worker ); 357*54e60f84SAndroid Build Coastguard Worker 358*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaSetDisplayAttributes)( 359*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 360*54e60f84SAndroid Build Coastguard Worker VADisplayAttribute *attr_list, 361*54e60f84SAndroid Build Coastguard Worker int num_attributes 362*54e60f84SAndroid Build Coastguard Worker ); 363*54e60f84SAndroid Build Coastguard Worker 364*54e60f84SAndroid Build Coastguard Worker /* used by va trace */ 365*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaBufferInfo)( 366*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, /* in */ 367*54e60f84SAndroid Build Coastguard Worker VABufferID buf_id, /* in */ 368*54e60f84SAndroid Build Coastguard Worker VABufferType *type, /* out */ 369*54e60f84SAndroid Build Coastguard Worker unsigned int *size, /* out */ 370*54e60f84SAndroid Build Coastguard Worker unsigned int *num_elements /* out */ 371*54e60f84SAndroid Build Coastguard Worker ); 372*54e60f84SAndroid Build Coastguard Worker 373*54e60f84SAndroid Build Coastguard Worker /* lock/unlock surface for external access */ 374*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaLockSurface)( 375*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 376*54e60f84SAndroid Build Coastguard Worker VASurfaceID surface, 377*54e60f84SAndroid Build Coastguard Worker unsigned int *fourcc, /* out for follow argument */ 378*54e60f84SAndroid Build Coastguard Worker unsigned int *luma_stride, 379*54e60f84SAndroid Build Coastguard Worker unsigned int *chroma_u_stride, 380*54e60f84SAndroid Build Coastguard Worker unsigned int *chroma_v_stride, 381*54e60f84SAndroid Build Coastguard Worker unsigned int *luma_offset, 382*54e60f84SAndroid Build Coastguard Worker unsigned int *chroma_u_offset, 383*54e60f84SAndroid Build Coastguard Worker unsigned int *chroma_v_offset, 384*54e60f84SAndroid Build Coastguard Worker unsigned int *buffer_name, /* if it is not NULL, assign the low lever 385*54e60f84SAndroid Build Coastguard Worker * surface buffer name 386*54e60f84SAndroid Build Coastguard Worker */ 387*54e60f84SAndroid Build Coastguard Worker void **buffer /* if it is not NULL, map the surface buffer for 388*54e60f84SAndroid Build Coastguard Worker * CPU access 389*54e60f84SAndroid Build Coastguard Worker */ 390*54e60f84SAndroid Build Coastguard Worker ); 391*54e60f84SAndroid Build Coastguard Worker 392*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaUnlockSurface)( 393*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 394*54e60f84SAndroid Build Coastguard Worker VASurfaceID surface 395*54e60f84SAndroid Build Coastguard Worker ); 396*54e60f84SAndroid Build Coastguard Worker 397*54e60f84SAndroid Build Coastguard Worker /* DEPRECATED */ 398*54e60f84SAndroid Build Coastguard Worker VAStatus 399*54e60f84SAndroid Build Coastguard Worker (*vaGetSurfaceAttributes)( 400*54e60f84SAndroid Build Coastguard Worker VADriverContextP dpy, 401*54e60f84SAndroid Build Coastguard Worker VAConfigID config, 402*54e60f84SAndroid Build Coastguard Worker VASurfaceAttrib *attrib_list, 403*54e60f84SAndroid Build Coastguard Worker unsigned int num_attribs 404*54e60f84SAndroid Build Coastguard Worker ); 405*54e60f84SAndroid Build Coastguard Worker 406*54e60f84SAndroid Build Coastguard Worker VAStatus 407*54e60f84SAndroid Build Coastguard Worker (*vaCreateSurfaces2)( 408*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 409*54e60f84SAndroid Build Coastguard Worker unsigned int format, 410*54e60f84SAndroid Build Coastguard Worker unsigned int width, 411*54e60f84SAndroid Build Coastguard Worker unsigned int height, 412*54e60f84SAndroid Build Coastguard Worker VASurfaceID *surfaces, 413*54e60f84SAndroid Build Coastguard Worker unsigned int num_surfaces, 414*54e60f84SAndroid Build Coastguard Worker VASurfaceAttrib *attrib_list, 415*54e60f84SAndroid Build Coastguard Worker unsigned int num_attribs 416*54e60f84SAndroid Build Coastguard Worker ); 417*54e60f84SAndroid Build Coastguard Worker 418*54e60f84SAndroid Build Coastguard Worker VAStatus 419*54e60f84SAndroid Build Coastguard Worker (*vaQuerySurfaceAttributes)( 420*54e60f84SAndroid Build Coastguard Worker VADriverContextP dpy, 421*54e60f84SAndroid Build Coastguard Worker VAConfigID config, 422*54e60f84SAndroid Build Coastguard Worker VASurfaceAttrib *attrib_list, 423*54e60f84SAndroid Build Coastguard Worker unsigned int *num_attribs 424*54e60f84SAndroid Build Coastguard Worker ); 425*54e60f84SAndroid Build Coastguard Worker 426*54e60f84SAndroid Build Coastguard Worker VAStatus 427*54e60f84SAndroid Build Coastguard Worker (*vaAcquireBufferHandle)( 428*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 429*54e60f84SAndroid Build Coastguard Worker VABufferID buf_id, /* in */ 430*54e60f84SAndroid Build Coastguard Worker VABufferInfo * buf_info /* in/out */ 431*54e60f84SAndroid Build Coastguard Worker ); 432*54e60f84SAndroid Build Coastguard Worker 433*54e60f84SAndroid Build Coastguard Worker VAStatus 434*54e60f84SAndroid Build Coastguard Worker (*vaReleaseBufferHandle)( 435*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 436*54e60f84SAndroid Build Coastguard Worker VABufferID buf_id /* in */ 437*54e60f84SAndroid Build Coastguard Worker ); 438*54e60f84SAndroid Build Coastguard Worker 439*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaCreateMFContext)( 440*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 441*54e60f84SAndroid Build Coastguard Worker VAMFContextID *mfe_context /* out */ 442*54e60f84SAndroid Build Coastguard Worker ); 443*54e60f84SAndroid Build Coastguard Worker 444*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaMFAddContext)( 445*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 446*54e60f84SAndroid Build Coastguard Worker VAMFContextID mf_context, 447*54e60f84SAndroid Build Coastguard Worker VAContextID context 448*54e60f84SAndroid Build Coastguard Worker ); 449*54e60f84SAndroid Build Coastguard Worker 450*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaMFReleaseContext)( 451*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 452*54e60f84SAndroid Build Coastguard Worker VAMFContextID mf_context, 453*54e60f84SAndroid Build Coastguard Worker VAContextID context 454*54e60f84SAndroid Build Coastguard Worker ); 455*54e60f84SAndroid Build Coastguard Worker 456*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaMFSubmit)( 457*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 458*54e60f84SAndroid Build Coastguard Worker VAMFContextID mf_context, 459*54e60f84SAndroid Build Coastguard Worker VAContextID *contexts, 460*54e60f84SAndroid Build Coastguard Worker int num_contexts 461*54e60f84SAndroid Build Coastguard Worker ); 462*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaCreateBuffer2)( 463*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 464*54e60f84SAndroid Build Coastguard Worker VAContextID context, /* in */ 465*54e60f84SAndroid Build Coastguard Worker VABufferType type, /* in */ 466*54e60f84SAndroid Build Coastguard Worker unsigned int width, /* in */ 467*54e60f84SAndroid Build Coastguard Worker unsigned int height, /* in */ 468*54e60f84SAndroid Build Coastguard Worker unsigned int *unit_size, /* out */ 469*54e60f84SAndroid Build Coastguard Worker unsigned int *pitch, /* out */ 470*54e60f84SAndroid Build Coastguard Worker VABufferID *buf_id /* out */ 471*54e60f84SAndroid Build Coastguard Worker ); 472*54e60f84SAndroid Build Coastguard Worker 473*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaQueryProcessingRate)( 474*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, /* in */ 475*54e60f84SAndroid Build Coastguard Worker VAConfigID config_id, /* in */ 476*54e60f84SAndroid Build Coastguard Worker VAProcessingRateParameter *proc_buf,/* in */ 477*54e60f84SAndroid Build Coastguard Worker unsigned int *processing_rate /* out */ 478*54e60f84SAndroid Build Coastguard Worker ); 479*54e60f84SAndroid Build Coastguard Worker 480*54e60f84SAndroid Build Coastguard Worker VAStatus 481*54e60f84SAndroid Build Coastguard Worker (*vaExportSurfaceHandle)( 482*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 483*54e60f84SAndroid Build Coastguard Worker VASurfaceID surface_id, /* in */ 484*54e60f84SAndroid Build Coastguard Worker uint32_t mem_type, /* in */ 485*54e60f84SAndroid Build Coastguard Worker uint32_t flags, /* in */ 486*54e60f84SAndroid Build Coastguard Worker void *descriptor /* out */ 487*54e60f84SAndroid Build Coastguard Worker ); 488*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaSyncSurface2)( 489*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 490*54e60f84SAndroid Build Coastguard Worker VASurfaceID surface, 491*54e60f84SAndroid Build Coastguard Worker uint64_t timeout_ns 492*54e60f84SAndroid Build Coastguard Worker ); 493*54e60f84SAndroid Build Coastguard Worker 494*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaSyncBuffer)( 495*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 496*54e60f84SAndroid Build Coastguard Worker VABufferID buf_id, 497*54e60f84SAndroid Build Coastguard Worker uint64_t timeout_ns 498*54e60f84SAndroid Build Coastguard Worker ); 499*54e60f84SAndroid Build Coastguard Worker 500*54e60f84SAndroid Build Coastguard Worker VAStatus 501*54e60f84SAndroid Build Coastguard Worker (*vaCopy)( 502*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, /* in */ 503*54e60f84SAndroid Build Coastguard Worker VACopyObject *dst, /* in */ 504*54e60f84SAndroid Build Coastguard Worker VACopyObject *src, /* in */ 505*54e60f84SAndroid Build Coastguard Worker VACopyOption option /* in */ 506*54e60f84SAndroid Build Coastguard Worker ); 507*54e60f84SAndroid Build Coastguard Worker 508*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaMapBuffer2)( 509*54e60f84SAndroid Build Coastguard Worker VADriverContextP ctx, 510*54e60f84SAndroid Build Coastguard Worker VABufferID buf_id, /* in */ 511*54e60f84SAndroid Build Coastguard Worker void **pbuf, /* out */ 512*54e60f84SAndroid Build Coastguard Worker uint32_t flags /* in */ 513*54e60f84SAndroid Build Coastguard Worker ); 514*54e60f84SAndroid Build Coastguard Worker /** \brief Reserved bytes for future use, must be zero */ 515*54e60f84SAndroid Build Coastguard Worker unsigned long reserved[53]; 516*54e60f84SAndroid Build Coastguard Worker 517*54e60f84SAndroid Build Coastguard Worker }; 518*54e60f84SAndroid Build Coastguard Worker 519*54e60f84SAndroid Build Coastguard Worker struct VADriverContext { 520*54e60f84SAndroid Build Coastguard Worker void *pDriverData; 521*54e60f84SAndroid Build Coastguard Worker 522*54e60f84SAndroid Build Coastguard Worker /** 523*54e60f84SAndroid Build Coastguard Worker * The core VA implementation hooks. 524*54e60f84SAndroid Build Coastguard Worker * 525*54e60f84SAndroid Build Coastguard Worker * This structure is allocated from libva with calloc(). 526*54e60f84SAndroid Build Coastguard Worker */ 527*54e60f84SAndroid Build Coastguard Worker struct VADriverVTable *vtable; 528*54e60f84SAndroid Build Coastguard Worker 529*54e60f84SAndroid Build Coastguard Worker /** 530*54e60f84SAndroid Build Coastguard Worker * The VA/GLX implementation hooks. 531*54e60f84SAndroid Build Coastguard Worker * 532*54e60f84SAndroid Build Coastguard Worker * This structure is intended for drivers that implement the 533*54e60f84SAndroid Build Coastguard Worker * VA/GLX API. The driver implementation is responsible for the 534*54e60f84SAndroid Build Coastguard Worker * allocation and deallocation of this structure. 535*54e60f84SAndroid Build Coastguard Worker */ 536*54e60f84SAndroid Build Coastguard Worker struct VADriverVTableGLX *vtable_glx; 537*54e60f84SAndroid Build Coastguard Worker 538*54e60f84SAndroid Build Coastguard Worker /** 539*54e60f84SAndroid Build Coastguard Worker * The VA/EGL implementation hooks. 540*54e60f84SAndroid Build Coastguard Worker * 541*54e60f84SAndroid Build Coastguard Worker * This structure is intended for drivers that implement the 542*54e60f84SAndroid Build Coastguard Worker * VA/EGL API. The driver implementation is responsible for the 543*54e60f84SAndroid Build Coastguard Worker * allocation and deallocation of this structure. 544*54e60f84SAndroid Build Coastguard Worker */ 545*54e60f84SAndroid Build Coastguard Worker struct VADriverVTableEGL *vtable_egl; 546*54e60f84SAndroid Build Coastguard Worker 547*54e60f84SAndroid Build Coastguard Worker /** 548*54e60f84SAndroid Build Coastguard Worker * The third-party/private implementation hooks. 549*54e60f84SAndroid Build Coastguard Worker * 550*54e60f84SAndroid Build Coastguard Worker * This structure is intended for drivers that implement the 551*54e60f84SAndroid Build Coastguard Worker * private API. The driver implementation is responsible for the 552*54e60f84SAndroid Build Coastguard Worker * allocation and deallocation of this structure. 553*54e60f84SAndroid Build Coastguard Worker */ 554*54e60f84SAndroid Build Coastguard Worker void *vtable_tpi; 555*54e60f84SAndroid Build Coastguard Worker 556*54e60f84SAndroid Build Coastguard Worker void *native_dpy; 557*54e60f84SAndroid Build Coastguard Worker int x11_screen; 558*54e60f84SAndroid Build Coastguard Worker int version_major; 559*54e60f84SAndroid Build Coastguard Worker int version_minor; 560*54e60f84SAndroid Build Coastguard Worker int max_profiles; 561*54e60f84SAndroid Build Coastguard Worker int max_entrypoints; 562*54e60f84SAndroid Build Coastguard Worker int max_attributes; 563*54e60f84SAndroid Build Coastguard Worker int max_image_formats; 564*54e60f84SAndroid Build Coastguard Worker int max_subpic_formats; 565*54e60f84SAndroid Build Coastguard Worker int max_display_attributes; 566*54e60f84SAndroid Build Coastguard Worker const char *str_vendor; 567*54e60f84SAndroid Build Coastguard Worker 568*54e60f84SAndroid Build Coastguard Worker void *handle; /* dlopen handle */ 569*54e60f84SAndroid Build Coastguard Worker 570*54e60f84SAndroid Build Coastguard Worker /** 571*54e60f84SAndroid Build Coastguard Worker * \brief DRM state. 572*54e60f84SAndroid Build Coastguard Worker * 573*54e60f84SAndroid Build Coastguard Worker * This field holds driver specific data for DRM-based 574*54e60f84SAndroid Build Coastguard Worker * drivers. This structure is allocated from libva with 575*54e60f84SAndroid Build Coastguard Worker * calloc(). Do not deallocate from within VA driver 576*54e60f84SAndroid Build Coastguard Worker * implementations. 577*54e60f84SAndroid Build Coastguard Worker * 578*54e60f84SAndroid Build Coastguard Worker * All structures shall be derived from struct drm_state. So, for 579*54e60f84SAndroid Build Coastguard Worker * instance, this field holds a dri_state structure for VA/X11 580*54e60f84SAndroid Build Coastguard Worker * drivers that use the DRM protocol. 581*54e60f84SAndroid Build Coastguard Worker */ 582*54e60f84SAndroid Build Coastguard Worker void *drm_state; 583*54e60f84SAndroid Build Coastguard Worker 584*54e60f84SAndroid Build Coastguard Worker void *glx; /* opaque for GLX code */ 585*54e60f84SAndroid Build Coastguard Worker 586*54e60f84SAndroid Build Coastguard Worker /** \brief VA display type. */ 587*54e60f84SAndroid Build Coastguard Worker unsigned long display_type; 588*54e60f84SAndroid Build Coastguard Worker 589*54e60f84SAndroid Build Coastguard Worker /** 590*54e60f84SAndroid Build Coastguard Worker * The VA/Wayland implementation hooks. 591*54e60f84SAndroid Build Coastguard Worker * 592*54e60f84SAndroid Build Coastguard Worker * This structure is intended for drivers that implement the 593*54e60f84SAndroid Build Coastguard Worker * VA/Wayland API. libVA allocates this structure with calloc() 594*54e60f84SAndroid Build Coastguard Worker * and owns the resulting memory. 595*54e60f84SAndroid Build Coastguard Worker */ 596*54e60f84SAndroid Build Coastguard Worker struct VADriverVTableWayland *vtable_wayland; 597*54e60f84SAndroid Build Coastguard Worker 598*54e60f84SAndroid Build Coastguard Worker /** 599*54e60f84SAndroid Build Coastguard Worker * \brief The VA/VPP implementation hooks. 600*54e60f84SAndroid Build Coastguard Worker * 601*54e60f84SAndroid Build Coastguard Worker * This structure is allocated from libva with calloc(). 602*54e60f84SAndroid Build Coastguard Worker */ 603*54e60f84SAndroid Build Coastguard Worker struct VADriverVTableVPP *vtable_vpp; 604*54e60f84SAndroid Build Coastguard Worker 605*54e60f84SAndroid Build Coastguard Worker char *override_driver_name; 606*54e60f84SAndroid Build Coastguard Worker 607*54e60f84SAndroid Build Coastguard Worker void *pDisplayContext; 608*54e60f84SAndroid Build Coastguard Worker 609*54e60f84SAndroid Build Coastguard Worker /** 610*54e60f84SAndroid Build Coastguard Worker * Error callback. 611*54e60f84SAndroid Build Coastguard Worker * 612*54e60f84SAndroid Build Coastguard Worker * This is set by libva when the driver is opened, and will not be 613*54e60f84SAndroid Build Coastguard Worker * changed thereafter. The driver can call it with an error message, 614*54e60f84SAndroid Build Coastguard Worker * which will be propagated to the API user through their error 615*54e60f84SAndroid Build Coastguard Worker * callbacks, or sent to a default output if no callback is available. 616*54e60f84SAndroid Build Coastguard Worker * 617*54e60f84SAndroid Build Coastguard Worker * It is expected that end users will always be able to see these 618*54e60f84SAndroid Build Coastguard Worker * messages, so it should be called only for serious errors. For 619*54e60f84SAndroid Build Coastguard Worker * example, hardware problems or fatal configuration errors. 620*54e60f84SAndroid Build Coastguard Worker * 621*54e60f84SAndroid Build Coastguard Worker * @param pDriverContext Pointer to the driver context structure 622*54e60f84SAndroid Build Coastguard Worker * being used by the current driver. 623*54e60f84SAndroid Build Coastguard Worker * @param message Message to send to the API user. This must be a 624*54e60f84SAndroid Build Coastguard Worker * null-terminated string. 625*54e60f84SAndroid Build Coastguard Worker */ 626*54e60f84SAndroid Build Coastguard Worker void (*error_callback)(VADriverContextP pDriverContext, 627*54e60f84SAndroid Build Coastguard Worker const char *message); 628*54e60f84SAndroid Build Coastguard Worker /** 629*54e60f84SAndroid Build Coastguard Worker * Info callback. 630*54e60f84SAndroid Build Coastguard Worker * 631*54e60f84SAndroid Build Coastguard Worker * This has the same behaviour as the error callback, but has its 632*54e60f84SAndroid Build Coastguard Worker * own set of callbacks to the API user. 633*54e60f84SAndroid Build Coastguard Worker * 634*54e60f84SAndroid Build Coastguard Worker * It should be used for informational messages which may be useful 635*54e60f84SAndroid Build Coastguard Worker * for an application programmer or for debugging. For example, minor 636*54e60f84SAndroid Build Coastguard Worker * configuration errors, or information about the reason when another 637*54e60f84SAndroid Build Coastguard Worker * API call generates an error return. It is not expected that end 638*54e60f84SAndroid Build Coastguard Worker * users will see these messages. 639*54e60f84SAndroid Build Coastguard Worker * 640*54e60f84SAndroid Build Coastguard Worker * @param pDriverContext Pointer to the driver context structure 641*54e60f84SAndroid Build Coastguard Worker * being used by the current driver. 642*54e60f84SAndroid Build Coastguard Worker * @param message Message to send to the API user. This must be a 643*54e60f84SAndroid Build Coastguard Worker * null-terminated string. 644*54e60f84SAndroid Build Coastguard Worker */ 645*54e60f84SAndroid Build Coastguard Worker void (*info_callback)(VADriverContextP pDriverContext, 646*54e60f84SAndroid Build Coastguard Worker const char *message); 647*54e60f84SAndroid Build Coastguard Worker 648*54e60f84SAndroid Build Coastguard Worker /** 649*54e60f84SAndroid Build Coastguard Worker * \brief The VA/Protected implementation hooks. 650*54e60f84SAndroid Build Coastguard Worker * 651*54e60f84SAndroid Build Coastguard Worker * This structure is allocated from libva with calloc(). 652*54e60f84SAndroid Build Coastguard Worker */ 653*54e60f84SAndroid Build Coastguard Worker struct VADriverVTableProt *vtable_prot; 654*54e60f84SAndroid Build Coastguard Worker 655*54e60f84SAndroid Build Coastguard Worker unsigned long reserved[37]; /* reserve for future add-ins, decrease the subscript accordingly */ 656*54e60f84SAndroid Build Coastguard Worker }; 657*54e60f84SAndroid Build Coastguard Worker 658*54e60f84SAndroid Build Coastguard Worker #define VA_DISPLAY_MAGIC 0x56414430 /* VAD0 */ 659*54e60f84SAndroid Build Coastguard Worker struct VADisplayContext { 660*54e60f84SAndroid Build Coastguard Worker int vadpy_magic; 661*54e60f84SAndroid Build Coastguard Worker 662*54e60f84SAndroid Build Coastguard Worker VADisplayContextP pNext; 663*54e60f84SAndroid Build Coastguard Worker VADriverContextP pDriverContext; 664*54e60f84SAndroid Build Coastguard Worker 665*54e60f84SAndroid Build Coastguard Worker /* Deprecated */ 666*54e60f84SAndroid Build Coastguard Worker int (*vaIsValid)( 667*54e60f84SAndroid Build Coastguard Worker VADisplayContextP ctx 668*54e60f84SAndroid Build Coastguard Worker ); 669*54e60f84SAndroid Build Coastguard Worker 670*54e60f84SAndroid Build Coastguard Worker void (*vaDestroy)( 671*54e60f84SAndroid Build Coastguard Worker VADisplayContextP ctx 672*54e60f84SAndroid Build Coastguard Worker ); 673*54e60f84SAndroid Build Coastguard Worker 674*54e60f84SAndroid Build Coastguard Worker /* Deprecated */ 675*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaGetDriverName)( 676*54e60f84SAndroid Build Coastguard Worker VADisplayContextP ctx, 677*54e60f84SAndroid Build Coastguard Worker char **driver_name 678*54e60f84SAndroid Build Coastguard Worker ); 679*54e60f84SAndroid Build Coastguard Worker 680*54e60f84SAndroid Build Coastguard Worker void *opaque; /* opaque for display extensions (e.g. GLX) */ 681*54e60f84SAndroid Build Coastguard Worker void *vatrace; /* opaque for VA trace context */ 682*54e60f84SAndroid Build Coastguard Worker /* Deprecated */ 683*54e60f84SAndroid Build Coastguard Worker void *vafool; /* opaque for VA fool context */ 684*54e60f84SAndroid Build Coastguard Worker 685*54e60f84SAndroid Build Coastguard Worker VAMessageCallback error_callback; 686*54e60f84SAndroid Build Coastguard Worker void *error_callback_user_context; 687*54e60f84SAndroid Build Coastguard Worker VAMessageCallback info_callback; 688*54e60f84SAndroid Build Coastguard Worker void *info_callback_user_context; 689*54e60f84SAndroid Build Coastguard Worker 690*54e60f84SAndroid Build Coastguard Worker /* Deprecated */ 691*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaGetNumCandidates)( 692*54e60f84SAndroid Build Coastguard Worker VADisplayContextP ctx, 693*54e60f84SAndroid Build Coastguard Worker int * num_candidates 694*54e60f84SAndroid Build Coastguard Worker ); 695*54e60f84SAndroid Build Coastguard Worker 696*54e60f84SAndroid Build Coastguard Worker /* Deprecated */ 697*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaGetDriverNameByIndex)( 698*54e60f84SAndroid Build Coastguard Worker VADisplayContextP ctx, 699*54e60f84SAndroid Build Coastguard Worker char **driver_name, 700*54e60f84SAndroid Build Coastguard Worker int candidate_index 701*54e60f84SAndroid Build Coastguard Worker ); 702*54e60f84SAndroid Build Coastguard Worker 703*54e60f84SAndroid Build Coastguard Worker /** 704*54e60f84SAndroid Build Coastguard Worker * \brief Callback to get an array of driver names. 705*54e60f84SAndroid Build Coastguard Worker * 706*54e60f84SAndroid Build Coastguard Worker * 707*54e60f84SAndroid Build Coastguard Worker * The caller must provide a num_drivers 708*54e60f84SAndroid Build Coastguard Worker * This structure is allocated from libva with calloc(). 709*54e60f84SAndroid Build Coastguard Worker * 710*54e60f84SAndroid Build Coastguard Worker * @param drivers An num_drivers sized array of null terminated strings. 711*54e60f84SAndroid Build Coastguard Worker * The array is managed my the caller. The callee will 712*54e60f84SAndroid Build Coastguard Worker * populate the individual driver name strings and the 713*54e60f84SAndroid Build Coastguard Worker * caller must free them. 714*54e60f84SAndroid Build Coastguard Worker * @param num_driver The number of driver strings contained within drivers. 715*54e60f84SAndroid Build Coastguard Worker * The caller must set that to the size of the drivers 716*54e60f84SAndroid Build Coastguard Worker * array, where the callee will update the value to 717*54e60f84SAndroid Build Coastguard Worker * min(caller num_driver, num_drivers_support). 718*54e60f84SAndroid Build Coastguard Worker */ 719*54e60f84SAndroid Build Coastguard Worker VAStatus(*vaGetDriverNames)( 720*54e60f84SAndroid Build Coastguard Worker VADisplayContextP ctx, 721*54e60f84SAndroid Build Coastguard Worker char **drivers, 722*54e60f84SAndroid Build Coastguard Worker unsigned *num_drivers 723*54e60f84SAndroid Build Coastguard Worker ); 724*54e60f84SAndroid Build Coastguard Worker 725*54e60f84SAndroid Build Coastguard Worker /** \brief Reserved bytes for future use, must be zero */ 726*54e60f84SAndroid Build Coastguard Worker unsigned long reserved[29]; 727*54e60f84SAndroid Build Coastguard Worker }; 728*54e60f84SAndroid Build Coastguard Worker 729*54e60f84SAndroid Build Coastguard Worker typedef VAStatus(*VADriverInit)( 730*54e60f84SAndroid Build Coastguard Worker VADriverContextP driver_context 731*54e60f84SAndroid Build Coastguard Worker ); 732*54e60f84SAndroid Build Coastguard Worker 733*54e60f84SAndroid Build Coastguard Worker #endif /* _VA_BACKEND_H_ */ 734