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
119 "Vivante EGL Video Driver",
129 VIVANTE_AddVideoDisplays(
_THIS)
135 int pitch = 0, bpp = 0;
144 #if SDL_VIDEO_DRIVER_VIVANTE_VDK
147 vdkGetDisplayInfo(data->
native_display, ¤t_mode.
w, ¤t_mode.
h, &pixels, &pitch, &bpp);
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
284 data->native_window = vdkCreateWindow(displaydata->native_display, window->
x, window->
y, window->
w, window->
h);
286 data->native_window = videodata->fbCreateWindow(displaydata->native_display, window->
x, window->
y, window->
w, window->
h);
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
358 #if SDL_VIDEO_DRIVER_VIVANTE_VDK
369 #if SDL_VIDEO_DRIVER_VIVANTE_VDK
387 info->
info.vivante.
display = displaydata->native_display;
402 #ifdef SDL_INPUT_LINUXEV