xref: /aosp_15_r20/external/libva/va/glx/va_glx_private.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_PRIVATE_H
26*54e60f84SAndroid Build Coastguard Worker #define VA_GLX_PRIVATE_H
27*54e60f84SAndroid Build Coastguard Worker 
28*54e60f84SAndroid Build Coastguard Worker #include "sysdeps.h"
29*54e60f84SAndroid Build Coastguard Worker #include "va.h"
30*54e60f84SAndroid Build Coastguard Worker #include "va_backend.h"
31*54e60f84SAndroid Build Coastguard Worker #include "va_x11.h"
32*54e60f84SAndroid Build Coastguard Worker #include "va_glx.h"
33*54e60f84SAndroid Build Coastguard Worker #include "va_backend_glx.h"
34*54e60f84SAndroid Build Coastguard Worker #include <GL/glxext.h>
35*54e60f84SAndroid Build Coastguard Worker 
36*54e60f84SAndroid Build Coastguard Worker #if GLX_GLXEXT_VERSION < 18
37*54e60f84SAndroid Build Coastguard Worker typedef void (*PFNGLXBINDTEXIMAGEEXTPROC)(Display *, GLXDrawable, int, const int *);
38*54e60f84SAndroid Build Coastguard Worker typedef void (*PFNGLXRELEASETEXIMAGEEXTPROC)(Display *, GLXDrawable, int);
39*54e60f84SAndroid Build Coastguard Worker #endif
40*54e60f84SAndroid Build Coastguard Worker 
41*54e60f84SAndroid Build Coastguard Worker #if GLX_GLXEXT_VERSION < 27
42*54e60f84SAndroid Build Coastguard Worker /* XXX: this is not exactly that version but this is the only means to
43*54e60f84SAndroid Build Coastguard Worker    make sure we have the correct <GL/glx.h> with those signatures */
44*54e60f84SAndroid Build Coastguard Worker typedef GLXPixmap(*PFNGLXCREATEPIXMAPPROC)(Display *, GLXFBConfig, Pixmap, const int *);
45*54e60f84SAndroid Build Coastguard Worker typedef void (*PFNGLXDESTROYPIXMAPPROC)(Display *, GLXPixmap);
46*54e60f84SAndroid Build Coastguard Worker #endif
47*54e60f84SAndroid Build Coastguard Worker 
48*54e60f84SAndroid Build Coastguard Worker typedef struct VAOpenGLVTable *VAOpenGLVTableP;
49*54e60f84SAndroid Build Coastguard Worker 
50*54e60f84SAndroid Build Coastguard Worker struct VAOpenGLVTable {
51*54e60f84SAndroid Build Coastguard Worker     PFNGLXCREATEPIXMAPPROC              glx_create_pixmap;
52*54e60f84SAndroid Build Coastguard Worker     PFNGLXDESTROYPIXMAPPROC             glx_destroy_pixmap;
53*54e60f84SAndroid Build Coastguard Worker     PFNGLXBINDTEXIMAGEEXTPROC           glx_bind_tex_image;
54*54e60f84SAndroid Build Coastguard Worker     PFNGLXRELEASETEXIMAGEEXTPROC        glx_release_tex_image;
55*54e60f84SAndroid Build Coastguard Worker     PFNGLGENFRAMEBUFFERSEXTPROC         gl_gen_framebuffers;
56*54e60f84SAndroid Build Coastguard Worker     PFNGLDELETEFRAMEBUFFERSEXTPROC      gl_delete_framebuffers;
57*54e60f84SAndroid Build Coastguard Worker     PFNGLBINDFRAMEBUFFEREXTPROC         gl_bind_framebuffer;
58*54e60f84SAndroid Build Coastguard Worker     PFNGLGENRENDERBUFFERSEXTPROC        gl_gen_renderbuffers;
59*54e60f84SAndroid Build Coastguard Worker     PFNGLDELETERENDERBUFFERSEXTPROC     gl_delete_renderbuffers;
60*54e60f84SAndroid Build Coastguard Worker     PFNGLBINDRENDERBUFFEREXTPROC        gl_bind_renderbuffer;
61*54e60f84SAndroid Build Coastguard Worker     PFNGLRENDERBUFFERSTORAGEEXTPROC     gl_renderbuffer_storage;
62*54e60f84SAndroid Build Coastguard Worker     PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC gl_framebuffer_renderbuffer;
63*54e60f84SAndroid Build Coastguard Worker     PFNGLFRAMEBUFFERTEXTURE2DEXTPROC    gl_framebuffer_texture_2d;
64*54e60f84SAndroid Build Coastguard Worker     PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC  gl_check_framebuffer_status;
65*54e60f84SAndroid Build Coastguard Worker };
66*54e60f84SAndroid Build Coastguard Worker 
67*54e60f84SAndroid Build Coastguard Worker typedef struct VADisplayContextGLX *VADisplayContextGLXP;
68*54e60f84SAndroid Build Coastguard Worker typedef struct VADriverContextGLX  *VADriverContextGLXP;
69*54e60f84SAndroid Build Coastguard Worker typedef struct VASurfaceGLX        *VASurfaceGLXP;
70*54e60f84SAndroid Build Coastguard Worker typedef struct VADriverVTableGLX   *VADriverVTableGLXP;
71*54e60f84SAndroid Build Coastguard Worker 
72*54e60f84SAndroid Build Coastguard Worker typedef void (*vaDestroyFunc)(VADisplayContextP);
73*54e60f84SAndroid Build Coastguard Worker 
74*54e60f84SAndroid Build Coastguard Worker struct VADisplayContextGLX {
75*54e60f84SAndroid Build Coastguard Worker     vaDestroyFunc vaDestroy;
76*54e60f84SAndroid Build Coastguard Worker };
77*54e60f84SAndroid Build Coastguard Worker 
78*54e60f84SAndroid Build Coastguard Worker #define VA_DRIVER_CONTEXT_GLX(ctx) ((VADriverContextGLXP)((ctx)->glx))
79*54e60f84SAndroid Build Coastguard Worker 
80*54e60f84SAndroid Build Coastguard Worker struct VADriverContextGLX {
81*54e60f84SAndroid Build Coastguard Worker     struct VADriverVTableGLX    vtable;
82*54e60f84SAndroid Build Coastguard Worker     struct VAOpenGLVTable       gl_vtable;
83*54e60f84SAndroid Build Coastguard Worker     unsigned int                is_initialized  : 1;
84*54e60f84SAndroid Build Coastguard Worker };
85*54e60f84SAndroid Build Coastguard Worker 
86*54e60f84SAndroid Build Coastguard Worker #endif /* VA_GLX_PRIVATE_H */
87