You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.9 KiB
63 lines
1.9 KiB
From 57301015f16e26f12caf6f6cb4d730e7793cb2c3 Mon Sep 17 00:00:00 2001 |
|
From: Adam Jackson <ajax@redhat.com> |
|
Date: Wed, 30 May 2018 11:46:46 -0400 |
|
Subject: [PATCH xf86-video-vesa] Disable shadow by default on known-virtual |
|
GPUs |
|
|
|
Device memory is the same domain as host memory, in this case, so the |
|
shadow just introduces more memcpy. |
|
|
|
Signed-off-by: Adam Jackson <ajax@redhat.com> |
|
--- |
|
src/vesa.c | 35 ++++++++++++++++++++++++++++++++--- |
|
1 file changed, 32 insertions(+), 3 deletions(-) |
|
|
|
diff --git a/src/vesa.c b/src/vesa.c |
|
index 2300f4e..7d2bf94 100644 |
|
--- a/src/vesa.c |
|
+++ b/src/vesa.c |
|
@@ -844,9 +844,38 @@ VESAPreInit(ScrnInfoPtr pScrn, int flags) |
|
memcpy(pVesa->Options, VESAOptions, sizeof(VESAOptions)); |
|
xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, pVesa->Options); |
|
|
|
- /* Use shadow by default */ |
|
- pVesa->shadowFB = xf86ReturnOptValBool(pVesa->Options, OPTION_SHADOW_FB, |
|
- TRUE); |
|
+ /* Use shadow by default, for non-virt hardware */ |
|
+ if (!xf86GetOptValBool(pVesa->Options, OPTION_SHADOW_FB, &pVesa->shadowFB)) |
|
+ { |
|
+ switch (pVesa->pciInfo->vendor_id) { |
|
+ case 0x1234: /* bochs vga (not in pci.ids) */ |
|
+ case 0x15ad: /* vmware */ |
|
+ case 0x1b36: /* qemu qxl */ |
|
+ case 0x80ee: /* virtualbox */ |
|
+ case 0xaaaa: /* parallels (not in pci.ids) */ |
|
+ pVesa->shadowFB = FALSE; |
|
+ break; |
|
+ |
|
+ case 0x1013: /* qemu's cirrus emulation */ |
|
+ if (pVesa->pciInfo->subvendor_id == 0x1af4) |
|
+ pVesa->shadowFB = FALSE; |
|
+ else |
|
+ pVesa->shadowFB = TRUE; |
|
+ break; |
|
+ |
|
+ case 0x1414: /* microsoft hyper-v */ |
|
+ if (pVesa->pciInfo->device_id == 0x5353) |
|
+ pVesa->shadowFB = FALSE; |
|
+ else |
|
+ pVesa->shadowFB = TRUE; |
|
+ break; |
|
+ |
|
+ default: |
|
+ pVesa->shadowFB = TRUE; |
|
+ break; |
|
+ } |
|
+ } |
|
+ |
|
/* Use default refresh by default. Too many VBE 3.0 |
|
* BIOSes are incorrectly implemented. |
|
*/ |
|
-- |
|
2.17.0 |
|
|
|
|