22 #include "../../SDL_internal.h"
24 #if SDL_VIDEO_DRIVER_KMSDRM && SDL_VIDEO_OPENGL_EGL
32 #ifndef EGL_PLATFORM_GBM_MESA
33 #define EGL_PLATFORM_GBM_MESA 0x31D7
44 SDL_EGL_CreateContext_impl(KMSDRM_LEGACY)
47 if (!
_this->egl_data) {
51 if (interval == 0 || interval == 1) {
52 _this->egl_data->egl_swapinterval = interval;
54 return SDL_SetError(
"Only swap intervals of 0 or 1 are supported");
69 if (windata->egl_surface_dirty) {
76 if (
_this->egl_data->egl_swapinterval == 1) {
85 KMSDRM_LEGACY_gbm_surface_release_buffer(windata->
gs, windata->
curr_bo);
99 windata->
next_bo = KMSDRM_LEGACY_gbm_surface_lock_front_buffer(windata->
gs);
116 ret = KMSDRM_LEGACY_drmModeSetCrtc(viddata->
drm_fd, dispdata->
crtc_id, fb_info->
fb_id, 0,
117 0, &dispdata->
conn->connector_id, 1, &dispdata->
mode);
125 ret = KMSDRM_LEGACY_drmModePageFlip(viddata->
drm_fd, dispdata->
crtc_id, fb_info->
fb_id,
130 if (
_this->egl_data->egl_swapinterval == 1) {
148 SDL_EGL_MakeCurrent_impl(KMSDRM_LEGACY)
int KMSDRM_LEGACY_CreateSurfaces(_THIS, SDL_Window *window)
int KMSDRM_LEGACY_GLES_LoadLibrary(_THIS, const char *path)
int KMSDRM_LEGACY_GLES_SwapWindow(_THIS, SDL_Window *window)
SDL_bool KMSDRM_LEGACY_WaitPageFlip(_THIS, SDL_WindowData *windata, int timeout)
int KMSDRM_LEGACY_GLES_SetSwapInterval(_THIS, int interval)
KMSDRM_LEGACY_FBInfo * KMSDRM_LEGACY_FBFromBO(_THIS, struct gbm_bo *bo)
int uint32_t uint32_t uint32_t const uint32_t const uint32_t const uint32_t uint32_t uint32_t flags struct gbm_device * gbm
GLbitfield GLuint64 timeout
GLsizei const GLchar *const * path
SDL_VideoDisplay * SDL_GetDisplayForWindow(SDL_Window *window)
static SDL_VideoDevice * _this
#define EGL_PLATFORM_GBM_MESA
EGLSurface EGLNativeWindowType * window
SDL_bool waiting_for_flip
The type used to identify a window.