21 #include "../../SDL_internal.h"
23 #if SDL_VIDEO_DRIVER_VIVANTE
26 #include "../SDL_sysvideo.h"
31 #include "../../events/SDL_events_c.h"
33 #ifdef SDL_INPUT_LINUXEV
34 #include "../../core/linux/SDL_evdev.h"
43 VIVANTE_Available(
void)
84 device->free = VIVANTE_Destroy;
100 #if SDL_VIDEO_OPENGL_EGL
101 device->GL_LoadLibrary = VIVANTE_GLES_LoadLibrary;
102 device->GL_GetProcAddress = VIVANTE_GLES_GetProcAddress;
103 device->GL_UnloadLibrary = VIVANTE_GLES_UnloadLibrary;
104 device->GL_CreateContext = VIVANTE_GLES_CreateContext;
105 device->GL_MakeCurrent = VIVANTE_GLES_MakeCurrent;
106 device->GL_SetSwapInterval = VIVANTE_GLES_SetSwapInterval;
107 device->GL_GetSwapInterval = VIVANTE_GLES_GetSwapInterval;
108 device->GL_SwapWindow = VIVANTE_GLES_SwapWindow;
109 device->GL_DeleteContext = VIVANTE_GLES_DeleteContext;
119 "Vivante EGL Video Driver",
129 VIVANTE_AddVideoDisplays(
_THIS)
135 int pitch = 0, bpp = 0;
144 #if SDL_VIDEO_DRIVER_VIVANTE_VDK
145 data->native_display = vdkGetDisplay(videodata->vdk_private);
147 vdkGetDisplayInfo(
data->native_display, ¤t_mode.
w, ¤t_mode.
h, &
pixels, &pitch, &bpp);
149 data->native_display = videodata->fbGetDisplayByIndex(0);
151 videodata->fbGetDisplayInfo(
data->native_display, ¤t_mode.
w, ¤t_mode.
h, &
pixels, &pitch, &bpp);
168 display.
name = VIVANTE_GetDisplayName(
_this);
181 #
if SDL_VIDEO_DRIVER_VIVANTE_VDK
182 videodata->vdk_private = vdkInitialize();
183 if (!videodata->vdk_private) {
194 #define LOAD_FUNC(NAME) \
195 videodata->NAME = SDL_LoadFunction(videodata->egl_handle, #NAME); \
196 if (!videodata->NAME) return -1;
198 LOAD_FUNC(fbGetDisplay);
199 LOAD_FUNC(fbGetDisplayByIndex);
200 LOAD_FUNC(fbGetDisplayGeometry);
201 LOAD_FUNC(fbGetDisplayInfo);
202 LOAD_FUNC(fbDestroyDisplay);
203 LOAD_FUNC(fbCreateWindow);
204 LOAD_FUNC(fbGetWindowGeometry);
205 LOAD_FUNC(fbGetWindowInfo);
206 LOAD_FUNC(fbDestroyWindow);
209 if (VIVANTE_SetupPlatform(
_this) < 0) {
213 if (VIVANTE_AddVideoDisplays(
_this) < 0) {
217 VIVANTE_UpdateDisplayScale(
_this);
219 #ifdef SDL_INPUT_LINUXEV
220 if (SDL_EVDEV_Init() < 0) {
237 VIVANTE_CleanupPlatform(
_this);
239 #if SDL_VIDEO_DRIVER_VIVANTE_VDK
240 if (videodata->vdk_private) {
241 vdkExit(videodata->vdk_private);
242 videodata->vdk_private =
NULL;
283 #if SDL_VIDEO_DRIVER_VIVANTE_VDK
288 if (!
data->native_window) {
289 return SDL_SetError(
"VIVANTE: Can't create native window");
292 #if SDL_VIDEO_OPENGL_EGL
294 data->egl_surface = SDL_EGL_CreateSurface(
_this,
data->native_window);
296 return SDL_SetError(
"VIVANTE: Can't create EGL surface");
315 #if SDL_VIDEO_OPENGL_EGL
317 SDL_EGL_DestroySurface(
_this,
data->egl_surface);
321 if (
data->native_window) {
322 #if SDL_VIDEO_DRIVER_VIVANTE_VDK
323 vdkDestroyWindow(
data->native_window);
325 videodata->fbDestroyWindow(
data->native_window);
337 #if SDL_VIDEO_DRIVER_VIVANTE_VDK
339 vdkSetWindowTitle(
data->native_window,
window->title);
358 #if SDL_VIDEO_DRIVER_VIVANTE_VDK
360 vdkShowWindow(
data->native_window);
369 #if SDL_VIDEO_DRIVER_VIVANTE_VDK
371 vdkHideWindow(
data->native_window);
387 info->
info.vivante.
display = displaydata->native_display;
402 #ifdef SDL_INPUT_LINUXEV