mirror of
https://xff.cz/git/u-boot/
synced 2025-09-30 23:11:32 +02: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:
committed by
Alexander Graf
parent
6fc901c538
commit
51a0f45122
@@ -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;
|
||||
|
Reference in New Issue
Block a user