devc1 wrote:
I enumerate G.O.P and it shows the resolution but frame buffer address is 0, Blt() functions does not work but it does on UGA.
Did you try setting the video mode? There are some GOP implementations that won't report complete information until after a mode set is performed.
devc1 wrote:
How to create this virtual machine,
Write enough of an EFI implementation to call an EFI driver.
devc1 wrote:
I never used VMX,
You don't need hardware virtualization.
devc1 wrote:
someone in stackoverflow has previously told me to copy the protocol in the ROM or something, How do I do that ?
Search the configuration table for entries with EFI_UGA_IO_PROTOCOL_GUID. Each of these entries points to a EFI_DRIVER_OS_HANDOFF_HEADER that points to a copy of the PCI option ROM and the device path for the display adapter. There may be multiple option ROMs, including option ROMs for devices that are supported by the firmware but not physically present. You will need to determine which ROM(s) apply to your hardware - the device path should help.
Once you have the appropriate option ROM, load the PE executables into your EFI virtual machine and tell your EFI virtual machine to call their entry points. One of them should register the EFI_UGA_IO_PROTOCOL handle that you can use to access the display adapter. Tell your EFI virtual machine to call the functions in the EFI_UGA_IO_PROTOCOL to access the display adapter.
devc1 wrote:
I guess you looked up that post and came up with this answer
No, I've been reading the EFI and UGA specifications.