From 9e403b91a14f2df37e86a74a092eedb5570a216c Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Wed, 16 Nov 2011 19:17:19 -0500 Subject: [PATCH] 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(-) create mode 100644 vmware-11.0.3-abi12.patch create mode 100644 vmware-11.0.3-unbreak-xinerama.patch 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 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 - 11.0.3-7 - ABI rebuild