xref: /aosp_15_r20/external/libva/va/glx/va_glx.h (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
1*54e60f84SAndroid Build Coastguard Worker /*
2*54e60f84SAndroid Build Coastguard Worker  * Copyright (C) 2009 Splitted-Desktop Systems. 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 #ifndef VA_GLX_H
26*54e60f84SAndroid Build Coastguard Worker #define VA_GLX_H
27*54e60f84SAndroid Build Coastguard Worker 
28*54e60f84SAndroid Build Coastguard Worker #include <va/va.h>
29*54e60f84SAndroid Build Coastguard Worker #include <GL/glx.h>
30*54e60f84SAndroid Build Coastguard Worker 
31*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
32*54e60f84SAndroid Build Coastguard Worker extern "C" {
33*54e60f84SAndroid Build Coastguard Worker #endif
34*54e60f84SAndroid Build Coastguard Worker 
35*54e60f84SAndroid Build Coastguard Worker /**
36*54e60f84SAndroid Build Coastguard Worker  * Return a suitable VADisplay for VA API
37*54e60f84SAndroid Build Coastguard Worker  *
38*54e60f84SAndroid Build Coastguard Worker  * @param[in] dpy the X11 display
39*54e60f84SAndroid Build Coastguard Worker  * @return a VADisplay
40*54e60f84SAndroid Build Coastguard Worker  */
41*54e60f84SAndroid Build Coastguard Worker VADisplay vaGetDisplayGLX(
42*54e60f84SAndroid Build Coastguard Worker     Display *dpy
43*54e60f84SAndroid Build Coastguard Worker );
44*54e60f84SAndroid Build Coastguard Worker 
45*54e60f84SAndroid Build Coastguard Worker /**
46*54e60f84SAndroid Build Coastguard Worker  * Create a surface used for display to OpenGL
47*54e60f84SAndroid Build Coastguard Worker  *
48*54e60f84SAndroid Build Coastguard Worker  * The application shall maintain the live GLX context itself.
49*54e60f84SAndroid Build Coastguard Worker  * Implementations are free to use glXGetCurrentContext() and
50*54e60f84SAndroid Build Coastguard Worker  * glXGetCurrentDrawable() functions for internal purposes.
51*54e60f84SAndroid Build Coastguard Worker  *
52*54e60f84SAndroid Build Coastguard Worker  * @param[in]  dpy        the VA display
53*54e60f84SAndroid Build Coastguard Worker  * @param[in]  target     the GL target to which the texture needs to be bound
54*54e60f84SAndroid Build Coastguard Worker  * @param[in]  texture    the GL texture
55*54e60f84SAndroid Build Coastguard Worker  * @param[out] gl_surface the VA/GLX surface
56*54e60f84SAndroid Build Coastguard Worker  * @return VA_STATUS_SUCCESS if successful
57*54e60f84SAndroid Build Coastguard Worker  */
58*54e60f84SAndroid Build Coastguard Worker VAStatus vaCreateSurfaceGLX(
59*54e60f84SAndroid Build Coastguard Worker     VADisplay dpy,
60*54e60f84SAndroid Build Coastguard Worker     GLenum    target,
61*54e60f84SAndroid Build Coastguard Worker     GLuint    texture,
62*54e60f84SAndroid Build Coastguard Worker     void    **gl_surface
63*54e60f84SAndroid Build Coastguard Worker );
64*54e60f84SAndroid Build Coastguard Worker 
65*54e60f84SAndroid Build Coastguard Worker /**
66*54e60f84SAndroid Build Coastguard Worker  * Destroy a VA/GLX surface
67*54e60f84SAndroid Build Coastguard Worker  *
68*54e60f84SAndroid Build Coastguard Worker  * The application shall maintain the live GLX context itself.
69*54e60f84SAndroid Build Coastguard Worker  * Implementations are free to use glXGetCurrentContext() and
70*54e60f84SAndroid Build Coastguard Worker  * glXGetCurrentDrawable() functions for internal purposes.
71*54e60f84SAndroid Build Coastguard Worker  *
72*54e60f84SAndroid Build Coastguard Worker  * @param[in]  dpy        the VA display
73*54e60f84SAndroid Build Coastguard Worker  * @param[in]  gl_surface the VA surface
74*54e60f84SAndroid Build Coastguard Worker  * @return VA_STATUS_SUCCESS if successful
75*54e60f84SAndroid Build Coastguard Worker  */
76*54e60f84SAndroid Build Coastguard Worker VAStatus vaDestroySurfaceGLX(
77*54e60f84SAndroid Build Coastguard Worker     VADisplay dpy,
78*54e60f84SAndroid Build Coastguard Worker     void     *gl_surface
79*54e60f84SAndroid Build Coastguard Worker );
80*54e60f84SAndroid Build Coastguard Worker 
81*54e60f84SAndroid Build Coastguard Worker /**
82*54e60f84SAndroid Build Coastguard Worker  * Copy a VA surface to a VA/GLX surface
83*54e60f84SAndroid Build Coastguard Worker  *
84*54e60f84SAndroid Build Coastguard Worker  * This function will not return until the copy is completed. At this
85*54e60f84SAndroid Build Coastguard Worker  * point, the underlying GL texture will contain the surface pixels
86*54e60f84SAndroid Build Coastguard Worker  * in an RGB format defined by the user.
87*54e60f84SAndroid Build Coastguard Worker  *
88*54e60f84SAndroid Build Coastguard Worker  * The application shall maintain the live GLX context itself.
89*54e60f84SAndroid Build Coastguard Worker  * Implementations are free to use glXGetCurrentContext() and
90*54e60f84SAndroid Build Coastguard Worker  * glXGetCurrentDrawable() functions for internal purposes.
91*54e60f84SAndroid Build Coastguard Worker  *
92*54e60f84SAndroid Build Coastguard Worker  * @param[in]  dpy        the VA display
93*54e60f84SAndroid Build Coastguard Worker  * @param[in]  gl_surface the VA/GLX destination surface
94*54e60f84SAndroid Build Coastguard Worker  * @param[in]  surface    the VA source surface
95*54e60f84SAndroid Build Coastguard Worker  * @param[in]  flags      the PutSurface flags
96*54e60f84SAndroid Build Coastguard Worker  * @return VA_STATUS_SUCCESS if successful
97*54e60f84SAndroid Build Coastguard Worker  */
98*54e60f84SAndroid Build Coastguard Worker VAStatus vaCopySurfaceGLX(
99*54e60f84SAndroid Build Coastguard Worker     VADisplay    dpy,
100*54e60f84SAndroid Build Coastguard Worker     void        *gl_surface,
101*54e60f84SAndroid Build Coastguard Worker     VASurfaceID  surface,
102*54e60f84SAndroid Build Coastguard Worker     unsigned int flags
103*54e60f84SAndroid Build Coastguard Worker );
104*54e60f84SAndroid Build Coastguard Worker 
105*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
106*54e60f84SAndroid Build Coastguard Worker }
107*54e60f84SAndroid Build Coastguard Worker #endif
108*54e60f84SAndroid Build Coastguard Worker 
109*54e60f84SAndroid Build Coastguard Worker #endif /* VA_GLX_H */
110