mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 10:39:08 +00:00
efi_loader: correctly support parameter delta in Blt
In the Blt service of the EFI_GRAPHICS_OUTPUT_PROTOCOL the parameter delta is measured in bytes and not in pixels. The coding only supports delta being a multiple of four. The UEFI specification does not explicitly require this but as pixels have a size of four bytes we should be able to assume four byte alignment. The corresponding unit test is corrected, too. It can be launched with setenv efi_selftest block image transfer bootefi selftest Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
6fc901c538
commit
51a0f45122
2 changed files with 29 additions and 7 deletions
|
@ -87,7 +87,7 @@ static void EFIAPI notify(struct efi_event *event, void *context)
|
|||
|
||||
/* Copy image to video */
|
||||
gop->blt(gop, bitmap, EFI_BLT_BUFFER_TO_VIDEO, sx, 0, dx, DEPTH,
|
||||
width, HEIGHT, WIDTH);
|
||||
width, HEIGHT, WIDTH * sizeof(struct efi_gop_pixel));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -276,7 +276,7 @@ static int execute(void)
|
|||
/* Copy port holes back to buffer */
|
||||
ret = gop->blt(gop, bitmap, EFI_BLT_VIDEO_TO_BLT_BUFFER,
|
||||
94, 57 + DEPTH, 94, 57,
|
||||
90, 26, WIDTH);
|
||||
90, 26, WIDTH * sizeof(struct efi_gop_pixel));
|
||||
if (ret != EFI_SUCCESS) {
|
||||
efi_st_error("EFI_BLT_VIDEO_TO_BLT_BUFFER failed\n");
|
||||
return EFI_ST_FAILURE;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue