SHA256
1
0
forked from pool/Mesa
OBS User unknown 2008-07-08 20:21:48 +00:00 committed by Git OBS Bridge
parent 8eed6ac677
commit d27608cd64
14 changed files with 91 additions and 402 deletions

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Fri Jul 4 22:15:48 CEST 2008 - sndirsch@suse.de
- udpated to Mesa 7.1-pre
-------------------------------------------------------------------
Mon Apr 14 23:56:57 CEST 2008 - sndirsch@suse.de

143
Mesa.spec
View File

@ -1,5 +1,5 @@
#
# spec file for package Mesa (Version 7.0.3)
# spec file for package Mesa (Version 7.1)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@ -19,20 +19,17 @@ Group: System/Libraries
Provides: xorg-x11-Mesa
Obsoletes: xorg-x11-Mesa
AutoReqProv: on
Version: 7.0.3
Release: 25
Version: 7.1
Release: 1
Summary: Mesa is a 3-D graphics library with an API which is very similar to that of OpenGL
Source: MesaLib-%{version}.tar.bz2
Source1: MesaDemos-%{version}.tar.bz2
Source: MesaLib-6befdca.tar.bz2
Source1: MesaDemos-%{version}-rc1.tar.bz2
Source2: MesaLib-%{version}-rc1.tar.bz2
Source3: README.updates
Source4: manual-pages.tar.bz2
Patch0: disable-sis_dri.diff
Patch1: dri_driver_dir.diff
Patch2: i915-crossbar.diff
Patch4: libIndirectGL.diff
Patch5: static.diff
Patch2: MesaLib-6befdca.diff
Patch6: link-shared.diff
Patch7: unichrome-context.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@ -104,40 +101,61 @@ Authors:
Brian Paul
%prep
%setup -n %{name}-%{version} -b1 -b4
rm docs/README.MINGW32.orig
#%setup -n %{name}-%{version}-rc1 -b1 -b4
%setup -n mesa -b4
#rm docs/README.MINGW32.orig
# make legal department happy (Bug #204110)
test -f src/mesa/drivers/directfb/idirectfbgl_mesa.c && exit 1
test -f progs/ggi/asc-view.c && exit 1
# no need to build GLUT and (GLUT-)Demos
# no need to build (GLUT-)Demos
rm -rf src/glut progs/{demos,redbook,samples,xdemos,glsl}
# we use freeglut
rm -f include/GL/{glut.h,uglglutshapes.h,glutf90.h}
# extra package for GLw (MesaGLw)
rm -rf src/glw/
%patch0
%patch1
sed -i 's/REPLACE/%_lib/g' src/glx/x11/Makefile
%patch2
%patch5
%ifarch %ix86 x86_64 ppc
%patch6
### FIXME
#%patch6
%endif
%patch7 -p1
%build
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr
#autoreconf -fi
### libGL (disable savage/mga, bnc #402132/#403071)
%configure --disable-glw \
%ifarch ia64
--with-driver=dri \
%endif
%ifnarch s390 s390x ppc64
--with-dri-drivers=i915,i965,mach64,r128,r200,r300,radeon,tdfx,unichrome,swrast \
%endif
--disable-glut
gmake
make install DESTDIR=$RPM_BUILD_ROOT
%ifnarch s390 s390x ppc64
# build and install Indirect Rendering only libGL
patch -p0 -s < $RPM_SOURCE_DIR/libIndirectGL.diff
make realclean
make linux-indirect OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
mkdir -p $RPM_BUILD_ROOT/usr/%{_lib}
cp -a lib/libIndirectGL.so.* $RPM_BUILD_ROOT/usr/%{_lib}
patch -p0 -s -R < $RPM_SOURCE_DIR/libIndirectGL.diff
%configure --with-driver=xlib \
--disable-glu \
--disable-glw \
--disable-glut
sed -i 's/GL_LIB = .*/GL_LIB = IndirectGL/g' configs/autoconf
gmake
make install DESTDIR=$RPM_BUILD_ROOT
rm $RPM_BUILD_ROOT/usr/%{_lib}/libIndirectGL.so
%endif
### static libGL
make realclean
%configure --with-driver=xlib \
--disable-shared \
--enable-static \
--disable-glw \
--disable-glut
gmake
make install DESTDIR=$RPM_BUILD_ROOT
%ifnarch s390
for dir in ../xc/doc/man/{GL/gl,GL/glx,GLU}; do
pushd $dir
xmkmf -a
@ -145,62 +163,19 @@ pushd $dir
make install.man DESTDIR=$RPM_BUILD_ROOT MANPATH=%{_mandir} LIBMANSUFFIX=3gl
popd
done
make realclean
%ifarch %ix86 ppc x86_64
%ifarch %ix86
make linux-dri-x86 OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -DDEFAULT_DRIVER_DIR='\"'/usr/%{_lib}/dri/updates:/usr/%{_lib}/dri'\"'" %{?jobs:-j %jobs}
make install DESTDIR=$RPM_BUILD_ROOT INSTALL_DIR=/usr DRI_DRIVER_INSTALL_DIR=/usr/%{_lib}/dri %{?jobs:-j %jobs}
make realclean
make linux-x86-static OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" %{?jobs:-j %jobs}
%endif
%ifarch ppc
make linux-dri-ppc OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -DDEFAULT_DRIVER_DIR='\"'/usr/%{_lib}/dri/updates:/usr/%{_lib}/dri'\"'" %{?jobs:-j %jobs}
make install DESTDIR=$RPM_BUILD_ROOT INSTALL_DIR=/usr DRI_DRIVER_INSTALL_DIR=/usr/%{_lib}/dri %{?jobs:-j %jobs}
make realclean
make linux-ppc-static OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" %{?jobs:-j %jobs}
%endif
%ifarch x86_64
make linux-dri-x86-64 OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -DDEFAULT_DRIVER_DIR='\"'/usr/%{_lib}/dri/updates:/usr/%{_lib}/dri'\"'" %{?jobs:-j %jobs}
make install DESTDIR=$RPM_BUILD_ROOT INSTALL_DIR=/usr DRI_DRIVER_INSTALL_DIR=/usr/%{_lib}/dri %{?jobs:-j %jobs}
make realclean
make linux-x86-64-static OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" %{?jobs:-j %jobs}
%endif
%else
%ifnarch s390 s390x ppc64
make linux-dri OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -DDEFAULT_DRIVER_DIR='\"'/usr/%{_lib}/dri/updates:/usr/%{_lib}/dri'\"'" %{?jobs:-j %jobs}
%else
make linux OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
%endif
make install DESTDIR=$RPM_BUILD_ROOT INSTALL_DIR=/usr DRI_DRIVER_INSTALL_DIR=/usr/%{_lib}/dri
make realclean
make linux-static OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" %{?jobs:-j %jobs}
%endif
%ifarch ppc64 s390x
mv $RPM_BUILD_ROOT/usr/lib $RPM_BUILD_ROOT/usr/%{_lib}
install -m 644 lib/libGL.a $RPM_BUILD_ROOT/usr/%{_lib}
install -m 644 lib/libGLU.a $RPM_BUILD_ROOT/usr/%{_lib}
%else
install -m 644 %{_lib}/libGL.a $RPM_BUILD_ROOT/usr/%{_lib}
install -m 644 %{_lib}/libGLU.a $RPM_BUILD_ROOT/usr/%{_lib}
%endif
ln -snf libGL.a $RPM_BUILD_ROOT/usr/%{_lib}/libMesaGL.a
rm -f $RPM_BUILD_ROOT/usr/%{_lib}/libOSMesa.a
# build and install OffScreen Mesa library
make realclean
make linux-osmesa OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" %{?jobs:-j %jobs}
cp -a lib/libOSMesa.so* $RPM_BUILD_ROOT/usr/%{_lib}
# create dummy nvidia libGLcore.so.1 for applications, which are still
# linked against libGL.so.1 of older nvidia driver releases
> libGLcore.c
gcc -Wall -ansi -pedantic -c libGLcore.c -fPIC
ld -shared -soname libGLcore.so.1 -o $RPM_BUILD_ROOT/usr/%{_lib}/libGLcore.so.1.0 libGLcore.o
/sbin/ldconfig -n $RPM_BUILD_ROOT/usr/%_lib
%ifnarch s390 s390x ppc64
# DRI driver update mechanism
mkdir -p $RPM_BUILD_ROOT/usr/%{_lib}/dri/updates
install -m 644 $RPM_SOURCE_DIR/README.updates \
$RPM_BUILD_ROOT/usr/%{_lib}/dri/updates
%endif
# required for building Xserver glx extension later
%ifarch s390 s390x
mkdir -p $RPM_BUILD_ROOT//usr/include/GL/internal/
install -m 644 include/GL/internal/{dri_interface.h,dri_sarea.h} \
$RPM_BUILD_ROOT//usr/include/GL/internal/
%endif
%clean
rm -rf $RPM_BUILD_ROOT
@ -218,10 +193,7 @@ rm -rf $RPM_BUILD_ROOT
/usr/include/GL/glxext.h
/usr/%{_lib}/libGL.so
/usr/%{_lib}/lib*.so.*
%ifarch %ix86 x86_64 ppc
/usr/%{_lib}/libmesa_private.so
%endif
%ifnarch s390 s390x ppc64
%ifnarch s390 s390x
/usr/%{_lib}/dri/
%endif
@ -247,19 +219,30 @@ rm -rf $RPM_BUILD_ROOT
/usr/include/GL/xmesa.h
/usr/include/GL/xmesa_x.h
/usr/include/GL/xmesa_xf86.h
/usr/include/GL/internal/dri_interface.h
/usr/include/GL/internal/dri_sarea.h
/usr/include/GL/directfbgl.h
/usr/include/GL/miniglx.h
/usr/%{_lib}/libGLU.so
%ifnarch ppc64
/usr/%{_lib}/libOSMesa.so
%endif
/usr/%{_lib}/pkgconfig/dri.pc
/usr/%{_lib}/pkgconfig/gl.pc
/usr/%{_lib}/pkgconfig/glu.pc
%ifnarch s390
%{_mandir}/man3/*
%endif
%files devel-static
%defattr(-,root,root)
/usr/%{_lib}/libGL.a
/usr/%{_lib}/libGLU.a
/usr/%{_lib}/libMesaGL.a
/usr/%{_lib}/libOSMesa.a
%changelog
* Sat Jul 05 2008 sndirsch@suse.de
- udpated to Mesa 7.1-pre
* Tue Apr 15 2008 sndirsch@suse.de
- unichrome-context.diff
* Do not clear the current context before attempting to use it.

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:03b2f210aaa12eb44c22361a5e7be848ba4287b0b082b8e5ea782f328cb9f7e5
size 1339653

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b6056da8321c53e47c1d82bad5a974538d08b21a54e47f5025c4ed78fb91209b
size 1383934

9
MesaLib-6befdca.diff Normal file
View File

@ -0,0 +1,9 @@
--- configs/autoconf.in.orig 2008-07-02 19:20:05.000000000 +0200
+++ configs/autoconf.in 2008-07-02 19:20:15.000000000 +0200
@@ -98,6 +98,3 @@
# Where libGL will look for DRI hardware drivers
DRI_DRIVER_SEARCH_DIR = $(DRI_DRIVER_INSTALL_DIR)
-
-# Additional per-platform configuration settings
-@EXTRA_CONFIG_LINES@

3
MesaLib-6befdca.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:816d5e314625b158683d157b3448ec726f6846e1fb3482fff953661dba12fe2f
size 6143564

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6aa8a9c0eeb7a8bb86230d87b7bf0a99e5c07bc75892df47559b209dd807e19c
size 3427683

3
MesaLib-7.1-rc1.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:70c86885761a053ad43ee3550ab318d4c3ebe2e07f25090cacd3e0e888206cef
size 3501547

View File

@ -1,8 +0,0 @@
--- configs/linux-dri.orig 2007-01-09 23:00:10.211561639 +0100
+++ configs/linux-dri 2007-01-09 23:00:28.265103530 +0100
@@ -66,4 +66,4 @@
# gamma are missing because they have not been converted to use the new
# interface.
DRI_DIRS = i810 i915tex i915 i965 mach64 mga r128 r200 r300 radeon s3v \
- savage sis tdfx trident unichrome ffb
+ savage tdfx trident unichrome ffb

View File

@ -1,12 +1,11 @@
--- src/glx/x11/Makefile.orig 2006-08-17 15:02:42.000000000 +0200
+++ src/glx/x11/Makefile 2006-08-17 15:02:57.000000000 +0200
@@ -1,8 +1,7 @@
TOP = ../../..
--- src/glx/x11/Makefile.orig 2008-07-01 19:22:40.000000000 +0000
+++ src/glx/x11/Makefile 2008-07-01 19:25:30.000000000 +0000
@@ -2,7 +2,7 @@
include $(TOP)/configs/current
-EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT -UIN_DRI_DRIVER \
EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT -UIN_DRI_DRIVER \
- -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\"
+EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT -UIN_DRI_DRIVER
+ -DDEFAULT_DRIVER_DIR=\"/usr/REPLACE/dri/updates:/usr/REPLACE/dri\"
SOURCES = \
glcontextmodes.c \

View File

@ -1,125 +0,0 @@
Index: src/mesa/drivers/dri/i915/i915_context.h
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/i915/i915_context.h,v
retrieving revision 1.7
diff -u -r1.7 i915_context.h
--- src/mesa/drivers/dri/i915/i915_context.h 18 Aug 2006 09:04:48 -0000 1.7
+++ src/mesa/drivers/dri/i915/i915_context.h 16 Sep 2006 02:07:05 -0000
@@ -170,7 +176,7 @@
/* Helpers for i915_texprog.c:
*/
- GLuint src_texture; /* Reg containing sampled texture color,
+ GLuint src_texture[8]; /* Reg containing sampled texture color,
* else UREG_BAD.
*/
Index: src/mesa/drivers/dri/i915/i915_program.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/i915/i915_program.c,v
retrieving revision 1.6
diff -u -r1.6 i915_program.c
--- src/mesa/drivers/dri/i915/i915_program.c 18 Aug 2006 09:04:48 -0000 1.6
+++ src/mesa/drivers/dri/i915/i915_program.c 16 Sep 2006 02:07:09 -0000
@@ -405,7 +422,7 @@
p->depth_written = 0;
p->nr_params = 0;
- p->src_texture = UREG_BAD;
+ for (int u = 0; u < 8; u++) p->src_texture[u] = UREG_BAD;
p->src_previous = UREG(REG_TYPE_T, T_DIFFUSE);
p->last_tex_stage = 0;
p->VB = &tnl->vb;
Index: src/mesa/drivers/dri/i915/i915_texprog.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/i915/i915_texprog.c,v
retrieving revision 1.6
diff -u -r1.6 i915_texprog.c
--- src/mesa/drivers/dri/i915/i915_texprog.c 11 Apr 2006 11:41:11 -0000 1.6
+++ src/mesa/drivers/dri/i915/i915_texprog.c 16 Sep 2006 02:07:09 -0000
@@ -55,8 +55,18 @@
GLenum src, GLuint unit )
{
switch (src) {
+ /* Crossbar: */
+ case GL_TEXTURE0:
+ case GL_TEXTURE1:
+ case GL_TEXTURE2:
+ case GL_TEXTURE3:
+ case GL_TEXTURE4:
+ case GL_TEXTURE5:
+ case GL_TEXTURE6:
+ case GL_TEXTURE7:
+ unit = src - GL_TEXTURE0;
case GL_TEXTURE:
- if (p->src_texture == UREG_BAD) {
+ if (p->src_texture[unit] == UREG_BAD) {
/* TODO: Use D0_CHANNEL_XY where possible.
*/
@@ -69,23 +79,10 @@
if (p->VB->TexCoordPtr[unit]->size == 4)
op = T0_TEXLDP;
- p->src_texture = i915_emit_texld( p, tmp, A0_DEST_CHANNEL_ALL,
+ p->src_texture[unit] = i915_emit_texld( p, tmp, A0_DEST_CHANNEL_ALL,
sampler, texcoord, op );
}
-
- return p->src_texture;
-
- /* Crossbar: */
- case GL_TEXTURE0:
- case GL_TEXTURE1:
- case GL_TEXTURE2:
- case GL_TEXTURE3:
- case GL_TEXTURE4:
- case GL_TEXTURE5:
- case GL_TEXTURE6:
- case GL_TEXTURE7: {
- return UREG_BAD;
- }
+ return p->src_texture[unit];
case GL_CONSTANT:
return i915_emit_const4fv( p, p->ctx->Texture.Unit[unit].EnvColor );
@@ -555,9 +552,12 @@
for (unit = 0 ; unit < ctx->Const.MaxTextureUnits; unit++)
if (ctx->Texture.Unit[unit]._ReallyEnabled) {
p->src_previous = emit_texenv( p, unit );
- p->src_texture = UREG_BAD;
p->temp_flag = 0xffff000;
p->temp_flag |= 1 << GET_UREG_NR(p->src_previous);
+ /* FIXME: This could be cleverer. */
+ for (int u = 0; u < 8; u++)
+ if (p->src_texture[u] != UREG_BAD)
+ p->temp_flag |= 1 << GET_UREG_NR(p->src_texture[u]);
}
}
Index: src/mesa/drivers/dri/i915/intel_context.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/i915/intel_context.c,v
retrieving revision 1.30
diff -u -r1.30 intel_context.c
--- src/mesa/drivers/dri/i915/intel_context.c 1 Sep 2006 23:36:30 -0000 1.30
+++ src/mesa/drivers/dri/i915/intel_context.c 16 Sep 2006 02:07:10 -0000
@@ -158,10 +158,6 @@
/**
* Extension strings exported by the intel driver.
- *
- * \note
- * It appears that ARB_texture_env_crossbar has "disappeared" compared to the
- * old i830-specific driver.
*/
const struct dri_extension card_extensions[] =
{
@@ -173,6 +169,7 @@
{ "GL_ARB_texture_cube_map", NULL },
{ "GL_ARB_texture_env_add", NULL },
{ "GL_ARB_texture_env_combine", NULL },
+ { "GL_ARB_texture_env_crossbar", NULL },
{ "GL_ARB_texture_env_dot3", NULL },
{ "GL_ARB_texture_mirrored_repeat", NULL },
{ "GL_ARB_texture_rectangle", NULL },

View File

@ -1,11 +0,0 @@
--- configs/default.orig 2007-01-18 21:25:38.065947925 +0100
+++ configs/default 2007-01-18 21:41:39.007103678 +0100
@@ -34,7 +34,7 @@
PYTHON_FLAGS = -t -O -O
# Library names (base name)
-GL_LIB = GL
+GL_LIB = IndirectGL
GLU_LIB = GLU
GLUT_LIB = glut
GLW_LIB = GLw

View File

@ -1,72 +0,0 @@
diff -u configs.orig/linux-ppc-static configs/linux-ppc-static
--- configs.orig/linux-ppc-static 2007-10-31 08:30:54.131367500 +0100
+++ configs/linux-ppc-static 2007-10-31 08:31:08.204247000 +0100
@@ -8,7 +8,3 @@
# Library names (actual file names)
GL_LIB_NAME = libGL.a
-GLU_LIB_NAME = libGLU.a
-GLUT_LIB_NAME = libglut.a
-GLW_LIB_NAME = libGLw.a
-OSMESA_LIB_NAME = libOSMesa.a
diff -u configs.orig/linux-static configs/linux-static
--- configs.orig/linux-static 2007-10-31 08:30:54.275376500 +0100
+++ configs/linux-static 2007-10-31 08:31:08.376257750 +0100
@@ -8,17 +8,9 @@
# Library names (actual file names)
GL_LIB_NAME = libGL.a
-GLU_LIB_NAME = libGLU.a
-GLUT_LIB_NAME = libglut.a
-GLW_LIB_NAME = libGLw.a
-OSMESA_LIB_NAME = libOSMesa.a
# Library/program dependencies (static libs don't have dependencies)
GL_LIB_DEPS =
-OSMESA_LIB_DEPS =
-GLU_LIB_DEPS =
-GLUT_LIB_DEPS =
-GLW_LIB_DEPS =
# Need to specify all libraries we may need
APP_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXmu -lXt -lXi -lpthread -lstdc++ -lm
diff -u configs.orig/linux-x86-64-static configs/linux-x86-64-static
diff -u configs.orig/linux-x86-static configs/linux-x86-static
--- configs/linux-x86-64-static.orig 2008-01-23 11:54:19.672419750 +0100
+++ configs/linux-x86-64-static 2008-01-23 11:55:03.123135250 +0100
@@ -9,16 +9,6 @@
# Library names (actual file names)
GL_LIB_NAME = libGL.a
-GLU_LIB_NAME = libGLU.a
-GLUT_LIB_NAME = libglut.a
-GLW_LIB_NAME = libGLw.a
-OSMESA_LIB_NAME = libOSMesa.a
# Library/program dependencies (static libs don't have dependencies)
GL_LIB_DEPS =
-OSMESA_LIB_DEPS =
-GLU_LIB_DEPS =
-GLUT_LIB_DEPS =
-GLW_LIB_DEPS =
-APP_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXmu -lXt -lXi -lpthread \
- -lstdc++ -lm
--- configs/linux-x86-static.orig 2008-01-23 11:54:28.316960000 +0100
+++ configs/linux-x86-static 2008-01-23 11:55:20.680232500 +0100
@@ -9,16 +9,6 @@
# Library names (actual file names)
GL_LIB_NAME = libGL.a
-GLU_LIB_NAME = libGLU.a
-GLUT_LIB_NAME = libglut.a
-GLW_LIB_NAME = libGLw.a
-OSMESA_LIB_NAME = libOSMesa.a
# Library/program dependencies (static libs don't have dependencies)
GL_LIB_DEPS =
-OSMESA_LIB_DEPS =
-GLU_LIB_DEPS =
-GLUT_LIB_DEPS =
-GLW_LIB_DEPS =
-APP_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXmu -lXt -lXi -lpthread \
- -lstdc++ -lm

View File

@ -1,94 +0,0 @@
From c75a717af6aee750f673ff1809faf69e8fe2527a Mon Sep 17 00:00:00 2001
From: Luc Verhaegen <libv@skynet.be>
Date: Mon, 14 Apr 2008 22:51:36 +0200
Subject: [PATCH] unichrome: Do not clear the current context before attempting to use it.
Beautified from Gabriel Mansi's (gabriel.mansi@gmail.com) original patch,
available from http://rudin.suse.de:8888/attachment.cgi?id=181709
---
src/mesa/drivers/dri/unichrome/via_context.c | 56 +++++++++++++------------
1 files changed, 29 insertions(+), 27 deletions(-)
diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c
index 1d5b1e0..d489d80 100644
--- a/src/mesa/drivers/dri/unichrome/via_context.c
+++ b/src/mesa/drivers/dri/unichrome/via_context.c
@@ -686,46 +686,48 @@ void
viaDestroyContext(__DRIcontextPrivate *driContextPriv)
{
GET_CURRENT_CONTEXT(ctx);
- struct via_context *vmesa =
+ struct via_context *vmesa =
(struct via_context *)driContextPriv->driverPrivate;
struct via_context *current = ctx ? VIA_CONTEXT(ctx) : NULL;
+
assert(vmesa); /* should never be null */
+ if (vmesa->driDrawable) {
+ viaWaitIdle(vmesa, GL_FALSE);
+
+ if (vmesa->doPageFlip) {
+ LOCK_HARDWARE(vmesa);
+ if (vmesa->pfCurrentOffset != 0) {
+ fprintf(stderr, "%s - reset pf\n", __FUNCTION__);
+ viaResetPageFlippingLocked(vmesa);
+ }
+ UNLOCK_HARDWARE(vmesa);
+ }
+ }
+
/* check if we're deleting the currently bound context */
if (vmesa == current) {
VIA_FLUSH_DMA(vmesa);
_mesa_make_current(NULL, NULL, NULL);
}
- if (vmesa) {
- viaWaitIdle(vmesa, GL_FALSE);
- if (vmesa->doPageFlip) {
- LOCK_HARDWARE(vmesa);
- if (vmesa->pfCurrentOffset != 0) {
- fprintf(stderr, "%s - reset pf\n", __FUNCTION__);
- viaResetPageFlippingLocked(vmesa);
- }
- UNLOCK_HARDWARE(vmesa);
- }
-
- _swsetup_DestroyContext(vmesa->glCtx);
- _tnl_DestroyContext(vmesa->glCtx);
- _vbo_DestroyContext(vmesa->glCtx);
- _swrast_DestroyContext(vmesa->glCtx);
- /* free the Mesa context */
- _mesa_destroy_context(vmesa->glCtx);
- /* release our data */
- FreeBuffer(vmesa);
+ _swsetup_DestroyContext(vmesa->glCtx);
+ _tnl_DestroyContext(vmesa->glCtx);
+ _vbo_DestroyContext(vmesa->glCtx);
+ _swrast_DestroyContext(vmesa->glCtx);
+ /* free the Mesa context */
+ _mesa_destroy_context(vmesa->glCtx);
+ /* release our data */
+ FreeBuffer(vmesa);
- assert (is_empty_list(&vmesa->tex_image_list[VIA_MEM_AGP]));
- assert (is_empty_list(&vmesa->tex_image_list[VIA_MEM_VIDEO]));
- assert (is_empty_list(&vmesa->tex_image_list[VIA_MEM_SYSTEM]));
- assert (is_empty_list(&vmesa->freed_tex_buffers));
+ assert (is_empty_list(&vmesa->tex_image_list[VIA_MEM_AGP]));
+ assert (is_empty_list(&vmesa->tex_image_list[VIA_MEM_VIDEO]));
+ assert (is_empty_list(&vmesa->tex_image_list[VIA_MEM_SYSTEM]));
+ assert (is_empty_list(&vmesa->freed_tex_buffers));
- driDestroyOptionCache(&vmesa->optionCache);
+ driDestroyOptionCache(&vmesa->optionCache);
- FREE(vmesa);
- }
+ FREE(vmesa);
}
--
1.4.3.4