SDL  2.0
SDL_kmsdrm_legacy_video.h
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
4 
5  This software is provided 'as-is', without any express or implied
6  warranty. In no event will the authors be held liable for any damages
7  arising from the use of this software.
8 
9  Permission is granted to anyone to use this software for any purpose,
10  including commercial applications, and to alter it and redistribute it
11  freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19  3. This notice may not be removed or altered from any source distribution.
20 */
21 
22 #include "../../SDL_internal.h"
23 
24 #ifndef __SDL_KMSDRM_LEGACYVIDEO_H__
25 #define __SDL_KMSDRM_LEGACYVIDEO_H__
26 
27 #include "../SDL_sysvideo.h"
28 
29 #include <fcntl.h>
30 #include <unistd.h>
31 #include <xf86drm.h>
32 #include <xf86drmMode.h>
33 #include <gbm.h>
34 #if SDL_VIDEO_OPENGL_EGL
35 #include <EGL/egl.h>
36 #endif
37 
38 typedef struct SDL_VideoData
39 {
40  int devindex; /* device index that was passed on creation */
41  int drm_fd; /* DRM file desc */
42  struct gbm_device *gbm;
43 
48 
49 
50 typedef struct SDL_DisplayModeData
51 {
52  int mode_index;
54 
55 
56 typedef struct SDL_DisplayData
57 {
59  drmModeConnector *conn;
60  drmModeModeInfo mode;
61  drmModeCrtc *saved_crtc; /* CRTC to restore on quit */
63 
64 
65 typedef struct SDL_WindowData
66 {
68  struct gbm_surface *gs;
69  struct gbm_bo *curr_bo;
70  struct gbm_bo *next_bo;
71  struct gbm_bo *crtc_bo;
74 #if SDL_VIDEO_OPENGL_EGL
75  int egl_surface_dirty;
77 #endif
79 
80 typedef struct KMSDRM_LEGACY_FBInfo
81 {
82  int drm_fd; /* DRM file desc */
83  uint32_t fb_id; /* DRM framebuffer ID */
85 
86 /* Helper functions */
90 
91 /****************************************************************************/
92 /* SDL_VideoDevice functions declaration */
93 /****************************************************************************/
94 
95 /* Display and window functions */
114 
115 /* Window manager function */
117  struct SDL_SysWMinfo *info);
118 
119 /* OpenGL/OpenGL ES functions */
121 void *KMSDRM_LEGACY_GLES_GetProcAddress(_THIS, const char *proc);
129 
130 #endif /* __SDL_KMSDRM_LEGACYVIDEO_H__ */
131 
132 /* vi: set ts=4 sw=4 expandtab: */
#define _THIS
unsigned int uint32_t
int KMSDRM_LEGACY_GLES_MakeCurrent(_THIS, SDL_Window *window, SDL_GLContext context)
int KMSDRM_LEGACY_CreateWindowFrom(_THIS, SDL_Window *window, const void *data)
void KMSDRM_LEGACY_SetWindowPosition(_THIS, SDL_Window *window)
void KMSDRM_LEGACY_GLES_DeleteContext(_THIS, SDL_GLContext context)
void KMSDRM_LEGACY_RestoreWindow(_THIS, SDL_Window *window)
void * KMSDRM_LEGACY_GLES_GetProcAddress(_THIS, const char *proc)
void KMSDRM_LEGACY_HideWindow(_THIS, SDL_Window *window)
int KMSDRM_LEGACY_CreateSurfaces(_THIS, SDL_Window *window)
void KMSDRM_LEGACY_SetWindowTitle(_THIS, SDL_Window *window)
int KMSDRM_LEGACY_GLES_LoadLibrary(_THIS, const char *path)
SDL_GLContext KMSDRM_LEGACY_GLES_CreateContext(_THIS, SDL_Window *window)
void KMSDRM_LEGACY_MaximizeWindow(_THIS, SDL_Window *window)
void KMSDRM_LEGACY_ShowWindow(_THIS, SDL_Window *window)
void KMSDRM_LEGACY_VideoQuit(_THIS)
void KMSDRM_LEGACY_SetWindowGrab(_THIS, SDL_Window *window, SDL_bool grabbed)
int KMSDRM_LEGACY_GLES_SwapWindow(_THIS, SDL_Window *window)
void KMSDRM_LEGACY_RaiseWindow(_THIS, SDL_Window *window)
int KMSDRM_LEGACY_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
int KMSDRM_LEGACY_VideoInit(_THIS)
SDL_bool KMSDRM_LEGACY_GetWindowWMInfo(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
void KMSDRM_LEGACY_GLES_UnloadLibrary(_THIS)
void KMSDRM_LEGACY_DestroyWindow(_THIS, SDL_Window *window)
void KMSDRM_LEGACY_MinimizeWindow(_THIS, SDL_Window *window)
void KMSDRM_LEGACY_SetWindowSize(_THIS, SDL_Window *window)
void KMSDRM_LEGACY_GetDisplayModes(_THIS, SDL_VideoDisplay *display)
SDL_bool KMSDRM_LEGACY_WaitPageFlip(_THIS, SDL_WindowData *windata, int timeout)
int KMSDRM_LEGACY_GLES_SetSwapInterval(_THIS, int interval)
int KMSDRM_LEGACY_CreateWindow(_THIS, SDL_Window *window)
KMSDRM_LEGACY_FBInfo * KMSDRM_LEGACY_FBFromBO(_THIS, struct gbm_bo *bo)
void KMSDRM_LEGACY_SetWindowIcon(_THIS, SDL_Window *window, SDL_Surface *icon)
int KMSDRM_LEGACY_GLES_GetSwapInterval(_THIS)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: SDL_opengl.h:1974
GLenum mode
GLbitfield GLuint64 timeout
GLsizei const GLchar *const * path
SDL_bool
Definition: SDL_stdinc.h:168
void * SDL_GLContext
An opaque handle to an OpenGL context.
Definition: SDL_video.h:195
void * EGLSurface
Definition: egl.h:59
EGLSurface EGLNativeWindowType * window
Definition: eglext.h:1025
drmModeModeInfo mode
drmModeConnector * conn
The structure that defines a display mode.
Definition: SDL_video.h:54
A collection of pixels used in software blitting.
Definition: SDL_surface.h:71
SDL_Window ** windows
struct gbm_device * gbm
EGLSurface egl_surface
struct gbm_bo * next_bo
struct gbm_bo * curr_bo
SDL_VideoData * viddata
struct gbm_surface * gs
struct gbm_bo * crtc_bo
The type used to identify a window.
Definition: SDL_sysvideo.h:75
static screen_context_t context
Definition: video.c:25