[edk2-devel] [PATCH] MdeModulePkg: Add missing sourceX for Blt

Gris87 posted 1 patch 4 years, 7 months ago
Failed in applying to current master (apply log)
MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[edk2-devel] [PATCH] MdeModulePkg: Add missing sourceX for Blt
Posted by Gris87 4 years, 7 months ago
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 <Gris87@yandex.ru>
Cc: Ruiyu Ni <ruiyu.ni@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 (#47297): https://edk2.groups.io/g/devel/message/47297
Mute This Topic: https://groups.io/mt/34168097/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] MdeModulePkg: Add missing sourceX for Blt
Posted by Ni, Ray 4 years, 7 months ago
+ Zhichao for review.

> -----Original Message-----
> From: Gris87 <Gris87@yandex.ru>
> Sent: Monday, September 16, 2019 7:22 AM
> To: devel@edk2.groups.io
> Cc: Gris87 <Gris87@yandex.ru>; Ni, Ray <ray.ni@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 <Gris87@yandex.ru>
> Cc: Ruiyu Ni <ruiyu.ni@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 (#47303): https://edk2.groups.io/g/devel/message/47303
Mute This Topic: https://groups.io/mt/34168097/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] MdeModulePkg: Add missing sourceX for Blt
Posted by Gao, Zhichao 4 years, 7 months ago
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.gao@intel.com>
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>

> -----Original Message-----
> From: Ni, Ray
> Sent: Tuesday, September 17, 2019 4:57 AM
> To: Gao, Zhichao <zhichao.gao@intel.com>
> Cc: Gris87 <Gris87@yandex.ru>; devel@edk2.groups.io
> Subject: RE: [PATCH] MdeModulePkg: Add missing sourceX for Blt
> 
> + Zhichao for review.
> 
> > -----Original Message-----
> > From: Gris87 <Gris87@yandex.ru>
> > Sent: Monday, September 16, 2019 7:22 AM
> > To: devel@edk2.groups.io
> > Cc: Gris87 <Gris87@yandex.ru>; Ni, Ray <ray.ni@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 <Gris87@yandex.ru>
> > Cc: Ruiyu Ni <ruiyu.ni@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/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] MdeModulePkg: Add missing sourceX for Blt
Posted by Wu, Hao A 4 years, 7 months ago
> -----Original Message-----
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
> Gao, Zhichao
> Sent: Tuesday, September 17, 2019 3:00 PM
> To: Ni, Ray
> Cc: Gris87; devel@edk2.groups.io
> Subject: Re: [edk2-devel] [PATCH] MdeModulePkg: Add missing sourceX for
> Blt
> 
> 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.gao@intel.com>
> Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>


The patch has been pushed via commit 96301aadc1.

Best Regards,
Hao Wu


> 
> > -----Original Message-----
> > From: Ni, Ray
> > Sent: Tuesday, September 17, 2019 4:57 AM
> > To: Gao, Zhichao <zhichao.gao@intel.com>
> > Cc: Gris87 <Gris87@yandex.ru>; devel@edk2.groups.io
> > Subject: RE: [PATCH] MdeModulePkg: Add missing sourceX for Blt
> >
> > + Zhichao for review.
> >
> > > -----Original Message-----
> > > From: Gris87 <Gris87@yandex.ru>
> > > Sent: Monday, September 16, 2019 7:22 AM
> > > To: devel@edk2.groups.io
> > > Cc: Gris87 <Gris87@yandex.ru>; Ni, Ray <ray.ni@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 <Gris87@yandex.ru>
> > > Cc: Ruiyu Ni <ruiyu.ni@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 (#48010): https://edk2.groups.io/g/devel/message/48010
Mute This Topic: https://groups.io/mt/34168097/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-