[drm] Force fb backend if 1 head and ttm driver

Drivers backed by TTM memory manager don't support mapping the
kernel backed framebuffer console, so can't be used for doing
a smooth transition (unless you use /dev/fb).  In single head
configurations, there isn't a big advantage to using libdrm
anyway, so we bail for TTM drivers.
This commit is contained in:
Ray Strode 2009-09-28 17:27:56 -04:00
parent fe6ee7723a
commit 0b763c61b4

View file

@ -98,6 +98,7 @@ struct _ply_renderer_backend
ply_renderer_driver_interface_t *driver_interface;
ply_renderer_driver_t *driver;
uint32_t driver_supports_mapping_console;
int device_fd;
char *device_name;
@ -409,14 +410,17 @@ load_driver (ply_renderer_backend_t *backend)
if (strcmp (driver_name, "i915") == 0)
{
backend->driver_interface = ply_renderer_i915_driver_get_interface ();
backend->driver_supports_mapping_console = true;
}
else if (strcmp (driver_name, "radeon") == 0)
{
backend->driver_interface = ply_renderer_radeon_driver_get_interface ();
backend->driver_supports_mapping_console = false;
}
else if (strcmp (driver_name, "nouveau") == 0)
{
backend->driver_interface = ply_renderer_nouveau_driver_get_interface ();
backend->driver_supports_mapping_console = false;
}
free (driver_name);
@ -717,6 +721,20 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend)
ply_list_append_data (backend->heads, head);
}
/* If the driver doesn't support mapping the fb console
* then we can't get a smooth crossfade transition to
* the display manager unless we use the /dev/fb interface.
*
* In multihead configurations, we'd rather have working
* multihead, but otherwise bail now.
*/
if (!backend->driver_supports_mapping_console &&
ply_list_get_length (backend->heads) == 1)
{
free_heads (backend);
return false;
}
return ply_list_get_length (backend->heads) > 0;
}