aboutsummaryrefslogtreecommitdiff
path: root/stand/efi
diff options
context:
space:
mode:
authorToomas Soome <tsoome@FreeBSD.org>2021-12-06 17:21:58 +0000
committerToomas Soome <tsoome@FreeBSD.org>2021-12-11 11:25:35 +0000
commit6102f43cf060a592894dcd591c2dfced14581983 (patch)
treed4e3bba4096d5f229aa34951c6aac934b32fd5d7 /stand/efi
parentfaa3605705c67bbb8ff1de70bed9f656e868dfc6 (diff)
downloadsrc-6102f43cf060a592894dcd591c2dfced14581983.tar.gz
src-6102f43cf060a592894dcd591c2dfced14581983.zip
loader: framebuffer should only be written into
Reading from Write Combining memory can be very-very slow. Try to use shadow buffer to avoid such reads. MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D33305
Diffstat (limited to 'stand/efi')
-rw-r--r--stand/efi/loader/framebuffer.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/stand/efi/loader/framebuffer.c b/stand/efi/loader/framebuffer.c
index adb9dfb62cee..03752b77a24e 100644
--- a/stand/efi/loader/framebuffer.c
+++ b/stand/efi/loader/framebuffer.c
@@ -622,6 +622,9 @@ efi_find_framebuffer(teken_gfx_t *gfx_state)
gfx_state->tg_fb.fb_bpp = fls(efifb.fb_mask_red | efifb.fb_mask_green |
efifb.fb_mask_blue | efifb.fb_mask_reserved);
+ free(gfx_state->tg_shadow_fb);
+ gfx_state->tg_shadow_fb = malloc(efifb.fb_height * efifb.fb_width *
+ sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL));
return (0);
}