summaryrefslogtreecommitdiff
path: root/contrib/SDL-3.2.8/src/video/raspberry/SDL_rpivideo.h
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2025-12-27 12:03:39 -0800
committer3gg <3gg@shellblade.net>2025-12-27 12:03:39 -0800
commit5a079a2d114f96d4847d1ee305d5b7c16eeec50e (patch)
tree8926ab44f168acf787d8e19608857b3af0f82758 /contrib/SDL-3.2.8/src/video/raspberry/SDL_rpivideo.h
Initial commit
Diffstat (limited to 'contrib/SDL-3.2.8/src/video/raspberry/SDL_rpivideo.h')
-rw-r--r--contrib/SDL-3.2.8/src/video/raspberry/SDL_rpivideo.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/contrib/SDL-3.2.8/src/video/raspberry/SDL_rpivideo.h b/contrib/SDL-3.2.8/src/video/raspberry/SDL_rpivideo.h
new file mode 100644
index 0000000..c154655
--- /dev/null
+++ b/contrib/SDL-3.2.8/src/video/raspberry/SDL_rpivideo.h
@@ -0,0 +1,89 @@
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2025 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#ifndef SDL_rpivideo_h
23#define SDL_rpivideo_h
24
25#include "SDL_internal.h"
26#include "../SDL_sysvideo.h"
27
28#include <bcm_host.h>
29#include <SDL3/SDL_egl.h>
30
31struct SDL_VideoData
32{
33 uint32_t egl_refcount; // OpenGL ES reference count
34};
35
36struct SDL_DisplayData
37{
38 DISPMANX_DISPLAY_HANDLE_T dispman_display;
39};
40
41struct SDL_WindowData
42{
43 EGL_DISPMANX_WINDOW_T dispman_window;
44#ifdef SDL_VIDEO_OPENGL_EGL
45 EGLSurface egl_surface;
46#endif
47
48 // Vsync callback cond and mutex
49 SDL_Condition *vsync_cond;
50 SDL_Mutex *vsync_cond_mutex;
51 bool double_buffer;
52};
53
54#define SDL_RPI_VIDEOLAYER 10000 // High enough so to occlude everything
55#define SDL_RPI_MOUSELAYER SDL_RPI_VIDEOLAYER + 1
56
57/****************************************************************************/
58// SDL_VideoDevice functions declaration
59/****************************************************************************/
60
61// Display and window functions
62extern bool RPI_VideoInit(SDL_VideoDevice *_this);
63extern void RPI_VideoQuit(SDL_VideoDevice *_this);
64extern bool RPI_GetDisplayModes(SDL_VideoDevice *_this, SDL_VideoDisplay *display);
65extern bool RPI_SetDisplayMode(SDL_VideoDevice *_this, SDL_VideoDisplay *display, SDL_DisplayMode *mode);
66extern bool RPI_CreateWindow(SDL_VideoDevice *_this, SDL_Window *window, SDL_PropertiesID create_props);
67extern void RPI_SetWindowTitle(SDL_VideoDevice *_this, SDL_Window *window);
68extern bool RPI_SetWindowPosition(SDL_VideoDevice *_this, SDL_Window *window);
69extern void RPI_SetWindowSize(SDL_VideoDevice *_this, SDL_Window *window);
70extern void RPI_ShowWindow(SDL_VideoDevice *_this, SDL_Window *window);
71extern void RPI_HideWindow(SDL_VideoDevice *_this, SDL_Window *window);
72extern void RPI_RaiseWindow(SDL_VideoDevice *_this, SDL_Window *window);
73extern void RPI_MaximizeWindow(SDL_VideoDevice *_this, SDL_Window *window);
74extern void RPI_MinimizeWindow(SDL_VideoDevice *_this, SDL_Window *window);
75extern void RPI_RestoreWindow(SDL_VideoDevice *_this, SDL_Window *window);
76extern void RPI_DestroyWindow(SDL_VideoDevice *_this, SDL_Window *window);
77
78// OpenGL/OpenGL ES functions
79extern bool RPI_GLES_LoadLibrary(SDL_VideoDevice *_this, const char *path);
80extern SDL_FunctionPointer RPI_GLES_GetProcAddress(SDL_VideoDevice *_this, const char *proc);
81extern void RPI_GLES_UnloadLibrary(SDL_VideoDevice *_this);
82extern SDL_GLContext RPI_GLES_CreateContext(SDL_VideoDevice *_this, SDL_Window *window);
83extern bool RPI_GLES_MakeCurrent(SDL_VideoDevice *_this, SDL_Window *window, SDL_GLContext context);
84extern bool RPI_GLES_SetSwapInterval(SDL_VideoDevice *_this, int interval);
85extern bool RPI_GLES_GetSwapInterval(SDL_VideoDevice *_this);
86extern bool RPI_GLES_SwapWindow(SDL_VideoDevice *_this, SDL_Window *window);
87extern bool RPI_GLES_DestroyContext(SDL_VideoDevice *_this, SDL_GLContext context);
88
89#endif // SDL_rpivideo_h