It is a bug in the blt interface. I have tested it with OvmfPkgX64.
Here is the simple test step:
1. Change BootLogoLib.c line 213:
        Status = GraphicsOutput->Blt (
                                   GraphicsOutput,
                                   Blt,
                                   EfiBltBufferToVideo,
                                   0,
                                   0,
                                   (UINTN) DestX,
                                   (UINTN) DestY,
                                   Image.Width,
                                   Image.Height,
                                   Image.Width * sizeof 
(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
                                   );
==>
        Status = GraphicsOutput->Blt (
                                   GraphicsOutput,
                                   Blt,
                                   EfiBltBufferToVideo,
                                   20,
                                   20,
                                   (UINTN) DestX,
                                   (UINTN) DestY,
                                   Image.Width - 20,
                                   Image.Height - 20,
                                   Image.Width * sizeof 
(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
                                   );
2. build OvmfpkgX64 image and boot thru Qemu.
3. view the logo.
The logo shows incorrect. It should show at the (20, 20), but the result is (0, 
20).
Apply this patch, then the result is expected, i.e. it showed at (20, 20) of 
the logo.bmp.

Tested-by: Zhichao Gao <zhichao....@intel.com>
Reviewed-by: Zhichao Gao <zhichao....@intel.com>

> -----Original Message-----
> From: Ni, Ray
> Sent: Tuesday, September 17, 2019 4:57 AM
> To: Gao, Zhichao <zhichao....@intel.com>
> Cc: Gris87 <gri...@yandex.ru>; devel@edk2.groups.io
> Subject: RE: [PATCH] MdeModulePkg: Add missing sourceX for Blt
> 
> + Zhichao for review.
> 
> > -----Original Message-----
> > From: Gris87 <gri...@yandex.ru>
> > Sent: Monday, September 16, 2019 7:22 AM
> > To: devel@edk2.groups.io
> > Cc: Gris87 <gri...@yandex.ru>; Ni, Ray <ray...@intel.com>
> > Subject: [PATCH] MdeModulePkg: Add missing sourceX for Blt
> >
> > There is no sourceX offset in case when
> > Configure->PixelFormat == PixelBlueGreenRedReserved8BitPerColor.
> > We are copying most left pixels instead of copying required rectangle.
> >
> > Signed-off-by: Gris87 <gri...@yandex.ru>
> > Cc: Ruiyu Ni <ruiyu...@intel.com>
> > ---
> >  MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c
> > b/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c
> > index 47c5326e99..ff7979c962 100644
> > --- a/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c
> > +++ b/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c
> > @@ -504,7 +504,7 @@ FrameBufferBltLibBufferToVideo (
> >      Destination = Configure->FrameBuffer + Offset;
> >
> >      if (Configure->PixelFormat == PixelBlueGreenRedReserved8BitPerColor)
> {
> > -      Source = (UINT8 *) BltBuffer + (SrcY * Delta);
> > +      Source = (UINT8 *) BltBuffer + (SrcY * Delta) + SourceX * sizeof
> (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);
> >      } else {
> >        for (IndexX = 0; IndexX < Width; IndexX++) {
> >          Blt =
> > --
> > 2.19.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#47351): https://edk2.groups.io/g/devel/message/47351
Mute This Topic: https://groups.io/mt/34168097/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to