* Graphic Output on qemu @ 2023-02-07 10:22 Alireza Banejad 2023-02-07 19:55 ` [edk2-devel] " Paul, Bill 0 siblings, 1 reply; 6+ messages in thread From: Alireza Banejad @ 2023-02-07 10:22 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 545 bytes --] Hello everyone, I am trying to use the GOP library for my uefi development. But no matter what code whenever i want to open the GOP handle RETURN_UNSUPPORTED is returned. I think this may be a qemu problem as if it doesn't support the GOP at all. This is how I run my qemu qemu-system-x86_64 -bios $FIRMWARE -hda fat:rw:$DRIVE -global isa-debugcon.iobase=0x402 -net none -debugcon file:debug2.log -machine pc-q35-6.2 -device virtio-gpu Should I add any specific options for the qemu command or should I just use another lib for GOP on qemu? [-- Attachment #2: Type: text/html, Size: 635 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] Graphic Output on qemu 2023-02-07 10:22 Graphic Output on qemu Alireza Banejad @ 2023-02-07 19:55 ` Paul, Bill 2023-02-08 8:03 ` Alireza Banejad 0 siblings, 1 reply; 6+ messages in thread From: Paul, Bill @ 2023-02-07 19:55 UTC (permalink / raw) To: devel@edk2.groups.io, devel@edk2.groups.io, alibanejad1376@gmail.com Of all the gin joints in all the towns in all the world, Alireza Banejad had to walk into mine at 02:22:32 on Tuesday, 7 February 2023 and say: > Do not click links or open attachments unless you recognize the sender and > know the content is safe. Hello everyone, > I am trying to use the GOP library for my uefi development. But no matter > what code whenever i want to open the GOP handle RETURN_UNSUPPORTED is > returned. I think this may be a qemu problem as if it doesn't support the > GOP at all. This is how I run my qemu > > qemu-system-x86_64 -bios $FIRMWARE -hda fat:rw:$DRIVE -global > isa-debugcon.iobase=0x402 -net none -debugcon file:debug2.log -machine > pc-q35-6.2 -device virtio-gpu > > Should I add any specific options for the qemu command or should I just use > another lib for GOP on qemu? One question: when you launch QEMU, do you actually see a graphics window pop up with the Tianocore logo? If you press F2 as it launches, are you able to enter the setup menu? I'm trying to understand if QEMU/OVMF's graphics display is working all all. If it is, then in theory the GOP support should work. If I may suggest, omit the -device virtio-gpu option. In my experience, the OVMF firmware for Intel works with the QEMU built-in emulated VGA display device. With the code I've written in the past, calling BS->LocateProtocol() with the GOP GUID returns a valid handle. Once you have that, you should be able to use the GOP methods, e.g. GOP->Blt(). -Bill -- ============================================================================= -Bill Paul (510) 749-2329 | VxWorks Software Architect, wpaul@windriver.com | Master of Unix-Fu - Wind River Systems ============================================================================= "I put a dollar in a change machine. Nothing changed." - George Carlin ============================================================================= ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] Graphic Output on qemu 2023-02-07 19:55 ` [edk2-devel] " Paul, Bill @ 2023-02-08 8:03 ` Alireza Banejad 2023-02-08 9:06 ` Michael Brown 0 siblings, 1 reply; 6+ messages in thread From: Alireza Banejad @ 2023-02-08 8:03 UTC (permalink / raw) To: Paul, Bill; +Cc: devel@edk2.groups.io [-- Attachment #1: Type: text/plain, Size: 3206 bytes --] Hi Bill, Yes, I have the graphics window with the logo showing and I see the setup menu. In fact, I have designed a HII form with my specific applications. The problem is that it just uses the SimpleTextOutput. It doesn't use the GOP or UgaDraw libraries. Plus, I am able to locate the protocol and it returns the status code of 0. the actual issue happens with the HandleProtocol Function. After I compile my code with the debug macros enabled, the status code for HandleProtocol() function is RETURN_UNSUPPORTED (Both for UgaDraw and GOP) and if I were to use the GOP or UgaDraw methods, my application would simply crash. Below is how I use the HandleProtocol function: Status = gBS->HandleProtocol ( gST->ConsoleOutHandle, &gEfiGraphicsOutputProtocolGuid, (VOID **)&GraphicsOutput ); Last but not least, whether using the virtio-gpu I get the same result. Based on what I mentioned above, since I find the protocol but I'm not able to open it, I concluded there might be something wrong with my qemu settings. On Tue, Feb 7, 2023, 23:25 Paul, Bill <Bill.Paul@windriver.com> wrote: > Of all the gin joints in all the towns in all the world, Alireza Banejad > had > to walk into mine at 02:22:32 on Tuesday, 7 February 2023 and say: > > > Do not click links or open attachments unless you recognize the sender > and > > know the content is safe. Hello everyone, > > I am trying to use the GOP library for my uefi development. But no matter > > what code whenever i want to open the GOP handle RETURN_UNSUPPORTED is > > returned. I think this may be a qemu problem as if it doesn't support the > > GOP at all. This is how I run my qemu > > > > qemu-system-x86_64 -bios $FIRMWARE -hda fat:rw:$DRIVE -global > > isa-debugcon.iobase=0x402 -net none -debugcon file:debug2.log -machine > > pc-q35-6.2 -device virtio-gpu > > > > Should I add any specific options for the qemu command or should I just > use > > another lib for GOP on qemu? > > One question: when you launch QEMU, do you actually see a graphics window > pop > up with the Tianocore logo? If you press F2 as it launches, are you able > to > enter the setup menu? > > I'm trying to understand if QEMU/OVMF's graphics display is working all > all. > If it is, then in theory the GOP support should work. > > If I may suggest, omit the -device virtio-gpu option. In my experience, > the > OVMF firmware for Intel works with the QEMU built-in emulated VGA display > device. With the code I've written in the past, calling > BS->LocateProtocol() > with the GOP GUID returns a valid handle. Once you have that, you should > be > able to use the GOP methods, e.g. GOP->Blt(). > > -Bill > > -- > > ============================================================================= > -Bill Paul (510) 749-2329 | VxWorks Software Architect, > wpaul@windriver.com | Master of Unix-Fu - Wind River > Systems > > ============================================================================= > "I put a dollar in a change machine. Nothing changed." - George Carlin > > ============================================================================= > > > [-- Attachment #2: Type: text/html, Size: 4087 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] Graphic Output on qemu 2023-02-08 8:03 ` Alireza Banejad @ 2023-02-08 9:06 ` Michael Brown 2023-02-08 9:55 ` Alireza Banejad 0 siblings, 1 reply; 6+ messages in thread From: Michael Brown @ 2023-02-08 9:06 UTC (permalink / raw) To: devel, alibanejad1376, Paul, Bill On 08/02/2023 08:03, Alireza Banejad wrote: > Below is how I use the HandleProtocol function: > > Status = gBS->HandleProtocol ( > gST->ConsoleOutHandle, > &gEfiGraphicsOutputProtocolGuid, > (VOID **)&GraphicsOutput > ); You are querying only the ConsoleOutHandle, which is not necessarily where the GOP will be installed. Use LocateProtocol() to find the protocol instance instead: Status = gBS->LocateProtocol(&gEfiGraphicsOutputProtocolGuid, NULL, (VOID **)&GraphicsOutput); HTH, Michael ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] Graphic Output on qemu 2023-02-08 9:06 ` Michael Brown @ 2023-02-08 9:55 ` Alireza Banejad 2023-02-08 10:00 ` Michael Brown 0 siblings, 1 reply; 6+ messages in thread From: Alireza Banejad @ 2023-02-08 9:55 UTC (permalink / raw) To: Michael Brown; +Cc: devel, Paul, Bill [-- Attachment #1: Type: text/plain, Size: 2255 bytes --] As my previous email, I mentioned that I am able to find the protocol since the LocateProtocol returns 0 (EFI_SUCCESS) (using the exact code you wrote) . But when I want to open it either with OpenProtocol or HandleProtocol I get a RETURN_UNSUPPORTED. Are you implying that by calling LocateProtocol() the protocol would also be opened? or do I still need to open it? if I still need to open then I am still getting the UNSUPPORTED Status. But if I don't need to open it I still don't know why I am not able to use the GOP methods. one example of the many examples which I get this error is as below: Status = gBS->HandleProtocol (SystemTable->ConsoleOutHandle, &gEfiGraphicsOutputProtocolGuid, (VOID **)&GraphicsOutput); if (EFI_ERROR (Status)) { Status = gBS->LocateProtocol (&gEfiGraphicsOutputProtocolGuid, NULL, (VOID **)&GraphicsOutput); if (EFI_ERROR (Status)) { Print (L"Error: Could not find a GOP instance!\n"); Status = EFI_NOT_FOUND; goto Done; } } Blt = NULL; ImageWidth = 0; ImageHeight = 0; Status = TranslateBmpToGopBlt ( BmpFileData, BmpFileSize, &Blt, &BltSize, &ImageHeight, &ImageWidth ); It is worth mentioning that the BmpFIleData and BmpFileSize are valid variables with the proper data stored. Anyways, the status code for the TranslateBmpToGopBlt returns a RETURN_UNSUPPORTED. This is the same with other GOP methods On Wed, Feb 8, 2023 at 12:36 PM Michael Brown <mcb30@ipxe.org> wrote: > On 08/02/2023 08:03, Alireza Banejad wrote: > > Below is how I use the HandleProtocol function: > > > > Status = gBS->HandleProtocol ( > > gST->ConsoleOutHandle, > > &gEfiGraphicsOutputProtocolGuid, > > (VOID **)&GraphicsOutput > > ); > > You are querying only the ConsoleOutHandle, which is not necessarily > where the GOP will be installed. > > Use LocateProtocol() to find the protocol instance instead: > > > Status = gBS->LocateProtocol(&gEfiGraphicsOutputProtocolGuid, NULL, > (VOID **)&GraphicsOutput); > > HTH, > > Michael > > [-- Attachment #2: Type: text/html, Size: 3009 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] Graphic Output on qemu 2023-02-08 9:55 ` Alireza Banejad @ 2023-02-08 10:00 ` Michael Brown 0 siblings, 0 replies; 6+ messages in thread From: Michael Brown @ 2023-02-08 10:00 UTC (permalink / raw) To: Alireza Banejad; +Cc: devel, Paul, Bill On 08/02/2023 09:55, Alireza Banejad wrote: > As my previous email, I mentioned that I am able to find the protocol > since the LocateProtocol returns 0 (EFI_SUCCESS) (using the exact code > you wrote) . But when I want to open it either with OpenProtocol or > HandleProtocol I get a RETURN_UNSUPPORTED. Are you implying that by > calling LocateProtocol() the protocol would also be opened? LocateProtocol() gives you back a pointer to the protocol instance. There is no need for a separate "open" action: you can just immediately use the protocol instance that LocateProtocol() returns to you. Michael ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-02-08 10:00 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-02-07 10:22 Graphic Output on qemu Alireza Banejad 2023-02-07 19:55 ` [edk2-devel] " Paul, Bill 2023-02-08 8:03 ` Alireza Banejad 2023-02-08 9:06 ` Michael Brown 2023-02-08 9:55 ` Alireza Banejad 2023-02-08 10:00 ` Michael Brown
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox