summaryrefslogtreecommitdiff
path: root/src/vmware.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vmware.c')
-rw-r--r--src/vmware.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/vmware.c b/src/vmware.c
index 3f5e486..9160cf2 100644
--- a/src/vmware.c
+++ b/src/vmware.c
@@ -121,7 +121,7 @@ vmwareWriteReg(VMWAREPtr pVMWARE, int index, CARD32 value)
void
vmwareWriteWordToFIFO(VMWAREPtr pVMWARE, CARD32 value)
{
- CARD32* vmwareFIFO = pVMWARE->vmwareFIFO;
+ volatile CARD32* vmwareFIFO = pVMWARE->vmwareFIFO;
/* Need to sync? */
if ((vmwareFIFO[SVGA_FIFO_NEXT_CMD] + sizeof(CARD32) == vmwareFIFO[SVGA_FIFO_STOP])
@@ -132,6 +132,9 @@ vmwareWriteWordToFIFO(VMWAREPtr pVMWARE, CARD32 value)
}
vmwareFIFO[vmwareFIFO[SVGA_FIFO_NEXT_CMD] / sizeof(CARD32)] = value;
+
+ write_mem_barrier();
+
if(vmwareFIFO[SVGA_FIFO_NEXT_CMD] == vmwareFIFO[SVGA_FIFO_MAX] -
sizeof(CARD32)) {
vmwareFIFO[SVGA_FIFO_NEXT_CMD] = vmwareFIFO[SVGA_FIFO_MIN];
@@ -299,9 +302,11 @@ VMWAREPreInit(ScrnInfoPtr pScrn, int flags)
uint32 width = 0, height = 0;
Bool defaultMode;
+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
#ifndef BUILD_FOR_420
domainIOBase = pScrn->domainIOBase;
#endif
+#endif
if (flags & PROBE_DETECT) {
return FALSE;
@@ -653,7 +658,8 @@ VMWAREPreInit(ScrnInfoPtr pScrn, int flags)
}
i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, pScrn->display->modes,
- clockRanges, NULL, 256, pVMWARE->maxWidth, 32 * 32,
+ clockRanges, NULL, 256, pVMWARE->maxWidth,
+ pVMWARE->bitsPerPixel * 1,
128, pVMWARE->maxHeight,
pScrn->display->virtualX, pScrn->display->virtualY,
pVMWARE->videoRam,
@@ -1022,7 +1028,7 @@ VMWAREInitFIFO(ScrnInfoPtr pScrn)
int err;
void *mmioVirtBase;
#endif
- CARD32* vmwareFIFO;
+ volatile CARD32* vmwareFIFO;
Bool extendedFifo;
int min;
@@ -1053,6 +1059,9 @@ VMWAREInitFIFO(ScrnInfoPtr pScrn)
extendedFifo = pVMWARE->vmwareCapability & SVGA_CAP_EXTENDED_FIFO;
min = extendedFifo ? vmwareReadReg(pVMWARE, SVGA_REG_MEM_REGS) : 4;
+ vmwareWaitForFB(pVMWARE);
+ vmwareWriteReg(pVMWARE, SVGA_REG_CONFIG_DONE, 0);
+
vmwareFIFO[SVGA_FIFO_MIN] = min * sizeof(CARD32);
vmwareFIFO[SVGA_FIFO_MAX] = pVMWARE->mmioSize;
vmwareFIFO[SVGA_FIFO_NEXT_CMD] = min * sizeof(CARD32);