+STATIC\r
+EFI_STATUS\r
+QemuVideoVmwareSvgaCompleteModeData (\r
+ IN QEMU_VIDEO_PRIVATE_DATA *Private,\r
+ OUT EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;\r
+ EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *FrameBufDesc;\r
+ UINT32 BytesPerLine, FbOffset, BytesPerPixel;\r
+\r
+ Info = Mode->Info;\r
+ CopyMem (Info, &Private->VmwareSvgaModeInfo[Mode->Mode], sizeof (*Info));\r
+ BytesPerPixel = Private->ModeData[Mode->Mode].ColorDepth / 8;\r
+ BytesPerLine = Info->PixelsPerScanLine * BytesPerPixel;\r
+\r
+ FbOffset = VmwareSvgaRead (Private, VmwareSvgaRegFbOffset);\r
+\r
+ Status = Private->PciIo->GetBarAttributes (\r
+ Private->PciIo,\r
+ PCI_BAR_IDX1,\r
+ NULL,\r
+ (VOID**) &FrameBufDesc\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return EFI_DEVICE_ERROR;\r
+ }\r
+\r
+ Mode->FrameBufferBase = FrameBufDesc->AddrRangeMin + FbOffset;\r
+ Mode->FrameBufferSize = BytesPerLine * Info->VerticalResolution;\r
+\r
+ FreePool (FrameBufDesc);\r
+ return Status;\r
+}\r
+\r