Sam Lantinga 6a342954e8 Fixed bug 5451 - Can't create EGLSurface in Wayland from SDLWindow (no EGLNativeWindow pointer)
sashikknox

In some cases, need create EGLWindow with SDLWindow. In X11 i can get pointer to NativeWindow from **struct SDL_SysWMinfo wmInfo**
```C++
struct SDL_SysWMinfo wmInfo;
SDL_GetWindowWMInfo(ptSDLWindow, &wmInfo)
#if defined(__unix__) && defined(SDL_VIDEO_DRIVER_X11)
nativeWindow=(EGLNativeWindowType)wmInfo.info.x11.window;
nativeDisplay=(EGLNativeDisplayType)wmInfo.info.x11.display;
#endif
```
than i can create EGLSurface
```
eglCreateWindowSurface(nativeDisplay, EGL_CONFIG, nativeWindow, SURFACE_ATTRIBUTES);
```
in Wayland i can do it with same way, just need pointer to **EGLWindow**, we already have pointer to **wl_display** from **SDL_sysWMInfo**, need add to **wl** struct in SDL_SysWMInfo another pointer to **struct wl_egl_window *egl_window;**. And in wayland backend, in function **Wayland_GetWindowWMInfo** return pointer to **egl_window** from **SDL_WindowData**
Now i use patched statically built SDL2 in port of Quake 2 GLES2 for SailfishOS (it use QtWayland):
link to SDL2 commit and changed string for patch:
- https://github.com/savegame/lp-public/commit/6858a618cd179b766fe3cab36055f07cb03ad0ea
- https://github.com/savegame/lp-public/blob/b1e29e87b9d15780e47f04918b329ac15554fc69/SDL2/src/video/wayland/SDL_waylandwindow.c#L463

link to use in Quake2 port:
1. here i get pointer to EGLNativeWindowType:  https://github.com/savegame/lp-public/blob/6d94fedb1b720da24999ae6286a1809cd3d55ff5/Engine/Sources/Compatibility/OpenGLES/EGLWrapper.c#L319
2. then use it for create EGLSurface: https://github.com/savegame/lp-public/blob/6d94fedb1b720da24999ae6286a1809cd3d55ff5/Engine/Sources/Compatibility/OpenGLES/EGLWrapper.c#L391
2021-01-14 14:42:53 -08:00
2021-01-02 10:25:38 -08:00
2020-10-09 03:28:30 +03:00
…
2021-01-02 10:25:38 -08:00
2020-12-22 17:00:28 +03:00
…
2020-12-09 10:39:36 -08:00



                         Simple DirectMedia Layer



                                  (SDL)



                                Version 2.0



---

https://www.libsdl.org/



Simple DirectMedia Layer is a cross-platform development library designed

to provide low level access to audio, keyboard, mouse, joystick, and graphics

hardware via OpenGL and Direct3D. It is used by video playback software,

emulators, and popular games including Valve's award winning catalog

and many Humble Bundle games.



More extensive documentation is available in the docs directory, starting

with README.md



Enjoy!

	Sam Lantinga				(slouken@libsdl.org)

S
Description
Simple DirectMedia Layer
Readme
167 MiB
0 Stars 1 Watchers 0 Forks
Languages
C 86.4%
C++ 5.8%
Objective-C 3.4%
CMake 1.6%
Perl 0.8%
Other 1.8%