- add sources.
[platform/framework/web/crosswalk.git] / src / third_party / libva / va / egl / va_egl_private.h
1 /*
2  * Copyright (c) 2012 Intel Corporation. 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 #ifndef _VA_EGL_PRIVATE_H_
25 #define _VA_EGL_PRIVATE_H_
26
27 #include "va.h"
28 #include "va_backend.h"
29 #include "va_egl.h"
30 #include "va_backend_egl.h"
31
32 typedef struct VADisplayContextEGL *VADisplayContextEGLP;
33 typedef struct VADriverContextEGL  *VADriverContextEGLP;
34 typedef struct VASurfaceImplEGL    *VASurfaceImplEGLP;
35 typedef struct VADriverVTableEGL   *VADriverVTableEGLP;
36 typedef struct VADriverVTablePrivEGL *VADriverVTablePrivEGLP;
37 typedef void (*vaDestroyFunc)(VADisplayContextP);
38
39 struct VADisplayContextEGL {
40     vaDestroyFunc vaDestroy;
41 };
42
43 #define VA_DRIVER_CONTEXT_EGL(ctx) ((VADriverContextEGLP)((ctx)->egl))
44
45 struct VADriverVTablePrivEGL {
46     VAStatus (*vaQuerySurfaceTargetsEGL)(
47         VADisplay dpy,
48         EGLenum *target_list,           /* out */
49         int *num_targets                /* out */
50     );
51
52     VAStatus (*vaCreateSurfaceEGL)(
53         VADisplay dpy,
54         EGLenum target,
55         unsigned int width,
56         unsigned int height,
57         VASurfaceEGL *gl_surface
58     );
59
60     VAStatus (*vaDestroySurfaceEGL)(
61         VADisplay dpy,
62         VASurfaceEGL egl_surface
63     );
64
65     VAStatus (*vaAssociateSurfaceEGL)(
66         VADisplay dpy,
67         VASurfaceEGL egl_surface,
68         VASurfaceID surface,
69         unsigned int flags
70     );
71
72     VAStatus (*vaSyncSurfaceEGL)(
73         VADisplay dpy,
74         VASurfaceEGL egl_surface
75     );
76
77     VAStatus (*vaGetSurfaceInfoEGL)(
78         VADisplay dpy,
79         VASurfaceEGL egl_surface,
80         EGLenum *target,
81         EGLClientBuffer *buffer,
82         EGLint *attrib_list,
83         int *num_attribs
84     );
85
86     VAStatus (*vaDeassociateSurfaceEGL)(
87         VADisplay dpy,
88         VASurfaceEGL egl_surface
89     );
90 };
91
92 struct VADriverContextEGL {
93     struct VADriverVTablePrivEGL vtable;
94     unsigned int is_initialized : 1;
95     EGLDisplay  egl_display;
96 };
97
98 #endif /* _VA_EGL_PRIVATE_H_ */