retitle 544155 gfxterm breaks booting on Thinkpads thanks Am Sonntag, den 30.08.2009, 23:40 +0200 schrieb Witold Baryluk:
> > Maybe it helps if you disable the gfxterm. > > In /etc/default/grub uncomment `GRUB_TERMINAL=console' and run > > update-grub. > > Now this is interesting. After following this instructions, grub (still > 1.92+20090829-1 from unstable) started working. > > Then I downgraded manually to 1.92+20090808-1 from squeeze (by manual > dpkg -i with .deb packages grub-pc and grub-common, and then > additionally grub-install /dev/sda to be sure), to be sure there is no > problem with&without gfxterm enabled. And there is non. > > Lastly i reinstalled manually 1.92+20090826-3 and retested it. > > Summary: > > 1.92+20090808-1 works. > 1.92+20090826-3 works only with GRUB_TERMINAL=console > 1.92+20090829-1 works only with GRUB_TERMINAL=console > > I need to say that in my configuration even 1.92+20090808-1 with > commented out GRUB_TERMINAL (so using gfxterm), grub is still using text > mode (I have installed grub2-splashimages 1.0.0, and it is detected by > update-grub when GRUB_temrinal is commented as providing > moreblue-orbit-grub.png) moreblue-orbit-grub.png is actually provided by desktop-base, but we copy it in the postinst to /boot. > I know that grub2 have gfx mode (i have desktop computer which have this > working), but on my laptop it is not working. > > So it can be something with gfx modes in thinkpad T4x specifically. > > > It would be good if some of you could do a svn-bisect to find the exact > > commit out which broke it. > > I can try do do this. Should i start from debian source package and then > bisect using official grub2 svn repository, building for each bisection > step a .deb package? Luckly there aren't that many commits related to the graphical subsystem. Try the attached patch. I think that's the best try. Instructions for compiling the Debian packages are here: http://wiki.debian.org/de/GRUB2/Anleitung/DebianPaketVonOriginalQuelltext But I suggest you remove from debian/control all packages you don't need, else compiling will take unnecessary long. The debian/ directory should work with all upstream revisions between 2549 (beta1) and 2488 (1.96+20090808) If that patch isn't the reason for the break, I think it would be good to reverse 2494, 2527 or 2494 The others don't look like they could cause this. > PS. I hate bisecting kernel or bootloaders. Zylions of reboots :) > (and because of svn, i would need to everytime login fully into gnome, > because of my wifi networking is working only there :/). > -- Felix Zielcke Proud Debian Maintainer
Index: video/fb/fbblit.c =================================================================== --- video/fb/fbblit.c (Revision 2542) +++ video/fb/fbblit.c (Revision 2541) @@ -90,302 +90,6 @@ } } -/* Optimized replacing blitter for 1-bit to 32bit. */ -void -grub_video_fbblit_replace_32bit_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y) -{ - int i; - int j; - grub_uint8_t *srcptr; - grub_uint8_t *dstptr; - grub_uint8_t srcmask; - unsigned int dstrowskip; - unsigned int srcrowskipbyte, srcrowskipbit; - grub_uint32_t fgcolor, bgcolor; - int bit_index; - - /* Calculate the number of bytes to advance from the end of one line - to the beginning of the next line. */ - dstrowskip = dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width; - srcrowskipbyte = (src->mode_info->width - width) >> 3; - srcrowskipbit = (src->mode_info->width - width) & 7; - - bit_index = offset_y * src->mode_info->width + offset_x; - srcptr = (grub_uint8_t *) src->data + (bit_index >> 3); - srcmask = 1 << (~bit_index & 7); - dstptr = (grub_uint8_t *) grub_video_fb_get_video_ptr (dst, x, y); - - fgcolor = grub_video_fb_map_rgba (src->mode_info->fg_red, - src->mode_info->fg_green, - src->mode_info->fg_blue, - src->mode_info->fg_alpha); - - bgcolor = grub_video_fb_map_rgba (src->mode_info->bg_red, - src->mode_info->bg_green, - src->mode_info->bg_blue, - src->mode_info->bg_alpha); - - for (j = 0; j < height; j++) - { - for (i = 0; i < width; i++) - { - if (*srcptr & srcmask) - *(grub_uint32_t *) dstptr = fgcolor; - else - *(grub_uint32_t *) dstptr = bgcolor; - srcmask >>= 1; - if (!srcmask) - { - srcptr++; - srcmask = 0x80; - } - - dstptr += 4; - } - - srcptr += srcrowskipbyte; - if (srcmask >> srcrowskipbit) - srcmask >>= srcrowskipbit; - else - { - srcptr++; - srcmask <<= 8 - srcrowskipbit; - } - dstptr += dstrowskip; - } -} - - -/* Optimized replacing blitter for 1-bit to 24-bit. */ -void -grub_video_fbblit_replace_24bit_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y) -{ - int i; - int j; - grub_uint8_t *srcptr; - grub_uint8_t *dstptr; - grub_uint8_t srcmask; - unsigned int dstrowskip; - unsigned int srcrowskipbyte, srcrowskipbit; - grub_uint32_t fgcolor, bgcolor; - int bit_index; - - /* Calculate the number of bytes to advance from the end of one line - to the beginning of the next line. */ - dstrowskip = dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width; - srcrowskipbyte = (src->mode_info->width - width) >> 3; - srcrowskipbit = (src->mode_info->width - width) & 7; - - bit_index = offset_y * src->mode_info->width + offset_x; - srcptr = (grub_uint8_t *) src->data + (bit_index >> 3); - srcmask = 1 << (~bit_index & 7); - dstptr = (grub_uint8_t *) grub_video_fb_get_video_ptr (dst, x, y); - - fgcolor = grub_video_fb_map_rgba (src->mode_info->fg_red, - src->mode_info->fg_green, - src->mode_info->fg_blue, - src->mode_info->fg_alpha); - - bgcolor = grub_video_fb_map_rgba (src->mode_info->bg_red, - src->mode_info->bg_green, - src->mode_info->bg_blue, - src->mode_info->bg_alpha); - - for (j = 0; j < height; j++) - { - for (i = 0; i < width - 1; i++) - { - if (*srcptr & srcmask) - *(grub_uint32_t *) dstptr = fgcolor; - else - *(grub_uint32_t *) dstptr = bgcolor; - srcmask >>= 1; - if (!srcmask) - { - srcptr++; - srcmask = 0x80; - } - - dstptr += 3; - } - - if (*srcptr & srcmask) - { - *dstptr++ = fgcolor & 0xff; - *dstptr++ = (fgcolor & 0xff00) >> 8; - *dstptr++ = (fgcolor & 0xff0000) >> 16; - } - else - { - *dstptr++ = bgcolor & 0xff; - *dstptr++ = (bgcolor & 0xff00) >> 8; - *dstptr++ = (bgcolor & 0xff0000) >> 16; - } - srcmask >>= 1; - if (!srcmask) - { - srcptr++; - srcmask = 0x80; - } - - srcptr += srcrowskipbyte; - if (srcmask >> srcrowskipbit) - srcmask >>= srcrowskipbit; - else - { - srcptr++; - srcmask <<= 8 - srcrowskipbit; - } - dstptr += dstrowskip; - } -} - -/* Optimized replacing blitter for 1-bit to 16-bit. */ -void -grub_video_fbblit_replace_16bit_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y) -{ - int i; - int j; - grub_uint8_t *srcptr; - grub_uint8_t *dstptr; - grub_uint8_t srcmask; - unsigned int dstrowskip; - unsigned int srcrowskipbyte, srcrowskipbit; - grub_uint16_t fgcolor, bgcolor; - int bit_index; - - /* Calculate the number of bytes to advance from the end of one line - to the beginning of the next line. */ - dstrowskip = dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width; - srcrowskipbyte = (src->mode_info->width - width) >> 3; - srcrowskipbit = (src->mode_info->width - width) & 7; - - bit_index = offset_y * src->mode_info->width + offset_x; - srcptr = (grub_uint8_t *) src->data + (bit_index >> 3); - srcmask = 1 << (~bit_index & 7); - dstptr = (grub_uint8_t *) grub_video_fb_get_video_ptr (dst, x, y); - - fgcolor = grub_video_fb_map_rgba (src->mode_info->fg_red, - src->mode_info->fg_green, - src->mode_info->fg_blue, - src->mode_info->fg_alpha); - - bgcolor = grub_video_fb_map_rgba (src->mode_info->bg_red, - src->mode_info->bg_green, - src->mode_info->bg_blue, - src->mode_info->bg_alpha); - - for (j = 0; j < height; j++) - { - for (i = 0; i < width; i++) - { - if (*srcptr & srcmask) - *(grub_uint16_t *) dstptr = fgcolor; - else - *(grub_uint16_t *) dstptr = bgcolor; - srcmask >>= 1; - if (!srcmask) - { - srcptr++; - srcmask = 0x80; - } - - dstptr += 2; - } - - srcptr += srcrowskipbyte; - if (srcmask >> srcrowskipbit) - srcmask >>= srcrowskipbit; - else - { - srcptr++; - srcmask <<= 8 - srcrowskipbit; - } - dstptr += dstrowskip; - } -} - -/* Optimized replacing blitter for 1-bit to 8-bit. */ -void -grub_video_fbblit_replace_8bit_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y) -{ - int i; - int j; - grub_uint8_t *srcptr; - grub_uint8_t *dstptr; - grub_uint8_t srcmask; - unsigned int dstrowskip; - unsigned int srcrowskipbyte, srcrowskipbit; - grub_uint8_t fgcolor, bgcolor; - int bit_index; - - /* Calculate the number of bytes to advance from the end of one line - to the beginning of the next line. */ - dstrowskip = dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width; - srcrowskipbyte = (src->mode_info->width - width) >> 3; - srcrowskipbit = (src->mode_info->width - width) & 7; - - bit_index = offset_y * src->mode_info->width + offset_x; - srcptr = (grub_uint8_t *) src->data + (bit_index >> 3); - srcmask = 1 << (~bit_index & 7); - dstptr = (grub_uint8_t *) grub_video_fb_get_video_ptr (dst, x, y); - - fgcolor = grub_video_fb_map_rgba (src->mode_info->fg_red, - src->mode_info->fg_green, - src->mode_info->fg_blue, - src->mode_info->fg_alpha); - - bgcolor = grub_video_fb_map_rgba (src->mode_info->bg_red, - src->mode_info->bg_green, - src->mode_info->bg_blue, - src->mode_info->bg_alpha); - - for (j = 0; j < height; j++) - { - for (i = 0; i < width; i++) - { - if (*srcptr & srcmask) - *(grub_uint8_t *) dstptr = fgcolor; - else - *(grub_uint8_t *) dstptr = bgcolor; - srcmask >>= 1; - if (!srcmask) - { - srcptr++; - srcmask = 0x80; - } - - dstptr++; - } - - srcptr += srcrowskipbyte; - if (srcmask >> srcrowskipbit) - srcmask >>= srcrowskipbit; - else - { - srcptr++; - srcmask <<= 8 - srcrowskipbit; - } - dstptr += dstrowskip; - } -} - /* Optimized replacing blitter for RGBX8888 to BGRX8888. */ void grub_video_fbblit_replace_BGRX8888_RGBX8888 (struct grub_video_fbblit_info *dst, @@ -1122,294 +826,3 @@ } } } - -/* Optimized blending blitter for 1-bit to XXXA8888. */ -void -grub_video_fbblit_blend_XXXA8888_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y) -{ - int i; - int j; - grub_uint8_t *srcptr; - grub_uint8_t *dstptr; - grub_uint8_t srcmask; - unsigned int dstrowskip; - unsigned int srcrowskipbyte, srcrowskipbit; - grub_uint32_t fgcolor, bgcolor; - int bit_index; - - /* Calculate the number of bytes to advance from the end of one line - to the beginning of the next line. */ - dstrowskip = dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width; - srcrowskipbyte = (src->mode_info->width - width) >> 3; - srcrowskipbit = (src->mode_info->width - width) & 7; - - bit_index = offset_y * src->mode_info->width + offset_x; - srcptr = (grub_uint8_t *) src->data + (bit_index >> 3); - srcmask = 1 << (~bit_index & 7); - dstptr = (grub_uint8_t *) grub_video_fb_get_video_ptr (dst, x, y); - - fgcolor = grub_video_fb_map_rgba (src->mode_info->fg_red, - src->mode_info->fg_green, - src->mode_info->fg_blue, - src->mode_info->fg_alpha); - - bgcolor = grub_video_fb_map_rgba (src->mode_info->bg_red, - src->mode_info->bg_green, - src->mode_info->bg_blue, - src->mode_info->bg_alpha); - - for (j = 0; j < height; j++) - { - for (i = 0; i < width; i++) - { - grub_uint32_t color; - grub_uint8_t a; - - if (*srcptr & srcmask) - color = fgcolor; - else - color = bgcolor; - a = (color >> 24) & 0xff; - - if (a == 255) - *(grub_uint32_t *) dstptr = color; - else if (a != 0) - { - grub_uint8_t s1 = (color >> 0) & 0xFF; - grub_uint8_t s2 = (color >> 8) & 0xFF; - grub_uint8_t s3 = (color >> 16) & 0xFF; - - grub_uint8_t d1 = (*(grub_uint32_t *) dstptr >> 0) & 0xFF; - grub_uint8_t d2 = (*(grub_uint32_t *) dstptr >> 8) & 0xFF; - grub_uint8_t d3 = (*(grub_uint32_t *) dstptr >> 16) & 0xFF; - - d1 = (d1 * (255 - a) + s1 * a) / 255; - d2 = (d2 * (255 - a) + s2 * a) / 255; - d3 = (d3 * (255 - a) + s3 * a) / 255; - - *(grub_uint32_t *) dstptr = (a << 24) | (d3 << 16) | (d2 << 8) - | d1; - } - - srcmask >>= 1; - if (!srcmask) - { - srcptr++; - srcmask = 0x80; - } - - dstptr += 4; - } - - srcptr += srcrowskipbyte; - if (srcmask >> srcrowskipbit) - srcmask >>= srcrowskipbit; - else - { - srcptr++; - srcmask <<= 8 - srcrowskipbit; - } - dstptr += dstrowskip; - } -} - -/* Optimized blending blitter for 1-bit to XXX888. */ -void -grub_video_fbblit_blend_XXX888_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y) -{ - int i; - int j; - grub_uint8_t *srcptr; - grub_uint8_t *dstptr; - grub_uint8_t srcmask; - unsigned int dstrowskip; - unsigned int srcrowskipbyte, srcrowskipbit; - grub_uint32_t fgcolor, bgcolor; - int bit_index; - - /* Calculate the number of bytes to advance from the end of one line - to the beginning of the next line. */ - dstrowskip = dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width; - srcrowskipbyte = (src->mode_info->width - width) >> 3; - srcrowskipbit = (src->mode_info->width - width) & 7; - - bit_index = offset_y * src->mode_info->width + offset_x; - srcptr = (grub_uint8_t *) src->data + (bit_index >> 3); - srcmask = 1 << (~bit_index & 7); - dstptr = (grub_uint8_t *) grub_video_fb_get_video_ptr (dst, x, y); - - fgcolor = grub_video_fb_map_rgba (src->mode_info->fg_red, - src->mode_info->fg_green, - src->mode_info->fg_blue, - src->mode_info->fg_alpha); - - bgcolor = grub_video_fb_map_rgba (src->mode_info->bg_red, - src->mode_info->bg_green, - src->mode_info->bg_blue, - src->mode_info->bg_alpha); - - for (j = 0; j < height; j++) - { - for (i = 0; i < width; i++) - { - grub_uint32_t color; - grub_uint8_t a; - if (*srcptr & srcmask) - { - color = fgcolor; - a = src->mode_info->fg_alpha; - } - else - { - color = bgcolor; - a = src->mode_info->bg_alpha; - } - - if (a == 255) - { - ((grub_uint8_t *) dstptr)[0] = color & 0xff; - ((grub_uint8_t *) dstptr)[1] = (color & 0xff00) >> 8; - ((grub_uint8_t *) dstptr)[2] = (color & 0xff0000) >> 16; - } - else if (a != 0) - { - grub_uint8_t s1 = (color >> 0) & 0xFF; - grub_uint8_t s2 = (color >> 8) & 0xFF; - grub_uint8_t s3 = (color >> 16) & 0xFF; - - grub_uint8_t d1 = (*(grub_uint32_t *) dstptr >> 0) & 0xFF; - grub_uint8_t d2 = (*(grub_uint32_t *) dstptr >> 8) & 0xFF; - grub_uint8_t d3 = (*(grub_uint32_t *) dstptr >> 16) & 0xFF; - - ((grub_uint8_t *) dstptr)[0] = (d1 * (255 - a) + s1 * a) / 255; - ((grub_uint8_t *) dstptr)[1] = (d2 * (255 - a) + s2 * a) / 255; - ((grub_uint8_t *) dstptr)[2] = (d3 * (255 - a) + s3 * a) / 255; - } - - srcmask >>= 1; - if (!srcmask) - { - srcptr++; - srcmask = 0x80; - } - - dstptr += 3; - } - - srcptr += srcrowskipbyte; - if (srcmask >> srcrowskipbit) - srcmask >>= srcrowskipbit; - else - { - srcptr++; - srcmask <<= 8 - srcrowskipbit; - } - dstptr += dstrowskip; - } -} - -/* Optimized blending blitter for 1-bit to XXX888. */ -void -grub_video_fbblit_blend_XXX565_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y) -{ - int i; - int j; - grub_uint8_t *srcptr; - grub_uint8_t *dstptr; - grub_uint8_t srcmask; - unsigned int dstrowskip; - unsigned int srcrowskipbyte, srcrowskipbit; - grub_uint16_t fgcolor, bgcolor; - int bit_index; - - /* Calculate the number of bytes to advance from the end of one line - to the beginning of the next line. */ - dstrowskip = dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width; - srcrowskipbyte = (src->mode_info->width - width) >> 3; - srcrowskipbit = (src->mode_info->width - width) & 7; - - bit_index = offset_y * src->mode_info->width + offset_x; - srcptr = (grub_uint8_t *) src->data + (bit_index >> 3); - srcmask = 1 << (~bit_index & 7); - dstptr = (grub_uint8_t *) grub_video_fb_get_video_ptr (dst, x, y); - - fgcolor = grub_video_fb_map_rgba (src->mode_info->fg_red, - src->mode_info->fg_green, - src->mode_info->fg_blue, - src->mode_info->fg_alpha); - - bgcolor = grub_video_fb_map_rgba (src->mode_info->bg_red, - src->mode_info->bg_green, - src->mode_info->bg_blue, - src->mode_info->bg_alpha); - - for (j = 0; j < height; j++) - { - for (i = 0; i < width; i++) - { - grub_uint32_t color; - grub_uint8_t a; - if (*srcptr & srcmask) - { - color = fgcolor; - a = src->mode_info->fg_alpha; - } - else - { - color = bgcolor; - a = src->mode_info->bg_alpha; - } - - if (a == 255) - *(grub_uint16_t *) dstptr = color; - else if (a != 0) - { - grub_uint8_t s1 = (color >> 0) & 0x1F; - grub_uint8_t s2 = (color >> 5) & 0x3F; - grub_uint8_t s3 = (color >> 11) & 0x1F; - - grub_uint8_t d1 = (*(grub_uint16_t *) dstptr >> 0) & 0x1F; - grub_uint8_t d2 = (*(grub_uint16_t *) dstptr >> 5) & 0x3F; - grub_uint8_t d3 = (*(grub_uint16_t *) dstptr >> 11) & 0x1F; - - d1 = (d1 * (255 - a) + s1 * a) / 255; - d2 = (d2 * (255 - a) + s2 * a) / 255; - d3 = (d3 * (255 - a) + s3 * a) / 255; - - *(grub_uint16_t *) dstptr = (d1 & 0x1f) | ((d2 & 0x3f) << 5) - | ((d3 & 0x1f) << 11); - } - - srcmask >>= 1; - if (!srcmask) - { - srcptr++; - srcmask = 0x80; - } - - dstptr += 2; - } - - srcptr += srcrowskipbyte; - if (srcmask >> srcrowskipbit) - srcmask >>= srcrowskipbit; - else - { - srcptr++; - srcmask <<= 8 - srcrowskipbit; - } - dstptr += dstrowskip; - } -} Index: video/fb/video_fb.c =================================================================== --- video/fb/video_fb.c (Revision 2542) +++ video/fb/video_fb.c (Revision 2541) @@ -587,37 +587,6 @@ return; } } - else if (source->mode_info->blit_format == GRUB_VIDEO_BLIT_FORMAT_1BIT_PACKED) - { - if (target->mode_info->bpp == 32) - { - grub_video_fbblit_replace_32bit_1bit (target, source, - x, y, width, height, - offset_x, offset_y); - return; - } - else if (target->mode_info->bpp == 24) - { - grub_video_fbblit_replace_24bit_1bit (target, source, - x, y, width, height, - offset_x, offset_y); - return; - } - else if (target->mode_info->bpp == 16) - { - grub_video_fbblit_replace_16bit_1bit (target, source, - x, y, width, height, - offset_x, offset_y); - return; - } - else if (target->mode_info->bpp == 8) - { - grub_video_fbblit_replace_8bit_1bit (target, source, - x, y, width, height, - offset_x, offset_y); - return; - } - } /* No optimized replace operator found, use default (slow) blitter. */ grub_video_fbblit_replace (target, source, x, y, width, height, @@ -705,42 +674,7 @@ return; } } - else if (source->mode_info->blit_format == GRUB_VIDEO_BLIT_FORMAT_1BIT_PACKED) - { - if (target->mode_info->blit_format - == GRUB_VIDEO_BLIT_FORMAT_BGRA_8888 - || target->mode_info->blit_format - == GRUB_VIDEO_BLIT_FORMAT_RGBA_8888) - { - grub_video_fbblit_blend_XXXA8888_1bit (target, source, - x, y, width, height, - offset_x, offset_y); - return; - } - else if (target->mode_info->blit_format - == GRUB_VIDEO_BLIT_FORMAT_BGR_888 - || target->mode_info->blit_format - == GRUB_VIDEO_BLIT_FORMAT_RGB_888) - { - grub_video_fbblit_blend_XXX888_1bit (target, source, - x, y, width, height, - offset_x, offset_y); - return; - } - else if (target->mode_info->blit_format - == GRUB_VIDEO_BLIT_FORMAT_BGR_565 - || target->mode_info->blit_format - == GRUB_VIDEO_BLIT_FORMAT_RGB_565) - { - grub_video_fbblit_blend_XXX565_1bit (target, source, - x, y, width, height, - offset_x, offset_y); - return; - } - } - - /* No optimized blend operation found, use default (slow) blitter. */ grub_video_fbblit_blend (target, source, x, y, width, height, offset_x, offset_y); Index: video/video.c =================================================================== --- video/video.c (Revision 2542) +++ video/video.c (Revision 2541) @@ -181,8 +181,6 @@ return GRUB_VIDEO_BLIT_FORMAT_RGB_565; } } - else if (mode_info->bpp == 1) - return GRUB_VIDEO_BLIT_FORMAT_1BIT_PACKED; /* Backup route. Unknown format. */ Index: include/grub/fbblit.h =================================================================== --- include/grub/fbblit.h (Revision 2542) +++ include/grub/fbblit.h (Revision 2541) @@ -131,52 +131,4 @@ int width, int height, int offset_x, int offset_y); -void -grub_video_fbblit_replace_32bit_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y); - -void -grub_video_fbblit_replace_24bit_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y); - -void -grub_video_fbblit_replace_16bit_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y); - -void -grub_video_fbblit_replace_8bit_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y); - -void -grub_video_fbblit_blend_XXXA8888_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y); - -void -grub_video_fbblit_blend_XXX888_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y); - -void -grub_video_fbblit_blend_XXX565_1bit (struct grub_video_fbblit_info *dst, - struct grub_video_fbblit_info *src, - int x, int y, - int width, int height, - int offset_x, int offset_y); #endif /* ! GRUB_FBBLIT_HEADER */