Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Report the correct desktop video mode on the iMX6
- Loading branch information
|
@@ -150,8 +150,6 @@ MX6_GLES_LoadLibrary(_THIS, const char *egl_path) { |
|
|
LOAD_VIV_FUNC(fbDestroyPixmap); |
|
|
|
|
|
displaydata = SDL_GetDisplayDriverData(0); |
|
|
displaydata->native_display = egl_viv_data->fbGetDisplayByIndex(0); |
|
|
egl_viv_data->fbGetDisplayGeometry(displaydata->native_display, &displaydata->width, &displaydata->height); |
|
|
|
|
|
_this->egl_data->egl_display = _this->egl_data->eglGetDisplay(displaydata->native_display); |
|
|
if (!_this->egl_data->egl_display) { |
|
|
|
@@ -124,6 +124,36 @@ VideoBootStrap MX6_bootstrap = { |
|
|
MX6_Create |
|
|
}; |
|
|
|
|
|
static void |
|
|
MX6_UpdateDisplay(_THIS) |
|
|
{ |
|
|
SDL_VideoDisplay *display = &_this->displays[0]; |
|
|
SDL_DisplayData *data = (SDL_DisplayData*)display->driverdata; |
|
|
EGLNativeDisplayType native_display = egl_viv_data->fbGetDisplayByIndex(0); |
|
|
SDL_DisplayMode current_mode; |
|
|
int pitch, bpp; |
|
|
unsigned long pixels; |
|
|
|
|
|
/* Store the native EGL display */ |
|
|
data->native_display = native_display; |
|
|
|
|
|
SDL_zero(current_mode); |
|
|
egl_viv_data->fbGetDisplayInfo(native_display, ¤t_mode.w, ¤t_mode.h, &pixels, &pitch, &bpp); |
|
|
/* FIXME: How do we query refresh rate? */ |
|
|
current_mode.refresh_rate = 60; |
|
|
|
|
|
switch (bpp) |
|
|
{ |
|
|
default: /* Is another format used? */ |
|
|
case 16: |
|
|
current_mode.format = SDL_PIXELFORMAT_RGB565; |
|
|
break; |
|
|
} |
|
|
|
|
|
display->desktop_mode = current_mode; |
|
|
display->current_mode = current_mode; |
|
|
} |
|
|
|
|
|
/*****************************************************************************/ |
|
|
/* SDL Video and Display initialization/handling functions */ |
|
|
/*****************************************************************************/ |
|
@@ -138,16 +168,9 @@ MX6_VideoInit(_THIS) |
|
|
if (data == NULL) { |
|
|
return SDL_OutOfMemory(); |
|
|
} |
|
|
|
|
|
/* Actual data will be set in SDL_GL_LoadLibrary call below */ |
|
|
SDL_zero(current_mode); |
|
|
current_mode.w = 0; |
|
|
current_mode.h = 0; |
|
|
current_mode.refresh_rate = 60; |
|
|
current_mode.format = SDL_PIXELFORMAT_RGB565; |
|
|
current_mode.driverdata = NULL; |
|
|
|
|
|
SDL_zero(display); |
|
|
SDL_zero(current_mode); |
|
|
display.desktop_mode = current_mode; |
|
|
display.current_mode = current_mode; |
|
|
display.driverdata = data; |
|
@@ -156,6 +179,7 @@ MX6_VideoInit(_THIS) |
|
|
if (SDL_GL_LoadLibrary(NULL) < 0) { |
|
|
return -1; |
|
|
} |
|
|
MX6_UpdateDisplay(_this); |
|
|
|
|
|
#ifdef SDL_INPUT_LINUXEV |
|
|
SDL_EVDEV_Init(); |
|
|
|
@@ -35,8 +35,6 @@ typedef struct SDL_DisplayData |
|
|
{ |
|
|
EGLNativeDisplayType native_display; |
|
|
EGLDisplay egl_display; |
|
|
int width; |
|
|
int height; |
|
|
} SDL_DisplayData; |
|
|
|
|
|
typedef struct SDL_WindowData |
|
|