Compare commits
177 Commits
mesa-7.0.2
...
mesa-7.0.3
Author | SHA1 | Date | |
---|---|---|---|
|
59c9c40c01 | ||
|
666e0635da | ||
|
f9968a0346 | ||
|
48616e71d2 | ||
|
70d227ac62 | ||
|
7f2c4f96f5 | ||
|
667f0f60fc | ||
|
7592b8cc10 | ||
|
f55b831859 | ||
|
217f7f7e5d | ||
|
2e5a63f365 | ||
|
7c614b4666 | ||
|
b23d908829 | ||
|
5379b84e63 | ||
|
32c913308e | ||
|
1e83d70b6d | ||
|
767dfa5b9c | ||
|
7ff5b38126 | ||
|
e209f5300d | ||
|
3c4b50c352 | ||
|
4e7c2fcf18 | ||
|
22534f94f5 | ||
|
1a6928fdbe | ||
|
325dbbac47 | ||
|
39ac6b0481 | ||
|
46cc4854e9 | ||
|
f93882512e | ||
|
0dee2a4f6f | ||
|
3cebc35669 | ||
|
e75a204fb9 | ||
|
ac06a5c16a | ||
|
ed758fee0c | ||
|
a21c61ee8b | ||
|
24697da20e | ||
|
7120c0089d | ||
|
88a436a8f7 | ||
|
2fdb5a245d | ||
|
8441b53538 | ||
|
d336df8b73 | ||
|
8aaf805b8a | ||
|
8161fd2785 | ||
|
2f23025dfe | ||
|
1867eac230 | ||
|
096e35d05f | ||
|
8998f52b97 | ||
|
0fd38dcc83 | ||
|
d89cf0649e | ||
|
31e9d9d4f8 | ||
|
ea9c6d3d9e | ||
|
ff63cf8068 | ||
|
eaac94c35a | ||
|
9291506af0 | ||
|
4716670de9 | ||
|
33c5b38034 | ||
|
5737d6c565 | ||
|
08a7f56c6a | ||
|
7916f2b4aa | ||
|
193d303ac7 | ||
|
e70609b7b8 | ||
|
da476ff02d | ||
|
77e3b5d28b | ||
|
bf97ca448c | ||
|
c5f8ff8b32 | ||
|
50465766d1 | ||
|
7d8df58a63 | ||
|
762c074012 | ||
|
51f2ee3bfb | ||
|
b5cd34aa21 | ||
|
ae5c6dcd42 | ||
|
97196d0c8c | ||
|
f6de56b88a | ||
|
d64ea43b76 | ||
|
2deaf93d24 | ||
|
a107ec8300 | ||
|
120a1f9508 | ||
|
bb84007a57 | ||
|
86234e55a6 | ||
|
61972077cd | ||
|
5a7feb8ea2 | ||
|
4b4c131cd0 | ||
|
67617c8f89 | ||
|
0fd23f01c6 | ||
|
557b0d9df7 | ||
|
888f4380cf | ||
|
3266c5e95a | ||
|
834decdaae | ||
|
18b2d83173 | ||
|
30c65c3c62 | ||
|
04fcc4cf1e | ||
|
09504dde1f | ||
|
c04885f072 | ||
|
48ae5cf09d | ||
|
45cdb6eb45 | ||
|
b9f3f732aa | ||
|
17006ddd6b | ||
|
b77a354df3 | ||
|
71d46beebf | ||
|
454e296eb1 | ||
|
f9b696be2b | ||
|
c923edbc71 | ||
|
e20c1d987f | ||
|
cd354eb10f | ||
|
e9ac27ee23 | ||
|
3f9dc9f5b6 | ||
|
ba709875ae | ||
|
80f8397b35 | ||
|
b45fa27fa1 | ||
|
b59480645d | ||
|
148cb36979 | ||
|
c1eb78f7ff | ||
|
8aa0fd6b20 | ||
|
a1b3a908f5 | ||
|
f9e70d951a | ||
|
41ed6be1da | ||
|
27de28fc3e | ||
|
dd2f01c229 | ||
|
deb5c56c77 | ||
|
9fd22f0e3f | ||
|
942372dcdf | ||
|
b7f901088b | ||
|
c02990525c | ||
|
0107acded0 | ||
|
2ac5e08d1d | ||
|
1837b8c214 | ||
|
03d2bc1774 | ||
|
385bddbde0 | ||
|
c135426267 | ||
|
4be0c98120 | ||
|
e760aebd5a | ||
|
1f6e7d9c29 | ||
|
c6d421af05 | ||
|
952df5e493 | ||
|
45acb8b058 | ||
|
e8997c0183 | ||
|
169e62f563 | ||
|
1b43babfb1 | ||
|
43e902f774 | ||
|
b0a800e249 | ||
|
73d5f232ad | ||
|
f7209541e4 | ||
|
397a32dca7 | ||
|
e0719d7122 | ||
|
3f18c0a9f2 | ||
|
b14be61938 | ||
|
440d620308 | ||
|
8dd9df0f3e | ||
|
6b9534eaf5 | ||
|
c91d374ad7 | ||
|
1cab4160bc | ||
|
718d2dfbbd | ||
|
0967e1270d | ||
|
a08c02f1a8 | ||
|
bdfd9afead | ||
|
1c91a590d6 | ||
|
65bd7968bf | ||
|
6ccd23b87b | ||
|
823409b7d0 | ||
|
c85d31f4a0 | ||
|
24af5c44da | ||
|
75efacf8eb | ||
|
825e810247 | ||
|
e20723cfc1 | ||
|
9f39a67c1d | ||
|
2044f3f791 | ||
|
30d4e8c422 | ||
|
92d552f6a2 | ||
|
5adfcbbc4f | ||
|
69969b3819 | ||
|
edfee04fcb | ||
|
ae0bf74db9 | ||
|
1bf7ce97c0 | ||
|
4971a009e0 | ||
|
e1613ab80d | ||
|
28c9930888 | ||
|
e3a35a123e | ||
|
412168f2e8 | ||
|
fc0fa0d636 |
14
Makefile
14
Makefile
@@ -71,9 +71,10 @@ bluegene-osmesa \
|
||||
bluegene-xlc-osmesa \
|
||||
catamount-osmesa-pgi \
|
||||
darwin \
|
||||
darwin-fat-32bit \
|
||||
darwin-fat-all \
|
||||
darwin-static \
|
||||
darwin-static-x86ppc \
|
||||
darwin-x86ppc \
|
||||
freebsd \
|
||||
freebsd-dri \
|
||||
freebsd-dri-amd64 \
|
||||
@@ -166,10 +167,10 @@ ultrix-gcc:
|
||||
|
||||
# Rules for making release tarballs
|
||||
|
||||
DIRECTORY = Mesa-7.0.2
|
||||
LIB_NAME = MesaLib-7.0.2
|
||||
DEMO_NAME = MesaDemos-7.0.2
|
||||
GLUT_NAME = MesaGLUT-7.0.2
|
||||
DIRECTORY = Mesa-7.0.3
|
||||
LIB_NAME = MesaLib-7.0.3
|
||||
DEMO_NAME = MesaDemos-7.0.3
|
||||
GLUT_NAME = MesaGLUT-7.0.3
|
||||
|
||||
MAIN_FILES = \
|
||||
$(DIRECTORY)/Makefile* \
|
||||
@@ -355,6 +356,7 @@ GLW_FILES = \
|
||||
$(DIRECTORY)/src/glw/*.[ch] \
|
||||
$(DIRECTORY)/src/glw/Makefile* \
|
||||
$(DIRECTORY)/src/glw/README \
|
||||
$(DIRECTORY)/src/glw/glw.pc.in \
|
||||
$(DIRECTORY)/src/glw/depend
|
||||
|
||||
DEMO_FILES = \
|
||||
@@ -414,6 +416,7 @@ GLUT_FILES = \
|
||||
$(DIRECTORY)/src/glut/fbdev/Makefile \
|
||||
$(DIRECTORY)/src/glut/fbdev/*[ch] \
|
||||
$(DIRECTORY)/src/glut/mini/*[ch] \
|
||||
$(DIRECTORY)/src/glut/mini/glut.pc.in \
|
||||
$(DIRECTORY)/src/glut/directfb/Makefile \
|
||||
$(DIRECTORY)/src/glut/directfb/NOTES \
|
||||
$(DIRECTORY)/src/glut/directfb/*[ch] \
|
||||
@@ -424,7 +427,6 @@ DEPEND_FILES = \
|
||||
$(TOP)/src/mesa/depend \
|
||||
$(TOP)/src/glx/x11/depend \
|
||||
$(TOP)/src/glw/depend \
|
||||
$(TOP)/src/glw/glw.pc.in \
|
||||
$(TOP)/src/glut/glx/depend \
|
||||
$(TOP)/src/glu/sgi/depend
|
||||
|
||||
|
100
bin/mklib
100
bin/mklib
@@ -71,6 +71,7 @@ do
|
||||
echo ' -install DIR put resulting library file(s) in DIR'
|
||||
echo ' -arch ARCH override using `uname` to determine host system'
|
||||
echo ' -archopt OPT specify an extra achitecture-specific option OPT'
|
||||
echo ' -altopts OPTS alternate options to override all others'
|
||||
echo " -noprefix don't prefix library name with 'lib' nor add any suffix"
|
||||
echo ' -exports FILE only export the symbols listed in FILE'
|
||||
echo ' -h, --help display this information and exit'
|
||||
@@ -111,7 +112,6 @@ do
|
||||
DEPS="$DEPS $1"
|
||||
;;
|
||||
'-pthread')
|
||||
# for FreeBSD
|
||||
DEPS="$DEPS -pthread"
|
||||
;;
|
||||
'-cplusplus')
|
||||
@@ -135,6 +135,10 @@ do
|
||||
shift 1;
|
||||
ARCHOPT=$1
|
||||
;;
|
||||
'-altopts')
|
||||
shift 1;
|
||||
ALTOPTS=$1
|
||||
;;
|
||||
'-noprefix')
|
||||
NOPREFIX=1
|
||||
;;
|
||||
@@ -209,8 +213,13 @@ case $ARCH in
|
||||
if [ $NOPREFIX = 1 ] ; then
|
||||
# No "lib" or ".so" part
|
||||
echo "mklib: Making" $ARCH "shared library: " ${LIBNAME}
|
||||
#OPTS="-shared -Wl,-soname,${LIBNAME}" # soname???
|
||||
OPTS="-shared"
|
||||
case $ARCH in 'Linux' | 'GNU' | GNU/*)
|
||||
OPTS="-Xlinker -Bsymbolic -shared"
|
||||
;;
|
||||
*)
|
||||
OPTS="-shared"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Check if objects are 32-bit and we're running in 64-bit
|
||||
# environment. If so, pass -m32 flag to linker.
|
||||
@@ -220,6 +229,10 @@ case $ARCH in
|
||||
OPTS="-m32 ${OPTS}"
|
||||
fi
|
||||
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
|
||||
rm -f ${LIBNAME}
|
||||
# make lib
|
||||
${LINK} ${OPTS} ${LDFLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
|
||||
@@ -230,6 +243,9 @@ case $ARCH in
|
||||
echo "mklib: Making" $ARCH "static library: " ${LIBNAME}
|
||||
LINK="ar"
|
||||
OPTS="-ru"
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
rm -f ${LIBNAME}
|
||||
# make lib
|
||||
${LINK} ${OPTS} ${LIBNAME} ${OBJECTS}
|
||||
@@ -265,6 +281,9 @@ case $ARCH in
|
||||
if [ "${ABI32}" -a `uname -m` = "x86_64" ] ; then
|
||||
OPTS="-m32 ${OPTS}"
|
||||
fi
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
|
||||
if [ x${PATCH} = "x" ] ; then
|
||||
VERSION="${MAJOR}.${MINOR}"
|
||||
@@ -347,7 +366,9 @@ case $ARCH in
|
||||
if [ "${SPARCV9}" ] ; then
|
||||
OPTS="${OPTS} -xarch=v9"
|
||||
fi
|
||||
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
# for debug:
|
||||
#echo "mklib: linker is" ${LINK} ${OPTS}
|
||||
if [ $NOPREFIX = 1 ] ; then
|
||||
@@ -378,6 +399,9 @@ case $ARCH in
|
||||
# No "lib" or ".so" part
|
||||
echo "mklib: Making FreeBSD shared library: " ${LIBNAME}
|
||||
OPTS="-shared"
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
rm -f ${LIBNAME}
|
||||
${LINK} ${OPTS} ${LDFLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
|
||||
FINAL_LIBS=${LIBNAME}
|
||||
@@ -391,6 +415,9 @@ case $ARCH in
|
||||
else
|
||||
SHLIB="lib${LIBNAME}.so.${MAJOR}"
|
||||
OPTS="-shared -Wl,-soname,${SHLIB}"
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
echo "mklib: Making FreeBSD shared library: " ${SHLIB}
|
||||
rm -f ${SHLIB}
|
||||
${LINK} ${OPTS} ${LDFLAGS} -o ${SHLIB} ${OBJECTS} ${DEPS}
|
||||
@@ -444,6 +471,10 @@ case $ARCH in
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
|
||||
if [ $CPLUSPLUS = 1 ] ; then
|
||||
LINK="CC"
|
||||
else
|
||||
@@ -524,6 +555,10 @@ case $ARCH in
|
||||
}
|
||||
}' | sort -u >> ${EXPFILE}
|
||||
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
|
||||
# On AIX a shared library is linked differently when
|
||||
# you want to dlopen the file
|
||||
if [ $DLOPEN = "1" ] ; then
|
||||
@@ -575,6 +610,9 @@ case $ARCH in
|
||||
echo "mklib: Making Darwin static library: " ${LIBNAME}
|
||||
LINK="ar"
|
||||
OPTS="-ruvs"
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
${LINK} ${OPTS} ${LIBNAME} ${OBJECTS}
|
||||
FINAL_LIBS=${LIBNAME}
|
||||
else
|
||||
@@ -586,19 +624,37 @@ case $ARCH in
|
||||
LIBSUFFIX="dylib"
|
||||
OPTS="${ARCHOPT} -dynamiclib -multiply_defined suppress -current_version ${MAJOR}.${MINOR}.0 -compatibility_version ${MAJOR}.${MINOR}.0 -install_name lib${LIBNAME}.${MAJOR}.${LIBSUFFIX}"
|
||||
fi
|
||||
LINKNAME="lib${LIBNAME}.${LIBSUFFIX}"
|
||||
LIBNAME="lib${LIBNAME}.${MAJOR}.${LIBSUFFIX}"
|
||||
|
||||
if [ ${EXPORTS} ] ; then
|
||||
OPTS="${OPTS} -exported_symbols_list ${EXPORTS}"
|
||||
fi
|
||||
|
||||
LINKNAME="lib${LIBNAME}.${MAJOR}.${LIBSUFFIX}"
|
||||
LINKNAME2="lib${LIBNAME}.${LIBSUFFIX}"
|
||||
LIBNAME="lib${LIBNAME}.${MAJOR}.${MINOR}.${LIBSUFFIX}"
|
||||
|
||||
# examine first object to determine ABI
|
||||
set ${OBJECTS}
|
||||
ABI_PPC=`file $1 | grep 'object ppc'`
|
||||
ABI_I386=`file $1 | grep 'object i386'`
|
||||
if [ "${ABI_PPC}" ] ; then
|
||||
OPTS="${OPTS} -arch ppc"
|
||||
fi
|
||||
if [ "${ABI_I386}" ] ; then
|
||||
OPTS="${OPTS} -arch i386"
|
||||
fi
|
||||
ABI_PPC=`file $1 | grep ' ppc'`
|
||||
ABI_I386=`file $1 | grep ' i386'`
|
||||
ABI_PPC64=`file $1 | grep ' ppc64'`
|
||||
ABI_X86_64=`file $1 | grep ' x86_64'`
|
||||
if [ "${ABI_PPC}" ] ; then
|
||||
OPTS="${OPTS} -arch ppc"
|
||||
fi
|
||||
if [ "${ABI_I386}" ] ; then
|
||||
OPTS="${OPTS} -arch i386"
|
||||
fi
|
||||
if [ "${ABI_PPC64}" ] ; then
|
||||
OPTS="${OPTS} -arch ppc64"
|
||||
fi
|
||||
if [ "${ABI_X86_64}" ] ; then
|
||||
OPTS="${OPTS} -arch x86_64"
|
||||
fi
|
||||
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
|
||||
# XXX can we always add -isysroot /Developer/SDKs/MacOSX10.4u.sdk
|
||||
# to OPTS here?
|
||||
@@ -611,9 +667,11 @@ case $ARCH in
|
||||
fi
|
||||
|
||||
echo "mklib: Making Darwin shared library: " ${LIBNAME}
|
||||
|
||||
${LINK} ${OPTS} ${LDFLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
|
||||
ln -s ${LIBNAME} ${LINKNAME}
|
||||
FINAL_LIBS="${LIBNAME} ${LINKNAME}"
|
||||
ln -s ${LIBNAME} ${LINKNAME2}
|
||||
FINAL_LIBS="${LIBNAME} ${LINKNAME} ${LINKNAME2}"
|
||||
fi
|
||||
;;
|
||||
|
||||
@@ -665,6 +723,9 @@ case $ARCH in
|
||||
echo "mklib: Making Intel ICC static library: " ${LIBNAME}.a
|
||||
LINK="ar"
|
||||
OPTS="-ruv"
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
# make lib
|
||||
${LINK} ${OPTS} ${LIBNAME}.a ${OBJECTS}
|
||||
# finish up
|
||||
@@ -675,6 +736,9 @@ case $ARCH in
|
||||
else
|
||||
OPTS="-shared"
|
||||
fi
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
VERSION="${MAJOR}.${MINOR}.${PATCH}"
|
||||
echo "mklib: Making Intel ICC shared library: " ${LIBNAME}.so.${VERSION}
|
||||
|
||||
@@ -739,6 +803,9 @@ case $ARCH in
|
||||
echo "mklib: Making" $ARCH "static library: " ${LIBNAME}.a
|
||||
LINK="ar"
|
||||
OPTS="-ru"
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
# make lib
|
||||
${LINK} ${OPTS} ${LIBNAME}.a ${OBJECTS}
|
||||
ranlib ${LIBNAME}.a
|
||||
@@ -746,6 +813,9 @@ case $ARCH in
|
||||
FINAL_LIBS=${LIBNAME}.a
|
||||
else
|
||||
OPTS="-shared -Wl,-export-all -Wl,--out-implib=${LIBNAME}-${MAJOR}.dll.a"
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
echo "mklib: Making" $ARCH "shared library: " ${LIBNAME}-${MAJOR}.dll
|
||||
|
||||
if [ $CPLUSPLUS = 1 ] ; then
|
||||
|
@@ -4,11 +4,18 @@ include $(TOP)/configs/default
|
||||
|
||||
CONFIG_NAME = darwin
|
||||
|
||||
DEFINES = -D_DARWIN_C_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L \
|
||||
-D_SVID_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE \
|
||||
-DPTHREADS -DGLX_ALIAS_UNSUPPORTED -DGLX_INDIRECT_RENDERING
|
||||
|
||||
# Compiler and flags
|
||||
CC = cc
|
||||
CXX = cc
|
||||
CFLAGS = -I/usr/X11R6/include -O3 -fPIC -fno-common -ffast-math -funroll-loops -fexpensive-optimizations -no-cpp-precomp -dynamic -Ddarwin
|
||||
CXXFLAGS = -I/usr/X11R6/include -O3 -fPIC -fno-common -ffast-math -funroll-loops -fexpensive-optimizations -no-cpp-precomp -dynamic -Ddarwin
|
||||
CC = gcc
|
||||
CXX = gcc
|
||||
CFLAGS = -I/usr/X11/include -O3 -fPIC -fno-common -ffast-math -funroll-loops -fexpensive-optimizations -no-cpp-precomp -dynamic -Ddarwin $(DEFINES)
|
||||
CXXFLAGS = -I/usr/X11/include -O3 -fPIC -fno-common -ffast-math -funroll-loops -fexpensive-optimizations -no-cpp-precomp -dynamic -Ddarwin $(DEFINES)
|
||||
|
||||
CFLAGS += $(RC_CFLAGS)
|
||||
CXXFLAGS += $(RC_CFLAGS)
|
||||
|
||||
# Work around aliasing bugs - developers should comment this out
|
||||
CFLAGS += -fno-strict-aliasing
|
||||
@@ -21,13 +28,13 @@ GLUT_LIB_NAME = libglut.dylib
|
||||
GLW_LIB_NAME = libGLw.dylib
|
||||
OSMESA_LIB_NAME = libOSMesa.dylib
|
||||
|
||||
GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread
|
||||
GL_LIB_DEPS = -L/usr/X11/lib -lX11 -lXext -lm -lpthread
|
||||
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -lGL
|
||||
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -lGL
|
||||
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -lGL -lGLU -L/usr/X11R6/lib -lX11 -lXmu -lXi -lXext
|
||||
GLW_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXt $(TOP)/lib/GL.dylib
|
||||
APP_LIB_DEPS = -L$(TOP)/lib -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm
|
||||
APP_LIB_DEPS = -L$(TOP)/lib -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11/lib -lX11 -lXmu -lXt -lXi -lm
|
||||
|
||||
# omit glw lib for now:
|
||||
SRC_DIRS = mesa glu glut/glx
|
||||
|
||||
SRC_DIRS = glx/x11 glu glut/glx mesa
|
||||
DRIVER_DIRS = osmesa
|
||||
|
7
configs/darwin-fat-32bit
Normal file
7
configs/darwin-fat-32bit
Normal file
@@ -0,0 +1,7 @@
|
||||
# Configuration for Darwin / MacOS X, making 32bit fat dynamic libs
|
||||
|
||||
RC_CFLAGS=-arch ppc -arch i386
|
||||
|
||||
include $(TOP)/configs/darwin
|
||||
|
||||
CONFIG_NAME = darwin-fat-32bit
|
7
configs/darwin-fat-all
Normal file
7
configs/darwin-fat-all
Normal file
@@ -0,0 +1,7 @@
|
||||
# Configuration for Darwin / MacOS X, making 32bit and 64bit fat dynamic libs
|
||||
|
||||
RC_CFLAGS=-arch ppc -arch i386 -arch ppc64 -arch x86_64
|
||||
|
||||
include $(TOP)/configs/darwin
|
||||
|
||||
CONFIG_NAME = darwin-fat-all
|
@@ -1,37 +0,0 @@
|
||||
# Configuration for Darwin / MacOS X, making dynamic libs
|
||||
|
||||
include $(TOP)/configs/default
|
||||
|
||||
CONFIG_NAME = darwin
|
||||
|
||||
# Compiler and flags
|
||||
CC = cc
|
||||
CXX = cc
|
||||
CFLAGS = -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk \
|
||||
-I/usr/X11R6/include -O3 -fPIC -fno-common -ffast-math -funroll-loops -fexpensive-optimizations -no-cpp-precomp -dynamic -Ddarwin
|
||||
CXXFLAGS = -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk \
|
||||
-I/usr/X11R6/include -O3 -fPIC -fno-common -ffast-math -funroll-loops -fexpensive-optimizations -no-cpp-precomp -dynamic -Ddarwin
|
||||
|
||||
MKLIB_OPTIONS = -archopt "-isysroot /Developer/SDKs/MacOSX10.4u.sdk"
|
||||
|
||||
# Work around aliasing bugs - developers should comment this out
|
||||
CFLAGS += -fno-strict-aliasing
|
||||
CXXFLAGS += -fno-strict-aliasing
|
||||
|
||||
# Library names (actual file names)
|
||||
GL_LIB_NAME = libGL.dylib
|
||||
GLU_LIB_NAME = libGLU.dylib
|
||||
GLUT_LIB_NAME = libglut.dylib
|
||||
GLW_LIB_NAME = libGLw.dylib
|
||||
OSMESA_LIB_NAME = libOSMesa.dylib
|
||||
|
||||
GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread
|
||||
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -lGL
|
||||
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -lGL
|
||||
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -lGL -lGLU -L/usr/X11R6/lib -lX11 -lXmu -lXi -lXext
|
||||
GLW_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXt $(TOP)/lib/GL.dylib
|
||||
APP_LIB_DEPS = -L$(TOP)/lib -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm
|
||||
|
||||
# omit glw lib for now:
|
||||
SRC_DIRS = mesa glu glut/glx
|
||||
|
@@ -3,7 +3,6 @@
|
||||
CONFIG_NAME = debian-default
|
||||
|
||||
OPT_FLAGS = -O2 -g
|
||||
CFLAGS += -fno-strict-aliasing
|
||||
|
||||
# override settings in configs/linux-x86-64
|
||||
LIB_DIR = lib
|
||||
|
@@ -10,7 +10,7 @@ CONFIG_NAME = default
|
||||
# Version info
|
||||
MESA_MAJOR=7
|
||||
MESA_MINOR=0
|
||||
MESA_TINY=2
|
||||
MESA_TINY=3
|
||||
|
||||
# external projects. This should be useless now that we use libdrm.
|
||||
DRM_SOURCE_PATH=$(TOP)/../drm
|
||||
@@ -30,9 +30,11 @@ MKDEP_OPTIONS = -fdepend
|
||||
MAKE = make
|
||||
INSTALL = $(TOP)/bin/minstall
|
||||
|
||||
# Python and flags (generally only needed by the developers)
|
||||
# Tools for regenerating glapi (generally only needed by the developers)
|
||||
PYTHON2 = python
|
||||
PYTHON_FLAGS = -t -O -O
|
||||
INDENT = indent
|
||||
INDENT_FLAGS = -i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool
|
||||
|
||||
# Library names (base name)
|
||||
GL_LIB = GL
|
||||
|
@@ -22,4 +22,5 @@ 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
|
||||
APP_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXmu -lXt -lXi -lpthread \
|
||||
-lstdc++ -lm
|
||||
|
@@ -20,4 +20,5 @@ OSMESA_LIB_DEPS =
|
||||
GLU_LIB_DEPS =
|
||||
GLUT_LIB_DEPS =
|
||||
GLW_LIB_DEPS =
|
||||
APP_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXmu -lXt -lXi -lpthread -lstdc++ -lm
|
||||
APP_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXmu -lXt -lXi -lpthread \
|
||||
-lstdc++ -lm
|
||||
|
@@ -20,4 +20,5 @@ OSMESA_LIB_DEPS =
|
||||
GLU_LIB_DEPS =
|
||||
GLUT_LIB_DEPS =
|
||||
GLW_LIB_DEPS =
|
||||
APP_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXmu -lXt -lXi -lpthread -lstdc++ -lm
|
||||
APP_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXmu -lXt -lXi -lpthread \
|
||||
-lstdc++ -lm
|
||||
|
57
debian/changelog
vendored
57
debian/changelog
vendored
@@ -1,3 +1,60 @@
|
||||
mesa (7.0.3-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
* Only call ProgramStringNotify if program parsing succeeded,
|
||||
closes: #473551.
|
||||
|
||||
-- Brice Goglin <bgoglin@debian.org> Fri, 11 Apr 2008 08:42:37 +0200
|
||||
|
||||
mesa (7.0.3~rc2-2) unstable; urgency=low
|
||||
|
||||
* Pull from mesa_7_0_branch (1e83d70b).
|
||||
* Fixes regression in the i965 dri driver (closes: #470984, #470084)
|
||||
* Update 02_use-ieee-fp-on-s390-and-m68k.patch.
|
||||
* Change libgl1-mesa-swx11-i686's pre-dependency on libgl1-mesa-swx11 to a
|
||||
regular versioned dependency, and add ${shlibs:Depends}.
|
||||
|
||||
-- Julien Cristau <jcristau@debian.org> Mon, 31 Mar 2008 16:47:31 +0200
|
||||
|
||||
mesa (7.0.3~rc2-1) unstable; urgency=low
|
||||
|
||||
* New upstream release candidate.
|
||||
+ enable user-defined clip planes for R300 (closes: #408679)
|
||||
+ 03_optional-progs-and-install.patch: partly applied upstream, fixed up
|
||||
* Stop building with -O0 on hppa. Bug #451047 should be fixed in recent gcc
|
||||
versions.
|
||||
|
||||
-- Julien Cristau <jcristau@debian.org> Sun, 24 Feb 2008 10:22:54 +0100
|
||||
|
||||
mesa (7.0.2-4) unstable; urgency=low
|
||||
|
||||
* Update to mesa_7_0_branch head (commit 48ae5cf0).
|
||||
* Add Vcs-Git, Vcs-Browser and Homepage fields in debian/control.
|
||||
|
||||
-- Julien Cristau <jcristau@debian.org> Thu, 17 Jan 2008 22:23:06 +0100
|
||||
|
||||
mesa (7.0.2-3) unstable; urgency=low
|
||||
|
||||
* Update to mesa_7_0_branch head (commit 0107acde).
|
||||
* Bump Standards-Version to 3.7.3.
|
||||
* Move libgl1-mesa-swx11-dbg, mesa-common-dev and libosmesa6-dev to section
|
||||
libdevel.
|
||||
* libgl1-mesa-swx11 conflicts with libgl1-mesa-glx. Move it and
|
||||
libgl1-mesa-swx11-dev to priority extra.
|
||||
* Fix typo in mesa-common-dev's long description.
|
||||
|
||||
-- Julien Cristau <jcristau@debian.org> Tue, 18 Dec 2007 19:13:18 +0100
|
||||
|
||||
mesa (7.0.2-2) unstable; urgency=low
|
||||
|
||||
[ Julien Cristau ]
|
||||
* Don't set -fno-strict-aliasing in configs/debian-default. It is set
|
||||
upstream now.
|
||||
* Workaround gcc ICE on hppa: build libOSMesa with -O0 (see bug#451047).
|
||||
* Add build-dep on libxext-dev. Thanks, Timo Aaltonen!
|
||||
|
||||
-- Brice Goglin <bgoglin@debian.org> Tue, 13 Nov 2007 21:43:40 +0100
|
||||
|
||||
mesa (7.0.2-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
21
debian/control
vendored
21
debian/control
vendored
@@ -3,11 +3,15 @@ Section: graphics
|
||||
Priority: optional
|
||||
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
|
||||
Uploaders: Thierry Reding <thierry@gilfi.de>, Julien Cristau <jcristau@debian.org>, David Nusinow <dnusinow@debian.org>, Brice Goglin <bgoglin@debian.org>
|
||||
Standards-Version: 3.7.2
|
||||
Build-Depends: debhelper (>= 5), quilt (>= 0.40), pkg-config, libdrm-dev (>= 2.2.0) [!hurd-i386], libx11-dev, xutils-dev, x11proto-gl-dev (>= 1.4.8), libxxf86vm-dev, libexpat1-dev, lesstif2-dev, dpkg-dev (>= 1.13.19), libxfixes-dev, libxdamage-dev
|
||||
Standards-Version: 3.7.3
|
||||
Build-Depends: debhelper (>= 5), quilt (>= 0.40), pkg-config, libdrm-dev (>= 2.2.0) [!hurd-i386], libx11-dev, xutils-dev, x11proto-gl-dev (>= 1.4.8), libxxf86vm-dev, libexpat1-dev, lesstif2-dev, dpkg-dev (>= 1.13.19), libxfixes-dev, libxdamage-dev, libxext-dev
|
||||
Vcs-Git: git://git.debian.org/git/pkg-xorg/lib/mesa
|
||||
Vcs-Browser: http://git.debian.org/?p=pkg-xorg/lib/mesa.git
|
||||
Homepage: http://mesa3d.sourceforge.net/
|
||||
|
||||
Package: libgl1-mesa-swx11
|
||||
Section: libs
|
||||
Priority: extra
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, libosmesa6 (>= 6.5.2-1)
|
||||
Conflicts: mesag3-glide, mesag3-glide2, mesag3+ggi, libgl1, nvidia-glx, mesag3, libgl1-mesa-swrast
|
||||
@@ -28,7 +32,7 @@ Description: A free implementation of the OpenGL API -- runtime
|
||||
On Linux, this library is also known as libGL or libGL.so.1.
|
||||
|
||||
Package: libgl1-mesa-swx11-dbg
|
||||
Section: libs
|
||||
Section: libdevel
|
||||
Priority: extra
|
||||
Architecture: any
|
||||
Depends: libgl1-mesa-swx11 (= ${binary:Version})
|
||||
@@ -56,7 +60,7 @@ Package: libgl1-mesa-swx11-i686
|
||||
Section: libs
|
||||
Priority: extra
|
||||
Architecture: i386
|
||||
Pre-Depends: libgl1-mesa-swx11
|
||||
Depends: libgl1-mesa-swx11 (= ${binary:Version}), ${shlibs:Depends}
|
||||
Description: Mesa OpenGL runtime [i686 optimized]
|
||||
Mesa is a 3-D graphics library with an API which is very similar to
|
||||
that of OpenGL. To the extent that Mesa utilizes the OpenGL command
|
||||
@@ -78,6 +82,7 @@ Description: Mesa OpenGL runtime [i686 optimized]
|
||||
|
||||
Package: libgl1-mesa-swx11-dev
|
||||
Section: libdevel
|
||||
Priority: extra
|
||||
Architecture: any
|
||||
Depends: libgl1-mesa-swx11 (= ${binary:Version}), libc6-dev, libx11-dev, libxext6, mesa-common-dev (= ${source:Version})
|
||||
Provides: libgl-dev, mesag-dev, libgl1-mesa-swrast-dev
|
||||
@@ -229,14 +234,14 @@ Description: A free implementation of the OpenGL API -- GLX development files
|
||||
package.
|
||||
|
||||
Package: mesa-common-dev
|
||||
Section: devel
|
||||
Section: libdevel
|
||||
Architecture: all
|
||||
Replaces: xlibmesa-gl-dev (<< 1:7), xlibosmesa-dev, libgl1-mesa-swx11-dev (<< 6.5.2), libgl1-mesa-dev (<< 6.5.2)
|
||||
Depends: libx11-dev
|
||||
Description: Developer documentation for Mesa
|
||||
This package includes the specifications for the Mesa-specific OpenGL
|
||||
extensions, the complete set of release release notes and the
|
||||
development header files common to all Mesa packages.
|
||||
extensions, the complete set of release notes and the development header
|
||||
files common to all Mesa packages.
|
||||
|
||||
Package: libosmesa6
|
||||
Section: libs
|
||||
@@ -252,7 +257,7 @@ Description: Mesa Off-screen rendering extension
|
||||
renderer which do not require external libraries to work.
|
||||
|
||||
Package: libosmesa6-dev
|
||||
Section: devel
|
||||
Section: libdevel
|
||||
Architecture: any
|
||||
Depends: libosmesa6 (= ${binary:Version}), mesa-common-dev (= ${source:Version}) | libgl-dev
|
||||
Conflicts: xlibosmesa-dev, libosmesa4-dev, libosmesa-dev
|
||||
|
@@ -12,7 +12,7 @@ Index: mesa/src/mesa/main/imports.h
|
||||
#if defined(__i386__) || defined(__386__) || defined(__sparc__) || \
|
||||
- defined(__s390x__) || defined(__powerpc__) || \
|
||||
+ defined(__s390__) || defined(__s390x__) || defined(__powerpc__) || \
|
||||
defined(__amd64__) || \
|
||||
defined(__amd64__) || defined(__x86_64__) || \
|
||||
+ defined(__m68k__) || \
|
||||
defined(ia64) || defined(__ia64__) || \
|
||||
defined(__hppa__) || defined(hpux) || \
|
||||
|
@@ -10,39 +10,31 @@ Also remove references to GLU library since it is not required
|
||||
and we don't actually build it at this point.
|
||||
|
||||
|
||||
Index: mesa/progs/xdemos/Makefile
|
||||
===================================================================
|
||||
--- mesa.orig/progs/xdemos/Makefile 2007-11-11 00:34:12.000000000 +0100
|
||||
+++ mesa/progs/xdemos/Makefile 2007-11-11 02:07:52.000000000 +0100
|
||||
@@ -6,11 +6,11 @@
|
||||
--- mesa.orig/progs/xdemos/Makefile
|
||||
+++ mesa/progs/xdemos/Makefile
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
INCDIR = $(TOP)/include
|
||||
LIBS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) $(APP_LIB_DEPS)
|
||||
|
||||
-LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME)
|
||||
+LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
|
||||
|
||||
-LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS)
|
||||
+LIBS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) $(APP_LIB_DEPS)
|
||||
|
||||
-PROGS = glthreads \
|
||||
+PROGS ?= glthreads \
|
||||
-PROGS = \
|
||||
+PROGS ?= \
|
||||
glthreads \
|
||||
glxdemo \
|
||||
glxgears \
|
||||
glxgears_fbconfig \
|
||||
@@ -46,6 +46,9 @@
|
||||
@@ -55,6 +55,11 @@
|
||||
extra: $(EXTRA_PROGS)
|
||||
|
||||
default: $(PROGS)
|
||||
|
||||
+install: $(PROGS)
|
||||
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/bin
|
||||
+ $(INSTALL) -m 755 $(PROGS) $(DESTDIR)$(INSTALL_DIR)/bin
|
||||
|
||||
+
|
||||
+
|
||||
clean:
|
||||
-rm -f $(PROGS)
|
||||
Index: mesa/progs/Makefile
|
||||
===================================================================
|
||||
--- mesa.orig/progs/Makefile 2007-11-11 00:34:12.000000000 +0100
|
||||
+++ mesa/progs/Makefile 2007-11-11 02:06:48.000000000 +0100
|
||||
-rm -f $(PROGS) $(EXTRA_PROGS)
|
||||
-rm -f *.o *~
|
||||
--- mesa.orig/progs/Makefile
|
||||
+++ mesa/progs/Makefile
|
||||
@@ -21,8 +21,12 @@
|
||||
fi \
|
||||
done
|
||||
|
@@ -342,7 +342,7 @@ will fix the problem.
|
||||
|
||||
<h2>4.1 How can I contribute?</a></h2>
|
||||
<p>
|
||||
First, join the <a href="http://www.mesa3d.org/lists.html>Mesa3d-dev
|
||||
First, join the <a href="http://www.mesa3d.org/lists.html">Mesa3d-dev
|
||||
mailing list</a>.
|
||||
That's where Mesa development is discussed.
|
||||
</a></p>
|
||||
|
@@ -1,15 +1,15 @@
|
||||
<html>
|
||||
<html><head><title>Mesa fbdev/DRI Environment</title>
|
||||
|
||||
|
||||
<TITLE>Mesa fbdev/DRI Environment</TITLE>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css"></head>
|
||||
|
||||
<BODY>
|
||||
<body>
|
||||
|
||||
<center><H1>Mesa fbdev/DRI Drivers</H1></center>
|
||||
<center><h1>Mesa fbdev/DRI Drivers</h1></center>
|
||||
<br>
|
||||
|
||||
|
||||
<H1>1. Introduction</H1>
|
||||
<h1>1. Introduction</h1>
|
||||
|
||||
<p>
|
||||
The fbdev/DRI environment supports hardware-accelerated 3D rendering without
|
||||
@@ -22,54 +22,131 @@ Contributors to this project include Jon Smirl, Keith Whitwell and Dave Airlie.
|
||||
|
||||
<p>
|
||||
Applications in the fbdev/DRI environment use
|
||||
the <a href="MiniGXL.html"> MiniGLX</a> interface to choose pixel
|
||||
the <a href="http://www.nabble.com/file/p15480666/MiniGXL.html"> MiniGLX</a> interface to choose pixel
|
||||
formats, create rendering contexts, etc. It's a subset of the GLX and
|
||||
Xlib interfaces allowing some degree of application portability between
|
||||
the X and X-less environments.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Some of the files needed for building this configuration are not included
|
||||
in the normal Mesa releases so you'll need to get the latest sources
|
||||
sources from the <a href="repository.html">git repository</a>.
|
||||
Note that this environment is not well-supported and these instructions
|
||||
may not be completely up to date.
|
||||
</p>
|
||||
<br>
|
||||
|
||||
|
||||
|
||||
<h1>2. Compilation</h1>
|
||||
|
||||
<p>
|
||||
You'll need the DRM and pciaccess libraries. Check with:
|
||||
|
||||
<h2>2.1 glxproto</h2>
|
||||
|
||||
Get <a href="http://cvsweb.xfree86.org/cvsweb/*checkout*/xc/include/GL/glxproto.h?rev=1.9">glxproto.h</a>. Copy it to the /mesa/include/GL/ directory.
|
||||
</p>
|
||||
<pre>
|
||||
pkg-config --modversion libdrm
|
||||
pkg-config --modversion pciaccess
|
||||
|
||||
<h2>2.2 libpciaccess</h2>
|
||||
<p>
|
||||
Check if you have libpciaccess installed:
|
||||
</p>
|
||||
|
||||
<pre>pkg-config --modversion pciaccess
|
||||
</pre>
|
||||
<p>
|
||||
If not you can download the latest code from:
|
||||
</p>
|
||||
<pre> git clone git://anongit.freedesktop.org/git/xorg/lib/libpciaccess
|
||||
</pre>
|
||||
<p>
|
||||
Run autogen.sh to generate a configure file. autogen.sh uses autoconf
|
||||
utility. This utility may not be installed with your linux distro,
|
||||
check if it is available. if not you can use your package manager or
|
||||
type:
|
||||
</p>
|
||||
<pre>sudo apt-get install autoconf
|
||||
</pre>
|
||||
The next step is to install the libpciaccess library.
|
||||
<pre>make
|
||||
make install
|
||||
</pre>
|
||||
<p> Now your libpciaccess.a file is saved into /usr/local/lib
|
||||
directory. If you have a libpciaccess.a in /usr/lib you may simply copy
|
||||
and overwrite these files. Don't forget to copy libpciaccess.pc file to
|
||||
/usr/lib/pkgconfig, which is also located in /usr/local/lib/pkgconfig/.
|
||||
Or you may use the following system variables:
|
||||
</p>
|
||||
<pre>export LD_LIBRARY_PATH=/usr/local/lib
|
||||
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
You can get them from the git repository with:
|
||||
<h2>2.3 drm</h2>
|
||||
|
||||
<p>The next step is to compile the drm. DRM consists of two seperate parts,
|
||||
the DRM client library(lindrm.so) and kernel device module(such as
|
||||
radeon.ko). We need to make a small change in kernel device module. So
|
||||
you need to download the kernel source. You may choose the nearest
|
||||
mirror from www.kernel.org, or you are using Fedora Core 5, for
|
||||
example, you may need to install RPMs such as:
|
||||
kernel-smp-devel-2.16.15-1.2054_FC5.i686.rpm
|
||||
kernel-devel-2.6.15-1.2054_FC5.i686.rpm
|
||||
etc. You can find a detailed information <a href="http://www.howtoforge.com/kernel_compilation_fedora">here.</a>
|
||||
</p>
|
||||
|
||||
<p>You will find drm_drv.c at /usr/src/LINUX-VERSION/drivers/char/drm/. Edit this code and comment out the following part:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
git clone git://anongit.freedesktop.org/git/mesa/drm
|
||||
git clone git://anongit.freedesktop.org/git/xorg/lib/libpciaccess
|
||||
/* ||
|
||||
((ioctl->flags & DRM_MASTER) && !priv->master)*/
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
See the README files in those projects for build/install instructions.
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
Now you are ready to compile your kernel. If your kernel version is
|
||||
identical to the version you have compiled, you can simply over write
|
||||
your new "ko" files over older ones. If you have compiled a different
|
||||
kernel, you must configure your grub or lilo to be able to boot your
|
||||
new kernel. <p>
|
||||
You'll need fbdev header files. Check with:
|
||||
</p>
|
||||
<pre>
|
||||
ls -l /usr/include/linux/fb.h
|
||||
ls -l /usr/include/linux/fb.
|
||||
</pre>
|
||||
<p>This file may be missing if you have not installed linux header files.
|
||||
|
||||
<p>
|
||||
Compile Mesa with the 'linux-solo' configuration:
|
||||
|
||||
<h2>2.4 Mesa</h2>
|
||||
|
||||
</p><p>Get latest development Mesa sources from git repository
|
||||
(currently 7.1-prerelease)
|
||||
</p>
|
||||
<pre>
|
||||
make linux-solo
|
||||
git clone git://anongit.freedesktop.org/git/mesa/mesa
|
||||
</pre>
|
||||
|
||||
<p>You will need the makedepend utility which is a part of mesa project
|
||||
to build your linux-solo. You probably wont have this utility. You can
|
||||
download its source from following git repulsitory:
|
||||
</p>
|
||||
<pre>
|
||||
git clone git://anongit.freedesktop.org/git/xorg/util/makedepend
|
||||
</pre>
|
||||
|
||||
<p>Get the latest stable mesa version from SourceForge (currently 7.0.3)
|
||||
<a href="http://sourceforge.net/project/showfiles.php?group_id=3">http://sourceforge.net/project/showfiles.php?group_id=3</a>
|
||||
</p>
|
||||
|
||||
<p>Copy the miniglx folder from 7.1-prerelease to 7.0.3.
|
||||
You may also extract GLUT to 7.0.3 version at this step.
|
||||
</p>
|
||||
|
||||
<p>Edit linux-solo.conf at /conf directory, just only compile the
|
||||
graphics driver you need, delete the unwanted drivers names from the
|
||||
list(some drivers are causing problems...)
|
||||
</p>
|
||||
<pre>
|
||||
while(build==0)
|
||||
{
|
||||
make linux-solo
|
||||
|
||||
There will be some missing header files, copy them from 7.1-prerelease
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
@@ -77,22 +154,40 @@ When complete you should have the following:
|
||||
</p>
|
||||
<ul>
|
||||
<li>lib/libGL.so - the GL library which applications link with
|
||||
<li>lib/*_dri_so - DRI drivers
|
||||
<li>lib/miniglx.conf - sample MiniGLX config file
|
||||
<li>progs/miniglx/* - several MiniGLX sample programs
|
||||
</ul>
|
||||
</li><li>lib/*_dri_so - DRI drivers
|
||||
</li><li>lib/miniglx.conf - sample MiniGLX config file
|
||||
</li><li>progs/miniglx/* - several MiniGLX sample programs
|
||||
</li></ul>
|
||||
|
||||
To install these files into appropriate locations in system:
|
||||
<pre>
|
||||
make install
|
||||
</pre>
|
||||
|
||||
Now your openGL libraries are copied to /usr/local/lib and
|
||||
miniglx.conf is copied to /etc. You may copy them to /usr/lib and
|
||||
overwrite your old GL libraries. Or you may export following variable:
|
||||
|
||||
<pre>
|
||||
export LIBGL_DRIVERS_PATH=/usr/local/lib
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
|
||||
<h1>3. Using fbdev/DRI</h1>
|
||||
|
||||
<p>
|
||||
If an X server currently running, exit/stop it so you're working from
|
||||
the console.
|
||||
the console. Following command shuts down the x window and also the multi user support.
|
||||
</p>
|
||||
<pre>
|
||||
init 1
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>3.1 Load Kernel Modules</h2>
|
||||
<p>Also you may define the runlevel as 1 in "/etc/inittab". Your system
|
||||
will always start in single user mode and without x-window with this
|
||||
option set.
|
||||
</p><h2>3.1 Load Kernel Modules</h2>
|
||||
|
||||
<p>
|
||||
You'll need to load the kernel modules specific to your graphics hardware.
|
||||
@@ -106,8 +201,7 @@ As root, the kernel modules can be loaded as follows:
|
||||
<p>
|
||||
If you have Intel i915/i945 hardware:
|
||||
</p>
|
||||
<pre>
|
||||
modprobe agpgart # the AGP GART module
|
||||
<pre> modprobe agpgart # the AGP GART module
|
||||
modprobe intelfb # the Intel fbdev driver
|
||||
modprobe i915 # the i915/945 DRI kernel module
|
||||
</pre>
|
||||
@@ -115,8 +209,7 @@ If you have Intel i915/i945 hardware:
|
||||
<p>
|
||||
If you have ATI Radeon/R200 hardware:
|
||||
</p>
|
||||
<pre>
|
||||
modprobe agpgart # the AGP GART module
|
||||
<pre> modprobe agpgart # the AGP GART module
|
||||
modprobe radeonfb # the Radeon fbdev driver
|
||||
modprobe radeon # the Radeon DRI kernel module
|
||||
</pre>
|
||||
@@ -124,8 +217,7 @@ If you have ATI Radeon/R200 hardware:
|
||||
<p>
|
||||
If you have ATI Rage 128 hardware:
|
||||
</p>
|
||||
<pre>
|
||||
modprobe agpgart # the AGP GART module
|
||||
<pre> modprobe agpgart # the AGP GART module
|
||||
modprobe aty128fb # the Rage 128 fbdev driver
|
||||
modprobe r128 # the Rage 128 DRI kernel module
|
||||
</pre>
|
||||
@@ -133,8 +225,7 @@ If you have ATI Rage 128 hardware:
|
||||
<p>
|
||||
If you have Matrox G200/G400 hardware:
|
||||
</p>
|
||||
<pre>
|
||||
modprobe agpgart # the AGP GART module
|
||||
<pre> modprobe agpgart # the AGP GART module
|
||||
modprobe mgafb # the Matrox fbdev driver
|
||||
modprobe mga # the Matrox DRI kernel module
|
||||
</pre>
|
||||
@@ -142,8 +233,7 @@ If you have Matrox G200/G400 hardware:
|
||||
<p>
|
||||
To verify that the agpgart, fbdev and drm modules are loaded:
|
||||
</p>
|
||||
<pre>
|
||||
ls -l /dev/agpgart /dev/fb* /dev/dri
|
||||
<pre> ls -l /dev/agpgart /dev/fb* /dev/dri
|
||||
</pre>
|
||||
<p>
|
||||
Alternately, use lsmod to inspect the currently installed modules.
|
||||
@@ -154,16 +244,15 @@ If you have problems, look at the output of dmesg.
|
||||
<h2>3.2 Configuration File</h2>
|
||||
|
||||
<p>
|
||||
Copy the sample miniglx.conf to /etc/miniglx.conf and review/edit its contents.
|
||||
review/edit /etc/miniglx.conf.
|
||||
Alternately, the MINIGLX_CONF environment variable can be used to
|
||||
indicate the location of miniglx.conf
|
||||
</p>
|
||||
|
||||
To determine the pciBusID value, run lspci and examine the output.
|
||||
For example:
|
||||
</p>
|
||||
<pre>
|
||||
/sbin/lspci:
|
||||
<p></p>
|
||||
<pre> /sbin/lspci:
|
||||
00:02.0 VGA compatible controller: Intel Corporation 82915G/GV/910GL Express Chipset Family Graphics Controller (rev 04)
|
||||
</pre>
|
||||
<p>
|
||||
@@ -186,15 +275,13 @@ for example.
|
||||
Change to the <code>Mesa/progs/miniglx/</code> directory and
|
||||
start the sample_server program in the background:
|
||||
</p>
|
||||
<pre>
|
||||
./sample_server &
|
||||
<pre> ./sample_server &
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Then try running the <code>miniglxtest</code> program:
|
||||
</p>
|
||||
<pre>
|
||||
./miniglxtest
|
||||
<pre> ./miniglxtest
|
||||
</pre>
|
||||
<p>
|
||||
You should see a rotating quadrilateral which changes color as it rotates.
|
||||
@@ -205,7 +292,7 @@ It will exit automatically after a bit.
|
||||
If you run other tests in the miniglx/ directory, you may want to run
|
||||
them from a remote shell so that you can stop them with ctrl-C.
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<h1>4.0 Troubleshooting</h1>
|
||||
@@ -214,8 +301,7 @@ them from a remote shell so that you can stop them with ctrl-C.
|
||||
<li>
|
||||
If you try to run miniglxtest and get the following:
|
||||
<br>
|
||||
<pre>
|
||||
[miniglx] failed to probe chipset
|
||||
<pre> [miniglx] failed to probe chipset
|
||||
connect: Connection refused
|
||||
server connection lost
|
||||
</pre>
|
||||
@@ -229,7 +315,7 @@ It means that the sample_server process is not running.
|
||||
<h1>5.0 Programming Information</h1>
|
||||
|
||||
<p>
|
||||
OpenGL/Mesa is interfaced to fbdev via the <a href="MiniGLX.html">MiniGLX</a>
|
||||
OpenGL/Mesa is interfaced to fbdev via the <a href="http://www.nabble.com/file/p15480666/MiniGLX.html">MiniGLX</a>
|
||||
interface.
|
||||
MiniGLX is a subset of Xlib and GLX API functions which provides just
|
||||
enough functionality to setup OpenGL rendering and respond to simple
|
||||
@@ -250,5 +336,6 @@ See the <code>GL/miniglx.h</code> header file for details.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
21
docs/memory.html
Normal file
21
docs/memory.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<HTML>
|
||||
|
||||
<TITLE>Mesa News</TITLE>
|
||||
|
||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
|
||||
|
||||
<BODY>
|
||||
|
||||
<body bgcolor="#eeeeee">
|
||||
|
||||
<H1>DRI Memory Management</H1>
|
||||
|
||||
<p>
|
||||
Thomas Hellström's
|
||||
<a href="http://www.tungstengraphics.com/mm.pdf">Memory Management
|
||||
whitepaper</a> describes the goals, design and implementation of the
|
||||
new DRI memory management system.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -11,6 +11,30 @@
|
||||
<H1>News</H1>
|
||||
|
||||
|
||||
<h2>April 4, 2008</h2>
|
||||
<p>
|
||||
<a href="relnotes-7.0.3.html">Mesa 7.0.3</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>November 13, 2007</h2>
|
||||
|
||||
<p>
|
||||
Gallium3D is the codename for the new Mesa device driver architecture
|
||||
which is currently under development.
|
||||
A <a href="http://www.tungstengraphics.com/wiki/index.php/Gallium3D"
|
||||
target="_parent"> summary</a> of the architecture can be found on the
|
||||
Tungsten Graphics website.
|
||||
</p>
|
||||
<p>
|
||||
Gallium3D development is taking place on the <em>gallium-0.1</em> branch
|
||||
of the git repository.
|
||||
Currently, there's only a software-only driver and an Intel i915/945 driver
|
||||
but other drivers will be coming...
|
||||
</p>
|
||||
|
||||
|
||||
<h2>November 10, 2007</h2>
|
||||
<p>
|
||||
<a href="relnotes-7.0.2.html">Mesa 7.0.2</a> is released.
|
||||
|
75
docs/relnotes-7.0.3.html
Normal file
75
docs/relnotes-7.0.3.html
Normal file
@@ -0,0 +1,75 @@
|
||||
<HTML>
|
||||
|
||||
<TITLE>Mesa Release Notes</TITLE>
|
||||
|
||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
|
||||
|
||||
<BODY>
|
||||
|
||||
<body bgcolor="#eeeeee">
|
||||
|
||||
<H1>Mesa 7.0.3 Release Notes / April 4, 2008</H1>
|
||||
|
||||
<p>
|
||||
Mesa 7.0.3 is a stable release with bug fixes since version 7.0.2.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
<ul>
|
||||
<li>Added missing glw.pc.in file to release tarball
|
||||
<li>Fix GLUT/Fortran issues
|
||||
<li>GLSL gl_FrontLightModelProduct.sceneColor variable wasn't defined
|
||||
<li>Fix crash upon GLSL variable array indexes (not yet supported)
|
||||
<li>Two-sided stencil test didn't work in software rendering
|
||||
<li>Fix two-sided lighting bugs/crashes (bug 13368)
|
||||
<li>GLSL gl_FrontFacing didn't work properly
|
||||
<li>glGetActiveUniform returned incorrect sizes (bug 13751)
|
||||
<li>Fix several bugs relating to uniforms and attributes in GLSL API (Bruce Merry, bug 13753)
|
||||
<li>glTexImage3D(GL_PROXY_TEXTURE_3D) mis-set teximage depth field
|
||||
<li>Fixed GLX indirect vertex array rendering bug (14197)
|
||||
<li>Fixed crash when deleting framebuffer objects (bugs 13507, 14293)
|
||||
<li>User-defined clip planes enabled for R300 (bug 9871)
|
||||
<li>Fixed glBindTexture() crash upon bad target (bug 14514)
|
||||
<li>Fixed potential crash in glDrawPixels(GL_DEPTH_COMPONENT) (bug 13915)
|
||||
<li>Bad strings given to glProgramStringARB() didn't generate GL_INVALID_OPERATION
|
||||
<li>Fixed minor point rasterization regression (bug 11016)
|
||||
<li>state.texenv.color state var didn't work in GL_ARB_fragment_program (bug 14931)
|
||||
<li>glBitmap from a PBO didn't always work
|
||||
<li>glGetTexImage into a PBO didn't always work
|
||||
<li>Comments at the end of ARB vertex/fragment programs crashed the parser
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
<ul>
|
||||
<li>Updated glext.h to version 40
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<h2>Driver Status</h2>
|
||||
|
||||
<pre>
|
||||
Driver Status
|
||||
---------------------- ----------------------
|
||||
DRI drivers varies with the driver
|
||||
XMesa/GLX (on Xlib) implements OpenGL 2.1
|
||||
OSMesa (off-screen) implements OpenGL 2.1
|
||||
Windows/Win32 implements OpenGL 2.1
|
||||
Glide (3dfx Voodoo1/2) implements OpenGL 1.3
|
||||
SVGA unsupported
|
||||
Wind River UGL unsupported
|
||||
DJGPP unsupported
|
||||
GGI unsupported
|
||||
BeOS unsupported
|
||||
Allegro unsupported
|
||||
D3D unsupported
|
||||
</pre>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -20,6 +20,7 @@ The release notes summarize what's new or changed in each Mesa release.
|
||||
</p>
|
||||
|
||||
<UL>
|
||||
<LI><A HREF="relnotes-7.0.3.html">7.0.3 release notes</A>
|
||||
<LI><A HREF="relnotes-7.0.2.html">7.0.2 release notes</A>
|
||||
<LI><A HREF="relnotes-7.0.1.html">7.0.1 release notes</A>
|
||||
<LI><A HREF="relnotes-7.0.html">7.0 release notes</A>
|
||||
|
@@ -48,6 +48,7 @@ in Mesa:
|
||||
<li>The inverse trig functions asin(), acos(), and atan() are not implemented
|
||||
<li>The gl_Color and gl_SecondaryColor varying vars are interpolated
|
||||
without perspective correction
|
||||
<li>Floating point literal suffixes 'f' and 'F' aren't allowed.
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
|
@@ -46,9 +46,9 @@ extern "C" {
|
||||
/*************************************************************/
|
||||
|
||||
/* Header file version number, required by OpenGL ABI for Linux */
|
||||
/* glext.h last updated 2007/02/12 */
|
||||
/* glext.h last updated 2008/03/24 */
|
||||
/* Current version at http://www.opengl.org/registry/ */
|
||||
#define GL_GLEXT_VERSION 39
|
||||
#define GL_GLEXT_VERSION 40
|
||||
|
||||
#ifndef GL_VERSION_1_2
|
||||
#define GL_UNSIGNED_BYTE_3_3_2 0x8032
|
||||
@@ -3091,8 +3091,8 @@ extern "C" {
|
||||
#ifndef GL_EXT_framebuffer_blit
|
||||
#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
|
||||
#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
|
||||
#define GL_READ_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT
|
||||
#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CAA
|
||||
#define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT
|
||||
#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
|
||||
#endif
|
||||
|
||||
#ifndef GL_EXT_framebuffer_multisample
|
||||
@@ -3379,6 +3379,9 @@ extern "C" {
|
||||
#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E
|
||||
#endif
|
||||
|
||||
#ifndef GL_GREMEDY_frame_terminator
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************/
|
||||
|
||||
@@ -7252,6 +7255,14 @@ typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint
|
||||
typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
|
||||
#endif
|
||||
|
||||
#ifndef GL_GREMEDY_frame_terminator
|
||||
#define GL_GREMEDY_frame_terminator 1
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glFrameTerminatorGREMEDY (void);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@@ -75,7 +75,7 @@ typedef void (GLUTCALLBACK *GLUTmenuStatusFCB) (int *, int *, int *);
|
||||
typedef void (GLUTCALLBACK *GLUTidleFCB) (void);
|
||||
|
||||
/* Functions that set and return Fortran callback functions. */
|
||||
GLUTAPI void* APIENTRY __glutGetFCB(int which);
|
||||
GLUTAPI void APIENTRY __glutSetFCB(int which, void *func);
|
||||
GLUTAPI GLUTproc APIENTRY __glutGetFCB(int which);
|
||||
GLUTAPI void APIENTRY __glutSetFCB(int which, GLUTproc func);
|
||||
|
||||
#endif /* __glutf90_h__ */
|
||||
|
@@ -16,6 +16,10 @@
|
||||
#include "trackball.h"
|
||||
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.14159265358979323846
|
||||
#endif
|
||||
|
||||
#define DEG_TO_RAD(DEG) ((DEG) * M_PI / 180.0)
|
||||
|
||||
#define TEXTURE_FILE "../images/reflect.rgb"
|
||||
|
65
progs/trivial/.gitignore
vendored
65
progs/trivial/.gitignore
vendored
@@ -1,65 +0,0 @@
|
||||
clear
|
||||
dlist-dangling
|
||||
dlist-edgeflag
|
||||
dlist-edgeflag-dangling
|
||||
drawarrays
|
||||
drawelements
|
||||
drawrange
|
||||
line
|
||||
line-clip
|
||||
line-cull
|
||||
line-userclip
|
||||
line-userclip-clip
|
||||
line-userclip-nop
|
||||
line-userclip-nop-clip
|
||||
lineloop
|
||||
lineloop-clip
|
||||
point
|
||||
point-clip
|
||||
point-param
|
||||
point-wide
|
||||
poly
|
||||
poly-flat
|
||||
poly-unfilled
|
||||
quad
|
||||
quad-clip
|
||||
quad-clip-all-vertices
|
||||
quad-clip-nearplane
|
||||
quad-degenerate
|
||||
quad-flat
|
||||
quad-offset-factor
|
||||
quad-offset-unfilled
|
||||
quad-offset-units
|
||||
quad-tex-2d
|
||||
quad-tex-3d
|
||||
quad-tex-pbo
|
||||
quad-unfilled
|
||||
quads
|
||||
quadstrip
|
||||
quadstrip-flat
|
||||
readtex.c
|
||||
readtex.h
|
||||
tri
|
||||
tri-blend
|
||||
tri-clip
|
||||
tri-cull
|
||||
tri-dlist
|
||||
tri-edgeflag
|
||||
tri-flat
|
||||
tri-flat-clip
|
||||
tri-tex-3d
|
||||
tri-unfilled
|
||||
tri-unfilled-clip
|
||||
tri-unfilled-smooth
|
||||
tri-unfilled-userclip
|
||||
tri-userclip
|
||||
tristrip
|
||||
tristrip-clip
|
||||
vbo-drawarrays
|
||||
vbo-drawelements
|
||||
vbo-drawrange
|
||||
vp-array
|
||||
vp-clip
|
||||
vp-line-clip
|
||||
vp-tri
|
||||
vp-unfilled
|
@@ -6,11 +6,12 @@ include $(TOP)/configs/current
|
||||
|
||||
INCDIR = $(TOP)/include
|
||||
|
||||
LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME)
|
||||
LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
|
||||
|
||||
LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS)
|
||||
LIBS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) $(APP_LIB_DEPS)
|
||||
|
||||
PROGS = glthreads \
|
||||
PROGS = \
|
||||
glthreads \
|
||||
glxdemo \
|
||||
glxgears \
|
||||
glxgears_fbconfig \
|
||||
@@ -27,10 +28,14 @@ PROGS = glthreads \
|
||||
pbdemo \
|
||||
wincopy \
|
||||
xfont \
|
||||
xrotfontdemo \
|
||||
yuvrect_client
|
||||
xrotfontdemo
|
||||
|
||||
# Don't build these by default because of extra library dependencies
|
||||
EXTRA_PROGS = \
|
||||
shape \
|
||||
yuvrect_client \
|
||||
xdemo
|
||||
|
||||
# omit this XMesa API demo: xdemo
|
||||
|
||||
|
||||
##### RULES #####
|
||||
@@ -47,8 +52,11 @@ PROGS = glthreads \
|
||||
default: $(PROGS)
|
||||
|
||||
|
||||
extra: $(EXTRA_PROGS)
|
||||
|
||||
|
||||
clean:
|
||||
-rm -f $(PROGS)
|
||||
-rm -f $(PROGS) $(EXTRA_PROGS)
|
||||
-rm -f *.o *~
|
||||
|
||||
|
||||
@@ -83,3 +91,6 @@ xuserotfont.o: xuserotfont.c xuserotfont.h
|
||||
xrotfontdemo.o: xrotfontdemo.c xuserotfont.h
|
||||
$(CC) -c -I. -I$(INCDIR) $(X11_INCLUDES) $(CFLAGS) xrotfontdemo.c
|
||||
|
||||
yuvrect_client: yuvrect_client.c
|
||||
$(CC) -I$(INCDIR) $(X11_INCLUDES) $(CFLAGS) $< $(LDFLAGS) $(LIBS) -l$(GLU_LIB) -o $@
|
||||
|
||||
|
@@ -505,7 +505,7 @@ main(int argc, char *argv[])
|
||||
for (i = 0; i < numThreads; i++) {
|
||||
pthread_create(&WinThreads[i].Thread, NULL, thread_function,
|
||||
(void*) &WinThreads[i]);
|
||||
printf("glthreads: Created thread %u\n", (unsigned int) WinThreads[i].Thread);
|
||||
printf("glthreads: Created thread %p\n", WinThreads[i].Thread);
|
||||
}
|
||||
|
||||
if (MultiDisplays)
|
||||
|
@@ -596,7 +596,7 @@ get_visual_attribs(Display *dpy, XVisualInfo *vInfo,
|
||||
|
||||
/* multisample attribs */
|
||||
#ifdef GLX_ARB_multisample
|
||||
if (ext && strstr(ext, "GLX_ARB_multisample") == 0) {
|
||||
if (ext && strstr(ext, "GLX_ARB_multisample")) {
|
||||
glXGetConfig(dpy, vInfo, GLX_SAMPLE_BUFFERS_ARB, &attribs->numMultisample);
|
||||
glXGetConfig(dpy, vInfo, GLX_SAMPLES_ARB, &attribs->numSamples);
|
||||
}
|
||||
|
@@ -47,7 +47,6 @@ PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
|
||||
#include <GL/glx.h>
|
||||
#include <GL/glu.h>
|
||||
#include <X11/keysym.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
@@ -134,7 +133,7 @@ int main(int argc, char** argv) {
|
||||
|
||||
/* set up viewing parameters */
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
gluPerspective(20, 1, 0.1, 20);
|
||||
glFrustum(-1, 1, -1, 1, 6, 20);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glTranslatef(0, 0, -15);
|
||||
|
||||
|
@@ -34,7 +34,6 @@
|
||||
static int Width=500, Height=500;
|
||||
|
||||
static float Xangle = 0.0, Yangle = 0.0;
|
||||
static int Redraw = 0;
|
||||
static int Sides = 5;
|
||||
static int MinSides = 3;
|
||||
static int MaxSides = 20;
|
||||
|
@@ -36,6 +36,7 @@ SOURCES = \
|
||||
glut_dstr.c \
|
||||
glut_event.c \
|
||||
glut_ext.c \
|
||||
glut_fcb.c \
|
||||
glut_fullscrn.c \
|
||||
glut_gamemode.c \
|
||||
glut_get.c \
|
||||
|
@@ -172,10 +172,14 @@ handleTimeouts(void)
|
||||
GETTIMEOFDAY(&now);
|
||||
while (IS_AT_OR_AFTER(__glutTimerList->timeout, now)) {
|
||||
timer = __glutTimerList;
|
||||
__glutTimerList = timer->next;
|
||||
/* call the timer function */
|
||||
timer->func(timer->value);
|
||||
/* remove from the linked list */
|
||||
__glutTimerList = timer->next;
|
||||
/* put this timer on the "free" list */
|
||||
timer->next = freeTimerList;
|
||||
freeTimerList = timer;
|
||||
|
||||
if (!__glutTimerList)
|
||||
break;
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@
|
||||
/* Set a Fortran callback function. */
|
||||
|
||||
void APIENTRY
|
||||
__glutSetFCB(int which, void *func)
|
||||
__glutSetFCB(int which, GLUTproc func)
|
||||
{
|
||||
#ifdef SUPPORT_FORTRAN
|
||||
switch (which) {
|
||||
@@ -100,61 +100,61 @@ __glutSetFCB(int which, void *func)
|
||||
|
||||
/* Get a Fortran callback function. */
|
||||
|
||||
void* APIENTRY
|
||||
GLUTproc APIENTRY
|
||||
__glutGetFCB(int which)
|
||||
{
|
||||
#ifdef SUPPORT_FORTRAN
|
||||
switch (which) {
|
||||
case GLUT_FCB_DISPLAY:
|
||||
return (void *) __glutCurrentWindow->fdisplay;
|
||||
return __glutCurrentWindow->fdisplay;
|
||||
case GLUT_FCB_RESHAPE:
|
||||
return (void *) __glutCurrentWindow->freshape;
|
||||
return __glutCurrentWindow->freshape;
|
||||
case GLUT_FCB_MOUSE:
|
||||
return (void *) __glutCurrentWindow->fmouse;
|
||||
return __glutCurrentWindow->fmouse;
|
||||
case GLUT_FCB_MOTION:
|
||||
return (void *) __glutCurrentWindow->fmotion;
|
||||
return __glutCurrentWindow->fmotion;
|
||||
case GLUT_FCB_PASSIVE:
|
||||
return (void *) __glutCurrentWindow->fpassive;
|
||||
return __glutCurrentWindow->fpassive;
|
||||
case GLUT_FCB_ENTRY:
|
||||
return (void *) __glutCurrentWindow->fentry;
|
||||
return __glutCurrentWindow->fentry;
|
||||
case GLUT_FCB_KEYBOARD:
|
||||
return (void *) __glutCurrentWindow->fkeyboard;
|
||||
return __glutCurrentWindow->fkeyboard;
|
||||
case GLUT_FCB_KEYBOARD_UP:
|
||||
return (void *) __glutCurrentWindow->fkeyboardUp;
|
||||
return __glutCurrentWindow->fkeyboardUp;
|
||||
case GLUT_FCB_WINDOW_STATUS:
|
||||
return (void *) __glutCurrentWindow->fwindowStatus;
|
||||
return __glutCurrentWindow->fwindowStatus;
|
||||
case GLUT_FCB_VISIBILITY:
|
||||
return (void *) __glutCurrentWindow->fvisibility;
|
||||
return __glutCurrentWindow->fvisibility;
|
||||
case GLUT_FCB_SPECIAL:
|
||||
return (void *) __glutCurrentWindow->fspecial;
|
||||
return __glutCurrentWindow->fspecial;
|
||||
case GLUT_FCB_SPECIAL_UP:
|
||||
return (void *) __glutCurrentWindow->fspecialUp;
|
||||
return __glutCurrentWindow->fspecialUp;
|
||||
case GLUT_FCB_BUTTON_BOX:
|
||||
return (void *) __glutCurrentWindow->fbuttonBox;
|
||||
return __glutCurrentWindow->fbuttonBox;
|
||||
case GLUT_FCB_DIALS:
|
||||
return (void *) __glutCurrentWindow->fdials;
|
||||
return __glutCurrentWindow->fdials;
|
||||
case GLUT_FCB_SPACE_MOTION:
|
||||
return (void *) __glutCurrentWindow->fspaceMotion;
|
||||
return __glutCurrentWindow->fspaceMotion;
|
||||
case GLUT_FCB_SPACE_ROTATE:
|
||||
return (void *) __glutCurrentWindow->fspaceRotate;
|
||||
return __glutCurrentWindow->fspaceRotate;
|
||||
case GLUT_FCB_SPACE_BUTTON:
|
||||
return (void *) __glutCurrentWindow->fspaceButton;
|
||||
return __glutCurrentWindow->fspaceButton;
|
||||
case GLUT_FCB_TABLET_MOTION:
|
||||
return (void *) __glutCurrentWindow->ftabletMotion;
|
||||
return __glutCurrentWindow->ftabletMotion;
|
||||
case GLUT_FCB_TABLET_BUTTON:
|
||||
return (void *) __glutCurrentWindow->ftabletButton;
|
||||
return __glutCurrentWindow->ftabletButton;
|
||||
case GLUT_FCB_JOYSTICK:
|
||||
#ifdef _WIN32
|
||||
return (void *) __glutCurrentWindow->fjoystick;
|
||||
return __glutCurrentWindow->fjoystick;
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
case GLUT_FCB_OVERLAY_DISPLAY:
|
||||
return (void *) __glutCurrentWindow->overlay->fdisplay;
|
||||
return __glutCurrentWindow->overlay->fdisplay;
|
||||
case GLUT_FCB_SELECT:
|
||||
return (void *) __glutCurrentMenu->fselect;
|
||||
return __glutCurrentMenu->fselect;
|
||||
case GLUT_FCB_TIMER:
|
||||
return (void *) __glutTimerList->ffunc;
|
||||
return __glutTimerList ? __glutTimerList->ffunc : NULL;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
@@ -72,6 +72,23 @@ tags:
|
||||
etags `find . -name \*.[ch]` `find ../include`
|
||||
|
||||
|
||||
# glut pkgconfig file
|
||||
pcedit = sed \
|
||||
-e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \
|
||||
-e 's,@LIB_DIR@,$(LIB_DIR),' \
|
||||
-e 's,@VERSION@,$(GLUT_MAJOR).$(GLUT_MINOR).$(GLUT_TINY),'
|
||||
glut.pc: glut.pc.in
|
||||
$(pcedit) $< > $@
|
||||
|
||||
install: glut.pc
|
||||
$(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GL
|
||||
$(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)
|
||||
$(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig
|
||||
$(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(DESTDIR)$(INSTALL_DIR)/include/GL
|
||||
$(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)
|
||||
$(INSTALL) -m 644 glut.pc $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig
|
||||
|
||||
|
||||
# Remove .o and backup files
|
||||
clean: depend
|
||||
-rm -f depend
|
||||
|
11
src/glut/mini/glut.pc.in
Normal file
11
src/glut/mini/glut.pc.in
Normal file
@@ -0,0 +1,11 @@
|
||||
prefix=@INSTALL_DIR@
|
||||
exec_prefix=${prefix}
|
||||
libdir=${exec_prefix}/@LIB_DIR@
|
||||
includedir=${prefix}/include
|
||||
|
||||
Name: glut
|
||||
Description: Mesa OpenGL Utility Toolkit library
|
||||
Requires: gl glu
|
||||
Version: @VERSION@
|
||||
Libs: -L${libdir} -lglut
|
||||
Cflags: -I${includedir}
|
@@ -7,5 +7,5 @@ Name: glw
|
||||
Description: Mesa OpenGL widget library
|
||||
Requires: gl
|
||||
Version: @VERSION@
|
||||
Libs: -L${libdir} -lGLU
|
||||
Libs: -L${libdir} -lGLw
|
||||
Cflags: -I${includedir}
|
||||
|
5914
src/glx/x11/indirect_dispatch.c
Normal file
5914
src/glx/x11/indirect_dispatch.c
Normal file
File diff suppressed because it is too large
Load Diff
1043
src/glx/x11/indirect_dispatch.h
Normal file
1043
src/glx/x11/indirect_dispatch.h
Normal file
File diff suppressed because it is too large
Load Diff
6076
src/glx/x11/indirect_dispatch_swap.c
Normal file
6076
src/glx/x11/indirect_dispatch_swap.c
Normal file
File diff suppressed because it is too large
Load Diff
832
src/glx/x11/indirect_reqsize.c
Normal file
832
src/glx/x11/indirect_reqsize.c
Normal file
@@ -0,0 +1,832 @@
|
||||
/* DO NOT EDIT - This file generated automatically by glX_proto_size.py (from Mesa) script */
|
||||
|
||||
/*
|
||||
* (C) Copyright IBM Corporation 2005
|
||||
* 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, sub license,
|
||||
* 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 (including the next
|
||||
* paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* IBM,
|
||||
* AND/OR THEIR SUPPLIERS 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.
|
||||
*/
|
||||
|
||||
|
||||
#include <GL/gl.h>
|
||||
#include "glxserver.h"
|
||||
#include "glxbyteorder.h"
|
||||
#include "indirect_size.h"
|
||||
#include "indirect_reqsize.h"
|
||||
|
||||
#define __GLX_PAD(x) (((x) + 3) & ~3)
|
||||
|
||||
#if defined(__CYGWIN__) || defined(__MINGW32__)
|
||||
# undef HAVE_ALIAS
|
||||
#endif
|
||||
#ifdef HAVE_ALIAS
|
||||
# define ALIAS2(from,to) \
|
||||
GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \
|
||||
__attribute__ ((alias( # to )));
|
||||
# define ALIAS(from,to) ALIAS2( from, __glX ## to ## ReqSize )
|
||||
#else
|
||||
# define ALIAS(from,to) \
|
||||
GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \
|
||||
{ return __glX ## to ## ReqSize( pc, swap ); }
|
||||
#endif
|
||||
|
||||
|
||||
int
|
||||
__glXCallListsReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei n = *(GLsizei *) (pc + 0);
|
||||
GLenum type = *(GLenum *) (pc + 4);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
n = bswap_32(n);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
compsize = __glCallLists_size(type);
|
||||
return __GLX_PAD((compsize * n));
|
||||
}
|
||||
|
||||
int
|
||||
__glXBitmapReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
GLsizei width = *(GLsizei *) (pc + 20);
|
||||
GLsizei height = *(GLsizei *) (pc + 24);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
width = bswap_32(width);
|
||||
height = bswap_32(height);
|
||||
}
|
||||
|
||||
return __glXImageSize(GL_COLOR_INDEX, GL_BITMAP, 0, width, height, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXFogfvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 0);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glFogfv_size(pname);
|
||||
return __GLX_PAD((compsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXLightfvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 4);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glLightfv_size(pname);
|
||||
return __GLX_PAD((compsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXLightModelfvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 0);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glLightModelfv_size(pname);
|
||||
return __GLX_PAD((compsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXMaterialfvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 4);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glMaterialfv_size(pname);
|
||||
return __GLX_PAD((compsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXPolygonStippleReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
}
|
||||
|
||||
return __glXImageSize(GL_COLOR_INDEX, GL_BITMAP, 0, 32, 32, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXTexParameterfvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 4);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glTexParameterfv_size(pname);
|
||||
return __GLX_PAD((compsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXTexImage1DReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
GLenum target = *(GLenum *) (pc + 20);
|
||||
GLsizei width = *(GLsizei *) (pc + 32);
|
||||
GLenum format = *(GLenum *) (pc + 44);
|
||||
GLenum type = *(GLenum *) (pc + 48);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
target = bswap_32(target);
|
||||
width = bswap_32(width);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, target, width, 1, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXTexImage2DReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
GLenum target = *(GLenum *) (pc + 20);
|
||||
GLsizei width = *(GLsizei *) (pc + 32);
|
||||
GLsizei height = *(GLsizei *) (pc + 36);
|
||||
GLenum format = *(GLenum *) (pc + 44);
|
||||
GLenum type = *(GLenum *) (pc + 48);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
target = bswap_32(target);
|
||||
width = bswap_32(width);
|
||||
height = bswap_32(height);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, target, width, height, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXTexEnvfvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 4);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glTexEnvfv_size(pname);
|
||||
return __GLX_PAD((compsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXTexGendvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 4);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glTexGendv_size(pname);
|
||||
return __GLX_PAD((compsize * 8));
|
||||
}
|
||||
|
||||
int
|
||||
__glXTexGenfvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 4);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glTexGenfv_size(pname);
|
||||
return __GLX_PAD((compsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXPixelMapfvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei mapsize = *(GLsizei *) (pc + 4);
|
||||
|
||||
if (swap) {
|
||||
mapsize = bswap_32(mapsize);
|
||||
}
|
||||
|
||||
return __GLX_PAD((mapsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXPixelMapusvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei mapsize = *(GLsizei *) (pc + 4);
|
||||
|
||||
if (swap) {
|
||||
mapsize = bswap_32(mapsize);
|
||||
}
|
||||
|
||||
return __GLX_PAD((mapsize * 2));
|
||||
}
|
||||
|
||||
int
|
||||
__glXDrawPixelsReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
GLsizei width = *(GLsizei *) (pc + 20);
|
||||
GLsizei height = *(GLsizei *) (pc + 24);
|
||||
GLenum format = *(GLenum *) (pc + 28);
|
||||
GLenum type = *(GLenum *) (pc + 32);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
width = bswap_32(width);
|
||||
height = bswap_32(height);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, 0, width, height, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXPrioritizeTexturesReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei n = *(GLsizei *) (pc + 0);
|
||||
|
||||
if (swap) {
|
||||
n = bswap_32(n);
|
||||
}
|
||||
|
||||
return __GLX_PAD((n * 4) + (n * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXTexSubImage1DReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
GLenum target = *(GLenum *) (pc + 20);
|
||||
GLsizei width = *(GLsizei *) (pc + 36);
|
||||
GLenum format = *(GLenum *) (pc + 44);
|
||||
GLenum type = *(GLenum *) (pc + 48);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
target = bswap_32(target);
|
||||
width = bswap_32(width);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, target, width, 1, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXTexSubImage2DReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
GLenum target = *(GLenum *) (pc + 20);
|
||||
GLsizei width = *(GLsizei *) (pc + 36);
|
||||
GLsizei height = *(GLsizei *) (pc + 40);
|
||||
GLenum format = *(GLenum *) (pc + 44);
|
||||
GLenum type = *(GLenum *) (pc + 48);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
target = bswap_32(target);
|
||||
width = bswap_32(width);
|
||||
height = bswap_32(height);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, target, width, height, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXColorTableReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
GLenum target = *(GLenum *) (pc + 20);
|
||||
GLsizei width = *(GLsizei *) (pc + 28);
|
||||
GLenum format = *(GLenum *) (pc + 32);
|
||||
GLenum type = *(GLenum *) (pc + 36);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
target = bswap_32(target);
|
||||
width = bswap_32(width);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, target, width, 1, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXColorTableParameterfvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 4);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glColorTableParameterfv_size(pname);
|
||||
return __GLX_PAD((compsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXColorSubTableReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
GLenum target = *(GLenum *) (pc + 20);
|
||||
GLsizei count = *(GLsizei *) (pc + 28);
|
||||
GLenum format = *(GLenum *) (pc + 32);
|
||||
GLenum type = *(GLenum *) (pc + 36);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
target = bswap_32(target);
|
||||
count = bswap_32(count);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, target, count, 1, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXConvolutionFilter1DReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
GLenum target = *(GLenum *) (pc + 20);
|
||||
GLsizei width = *(GLsizei *) (pc + 28);
|
||||
GLenum format = *(GLenum *) (pc + 36);
|
||||
GLenum type = *(GLenum *) (pc + 40);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
target = bswap_32(target);
|
||||
width = bswap_32(width);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, target, width, 1, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXConvolutionFilter2DReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = 0;
|
||||
GLint skip_images = 0;
|
||||
GLint skip_rows = *(GLint *) (pc + 8);
|
||||
GLint alignment = *(GLint *) (pc + 16);
|
||||
GLenum target = *(GLenum *) (pc + 20);
|
||||
GLsizei width = *(GLsizei *) (pc + 28);
|
||||
GLsizei height = *(GLsizei *) (pc + 32);
|
||||
GLenum format = *(GLenum *) (pc + 36);
|
||||
GLenum type = *(GLenum *) (pc + 40);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
alignment = bswap_32(alignment);
|
||||
target = bswap_32(target);
|
||||
width = bswap_32(width);
|
||||
height = bswap_32(height);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, target, width, height, 1,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXConvolutionParameterfvReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 4);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glConvolutionParameterfv_size(pname);
|
||||
return __GLX_PAD((compsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXTexImage3DReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = *(GLint *) (pc + 8);
|
||||
GLint skip_rows = *(GLint *) (pc + 16);
|
||||
GLint skip_images = *(GLint *) (pc + 20);
|
||||
GLint alignment = *(GLint *) (pc + 32);
|
||||
GLenum target = *(GLenum *) (pc + 36);
|
||||
GLsizei width = *(GLsizei *) (pc + 48);
|
||||
GLsizei height = *(GLsizei *) (pc + 52);
|
||||
GLsizei depth = *(GLsizei *) (pc + 56);
|
||||
GLenum format = *(GLenum *) (pc + 68);
|
||||
GLenum type = *(GLenum *) (pc + 72);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
image_height = bswap_32(image_height);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
skip_images = bswap_32(skip_images);
|
||||
alignment = bswap_32(alignment);
|
||||
target = bswap_32(target);
|
||||
width = bswap_32(width);
|
||||
height = bswap_32(height);
|
||||
depth = bswap_32(depth);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, target, width, height, depth,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXTexSubImage3DReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLint row_length = *(GLint *) (pc + 4);
|
||||
GLint image_height = *(GLint *) (pc + 8);
|
||||
GLint skip_rows = *(GLint *) (pc + 16);
|
||||
GLint skip_images = *(GLint *) (pc + 20);
|
||||
GLint alignment = *(GLint *) (pc + 32);
|
||||
GLenum target = *(GLenum *) (pc + 36);
|
||||
GLsizei width = *(GLsizei *) (pc + 60);
|
||||
GLsizei height = *(GLsizei *) (pc + 64);
|
||||
GLsizei depth = *(GLsizei *) (pc + 68);
|
||||
GLenum format = *(GLenum *) (pc + 76);
|
||||
GLenum type = *(GLenum *) (pc + 80);
|
||||
|
||||
if (swap) {
|
||||
row_length = bswap_32(row_length);
|
||||
image_height = bswap_32(image_height);
|
||||
skip_rows = bswap_32(skip_rows);
|
||||
skip_images = bswap_32(skip_images);
|
||||
alignment = bswap_32(alignment);
|
||||
target = bswap_32(target);
|
||||
width = bswap_32(width);
|
||||
height = bswap_32(height);
|
||||
depth = bswap_32(depth);
|
||||
format = bswap_32(format);
|
||||
type = bswap_32(type);
|
||||
}
|
||||
|
||||
return __glXImageSize(format, type, target, width, height, depth,
|
||||
image_height, row_length, skip_images,
|
||||
skip_rows, alignment);
|
||||
}
|
||||
|
||||
int
|
||||
__glXCompressedTexImage1DARBReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei imageSize = *(GLsizei *) (pc + 20);
|
||||
|
||||
if (swap) {
|
||||
imageSize = bswap_32(imageSize);
|
||||
}
|
||||
|
||||
return __GLX_PAD(imageSize);
|
||||
}
|
||||
|
||||
int
|
||||
__glXCompressedTexImage2DARBReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei imageSize = *(GLsizei *) (pc + 24);
|
||||
|
||||
if (swap) {
|
||||
imageSize = bswap_32(imageSize);
|
||||
}
|
||||
|
||||
return __GLX_PAD(imageSize);
|
||||
}
|
||||
|
||||
int
|
||||
__glXCompressedTexImage3DARBReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei imageSize = *(GLsizei *) (pc + 28);
|
||||
|
||||
if (swap) {
|
||||
imageSize = bswap_32(imageSize);
|
||||
}
|
||||
|
||||
return __GLX_PAD(imageSize);
|
||||
}
|
||||
|
||||
int
|
||||
__glXCompressedTexSubImage3DARBReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei imageSize = *(GLsizei *) (pc + 36);
|
||||
|
||||
if (swap) {
|
||||
imageSize = bswap_32(imageSize);
|
||||
}
|
||||
|
||||
return __GLX_PAD(imageSize);
|
||||
}
|
||||
|
||||
int
|
||||
__glXProgramStringARBReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei len = *(GLsizei *) (pc + 8);
|
||||
|
||||
if (swap) {
|
||||
len = bswap_32(len);
|
||||
}
|
||||
|
||||
return __GLX_PAD(len);
|
||||
}
|
||||
|
||||
int
|
||||
__glXDrawBuffersARBReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei n = *(GLsizei *) (pc + 0);
|
||||
|
||||
if (swap) {
|
||||
n = bswap_32(n);
|
||||
}
|
||||
|
||||
return __GLX_PAD((n * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXPointParameterfvEXTReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLenum pname = *(GLenum *) (pc + 0);
|
||||
GLsizei compsize;
|
||||
|
||||
if (swap) {
|
||||
pname = bswap_32(pname);
|
||||
}
|
||||
|
||||
compsize = __glPointParameterfvEXT_size(pname);
|
||||
return __GLX_PAD((compsize * 4));
|
||||
}
|
||||
|
||||
int
|
||||
__glXProgramParameters4dvNVReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLuint num = *(GLuint *) (pc + 8);
|
||||
|
||||
if (swap) {
|
||||
num = bswap_32(num);
|
||||
}
|
||||
|
||||
return __GLX_PAD((num * 32));
|
||||
}
|
||||
|
||||
int
|
||||
__glXProgramParameters4fvNVReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLuint num = *(GLuint *) (pc + 8);
|
||||
|
||||
if (swap) {
|
||||
num = bswap_32(num);
|
||||
}
|
||||
|
||||
return __GLX_PAD((num * 16));
|
||||
}
|
||||
|
||||
int
|
||||
__glXVertexAttribs1dvNVReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei n = *(GLsizei *) (pc + 4);
|
||||
|
||||
if (swap) {
|
||||
n = bswap_32(n);
|
||||
}
|
||||
|
||||
return __GLX_PAD((n * 8));
|
||||
}
|
||||
|
||||
int
|
||||
__glXVertexAttribs2dvNVReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei n = *(GLsizei *) (pc + 4);
|
||||
|
||||
if (swap) {
|
||||
n = bswap_32(n);
|
||||
}
|
||||
|
||||
return __GLX_PAD((n * 16));
|
||||
}
|
||||
|
||||
int
|
||||
__glXVertexAttribs3dvNVReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei n = *(GLsizei *) (pc + 4);
|
||||
|
||||
if (swap) {
|
||||
n = bswap_32(n);
|
||||
}
|
||||
|
||||
return __GLX_PAD((n * 24));
|
||||
}
|
||||
|
||||
int
|
||||
__glXVertexAttribs3fvNVReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei n = *(GLsizei *) (pc + 4);
|
||||
|
||||
if (swap) {
|
||||
n = bswap_32(n);
|
||||
}
|
||||
|
||||
return __GLX_PAD((n * 12));
|
||||
}
|
||||
|
||||
int
|
||||
__glXVertexAttribs3svNVReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei n = *(GLsizei *) (pc + 4);
|
||||
|
||||
if (swap) {
|
||||
n = bswap_32(n);
|
||||
}
|
||||
|
||||
return __GLX_PAD((n * 6));
|
||||
}
|
||||
|
||||
int
|
||||
__glXVertexAttribs4dvNVReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei n = *(GLsizei *) (pc + 4);
|
||||
|
||||
if (swap) {
|
||||
n = bswap_32(n);
|
||||
}
|
||||
|
||||
return __GLX_PAD((n * 32));
|
||||
}
|
||||
|
||||
int
|
||||
__glXProgramNamedParameter4fvNVReqSize(const GLbyte *pc, Bool swap)
|
||||
{
|
||||
GLsizei len = *(GLsizei *) (pc + 4);
|
||||
|
||||
if (swap) {
|
||||
len = bswap_32(len);
|
||||
}
|
||||
|
||||
return __GLX_PAD(len);
|
||||
}
|
||||
|
||||
ALIAS(Fogiv, Fogfv)
|
||||
ALIAS(Lightiv, Lightfv)
|
||||
ALIAS(LightModeliv, LightModelfv)
|
||||
ALIAS(Materialiv, Materialfv)
|
||||
ALIAS(TexParameteriv, TexParameterfv)
|
||||
ALIAS(TexEnviv, TexEnvfv)
|
||||
ALIAS(TexGeniv, TexGenfv)
|
||||
ALIAS(PixelMapuiv, PixelMapfv)
|
||||
ALIAS(ColorTableParameteriv, ColorTableParameterfv)
|
||||
ALIAS(ConvolutionParameteriv, ConvolutionParameterfv)
|
||||
ALIAS(CompressedTexSubImage1DARB, CompressedTexImage1DARB)
|
||||
ALIAS(CompressedTexSubImage2DARB, CompressedTexImage3DARB)
|
||||
ALIAS(LoadProgramNV, ProgramStringARB)
|
||||
ALIAS(RequestResidentProgramsNV, DrawBuffersARB)
|
||||
ALIAS(VertexAttribs1fvNV, PixelMapfv)
|
||||
ALIAS(VertexAttribs1svNV, PixelMapusv)
|
||||
ALIAS(VertexAttribs2fvNV, VertexAttribs1dvNV)
|
||||
ALIAS(VertexAttribs2svNV, PixelMapfv)
|
||||
ALIAS(VertexAttribs4fvNV, VertexAttribs2dvNV)
|
||||
ALIAS(VertexAttribs4svNV, VertexAttribs1dvNV)
|
||||
ALIAS(VertexAttribs4ubvNV, PixelMapfv)
|
||||
ALIAS(PointParameterivNV, PointParameterfvEXT)
|
||||
ALIAS(ProgramNamedParameter4dvNV, CompressedTexSubImage3DARB)
|
||||
ALIAS(DeleteFramebuffersEXT, DrawBuffersARB)
|
||||
ALIAS(DeleteRenderbuffersEXT, DrawBuffersARB)
|
121
src/glx/x11/indirect_reqsize.h
Normal file
121
src/glx/x11/indirect_reqsize.h
Normal file
@@ -0,0 +1,121 @@
|
||||
/* DO NOT EDIT - This file generated automatically by glX_proto_size.py (from Mesa) script */
|
||||
|
||||
/*
|
||||
* (C) Copyright IBM Corporation 2005
|
||||
* 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, sub license,
|
||||
* 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 (including the next
|
||||
* paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* IBM,
|
||||
* AND/OR THEIR SUPPLIERS 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.
|
||||
*/
|
||||
|
||||
#if !defined( _INDIRECT_REQSIZE_H_ )
|
||||
# define _INDIRECT_REQSIZE_H_
|
||||
|
||||
# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__)
|
||||
# define HIDDEN __attribute__((visibility("hidden")))
|
||||
# else
|
||||
# define HIDDEN
|
||||
# endif
|
||||
|
||||
# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||||
# define PURE __attribute__((pure))
|
||||
# else
|
||||
# define PURE
|
||||
# endif
|
||||
|
||||
extern PURE HIDDEN int __glXCallListsReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXBitmapReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXFogfvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXFogivReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXLightfvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXLightivReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXLightModelfvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXLightModelivReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXMaterialfvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXMaterialivReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXPolygonStippleReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexParameterfvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexParameterivReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexImage1DReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexImage2DReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexEnvfvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexEnvivReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexGendvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexGenfvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexGenivReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXMap1dReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXMap1fReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXMap2dReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXMap2fReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXPixelMapfvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXPixelMapuivReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXPixelMapusvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXDrawPixelsReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXDrawArraysReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXPrioritizeTexturesReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexSubImage1DReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexSubImage2DReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXColorTableReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXColorTableParameterfvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXColorTableParameterivReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXColorSubTableReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXConvolutionFilter1DReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXConvolutionFilter2DReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXConvolutionParameterfvReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXConvolutionParameterivReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXSeparableFilter2DReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexImage3DReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXTexSubImage3DReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXCompressedTexImage1DARBReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXCompressedTexImage2DARBReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXCompressedTexImage3DARBReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXCompressedTexSubImage1DARBReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXCompressedTexSubImage2DARBReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXCompressedTexSubImage3DARBReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXProgramStringARBReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXDrawBuffersARBReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXPointParameterfvEXTReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXLoadProgramNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXProgramParameters4dvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXProgramParameters4fvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXRequestResidentProgramsNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs1dvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs1fvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs1svNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs2dvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs2fvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs2svNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs3dvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs3fvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs3svNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs4dvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs4fvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs4svNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXVertexAttribs4ubvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXPointParameterivNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXProgramNamedParameter4dvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXProgramNamedParameter4fvNVReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXDeleteFramebuffersEXTReqSize(const GLbyte *pc, Bool swap);
|
||||
extern PURE HIDDEN int __glXDeleteRenderbuffersEXTReqSize(const GLbyte *pc, Bool swap);
|
||||
|
||||
# undef HIDDEN
|
||||
# undef PURE
|
||||
|
||||
#endif /* !defined( _INDIRECT_REQSIZE_H_ ) */
|
1206
src/glx/x11/indirect_size_get.c
Normal file
1206
src/glx/x11/indirect_size_get.c
Normal file
File diff suppressed because it is too large
Load Diff
102
src/glx/x11/indirect_size_get.h
Normal file
102
src/glx/x11/indirect_size_get.h
Normal file
@@ -0,0 +1,102 @@
|
||||
/* DO NOT EDIT - This file generated automatically by glX_proto_size.py (from Mesa) script */
|
||||
|
||||
/*
|
||||
* (C) Copyright IBM Corporation 2004
|
||||
* 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, sub license,
|
||||
* 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 (including the next
|
||||
* paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* IBM,
|
||||
* AND/OR THEIR SUPPLIERS 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.
|
||||
*/
|
||||
|
||||
#if !defined( _INDIRECT_SIZE_GET_H_ )
|
||||
# define _INDIRECT_SIZE_GET_H_
|
||||
|
||||
/**
|
||||
* \file
|
||||
* Prototypes for functions used to determine the number of data elements in
|
||||
* various GLX protocol messages.
|
||||
*
|
||||
* \author Ian Romanick <idr@us.ibm.com>
|
||||
*/
|
||||
|
||||
# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||||
# define PURE __attribute__((pure))
|
||||
# else
|
||||
# define PURE
|
||||
# endif
|
||||
|
||||
# if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
|
||||
# define FASTCALL __attribute__((fastcall))
|
||||
# else
|
||||
# define FASTCALL
|
||||
# endif
|
||||
|
||||
# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__)
|
||||
# define INTERNAL __attribute__((visibility("internal")))
|
||||
# else
|
||||
# define INTERNAL
|
||||
# endif
|
||||
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetBooleanv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetDoublev_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetFloatv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetIntegerv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetLightfv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetLightiv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetMaterialfv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetMaterialiv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetTexEnvfv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetTexEnviv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetTexGendv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetTexGenfv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetTexGeniv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetTexParameterfv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetTexParameteriv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetTexLevelParameterfv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetTexLevelParameteriv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetColorTableParameterfv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetColorTableParameteriv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint
|
||||
__glGetConvolutionParameterfv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint
|
||||
__glGetConvolutionParameteriv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetHistogramParameterfv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetHistogramParameteriv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetMinmaxParameterfv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetMinmaxParameteriv_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetProgramivARB_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribdvARB_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribfvARB_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribivARB_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetQueryObjectivARB_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetQueryObjectuivARB_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetQueryivARB_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetProgramivNV_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribdvNV_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribfvNV_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribivNV_size(GLenum);
|
||||
extern INTERNAL PURE FASTCALL GLint
|
||||
__glGetFramebufferAttachmentParameterivEXT_size(GLenum);
|
||||
|
||||
# undef PURE
|
||||
# undef FASTCALL
|
||||
# undef INTERNAL
|
||||
|
||||
#endif /* !defined( _INDIRECT_SIZE_GET_H_ ) */
|
1593
src/glx/x11/indirect_table.c
Normal file
1593
src/glx/x11/indirect_table.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -485,14 +485,14 @@ emit_DrawArrays_none( GLenum mode, GLint first, GLsizei count )
|
||||
|
||||
for ( i = 0 ; i < count ; i++ ) {
|
||||
if ( (pc + single_vertex_size) >= gc->bufEnd ) {
|
||||
pc = __glXFlushRenderBuffer(gc, gc->pc);
|
||||
pc = __glXFlushRenderBuffer(gc, pc);
|
||||
}
|
||||
|
||||
pc = emit_element_none( pc, arrays, first + i );
|
||||
}
|
||||
|
||||
if ( (pc + 4) >= gc->bufEnd ) {
|
||||
pc = __glXFlushRenderBuffer(gc, gc->pc);
|
||||
pc = __glXFlushRenderBuffer(gc, pc);
|
||||
}
|
||||
|
||||
(void) memcpy( pc, end_cmd, 4 );
|
||||
@@ -726,7 +726,7 @@ emit_DrawElements_none( GLenum mode, GLsizei count, GLenum type,
|
||||
unsigned index = 0;
|
||||
|
||||
if ( (pc + single_vertex_size) >= gc->bufEnd ) {
|
||||
pc = __glXFlushRenderBuffer(gc, gc->pc);
|
||||
pc = __glXFlushRenderBuffer(gc, pc);
|
||||
}
|
||||
|
||||
switch( type ) {
|
||||
@@ -744,7 +744,7 @@ emit_DrawElements_none( GLenum mode, GLsizei count, GLenum type,
|
||||
}
|
||||
|
||||
if ( (pc + 4) >= gc->bufEnd ) {
|
||||
pc = __glXFlushRenderBuffer(gc, gc->pc);
|
||||
pc = __glXFlushRenderBuffer(gc, pc);
|
||||
}
|
||||
|
||||
(void) memcpy( pc, end_cmd, 4 );
|
||||
|
@@ -65,7 +65,7 @@ linux-solo: depend subdirs libmesa.a
|
||||
# Stand-alone Mesa libGL, no built-in drivers (DirectFB)
|
||||
|
||||
libgl-core: $(CORE_OBJECTS)
|
||||
@ $(TOP)/bin/mklib -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS) \
|
||||
@ $(TOP)/bin/mklib -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
|
||||
-major $(MESA_MAJOR) -minor $(MESA_MINOR) -patch $(MESA_TINY) \
|
||||
-install $(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) $(CORE_OBJECTS) \
|
||||
$(GL_LIB_DEPS)
|
||||
|
@@ -112,6 +112,8 @@ _mesa_init_driver_functions(struct dd_function_table *driver)
|
||||
driver->DeleteTexture = _mesa_delete_texture_object;
|
||||
driver->NewTextureImage = _mesa_new_texture_image;
|
||||
driver->FreeTexImageData = _mesa_free_texture_image_data;
|
||||
driver->MapTexture = NULL;
|
||||
driver->UnmapTexture = NULL;
|
||||
driver->TextureMemCpy = _mesa_memcpy;
|
||||
driver->IsTextureResident = NULL;
|
||||
driver->PrioritizeTexture = NULL;
|
||||
|
@@ -50,7 +50,6 @@ SHARED_INCLUDES = \
|
||||
-I$(TOP)/src/mesa/main \
|
||||
-I$(TOP)/src/mesa/glapi \
|
||||
-I$(TOP)/src/mesa/math \
|
||||
-I$(TOP)/src/mesa/transform \
|
||||
-I$(TOP)/src/mesa/shader \
|
||||
-I$(TOP)/src/mesa/swrast \
|
||||
-I$(TOP)/src/mesa/swrast_setup \
|
||||
|
@@ -486,6 +486,9 @@ static void driSwapBuffers( __DRInativeDisplay *dpy, void *drawablePrivate )
|
||||
__DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *) drawablePrivate;
|
||||
drm_clip_rect_t rect;
|
||||
|
||||
if (!dPriv->numClipRects)
|
||||
return;
|
||||
|
||||
dPriv->swapBuffers(dPriv);
|
||||
|
||||
/* Check that we actually have the new damage report method */
|
||||
|
@@ -193,7 +193,7 @@ static GLboolean gamma_run_render( GLcontext *ctx,
|
||||
|
||||
for (i = 0 ; i < VB->PrimitiveCount ; i++)
|
||||
{
|
||||
GLuint prim = VB->Primitive[i].mode;
|
||||
GLuint prim = _tnl_translate_prim(&VB->Primitive[i]);
|
||||
GLuint start = VB->Primitive[i].start;
|
||||
GLuint length = VB->Primitive[i].count;
|
||||
|
||||
|
@@ -144,7 +144,7 @@ static GLboolean i810_run_render( GLcontext *ctx,
|
||||
|
||||
for (i = 0 ; i < VB->PrimitiveCount ; i++)
|
||||
{
|
||||
GLuint prim = VB->Primitive[i].mode;
|
||||
GLuint prim = _tnl_translate_prim(&VB->Primitive[i]);
|
||||
GLuint start = VB->Primitive[i].start;
|
||||
GLuint length = VB->Primitive[i].count;
|
||||
|
||||
|
@@ -213,7 +213,7 @@ static GLboolean intel_run_render( GLcontext *ctx,
|
||||
|
||||
for (i = 0 ; i < VB->PrimitiveCount ; i++)
|
||||
{
|
||||
GLuint prim = VB->Primitive[i].mode;
|
||||
GLuint prim = _tnl_translate_prim(&VB->Primitive[i]);
|
||||
GLuint start = VB->Primitive[i].start;
|
||||
GLuint length = VB->Primitive[i].count;
|
||||
|
||||
|
@@ -377,10 +377,16 @@ do { \
|
||||
ADVANCE_BATCH(); \
|
||||
} while (0)
|
||||
|
||||
static GLuint
|
||||
get_dirty(struct i830_hw_state *state)
|
||||
{
|
||||
return state->active & ~state->emitted;
|
||||
}
|
||||
|
||||
static GLuint
|
||||
get_state_size(struct i830_hw_state *state)
|
||||
{
|
||||
GLuint dirty = state->active & ~state->emitted;
|
||||
GLuint dirty = get_dirty(state);
|
||||
GLuint sz = 0;
|
||||
GLuint i;
|
||||
|
||||
@@ -411,7 +417,7 @@ get_state_size(struct i830_hw_state *state)
|
||||
/* Push the state into the sarea and/or texture memory.
|
||||
*/
|
||||
static void
|
||||
i830_emit_state(struct intel_context *intel)
|
||||
i830_do_emit_state(struct intel_context *intel)
|
||||
{
|
||||
struct i830_context *i830 = i830_context(&intel->ctx);
|
||||
struct i830_hw_state *state = i830->current;
|
||||
@@ -428,10 +434,32 @@ i830_emit_state(struct intel_context *intel)
|
||||
*/
|
||||
intel_batchbuffer_require_space(intel->batch, get_state_size(state), 0);
|
||||
|
||||
/* Workaround. There are cases I haven't been able to track down
|
||||
* where we aren't emitting a full state at the start of a new
|
||||
* batchbuffer. This code spots that we are on a new batchbuffer
|
||||
* and forces a full state emit no matter what.
|
||||
*
|
||||
* In the normal case state->emitted is already zero, this code is
|
||||
* another set of checks to make sure it really is.
|
||||
*/
|
||||
if (intel->batch->id != intel->last_state_batch_id ||
|
||||
intel->batch->map == intel->batch->ptr)
|
||||
{
|
||||
state->emitted = 0;
|
||||
intel_batchbuffer_require_space(intel->batch, get_state_size(state), 0);
|
||||
}
|
||||
|
||||
/* Do this here as we may have flushed the batchbuffer above,
|
||||
* causing more state to be dirty!
|
||||
*/
|
||||
dirty = state->active & ~state->emitted;
|
||||
dirty = get_dirty(state);
|
||||
state->emitted |= dirty;
|
||||
assert(get_dirty(state) == 0);
|
||||
|
||||
if (intel->batch->id != intel->last_state_batch_id) {
|
||||
assert(dirty & I830_UPLOAD_CTX);
|
||||
intel->last_state_batch_id = intel->batch->id;
|
||||
}
|
||||
|
||||
if (dirty & I830_UPLOAD_INVARIENT) {
|
||||
DBG("I830_UPLOAD_INVARIENT:\n");
|
||||
@@ -513,7 +541,30 @@ i830_emit_state(struct intel_context *intel)
|
||||
}
|
||||
}
|
||||
|
||||
state->emitted |= dirty;
|
||||
intel->batch->dirty_state &= ~dirty;
|
||||
assert(get_dirty(state) == 0);
|
||||
}
|
||||
|
||||
static void
|
||||
i830_emit_state(struct intel_context *intel)
|
||||
{
|
||||
struct i830_context *i830 = i830_context(&intel->ctx);
|
||||
|
||||
i830_do_emit_state( intel );
|
||||
|
||||
/* Second chance - catch batchbuffer wrap in the middle of state
|
||||
* emit. This shouldn't happen but it has been observed in
|
||||
* testing.
|
||||
*/
|
||||
if (get_dirty( i830->current )) {
|
||||
/* Force a full re-emit if this happens.
|
||||
*/
|
||||
i830->current->emitted = 0;
|
||||
i830_do_emit_state( intel );
|
||||
}
|
||||
|
||||
assert(get_dirty(i830->current) == 0);
|
||||
assert((intel->batch->dirty_state & (1<<1)) == 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -650,8 +701,7 @@ i830_assert_not_dirty( struct intel_context *intel )
|
||||
{
|
||||
struct i830_context *i830 = i830_context(&intel->ctx);
|
||||
struct i830_hw_state *state = i830->current;
|
||||
GLuint dirty = state->active & ~state->emitted;
|
||||
assert(!dirty);
|
||||
assert(!get_dirty(state));
|
||||
}
|
||||
|
||||
|
||||
|
@@ -54,7 +54,7 @@ static GLint step_offsets[6][2] = { {0, 2},
|
||||
};
|
||||
|
||||
GLboolean
|
||||
i915_miptree_layout(struct intel_mipmap_tree * mt)
|
||||
i915_miptree_layout(struct intel_context *intel, struct intel_mipmap_tree * mt)
|
||||
{
|
||||
GLint level;
|
||||
|
||||
@@ -67,7 +67,7 @@ i915_miptree_layout(struct intel_mipmap_tree * mt)
|
||||
assert(lvlWidth == lvlHeight); /* cubemap images are square */
|
||||
|
||||
/* double pitch for cube layouts */
|
||||
mt->pitch = ((dim * mt->cpp * 2 + 3) & ~3) / mt->cpp;
|
||||
mt->pitch = intel_miptree_pitch_align (intel, mt, dim * 2);
|
||||
mt->total_height = dim * 4;
|
||||
|
||||
for (level = mt->first_level; level <= mt->last_level; level++) {
|
||||
@@ -107,7 +107,7 @@ i915_miptree_layout(struct intel_mipmap_tree * mt)
|
||||
|
||||
/* Calculate the size of a single slice.
|
||||
*/
|
||||
mt->pitch = ((mt->width0 * mt->cpp + 3) & ~3) / mt->cpp;
|
||||
mt->pitch = intel_miptree_pitch_align (intel, mt, mt->width0);
|
||||
|
||||
/* XXX: hardware expects/requires 9 levels at minimum.
|
||||
*/
|
||||
@@ -150,7 +150,7 @@ i915_miptree_layout(struct intel_mipmap_tree * mt)
|
||||
GLuint height = mt->height0;
|
||||
GLuint img_height;
|
||||
|
||||
mt->pitch = ((mt->width0 * mt->cpp + 3) & ~3) / mt->cpp;
|
||||
mt->pitch = intel_miptree_pitch_align (intel, mt, mt->width0);
|
||||
mt->total_height = 0;
|
||||
|
||||
for (level = mt->first_level; level <= mt->last_level; level++) {
|
||||
@@ -180,7 +180,7 @@ i915_miptree_layout(struct intel_mipmap_tree * mt)
|
||||
|
||||
|
||||
GLboolean
|
||||
i945_miptree_layout(struct intel_mipmap_tree * mt)
|
||||
i945_miptree_layout(struct intel_context *intel, struct intel_mipmap_tree * mt)
|
||||
{
|
||||
GLint level;
|
||||
|
||||
@@ -197,7 +197,7 @@ i945_miptree_layout(struct intel_mipmap_tree * mt)
|
||||
* or the final row of 4x4, 2x2 and 1x1 faces below this.
|
||||
*/
|
||||
if (dim > 32)
|
||||
mt->pitch = ((dim * mt->cpp * 2 + 3) & ~3) / mt->cpp;
|
||||
mt->pitch = intel_miptree_pitch_align (intel, mt, dim);
|
||||
else
|
||||
mt->pitch = 14 * 8;
|
||||
|
||||
@@ -279,7 +279,7 @@ i945_miptree_layout(struct intel_mipmap_tree * mt)
|
||||
GLuint pack_y_pitch;
|
||||
GLuint level;
|
||||
|
||||
mt->pitch = ((mt->width0 * mt->cpp + 3) & ~3) / mt->cpp;
|
||||
mt->pitch = intel_miptree_pitch_align (intel, mt, mt->width0);
|
||||
mt->total_height = 0;
|
||||
|
||||
pack_y_pitch = MAX2(mt->height0, 2);
|
||||
@@ -329,7 +329,7 @@ i945_miptree_layout(struct intel_mipmap_tree * mt)
|
||||
case GL_TEXTURE_1D:
|
||||
case GL_TEXTURE_2D:
|
||||
case GL_TEXTURE_RECTANGLE_ARB:
|
||||
i945_miptree_layout_2d(mt);
|
||||
i945_miptree_layout_2d(intel, mt);
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(NULL, "Unexpected tex target in i945_miptree_layout()");
|
||||
|
@@ -198,7 +198,7 @@ i915_emit_invarient_state(struct intel_context *intel)
|
||||
|
||||
/* Need to initialize this to zero.
|
||||
*/
|
||||
OUT_BATCH(_3DSTATE_LOAD_STATE_IMMEDIATE_1 | I1_LOAD_S(3) | (1));
|
||||
OUT_BATCH(_3DSTATE_LOAD_STATE_IMMEDIATE_1 | I1_LOAD_S(3) | (0));
|
||||
OUT_BATCH(0);
|
||||
|
||||
/* XXX: Use this */
|
||||
@@ -216,6 +216,7 @@ i915_emit_invarient_state(struct intel_context *intel)
|
||||
|
||||
/* Don't support twosided stencil yet */
|
||||
OUT_BATCH(_3DSTATE_BACKFACE_STENCIL_OPS | BFO_ENABLE_STENCIL_TWO_SIDE | 0);
|
||||
OUT_BATCH(0);
|
||||
|
||||
ADVANCE_BATCH();
|
||||
}
|
||||
@@ -247,6 +248,9 @@ get_state_size(struct i915_hw_state *state)
|
||||
GLuint i;
|
||||
GLuint sz = 0;
|
||||
|
||||
if (dirty & I915_UPLOAD_INVARIENT)
|
||||
sz += 30 * 4;
|
||||
|
||||
if (dirty & I915_UPLOAD_CTX)
|
||||
sz += sizeof(state->Ctx);
|
||||
|
||||
@@ -281,7 +285,7 @@ get_state_size(struct i915_hw_state *state)
|
||||
/* Push the state into the sarea and/or texture memory.
|
||||
*/
|
||||
static void
|
||||
i915_emit_state(struct intel_context *intel)
|
||||
i915_do_emit_state(struct intel_context *intel)
|
||||
{
|
||||
struct i915_context *i915 = i915_context(&intel->ctx);
|
||||
struct i915_hw_state *state = i915->current;
|
||||
@@ -298,10 +302,33 @@ i915_emit_state(struct intel_context *intel)
|
||||
*/
|
||||
intel_batchbuffer_require_space(intel->batch, get_state_size(state), 0);
|
||||
|
||||
|
||||
/* Workaround. There are cases I haven't been able to track down
|
||||
* where we aren't emitting a full state at the start of a new
|
||||
* batchbuffer. This code spots that we are on a new batchbuffer
|
||||
* and forces a full state emit no matter what.
|
||||
*
|
||||
* In the normal case state->emitted is already zero, this code is
|
||||
* another set of checks to make sure it really is.
|
||||
*/
|
||||
if (intel->batch->id != intel->last_state_batch_id ||
|
||||
intel->batch->map == intel->batch->ptr)
|
||||
{
|
||||
state->emitted = 0;
|
||||
intel_batchbuffer_require_space(intel->batch, get_state_size(state), 0);
|
||||
}
|
||||
|
||||
/* Do this here as we may have flushed the batchbuffer above,
|
||||
* causing more state to be dirty!
|
||||
*/
|
||||
dirty = get_dirty(state);
|
||||
state->emitted |= dirty;
|
||||
assert(get_dirty(state) == 0);
|
||||
|
||||
if (intel->batch->id != intel->last_state_batch_id) {
|
||||
assert(dirty & I915_UPLOAD_CTX);
|
||||
intel->last_state_batch_id = intel->batch->id;
|
||||
}
|
||||
|
||||
if (INTEL_DEBUG & DEBUG_STATE)
|
||||
fprintf(stderr, "%s dirty: %x\n", __FUNCTION__, dirty);
|
||||
@@ -424,7 +451,29 @@ i915_emit_state(struct intel_context *intel)
|
||||
i915_disassemble_program(state->Program, state->ProgramSize);
|
||||
}
|
||||
|
||||
state->emitted |= dirty;
|
||||
intel->batch->dirty_state &= ~dirty;
|
||||
}
|
||||
|
||||
static void
|
||||
i915_emit_state(struct intel_context *intel)
|
||||
{
|
||||
struct i915_context *i915 = i915_context(&intel->ctx);
|
||||
|
||||
i915_do_emit_state( intel );
|
||||
|
||||
/* Second chance - catch batchbuffer wrap in the middle of state
|
||||
* emit. This shouldn't happen but it has been observed in
|
||||
* testing.
|
||||
*/
|
||||
if (get_dirty( i915->current )) {
|
||||
/* Force a full re-emit if this happens.
|
||||
*/
|
||||
i915->current->emitted = 0;
|
||||
i915_do_emit_state( intel );
|
||||
}
|
||||
|
||||
assert(get_dirty(i915->current) == 0);
|
||||
assert((intel->batch->dirty_state & (1<<1)) == 0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -118,6 +118,8 @@ intel_batchbuffer_reset(struct intel_batchbuffer *batch)
|
||||
|
||||
batch->map = driBOMap(batch->buffer, DRM_BO_FLAG_WRITE, 0);
|
||||
batch->ptr = batch->map;
|
||||
batch->dirty_state = ~0;
|
||||
batch->id = batch->intel->intelScreen->batch_id++;
|
||||
}
|
||||
|
||||
/*======================================================================
|
||||
|
@@ -38,6 +38,9 @@ struct intel_batchbuffer
|
||||
struct buffer_reloc reloc[MAX_RELOCS];
|
||||
GLuint nr_relocs;
|
||||
GLuint size;
|
||||
|
||||
GLuint dirty_state;
|
||||
GLuint id;
|
||||
};
|
||||
|
||||
struct intel_batchbuffer *intel_batchbuffer_alloc(struct intel_context
|
||||
|
@@ -112,8 +112,8 @@ intelCopyBuffer(const __DRIdrawablePrivate * dPriv,
|
||||
for (i = 0; i < nbox; i++, pbox++) {
|
||||
drm_clip_rect_t box;
|
||||
|
||||
if (pbox->x1 > pbox->x2 ||
|
||||
pbox->y1 > pbox->y2 ||
|
||||
if (pbox->x1 >= pbox->x2 ||
|
||||
pbox->y1 >= pbox->y2 ||
|
||||
pbox->x2 > intelScreen->width || pbox->y2 > intelScreen->height)
|
||||
continue;
|
||||
|
||||
@@ -129,19 +129,22 @@ intelCopyBuffer(const __DRIdrawablePrivate * dPriv,
|
||||
if (rect->y2 < box.y2)
|
||||
box.y2 = rect->y2;
|
||||
|
||||
if (box.x1 > box.x2 || box.y1 > box.y2)
|
||||
if (box.x1 >= box.x2 || box.y1 >= box.y2)
|
||||
continue;
|
||||
}
|
||||
|
||||
assert(box.x1 < box.x2);
|
||||
assert(box.y1 < box.y2);
|
||||
|
||||
BEGIN_BATCH(8, INTEL_BATCH_NO_CLIPRECTS);
|
||||
OUT_BATCH(CMD);
|
||||
OUT_BATCH(BR13);
|
||||
OUT_BATCH((pbox->y1 << 16) | pbox->x1);
|
||||
OUT_BATCH((pbox->y2 << 16) | pbox->x2);
|
||||
OUT_BATCH((box.y1 << 16) | box.x1);
|
||||
OUT_BATCH((box.y2 << 16) | box.x2);
|
||||
|
||||
OUT_RELOC(frontRegion->buffer, DRM_BO_FLAG_MEM_TT | DRM_BO_FLAG_WRITE,
|
||||
DRM_BO_MASK_MEM | DRM_BO_FLAG_WRITE, 0);
|
||||
OUT_BATCH((pbox->y1 << 16) | pbox->x1);
|
||||
OUT_BATCH((box.y1 << 16) | box.x1);
|
||||
OUT_BATCH(BR13 & 0xffff);
|
||||
OUT_RELOC(backRegion->buffer, DRM_BO_FLAG_MEM_TT | DRM_BO_FLAG_READ,
|
||||
DRM_BO_MASK_MEM | DRM_BO_FLAG_READ, 0);
|
||||
@@ -152,7 +155,8 @@ intelCopyBuffer(const __DRIdrawablePrivate * dPriv,
|
||||
if (intel->first_swap_fence)
|
||||
driFenceUnReference(intel->first_swap_fence);
|
||||
intel->first_swap_fence = intel_batchbuffer_flush(intel->batch);
|
||||
driFenceReference(intel->first_swap_fence);
|
||||
if (intel->first_swap_fence)
|
||||
driFenceReference(intel->first_swap_fence);
|
||||
}
|
||||
|
||||
UNLOCK_HARDWARE(intel);
|
||||
@@ -193,6 +197,8 @@ intelEmitFillBlit(struct intel_context *intel,
|
||||
DBG("%s dst:buf(%p)/%d+%d %d,%d sz:%dx%d\n",
|
||||
__FUNCTION__, dst_buffer, dst_pitch, dst_offset, x, y, w, h);
|
||||
|
||||
assert(w > 0);
|
||||
assert(h > 0);
|
||||
|
||||
BEGIN_BATCH(6, INTEL_BATCH_NO_CLIPRECTS);
|
||||
OUT_BATCH(CMD);
|
||||
@@ -280,10 +286,11 @@ intelEmitCopyBlit(struct intel_context *intel,
|
||||
return;
|
||||
}
|
||||
|
||||
if (dst_y2 < dst_y || dst_x2 < dst_x) {
|
||||
if (dst_y2 <= dst_y || dst_x2 <= dst_x) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* Initial y values don't seem to work with negative pitches. If
|
||||
* we adjust the offsets manually (below), it seems to work fine.
|
||||
*
|
||||
@@ -292,6 +299,9 @@ intelEmitCopyBlit(struct intel_context *intel,
|
||||
* the wrong result.
|
||||
*/
|
||||
if (dst_pitch > 0 && src_pitch > 0) {
|
||||
assert(dst_x < dst_x2);
|
||||
assert(dst_y < dst_y2);
|
||||
|
||||
BEGIN_BATCH(8, INTEL_BATCH_NO_CLIPRECTS);
|
||||
OUT_BATCH(CMD);
|
||||
OUT_BATCH(BR13);
|
||||
@@ -306,6 +316,9 @@ intelEmitCopyBlit(struct intel_context *intel,
|
||||
ADVANCE_BATCH();
|
||||
}
|
||||
else {
|
||||
assert(dst_x < dst_x2);
|
||||
assert(h > 0);
|
||||
|
||||
BEGIN_BATCH(8, INTEL_BATCH_NO_CLIPRECTS);
|
||||
OUT_BATCH(CMD);
|
||||
OUT_BATCH(BR13);
|
||||
@@ -480,6 +493,9 @@ intelClearWithBlit(GLcontext * ctx, GLbitfield mask)
|
||||
*/
|
||||
intel_wait_flips(intel, INTEL_BATCH_NO_CLIPRECTS);
|
||||
|
||||
assert(b.x1 < b.x2);
|
||||
assert(b.y1 < b.y2);
|
||||
|
||||
BEGIN_BATCH(6, INTEL_BATCH_NO_CLIPRECTS);
|
||||
OUT_BATCH(CMD);
|
||||
OUT_BATCH(BR13);
|
||||
|
@@ -714,7 +714,8 @@ intel_wait_flips(struct intel_context *intel, GLuint batch_flags)
|
||||
BUFFER_BIT_FRONT_LEFT ? BUFFER_FRONT_LEFT :
|
||||
BUFFER_BACK_LEFT);
|
||||
|
||||
if (intel_fb->Base.Name == 0 && intel_rb->pf_pending == intel_fb->pf_seq) {
|
||||
if (intel_fb->Base.Name == 0 && intel_rb &&
|
||||
intel_rb->pf_pending == intel_fb->pf_seq) {
|
||||
GLint pf_pipes = intel_fb->pf_pipes;
|
||||
BATCH_LOCALS;
|
||||
|
||||
@@ -1019,16 +1020,11 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb)
|
||||
/*
|
||||
* How many color buffers are we drawing into?
|
||||
*/
|
||||
if (fb->_NumColorDrawBuffers[0] != 1
|
||||
#if 0
|
||||
/* XXX FBO temporary - always use software rendering */
|
||||
|| 1
|
||||
#endif
|
||||
) {
|
||||
if (fb->_NumColorDrawBuffers[0] != 1) {
|
||||
/* writing to 0 or 2 or 4 color buffers */
|
||||
/*_mesa_debug(ctx, "Software rendering\n");*/
|
||||
FALLBACK(intel, INTEL_FALLBACK_DRAW_BUFFER, GL_TRUE);
|
||||
front = 1; /* might not have back color buffer */
|
||||
colorRegion = NULL;
|
||||
}
|
||||
else {
|
||||
/* draw to exactly one color buffer */
|
||||
@@ -1037,30 +1033,30 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb)
|
||||
if (fb->_ColorDrawBufferMask[0] == BUFFER_BIT_FRONT_LEFT) {
|
||||
front = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the intel_renderbuffer for the colorbuffer we're drawing into.
|
||||
* And set up cliprects.
|
||||
*/
|
||||
if (fb->Name == 0) {
|
||||
/* drawing to window system buffer */
|
||||
if (front) {
|
||||
intelSetFrontClipRects(intel);
|
||||
colorRegion = intel_get_rb_region(fb, BUFFER_FRONT_LEFT);
|
||||
/*
|
||||
* Get the intel_renderbuffer for the colorbuffer we're drawing into.
|
||||
* And set up cliprects.
|
||||
*/
|
||||
if (fb->Name == 0) {
|
||||
/* drawing to window system buffer */
|
||||
if (front) {
|
||||
intelSetFrontClipRects(intel);
|
||||
colorRegion = intel_get_rb_region(fb, BUFFER_FRONT_LEFT);
|
||||
}
|
||||
else {
|
||||
intelSetBackClipRects(intel);
|
||||
colorRegion = intel_get_rb_region(fb, BUFFER_BACK_LEFT);
|
||||
}
|
||||
}
|
||||
else {
|
||||
intelSetBackClipRects(intel);
|
||||
colorRegion = intel_get_rb_region(fb, BUFFER_BACK_LEFT);
|
||||
/* drawing to user-created FBO */
|
||||
struct intel_renderbuffer *irb;
|
||||
intelSetRenderbufferClipRects(intel);
|
||||
irb = intel_renderbuffer(fb->_ColorDrawBuffers[0][0]);
|
||||
colorRegion = (irb && irb->region) ? irb->region : NULL;
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* drawing to user-created FBO */
|
||||
struct intel_renderbuffer *irb;
|
||||
intelSetRenderbufferClipRects(intel);
|
||||
irb = intel_renderbuffer(fb->_ColorDrawBuffers[0][0]);
|
||||
colorRegion = (irb && irb->region) ? irb->region : NULL;
|
||||
}
|
||||
|
||||
/* Update culling direction which changes depending on the
|
||||
* orientation of the buffer:
|
||||
|
@@ -315,7 +315,7 @@ intelFinish(GLcontext * ctx)
|
||||
intelFlush(ctx);
|
||||
if (intel->batch->last_fence) {
|
||||
driFenceFinish(intel->batch->last_fence,
|
||||
0, GL_FALSE);
|
||||
DRM_FENCE_TYPE_EXE | DRM_I915_FENCE_TYPE_RW, GL_FALSE);
|
||||
driFenceUnReference(intel->batch->last_fence);
|
||||
intel->batch->last_fence = NULL;
|
||||
}
|
||||
|
@@ -189,6 +189,7 @@ struct intel_context
|
||||
struct _DriFenceObject *first_swap_fence;
|
||||
|
||||
struct intel_batchbuffer *batch;
|
||||
GLuint last_state_batch_id;
|
||||
|
||||
struct
|
||||
{
|
||||
|
@@ -75,6 +75,7 @@ intel_miptree_create(struct intel_context *intel,
|
||||
mt->cpp = compress_byte ? compress_byte : cpp;
|
||||
mt->compressed = compress_byte ? 1 : 0;
|
||||
mt->refcount = 1;
|
||||
mt->pitch = 0;
|
||||
|
||||
switch (intel->intelScreen->deviceID) {
|
||||
case PCI_CHIP_I945_G:
|
||||
@@ -83,7 +84,7 @@ intel_miptree_create(struct intel_context *intel,
|
||||
case PCI_CHIP_G33_G:
|
||||
case PCI_CHIP_Q33_G:
|
||||
case PCI_CHIP_Q35_G:
|
||||
ok = i945_miptree_layout(mt);
|
||||
ok = i945_miptree_layout(intel, mt);
|
||||
break;
|
||||
case PCI_CHIP_I915_G:
|
||||
case PCI_CHIP_I915_GM:
|
||||
@@ -93,28 +94,12 @@ intel_miptree_create(struct intel_context *intel,
|
||||
default:
|
||||
/* All the i830 chips and the i915 use this layout:
|
||||
*/
|
||||
ok = i915_miptree_layout(mt);
|
||||
ok = i915_miptree_layout(intel, mt);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ok) {
|
||||
if (!mt->compressed) {
|
||||
/* XXX: Align pitch to multiple of 64 bytes for now to allow
|
||||
* render-to-texture to work in all cases. This should probably be
|
||||
* replaced at some point by some scheme to only do this when really
|
||||
* necessary.
|
||||
*/
|
||||
mt->pitch = (mt->pitch * cpp + 63) & ~63;
|
||||
|
||||
/* XXX: At least the i915 seems very upset when the pitch is a multiple
|
||||
* of 1024 and sometimes 512 bytes - performance can drop by several
|
||||
* times. Go to the next multiple of 64 for now.
|
||||
*/
|
||||
if (!(mt->pitch & 511))
|
||||
mt->pitch += 64;
|
||||
|
||||
mt->pitch /= cpp;
|
||||
}
|
||||
assert (mt->pitch);
|
||||
|
||||
mt->region = intel_region_alloc(intel->intelScreen,
|
||||
mt->cpp, mt->pitch, mt->total_height);
|
||||
@@ -128,6 +113,42 @@ intel_miptree_create(struct intel_context *intel,
|
||||
return mt;
|
||||
}
|
||||
|
||||
/**
|
||||
* intel_miptree_pitch_align:
|
||||
*
|
||||
* @intel: intel context pointer
|
||||
*
|
||||
* @mt: the miptree to compute pitch alignment for
|
||||
*
|
||||
* @pitch: the natural pitch value
|
||||
*
|
||||
* Given @pitch, compute a larger value which accounts for
|
||||
* any necessary alignment required by the device
|
||||
*/
|
||||
|
||||
int intel_miptree_pitch_align (struct intel_context *intel,
|
||||
struct intel_mipmap_tree *mt,
|
||||
int pitch)
|
||||
{
|
||||
if (!mt->compressed) {
|
||||
/* XXX: Align pitch to multiple of 64 bytes for now to allow
|
||||
* render-to-texture to work in all cases. This should probably be
|
||||
* replaced at some point by some scheme to only do this when really
|
||||
* necessary.
|
||||
*/
|
||||
pitch = (pitch * mt->cpp + 63) & ~63;
|
||||
|
||||
/* XXX: At least the i915 seems very upset when the pitch is a multiple
|
||||
* of 1024 and sometimes 512 bytes - performance can drop by several
|
||||
* times. Go to the next multiple of the required alignment for now.
|
||||
*/
|
||||
if (!(pitch & 511))
|
||||
pitch += 64;
|
||||
|
||||
pitch /= mt->cpp;
|
||||
}
|
||||
return pitch;
|
||||
}
|
||||
|
||||
void
|
||||
intel_miptree_reference(struct intel_mipmap_tree **dst,
|
||||
|
@@ -123,6 +123,10 @@ struct intel_mipmap_tree *intel_miptree_create(struct intel_context *intel,
|
||||
GLuint cpp,
|
||||
GLuint compress_byte);
|
||||
|
||||
int intel_miptree_pitch_align (struct intel_context *intel,
|
||||
struct intel_mipmap_tree *mt,
|
||||
int pitch);
|
||||
|
||||
void intel_miptree_reference(struct intel_mipmap_tree **dst,
|
||||
struct intel_mipmap_tree *src);
|
||||
|
||||
@@ -190,8 +194,10 @@ void intel_miptree_image_copy(struct intel_context *intel,
|
||||
|
||||
/* i915_mipmap_tree.c:
|
||||
*/
|
||||
GLboolean i915_miptree_layout(struct intel_mipmap_tree *mt);
|
||||
GLboolean i945_miptree_layout(struct intel_mipmap_tree *mt);
|
||||
GLboolean i915_miptree_layout(struct intel_context *intel,
|
||||
struct intel_mipmap_tree *mt);
|
||||
GLboolean i945_miptree_layout(struct intel_context *intel,
|
||||
struct intel_mipmap_tree *mt);
|
||||
|
||||
|
||||
|
||||
|
@@ -214,7 +214,7 @@ intel_run_render(GLcontext * ctx, struct tnl_pipeline_stage *stage)
|
||||
tnl->Driver.Render.Start(ctx);
|
||||
|
||||
for (i = 0; i < VB->PrimitiveCount; i++) {
|
||||
GLuint prim = VB->Primitive[i].mode;
|
||||
GLuint prim = _tnl_translate_prim(&VB->Primitive[i]);
|
||||
GLuint start = VB->Primitive[i].start;
|
||||
GLuint length = VB->Primitive[i].count;
|
||||
|
||||
|
@@ -95,6 +95,7 @@ typedef struct
|
||||
struct _DriBufferPool *regionPool;
|
||||
struct _DriBufferPool *staticPool;
|
||||
unsigned int maxBatchSize;
|
||||
unsigned batch_id;
|
||||
GLboolean havePools;
|
||||
} intelScreenPrivate;
|
||||
|
||||
|
@@ -111,6 +111,9 @@ intelStartInlinePrimitive(struct intel_context *intel,
|
||||
BEGIN_BATCH(2, batch_flags);
|
||||
OUT_BATCH(0);
|
||||
|
||||
assert(intel->batch->id == intel->last_state_batch_id);
|
||||
assert((intel->batch->dirty_state & (1<<1)) == 0);
|
||||
|
||||
intel->prim.start_ptr = intel->batch->ptr;
|
||||
intel->prim.primitive = prim;
|
||||
intel->prim.flush = intel_flush_inline_primitive;
|
||||
|
@@ -143,13 +143,15 @@ static struct {
|
||||
{ CMD_CONST_BUFFER, "CONST_BUFFER", 1 },
|
||||
{ CMD_STATE_BASE_ADDRESS, "STATE_BASE_ADDRESS", 1 },
|
||||
{ CMD_STATE_INSN_POINTER, "STATE_INSN_POINTER", 1 },
|
||||
{ CMD_PIPELINE_SELECT, "PIPELINE_SELECT", 0, },
|
||||
{ CMD_PIPELINE_SELECT_965, "PIPELINE_SELECT", 0, },
|
||||
{ CMD_PIPELINE_SELECT_IGD, "PIPELINE_SELECT", 0,},
|
||||
{ CMD_PIPELINED_STATE_POINTERS, "PIPELINED_STATE_POINTERS", 1 },
|
||||
{ CMD_BINDING_TABLE_PTRS, "BINDING_TABLE_PTRS", 1 },
|
||||
{ CMD_VERTEX_BUFFER, "VERTEX_BUFFER", 1 },
|
||||
{ CMD_VERTEX_ELEMENT, "VERTEX_ELEMENT", 1 },
|
||||
{ CMD_INDEX_BUFFER, "INDEX_BUFFER", 1 },
|
||||
{ CMD_VF_STATISTICS, "VF_STATISTICS", 0 },
|
||||
{ CMD_VF_STATISTICS_965, "VF_STATISTICS", 0 },
|
||||
{ CMD_VF_STATISTICS_IGD, "VF_STATISTICS", 0 },
|
||||
{ CMD_DRAW_RECT, "DRAW_RECT", 1 },
|
||||
{ CMD_BLEND_CONSTANT_COLOR, "BLEND_CONSTANT_COLOR", 1 },
|
||||
{ CMD_CHROMA_KEY, "CHROMA_KEY", 1 },
|
||||
@@ -157,6 +159,7 @@ static struct {
|
||||
{ CMD_POLY_STIPPLE_OFFSET, "POLY_STIPPLE_OFFSET", 1 },
|
||||
{ CMD_POLY_STIPPLE_PATTERN, "POLY_STIPPLE_PATTERN", 1 },
|
||||
{ CMD_LINE_STIPPLE_PATTERN, "LINE_STIPPLE_PATTERN", 1 },
|
||||
{ CMD_AA_LINE_PARAMETERS, "AA_LINE_PARAMETERS", 1},
|
||||
{ CMD_GLOBAL_DEPTH_OFFSET_CLAMP, "GLOBAL_DEPTH_OFFSET_CLAMP", 1 },
|
||||
{ CMD_PIPE_CONTROL, "PIPE_CONTROL", 1 },
|
||||
{ CMD_MI_FLUSH, "MI_FLUSH", 0 },
|
||||
|
@@ -60,7 +60,7 @@ static void compile_clip_prog( struct brw_context *brw,
|
||||
|
||||
/* Begin the compilation:
|
||||
*/
|
||||
brw_init_compile(&c.func);
|
||||
brw_init_compile(brw, &c.func);
|
||||
|
||||
c.func.single_program_flow = 1;
|
||||
|
||||
|
@@ -72,6 +72,10 @@ static void upload_clip_unit( struct brw_context *brw )
|
||||
clip.clip5.viewport_xy_clip_enable = 1;
|
||||
clip.clip5.vertex_position_space = BRW_CLIP_NDCSPACE;
|
||||
clip.clip5.api_mode = BRW_CLIP_API_OGL;
|
||||
|
||||
if (BRW_IS_IGD(brw))
|
||||
clip.clip5.negative_w_clip_test = 1;
|
||||
|
||||
clip.clip6.clipper_viewport_state_ptr = 0;
|
||||
clip.viewport_xmin = -1;
|
||||
clip.viewport_xmax = 1;
|
||||
|
@@ -78,7 +78,7 @@ void brw_clip_tri_alloc_regs( struct brw_clip_compile *c,
|
||||
}
|
||||
|
||||
c->reg.t = brw_vec1_grf(i, 0);
|
||||
c->reg.loopcount = retype(brw_vec1_grf(i, 1), BRW_REGISTER_TYPE_UD);
|
||||
c->reg.loopcount = retype(brw_vec1_grf(i, 1), BRW_REGISTER_TYPE_D);
|
||||
c->reg.nr_verts = retype(brw_vec1_grf(i, 2), BRW_REGISTER_TYPE_UD);
|
||||
c->reg.planemask = retype(brw_vec1_grf(i, 3), BRW_REGISTER_TYPE_UD);
|
||||
c->reg.plane_equation = brw_vec4_grf(i, 4);
|
||||
|
@@ -262,7 +262,7 @@ void brw_clip_kill_thread(struct brw_clip_compile *c)
|
||||
c->reg.R0,
|
||||
0, /* allocate */
|
||||
0, /* used */
|
||||
0, /* msg len */
|
||||
1, /* msg len */
|
||||
0, /* response len */
|
||||
1, /* eot */
|
||||
1, /* writes complete */
|
||||
@@ -343,12 +343,14 @@ void brw_clip_init_clipmask( struct brw_clip_compile *c )
|
||||
release_tmp(c, tmp);
|
||||
}
|
||||
|
||||
/* Test for -ve rhw workaround
|
||||
*/
|
||||
brw_set_conditionalmod(p, BRW_CONDITIONAL_NZ);
|
||||
brw_AND(p, vec1(brw_null_reg()), incoming, brw_imm_ud(1<<20));
|
||||
brw_OR(p, c->reg.planemask, c->reg.planemask, brw_imm_ud(0x3f));
|
||||
brw_set_predicate_control(p, BRW_PREDICATE_NONE);
|
||||
if (!BRW_IS_IGD(p->brw)) {
|
||||
/* Test for -ve rhw workaround
|
||||
*/
|
||||
brw_set_conditionalmod(p, BRW_CONDITIONAL_NZ);
|
||||
brw_AND(p, vec1(brw_null_reg()), incoming, brw_imm_ud(1<<20));
|
||||
brw_OR(p, c->reg.planemask, c->reg.planemask, brw_imm_ud(0x3f));
|
||||
}
|
||||
|
||||
brw_set_predicate_control(p, BRW_PREDICATE_NONE);
|
||||
}
|
||||
|
||||
|
@@ -815,14 +815,16 @@
|
||||
|
||||
#define CMD_STATE_BASE_ADDRESS 0x6101
|
||||
#define CMD_STATE_INSN_POINTER 0x6102
|
||||
#define CMD_PIPELINE_SELECT 0x6104
|
||||
#define CMD_PIPELINE_SELECT_965 0x6104
|
||||
#define CMD_PIPELINE_SELECT_IGD 0x6904
|
||||
|
||||
#define CMD_PIPELINED_STATE_POINTERS 0x7800
|
||||
#define CMD_BINDING_TABLE_PTRS 0x7801
|
||||
#define CMD_VERTEX_BUFFER 0x7808
|
||||
#define CMD_VERTEX_ELEMENT 0x7809
|
||||
#define CMD_INDEX_BUFFER 0x780a
|
||||
#define CMD_VF_STATISTICS 0x780b
|
||||
#define CMD_VF_STATISTICS_965 0x780b
|
||||
#define CMD_VF_STATISTICS_IGD 0x680b
|
||||
|
||||
#define CMD_DRAW_RECT 0x7900
|
||||
#define CMD_BLEND_CONSTANT_COLOR 0x7901
|
||||
@@ -832,6 +834,7 @@
|
||||
#define CMD_POLY_STIPPLE_PATTERN 0x7907
|
||||
#define CMD_LINE_STIPPLE_PATTERN 0x7908
|
||||
#define CMD_GLOBAL_DEPTH_OFFSET_CLAMP 0x7909
|
||||
#define CMD_AA_LINE_PARAMETERS 0x790a
|
||||
|
||||
#define CMD_PIPE_CONTROL 0x7a00
|
||||
|
||||
@@ -845,6 +848,9 @@
|
||||
#define R02_PRIM_END 0x1
|
||||
#define R02_PRIM_START 0x2
|
||||
|
||||
|
||||
#define BRW_IS_IGD(brw) ((brw)->intel.intelScreen->deviceID == PCI_CHIP_IGD_GM)
|
||||
#define CMD_PIPELINE_SELECT(brw) ((BRW_IS_IGD(brw)) ? CMD_PIPELINE_SELECT_IGD : CMD_PIPELINE_SELECT_965)
|
||||
#define CMD_VF_STATISTICS(brw) ((BRW_IS_IGD(brw)) ? CMD_VF_STATISTICS_IGD : CMD_VF_STATISTICS_965)
|
||||
#define URB_SIZES(brw) ((BRW_IS_IGD(brw)) ? 384 : 256) /* 512 bit unit */
|
||||
|
||||
#endif
|
||||
|
@@ -101,8 +101,9 @@ void brw_pop_insn_state( struct brw_compile *p )
|
||||
|
||||
/***********************************************************************
|
||||
*/
|
||||
void brw_init_compile( struct brw_compile *p )
|
||||
void brw_init_compile( struct brw_context *brw, struct brw_compile *p )
|
||||
{
|
||||
p->brw = brw;
|
||||
p->nr_insn = 0;
|
||||
p->current = p->stack;
|
||||
memset(p->current, 0, sizeof(p->current[0]));
|
||||
|
@@ -105,6 +105,7 @@ struct brw_compile {
|
||||
|
||||
GLuint flag_value;
|
||||
GLboolean single_program_flow;
|
||||
struct brw_context *brw;
|
||||
};
|
||||
|
||||
|
||||
@@ -680,7 +681,7 @@ void brw_set_predicate_control_flag_value( struct brw_compile *p, GLuint value )
|
||||
void brw_set_predicate_control( struct brw_compile *p, GLuint pc );
|
||||
void brw_set_conditionalmod( struct brw_compile *p, GLuint conditional );
|
||||
|
||||
void brw_init_compile( struct brw_compile *p );
|
||||
void brw_init_compile( struct brw_context *, struct brw_compile *p );
|
||||
const GLuint *brw_get_program( struct brw_compile *p, GLuint *sz );
|
||||
|
||||
|
||||
|
@@ -318,7 +318,8 @@ static void brw_set_dp_read_message( struct brw_instruction *insn,
|
||||
insn->bits3.dp_read.end_of_thread = end_of_thread;
|
||||
}
|
||||
|
||||
static void brw_set_sampler_message( struct brw_instruction *insn,
|
||||
static void brw_set_sampler_message(struct brw_context *brw,
|
||||
struct brw_instruction *insn,
|
||||
GLuint binding_table_index,
|
||||
GLuint sampler,
|
||||
GLuint msg_type,
|
||||
@@ -328,14 +329,24 @@ static void brw_set_sampler_message( struct brw_instruction *insn,
|
||||
{
|
||||
brw_set_src1(insn, brw_imm_d(0));
|
||||
|
||||
insn->bits3.sampler.binding_table_index = binding_table_index;
|
||||
insn->bits3.sampler.sampler = sampler;
|
||||
insn->bits3.sampler.msg_type = msg_type;
|
||||
insn->bits3.sampler.return_format = BRW_SAMPLER_RETURN_FORMAT_FLOAT32;
|
||||
insn->bits3.sampler.response_length = response_length;
|
||||
insn->bits3.sampler.msg_length = msg_length;
|
||||
insn->bits3.sampler.end_of_thread = eot;
|
||||
insn->bits3.sampler.msg_target = BRW_MESSAGE_TARGET_SAMPLER;
|
||||
if (BRW_IS_IGD(brw)) {
|
||||
insn->bits3.sampler_igd.binding_table_index = binding_table_index;
|
||||
insn->bits3.sampler_igd.sampler = sampler;
|
||||
insn->bits3.sampler_igd.msg_type = msg_type;
|
||||
insn->bits3.sampler_igd.response_length = response_length;
|
||||
insn->bits3.sampler_igd.msg_length = msg_length;
|
||||
insn->bits3.sampler_igd.end_of_thread = eot;
|
||||
insn->bits3.sampler_igd.msg_target = BRW_MESSAGE_TARGET_SAMPLER;
|
||||
} else {
|
||||
insn->bits3.sampler.binding_table_index = binding_table_index;
|
||||
insn->bits3.sampler.sampler = sampler;
|
||||
insn->bits3.sampler.msg_type = msg_type;
|
||||
insn->bits3.sampler.return_format = BRW_SAMPLER_RETURN_FORMAT_FLOAT32;
|
||||
insn->bits3.sampler.response_length = response_length;
|
||||
insn->bits3.sampler.msg_length = msg_length;
|
||||
insn->bits3.sampler.end_of_thread = eot;
|
||||
insn->bits3.sampler.msg_target = BRW_MESSAGE_TARGET_SAMPLER;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -985,7 +996,7 @@ void brw_SAMPLE(struct brw_compile *p,
|
||||
|
||||
brw_set_dest(insn, dest);
|
||||
brw_set_src0(insn, src0);
|
||||
brw_set_sampler_message(insn,
|
||||
brw_set_sampler_message(p->brw, insn,
|
||||
binding_table_index,
|
||||
sampler,
|
||||
msg_type,
|
||||
|
@@ -65,7 +65,7 @@ static void compile_gs_prog( struct brw_context *brw,
|
||||
|
||||
/* Begin the compilation:
|
||||
*/
|
||||
brw_init_compile(&c.func);
|
||||
brw_init_compile(brw, &c.func);
|
||||
|
||||
c.func.single_program_flow = 1;
|
||||
|
||||
|
@@ -249,7 +249,7 @@ static void upload_depthbuffer(struct brw_context *brw)
|
||||
memset(&bd, 0, sizeof(bd));
|
||||
|
||||
bd.header.bits.opcode = CMD_DEPTH_BUFFER;
|
||||
bd.header.bits.length = sizeof(bd)/4-2;
|
||||
bd.header.bits.length = BRW_IS_IGD(brw) ? (sizeof(bd)/4-2) : (sizeof(bd)/4-3);
|
||||
bd.dword1.bits.pitch = (region->pitch * region->cpp) - 1;
|
||||
|
||||
switch (region->cpp) {
|
||||
@@ -359,6 +359,33 @@ const struct brw_tracked_state brw_polygon_stipple_offset = {
|
||||
.update = upload_polygon_stipple_offset
|
||||
};
|
||||
|
||||
/**********************************************************************
|
||||
* AA Line parameters
|
||||
*/
|
||||
static void upload_aa_line_parameters(struct brw_context *brw)
|
||||
{
|
||||
struct brw_aa_line_parameters balp;
|
||||
|
||||
if (!BRW_IS_IGD(brw))
|
||||
return;
|
||||
|
||||
/* use legacy aa line coverage computation */
|
||||
memset(&balp, 0, sizeof(balp));
|
||||
balp.header.opcode = CMD_AA_LINE_PARAMETERS;
|
||||
balp.header.length = sizeof(balp) / 4 - 2;
|
||||
|
||||
BRW_CACHED_BATCH_STRUCT(brw, &balp);
|
||||
}
|
||||
|
||||
const struct brw_tracked_state brw_aa_line_parameters = {
|
||||
.dirty = {
|
||||
.mesa = 0,
|
||||
.brw = BRW_NEW_CONTEXT,
|
||||
.cache = 0
|
||||
},
|
||||
.update = upload_aa_line_parameters
|
||||
};
|
||||
|
||||
/***********************************************************************
|
||||
* Line stipple packet
|
||||
*/
|
||||
@@ -441,7 +468,7 @@ static void upload_invarient_state( struct brw_context *brw )
|
||||
struct brw_pipeline_select ps;
|
||||
|
||||
memset(&ps, 0, sizeof(ps));
|
||||
ps.header.opcode = CMD_PIPELINE_SELECT;
|
||||
ps.header.opcode = CMD_PIPELINE_SELECT(brw);
|
||||
ps.header.pipeline_select = 0;
|
||||
BRW_BATCH_STRUCT(brw, &ps);
|
||||
}
|
||||
@@ -477,7 +504,7 @@ static void upload_invarient_state( struct brw_context *brw )
|
||||
struct brw_vf_statistics vfs;
|
||||
memset(&vfs, 0, sizeof(vfs));
|
||||
|
||||
vfs.opcode = CMD_VF_STATISTICS;
|
||||
vfs.opcode = CMD_VF_STATISTICS(brw);
|
||||
if (INTEL_DEBUG & DEBUG_STATS)
|
||||
vfs.statistics_enable = 1;
|
||||
|
||||
|
@@ -57,7 +57,7 @@ static void compile_sf_prog( struct brw_context *brw,
|
||||
|
||||
/* Begin the compilation:
|
||||
*/
|
||||
brw_init_compile(&c.func);
|
||||
brw_init_compile(brw, &c.func);
|
||||
|
||||
c.key = *key;
|
||||
c.nr_attrs = brw_count_bits(c.key.attrs);
|
||||
@@ -82,15 +82,15 @@ static void compile_sf_prog( struct brw_context *brw,
|
||||
switch (key->primitive) {
|
||||
case SF_TRIANGLES:
|
||||
c.nr_verts = 3;
|
||||
brw_emit_tri_setup( &c );
|
||||
brw_emit_tri_setup( &c, GL_TRUE );
|
||||
break;
|
||||
case SF_LINES:
|
||||
c.nr_verts = 2;
|
||||
brw_emit_line_setup( &c );
|
||||
brw_emit_line_setup( &c, GL_TRUE );
|
||||
break;
|
||||
case SF_POINTS:
|
||||
c.nr_verts = 1;
|
||||
brw_emit_point_setup( &c );
|
||||
brw_emit_point_setup( &c, GL_TRUE );
|
||||
break;
|
||||
case SF_UNFILLED_TRIS:
|
||||
c.nr_verts = 3;
|
||||
|
@@ -97,9 +97,9 @@ struct brw_sf_compile {
|
||||
};
|
||||
|
||||
|
||||
void brw_emit_tri_setup( struct brw_sf_compile *c );
|
||||
void brw_emit_line_setup( struct brw_sf_compile *c );
|
||||
void brw_emit_point_setup( struct brw_sf_compile *c );
|
||||
void brw_emit_tri_setup( struct brw_sf_compile *c, GLboolean allocate );
|
||||
void brw_emit_line_setup( struct brw_sf_compile *c, GLboolean allocate );
|
||||
void brw_emit_point_setup( struct brw_sf_compile *c, GLboolean allocate );
|
||||
void brw_emit_anyprim_setup( struct brw_sf_compile *c );
|
||||
|
||||
#endif
|
||||
|
@@ -343,13 +343,16 @@ static GLboolean calculate_masks( struct brw_sf_compile *c,
|
||||
|
||||
|
||||
|
||||
void brw_emit_tri_setup( struct brw_sf_compile *c )
|
||||
void brw_emit_tri_setup( struct brw_sf_compile *c, GLboolean allocate)
|
||||
{
|
||||
struct brw_compile *p = &c->func;
|
||||
GLuint i;
|
||||
|
||||
c->nr_verts = 3;
|
||||
alloc_regs(c);
|
||||
|
||||
if (allocate)
|
||||
alloc_regs(c);
|
||||
|
||||
invert_det(c);
|
||||
copy_z_inv_w(c);
|
||||
|
||||
@@ -428,14 +431,17 @@ void brw_emit_tri_setup( struct brw_sf_compile *c )
|
||||
|
||||
|
||||
|
||||
void brw_emit_line_setup( struct brw_sf_compile *c )
|
||||
void brw_emit_line_setup( struct brw_sf_compile *c, GLboolean allocate)
|
||||
{
|
||||
struct brw_compile *p = &c->func;
|
||||
GLuint i;
|
||||
|
||||
|
||||
c->nr_verts = 2;
|
||||
alloc_regs(c);
|
||||
|
||||
if (allocate)
|
||||
alloc_regs(c);
|
||||
|
||||
invert_det(c);
|
||||
copy_z_inv_w(c);
|
||||
|
||||
@@ -497,17 +503,19 @@ void brw_emit_line_setup( struct brw_sf_compile *c )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Points setup - several simplifications as all attributes are
|
||||
* constant across the face of the point (point sprites excluded!)
|
||||
*/
|
||||
void brw_emit_point_setup( struct brw_sf_compile *c )
|
||||
void brw_emit_point_setup( struct brw_sf_compile *c, GLboolean allocate)
|
||||
{
|
||||
struct brw_compile *p = &c->func;
|
||||
GLuint i;
|
||||
|
||||
c->nr_verts = 1;
|
||||
alloc_regs(c);
|
||||
|
||||
if (allocate)
|
||||
alloc_regs(c);
|
||||
|
||||
copy_z_inv_w(c);
|
||||
|
||||
brw_MOV(p, c->m1Cx, brw_imm_ud(0)); /* zero - move out of loop */
|
||||
@@ -564,7 +572,10 @@ void brw_emit_anyprim_setup( struct brw_sf_compile *c )
|
||||
struct brw_reg primmask;
|
||||
struct brw_instruction *jmp;
|
||||
struct brw_reg v1_null_ud = vec1(retype(brw_null_reg(), BRW_REGISTER_TYPE_UD));
|
||||
|
||||
GLuint saveflag;
|
||||
|
||||
c->nr_verts = 3;
|
||||
alloc_regs(c);
|
||||
|
||||
primmask = retype(get_element(c->tmp, 0), BRW_REGISTER_TYPE_UD);
|
||||
@@ -582,10 +593,15 @@ void brw_emit_anyprim_setup( struct brw_sf_compile *c )
|
||||
(1<<_3DPRIM_TRIFAN_NOSTIPPLE)));
|
||||
jmp = brw_JMPI(p, ip, ip, brw_imm_w(0));
|
||||
{
|
||||
brw_push_insn_state(p);
|
||||
brw_emit_tri_setup( c );
|
||||
saveflag = p->flag_value;
|
||||
brw_push_insn_state(p);
|
||||
brw_emit_tri_setup( c, GL_FALSE );
|
||||
brw_pop_insn_state(p);
|
||||
/* note - thread killed in subroutine */
|
||||
p->flag_value = saveflag;
|
||||
/* note - thread killed in subroutine, so must
|
||||
* restore the flag which is changed when building
|
||||
* the subroutine. fix #13240
|
||||
*/
|
||||
}
|
||||
brw_land_fwd_jump(p, jmp);
|
||||
|
||||
@@ -598,14 +614,16 @@ void brw_emit_anyprim_setup( struct brw_sf_compile *c )
|
||||
(1<<_3DPRIM_LINESTRIP_CONT_BF)));
|
||||
jmp = brw_JMPI(p, ip, ip, brw_imm_w(0));
|
||||
{
|
||||
saveflag = p->flag_value;
|
||||
brw_push_insn_state(p);
|
||||
brw_emit_line_setup( c );
|
||||
brw_emit_line_setup( c, GL_FALSE );
|
||||
brw_pop_insn_state(p);
|
||||
p->flag_value = saveflag;
|
||||
/* note - thread killed in subroutine */
|
||||
}
|
||||
brw_land_fwd_jump(p, jmp);
|
||||
|
||||
brw_emit_point_setup( c );
|
||||
brw_emit_point_setup( c, GL_FALSE );
|
||||
}
|
||||
|
||||
|
||||
|
@@ -185,7 +185,8 @@ static void upload_sf_unit( struct brw_context *brw )
|
||||
sf.sf6.point_rast_rule = 1; /* opengl conventions */
|
||||
sf.sf7.point_size = brw->attribs.Point->_Size * (1<<3);
|
||||
sf.sf7.use_point_size_state = !brw->attribs.Point->_Attenuated;
|
||||
|
||||
sf.sf7.aa_line_distance_mode = 0;
|
||||
|
||||
/* might be BRW_NEW_PRIMITIVE if we have to adjust pv for polygons:
|
||||
*/
|
||||
sf.sf7.trifan_pv = 2;
|
||||
|
@@ -50,6 +50,7 @@ const struct brw_tracked_state brw_gs_prog;
|
||||
const struct brw_tracked_state brw_gs_unit;
|
||||
const struct brw_tracked_state brw_drawing_rect;
|
||||
const struct brw_tracked_state brw_line_stipple;
|
||||
const struct brw_tracked_state brw_aa_line_parameters;
|
||||
const struct brw_tracked_state brw_pipelined_state_pointers;
|
||||
const struct brw_tracked_state brw_binding_table_pointers;
|
||||
const struct brw_tracked_state brw_depthbuffer;
|
||||
|
@@ -103,6 +103,7 @@ static void clear_batch_cache( struct brw_context *brw )
|
||||
|
||||
void brw_clear_batch_cache_flush( struct brw_context *brw )
|
||||
{
|
||||
bmFinishFenceLock(&(brw->intel), bmSetFenceLock(&(brw->intel)));
|
||||
clear_batch_cache(brw);
|
||||
|
||||
brw->wrap = 0;
|
||||
|
@@ -92,7 +92,7 @@ const struct brw_tracked_state *atoms[] =
|
||||
&brw_polygon_stipple_offset,
|
||||
|
||||
&brw_line_stipple,
|
||||
|
||||
&brw_aa_line_parameters,
|
||||
/* Ordering of the commands below is documented as fixed.
|
||||
*/
|
||||
#if 0
|
||||
|
@@ -141,7 +141,8 @@ struct brw_depthbuffer
|
||||
struct {
|
||||
GLuint pitch:18;
|
||||
GLuint format:3;
|
||||
GLuint pad:4;
|
||||
GLuint pad:2;
|
||||
GLuint software_tiled_rendering_mode:2;
|
||||
GLuint depth_offset_disable:1;
|
||||
GLuint tile_walk:1;
|
||||
GLuint tiled_surface:1;
|
||||
@@ -166,12 +167,20 @@ struct brw_depthbuffer
|
||||
|
||||
union {
|
||||
struct {
|
||||
GLuint pad:12;
|
||||
GLuint min_array_element:9;
|
||||
GLuint pad:10;
|
||||
GLuint min_array_element:11;
|
||||
GLuint depth:11;
|
||||
} bits;
|
||||
GLuint dword;
|
||||
} dword4;
|
||||
|
||||
union {
|
||||
struct {
|
||||
GLuint xoffset:16;
|
||||
GLuint yoffset:16;
|
||||
} bits;
|
||||
GLuint dword;
|
||||
} dword5; /* NEW in Integrated Graphics Device */
|
||||
};
|
||||
|
||||
struct brw_drawrect
|
||||
@@ -213,6 +222,25 @@ struct brw_indexbuffer
|
||||
GLuint buffer_end;
|
||||
};
|
||||
|
||||
/* NEW in Integrated Graphics Device */
|
||||
struct brw_aa_line_parameters
|
||||
{
|
||||
struct header header;
|
||||
|
||||
struct {
|
||||
GLuint aa_coverage_scope:8;
|
||||
GLuint pad0:8;
|
||||
GLuint aa_coverage_bias:8;
|
||||
GLuint pad1:8;
|
||||
} bits0;
|
||||
|
||||
struct {
|
||||
GLuint aa_coverage_endcap_slope:8;
|
||||
GLuint pad0:8;
|
||||
GLuint aa_coverage_endcap_bias:8;
|
||||
GLuint pad1:8;
|
||||
} bits1;
|
||||
};
|
||||
|
||||
struct brw_line_stipple
|
||||
{
|
||||
@@ -315,7 +343,8 @@ struct brw_pipe_control
|
||||
{
|
||||
GLuint length:8;
|
||||
GLuint notify_enable:1;
|
||||
GLuint pad:2;
|
||||
GLuint texture_cache_flush_enable:1;
|
||||
GLuint indirect_state_pointers_disable:1;
|
||||
GLuint instruction_state_cache_flush_enable:1;
|
||||
GLuint write_cache_flush_enable:1;
|
||||
GLuint depth_stall_enable:1;
|
||||
@@ -547,8 +576,8 @@ struct brw_clip_unit_state
|
||||
GLuint pad1:1;
|
||||
GLuint urb_entry_allocation_size:5;
|
||||
GLuint pad2:1;
|
||||
GLuint max_threads:1; /* may be less */
|
||||
GLuint pad3:6;
|
||||
GLuint max_threads:5; /* may be less */
|
||||
GLuint pad3:2;
|
||||
} thread4;
|
||||
|
||||
struct
|
||||
@@ -557,7 +586,7 @@ struct brw_clip_unit_state
|
||||
GLuint clip_mode:3;
|
||||
GLuint userclip_enable_flags:8;
|
||||
GLuint userclip_must_clip:1;
|
||||
GLuint pad1:1;
|
||||
GLuint negative_w_clip_test:1;
|
||||
GLuint guard_band_enable:1;
|
||||
GLuint viewport_z_clip_enable:1;
|
||||
GLuint viewport_xy_clip_enable:1;
|
||||
@@ -724,7 +753,8 @@ struct brw_sf_unit_state
|
||||
GLuint use_point_size_state:1;
|
||||
GLuint subpixel_precision:1;
|
||||
GLuint sprite_point:1;
|
||||
GLuint pad0:11;
|
||||
GLuint pad0:10;
|
||||
GLuint aa_line_distance_mode:1;
|
||||
GLuint trifan_pv:2;
|
||||
GLuint linestrip_pv:2;
|
||||
GLuint tristrip_pv:2;
|
||||
@@ -749,8 +779,8 @@ struct brw_gs_unit_state
|
||||
GLuint pad1:1;
|
||||
GLuint urb_entry_allocation_size:5;
|
||||
GLuint pad2:1;
|
||||
GLuint max_threads:1;
|
||||
GLuint pad3:6;
|
||||
GLuint max_threads:5;
|
||||
GLuint pad3:2;
|
||||
} thread4;
|
||||
|
||||
struct
|
||||
@@ -764,9 +794,14 @@ struct brw_gs_unit_state
|
||||
struct
|
||||
{
|
||||
GLuint max_vp_index:4;
|
||||
GLuint pad0:26;
|
||||
GLuint reorder_enable:1;
|
||||
GLuint pad0:12;
|
||||
GLuint svbi_post_inc_value:10;
|
||||
GLuint pad1:1;
|
||||
GLuint svbi_post_inc_enable:1;
|
||||
GLuint svbi_payload:1;
|
||||
GLuint discard_adjaceny:1;
|
||||
GLuint reorder_enable:1;
|
||||
GLuint pad2:1;
|
||||
} gs6;
|
||||
};
|
||||
|
||||
@@ -786,8 +821,8 @@ struct brw_vs_unit_state
|
||||
GLuint pad1:1;
|
||||
GLuint urb_entry_allocation_size:5;
|
||||
GLuint pad2:1;
|
||||
GLuint max_threads:4;
|
||||
GLuint pad3:3;
|
||||
GLuint max_threads:6;
|
||||
GLuint pad3:1;
|
||||
} thread4;
|
||||
|
||||
struct
|
||||
@@ -815,7 +850,7 @@ struct brw_wm_unit_state
|
||||
|
||||
struct {
|
||||
GLuint stats_enable:1;
|
||||
GLuint pad0:1;
|
||||
GLuint depth_buffer_clear:1;
|
||||
GLuint sampler_count:3;
|
||||
GLuint sampler_state_pointer:27;
|
||||
} wm4;
|
||||
@@ -825,7 +860,9 @@ struct brw_wm_unit_state
|
||||
GLuint enable_8_pix:1;
|
||||
GLuint enable_16_pix:1;
|
||||
GLuint enable_32_pix:1;
|
||||
GLuint pad0:7;
|
||||
GLuint enable_con_32_pix:1;
|
||||
GLuint enable_con_64_pix:1;
|
||||
GLuint pad0:5;
|
||||
GLuint legacy_global_depth_bias:1;
|
||||
GLuint line_stipple:1;
|
||||
GLuint depth_offset:1;
|
||||
@@ -838,9 +875,8 @@ struct brw_wm_unit_state
|
||||
GLuint program_computes_depth:1;
|
||||
GLuint program_uses_killpixel:1;
|
||||
GLuint legacy_line_rast: 1;
|
||||
GLuint pad1:1;
|
||||
GLuint max_threads:6;
|
||||
GLuint pad2:1;
|
||||
GLuint transposed_urb_read_enable:1;
|
||||
GLuint max_threads:7;
|
||||
} wm5;
|
||||
|
||||
GLfloat global_depth_offset_constant;
|
||||
@@ -978,10 +1014,26 @@ struct brw_surface_state
|
||||
} ss3;
|
||||
|
||||
struct {
|
||||
GLuint pad:19;
|
||||
GLuint min_array_elt:9;
|
||||
GLuint multisample_position_palette_index:3;
|
||||
GLuint pad1:1;
|
||||
GLuint num_multisamples:3;
|
||||
GLuint pad0:1;
|
||||
GLuint render_target_view_extent:9;
|
||||
GLuint min_array_elt:11;
|
||||
GLuint min_lod:4;
|
||||
} ss4;
|
||||
|
||||
struct {
|
||||
GLuint pad1:16;
|
||||
GLuint llc_mapping:1;
|
||||
GLuint mlc_mapping:1;
|
||||
GLuint gfdt:1;
|
||||
GLuint gfdt_src:1;
|
||||
GLuint y_offset:4;
|
||||
GLuint pad0:1;
|
||||
GLuint x_offset:7;
|
||||
} ss5; /* NEW in Integrated Graphics Device */
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -1301,6 +1353,17 @@ struct brw_instruction
|
||||
GLuint end_of_thread:1;
|
||||
} sampler;
|
||||
|
||||
struct {
|
||||
GLuint binding_table_index:8;
|
||||
GLuint sampler:4;
|
||||
GLuint msg_type:4;
|
||||
GLuint response_length:4;
|
||||
GLuint msg_length:4;
|
||||
GLuint msg_target:4;
|
||||
GLuint pad1:3;
|
||||
GLuint end_of_thread:1;
|
||||
} sampler_igd;
|
||||
|
||||
struct brw_urb_immediate urb;
|
||||
|
||||
struct {
|
||||
|
@@ -38,7 +38,7 @@
|
||||
#include "macros.h"
|
||||
|
||||
|
||||
GLboolean brw_miptree_layout( struct intel_mipmap_tree *mt )
|
||||
GLboolean brw_miptree_layout( struct intel_context *intel, struct intel_mipmap_tree *mt )
|
||||
{
|
||||
/* XXX: these vary depending on image format:
|
||||
*/
|
||||
@@ -102,7 +102,7 @@ GLboolean brw_miptree_layout( struct intel_mipmap_tree *mt )
|
||||
}
|
||||
|
||||
default:
|
||||
i945_miptree_layout_2d(mt);
|
||||
i945_miptree_layout_2d(intel, mt);
|
||||
break;
|
||||
}
|
||||
DBG("%s: %dx%dx%d - sz 0x%x\n", __FUNCTION__,
|
||||
|
@@ -69,7 +69,7 @@ static GLboolean check_urb_layout( struct brw_context *brw )
|
||||
brw->urb.sf_start = brw->urb.clip_start + brw->urb.nr_clip_entries * brw->urb.vsize;
|
||||
brw->urb.cs_start = brw->urb.sf_start + brw->urb.nr_sf_entries * brw->urb.sfsize;
|
||||
|
||||
return brw->urb.cs_start + brw->urb.nr_cs_entries * brw->urb.csize <= 256;
|
||||
return brw->urb.cs_start + brw->urb.nr_cs_entries * brw->urb.csize <= URB_SIZES(brw);
|
||||
}
|
||||
|
||||
/* Most minimal update, forces re-emit of URB fence packet after GS
|
||||
@@ -153,7 +153,7 @@ static void recalculate_urb_fence( struct brw_context *brw )
|
||||
brw->urb.clip_start,
|
||||
brw->urb.sf_start,
|
||||
brw->urb.cs_start,
|
||||
256);
|
||||
URB_SIZES(brw));
|
||||
|
||||
brw->state.dirty.brw |= BRW_NEW_URB_FENCE;
|
||||
}
|
||||
@@ -191,13 +191,13 @@ void brw_upload_urb_fence(struct brw_context *brw)
|
||||
/* The ordering below is correct, not the layout in the
|
||||
* instruction.
|
||||
*
|
||||
* There are 256 urb reg pairs in total.
|
||||
* There are 256/384 urb reg pairs in total.
|
||||
*/
|
||||
uf.bits0.vs_fence = brw->urb.gs_start;
|
||||
uf.bits0.gs_fence = brw->urb.clip_start;
|
||||
uf.bits0.clp_fence = brw->urb.sf_start;
|
||||
uf.bits1.sf_fence = brw->urb.cs_start;
|
||||
uf.bits1.cs_fence = 256;
|
||||
uf.bits1.cs_fence = URB_SIZES(brw);
|
||||
|
||||
BRW_BATCH_STRUCT(brw, &uf);
|
||||
}
|
||||
|
@@ -49,7 +49,7 @@ static void do_vs_prog( struct brw_context *brw,
|
||||
memset(&c, 0, sizeof(c));
|
||||
memcpy(&c.key, key, sizeof(*key));
|
||||
|
||||
brw_init_compile(&c.func);
|
||||
brw_init_compile(brw, &c.func);
|
||||
c.vp = vp;
|
||||
|
||||
c.prog_data.outputs_written = vp->program.Base.OutputsWritten;
|
||||
|
@@ -845,7 +845,7 @@ static void emit_vertex_write( struct brw_vs_compile *c)
|
||||
* Later, clipping will detect ucp[6] and ensure the primitive is
|
||||
* clipped against all fixed planes.
|
||||
*/
|
||||
if (!c->key.know_w_is_one) {
|
||||
if (!BRW_IS_IGD(p->brw) && !c->key.know_w_is_one) {
|
||||
brw_CMP(p,
|
||||
vec8(brw_null_reg()),
|
||||
BRW_CONDITIONAL_L,
|
||||
|
@@ -150,7 +150,6 @@ static void do_wm_prog( struct brw_context *brw,
|
||||
c->fp = fp;
|
||||
c->env_param = brw->intel.ctx.FragmentProgram.Parameters;
|
||||
|
||||
|
||||
/* Augment fragment program. Add instructions for pre- and
|
||||
* post-fragment-program tasks such as interpolation and fogging.
|
||||
*/
|
||||
@@ -175,7 +174,7 @@ static void do_wm_prog( struct brw_context *brw,
|
||||
|
||||
/* This is where we start emitting gen4 code:
|
||||
*/
|
||||
brw_init_compile(&c->func);
|
||||
brw_init_compile(brw, &c->func);
|
||||
|
||||
brw_wm_pass2(c);
|
||||
|
||||
|
@@ -777,6 +777,7 @@ static void emit_kil( struct brw_wm_compile *c,
|
||||
brw_push_insn_state(p);
|
||||
brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_GE, arg0[i], brw_imm_f(0));
|
||||
brw_set_predicate_control_flag_value(p, 0xff);
|
||||
brw_set_compression_control(p, BRW_COMPRESSION_NONE);
|
||||
brw_AND(p, r0uw, brw_flag_reg(), r0uw);
|
||||
brw_pop_insn_state(p);
|
||||
}
|
||||
|
@@ -704,6 +704,9 @@ void bmDeleteBuffers(struct intel_context *intel, unsigned n, struct buffer **bu
|
||||
if (buf && buf->block)
|
||||
free_block(intel, buf->block);
|
||||
|
||||
if (buf && buf->backing_store)
|
||||
free_backing_store(intel, buf);
|
||||
|
||||
if (buf)
|
||||
free(buf);
|
||||
}
|
||||
|
@@ -118,6 +118,9 @@ static const GLubyte *intelGetString( GLcontext *ctx, GLenum name )
|
||||
case PCI_CHIP_I965_GM:
|
||||
chipset = "Intel(R) 965GM"; break;
|
||||
break;
|
||||
case PCI_CHIP_IGD_GM:
|
||||
chipset = "Intel(R) Integrated Graphics Device";
|
||||
break;
|
||||
default:
|
||||
chipset = "Unknown Intel Chipset"; break;
|
||||
}
|
||||
|
@@ -387,6 +387,8 @@ extern int INTEL_DEBUG;
|
||||
#define PCI_CHIP_I946_GZ 0x2972
|
||||
#define PCI_CHIP_I965_GM 0x2A02
|
||||
|
||||
#define PCI_CHIP_IGD_GM 0x2A42
|
||||
|
||||
|
||||
/* ================================================================
|
||||
* intel_context.c:
|
||||
|
@@ -91,7 +91,7 @@ struct intel_mipmap_tree *intel_miptree_create( struct intel_context *intel,
|
||||
default:
|
||||
if (INTEL_DEBUG & DEBUG_TEXTURE)
|
||||
_mesa_printf("assuming BRW texture layouts\n");
|
||||
ok = brw_miptree_layout( mt );
|
||||
ok = brw_miptree_layout( intel, mt );
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -110,6 +110,29 @@ struct intel_mipmap_tree *intel_miptree_create( struct intel_context *intel,
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* intel_miptree_pitch_align:
|
||||
*
|
||||
* @intel: intel context pointer
|
||||
*
|
||||
* @mt: the miptree to compute pitch alignment for
|
||||
*
|
||||
* @pitch: the natural pitch value
|
||||
*
|
||||
* Given @pitch, compute a larger value which accounts for
|
||||
* any necessary alignment required by the device
|
||||
*/
|
||||
|
||||
int intel_miptree_pitch_align (struct intel_context *intel,
|
||||
struct intel_mipmap_tree *mt,
|
||||
int pitch)
|
||||
{
|
||||
if (!mt->compressed)
|
||||
pitch = ((pitch * mt->cpp + 3) & ~3) / mt->cpp;
|
||||
|
||||
return pitch;
|
||||
}
|
||||
|
||||
|
||||
void intel_miptree_destroy( struct intel_context *intel,
|
||||
struct intel_mipmap_tree *mt )
|
||||
|
@@ -115,6 +115,10 @@ struct intel_mipmap_tree *intel_miptree_create( struct intel_context *intel,
|
||||
GLuint cpp,
|
||||
GLboolean compressed);
|
||||
|
||||
int intel_miptree_pitch_align (struct intel_context *intel,
|
||||
struct intel_mipmap_tree *mt,
|
||||
int pitch);
|
||||
|
||||
void intel_miptree_destroy( struct intel_context *intel,
|
||||
struct intel_mipmap_tree *mt );
|
||||
|
||||
@@ -159,7 +163,8 @@ GLboolean intel_miptree_image_data(struct intel_context *intel,
|
||||
*/
|
||||
GLboolean i915_miptree_layout( struct intel_mipmap_tree *mt );
|
||||
GLboolean i945_miptree_layout( struct intel_mipmap_tree *mt );
|
||||
GLboolean brw_miptree_layout( struct intel_mipmap_tree *mt );
|
||||
GLboolean brw_miptree_layout( struct intel_context *intel,
|
||||
struct intel_mipmap_tree *mt );
|
||||
|
||||
|
||||
|
||||
|
@@ -40,7 +40,7 @@ static int align(int value, int alignment)
|
||||
return (value + alignment - 1) & ~(alignment - 1);
|
||||
}
|
||||
|
||||
void i945_miptree_layout_2d( struct intel_mipmap_tree *mt )
|
||||
void i945_miptree_layout_2d( struct intel_context *intel, struct intel_mipmap_tree *mt )
|
||||
{
|
||||
GLint align_h = 2, align_w = 4;
|
||||
GLuint level;
|
||||
@@ -67,7 +67,7 @@ void i945_miptree_layout_2d( struct intel_mipmap_tree *mt )
|
||||
/* Pitch must be a whole number of dwords, even though we
|
||||
* express it in texels.
|
||||
*/
|
||||
mt->pitch = align(mt->pitch * mt->cpp, 4) / mt->cpp;
|
||||
mt->pitch = intel_miptree_pitch_align (intel, mt, mt->pitch);
|
||||
mt->total_height = 0;
|
||||
|
||||
for ( level = mt->first_level ; level <= mt->last_level ; level++ ) {
|
||||
|
@@ -38,4 +38,4 @@ static GLuint minify( GLuint d )
|
||||
return MAX2(1, d>>1);
|
||||
}
|
||||
|
||||
extern void i945_miptree_layout_2d( struct intel_mipmap_tree *mt );
|
||||
extern void i945_miptree_layout_2d( struct intel_context *intel, struct intel_mipmap_tree *mt );
|
||||
|
@@ -144,7 +144,7 @@ static GLboolean mga_run_render( GLcontext *ctx,
|
||||
|
||||
for (i = 0 ; i < VB->PrimitiveCount ; i++)
|
||||
{
|
||||
GLuint prim = VB->Primitive[i].mode;
|
||||
GLuint prim = _tnl_translate_prim(&VB->Primitive[i]);
|
||||
GLuint start = VB->Primitive[i].start;
|
||||
GLuint length = VB->Primitive[i].count;
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user