2006-07-29 Vesa Jaaskelainen <chaac@nic.fi>
* include/grub/video.h: Code cleanup. * include/grub/i386/pc/vbe.h: Likewise. * video/i386/pc/vbe.c: Likewise. * video/i386/pc/vbeblit.c: Likewise. * video/i386/pc/vbefill.c: Likewise. * video/video.c: Likewise. Also added more comments.
This commit is contained in:
parent
5915059b61
commit
684a8eff89
7 changed files with 316 additions and 339 deletions
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,17 @@
|
||||||
|
2006-07-29 Vesa Jaaskelainen <chaac@nic.fi>
|
||||||
|
|
||||||
|
* include/grub/video.h: Code cleanup.
|
||||||
|
|
||||||
|
* include/grub/i386/pc/vbe.h: Likewise.
|
||||||
|
|
||||||
|
* video/i386/pc/vbe.c: Likewise.
|
||||||
|
|
||||||
|
* video/i386/pc/vbeblit.c: Likewise.
|
||||||
|
|
||||||
|
* video/i386/pc/vbefill.c: Likewise.
|
||||||
|
|
||||||
|
* video/video.c: Likewise. Also added more comments.
|
||||||
|
|
||||||
2006-07-29 Vesa Jaaskelainen <chaac@nic.fi>
|
2006-07-29 Vesa Jaaskelainen <chaac@nic.fi>
|
||||||
|
|
||||||
* disk/i386/pc/biosdisk.c (struct grub_biosdisk_drp): Moved to ...
|
* disk/i386/pc/biosdisk.c (struct grub_biosdisk_drp): Moved to ...
|
||||||
|
|
|
@ -206,11 +206,9 @@ grub_err_t grub_vbe_get_video_mode_info (grub_uint32_t mode,
|
||||||
|
|
||||||
/* VBE module internal prototypes (should not be used from elsewhere). */
|
/* VBE module internal prototypes (should not be used from elsewhere). */
|
||||||
grub_uint8_t * grub_video_vbe_get_video_ptr (struct grub_video_render_target *source,
|
grub_uint8_t * grub_video_vbe_get_video_ptr (struct grub_video_render_target *source,
|
||||||
grub_uint32_t x,
|
grub_uint32_t x, grub_uint32_t y);
|
||||||
grub_uint32_t y);
|
|
||||||
|
|
||||||
grub_video_color_t grub_video_vbe_map_rgb (grub_uint8_t red,
|
grub_video_color_t grub_video_vbe_map_rgb (grub_uint8_t red, grub_uint8_t green,
|
||||||
grub_uint8_t green,
|
|
||||||
grub_uint8_t blue);
|
grub_uint8_t blue);
|
||||||
|
|
||||||
void grub_video_vbe_unmap_color (struct grub_video_render_target * source,
|
void grub_video_vbe_unmap_color (struct grub_video_render_target * source,
|
||||||
|
|
|
@ -158,78 +158,52 @@ struct grub_video_adapter
|
||||||
/* Clean up the video adapter. */
|
/* Clean up the video adapter. */
|
||||||
grub_err_t (*fini) (void);
|
grub_err_t (*fini) (void);
|
||||||
|
|
||||||
grub_err_t (*setup) (unsigned int width,
|
grub_err_t (*setup) (unsigned int width, unsigned int height,
|
||||||
unsigned int height,
|
unsigned int mode_type);
|
||||||
unsigned int mode_type);
|
|
||||||
|
|
||||||
grub_err_t (*get_info) (struct grub_video_mode_info *mode_info);
|
grub_err_t (*get_info) (struct grub_video_mode_info *mode_info);
|
||||||
|
|
||||||
grub_err_t (*set_palette) (unsigned int start,
|
grub_err_t (*set_palette) (unsigned int start, unsigned int count,
|
||||||
unsigned int count,
|
struct grub_video_palette_data *palette_data);
|
||||||
struct grub_video_palette_data *palette_data);
|
|
||||||
|
|
||||||
grub_err_t (*get_palette) (unsigned int start,
|
grub_err_t (*get_palette) (unsigned int start, unsigned int count,
|
||||||
unsigned int count,
|
struct grub_video_palette_data *palette_data);
|
||||||
struct grub_video_palette_data *palette_data);
|
|
||||||
|
|
||||||
grub_err_t (*set_viewport) (unsigned int x,
|
grub_err_t (*set_viewport) (unsigned int x, unsigned int y,
|
||||||
unsigned int y,
|
unsigned int width, unsigned int height);
|
||||||
unsigned int width,
|
|
||||||
unsigned int height);
|
|
||||||
|
|
||||||
grub_err_t (*get_viewport) (unsigned int *x,
|
grub_err_t (*get_viewport) (unsigned int *x, unsigned int *y,
|
||||||
unsigned int *y,
|
unsigned int *width, unsigned int *height);
|
||||||
unsigned int *width,
|
|
||||||
unsigned int *height);
|
|
||||||
|
|
||||||
grub_video_color_t (*map_color) (grub_uint32_t color_name);
|
grub_video_color_t (*map_color) (grub_uint32_t color_name);
|
||||||
|
|
||||||
grub_video_color_t (*map_rgb) (grub_uint8_t red,
|
grub_video_color_t (*map_rgb) (grub_uint8_t red, grub_uint8_t green,
|
||||||
grub_uint8_t green,
|
grub_uint8_t blue);
|
||||||
grub_uint8_t blue);
|
|
||||||
|
|
||||||
grub_video_color_t (*map_rgba) (grub_uint8_t red,
|
grub_video_color_t (*map_rgba) (grub_uint8_t red, grub_uint8_t green,
|
||||||
grub_uint8_t green,
|
grub_uint8_t blue, grub_uint8_t alpha);
|
||||||
grub_uint8_t blue,
|
|
||||||
grub_uint8_t alpha);
|
|
||||||
|
|
||||||
grub_err_t (*fill_rect) (grub_video_color_t color,
|
grub_err_t (*fill_rect) (grub_video_color_t color, int x, int y,
|
||||||
int x,
|
unsigned int width, unsigned int height);
|
||||||
int y,
|
|
||||||
unsigned int width,
|
|
||||||
unsigned int height);
|
|
||||||
|
|
||||||
grub_err_t (*blit_glyph) (struct grub_font_glyph *glyph,
|
grub_err_t (*blit_glyph) (struct grub_font_glyph *glyph,
|
||||||
grub_video_color_t color,
|
grub_video_color_t color, int x, int y);
|
||||||
int x,
|
|
||||||
int y);
|
|
||||||
|
|
||||||
grub_err_t (*blit_bitmap) (struct grub_video_bitmap *bitmap,
|
grub_err_t (*blit_bitmap) (struct grub_video_bitmap *bitmap,
|
||||||
int x,
|
int x, int y, int offset_x, int offset_y,
|
||||||
int y,
|
unsigned int width, unsigned int height);
|
||||||
int offset_x,
|
|
||||||
int offset_y,
|
|
||||||
unsigned int width,
|
|
||||||
unsigned int height);
|
|
||||||
|
|
||||||
grub_err_t (*blit_render_target) (struct grub_video_render_target *source,
|
grub_err_t (*blit_render_target) (struct grub_video_render_target *source,
|
||||||
int x,
|
int x, int y, int offset_x, int offset_y,
|
||||||
int y,
|
unsigned int width, unsigned int height);
|
||||||
int offset_x,
|
|
||||||
int offset_y,
|
|
||||||
unsigned int width,
|
|
||||||
unsigned int height);
|
|
||||||
|
|
||||||
grub_err_t (*scroll) (grub_video_color_t color,
|
grub_err_t (*scroll) (grub_video_color_t color, int dx, int dy);
|
||||||
int dx,
|
|
||||||
int dy);
|
|
||||||
|
|
||||||
grub_err_t (*swap_buffers) (void);
|
grub_err_t (*swap_buffers) (void);
|
||||||
|
|
||||||
grub_err_t (*create_render_target) (struct grub_video_render_target **result,
|
grub_err_t (*create_render_target) (struct grub_video_render_target **result,
|
||||||
unsigned int width,
|
unsigned int width, unsigned int height,
|
||||||
unsigned int height,
|
unsigned int mode_type);
|
||||||
unsigned int mode_type);
|
|
||||||
|
|
||||||
grub_err_t (*delete_render_target) (struct grub_video_render_target *target);
|
grub_err_t (*delete_render_target) (struct grub_video_render_target *target);
|
||||||
|
|
||||||
|
@ -244,9 +218,8 @@ void grub_video_register (grub_video_adapter_t adapter);
|
||||||
void grub_video_unregister (grub_video_adapter_t adapter);
|
void grub_video_unregister (grub_video_adapter_t adapter);
|
||||||
void grub_video_iterate (int (*hook) (grub_video_adapter_t adapter));
|
void grub_video_iterate (int (*hook) (grub_video_adapter_t adapter));
|
||||||
|
|
||||||
grub_err_t grub_video_setup (unsigned int width,
|
grub_err_t grub_video_setup (unsigned int width, unsigned int height,
|
||||||
unsigned int height,
|
unsigned int mode_type);
|
||||||
unsigned int mode_type);
|
|
||||||
|
|
||||||
grub_err_t grub_video_restore (void);
|
grub_err_t grub_video_restore (void);
|
||||||
|
|
||||||
|
@ -254,72 +227,50 @@ grub_err_t grub_video_get_info (struct grub_video_mode_info *mode_info);
|
||||||
|
|
||||||
enum grub_video_blit_format grub_video_get_blit_format (struct grub_video_mode_info *mode_info);
|
enum grub_video_blit_format grub_video_get_blit_format (struct grub_video_mode_info *mode_info);
|
||||||
|
|
||||||
grub_err_t grub_video_set_palette (unsigned int start,
|
grub_err_t grub_video_set_palette (unsigned int start, unsigned int count,
|
||||||
unsigned int count,
|
struct grub_video_palette_data *palette_data);
|
||||||
struct grub_video_palette_data *palette_data);
|
|
||||||
|
|
||||||
grub_err_t grub_video_get_palette (unsigned int start,
|
grub_err_t grub_video_get_palette (unsigned int start, unsigned int count,
|
||||||
unsigned int count,
|
struct grub_video_palette_data *palette_data);
|
||||||
struct grub_video_palette_data *palette_data);
|
|
||||||
|
|
||||||
grub_err_t grub_video_set_viewport (unsigned int x,
|
grub_err_t grub_video_set_viewport (unsigned int x, unsigned int y,
|
||||||
unsigned int y,
|
unsigned int width, unsigned int height);
|
||||||
unsigned int width,
|
|
||||||
unsigned int height);
|
|
||||||
|
|
||||||
grub_err_t grub_video_get_viewport (unsigned int *x,
|
grub_err_t grub_video_get_viewport (unsigned int *x, unsigned int *y,
|
||||||
unsigned int *y,
|
unsigned int *width, unsigned int *height);
|
||||||
unsigned int *width,
|
|
||||||
unsigned int *height);
|
|
||||||
|
|
||||||
grub_video_color_t grub_video_map_color (grub_uint32_t color_name);
|
grub_video_color_t grub_video_map_color (grub_uint32_t color_name);
|
||||||
|
|
||||||
grub_video_color_t grub_video_map_rgb (grub_uint8_t red,
|
grub_video_color_t grub_video_map_rgb (grub_uint8_t red, grub_uint8_t green,
|
||||||
grub_uint8_t green,
|
grub_uint8_t blue);
|
||||||
grub_uint8_t blue);
|
|
||||||
|
|
||||||
grub_video_color_t grub_video_map_rgba (grub_uint8_t red,
|
grub_video_color_t grub_video_map_rgba (grub_uint8_t red, grub_uint8_t green,
|
||||||
grub_uint8_t green,
|
grub_uint8_t blue, grub_uint8_t alpha);
|
||||||
grub_uint8_t blue,
|
|
||||||
grub_uint8_t alpha);
|
|
||||||
|
|
||||||
grub_err_t grub_video_fill_rect (grub_video_color_t color,
|
grub_err_t grub_video_fill_rect (grub_video_color_t color, int x, int y,
|
||||||
int x,
|
unsigned int width, unsigned int height);
|
||||||
int y,
|
|
||||||
unsigned int width,
|
|
||||||
unsigned int height);
|
|
||||||
|
|
||||||
grub_err_t grub_video_blit_glyph (struct grub_font_glyph *glyph,
|
grub_err_t grub_video_blit_glyph (struct grub_font_glyph *glyph,
|
||||||
grub_video_color_t color,
|
grub_video_color_t color, int x, int y);
|
||||||
int x,
|
|
||||||
int y);
|
|
||||||
|
|
||||||
grub_err_t grub_video_blit_bitmap (struct grub_video_bitmap *bitmap,
|
grub_err_t grub_video_blit_bitmap (struct grub_video_bitmap *bitmap,
|
||||||
int x,
|
int x, int y, int offset_x, int offset_y,
|
||||||
int y,
|
unsigned int width, unsigned int height);
|
||||||
int offset_x,
|
|
||||||
int offset_y,
|
|
||||||
unsigned int width,
|
|
||||||
unsigned int height);
|
|
||||||
|
|
||||||
grub_err_t grub_video_blit_render_target (struct grub_video_render_target *source,
|
grub_err_t grub_video_blit_render_target (struct grub_video_render_target *source,
|
||||||
int x,
|
int x, int y,
|
||||||
int y,
|
int offset_x, int offset_y,
|
||||||
int offset_x,
|
unsigned int width,
|
||||||
int offset_y,
|
unsigned int height);
|
||||||
unsigned int width,
|
|
||||||
unsigned int height);
|
|
||||||
|
|
||||||
grub_err_t grub_video_scroll (grub_video_color_t color,
|
grub_err_t grub_video_scroll (grub_video_color_t color, int dx, int dy);
|
||||||
int dx,
|
|
||||||
int dy);
|
|
||||||
|
|
||||||
grub_err_t grub_video_swap_buffers (void);
|
grub_err_t grub_video_swap_buffers (void);
|
||||||
|
|
||||||
grub_err_t grub_video_create_render_target (struct grub_video_render_target **result,
|
grub_err_t grub_video_create_render_target (struct grub_video_render_target **result,
|
||||||
unsigned int width,
|
unsigned int width,
|
||||||
unsigned int height,
|
unsigned int height,
|
||||||
unsigned int mode_type);
|
unsigned int mode_type);
|
||||||
|
|
||||||
grub_err_t grub_video_delete_render_target (struct grub_video_render_target *target);
|
grub_err_t grub_video_delete_render_target (struct grub_video_render_target *target);
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@ grub_vbe_probe (struct grub_vbe_info_block *info_block)
|
||||||
vbe_detected = 0;
|
vbe_detected = 0;
|
||||||
|
|
||||||
/* Use low memory scratch area as temporary storage
|
/* Use low memory scratch area as temporary storage
|
||||||
for VESA BIOS call. */
|
for VESA BIOS call. */
|
||||||
vbe_ib = (struct grub_vbe_info_block *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR;
|
vbe_ib = (struct grub_vbe_info_block *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR;
|
||||||
|
|
||||||
/* Prepare info block. */
|
/* Prepare info block. */
|
||||||
|
@ -120,13 +120,13 @@ grub_vbe_probe (struct grub_vbe_info_block *info_block)
|
||||||
/* Try to get controller info block. */
|
/* Try to get controller info block. */
|
||||||
status = grub_vbe_bios_get_controller_info (vbe_ib);
|
status = grub_vbe_bios_get_controller_info (vbe_ib);
|
||||||
if (status == 0x004F)
|
if (status == 0x004F)
|
||||||
{
|
{
|
||||||
/* Copy it for later usage. */
|
/* Copy it for later usage. */
|
||||||
grub_memcpy (&controller_info, vbe_ib, sizeof (controller_info));
|
grub_memcpy (&controller_info, vbe_ib, sizeof (controller_info));
|
||||||
|
|
||||||
/* Mark VESA BIOS extension as detected. */
|
/* Mark VESA BIOS extension as detected. */
|
||||||
vbe_detected = 1;
|
vbe_detected = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! vbe_detected)
|
if (! vbe_detected)
|
||||||
|
@ -164,20 +164,20 @@ grub_vbe_set_video_mode (grub_uint32_t mode,
|
||||||
|
|
||||||
/* Determine frame buffer pixel format. */
|
/* Determine frame buffer pixel format. */
|
||||||
switch (active_mode_info.memory_model)
|
switch (active_mode_info.memory_model)
|
||||||
{
|
{
|
||||||
case GRUB_VBE_MEMORY_MODEL_PACKED_PIXEL:
|
case GRUB_VBE_MEMORY_MODEL_PACKED_PIXEL:
|
||||||
framebuffer.index_color_mode = 1;
|
framebuffer.index_color_mode = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GRUB_VBE_MEMORY_MODEL_DIRECT_COLOR:
|
case GRUB_VBE_MEMORY_MODEL_DIRECT_COLOR:
|
||||||
framebuffer.index_color_mode = 0;
|
framebuffer.index_color_mode = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||||
"unsupported pixel format 0x%x",
|
"unsupported pixel format 0x%x",
|
||||||
active_mode_info.memory_model);
|
active_mode_info.memory_model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get current mode. */
|
/* Get current mode. */
|
||||||
|
@ -204,9 +204,9 @@ grub_vbe_set_video_mode (grub_uint32_t mode,
|
||||||
framebuffer.ptr = (grub_uint8_t *) active_mode_info.phys_base_addr;
|
framebuffer.ptr = (grub_uint8_t *) active_mode_info.phys_base_addr;
|
||||||
|
|
||||||
if (controller_info.version >= 0x300)
|
if (controller_info.version >= 0x300)
|
||||||
framebuffer.bytes_per_scan_line = active_mode_info.lin_bytes_per_scan_line;
|
framebuffer.bytes_per_scan_line = active_mode_info.lin_bytes_per_scan_line;
|
||||||
else
|
else
|
||||||
framebuffer.bytes_per_scan_line = active_mode_info.bytes_per_scan_line;
|
framebuffer.bytes_per_scan_line = active_mode_info.bytes_per_scan_line;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calculate bytes_per_pixel value. */
|
/* Calculate bytes_per_pixel value. */
|
||||||
|
@ -229,7 +229,7 @@ grub_vbe_set_video_mode (grub_uint32_t mode,
|
||||||
if (framebuffer.index_color_mode)
|
if (framebuffer.index_color_mode)
|
||||||
{
|
{
|
||||||
struct grub_vbe_palette_data *palette
|
struct grub_vbe_palette_data *palette
|
||||||
= (struct grub_vbe_palette_data *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR;
|
= (struct grub_vbe_palette_data *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR;
|
||||||
|
|
||||||
/* Make sure that the BIOS can reach the palette. */
|
/* Make sure that the BIOS can reach the palette. */
|
||||||
grub_memcpy (palette, vga_colors, sizeof (vga_colors));
|
grub_memcpy (palette, vga_colors, sizeof (vga_colors));
|
||||||
|
@ -238,15 +238,7 @@ grub_vbe_set_video_mode (grub_uint32_t mode,
|
||||||
0,
|
0,
|
||||||
palette);
|
palette);
|
||||||
|
|
||||||
/* For now, ignore the status. Not sure if this is fatal. */
|
/* Just ignore the status. */
|
||||||
#if 0
|
|
||||||
if (status != GRUB_VBE_STATUS_OK)
|
|
||||||
{
|
|
||||||
grub_vbe_bios_set_mode (old_mode, 0);
|
|
||||||
return grub_error (GRUB_ERR_BAD_DEVICE,
|
|
||||||
"cannot set the default VGA palette");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Copy mode info for caller. */
|
/* Copy mode info for caller. */
|
||||||
|
@ -293,8 +285,8 @@ grub_vbe_get_video_mode_info (grub_uint32_t mode,
|
||||||
/* Try to get mode info from VESA BIOS. */
|
/* Try to get mode info from VESA BIOS. */
|
||||||
status = grub_vbe_bios_get_mode_info (mode, mi_tmp);
|
status = grub_vbe_bios_get_mode_info (mode, mi_tmp);
|
||||||
if (status != GRUB_VBE_STATUS_OK)
|
if (status != GRUB_VBE_STATUS_OK)
|
||||||
return grub_error (GRUB_ERR_BAD_DEVICE,
|
return grub_error (GRUB_ERR_BAD_DEVICE,
|
||||||
"cannot get information on the mode %x", mode);
|
"cannot get information on the mode %x", mode);
|
||||||
|
|
||||||
/* Make copy of mode info block. */
|
/* Make copy of mode info block. */
|
||||||
grub_memcpy (mode_info, mi_tmp, sizeof (*mode_info));
|
grub_memcpy (mode_info, mi_tmp, sizeof (*mode_info));
|
||||||
|
@ -357,48 +349,48 @@ grub_video_vbe_draw_pixel (grub_uint32_t x, grub_uint32_t y,
|
||||||
{
|
{
|
||||||
case 32:
|
case 32:
|
||||||
{
|
{
|
||||||
grub_uint32_t *ptr;
|
grub_uint32_t *ptr;
|
||||||
|
|
||||||
ptr = (grub_uint32_t *)grub_video_vbe_get_video_ptr (render_target,
|
ptr = (grub_uint32_t *)grub_video_vbe_get_video_ptr (render_target,
|
||||||
x, y);
|
x, y);
|
||||||
|
|
||||||
*ptr = color;
|
*ptr = color;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 24:
|
case 24:
|
||||||
{
|
{
|
||||||
grub_uint8_t *ptr;
|
grub_uint8_t *ptr;
|
||||||
grub_uint8_t *ptr2 = (grub_uint8_t *) &color;
|
grub_uint8_t *ptr2 = (grub_uint8_t *) &color;
|
||||||
|
|
||||||
ptr = grub_video_vbe_get_video_ptr (render_target, x, y);
|
ptr = grub_video_vbe_get_video_ptr (render_target, x, y);
|
||||||
|
|
||||||
ptr[0] = ptr2[0];
|
ptr[0] = ptr2[0];
|
||||||
ptr[1] = ptr2[1];
|
ptr[1] = ptr2[1];
|
||||||
ptr[2] = ptr2[2];
|
ptr[2] = ptr2[2];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 16:
|
case 16:
|
||||||
case 15:
|
case 15:
|
||||||
{
|
{
|
||||||
grub_uint16_t *ptr;
|
grub_uint16_t *ptr;
|
||||||
|
|
||||||
ptr = (grub_uint16_t *)grub_video_vbe_get_video_ptr (render_target,
|
ptr = (grub_uint16_t *)grub_video_vbe_get_video_ptr (render_target,
|
||||||
x, y);
|
x, y);
|
||||||
|
|
||||||
*ptr = (grub_uint16_t) (color & 0xFFFF);
|
*ptr = (grub_uint16_t) (color & 0xFFFF);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
{
|
{
|
||||||
grub_uint8_t *ptr;
|
grub_uint8_t *ptr;
|
||||||
|
|
||||||
ptr = (grub_uint8_t *)grub_video_vbe_get_video_ptr (render_target,
|
ptr = (grub_uint8_t *)grub_video_vbe_get_video_ptr (render_target,
|
||||||
x, y);
|
x, y);
|
||||||
|
|
||||||
*ptr = (grub_uint8_t) (color & 0xFF);
|
*ptr = (grub_uint8_t) (color & 0xFF);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -427,7 +419,7 @@ grub_video_vbe_get_pixel (struct grub_video_render_target *source,
|
||||||
|
|
||||||
case 24:
|
case 24:
|
||||||
{
|
{
|
||||||
grub_uint8_t *ptr;
|
grub_uint8_t *ptr;
|
||||||
ptr = grub_video_vbe_get_video_ptr (source, x, y);
|
ptr = grub_video_vbe_get_video_ptr (source, x, y);
|
||||||
color = ptr[0] | (ptr[1] << 8) | (ptr[2] << 16);
|
color = ptr[0] | (ptr[1] << 8) | (ptr[2] << 16);
|
||||||
}
|
}
|
||||||
|
|
|
@ -269,7 +269,6 @@ grub_video_i386_vbeblit_R8G8B8A8_R8G8B8 (struct grub_video_render_target *dst,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
grub_video_i386_vbeblit_R8G8B8_R8G8B8 (struct grub_video_render_target *dst,
|
grub_video_i386_vbeblit_R8G8B8_R8G8B8 (struct grub_video_render_target *dst,
|
||||||
struct grub_video_render_target *src,
|
struct grub_video_render_target *src,
|
||||||
|
@ -341,7 +340,6 @@ grub_video_i386_vbeblit_index_R8G8B8 (struct grub_video_render_target *dst,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
grub_video_i386_vbeblit_index_index (struct grub_video_render_target *dst,
|
grub_video_i386_vbeblit_index_index (struct grub_video_render_target *dst,
|
||||||
struct grub_video_render_target *src,
|
struct grub_video_render_target *src,
|
||||||
|
|
|
@ -77,7 +77,6 @@ grub_video_i386_vbefill_R8G8B8 (struct grub_video_render_target *dst,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
grub_video_i386_vbefill_index (struct grub_video_render_target *dst,
|
grub_video_i386_vbefill_index (struct grub_video_render_target *dst,
|
||||||
grub_video_color_t color, int x, int y,
|
grub_video_color_t color, int x, int y,
|
||||||
|
|
|
@ -27,6 +27,7 @@ static grub_video_adapter_t grub_video_adapter_list;
|
||||||
/* Active video adapter. */
|
/* Active video adapter. */
|
||||||
static grub_video_adapter_t grub_video_adapter_active;
|
static grub_video_adapter_t grub_video_adapter_active;
|
||||||
|
|
||||||
|
/* Register video driver. */
|
||||||
void
|
void
|
||||||
grub_video_register (grub_video_adapter_t adapter)
|
grub_video_register (grub_video_adapter_t adapter)
|
||||||
{
|
{
|
||||||
|
@ -34,6 +35,7 @@ grub_video_register (grub_video_adapter_t adapter)
|
||||||
grub_video_adapter_list = adapter;
|
grub_video_adapter_list = adapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Unregister video driver. */
|
||||||
void
|
void
|
||||||
grub_video_unregister (grub_video_adapter_t adapter)
|
grub_video_unregister (grub_video_adapter_t adapter)
|
||||||
{
|
{
|
||||||
|
@ -47,6 +49,7 @@ grub_video_unregister (grub_video_adapter_t adapter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Iterate thru all registered video drivers. */
|
||||||
void
|
void
|
||||||
grub_video_iterate (int (*hook) (grub_video_adapter_t adapter))
|
grub_video_iterate (int (*hook) (grub_video_adapter_t adapter))
|
||||||
{
|
{
|
||||||
|
@ -57,6 +60,7 @@ grub_video_iterate (int (*hook) (grub_video_adapter_t adapter))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Setup specified video mode. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_setup (unsigned int width, unsigned int height,
|
grub_video_setup (unsigned int width, unsigned int height,
|
||||||
unsigned int mode_type)
|
unsigned int mode_type)
|
||||||
|
@ -109,6 +113,7 @@ grub_video_setup (unsigned int width, unsigned int height,
|
||||||
"Can't locate valid adapter for mode");
|
"Can't locate valid adapter for mode");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Restore back to initial mode (where applicaple). */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_restore (void)
|
grub_video_restore (void)
|
||||||
{
|
{
|
||||||
|
@ -123,6 +128,7 @@ grub_video_restore (void)
|
||||||
return GRUB_ERR_NONE;
|
return GRUB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get information about active video mode. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_get_info (struct grub_video_mode_info *mode_info)
|
grub_video_get_info (struct grub_video_mode_info *mode_info)
|
||||||
{
|
{
|
||||||
|
@ -132,6 +138,7 @@ grub_video_get_info (struct grub_video_mode_info *mode_info)
|
||||||
return grub_video_adapter_active->get_info (mode_info);
|
return grub_video_adapter_active->get_info (mode_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Determine optimized blitting formation for specified video mode info. */
|
||||||
enum grub_video_blit_format
|
enum grub_video_blit_format
|
||||||
grub_video_get_blit_format (struct grub_video_mode_info *mode_info)
|
grub_video_get_blit_format (struct grub_video_mode_info *mode_info)
|
||||||
{
|
{
|
||||||
|
@ -179,6 +186,7 @@ grub_video_get_blit_format (struct grub_video_mode_info *mode_info)
|
||||||
return GRUB_VIDEO_BLIT_FORMAT_INDEXCOLOR;
|
return GRUB_VIDEO_BLIT_FORMAT_INDEXCOLOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set new indexed color palette entries. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_set_palette (unsigned int start, unsigned int count,
|
grub_video_set_palette (unsigned int start, unsigned int count,
|
||||||
struct grub_video_palette_data *palette_data)
|
struct grub_video_palette_data *palette_data)
|
||||||
|
@ -189,6 +197,7 @@ grub_video_set_palette (unsigned int start, unsigned int count,
|
||||||
return grub_video_adapter_active->set_palette (start, count, palette_data);
|
return grub_video_adapter_active->set_palette (start, count, palette_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get indexed color palette entries. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_get_palette (unsigned int start, unsigned int count,
|
grub_video_get_palette (unsigned int start, unsigned int count,
|
||||||
struct grub_video_palette_data *palette_data)
|
struct grub_video_palette_data *palette_data)
|
||||||
|
@ -199,6 +208,7 @@ grub_video_get_palette (unsigned int start, unsigned int count,
|
||||||
return grub_video_adapter_active->get_palette (start, count, palette_data);
|
return grub_video_adapter_active->get_palette (start, count, palette_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set viewport dimensions. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_set_viewport (unsigned int x, unsigned int y,
|
grub_video_set_viewport (unsigned int x, unsigned int y,
|
||||||
unsigned int width, unsigned int height)
|
unsigned int width, unsigned int height)
|
||||||
|
@ -209,6 +219,7 @@ grub_video_set_viewport (unsigned int x, unsigned int y,
|
||||||
return grub_video_adapter_active->set_viewport (x, y, width, height);
|
return grub_video_adapter_active->set_viewport (x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get viewport dimensions. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_get_viewport (unsigned int *x, unsigned int *y,
|
grub_video_get_viewport (unsigned int *x, unsigned int *y,
|
||||||
unsigned int *width, unsigned int *height)
|
unsigned int *width, unsigned int *height)
|
||||||
|
@ -219,6 +230,7 @@ grub_video_get_viewport (unsigned int *x, unsigned int *y,
|
||||||
return grub_video_adapter_active->get_viewport (x, y, width, height);
|
return grub_video_adapter_active->get_viewport (x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Map color name to adapter specific color. */
|
||||||
grub_video_color_t
|
grub_video_color_t
|
||||||
grub_video_map_color (grub_uint32_t color_name)
|
grub_video_map_color (grub_uint32_t color_name)
|
||||||
{
|
{
|
||||||
|
@ -228,6 +240,7 @@ grub_video_map_color (grub_uint32_t color_name)
|
||||||
return grub_video_adapter_active->map_color (color_name);
|
return grub_video_adapter_active->map_color (color_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Map RGB value to adapter specific color. */
|
||||||
grub_video_color_t
|
grub_video_color_t
|
||||||
grub_video_map_rgb (grub_uint8_t red, grub_uint8_t green, grub_uint8_t blue)
|
grub_video_map_rgb (grub_uint8_t red, grub_uint8_t green, grub_uint8_t blue)
|
||||||
{
|
{
|
||||||
|
@ -237,6 +250,7 @@ grub_video_map_rgb (grub_uint8_t red, grub_uint8_t green, grub_uint8_t blue)
|
||||||
return grub_video_adapter_active->map_rgb (red, green, blue);
|
return grub_video_adapter_active->map_rgb (red, green, blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Map RGBA value to adapter specific color. */
|
||||||
grub_video_color_t
|
grub_video_color_t
|
||||||
grub_video_map_rgba (grub_uint8_t red, grub_uint8_t green, grub_uint8_t blue,
|
grub_video_map_rgba (grub_uint8_t red, grub_uint8_t green, grub_uint8_t blue,
|
||||||
grub_uint8_t alpha)
|
grub_uint8_t alpha)
|
||||||
|
@ -247,6 +261,7 @@ grub_video_map_rgba (grub_uint8_t red, grub_uint8_t green, grub_uint8_t blue,
|
||||||
return grub_video_adapter_active->map_rgba (red, green, blue, alpha);
|
return grub_video_adapter_active->map_rgba (red, green, blue, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Fill rectangle using specified color. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_fill_rect (grub_video_color_t color, int x, int y,
|
grub_video_fill_rect (grub_video_color_t color, int x, int y,
|
||||||
unsigned int width, unsigned int height)
|
unsigned int width, unsigned int height)
|
||||||
|
@ -257,6 +272,7 @@ grub_video_fill_rect (grub_video_color_t color, int x, int y,
|
||||||
return grub_video_adapter_active->fill_rect (color, x, y, width, height);
|
return grub_video_adapter_active->fill_rect (color, x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Blit glyph to screen using specified color. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_blit_glyph (struct grub_font_glyph *glyph,
|
grub_video_blit_glyph (struct grub_font_glyph *glyph,
|
||||||
grub_video_color_t color, int x, int y)
|
grub_video_color_t color, int x, int y)
|
||||||
|
@ -267,6 +283,7 @@ grub_video_blit_glyph (struct grub_font_glyph *glyph,
|
||||||
return grub_video_adapter_active->blit_glyph (glyph, color, x, y);
|
return grub_video_adapter_active->blit_glyph (glyph, color, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Blit bitmap to screen. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_blit_bitmap (struct grub_video_bitmap *bitmap,
|
grub_video_blit_bitmap (struct grub_video_bitmap *bitmap,
|
||||||
int x, int y, int offset_x, int offset_y,
|
int x, int y, int offset_x, int offset_y,
|
||||||
|
@ -280,6 +297,7 @@ grub_video_blit_bitmap (struct grub_video_bitmap *bitmap,
|
||||||
width, height);
|
width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Blit render target to active render target. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_blit_render_target (struct grub_video_render_target *target,
|
grub_video_blit_render_target (struct grub_video_render_target *target,
|
||||||
int x, int y, int offset_x, int offset_y,
|
int x, int y, int offset_x, int offset_y,
|
||||||
|
@ -293,6 +311,7 @@ grub_video_blit_render_target (struct grub_video_render_target *target,
|
||||||
width, height);
|
width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Scroll viewport and fill new areas with specified color. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_scroll (grub_video_color_t color, int dx, int dy)
|
grub_video_scroll (grub_video_color_t color, int dx, int dy)
|
||||||
{
|
{
|
||||||
|
@ -302,6 +321,7 @@ grub_video_scroll (grub_video_color_t color, int dx, int dy)
|
||||||
return grub_video_adapter_active->scroll (color, dx, dy);
|
return grub_video_adapter_active->scroll (color, dx, dy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Swap buffers (swap active render target). */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_swap_buffers (void)
|
grub_video_swap_buffers (void)
|
||||||
{
|
{
|
||||||
|
@ -311,6 +331,7 @@ grub_video_swap_buffers (void)
|
||||||
return grub_video_adapter_active->swap_buffers ();
|
return grub_video_adapter_active->swap_buffers ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Create new render target. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_create_render_target (struct grub_video_render_target **result,
|
grub_video_create_render_target (struct grub_video_render_target **result,
|
||||||
unsigned int width, unsigned int height,
|
unsigned int width, unsigned int height,
|
||||||
|
@ -324,6 +345,7 @@ grub_video_create_render_target (struct grub_video_render_target **result,
|
||||||
mode_type);
|
mode_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Delete render target. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_delete_render_target (struct grub_video_render_target *target)
|
grub_video_delete_render_target (struct grub_video_render_target *target)
|
||||||
{
|
{
|
||||||
|
@ -333,6 +355,7 @@ grub_video_delete_render_target (struct grub_video_render_target *target)
|
||||||
return grub_video_adapter_active->delete_render_target (target);
|
return grub_video_adapter_active->delete_render_target (target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set active render target. */
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_video_set_active_render_target (struct grub_video_render_target *target)
|
grub_video_set_active_render_target (struct grub_video_render_target *target)
|
||||||
{
|
{
|
||||||
|
@ -342,12 +365,14 @@ grub_video_set_active_render_target (struct grub_video_render_target *target)
|
||||||
return grub_video_adapter_active->set_active_render_target (target);
|
return grub_video_adapter_active->set_active_render_target (target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Initialize Video API module. */
|
||||||
GRUB_MOD_INIT(video_video)
|
GRUB_MOD_INIT(video_video)
|
||||||
{
|
{
|
||||||
grub_video_adapter_active = 0;
|
grub_video_adapter_active = 0;
|
||||||
grub_video_adapter_list = 0;
|
grub_video_adapter_list = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Finalize Video API module. */
|
||||||
GRUB_MOD_FINI(video_video)
|
GRUB_MOD_FINI(video_video)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue