aboutsummaryrefslogtreecommitdiffstats
path: root/x11-servers/XFree86-4-Server
diff options
context:
space:
mode:
authoranholt <anholt@FreeBSD.org>2003-03-15 12:28:02 +0800
committeranholt <anholt@FreeBSD.org>2003-03-15 12:28:02 +0800
commitcee72e2e121b21b3a7231742a993c7beaa77d4ad (patch)
tree17275d42c8e4b62e287dd85832f35480f58fb1f3 /x11-servers/XFree86-4-Server
parent2980f9de4aeaeff397ed36c4f152d14faeaf641c (diff)
downloadfreebsd-ports-gnome-cee72e2e121b21b3a7231742a993c7beaa77d4ad.tar.gz
freebsd-ports-gnome-cee72e2e121b21b3a7231742a993c7beaa77d4ad.tar.zst
freebsd-ports-gnome-cee72e2e121b21b3a7231742a993c7beaa77d4ad.zip
[1] Add a fix for a hang with Radeon cards in specific apps.
[2] Fix unresolved symbols messages in mga and r128 drivers. Approved by: portmgr (kris) Obtained from: [1] DRI CVS [2] Leif Delgass
Diffstat (limited to 'x11-servers/XFree86-4-Server')
-rw-r--r--x11-servers/XFree86-4-Server/Makefile4
-rw-r--r--x11-servers/XFree86-4-Server/files/patch-mga_driver.c13
-rw-r--r--x11-servers/XFree86-4-Server/files/patch-r128_driver.c30
-rw-r--r--x11-servers/XFree86-4-Server/files/patch-radeondri234
4 files changed, 280 insertions, 1 deletions
diff --git a/x11-servers/XFree86-4-Server/Makefile b/x11-servers/XFree86-4-Server/Makefile
index fa27b5ccc63e..90266d713a12 100644
--- a/x11-servers/XFree86-4-Server/Makefile
+++ b/x11-servers/XFree86-4-Server/Makefile
@@ -7,6 +7,7 @@
PORTNAME= Server
PORTVERSION= 4.3.0
+PORTREVISION= 1
CATEGORIES= x11-servers
MASTER_SITES= ${MASTER_SITE_XFREE:S/$/:x/} \
${MASTER_SITE_LOCAL:S/$/:local/}
@@ -30,7 +31,8 @@ INSTALLS_SHLIB= YES
DIST_SUBDIR= xc
WRKSRC= ${WRKDIR}/xc
PATCHDIR= ${.CURDIR}/../../x11/XFree86-4-libraries/files
-.for pf in patch-savage-pci-id patch-alpha_video.c patch-Pci.h
+.for pf in patch-savage-pci-id patch-alpha_video.c patch-Pci.h patch-radeondri \
+ patch-r128_driver.c patch-mga_driver.c
EXTRA_PATCHES+= ${FILESDIR}/${pf}
.endfor
SCRIPTS_ENV= OSVERSION=${OSVERSION} \
diff --git a/x11-servers/XFree86-4-Server/files/patch-mga_driver.c b/x11-servers/XFree86-4-Server/files/patch-mga_driver.c
new file mode 100644
index 000000000000..13228b270c5b
--- /dev/null
+++ b/x11-servers/XFree86-4-Server/files/patch-mga_driver.c
@@ -0,0 +1,13 @@
+--- programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c.orig Wed Jan 29 11:29:49 2003
++++ programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c Thu Mar 13 00:12:12 2003
+@@ -304,7 +304,10 @@
+ "drmAgpVendorId",
+ "drmCommandNone",
+ "drmCommandWrite",
++ "drmCtlInstHandler",
++ "drmCtlUninstHandler",
+ "drmFreeVersion",
++ "drmGetInterruptFromBusID",
+ "drmGetLibVersion",
+ "drmGetVersion",
+ "drmMap",
diff --git a/x11-servers/XFree86-4-Server/files/patch-r128_driver.c b/x11-servers/XFree86-4-Server/files/patch-r128_driver.c
new file mode 100644
index 000000000000..6274de047f4e
--- /dev/null
+++ b/x11-servers/XFree86-4-Server/files/patch-r128_driver.c
@@ -0,0 +1,30 @@
+--- programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c.orig Tue Feb 18 17:19:41 2003
++++ programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c Thu Mar 13 00:12:12 2003
+@@ -275,6 +275,7 @@
+ "drmAddMap",
+ "drmAgpAcquire",
+ "drmAgpAlloc",
++ "drmAgpBase",
+ "drmAgpBind",
+ "drmAgpDeviceId",
+ "drmAgpEnable",
+@@ -288,8 +289,11 @@
+ "drmCommandRead",
+ "drmCommandWrite",
+ "drmCommandWriteRead",
++ "drmCtlInstHandler",
++ "drmCtlUninstHandler",
+ "drmFreeBufs",
+ "drmFreeVersion",
++ "drmGetInterruptFromBusID",
+ "drmGetLibVersion",
+ "drmGetVersion",
+ "drmMap",
+@@ -307,6 +311,7 @@
+ "DRICreateInfoRec",
+ "DRIDestroyInfoRec",
+ "DRIFinishScreenInit",
++ "DRIGetDeviceInfo",
+ "DRIGetSAREAPrivate",
+ "DRILock",
+ "DRIQueryVersion",
diff --git a/x11-servers/XFree86-4-Server/files/patch-radeondri b/x11-servers/XFree86-4-Server/files/patch-radeondri
new file mode 100644
index 000000000000..33d2bc6562b4
--- /dev/null
+++ b/x11-servers/XFree86-4-Server/files/patch-radeondri
@@ -0,0 +1,234 @@
+diff -ru -x CVS lib/GL/mesa/src/drv.orig/r200/r200_context.c lib/GL/mesa/src/drv/r200/r200_context.c
+--- lib/GL/mesa/src/drv.orig/r200/r200_context.c Tue Mar 11 17:51:23 2003
++++ lib/GL/mesa/src/drv/r200/r200_context.c Tue Mar 11 17:46:57 2003
+@@ -391,6 +391,7 @@
+ */
+ _tnl_destroy_pipeline( ctx );
+ _tnl_install_pipeline( ctx, r200_pipeline );
++ ctx->Driver.FlushVertices = r200FlushVertices;
+
+ /* Try and keep materials and vertices separate:
+ */
+diff -ru -x CVS lib/GL/mesa/src/drv.orig/r200/r200_swtcl.c lib/GL/mesa/src/drv/r200/r200_swtcl.c
+--- lib/GL/mesa/src/drv.orig/r200/r200_swtcl.c Tue Mar 11 17:51:29 2003
++++ lib/GL/mesa/src/drv/r200/r200_swtcl.c Tue Mar 11 17:46:57 2003
+@@ -44,6 +44,7 @@
+ #include "math/m_translate.h"
+ #include "tnl/tnl.h"
+ #include "tnl/t_context.h"
++#include "tnl/t_imm_exec.h"
+ #include "tnl/t_pipeline.h"
+
+ #include "r200_context.h"
+@@ -1220,6 +1221,14 @@
+ r200ChooseVertexState( ctx );
+ }
+
++
++void r200FlushVertices( GLcontext *ctx, GLuint flags )
++{
++ _tnl_flush_vertices( ctx, flags );
++
++ if (flags & FLUSH_STORED_VERTICES)
++ R200_FIREVERTICES( R200_CONTEXT( ctx ) );
++}
+
+ /**********************************************************************/
+ /* Initialization. */
+diff -ru -x CVS lib/GL/mesa/src/drv.orig/r200/r200_swtcl.h lib/GL/mesa/src/drv/r200/r200_swtcl.h
+--- lib/GL/mesa/src/drv.orig/r200/r200_swtcl.h Tue Mar 11 17:51:29 2003
++++ lib/GL/mesa/src/drv/r200/r200_swtcl.h Tue Mar 11 17:46:57 2003
+@@ -42,6 +42,7 @@
+ extern void r200InitSwtcl( GLcontext *ctx );
+ extern void r200DestroySwtcl( GLcontext *ctx );
+
++extern void r200FlushVertices( GLcontext *ctx, GLuint flags );
+ extern void r200ChooseRenderState( GLcontext *ctx );
+ extern void r200ChooseVertexState( GLcontext *ctx );
+
+diff -ru -x CVS lib/GL/mesa/src/drv.orig/r200/r200_vtxfmt.c lib/GL/mesa/src/drv/r200/r200_vtxfmt.c
+--- lib/GL/mesa/src/drv.orig/r200/r200_vtxfmt.c Tue Mar 11 17:51:29 2003
++++ lib/GL/mesa/src/drv/r200/r200_vtxfmt.c Tue Mar 11 17:47:00 2003
+@@ -38,6 +38,7 @@
+ #include "r200_ioctl.h"
+ #include "r200_tex.h"
+ #include "r200_tcl.h"
++#include "r200_swtcl.h"
+ #include "r200_vtxfmt.h"
+
+ #include "api_noop.h"
+@@ -59,7 +60,7 @@
+
+ struct r200_vb vb;
+
+-static void r200FlushVertices( GLcontext *, GLuint );
++static void r200VtxFmtFlushVertices( GLcontext *, GLuint );
+
+ static void count_func( const char *name, struct dynfn *l )
+ {
+@@ -357,12 +358,13 @@
+ fprintf(stderr, "%s from %s\n", __FUNCTION__, caller);
+
+ if (ctx->Driver.NeedFlush)
+- r200FlushVertices( ctx, ctx->Driver.NeedFlush );
++ r200VtxFmtFlushVertices( ctx, ctx->Driver.NeedFlush );
+
+ if (ctx->NewState)
+ _mesa_update_state( ctx ); /* clear state so fell_back sticks */
+
+ _tnl_wakeup_exec( ctx );
++ ctx->Driver.FlushVertices = r200FlushVertices;
+
+ assert( rmesa->dma.flush == 0 );
+ rmesa->vb.fell_back = GL_TRUE;
+@@ -404,6 +406,7 @@
+ prim = rmesa->vb.prim[0];
+ ctx->Driver.CurrentExecPrimitive = GL_POLYGON+1;
+ _tnl_wakeup_exec( ctx );
++ ctx->Driver.FlushVertices = r200FlushVertices;
+
+ assert(rmesa->dma.flush == 0);
+ rmesa->vb.fell_back = GL_TRUE;
+@@ -756,7 +759,7 @@
+ fprintf(stderr, "reinstall (new install)\n");
+
+ _mesa_install_exec_vtxfmt( ctx, &rmesa->vb.vtxfmt );
+- ctx->Driver.FlushVertices = r200FlushVertices;
++ ctx->Driver.FlushVertices = r200VtxFmtFlushVertices;
+ ctx->Driver.NewList = r200NewList;
+ rmesa->vb.installed = GL_TRUE;
+ vb.context = ctx;
+@@ -772,6 +775,7 @@
+ if (rmesa->dma.flush)
+ rmesa->dma.flush( rmesa );
+ _tnl_wakeup_exec( ctx );
++ ctx->Driver.FlushVertices = r200FlushVertices;
+ rmesa->vb.installed = GL_FALSE;
+ vb.context = 0;
+ }
+@@ -931,7 +935,7 @@
+ return GL_TRUE;
+ }
+
+-static void r200FlushVertices( GLcontext *ctx, GLuint flags )
++static void r200VtxFmtFlushVertices( GLcontext *ctx, GLuint flags )
+ {
+ r200ContextPtr rmesa = R200_CONTEXT( ctx );
+
+diff -ru -x CVS lib/GL/mesa/src/drv.orig/radeon/radeon_context.c lib/GL/mesa/src/drv/radeon/radeon_context.c
+--- lib/GL/mesa/src/drv.orig/radeon/radeon_context.c Tue Mar 11 17:51:29 2003
++++ lib/GL/mesa/src/drv/radeon/radeon_context.c Tue Mar 11 17:47:00 2003
+@@ -382,6 +382,7 @@
+ */
+ _tnl_destroy_pipeline( ctx );
+ _tnl_install_pipeline( ctx, radeon_pipeline );
++ ctx->Driver.FlushVertices = radeonFlushVertices;
+
+ /* Try and keep materials and vertices separate:
+ */
+diff -ru -x CVS lib/GL/mesa/src/drv.orig/radeon/radeon_swtcl.c lib/GL/mesa/src/drv/radeon/radeon_swtcl.c
+--- lib/GL/mesa/src/drv.orig/radeon/radeon_swtcl.c Tue Mar 11 17:51:29 2003
++++ lib/GL/mesa/src/drv/radeon/radeon_swtcl.c Tue Mar 11 17:47:00 2003
+@@ -45,6 +45,7 @@
+ #include "math/m_translate.h"
+ #include "tnl/tnl.h"
+ #include "tnl/t_context.h"
++#include "tnl/t_imm_exec.h"
+ #include "tnl/t_pipeline.h"
+
+ #include "radeon_context.h"
+@@ -1133,6 +1134,14 @@
+ }
+ }
+
++
++void radeonFlushVertices( GLcontext *ctx, GLuint flags )
++{
++ _tnl_flush_vertices( ctx, flags );
++
++ if (flags & FLUSH_STORED_VERTICES)
++ RADEON_FIREVERTICES( RADEON_CONTEXT( ctx ) );
++}
+
+ /**********************************************************************/
+ /* Initialization. */
+diff -ru -x CVS lib/GL/mesa/src/drv.orig/radeon/radeon_swtcl.h lib/GL/mesa/src/drv/radeon/radeon_swtcl.h
+--- lib/GL/mesa/src/drv.orig/radeon/radeon_swtcl.h Tue Mar 11 17:51:29 2003
++++ lib/GL/mesa/src/drv/radeon/radeon_swtcl.h Tue Mar 11 17:47:00 2003
+@@ -43,6 +43,7 @@
+ extern void radeonInitSwtcl( GLcontext *ctx );
+ extern void radeonDestroySwtcl( GLcontext *ctx );
+
++extern void radeonFlushVertices( GLcontext *ctx, GLuint flags );
+ extern void radeonChooseRenderState( GLcontext *ctx );
+ extern void radeonChooseVertexState( GLcontext *ctx );
+
+diff -ru -x CVS lib/GL/mesa/src/drv.orig/radeon/radeon_vtxfmt.c lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c
+--- lib/GL/mesa/src/drv.orig/radeon/radeon_vtxfmt.c Tue Mar 11 17:51:29 2003
++++ lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c Tue Mar 11 17:47:01 2003
+@@ -38,6 +38,7 @@
+ #include "radeon_ioctl.h"
+ #include "radeon_tex.h"
+ #include "radeon_tcl.h"
++#include "radeon_swtcl.h"
+ #include "radeon_vtxfmt.h"
+
+ #include "api_noop.h"
+@@ -59,7 +60,7 @@
+
+ struct radeon_vb vb;
+
+-static void radeonFlushVertices( GLcontext *, GLuint );
++static void radeonVtxfmtFlushVertices( GLcontext *, GLuint );
+
+ static void count_func( const char *name, struct dynfn *l )
+ {
+@@ -336,12 +337,13 @@
+ fprintf(stderr, "%s from %s\n", __FUNCTION__, caller);
+
+ if (ctx->Driver.NeedFlush)
+- radeonFlushVertices( ctx, ctx->Driver.NeedFlush );
++ radeonVtxfmtFlushVertices( ctx, ctx->Driver.NeedFlush );
+
+ if (ctx->NewState)
+ _mesa_update_state( ctx ); /* clear state so fell_back sticks */
+
+ _tnl_wakeup_exec( ctx );
++ ctx->Driver.FlushVertices = radeonFlushVertices;
+
+ assert( rmesa->dma.flush == 0 );
+ rmesa->vb.fell_back = GL_TRUE;
+@@ -382,6 +384,7 @@
+ prim = rmesa->vb.prim[0];
+ ctx->Driver.CurrentExecPrimitive = GL_POLYGON+1;
+ _tnl_wakeup_exec( ctx );
++ ctx->Driver.FlushVertices = radeonFlushVertices;
+
+ assert(rmesa->dma.flush == 0);
+ rmesa->vb.fell_back = GL_TRUE;
+@@ -731,7 +734,7 @@
+ fprintf(stderr, "reinstall (new install)\n");
+
+ _mesa_install_exec_vtxfmt( ctx, &rmesa->vb.vtxfmt );
+- ctx->Driver.FlushVertices = radeonFlushVertices;
++ ctx->Driver.FlushVertices = radeonVtxfmtFlushVertices;
+ ctx->Driver.NewList = radeonNewList;
+ rmesa->vb.installed = GL_TRUE;
+ vb.context = ctx;
+@@ -747,6 +750,7 @@
+ if (rmesa->dma.flush)
+ rmesa->dma.flush( rmesa );
+ _tnl_wakeup_exec( ctx );
++ ctx->Driver.FlushVertices = radeonFlushVertices;
+ rmesa->vb.installed = GL_FALSE;
+ vb.context = 0;
+ }
+@@ -905,7 +909,7 @@
+ return GL_TRUE;
+ }
+
+-static void radeonFlushVertices( GLcontext *ctx, GLuint flags )
++static void radeonVtxfmtFlushVertices( GLcontext *ctx, GLuint flags )
+ {
+ radeonContextPtr rmesa = RADEON_CONTEXT( ctx );
+