]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Add Hercules, Planar and YUV to videoinfo (not tested)
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 11 Sep 2010 23:45:58 +0000 (01:45 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 11 Sep 2010 23:45:58 +0000 (01:45 +0200)
grub-core/commands/videoinfo.c
grub-core/video/i386/pc/vbe.c
include/grub/video.h

index febb56aba3cfb8abf1341a0571ecada7c11cabb6..9ee3f1af52a0756b72a7d9d4c815256ee6bd258f 100644 (file)
@@ -34,6 +34,8 @@ hook (const struct grub_video_mode_info *info)
     grub_printf ("  0x%03x ", info->mode_number);
   grub_printf ("%4d x %4d x %2d  ", info->width, info->height, info->bpp);
 
+  if (info->mode_type & GRUB_VIDEO_MODE_TYPE_PURE_TEXT)
+    grub_printf ("Text-only ");
   /* Show mask and position details for direct color modes.  */
   if (info->mode_type & GRUB_VIDEO_MODE_TYPE_RGB)
     grub_printf ("Direct, mask: %d/%d/%d/%d  pos: %d/%d/%d/%d",
@@ -46,7 +48,18 @@ hook (const struct grub_video_mode_info *info)
                 info->blue_field_pos,
                 info->reserved_field_pos);
   if (info->mode_type & GRUB_VIDEO_MODE_TYPE_INDEX_COLOR)
-    grub_printf ("Packed");
+    grub_printf ("Packed ");
+  if (info->mode_type & GRUB_VIDEO_MODE_TYPE_YUV)
+    grub_printf ("YUV ");
+  if (info->mode_type & GRUB_VIDEO_MODE_TYPE_PLANAR)
+    grub_printf ("Planar ");
+  if (info->mode_type & GRUB_VIDEO_MODE_TYPE_HERCULES)
+    grub_printf ("Hercules ");
+  if (info->mode_type & GRUB_VIDEO_MODE_TYPE_1BIT_BITMAP)
+    grub_printf ("Monochrome ");
+  if (info->mode_type & GRUB_VIDEO_MODE_TYPE_UNKNOWN)
+    grub_printf ("Unknown ");
+
   grub_printf ("\n");
 
   return 0;
index 1d2a9ac767970dc0ad793791b63de7bc79cab954..be266d2380528842dcec71b7f19ad9a05e9a1e52 100644 (file)
@@ -555,14 +555,39 @@ vbe2videoinfo (grub_uint32_t mode,
 
   mode_info->width = vbeinfo->x_resolution;
   mode_info->height = vbeinfo->y_resolution;
+  mode_info->mode_type = 0;
   switch (vbeinfo->memory_model)
     {
+    case GRUB_VBE_MEMORY_MODEL_TEXT:
+      mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_PURE_TEXT;
+      break;
+
+      /* CGA is basically 4-bit packed pixel.  */
+    case GRUB_VBE_MEMORY_MODEL_CGA:
     case GRUB_VBE_MEMORY_MODEL_PACKED_PIXEL:
-      mode_info->mode_type = GRUB_VIDEO_MODE_TYPE_INDEX_COLOR;
+      mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_INDEX_COLOR;
+      break;
+
+    case GRUB_VBE_MEMORY_MODEL_HERCULES:
+      mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_HERCULES
+       | GRUB_VIDEO_MODE_TYPE_1BIT_BITMAP;
+      break;
+
+      /* Non chain 4 is a special case of planar.  */
+    case GRUB_VBE_MEMORY_MODEL_NONCHAIN4_256:
+    case GRUB_VBE_MEMORY_MODEL_PLANAR:
+      mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_PLANAR;
+      break;
+
+    case GRUB_VBE_MEMORY_MODEL_YUV:
+      mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_YUV;
       break;
-         
+      
     case GRUB_VBE_MEMORY_MODEL_DIRECT_COLOR:
-      mode_info->mode_type = GRUB_VIDEO_MODE_TYPE_RGB;
+      mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_RGB;
+      break;
+    default:
+      mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_UNKNOWN;
       break;
     }
 
@@ -585,6 +610,9 @@ vbe2videoinfo (grub_uint32_t mode,
     case 8:
       mode_info->bytes_per_pixel = 1;
       break;  
+    case 4:
+      mode_info->bytes_per_pixel = 0;
+      break;  
     }
 
   if (controller_info.version >= 0x300)
index 1c1bf16abbad54ee0fbf0587841c772107d93e99..6381efe640f056639a86fe10d5a6d71e99b158d9 100644 (file)
@@ -38,6 +38,10 @@ struct grub_video_bitmap;
 /* If following is set render target contains currenly displayed image
    after swapping buffers (otherwise it contains previously displayed image).
  */
+#define GRUB_VIDEO_MODE_TYPE_YUV                0x00000800
+#define GRUB_VIDEO_MODE_TYPE_PLANAR             0x00000400
+#define GRUB_VIDEO_MODE_TYPE_HERCULES           0x00000200
+#define GRUB_VIDEO_MODE_TYPE_UNKNOWN            0x00000100
 #define GRUB_VIDEO_MODE_TYPE_UPDATING_SWAP     0x00000080
 #define GRUB_VIDEO_MODE_TYPE_PURE_TEXT         0x00000040
 #define GRUB_VIDEO_MODE_TYPE_ALPHA             0x00000020