From: Ray Strode Date: Wed, 18 Aug 2010 20:07:08 +0000 (-0400) Subject: [drm] Store color depth in buffers X-Git-Tag: 0.8.4~173 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4469b8719e32cb179a4ae792e4aaf1bcf7789618;p=thirdparty%2Fplymouth.git [drm] Store color depth in buffers We only really support full color layouts at the moment for kernel modesetting drivers, but this commit adds a "color_depth" member to the buffer structs so we can at least recognize non-conforming buffers. --- diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c index f936d0a6..34a7a389 100644 --- a/src/plugins/renderers/drm/plugin.c +++ b/src/plugins/renderers/drm/plugin.c @@ -932,7 +932,8 @@ ply_renderer_head_set_scan_out_buffer_to_console (ply_renderer_backend_t *backen if (!backend->driver_interface->fetch_buffer (backend->driver, head->console_buffer_id, - &width, &height, &row_stride)) + &width, &height, &row_stride, + NULL)) return false; if (!backend->driver_interface->map_buffer (backend->driver, diff --git a/src/plugins/renderers/drm/ply-renderer-driver.h b/src/plugins/renderers/drm/ply-renderer-driver.h index a0d6044a..5b582c3e 100644 --- a/src/plugins/renderers/drm/ply-renderer-driver.h +++ b/src/plugins/renderers/drm/ply-renderer-driver.h @@ -45,7 +45,8 @@ typedef struct uint32_t buffer_id, unsigned long *width, unsigned long *height, - unsigned long *row_stride); + unsigned long *row_stride, + unsigned int *color_depth); bool (* map_buffer) (ply_renderer_driver_t *driver, uint32_t buffer_id); diff --git a/src/plugins/renderers/drm/ply-renderer-i915-driver.c b/src/plugins/renderers/drm/ply-renderer-i915-driver.c index 907a0613..29178c2e 100644 --- a/src/plugins/renderers/drm/ply-renderer-i915-driver.c +++ b/src/plugins/renderers/drm/ply-renderer-i915-driver.c @@ -59,6 +59,7 @@ struct _ply_renderer_buffer unsigned long width; unsigned long height; unsigned long row_stride; + unsigned int color_depth; uint32_t added_fb : 1; }; @@ -112,7 +113,8 @@ ply_renderer_buffer_new (ply_renderer_driver_t *driver, uint32_t id, unsigned long width, unsigned long height, - unsigned long row_stride) + unsigned long row_stride, + unsigned int color_depth) { ply_renderer_buffer_t *buffer; @@ -122,9 +124,10 @@ ply_renderer_buffer_new (ply_renderer_driver_t *driver, buffer->width = width; buffer->height = height; buffer->row_stride = row_stride; + buffer->color_depth = color_depth; - ply_trace ("returning %lux%lu buffer with stride %lu", - width, height, row_stride); + ply_trace ("returning %lux%lu buffer with stride %lu and color depth %u", + width, height, row_stride, color_depth); return buffer; } @@ -190,7 +193,7 @@ ply_renderer_buffer_new_from_id (ply_renderer_driver_t *driver, } buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id, - fb->width, fb->height, fb->pitch); + fb->width, fb->height, fb->pitch, fb->depth); drmModeFreeFB (fb); return buffer; @@ -213,7 +216,8 @@ fetch_buffer (ply_renderer_driver_t *driver, uint32_t buffer_id, unsigned long *width, unsigned long *height, - unsigned long *row_stride) + unsigned long *row_stride, + unsigned int *color_depth) { ply_renderer_buffer_t *buffer; @@ -244,8 +248,11 @@ fetch_buffer (ply_renderer_driver_t *driver, if (row_stride != NULL) *row_stride = buffer->row_stride; - ply_trace ("fetched %lux%lu buffer with stride %lu", - buffer->width, buffer->height, buffer->row_stride); + if (color_depth != NULL) + *color_depth = buffer->color_depth; + + ply_trace ("fetched %lux%lu buffer with stride %lu and color depth %u", + buffer->width, buffer->height, buffer->row_stride, buffer->color_depth); return true; } @@ -282,7 +289,7 @@ create_buffer (ply_renderer_driver_t *driver, buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id, - width, height, *row_stride); + width, height, *row_stride, 24); buffer->added_fb = true; ply_hashtable_insert (driver->buffers, (void *) (uintptr_t) buffer_id, diff --git a/src/plugins/renderers/drm/ply-renderer-nouveau-driver.c b/src/plugins/renderers/drm/ply-renderer-nouveau-driver.c index 2cef56eb..625df4b9 100644 --- a/src/plugins/renderers/drm/ply-renderer-nouveau-driver.c +++ b/src/plugins/renderers/drm/ply-renderer-nouveau-driver.c @@ -60,6 +60,7 @@ struct _ply_renderer_buffer unsigned long width; unsigned long height; unsigned long row_stride; + unsigned int color_depth; uint32_t added_fb : 1; }; @@ -110,7 +111,8 @@ ply_renderer_buffer_new (ply_renderer_driver_t *driver, uint32_t id, unsigned long width, unsigned long height, - unsigned long row_stride) + unsigned long row_stride, + unsigned int color_depth) { ply_renderer_buffer_t *buffer; @@ -120,9 +122,10 @@ ply_renderer_buffer_new (ply_renderer_driver_t *driver, buffer->width = width; buffer->height = height; buffer->row_stride = row_stride; + buffer->color_depth = color_depth; - ply_trace ("returning %lux%lu buffer with stride %lu", - width, height, row_stride); + ply_trace ("returning %lux%lu buffer with stride %lu and color depth %u", + width, height, row_stride, color_depth); return buffer; } @@ -153,7 +156,7 @@ ply_renderer_buffer_new_from_id (ply_renderer_driver_t *driver, } buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id, - fb->width, fb->height, fb->pitch); + fb->width, fb->height, fb->pitch, fb->depth); drmModeFreeFB (fb); return buffer; @@ -175,7 +178,8 @@ fetch_buffer (ply_renderer_driver_t *driver, uint32_t buffer_id, unsigned long *width, unsigned long *height, - unsigned long *row_stride) + unsigned long *row_stride, + unsigned int *color_depth) { ply_renderer_buffer_t *buffer; @@ -206,8 +210,11 @@ fetch_buffer (ply_renderer_driver_t *driver, if (row_stride != NULL) *row_stride = buffer->row_stride; - ply_trace ("fetched %lux%lu buffer with stride %lu", - buffer->width, buffer->height, buffer->row_stride); + if (color_depth != NULL) + *color_depth = buffer->color_depth; + + ply_trace ("fetched %lux%lu buffer with stride %lu and color depth %u", + buffer->width, buffer->height, buffer->row_stride, buffer->color_depth); return true; } @@ -251,7 +258,7 @@ create_buffer (ply_renderer_driver_t *driver, buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id, - width, height, *row_stride); + width, height, *row_stride, 24); buffer->added_fb = true; ply_hashtable_insert (driver->buffers, (void *) (uintptr_t) buffer_id, diff --git a/src/plugins/renderers/drm/ply-renderer-radeon-driver.c b/src/plugins/renderers/drm/ply-renderer-radeon-driver.c index 36cee475..62cf8afb 100644 --- a/src/plugins/renderers/drm/ply-renderer-radeon-driver.c +++ b/src/plugins/renderers/drm/ply-renderer-radeon-driver.c @@ -60,6 +60,7 @@ struct _ply_renderer_buffer unsigned long width; unsigned long height; unsigned long row_stride; + unsigned int color_depth; uint32_t added_fb : 1; }; @@ -110,7 +111,8 @@ ply_renderer_buffer_new (ply_renderer_driver_t *driver, uint32_t id, unsigned long width, unsigned long height, - unsigned long row_stride) + unsigned long row_stride, + unsigned int color_depth) { ply_renderer_buffer_t *buffer; @@ -120,9 +122,10 @@ ply_renderer_buffer_new (ply_renderer_driver_t *driver, buffer->width = width; buffer->height = height; buffer->row_stride = row_stride; + buffer->color_depth = color_depth; - ply_trace ("returning %lux%lu buffer with stride %lu", - width, height, row_stride); + ply_trace ("returning %lux%lu buffer with stride %lu and color depth %u", + width, height, row_stride, color_depth); return buffer; } @@ -195,7 +198,7 @@ ply_renderer_buffer_new_from_id (ply_renderer_driver_t *driver, } buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id, - fb->width, fb->height, fb->pitch); + fb->width, fb->height, fb->pitch, fb->depth); drmModeFreeFB (fb); return buffer; @@ -207,7 +210,8 @@ fetch_buffer (ply_renderer_driver_t *driver, uint32_t buffer_id, unsigned long *width, unsigned long *height, - unsigned long *row_stride) + unsigned long *row_stride, + unsigned int *color_depth) { ply_renderer_buffer_t *buffer; @@ -238,8 +242,11 @@ fetch_buffer (ply_renderer_driver_t *driver, if (row_stride != NULL) *row_stride = buffer->row_stride; - ply_trace ("fetched %lux%lu buffer with stride %lu", - buffer->width, buffer->height, buffer->row_stride); + if (color_depth != NULL) + *color_depth = buffer->color_depth; + + ply_trace ("fetched %lux%lu buffer with stride %lu and color depth %d", + buffer->width, buffer->height, buffer->row_stride, buffer->color_depth); return true; } @@ -276,7 +283,7 @@ create_buffer (ply_renderer_driver_t *driver, buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id, - width, height, *row_stride); + width, height, *row_stride, 24); buffer->added_fb = true; ply_hashtable_insert (driver->buffers, (void *) (uintptr_t) buffer_id,