- add sources.
[platform/framework/web/crosswalk.git] / src / third_party / libva / va / egl / va_backend_egl.h
1 /*
2  * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the
6  * "Software"), to deal in the Software without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sub license, and/or sell copies of the Software, and to
9  * permit persons to whom the Software is furnished to do so, subject to
10  * the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the
13  * next paragraph) shall be included in all copies or substantial portions
14  * of the Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24
25 #ifndef VA_BACKEND_EGL_H
26 #define VA_BACKEND_EGL_H
27
28 #include <va/va_egl.h>
29 #include <va/va_backend.h>
30
31 struct VADriverVTableEGL {
32     /* Get EGL ClientBufer buffer index and device id from surface id*/
33     VAStatus (*vaGetEGLClientBufferFromSurface) (
34         VADriverContextP ctx,
35         VASurfaceID surface,
36         void **buffer
37     );
38
39     /* TBD: more APIs for EGL */
40     int max_egl_surface_targets;
41     int max_egl_surface_attributes;
42
43     VAStatus (*vaQuerySurfaceTargetsEGL)(
44         VADriverContextP ctx,
45         EGLenum *target_list,           /* out */
46         int *num_targets                /* out */
47     );
48
49     VAStatus (*vaCreateSurfaceEGL)(
50         VADriverContextP ctx,
51         EGLenum target,
52         unsigned int width,
53         unsigned int height,
54         VASurfaceEGL *gl_surface
55     );
56
57     /* Optional: destroy a VA/EGL surface */
58     VAStatus (*vaDestroySurfaceEGL)(
59         VADriverContextP ctx,
60         VASurfaceEGL egl_surface
61     );
62
63     VAStatus (*vaAssociateSurfaceEGL)(
64         VADriverContextP ctx,
65         VASurfaceEGL egl_surface,
66         VASurfaceID surface,
67         unsigned int flags
68     );
69
70     VAStatus (*vaSyncSurfaceEGL)(
71         VADriverContextP ctx,
72         VASurfaceEGL egl_surface
73     );
74
75     VAStatus (*vaGetSurfaceInfoEGL)(
76         VADisplay dpy,
77         VASurfaceEGL egl_surface,
78         EGLenum *target,
79         EGLClientBuffer *buffer,
80         EGLint *attrib_list,
81         int *num_attribs
82     );
83
84     VAStatus (*vaDeassociateSurfaceEGL)(
85         VADriverContextP ctx,
86         VASurfaceEGL egl_surface
87     );
88 };
89
90 #endif /* VA_BACKEND_EGL_H */