[xorg-x11-drv-vmware] ABI rebuild vmware-11.0.3-abi12.patch: Compensate for videoabi 12. vmware-11.0.3-unbreak-xinerama.pa

Adam Jackson ajax at fedoraproject.org
Wed Nov 16 19:17:37 UTC 2011


commit 9e403b91a14f2df37e86a74a092eedb5570a216c
Author: Adam Jackson <ajax at redhat.com>
Date:   Wed Nov 16 19:17:19 2011 -0500

    ABI rebuild
    vmware-11.0.3-abi12.patch: Compensate for videoabi 12.
    vmware-11.0.3-unbreak-xinerama.patch: Unbreak swapped dispatch in the
    fake-xinerama code.

 vmware-11.0.3-abi12.patch            |  272 ++++++++++++++++++++++++++++++++++
 vmware-11.0.3-unbreak-xinerama.patch |   30 ++++
 xorg-x11-drv-vmware.spec             |   15 ++-
 3 files changed, 315 insertions(+), 2 deletions(-)
---
diff --git a/vmware-11.0.3-abi12.patch b/vmware-11.0.3-abi12.patch
new file mode 100644
index 0000000..31fd51f
--- /dev/null
+++ b/vmware-11.0.3-abi12.patch
@@ -0,0 +1,272 @@
+Not backported from git, upstream is taking their sweet time about releases.
+
+diff -up xf86-video-vmware-11.0.3/src/vmware.c.jx xf86-video-vmware-11.0.3/src/vmware.c
+--- xf86-video-vmware-11.0.3/src/vmware.c.jx	2010-10-29 03:25:37.000000000 -0400
++++ xf86-video-vmware-11.0.3/src/vmware.c	2011-11-16 19:06:54.621005146 -0500
+@@ -608,7 +608,7 @@ VMWAREPreInit(ScrnInfoPtr pScrn, int fla
+     ClockRange* clockRanges;
+     IOADDRESS domainIOBase = 0;
+ 
+-#ifndef BUILD_FOR_420
++#if !defined(BUILD_FOR_420) && ABI_VIDEODRV_VERSION < 12
+     domainIOBase = pScrn->domainIOBase;
+ #endif
+ 
+diff -up xf86-video-vmware-11.0.3/src/vmwarectrl.c.jx xf86-video-vmware-11.0.3/src/vmwarectrl.c
+--- xf86-video-vmware-11.0.3/src/vmwarectrl.c.jx	2010-09-07 06:19:21.000000000 -0400
++++ xf86-video-vmware-11.0.3/src/vmwarectrl.c	2011-11-16 19:12:38.786000035 -0500
+@@ -81,10 +81,10 @@ VMwareCtrlQueryVersion(ClientPtr client)
+    rep.majorVersion = VMWARE_CTRL_MAJOR_VERSION;
+    rep.minorVersion = VMWARE_CTRL_MINOR_VERSION;
+    if (client->swapped) {
+-      swaps(&rep.sequenceNumber, n);
+-      swapl(&rep.length, n);
+-      swapl(&rep.majorVersion, n);
+-      swapl(&rep.minorVersion, n);
++      vmswaps(&rep.sequenceNumber, n);
++      vmswapl(&rep.length, n);
++      vmswapl(&rep.majorVersion, n);
++      vmswapl(&rep.minorVersion, n);
+    }
+    WriteToClient(client, sizeof(xVMwareCtrlQueryVersionReply), (char *)&rep);
+ 
+@@ -224,11 +224,11 @@ VMwareCtrlSetRes(ClientPtr client)
+    rep.x = stuff->x;
+    rep.y = stuff->y;
+    if (client->swapped) {
+-      swaps(&rep.sequenceNumber, n);
+-      swapl(&rep.length, n);
+-      swapl(&rep.screen, n);
+-      swapl(&rep.x, n);
+-      swapl(&rep.y, n);
++      vmswaps(&rep.sequenceNumber, n);
++      vmswapl(&rep.length, n);
++      vmswapl(&rep.screen, n);
++      vmswapl(&rep.x, n);
++      vmswapl(&rep.y, n);
+    }
+    WriteToClient(client, sizeof(xVMwareCtrlSetResReply), (char *)&rep);
+ 
+@@ -394,9 +394,9 @@ VMwareCtrlSetTopology(ClientPtr client)
+    rep.sequenceNumber = client->sequence;
+    rep.screen = stuff->screen;
+    if (client->swapped) {
+-      swaps(&rep.sequenceNumber, n);
+-      swapl(&rep.length, n);
+-      swapl(&rep.screen, n);
++      vmswaps(&rep.sequenceNumber, n);
++      vmswapl(&rep.length, n);
++      vmswapl(&rep.screen, n);
+    }
+    WriteToClient(client, sizeof(xVMwareCtrlSetTopologyReply), (char *)&rep);
+ 
+@@ -463,7 +463,7 @@ SVMwareCtrlQueryVersion(ClientPtr client
+    REQUEST(xVMwareCtrlQueryVersionReq);
+    REQUEST_SIZE_MATCH(xVMwareCtrlQueryVersionReq);
+ 
+-   swaps(&stuff->length, n);
++   vmswaps(&stuff->length, n);
+ 
+    return VMwareCtrlQueryVersion(client);
+ }
+@@ -494,10 +494,10 @@ SVMwareCtrlSetRes(ClientPtr client)
+    REQUEST(xVMwareCtrlSetResReq);
+    REQUEST_SIZE_MATCH(xVMwareCtrlSetResReq);
+ 
+-   swaps(&stuff->length, n);
+-   swapl(&stuff->screen, n);
+-   swapl(&stuff->x, n);
+-   swapl(&stuff->y, n);
++   vmswaps(&stuff->length, n);
++   vmswapl(&stuff->screen, n);
++   vmswapl(&stuff->x, n);
++   vmswapl(&stuff->y, n);
+ 
+    return VMwareCtrlSetRes(client);
+ }
+@@ -528,9 +528,9 @@ SVMwareCtrlSetTopology(ClientPtr client)
+    REQUEST(xVMwareCtrlSetTopologyReq);
+    REQUEST_SIZE_MATCH(xVMwareCtrlSetTopologyReq);
+ 
+-   swaps(&stuff->length, n);
+-   swapl(&stuff->screen, n);
+-   swapl(&stuff->number, n);
++   vmswaps(&stuff->length, n);
++   vmswapl(&stuff->screen, n);
++   vmswapl(&stuff->number, n);
+    /* Each extent is a struct of shorts. */
+    SwapRestS(stuff);
+ 
+diff -up xf86-video-vmware-11.0.3/src/vmware.h.jx xf86-video-vmware-11.0.3/src/vmware.h
+--- xf86-video-vmware-11.0.3/src/vmware.h.jx	2010-10-19 08:55:22.000000000 -0400
++++ xf86-video-vmware-11.0.3/src/vmware.h	2011-11-16 19:12:08.924997691 -0500
+@@ -43,6 +43,15 @@
+ #include "svga_reg.h"
+ #include "svga_struct.h"
+ 
++#if ABI_VIDEODRV_VERSION > 11
++/* ABI12 drops the extra parameter */
++#define vmswaps(a, b) swaps(a)
++#define vmswapl(a, b) swapl(a)
++#else
++#define vmswaps(a, b) swaps(a, b)
++#define vmswaps(a, b) swaps(a, b)
++#endif
++
+ /*
+  * The virtual hardware's cursor limits are pretty big. Some VMware
+  * product versions limit to 1024x1024 pixels, others limit to 128
+diff -up xf86-video-vmware-11.0.3/src/vmwarexinerama.c.jx xf86-video-vmware-11.0.3/src/vmwarexinerama.c
+--- xf86-video-vmware-11.0.3/src/vmwarexinerama.c.jx	2010-09-07 06:19:21.000000000 -0400
++++ xf86-video-vmware-11.0.3/src/vmwarexinerama.c	2011-11-16 19:12:36.830000131 -0500
+@@ -79,10 +79,10 @@ VMwareXineramaQueryVersion(ClientPtr cli
+     rep.majorVersion = 1;
+     rep.minorVersion = 0;
+     if(client->swapped) {
+-        swaps(&rep.sequenceNumber, n);
+-        swapl(&rep.length, n);
+-        swaps(&rep.majorVersion, n);
+-        swaps(&rep.minorVersion, n);
++        vmswaps(&rep.sequenceNumber, n);
++        vmswapl(&rep.length, n);
++        vmswaps(&rep.majorVersion, n);
++        vmswaps(&rep.minorVersion, n);
+     }
+     WriteToClient(client, sizeof(xPanoramiXQueryVersionReply), (char *)&rep);
+     return (client->noClientException);
+@@ -132,9 +132,9 @@ VMwareXineramaGetState(ClientPtr client)
+     rep.sequenceNumber = client->sequence;
+     rep.state = pVMWARE->xinerama;
+     if(client->swapped) {
+-       swaps (&rep.sequenceNumber, n);
+-       swapl (&rep.length, n);
+-       swaps (&rep.state, n);
++       vmswaps (&rep.sequenceNumber, n);
++       vmswapl (&rep.length, n);
++       vmswaps (&rep.state, n);
+     }
+     WriteToClient(client, sizeof(xPanoramiXGetStateReply), (char *)&rep);
+     return client->noClientException;
+@@ -184,9 +184,9 @@ VMwareXineramaGetScreenCount(ClientPtr c
+     rep.sequenceNumber = client->sequence;
+     rep.ScreenCount = pVMWARE->xineramaNumOutputs;
+     if(client->swapped) {
+-       swaps(&rep.sequenceNumber, n);
+-       swapl(&rep.length, n);
+-       swaps(&rep.ScreenCount, n);
++       vmswaps(&rep.sequenceNumber, n);
++       vmswapl(&rep.length, n);
++       vmswaps(&rep.ScreenCount, n);
+     }
+     WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply), (char *)&rep);
+     return client->noClientException;
+@@ -237,10 +237,10 @@ VMwareXineramaGetScreenSize(ClientPtr cl
+     rep.width  = pVMWARE->xineramaState[stuff->screen].width;
+     rep.height  = pVMWARE->xineramaState[stuff->screen].height;
+     if(client->swapped) {
+-       swaps(&rep.sequenceNumber, n);
+-       swapl(&rep.length, n);
+-       swaps(&rep.width, n);
+-       swaps(&rep.height, n);
++       vmswaps(&rep.sequenceNumber, n);
++       vmswapl(&rep.length, n);
++       vmswaps(&rep.width, n);
++       vmswaps(&rep.height, n);
+     }
+     WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply), (char *)&rep);
+     return client->noClientException;
+@@ -286,9 +286,9 @@ VMwareXineramaIsActive(ClientPtr client)
+     rep.state = pVMWARE->xinerama;
+     if(client->swapped) {
+ 	register int n;
+-	swaps(&rep.sequenceNumber, n);
+-	swapl(&rep.length, n);
+-	swapl(&rep.state, n);
++	vmswaps(&rep.sequenceNumber, n);
++	vmswapl(&rep.length, n);
++	vmswapl(&rep.state, n);
+     }
+     WriteToClient(client, sizeof(xXineramaIsActiveReply), (char *) &rep);
+     return client->noClientException;
+@@ -334,9 +334,9 @@ VMwareXineramaQueryScreens(ClientPtr cli
+     rep.length = rep.number * sz_XineramaScreenInfo >> 2;
+     if(client->swapped) {
+        register int n;
+-       swaps(&rep.sequenceNumber, n);
+-       swapl(&rep.length, n);
+-       swapl(&rep.number, n);
++       vmswaps(&rep.sequenceNumber, n);
++       vmswapl(&rep.length, n);
++       vmswapl(&rep.number, n);
+     }
+     WriteToClient(client, sizeof(xXineramaQueryScreensReply), (char *)&rep);
+ 
+@@ -351,10 +351,10 @@ VMwareXineramaQueryScreens(ClientPtr cli
+ 	  scratch.height = pVMWARE->xineramaState[i].height;
+ 	  if(client->swapped) {
+ 	     register int n;
+-	     swaps(&scratch.x_org, n);
+-	     swaps(&scratch.y_org, n);
+-	     swaps(&scratch.width, n);
+-	     swaps(&scratch.height, n);
++	     vmswaps(&scratch.x_org, n);
++	     vmswaps(&scratch.y_org, n);
++	     vmswaps(&scratch.width, n);
++	     vmswaps(&scratch.height, n);
+ 	  }
+ 	  WriteToClient(client, sz_XineramaScreenInfo, (char *)&scratch);
+        }
+@@ -425,7 +425,7 @@ SVMwareXineramaQueryVersion (ClientPtr c
+ {
+     REQUEST(xPanoramiXQueryVersionReq);
+     register int n;
+-    swaps(&stuff->length,n);
++    vmswaps(&stuff->length,n);
+     REQUEST_SIZE_MATCH (xPanoramiXQueryVersionReq);
+     return VMwareXineramaQueryVersion(client);
+ }
+@@ -453,7 +453,7 @@ SVMwareXineramaGetState(ClientPtr client
+ {
+     REQUEST(xPanoramiXGetStateReq);
+     register int n;
+-    swaps (&stuff->length, n);
++    vmswaps (&stuff->length, n);
+     REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
+     return VMwareXineramaGetState(client);
+ }
+@@ -481,7 +481,7 @@ SVMwareXineramaGetScreenCount(ClientPtr
+ {
+     REQUEST(xPanoramiXGetScreenCountReq);
+     register int n;
+-    swaps (&stuff->length, n);
++    vmswaps (&stuff->length, n);
+     REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
+     return VMwareXineramaGetScreenCount(client);
+ }
+@@ -509,7 +509,7 @@ SVMwareXineramaGetScreenSize(ClientPtr c
+ {
+     REQUEST(xPanoramiXGetScreenSizeReq);
+     register int n;
+-    swaps (&stuff->length, n);
++    vmswaps (&stuff->length, n);
+     REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
+     return VMwareXineramaGetScreenSize(client);
+ }
+@@ -537,7 +537,7 @@ SVMwareXineramaIsActive(ClientPtr client
+ {
+     REQUEST(xXineramaIsActiveReq);
+     register int n;
+-    swaps (&stuff->length, n);
++    vmswaps (&stuff->length, n);
+     REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
+     return VMwareXineramaIsActive(client);
+ }
+@@ -565,7 +565,7 @@ SVMwareXineramaQueryScreens(ClientPtr cl
+ {
+     REQUEST(xXineramaQueryScreensReq);
+     register int n;
+-    swaps (&stuff->length, n);
++    vmswaps (&stuff->length, n);
+     REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
+     return VMwareXineramaQueryScreens(client);
+ }
diff --git a/vmware-11.0.3-unbreak-xinerama.patch b/vmware-11.0.3-unbreak-xinerama.patch
new file mode 100644
index 0000000..9b95e40
--- /dev/null
+++ b/vmware-11.0.3-unbreak-xinerama.patch
@@ -0,0 +1,30 @@
+diff -up xf86-video-vmware-11.0.3/src/vmwarexinerama.c.jx xf86-video-vmware-11.0.3/src/vmwarexinerama.c
+--- xf86-video-vmware-11.0.3/src/vmwarexinerama.c.jx	2011-11-16 19:12:55.000000000 -0500
++++ xf86-video-vmware-11.0.3/src/vmwarexinerama.c	2011-11-16 19:15:30.667991582 -0500
+@@ -134,7 +134,6 @@ VMwareXineramaGetState(ClientPtr client)
+     if(client->swapped) {
+        vmswaps (&rep.sequenceNumber, n);
+        vmswapl (&rep.length, n);
+-       vmswaps (&rep.state, n);
+     }
+     WriteToClient(client, sizeof(xPanoramiXGetStateReply), (char *)&rep);
+     return client->noClientException;
+@@ -186,7 +185,6 @@ VMwareXineramaGetScreenCount(ClientPtr c
+     if(client->swapped) {
+        vmswaps(&rep.sequenceNumber, n);
+        vmswapl(&rep.length, n);
+-       vmswaps(&rep.ScreenCount, n);
+     }
+     WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply), (char *)&rep);
+     return client->noClientException;
+@@ -239,8 +237,8 @@ VMwareXineramaGetScreenSize(ClientPtr cl
+     if(client->swapped) {
+        vmswaps(&rep.sequenceNumber, n);
+        vmswapl(&rep.length, n);
+-       vmswaps(&rep.width, n);
+-       vmswaps(&rep.height, n);
++       vmswapl(&rep.width, n);
++       vmswapl(&rep.height, n);
+     }
+     WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply), (char *)&rep);
+     return client->noClientException;
diff --git a/xorg-x11-drv-vmware.spec b/xorg-x11-drv-vmware.spec
index b84c6e3..fd9f99e 100644
--- a/xorg-x11-drv-vmware.spec
+++ b/xorg-x11-drv-vmware.spec
@@ -5,7 +5,7 @@
 Summary:    Xorg X11 vmware video driver
 Name:	    xorg-x11-drv-vmware
 Version:    11.0.3
-Release:    7%{?dist}
+Release:    8%{?dist}
 URL:	    http://www.x.org
 License:    MIT
 Group:	    User Interface/X Hardware Support
@@ -13,6 +13,9 @@ Group:	    User Interface/X Hardware Support
 Source0:   ftp://ftp.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2
 Source1:    vmware.xinf
 
+Patch0:	    vmware-11.0.3-abi12.patch
+Patch1:	    vmware-11.0.3-unbreak-xinerama.patch
+
 ExclusiveArch: %{ix86} x86_64 ia64
 
 %if 0%{?gitdate}
@@ -30,13 +33,15 @@ X.Org X11 vmware video driver.
 
 %prep
 %setup -q -n %{tarball}-%{version}
+%patch0 -p1 -b .abi12
+%patch1 -p1 -b .xin
 
 %build
 %if 0%{?gitdate}
 autoreconf -v --install || exit 1
 %endif
 %configure --disable-static
-make
+make %{?_smp_mflags}
 
 %install
 rm -rf $RPM_BUILD_ROOT
@@ -61,6 +66,12 @@ rm -rf $RPM_BUILD_ROOT
 %{_mandir}/man4/vmware.4*
 
 %changelog
+* Wed Nov 16 2011 Adam Jackson <ajax at redhat.com> 11.0.3-8
+- ABI rebuild
+- vmware-11.0.3-abi12.patch: Compensate for videoabi 12.
+- vmware-11.0.3-unbreak-xinerama.patch: Unbreak swapped dispatch in the
+  fake-xinerama code.
+
 * Wed Nov 09 2011 ajax <ajax at redhat.com> - 11.0.3-7
 - ABI rebuild
 


More information about the scm-commits mailing list