mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-23 06:59:44 -05:00
Refactor EGL/GL API loading
Remove glapi.sh code generation, replace it with hand-written loading
code that checks extension strings before calling eglGetProcAddress.
The GLES2 renderer still uses global state because of:
- {PUSH,POP}_GLES2_DEBUG macros
- wlr_gles2_texture_from_* taking a wlr_egl instead of the renderer
This commit is contained in:
parent
774548696c
commit
515679e4fe
11 changed files with 191 additions and 245 deletions
|
|
@ -14,6 +14,16 @@
|
|||
#include <wlr/render/wlr_texture.h>
|
||||
#include <wlr/util/log.h>
|
||||
|
||||
struct wlr_gles2_procs {
|
||||
PFNGLEGLIMAGETARGETTEXTURE2DOESPROC glEGLImageTargetTexture2DOES;
|
||||
PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallbackKHR;
|
||||
PFNGLDEBUGMESSAGECONTROLKHRPROC glDebugMessageControlKHR;
|
||||
PFNGLPOPDEBUGGROUPKHRPROC glPopDebugGroupKHR;
|
||||
PFNGLPUSHDEBUGGROUPKHRPROC glPushDebugGroupKHR;
|
||||
};
|
||||
|
||||
extern struct wlr_gles2_procs gles2_procs;
|
||||
|
||||
struct wlr_gles2_pixel_format {
|
||||
enum wl_shm_format wl_format;
|
||||
GLint gl_format, gl_type;
|
||||
|
|
@ -33,7 +43,6 @@ struct wlr_gles2_renderer {
|
|||
struct wlr_renderer wlr_renderer;
|
||||
|
||||
struct wlr_egl *egl;
|
||||
const char *exts_str;
|
||||
|
||||
struct {
|
||||
bool read_format_bgra_ext;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@
|
|||
|
||||
#include <EGL/egl.h>
|
||||
#include <EGL/eglext.h>
|
||||
// TODO: remove eglmesaext.h
|
||||
#include <EGL/eglmesaext.h>
|
||||
#include <pixman.h>
|
||||
#include <stdbool.h>
|
||||
#include <wayland-server-core.h>
|
||||
|
|
@ -34,8 +36,6 @@ struct wlr_egl {
|
|||
EGLConfig config;
|
||||
EGLContext context;
|
||||
|
||||
const char *exts_str;
|
||||
|
||||
struct {
|
||||
bool bind_wayland_display_wl;
|
||||
bool buffer_age_ext;
|
||||
|
|
@ -43,10 +43,25 @@ struct wlr_egl {
|
|||
bool image_dma_buf_export_mesa;
|
||||
bool image_dmabuf_import_ext;
|
||||
bool image_dmabuf_import_modifiers_ext;
|
||||
bool swap_buffers_with_damage_ext;
|
||||
bool swap_buffers_with_damage_khr;
|
||||
bool swap_buffers_with_damage;
|
||||
} exts;
|
||||
|
||||
struct {
|
||||
PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT;
|
||||
PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC eglCreatePlatformWindowSurfaceEXT;
|
||||
PFNEGLCREATEIMAGEKHRPROC eglCreateImageKHR;
|
||||
PFNEGLDESTROYIMAGEKHRPROC eglDestroyImageKHR;
|
||||
PFNEGLQUERYWAYLANDBUFFERWL eglQueryWaylandBufferWL;
|
||||
PFNEGLBINDWAYLANDDISPLAYWL eglBindWaylandDisplayWL;
|
||||
PFNEGLUNBINDWAYLANDDISPLAYWL eglUnbindWaylandDisplayWL;
|
||||
PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC eglSwapBuffersWithDamage; // KHR or EXT
|
||||
PFNEGLQUERYDMABUFFORMATSEXTPROC eglQueryDmaBufFormatsEXT;
|
||||
PFNEGLQUERYDMABUFMODIFIERSEXTPROC eglQueryDmaBufModifiersEXT;
|
||||
PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC eglExportDMABUFImageQueryMESA;
|
||||
PFNEGLEXPORTDMABUFIMAGEMESAPROC eglExportDMABUFImageMESA;
|
||||
PFNEGLDEBUGMESSAGECONTROLKHRPROC eglDebugMessageControlKHR;
|
||||
} procs;
|
||||
|
||||
struct wl_display *wl_display;
|
||||
|
||||
struct wlr_drm_format_set dmabuf_formats;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue