diff options
| author | allusive-dev <[email protected]> | 2023-09-19 17:47:33 +1000 |
|---|---|---|
| committer | allusive-dev <[email protected]> | 2023-09-19 17:47:33 +1000 |
| commit | a93aba600b1c5d019b680b9f4ff3fa85d5d43a60 (patch) | |
| tree | 77f8152222655657472a70e0bfa413a0495dd555 /src/backend/gl/glx.h | |
| parent | reset (diff) | |
| download | compfy-a93aba600b1c5d019b680b9f4ff3fa85d5d43a60.tar.xz compfy-a93aba600b1c5d019b680b9f4ff3fa85d5d43a60.zip | |
Fixed broken files/code and other errors
Diffstat (limited to 'src/backend/gl/glx.h')
| -rw-r--r-- | src/backend/gl/glx.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/backend/gl/glx.h b/src/backend/gl/glx.h new file mode 100644 index 0000000..1061f0b --- /dev/null +++ b/src/backend/gl/glx.h @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Yuxuan Shui <[email protected]> +#pragma once +#include <stdbool.h> +// Older version of glx.h defines function prototypes for these extensions... +// Rename them to avoid conflicts +#define glXSwapIntervalMESA glXSwapIntervalMESA_ +#define glXBindTexImageEXT glXBindTexImageEXT_ +#define glXReleaseTexImageEXT glXReleaseTexImageEXT +#include <GL/glx.h> +#undef glXSwapIntervalMESA +#undef glXBindTexImageEXT +#undef glXReleaseTexImageEXT +#include <X11/Xlib.h> +#include <xcb/xcb.h> +#include <xcb/render.h> + +#include "log.h" +#include "compiler.h" +#include "utils.h" +#include "x.h" + +struct glx_fbconfig_info { + GLXFBConfig cfg; + int texture_tgts; + int texture_fmt; + int y_inverted; +}; + +/// The search criteria for glx_find_fbconfig +struct glx_fbconfig_criteria { + /// Bit width of the red component + int red_size; + /// Bit width of the green component + int green_size; + /// Bit width of the blue component + int blue_size; + /// Bit width of the alpha component + int alpha_size; + /// The depth of X visual + int visual_depth; +}; + +struct glx_fbconfig_info *glx_find_fbconfig(Display *, int screen, struct xvisual_info); + + +struct glxext_info { + bool initialized; + bool has_GLX_SGI_video_sync; + bool has_GLX_SGI_swap_control; + bool has_GLX_OML_sync_control; + bool has_GLX_MESA_swap_control; + bool has_GLX_EXT_swap_control; + bool has_GLX_EXT_texture_from_pixmap; + bool has_GLX_ARB_create_context; + bool has_GLX_EXT_buffer_age; + bool has_GLX_MESA_query_renderer; +}; + +extern struct glxext_info glxext; + +extern PFNGLXGETVIDEOSYNCSGIPROC glXGetVideoSyncSGI; +extern PFNGLXWAITVIDEOSYNCSGIPROC glXWaitVideoSyncSGI; +extern PFNGLXGETSYNCVALUESOMLPROC glXGetSyncValuesOML; +extern PFNGLXWAITFORMSCOMLPROC glXWaitForMscOML; +extern PFNGLXSWAPINTERVALEXTPROC glXSwapIntervalEXT; +extern PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI; +extern PFNGLXSWAPINTERVALMESAPROC glXSwapIntervalMESA; +extern PFNGLXBINDTEXIMAGEEXTPROC glXBindTexImageEXT; +extern PFNGLXRELEASETEXIMAGEEXTPROC glXReleaseTexImageEXT; +extern PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB; + +#ifdef GLX_MESA_query_renderer +extern PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC glXQueryCurrentRendererIntegerMESA; +#endif + +void glxext_init(Display *, int screen); |