xref: /aosp_15_r20/external/libva/va/va_backend.h (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
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