]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
[drm] Store color depth in buffers
authorRay Strode <rstrode@redhat.com>
Wed, 18 Aug 2010 20:07:08 +0000 (16:07 -0400)
committerRay Strode <rstrode@redhat.com>
Wed, 18 Aug 2010 20:18:12 +0000 (16:18 -0400)
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.

src/plugins/renderers/drm/plugin.c
src/plugins/renderers/drm/ply-renderer-driver.h
src/plugins/renderers/drm/ply-renderer-i915-driver.c
src/plugins/renderers/drm/ply-renderer-nouveau-driver.c
src/plugins/renderers/drm/ply-renderer-radeon-driver.c

index f936d0a6c9e6ccadf7ff39089ef2daa7c41f0ff5..34a7a3899b7f7538e01e0e5200ad29aa73d75108 100644 (file)
@@ -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,
index a0d6044a8153eb586774e3e416bc56e689e85409..5b582c3e8d082e15be18244bde836273eff980cd 100644 (file)
@@ -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);
index 907a0613fe47693c4fb49e235fcad22a40746871..29178c2efb24016bd37c0d26daf76ba360c83aed 100644 (file)
@@ -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,
index 2cef56eb90f1bf859c478246ff47e4b93ad467b6..625df4b9cfc1a33091340a5dc780449e5f85da2c 100644 (file)
@@ -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,
index 36cee4756648641fe43a1b6733d0220ecceaa21f..62cf8afbafe37f20703402b15da938b79dcbd1a3 100644 (file)
@@ -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,