aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-08-31 11:39:10 +0200
committermarha <marha@users.sourceforge.net>2011-08-31 11:39:10 +0200
commitbdc38022df44bde91e7ff95f6446cf20e19eaa5f (patch)
tree63386f21679537a891a7cc44fb7dc15ad57cf1df /mesalib/src
parenta15173d276fcc8bb45637bba9f027136f4915652 (diff)
parentd14fe6598b87092374b1be6eb655153d270c3066 (diff)
downloadvcxsrv-bdc38022df44bde91e7ff95f6446cf20e19eaa5f.tar.gz
vcxsrv-bdc38022df44bde91e7ff95f6446cf20e19eaa5f.tar.bz2
vcxsrv-bdc38022df44bde91e7ff95f6446cf20e19eaa5f.zip
Merge remote-tracking branch 'origin/released'
Conflicts: mesalib/docs/README.WIN32 mesalib/docs/install.html mesalib/src/glu/sgi/include/gluos.h mesalib/src/mesa/drivers/windows/gdi/wgl.c mesalib/src/mesa/main/state.c mesalib/src/mesa/main/uniforms.c mesalib/src/mesa/tnl/t_draw.c
Diffstat (limited to 'mesalib/src')
-rw-r--r--mesalib/src/glu/sgi/Makefile.mgw230
-rw-r--r--mesalib/src/glu/sgi/Makefile.win149
-rw-r--r--mesalib/src/glu/sgi/SConscript1
-rw-r--r--mesalib/src/glu/sgi/include/gluos.h6
-rw-r--r--mesalib/src/mesa/Android.mk35
-rw-r--r--mesalib/src/mesa/Makefile.mgw216
-rw-r--r--mesalib/src/mesa/drivers/dri/Android.mk62
-rw-r--r--mesalib/src/mesa/drivers/dri/Makefile.defines21
-rw-r--r--mesalib/src/mesa/drivers/dri/common/Android.mk41
-rw-r--r--mesalib/src/mesa/drivers/dri/common/Makefile.sources19
-rw-r--r--mesalib/src/mesa/drivers/dri/swrast/Makefile1
-rw-r--r--mesalib/src/mesa/drivers/windows/gdi/wgl.c23
-rw-r--r--mesalib/src/mesa/main/state.c2
-rw-r--r--mesalib/src/mesa/main/uniforms.c137
-rw-r--r--mesalib/src/mesa/program/prog_parameter.h2
-rw-r--r--mesalib/src/mesa/tnl/t_draw.c9
16 files changed, 257 insertions, 697 deletions
diff --git a/mesalib/src/glu/sgi/Makefile.mgw b/mesalib/src/glu/sgi/Makefile.mgw
deleted file mode 100644
index d00d97a3b..000000000
--- a/mesalib/src/glu/sgi/Makefile.mgw
+++ /dev/null
@@ -1,230 +0,0 @@
-# Mesa 3-D graphics library
-# Version: 5.1
-#
-# Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-# MinGW core makefile v1.4 for Mesa
-#
-# Copyright (C) 2002 - Daniel Borca
-# Email : dborca@users.sourceforge.net
-# Web : http://www.geocities.com/dborca
-
-# MinGW core-glu makefile updated for Mesa 7.0
-#
-# Updated : by Heromyth, on 2007-7-21
-# Email : zxpmyth@yahoo.com.cn
-# Bugs : 1) All the default settings work fine. But the setting X86=1 can't work.
-# The others havn't been tested yet.
-# 2) The generated DLLs are *not* compatible with the ones built
-# with the other compilers like VC8, especially for GLUT.
-# 3) Although more tests are needed, it can be used individually!
-
-#
-# Available options:
-#
-# Environment variables:
-# CFLAGS
-#
-# GLIDE path to Glide3 SDK; used with FX.
-# default = $(TOP)/glide3
-# FX=1 build for 3dfx Glide3. Note that this disables
-# compilation of most WMesa code and requires fxMesa.
-# As a consequence, you'll need the Win32 Glide3
-# library to build any application.
-# default = no
-# ICD=1 build the installable client driver interface
-# (windows opengl driver interface)
-# default = no
-# X86=1 optimize for x86 (if possible, use MMX, SSE, 3DNow).
-# default = no
-#
-# Targets:
-# all: build GL
-# clean: remove object files
-#
-
-
-
-.PHONY: all clean
-.INTERMEDIATE: x86/gen_matypes.exe
-.SUFFIXES: .rc .res
-
-# Set this to the prefix of your build tools, i.e. mingw32-
-TOOLS_PREFIX = mingw32-
-
-TOP = ../../..
-LIBDIR = $(TOP)/lib
-
-LIB_NAME = glu32
-DLL_EXT = .dll
-IMP_EXT = .a
-LIB_PRE = lib
-STRIP = -s
-
-AR = ar
-ARFLAGS = crus
-DLLTOOL = dlltool
-
-GLU_DLL = $(LIB_NAME)$(DLL_EXT)
-GLU_IMP = $(LIB_PRE)$(LIB_NAME)$(IMP_EXT)
-GLU_DEF = $(LIB_NAME).def
-
-LDLIBS = -L$(LIBDIR) -lopengl32
-LDFLAGS = $(STRIP) -shared -fPIC -Wl,--kill-at
-
-CFLAGS += -DBUILD_GLU32 -D_DLL
-
-
-CC = $(TOOLS_PREFIX)gcc
-CFLAGS += -DNDEBUG -DLIBRARYBUILD -I$(TOP)/include -Iinclude
-CXX = $(TOOLS_PREFIX)g++
-CXXFLAGS = $(CFLAGS) -Ilibnurbs/internals -Ilibnurbs/interface -Ilibnurbs/nurbtess
-
-AR = ar
-ARFLAGS = crus
-
-UNLINK = del $(subst /,\,$(1))
-ifneq ($(wildcard $(addsuffix /rm.exe,$(subst ;, ,$(PATH)))),)
-UNLINK = $(RM) $(1)
-endif
-ifneq ($(wildcard $(addsuffix /rm,$(subst :, ,$(PATH)))),)
-UNLINK = $(RM) $(1)
-endif
-
-C_SOURCES = \
- libutil/error.c \
- libutil/glue.c \
- libutil/mipmap.c \
- libutil/project.c \
- libutil/quad.c \
- libutil/registry.c \
- libtess/dict.c \
- libtess/geom.c \
- libtess/memalloc.c \
- libtess/mesh.c \
- libtess/normal.c \
- libtess/priorityq.c \
- libtess/render.c \
- libtess/sweep.c \
- libtess/tess.c \
- libtess/tessmono.c
-
-CC_SOURCES = \
- libnurbs/interface/bezierEval.cc \
- libnurbs/interface/bezierPatch.cc \
- libnurbs/interface/bezierPatchMesh.cc \
- libnurbs/interface/glcurveval.cc \
- libnurbs/interface/glinterface.cc \
- libnurbs/interface/glrenderer.cc \
- libnurbs/interface/glsurfeval.cc \
- libnurbs/interface/incurveeval.cc \
- libnurbs/interface/insurfeval.cc \
- libnurbs/internals/arc.cc \
- libnurbs/internals/arcsorter.cc \
- libnurbs/internals/arctess.cc \
- libnurbs/internals/backend.cc \
- libnurbs/internals/basiccrveval.cc \
- libnurbs/internals/basicsurfeval.cc \
- libnurbs/internals/bin.cc \
- libnurbs/internals/bufpool.cc \
- libnurbs/internals/cachingeval.cc \
- libnurbs/internals/ccw.cc \
- libnurbs/internals/coveandtiler.cc \
- libnurbs/internals/curve.cc \
- libnurbs/internals/curvelist.cc \
- libnurbs/internals/curvesub.cc \
- libnurbs/internals/dataTransform.cc \
- libnurbs/internals/displaylist.cc \
- libnurbs/internals/flist.cc \
- libnurbs/internals/flistsorter.cc \
- libnurbs/internals/hull.cc \
- libnurbs/internals/intersect.cc \
- libnurbs/internals/knotvector.cc \
- libnurbs/internals/mapdesc.cc \
- libnurbs/internals/mapdescv.cc \
- libnurbs/internals/maplist.cc \
- libnurbs/internals/mesher.cc \
- libnurbs/internals/monoTriangulationBackend.cc \
- libnurbs/internals/monotonizer.cc \
- libnurbs/internals/mycode.cc \
- libnurbs/internals/nurbsinterfac.cc \
- libnurbs/internals/nurbstess.cc \
- libnurbs/internals/patch.cc \
- libnurbs/internals/patchlist.cc \
- libnurbs/internals/quilt.cc \
- libnurbs/internals/reader.cc \
- libnurbs/internals/renderhints.cc \
- libnurbs/internals/slicer.cc \
- libnurbs/internals/sorter.cc \
- libnurbs/internals/splitarcs.cc \
- libnurbs/internals/subdivider.cc \
- libnurbs/internals/tobezier.cc \
- libnurbs/internals/trimline.cc \
- libnurbs/internals/trimregion.cc \
- libnurbs/internals/trimvertpool.cc \
- libnurbs/internals/uarray.cc \
- libnurbs/internals/varray.cc \
- libnurbs/nurbtess/directedLine.cc \
- libnurbs/nurbtess/gridWrap.cc \
- libnurbs/nurbtess/monoChain.cc \
- libnurbs/nurbtess/monoPolyPart.cc \
- libnurbs/nurbtess/monoTriangulation.cc \
- libnurbs/nurbtess/partitionX.cc \
- libnurbs/nurbtess/partitionY.cc \
- libnurbs/nurbtess/polyDBG.cc \
- libnurbs/nurbtess/polyUtil.cc \
- libnurbs/nurbtess/primitiveStream.cc \
- libnurbs/nurbtess/quicksort.cc \
- libnurbs/nurbtess/rectBlock.cc \
- libnurbs/nurbtess/sampleComp.cc \
- libnurbs/nurbtess/sampleCompBot.cc \
- libnurbs/nurbtess/sampleCompRight.cc \
- libnurbs/nurbtess/sampleCompTop.cc \
- libnurbs/nurbtess/sampleMonoPoly.cc \
- libnurbs/nurbtess/sampledLine.cc \
- libnurbs/nurbtess/searchTree.cc
-
-SOURCES = $(C_SOURCES) $(CC_SOURCES)
-
-OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))
-
-.c.o:
- $(CC) -o $@ $(CFLAGS) -c $<
-.cc.o:
- $(CXX) -o $@ $(CXXFLAGS) -c $<
-
-
-all: $(LIBDIR) $(LIBDIR)/$(GLU_DLL) $(LIBDIR)/$(GLU_IMP)
-
-$(LIBDIR):
- mkdir -p $(LIBDIR)
-
-$(LIBDIR)/$(GLU_DLL) $(LIBDIR)/$(GLU_IMP): $(OBJECTS)
- $(CXX) $(LDFLAGS) -o $(LIBDIR)/$(GLU_DLL) $^ $(LDLIBS)
- $(DLLTOOL) --as=as --dllname $(LIB_NAME) --output-def $(LIBDIR)/$(GLU_DEF) $^
- $(DLLTOOL) --as=as -k --dllname $(LIB_NAME) --output-lib $(LIBDIR)/$(GLU_IMP) --def $(LIBDIR)/$(GLU_DEF)
-
-
-clean:
- -$(call UNLINK,libutil/*.o)
- -$(call UNLINK,libtess/*.o)
- -$(call UNLINK,libnurbs/interface/*.o)
- -$(call UNLINK,libnurbs/internals/*.o)
- -$(call UNLINK,libnurbs/nurbtess/*.o)
diff --git a/mesalib/src/glu/sgi/Makefile.win b/mesalib/src/glu/sgi/Makefile.win
deleted file mode 100644
index 9321732ef..000000000
--- a/mesalib/src/glu/sgi/Makefile.win
+++ /dev/null
@@ -1,149 +0,0 @@
-# Makefile for Win32
-
-!include <win32.mak>
-
-.SUFFIXES : .cc
-
-TOP = ..
-
-GLU_SRCS_CC = \
- libnurbs\interface\bezierEval.cc \
- libnurbs\interface\bezierPatch.cc \
- libnurbs\interface\bezierPatchMesh.cc \
- libnurbs\interface\glcurveval.cc \
- libnurbs\interface\glinterface.cc \
- libnurbs\interface\glrenderer.cc \
- libnurbs\interface\glsurfeval.cc \
- libnurbs\interface\incurveeval.cc \
- libnurbs\interface\insurfeval.cc \
- libnurbs\internals\arc.cc \
- libnurbs\internals\arcsorter.cc \
- libnurbs\internals\arctess.cc \
- libnurbs\internals\backend.cc \
- libnurbs\internals\basiccrveval.cc \
- libnurbs\internals\basicsurfeval.cc \
- libnurbs\internals\bin.cc \
- libnurbs\internals\bufpool.cc \
- libnurbs\internals\cachingeval.cc \
- libnurbs\internals\ccw.cc \
- libnurbs\internals\coveandtiler.cc \
- libnurbs\internals\curve.cc \
- libnurbs\internals\curvelist.cc \
- libnurbs\internals\curvesub.cc \
- libnurbs\internals\dataTransform.cc \
- libnurbs\internals\displaylist.cc \
- libnurbs\internals\flist.cc \
- libnurbs\internals\flistsorter.cc \
- libnurbs\internals\hull.cc \
- libnurbs\internals\intersect.cc \
- libnurbs\internals\knotvector.cc \
- libnurbs\internals\mapdesc.cc \
- libnurbs\internals\mapdescv.cc \
- libnurbs\internals\maplist.cc \
- libnurbs\internals\mesher.cc \
- libnurbs\internals\monoTriangulationBackend.cc \
- libnurbs\internals\monotonizer.cc \
- libnurbs\internals\mycode.cc \
- libnurbs\internals\nurbsinterfac.cc \
- libnurbs\internals\nurbstess.cc \
- libnurbs\internals\patch.cc \
- libnurbs\internals\patchlist.cc \
- libnurbs\internals\quilt.cc \
- libnurbs\internals\reader.cc \
- libnurbs\internals\renderhints.cc \
- libnurbs\internals\slicer.cc \
- libnurbs\internals\sorter.cc \
- libnurbs\internals\splitarcs.cc \
- libnurbs\internals\subdivider.cc \
- libnurbs\internals\tobezier.cc \
- libnurbs\internals\trimline.cc \
- libnurbs\internals\trimregion.cc \
- libnurbs\internals\trimvertpool.cc \
- libnurbs\internals\uarray.cc \
- libnurbs\internals\varray.cc \
- libnurbs\nurbtess\directedLine.cc \
- libnurbs\nurbtess\gridWrap.cc \
- libnurbs\nurbtess\monoChain.cc \
- libnurbs\nurbtess\monoPolyPart.cc \
- libnurbs\nurbtess\monoTriangulation.cc \
- libnurbs\nurbtess\partitionX.cc \
- libnurbs\nurbtess\partitionY.cc \
- libnurbs\nurbtess\polyDBG.cc \
- libnurbs\nurbtess\polyUtil.cc \
- libnurbs\nurbtess\primitiveStream.cc \
- libnurbs\nurbtess\quicksort.cc \
- libnurbs\nurbtess\rectBlock.cc \
- libnurbs\nurbtess\sampleComp.cc \
- libnurbs\nurbtess\sampleCompBot.cc \
- libnurbs\nurbtess\sampleCompRight.cc \
- libnurbs\nurbtess\sampleCompTop.cc \
- libnurbs\nurbtess\sampleMonoPoly.cc \
- libnurbs\nurbtess\sampledLine.cc \
- libnurbs\nurbtess\searchTree.cc
-
-GLU_SRCS = \
- libtess\dict.c \
- libtess\geom.c \
- libtess\memalloc.c \
- libtess\mesh.c \
- libtess\normal.c \
- libtess\priorityq.c \
- libtess\render.c \
- libtess\sweep.c \
- libtess\tess.c \
- libtess\tessmono.c \
- libutil\error.c \
- libutil\glue.c \
- libutil\mipmap.c \
- libutil\project.c \
- libutil\quad.c \
- libutil\registry.c
-
-SRCS = $(GLU_SRCS)
-
-all : gludll
-
-!include "$(TOP)/mesawin32.mak"
-
-gludll : $(GLUDLL)
-
-CFLAGS = $(cvarsdll) $(CFLAGS) -D_OPENGL32_ -Iinclude -DBUILD_GL32 -DLIBRARYBUILD
-LFLAGS = $(dlllflags) $(lcommon) $(LFLAGS)
-
-LIBS = ../lib/$(MESALIB) winmm.lib $(guilibsdll)
-
-OBJS = $(GLU_SRCS_CC:.cc=.obj) $(GLU_SRCS:.c=.obj)
-NURBSINC = -Ilibnurbs\interface -Ilibnurbs\internals -Ilibnurbs\nurbtess
-CFLAGS = $(CFLAGS) $(NURBSINC)
-
-$(GLUDLL): $(OBJS) glu.def
- $(link) $(LFLAGS) -out:$(GLUDLL) -def:glu.def $(OBJS) $(LIBS)
- @echo "copying Mesa GLU dynamic link library to library directory..."
- -copy $(GLUDLL) $(TOP)\lib
- @echo "copying Mesa GLU import library to library directory..."
- -copy $(GLULIB) $(TOP)\lib
-
-install : $(GLUDLL) $(GLULIB)
- @echo "copying Mesa GLU dynamic link library to system directory..."
- -copy $(GLUDLL) $(DLLINSTALL)
- @echo "copying Mesa GLU header files to include directory..."
- -copy ..\..\include\GL\glu.h $(INCLUDEINSTALL)
- @echo "copying Mesa GLU import library to system library directory..."
- -copy $(GLULIB) $(LIBINSTALL)
-
-clean ::
- @del /f libtess\*.obj libutil\*.obj
- @del /f libnurbs\interface\*.obj libnurbs\internals\*.obj
- @del /f libnurbs\nurbtess\*.obj
-
-# override default inference rule with one that writes the object to
-# the same subdir as the c file.
-
-.c.obj :
- $(cc) $(CFLAGS) -I. $< /Fo$*.obj
-
-# /TP is needed for C++ files because MS compiler
-# does not recognize .cc as a C++ file.
-
-.cc.obj :
- $(cc) $(CFLAGS) -I. $< /TP /Fo$*.obj
diff --git a/mesalib/src/glu/sgi/SConscript b/mesalib/src/glu/sgi/SConscript
index a0c6c6584..94c74267f 100644
--- a/mesalib/src/glu/sgi/SConscript
+++ b/mesalib/src/glu/sgi/SConscript
@@ -11,7 +11,6 @@ env.Prepend(CPPPATH = [
])
env.Prepend(CPPDEFINES = [
- 'NDEBUG',
'LIBRARYBUILD',
'RESOLVE_3D_TEXTURE_SUPPORT',
])
diff --git a/mesalib/src/glu/sgi/include/gluos.h b/mesalib/src/glu/sgi/include/gluos.h
index 6e1691022..a80fc0554 100644
--- a/mesalib/src/glu/sgi/include/gluos.h
+++ b/mesalib/src/glu/sgi/include/gluos.h
@@ -40,7 +40,13 @@
#define NOIME
#define NOMINMAX
+#ifdef __MINGW64_VERSION_MAJOR
+ #undef _WIN32_WINNT
+#endif
+
#ifndef _WIN32_WINNT
+ /* XXX: Workaround a bug in mingw-w64's headers when NOGDI is set and
+ * _WIN32_WINNT >= 0x0600 */
#define _WIN32_WINNT 0x0400
#endif
#ifndef STRICT
diff --git a/mesalib/src/mesa/Android.mk b/mesalib/src/mesa/Android.mk
index 67808d491..f21ba3aa0 100644
--- a/mesalib/src/mesa/Android.mk
+++ b/mesalib/src/mesa/Android.mk
@@ -25,6 +25,12 @@
LOCAL_PATH := $(call my-dir)
+# Import the following variables:
+# MESA_CXX_SOURCES
+# MESA_GALLIUM_CXX_SOURCES
+# MESA_GALLIUM_SOURCES
+# MESA_SOURCES
+# X86_SOURCES
include $(LOCAL_PATH)/sources.mak
common_CFLAGS := \
@@ -83,6 +89,35 @@ include $(BUILD_STATIC_LIBRARY)
endif # MESA_BUILD_GALLIUM
# ---------------------------------------
+# Build libmesa_dricore for DRI modules
+# ---------------------------------------
+
+ifeq ($(strip $(MESA_BUILD_CLASSIC)),true)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libmesa_dricore
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+
+LOCAL_CFLAGS := \
+ $(common_CFLAGS) \
+ -DFEATURE_GL=1
+
+LOCAL_C_INCLUDES := \
+ $(common_C_INCLUDES)
+
+LOCAL_SRC_FILES := \
+ $(MESA_SOURCES) \
+ $(MESA_CXX_SOURCES) \
+ $(common_ASM)
+
+include $(LOCAL_PATH)/Android.gen.mk
+include $(MESA_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
+
+endif # MESA_BUILD_CLASSIC
+
+# ---------------------------------------
# Build libmesa_glsl_utils
#
# It is used to avoid circular dependency between core mesa and glsl.
diff --git a/mesalib/src/mesa/Makefile.mgw b/mesalib/src/mesa/Makefile.mgw
deleted file mode 100644
index 23ceaca01..000000000
--- a/mesalib/src/mesa/Makefile.mgw
+++ /dev/null
@@ -1,216 +0,0 @@
-# Mesa 3-D graphics library
-# Version: 7.0
-#
-# Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-# MinGW core makefile v1.4 for Mesa
-#
-# Copyright (C) 2002 - Daniel Borca
-# Email : dborca@users.sourceforge.net
-# Web : http://www.geocities.com/dborca
-
-# MinGW core-gl makefile updated for Mesa 7.0
-#
-# updated : by Heromyth, on 2007-7-21
-# Email : zxpmyth@yahoo.com.cn
-# Bugs : 1) All the default settings work fine. But the setting X86=1 can't work.
-# The others havn't been tested yet.
-# 2) The generated DLLs are *not* compatible with the ones built
-# with the other compilers like VC8, especially for GLUT.
-# 3) Although more tests are needed, it can be used individually!
-
-
-#
-# Available options:
-#
-# Environment variables:
-# CFLAGS
-#
-# GLIDE path to Glide3 SDK; used with FX.
-# default = $(TOP)/glide3
-# FX=1 build for 3dfx Glide3. Note that this disables
-# compilation of most WMesa code and requires fxMesa.
-# As a consequence, you'll need the Win32 Glide3
-# library to build any application.
-# default = no
-# X86=1 optimize for x86 (if possible, use MMX, SSE, 3DNow).
-# default = no
-#
-# Targets:
-# all: build GL
-# clean: remove object files
-#
-
-
-.PHONY: all clean
-.INTERMEDIATE: x86/gen_matypes.exe
-.SUFFIXES: .rc .res
-
-# Set this to the prefix of your build tools, i.e. mingw32-
-TOOLS_PREFIX = mingw32-
-
-LIB_NAME = opengl32
-
-DLL_EXT = .dll
-IMP_EXT = .a
-LIB_PRE = lib
-STRIP = -s
-
-AR = ar
-ARFLAGS = crus
-DLLTOOL = dlltool
-
-TOP = ../..
-GLIDE ?= $(TOP)/glide3
-LIBDIR = $(TOP)/lib
-
-GL_DLL = $(LIB_NAME)$(DLL_EXT)
-GL_IMP = $(LIB_PRE)$(LIB_NAME)$(IMP_EXT)
-
-MESA_LIB = libmesa.a
-CC = $(TOOLS_PREFIX)gcc
-
-LDLIBS = -lgdi32 -luser32 -liberty
-LDFLAGS = $(STRIP) -shared -fPIC -Wl,--kill-at
-
-CFLAGS += -DBUILD_GL32 -D_DLL -DMESA_MINWARN
-CFLAGS += -DNDEBUG -DUSE_EXTERNAL_DXTN_LIB=1
-
-ifeq ($(FX),1)
- CFLAGS += -I$(GLIDE)/include -DFX
- LDLIBS += -L$(GLIDE)/lib -lglide3x
- GL_DEF = drivers/windows/fx/fxopengl.def
- GL_RES = drivers/windows/fx/fx.rc
-else
- GL_DEF = $(LIB_NAME).def
-endif
-
-
-
-UNLINK = del $(subst /,\,$(1))
-ifneq ($(wildcard $(addsuffix /rm.exe,$(subst ;, ,$(PATH)))),)
-UNLINK = $(RM) $(1)
-endif
-ifneq ($(wildcard $(addsuffix /rm,$(subst :, ,$(PATH)))),)
-UNLINK = $(RM) $(1)
-endif
-
-include sources.mak
-
-CFLAGS += $(INCLUDE_DIRS)
-
-ifeq ($(X86),1)
-CFLAGS += -DUSE_X86_ASM
-CFLAGS += -DUSE_MMX_ASM
-CFLAGS += -DUSE_SSE_ASM
-CFLAGS += -DUSE_3DNOW_ASM
-X86_SOURCES += $(X86_API)
-else
-X86_SOURCES =
-endif
-
-ifeq ($(FX),1)
-DRIVER_SOURCES = \
- $(GLIDE_DRIVER_SOURCES) \
- drivers/windows/fx/fxwgl.c
-else
-DRIVER_SOURCES = \
- drivers/windows/gdi/wmesa.c \
- drivers/windows/gdi/wgl.c
-endif
-
-SOURCES = $(MESA_SOURCES) $(GLAPI_SOURCES) $(X86_SOURCES) $(DRIVER_SOURCES)
-
-OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))
-
-X86_OBJECTS = $(addsuffix .o,$(basename $(X86_SOURCES)))
-
-RESOURCE = $(GL_RES:.rc=.res)
-
-.c.o:
- $(CC) -o $@ $(CFLAGS) -c $<
-.s.o:
- $(CC) -o $@ $(CFLAGS) -x assembler-with-cpp -c $<
-
-.rc.res:
- windres -o $@ -Irc -Ocoff $<
-
-
-all: $(LIBDIR) $(LIBDIR)/$(GL_DLL) $(LIBDIR)/$(GL_IMP)
-
-$(LIBDIR):
- mkdir -p $(LIBDIR)
-
-$(LIBDIR)/$(GL_DLL) $(LIBDIR)/$(GL_IMP): $(OBJECTS) $(RESOURCE)
- $(CC) $(LDFLAGS) -o $(LIBDIR)/$(GL_DLL) $^ $(LDLIBS)
- $(DLLTOOL) --as=as --dllname $(LIB_NAME) --output-def $(LIBDIR)/$(GL_DEF) $^
- $(DLLTOOL) --as=as -k --dllname $(LIB_NAME) --output-lib $(LIBDIR)/$(GL_IMP) --def $(LIBDIR)/$(GL_DEF)
-
-
-$(X86_OBJECTS): x86/matypes.h
-
-x86/matypes.h: x86/gen_matypes.exe
- $(subst /,\,$< > $@)
-
-x86/gen_matypes.exe: x86/gen_matypes.c
- $(CC) -o $@ $(CFLAGS) -s $<
-
-# [dBorca]
-# glapi_x86.S needs some adjustments
-# in order to generate correct entrypoints
-# Trick: change the following condition to
-# be always false if you need C entrypoints
-# with USE_X86_ASM (useful for trace/debug)
-ifeq (1,1)
-x86/glapi_x86.o: x86/glapi_x86.S
- $(CC) -o $@ $(CFLAGS) -DSTDCALL_API -c $<
-else
-glapi/glapi_dispatch.o: glapi/glapi_dispatch.c
- $(CC) -o $@ $(CFLAGS) -UUSE_X86_ASM -c $<
-glapi/glapi.o: glapi/glapi.c
- $(CC) -o $@ $(CFLAGS) -UUSE_X86_ASM -c $<
-endif
-
-# [dBorca]
-# if we want codegen, we have to stdcall
-tnl/t_vtx_x86_gcc.o: tnl/t_vtx_x86_gcc.S
- $(CC) -o $@ $(CFLAGS) -DSTDCALL_API -c $<
-
-clean:
- -$(call UNLINK,glapi/*.o)
- -$(call UNLINK,main/*.o)
- -$(call UNLINK,math/*.o)
- -$(call UNLINK,vbo/*.o)
- -$(call UNLINK,program/*.o)
- -$(call UNLINK,slang/*.o)
- -$(call UNLINK,sparc/*.o)
- -$(call UNLINK,ppc/*.o)
- -$(call UNLINK,swrast/*.o)
- -$(call UNLINK,swrast_setup/*.o)
- -$(call UNLINK,tnl/*.o)
- -$(call UNLINK,x86/*.o)
- -$(call UNLINK,x86/rtasm/*.o)
- -$(call UNLINK,x86-64/*.o)
- -$(call UNLINK,drivers/common/*.o)
- -$(call UNLINK,drivers/glide/*.o)
- -$(call UNLINK,drivers/windows/fx/*.o)
- -$(call UNLINK,drivers/windows/fx/*.res)
- -$(call UNLINK,drivers/windows/gdi/*.o)
- -$(call UNLINK,drivers/windows/icd/*.o)
diff --git a/mesalib/src/mesa/drivers/dri/Android.mk b/mesalib/src/mesa/drivers/dri/Android.mk
new file mode 100644
index 000000000..b8ccd0c1b
--- /dev/null
+++ b/mesalib/src/mesa/drivers/dri/Android.mk
@@ -0,0 +1,62 @@
+#
+# Copyright (C) 2011 Intel Corporation
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+# Import mesa_dri_common_INCLUDES.
+include $(LOCAL_PATH)/common/Makefile.sources
+
+#-----------------------------------------------
+# Variables common to all DRI drivers
+
+MESA_DRI_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/dri
+MESA_DRI_MODULE_UNSTRIPPED_PATH := $(TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED)/dri
+
+MESA_DRI_C_INCLUDES := \
+ $(addprefix $(MESA_TOP)/, $(mesa_dri_common_INCLUDES)) \
+ $(DRM_TOP) \
+ $(DRM_TOP)/include/drm \
+ external/expat/lib
+
+MESA_DRI_WHOLE_STATIC_LIBRARIES := \
+ libmesa_glsl \
+ libmesa_dri_common \
+ libmesa_dricore
+
+MESA_DRI_SHARED_LIBRARIES := \
+ libcutils \
+ libdl \
+ libdrm \
+ libexpat \
+ libglapi \
+ liblog
+
+#-----------------------------------------------
+# Build drivers and libmesa_dri_common
+
+SUBDIRS := common
+
+ifneq ($(filter i965, $(MESA_GPU_DRIVERS)),)
+ SUBDIRS += i965
+endif
+
+include $(foreach d, $(SUBDIRS), $(LOCAL_PATH)/$(d)/Android.mk)
diff --git a/mesalib/src/mesa/drivers/dri/Makefile.defines b/mesalib/src/mesa/drivers/dri/Makefile.defines
index 19b6de8b8..6ff8df5c0 100644
--- a/mesalib/src/mesa/drivers/dri/Makefile.defines
+++ b/mesalib/src/mesa/drivers/dri/Makefile.defines
@@ -1,15 +1,13 @@
# -*-makefile-*-
+# Import mesa_dri_common_*
+include ../common/Makefile.sources
+
COMMON_GALLIUM_SOURCES = \
- ../common/utils.c \
- ../common/vblank.c \
- ../common/dri_util.c \
- ../common/xmlconfig.c
+ $(addprefix ../common/, $(mesa_dri_common_gallium_SOURCES))
-COMMON_SOURCES = $(COMMON_GALLIUM_SOURCES) \
- ../../common/driverfuncs.c \
- ../common/texmem.c \
- ../common/drirenderbuffer.c
+COMMON_SOURCES = \
+ $(addprefix ../common/, $(mesa_dri_common_SOURCES))
INCLUDES = $(SHARED_INCLUDES) $(EXPAT_INCLUDES)
@@ -21,13 +19,8 @@ OBJECTS = $(C_SOURCES:.c=.o) \
### Include directories
SHARED_INCLUDES = \
-I. \
- -I$(TOP)/src/mesa/drivers/dri/common \
-Iserver \
- -I$(TOP)/include \
- -I$(TOP)/src/mapi \
- -I$(TOP)/src/mesa \
- -I$(TOP)/src/egl/main \
- -I$(TOP)/src/egl/drivers/dri \
+ $(addprefix -I$(TOP)/, $(mesa_dri_common_INCLUDES)) \
$(LIBDRM_CFLAGS)
INCLUDES += $(API_DEFINES)
diff --git a/mesalib/src/mesa/drivers/dri/common/Android.mk b/mesalib/src/mesa/drivers/dri/common/Android.mk
new file mode 100644
index 000000000..76464a153
--- /dev/null
+++ b/mesalib/src/mesa/drivers/dri/common/Android.mk
@@ -0,0 +1,41 @@
+#
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2011 Intel Corporation
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+
+#
+# Build libmesa_dri_common
+#
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/Makefile.sources
+
+LOCAL_MODULE := libmesa_dri_common
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+
+LOCAL_C_INCLUDES := $(MESA_DRI_C_INCLUDES)
+LOCAL_SRC_FILES := $(mesa_dri_common_SOURCES)
+
+include $(MESA_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
diff --git a/mesalib/src/mesa/drivers/dri/common/Makefile.sources b/mesalib/src/mesa/drivers/dri/common/Makefile.sources
new file mode 100644
index 000000000..3432dda45
--- /dev/null
+++ b/mesalib/src/mesa/drivers/dri/common/Makefile.sources
@@ -0,0 +1,19 @@
+mesa_dri_common_gallium_SOURCES := \
+ utils.c \
+ vblank.c \
+ dri_util.c \
+ xmlconfig.c
+
+mesa_dri_common_SOURCES := \
+ $(mesa_dri_common_gallium_SOURCES) \
+ texmem.c \
+ drirenderbuffer.c
+
+# Paths are relative to MESA_TOP.
+mesa_dri_common_INCLUDES := \
+ include \
+ src/egl/drivers/dri \
+ src/egl/main \
+ src/mapi \
+ src/mesa \
+ src/mesa/drivers/dri/common
diff --git a/mesalib/src/mesa/drivers/dri/swrast/Makefile b/mesalib/src/mesa/drivers/dri/swrast/Makefile
index 4cb99fd0e..509fa28b6 100644
--- a/mesalib/src/mesa/drivers/dri/swrast/Makefile
+++ b/mesalib/src/mesa/drivers/dri/swrast/Makefile
@@ -20,7 +20,6 @@ C_SOURCES = \
ASM_SOURCES =
SWRAST_COMMON_SOURCES = \
- ../../common/driverfuncs.c \
../common/utils.c \
../common/drisw_util.c
diff --git a/mesalib/src/mesa/drivers/windows/gdi/wgl.c b/mesalib/src/mesa/drivers/windows/gdi/wgl.c
index d9285c420..0756c27cc 100644
--- a/mesalib/src/mesa/drivers/windows/gdi/wgl.c
+++ b/mesalib/src/mesa/drivers/windows/gdi/wgl.c
@@ -29,31 +29,8 @@
*/
-/* We're essentially building part of GDI here, so define this so that
- * we get the right export linkage. */
-#ifdef __MINGW32__
-
-#include <stdarg.h>
-#include <windef.h>
-#include <wincon.h>
-#include <winbase.h>
-
-# if defined(BUILD_GL32)
-# define WINGDIAPI __declspec(dllexport)
-# else
-# define __W32API_USE_DLLIMPORT__
-# endif
-
-#include <wingdi.h>
-#include "GL/mesa_wgl.h"
-#include <stdlib.h>
-
-#else
-
-#define _GDI32_
#include <windows.h>
-#endif
#include "main/config.h"
#include "glapi/glapi.h"
#include "GL/wmesa.h" /* protos for wmesa* functions */
diff --git a/mesalib/src/mesa/main/state.c b/mesalib/src/mesa/main/state.c
index 1628dc860..9c82bfaf0 100644
--- a/mesalib/src/mesa/main/state.c
+++ b/mesalib/src/mesa/main/state.c
@@ -631,7 +631,7 @@ _mesa_update_state_locked( struct gl_context *ctx )
if (new_state & (_NEW_BUFFERS | _NEW_VIEWPORT))
update_viewport_matrix(ctx);
- if (new_state & _NEW_MULTISAMPLE)
+ if (new_state & (_NEW_MULTISAMPLE | _NEW_BUFFERS))
update_multisample( ctx );
if (new_state & _NEW_COLOR)
diff --git a/mesalib/src/mesa/main/uniforms.c b/mesalib/src/mesa/main/uniforms.c
index f251a70f5..166c2cfcd 100644
--- a/mesalib/src/mesa/main/uniforms.c
+++ b/mesalib/src/mesa/main/uniforms.c
@@ -55,17 +55,24 @@ static GLenum
base_uniform_type(GLenum type)
{
switch (type) {
-#if 0 /* not needed, for now */
case GL_BOOL:
case GL_BOOL_VEC2:
case GL_BOOL_VEC3:
case GL_BOOL_VEC4:
return GL_BOOL;
-#endif
case GL_FLOAT:
case GL_FLOAT_VEC2:
case GL_FLOAT_VEC3:
case GL_FLOAT_VEC4:
+ case GL_FLOAT_MAT2:
+ case GL_FLOAT_MAT2x3:
+ case GL_FLOAT_MAT2x4:
+ case GL_FLOAT_MAT3x2:
+ case GL_FLOAT_MAT3:
+ case GL_FLOAT_MAT3x4:
+ case GL_FLOAT_MAT4x2:
+ case GL_FLOAT_MAT4x3:
+ case GL_FLOAT_MAT4:
return GL_FLOAT;
case GL_UNSIGNED_INT:
case GL_UNSIGNED_INT_VEC2:
@@ -408,8 +415,12 @@ get_uniform(struct gl_context *ctx, GLuint program, GLint location,
else {
const struct gl_program_parameter *p =
&prog->Parameters->Parameters[paramPos];
+ gl_constant_value (*values)[4];
GLint rows, cols, i, j, k;
GLsizei numBytes;
+ GLenum storage_type;
+
+ values = prog->Parameters->ParameterValues + paramPos + offset;
get_uniform_rows_cols(p, &rows, &cols);
@@ -421,62 +432,72 @@ get_uniform(struct gl_context *ctx, GLuint program, GLint location,
return;
}
- switch (returnType) {
- case GL_FLOAT:
- {
- GLfloat *params = (GLfloat *) paramsOut;
- k = 0;
- for (i = 0; i < rows; i++) {
- const int base = paramPos + offset + i;
- for (j = 0; j < cols; j++ ) {
- params[k++] = prog->Parameters->ParameterValues[base][j].f;
- }
- }
- }
- break;
- case GL_DOUBLE:
- {
- GLfloat *params = (GLfloat *) paramsOut;
- k = 0;
- for (i = 0; i < rows; i++) {
- const int base = paramPos + offset + i;
- for (j = 0; j < cols; j++ ) {
- params[k++] = (GLdouble)
- prog->Parameters->ParameterValues[base][j].f;
- }
- }
- }
- break;
- case GL_INT:
- {
- GLint *params = (GLint *) paramsOut;
- k = 0;
- for (i = 0; i < rows; i++) {
- const int base = paramPos + offset + i;
- for (j = 0; j < cols; j++ ) {
- params[k++] = ctx->Const.NativeIntegers ?
- prog->Parameters->ParameterValues[base][j].i :
- (GLint) prog->Parameters->ParameterValues[base][j].f;
- }
- }
- }
- break;
- case GL_UNSIGNED_INT:
- {
- GLuint *params = (GLuint *) paramsOut;
- k = 0;
- for (i = 0; i < rows; i++) {
- const int base = paramPos + offset + i;
- for (j = 0; j < cols; j++ ) {
- params[k++] = ctx->Const.NativeIntegers ?
- prog->Parameters->ParameterValues[base][j].u :
- (GLuint) prog->Parameters->ParameterValues[base][j].f;
- }
- }
- }
- break;
- default:
- _mesa_problem(ctx, "bad returnType in get_uniform()");
+ if (ctx->Const.NativeIntegers) {
+ storage_type = base_uniform_type(p->DataType);
+ } else {
+ storage_type = GL_FLOAT;
+ }
+
+ k = 0;
+ for (i = 0; i < rows; i++) {
+ for (j = 0; j < cols; j++ ) {
+ void *out = (char *)paramsOut + 4 * k;
+
+ switch (returnType) {
+ case GL_FLOAT:
+ switch (storage_type) {
+ case GL_FLOAT:
+ *(float *)out = values[i][j].f;
+ break;
+ case GL_INT:
+ case GL_BOOL: /* boolean is just an integer 1 or 0. */
+ *(float *)out = values[i][j].i;
+ break;
+ case GL_UNSIGNED_INT:
+ *(float *)out = values[i][j].u;
+ break;
+ }
+ break;
+
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ switch (storage_type) {
+ case GL_FLOAT:
+ /* While the GL 3.2 core spec doesn't explicitly
+ * state how conversion of float uniforms to integer
+ * values works, in section 6.2 "State Tables" on
+ * page 267 it says:
+ *
+ * "Unless otherwise specified, when floating
+ * point state is returned as integer values or
+ * integer state is returned as floating-point
+ * values it is converted in the fashion
+ * described in section 6.1.2"
+ *
+ * That section, on page 248, says:
+ *
+ * "If GetIntegerv or GetInteger64v are called,
+ * a floating-point value is rounded to the
+ * nearest integer..."
+ */
+ *(int *)out = IROUND(values[i][j].f);
+ break;
+
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ case GL_BOOL:
+ /* type conversions for these to int/uint are just
+ * copying the data.
+ */
+ *(int *)out = values[i][j].i;
+ break;
+ break;
+ }
+ break;
+ }
+
+ k++;
+ }
}
}
}
diff --git a/mesalib/src/mesa/program/prog_parameter.h b/mesalib/src/mesa/program/prog_parameter.h
index 1a5ed3439..4c2773a62 100644
--- a/mesalib/src/mesa/program/prog_parameter.h
+++ b/mesalib/src/mesa/program/prog_parameter.h
@@ -53,7 +53,7 @@
typedef union gl_constant_value
{
GLfloat f;
- GLboolean b;
+ GLint b;
GLint i;
GLuint u;
} gl_constant_value;
diff --git a/mesalib/src/mesa/tnl/t_draw.c b/mesalib/src/mesa/tnl/t_draw.c
index f3f324314..03d343319 100644
--- a/mesalib/src/mesa/tnl/t_draw.c
+++ b/mesalib/src/mesa/tnl/t_draw.c
@@ -26,6 +26,7 @@
*/
#include "main/glheader.h"
+#include "main/bufferobj.h"
#include "main/condrender.h"
#include "main/context.h"
#include "main/imports.h"
@@ -339,14 +340,15 @@ static void bind_indices( struct gl_context *ctx,
TNLcontext *tnl = TNL_CONTEXT(ctx);
struct vertex_buffer *VB = &tnl->vb;
GLuint i;
- void *ptr;
+ const void *ptr;
if (!ib) {
VB->Elts = NULL;
return;
}
- if (ib->obj->Name && !ib->obj->Pointer) {
+ if (_mesa_is_bufferobj(ib->obj) && !_mesa_bufferobj_mapped(ib->obj)) {
+ /* if the buffer object isn't mapped yet, map it now */
unsigned map_size;
switch (ib->type) {
@@ -370,7 +372,8 @@ static void bind_indices( struct gl_context *ctx,
GL_MAP_READ_BIT, ib->obj);
assert(ib->obj->Pointer);
} else {
- ptr = ib->ptr;
+ /* user-space elements, or buffer already mapped */
+ ptr = ADD_POINTERS(ib->obj->Pointer, ib->ptr);
}
if (ib->type == GL_UNSIGNED_INT && VB->Primitive[0].basevertex == 0) {