static int
hook (const struct grub_video_mode_info *info)
{
- grub_printf (" %4d x %4d x %2d ", info->height, info->width, info->bpp);
+ if (info->mode_number == GRUB_VIDEO_MODE_NUMBER_INVALID)
+ grub_printf (" ");
+ else
+ grub_printf (" 0x%03x ", info->mode_number);
+ grub_printf ("%4d x %4d x %2d ", info->height, info->width, info->bpp);
/* Show mask and position details for direct color modes. */
if (info->mode_type & GRUB_VIDEO_MODE_TYPE_RGB)
- grub_printf ("D, mask: %d/%d/%d/%d pos: %d/%d/%d/%d",
+ grub_printf ("Direct, mask: %d/%d/%d/%d pos: %d/%d/%d/%d",
info->red_mask_size,
info->green_mask_size,
info->blue_mask_size,
info->blue_field_pos,
info->reserved_field_pos);
if (info->mode_type & GRUB_VIDEO_MODE_TYPE_INDEX_COLOR)
- grub_printf ("P");
+ grub_printf ("Packed");
grub_printf ("\n");
return 0;
}
static void
-vbe2videoinfo (const struct grub_vbe_mode_info_block *vbeinfo,
+vbe2videoinfo (grub_uint32_t mode,
+ const struct grub_vbe_mode_info_block *vbeinfo,
struct grub_video_mode_info *mode_info)
{
+ mode_info->mode_number = mode;
+
mode_info->width = vbeinfo->x_resolution;
mode_info->height = vbeinfo->y_resolution;
switch (vbeinfo->memory_model)
break;
}
- vbe2videoinfo (&vbe_mode_info, &mode_info);
+ vbe2videoinfo (*p, &vbe_mode_info, &mode_info);
if (hook (&mode_info))
return 1;
}
return grub_errno;
/* Fill mode info details. */
- vbe2videoinfo (&active_vbe_mode_info, &framebuffer.mode_info);
+ vbe2videoinfo (best_vbe_mode, &active_vbe_mode_info,
+ &framebuffer.mode_info);
{
/* Get video RAM size in bytes. */
/* In index color mode, number of colors. In RGB mode this is 256. */
unsigned int number_of_colors;
+ unsigned int mode_number;
+#define GRUB_VIDEO_MODE_NUMBER_INVALID 0xffffffff
+
/* Optimization hint how binary data is coded. */
enum grub_video_blit_format blit_format;