Fix software rendering in the mir backend. The window assumed hardware buffer, which caused testdrawchessboard to fail to mmap a buffer.

This commit is contained in:
Brandon Schaefer 2014-05-02 12:33:19 -07:00
parent ec5f6ad595
commit 44a0f1d9cd
5 changed files with 9 additions and 0 deletions

View File

@ -56,6 +56,8 @@ MIR_CreateWindowFramebuffer(_THIS, SDL_Window* window, Uint32* format,
MIR_Window* mir_window; MIR_Window* mir_window;
MirSurfaceParameters surfaceparm; MirSurfaceParameters surfaceparm;
mir_data->software = SDL_TRUE;
if (MIR_CreateWindow(_this, window) < 0) if (MIR_CreateWindow(_this, window) < 0)
return SDL_SetError("Failed to created a mir window."); return SDL_SetError("Failed to created a mir window.");

View File

@ -273,6 +273,7 @@ MIR_VideoInit(_THIS)
MIR_Data* mir_data = _this->driverdata; MIR_Data* mir_data = _this->driverdata;
mir_data->connection = MIR_mir_connect_sync(NULL, __PRETTY_FUNCTION__); mir_data->connection = MIR_mir_connect_sync(NULL, __PRETTY_FUNCTION__);
mir_data->software = SDL_FALSE;
if (!MIR_mir_connection_is_valid(mir_data->connection)) if (!MIR_mir_connection_is_valid(mir_data->connection))
return SDL_SetError("Failed to connect to the Mir Server"); return SDL_SetError("Failed to connect to the Mir Server");

View File

@ -32,6 +32,8 @@
typedef struct typedef struct
{ {
MirConnection* connection; MirConnection* connection;
SDL_bool software;
} MIR_Data; } MIR_Data;
#endif /* _SDL_mirvideo_h_ */ #endif /* _SDL_mirvideo_h_ */

View File

@ -99,6 +99,9 @@ MIR_CreateWindow(_THIS, SDL_Window* window)
mir_data = _this->driverdata; mir_data = _this->driverdata;
window->driverdata = mir_window; window->driverdata = mir_window;
if (mir_data->software)
surfaceparm.buffer_usage = mir_buffer_usage_software;
if (window->x == SDL_WINDOWPOS_UNDEFINED) if (window->x == SDL_WINDOWPOS_UNDEFINED)
window->x = 0; window->x = 0;

View File

@ -34,6 +34,7 @@
typedef struct { typedef struct {
SDL_Window* sdl_window; SDL_Window* sdl_window;
MIR_Data* mir_data; MIR_Data* mir_data;
bool software;
MirSurface* surface; MirSurface* surface;
EGLSurface egl_surface; EGLSurface egl_surface;