xref: /aosp_15_r20/external/mesa3d/src/glx/dri_common.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
3*61046927SAndroid Build Coastguard Worker  * Copyright © 2008 Red Hat, Inc.
4*61046927SAndroid Build Coastguard Worker  *
5*61046927SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
6*61046927SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Soft-
7*61046927SAndroid Build Coastguard Worker  * ware"), to deal in the Software without restriction, including without
8*61046927SAndroid Build Coastguard Worker  * limitation the rights to use, copy, modify, merge, publish, distribute,
9*61046927SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
10*61046927SAndroid Build Coastguard Worker  * Software is furnished to do so, provided that the above copyright
11*61046927SAndroid Build Coastguard Worker  * notice(s) and this permission notice appear in all copies of the Soft-
12*61046927SAndroid Build Coastguard Worker  * ware and that both the above copyright notice(s) and this permission
13*61046927SAndroid Build Coastguard Worker  * notice appear in supporting documentation.
14*61046927SAndroid Build Coastguard Worker  *
15*61046927SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16*61046927SAndroid Build Coastguard Worker  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
17*61046927SAndroid Build Coastguard Worker  * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
18*61046927SAndroid Build Coastguard Worker  * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
19*61046927SAndroid Build Coastguard Worker  * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
20*61046927SAndroid Build Coastguard Worker  * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21*61046927SAndroid Build Coastguard Worker  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
22*61046927SAndroid Build Coastguard Worker  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
23*61046927SAndroid Build Coastguard Worker  * MANCE OF THIS SOFTWARE.
24*61046927SAndroid Build Coastguard Worker  *
25*61046927SAndroid Build Coastguard Worker  * Except as contained in this notice, the name of a copyright holder shall
26*61046927SAndroid Build Coastguard Worker  * not be used in advertising or otherwise to promote the sale, use or
27*61046927SAndroid Build Coastguard Worker  * other dealings in this Software without prior written authorization of
28*61046927SAndroid Build Coastguard Worker  * the copyright holder.
29*61046927SAndroid Build Coastguard Worker  *
30*61046927SAndroid Build Coastguard Worker  * Authors:
31*61046927SAndroid Build Coastguard Worker  *   Kevin E. Martin <[email protected]>
32*61046927SAndroid Build Coastguard Worker  *   Brian Paul <[email protected]>
33*61046927SAndroid Build Coastguard Worker  *   Kristian Høgsberg ([email protected])
34*61046927SAndroid Build Coastguard Worker  */
35*61046927SAndroid Build Coastguard Worker 
36*61046927SAndroid Build Coastguard Worker #ifndef _DRI_COMMON_H
37*61046927SAndroid Build Coastguard Worker #define _DRI_COMMON_H
38*61046927SAndroid Build Coastguard Worker 
39*61046927SAndroid Build Coastguard Worker #ifdef GLX_DIRECT_RENDERING
40*61046927SAndroid Build Coastguard Worker 
41*61046927SAndroid Build Coastguard Worker #include "mesa_interface.h"
42*61046927SAndroid Build Coastguard Worker #include <stdbool.h>
43*61046927SAndroid Build Coastguard Worker #include "loader.h"
44*61046927SAndroid Build Coastguard Worker #include "util/macros.h" /* for PRINTFLIKE */
45*61046927SAndroid Build Coastguard Worker 
46*61046927SAndroid Build Coastguard Worker typedef struct __GLXDRIconfigPrivateRec __GLXDRIconfigPrivate;
47*61046927SAndroid Build Coastguard Worker 
48*61046927SAndroid Build Coastguard Worker struct __GLXDRIconfigPrivateRec
49*61046927SAndroid Build Coastguard Worker {
50*61046927SAndroid Build Coastguard Worker    struct glx_config base;
51*61046927SAndroid Build Coastguard Worker    const __DRIconfig *driConfig;
52*61046927SAndroid Build Coastguard Worker };
53*61046927SAndroid Build Coastguard Worker 
54*61046927SAndroid Build Coastguard Worker extern struct glx_config *driConvertConfigs(struct glx_config * modes,
55*61046927SAndroid Build Coastguard Worker                                            const __DRIconfig ** configs);
56*61046927SAndroid Build Coastguard Worker 
57*61046927SAndroid Build Coastguard Worker extern void driDestroyConfigs(const __DRIconfig **configs);
58*61046927SAndroid Build Coastguard Worker 
59*61046927SAndroid Build Coastguard Worker extern __GLXDRIdrawable *
60*61046927SAndroid Build Coastguard Worker driFetchDrawable(struct glx_context *gc, GLXDrawable glxDrawable);
61*61046927SAndroid Build Coastguard Worker 
62*61046927SAndroid Build Coastguard Worker extern void
63*61046927SAndroid Build Coastguard Worker driReleaseDrawables(struct glx_context *gc);
64*61046927SAndroid Build Coastguard Worker 
65*61046927SAndroid Build Coastguard Worker struct dri_ctx_attribs {
66*61046927SAndroid Build Coastguard Worker    unsigned major_ver;
67*61046927SAndroid Build Coastguard Worker    unsigned minor_ver;
68*61046927SAndroid Build Coastguard Worker    uint32_t render_type;
69*61046927SAndroid Build Coastguard Worker    uint32_t flags;
70*61046927SAndroid Build Coastguard Worker    unsigned api;
71*61046927SAndroid Build Coastguard Worker    int reset;
72*61046927SAndroid Build Coastguard Worker    int release;
73*61046927SAndroid Build Coastguard Worker    int no_error;
74*61046927SAndroid Build Coastguard Worker };
75*61046927SAndroid Build Coastguard Worker 
76*61046927SAndroid Build Coastguard Worker extern const struct glx_screen_vtable dri_screen_vtable;
77*61046927SAndroid Build Coastguard Worker 
78*61046927SAndroid Build Coastguard Worker extern unsigned
79*61046927SAndroid Build Coastguard Worker dri_context_error_to_glx_error(unsigned error);
80*61046927SAndroid Build Coastguard Worker 
81*61046927SAndroid Build Coastguard Worker extern int
82*61046927SAndroid Build Coastguard Worker dri_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
83*61046927SAndroid Build Coastguard Worker                         struct dri_ctx_attribs *dca);
84*61046927SAndroid Build Coastguard Worker 
85*61046927SAndroid Build Coastguard Worker extern struct glx_context *
86*61046927SAndroid Build Coastguard Worker dri_common_create_context(struct glx_screen *base,
87*61046927SAndroid Build Coastguard Worker                           struct glx_config *config_base,
88*61046927SAndroid Build Coastguard Worker                           struct glx_context *shareList,
89*61046927SAndroid Build Coastguard Worker                           int renderType);
90*61046927SAndroid Build Coastguard Worker 
91*61046927SAndroid Build Coastguard Worker extern const __DRIbackgroundCallableExtension driBackgroundCallable;
92*61046927SAndroid Build Coastguard Worker extern const __DRIuseInvalidateExtension dri2UseInvalidate;
93*61046927SAndroid Build Coastguard Worker 
94*61046927SAndroid Build Coastguard Worker Bool
95*61046927SAndroid Build Coastguard Worker dri_bind_context(struct glx_context *context, GLXDrawable draw, GLXDrawable read);
96*61046927SAndroid Build Coastguard Worker void
97*61046927SAndroid Build Coastguard Worker dri_unbind_context(struct glx_context *context);
98*61046927SAndroid Build Coastguard Worker void
99*61046927SAndroid Build Coastguard Worker dri_destroy_context(struct glx_context *context);
100*61046927SAndroid Build Coastguard Worker struct glx_context *
101*61046927SAndroid Build Coastguard Worker dri_create_context_attribs(struct glx_screen *base,
102*61046927SAndroid Build Coastguard Worker                            struct glx_config *config_base,
103*61046927SAndroid Build Coastguard Worker                            struct glx_context *shareList,
104*61046927SAndroid Build Coastguard Worker                            unsigned num_attribs,
105*61046927SAndroid Build Coastguard Worker                            const uint32_t *attribs,
106*61046927SAndroid Build Coastguard Worker                            unsigned *error);
107*61046927SAndroid Build Coastguard Worker _X_HIDDEN int
108*61046927SAndroid Build Coastguard Worker glx_dri_query_renderer_integer(struct glx_screen *base, int attribute,
109*61046927SAndroid Build Coastguard Worker                             unsigned int *value);
110*61046927SAndroid Build Coastguard Worker _X_HIDDEN int
111*61046927SAndroid Build Coastguard Worker glx_dri_query_renderer_string(struct glx_screen *base, int attribute,
112*61046927SAndroid Build Coastguard Worker                            const char **value);
113*61046927SAndroid Build Coastguard Worker char *
114*61046927SAndroid Build Coastguard Worker dri_get_driver_name(struct glx_screen *glx_screen);
115*61046927SAndroid Build Coastguard Worker void
116*61046927SAndroid Build Coastguard Worker dri_bind_tex_image(__GLXDRIdrawable *base, int buffer, const int *attrib_list);
117*61046927SAndroid Build Coastguard Worker bool
118*61046927SAndroid Build Coastguard Worker dri_screen_init(struct glx_screen *psc, struct glx_display *priv, int screen, int fd, const __DRIextension **loader_extensions, bool driver_name_is_inferred);
119*61046927SAndroid Build Coastguard Worker #endif /* GLX_DIRECT_RENDERING */
120*61046927SAndroid Build Coastguard Worker 
121*61046927SAndroid Build Coastguard Worker #endif /* _DRI_COMMON_H */
122