Compare commits
355 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
1bdf31e8da | ||
|
ecf0bef4cd | ||
|
60fa18b90f | ||
|
62058968e7 | ||
|
1fa6c87c88 | ||
|
00d310a130 | ||
|
906f670f1a | ||
|
9ae2499be2 | ||
|
9b3ac17991 | ||
|
d7d47d6c0b | ||
|
29f07f6461 | ||
|
1f18137d28 | ||
|
7722a54e60 | ||
|
bc507471db | ||
|
42d1a7b3de | ||
|
237d6fa97a | ||
|
0e9b79c22a | ||
|
7a18f005ed | ||
|
95a3724c69 | ||
|
98e8fb84de | ||
|
5b5c436c65 | ||
|
970df845ef | ||
|
32f4a83fe8 | ||
|
2c1998b3b9 | ||
|
a3337a66ef | ||
|
25ba654229 | ||
|
733478975d | ||
|
ea72e3cda8 | ||
|
835205e295 | ||
|
2a45566587 | ||
|
68060d6bfd | ||
|
fd35fab340 | ||
|
658d994473 | ||
|
8a8ccc00b5 | ||
|
21364bd09d | ||
|
6b2c771ddd | ||
|
22ff4ec969 | ||
|
228da884c9 | ||
|
c0009739bf | ||
|
bb7d993953 | ||
|
172de77b12 | ||
|
6b151886fd | ||
|
436db5df9c | ||
|
5459781715 | ||
|
b95767a57a | ||
|
f60e81ecb2 | ||
|
d15ce8dd29 | ||
|
449b301eec | ||
|
4464ee1a9a | ||
|
439628318b | ||
|
00c44de1a6 | ||
|
e4f88bcad3 | ||
|
0092375714 | ||
|
c4d37ed43a | ||
|
242a18dc46 | ||
|
0abee468f8 | ||
|
72ea656dad | ||
|
30b199f867 | ||
|
9b242a03d5 | ||
|
8317a43a75 | ||
|
625fdf58c6 | ||
|
5f776f2a7d | ||
|
d2e633a8bd | ||
|
135501c201 | ||
|
681f4820ab | ||
|
4b7ad91990 | ||
|
cd114ba503 | ||
|
b8cc97ed26 | ||
|
53a3e743ae | ||
|
a31eec0d10 | ||
|
6c85918159 | ||
|
eaad245418 | ||
|
0a77734c62 | ||
|
8d0d4381da | ||
|
a0eefc9bd0 | ||
|
2af0708c85 | ||
|
8fb8b8528d | ||
|
0ebdfa31bc | ||
|
ab68b00453 | ||
|
a895cce693 | ||
|
23a3753a28 | ||
|
b53035e10d | ||
|
b2fbf8225b | ||
|
bf7b347c10 | ||
|
7e90db0ddc | ||
|
521819f29c | ||
|
8b4315cb47 | ||
|
986319cd20 | ||
|
c3fd76ce09 | ||
|
08fa61dab6 | ||
|
8d1f1eae93 | ||
|
b9cc9166cf | ||
|
07210d5c77 | ||
|
57a6e6092f | ||
|
5b09cf5c57 | ||
|
eb0fd67f6a | ||
|
c6dfde2136 | ||
|
71bd5d424c | ||
|
33e1019d95 | ||
|
ab94d6f902 | ||
|
5becf89a17 | ||
|
13a2d4a985 | ||
|
f2d166583d | ||
|
49d2c552a5 | ||
|
a864b15b83 | ||
|
e458c3ddbb | ||
|
b8a46f910d | ||
|
eca2a91a9b | ||
|
1f083e1839 | ||
|
9bbf2a343f | ||
|
38dfedccb2 | ||
|
1e0e116d6d | ||
|
aaadd4c111 | ||
|
0d31b130bb | ||
|
e4b1dce9ec | ||
|
0f87fe948a | ||
|
f484fc7476 | ||
|
b9c7773e0d | ||
|
7d2ff4ae77 | ||
|
1bbf124ff8 | ||
|
ca7560765c | ||
|
878d701da4 | ||
|
c19b963ad6 | ||
|
95185c7fe2 | ||
|
e1221a8811 | ||
|
f732b5a999 | ||
|
0129d5297b | ||
|
27f00df2b7 | ||
|
8dcfe15a9a | ||
|
2c0e00de23 | ||
|
1895de7a32 | ||
|
7dc636dd77 | ||
|
e42b822fec | ||
|
0501cee136 | ||
|
38ae26b709 | ||
|
de798938d4 | ||
|
acd2a03ffb | ||
|
d1786cea1c | ||
|
934c7a0661 | ||
|
2ba0d0a5e8 | ||
|
1cf8f9599c | ||
|
2781baaa64 | ||
|
a74400ca30 | ||
|
a5e2074fdd | ||
|
fad6e2ea5a | ||
|
a73c667069 | ||
|
e87f79c8a4 | ||
|
fa8cfbfb64 | ||
|
446a67b74e | ||
|
d5c84929a7 | ||
|
dd9b78e212 | ||
|
2cadae90c0 | ||
|
ffb0f94136 | ||
|
badd2900ea | ||
|
6c032dd837 | ||
|
70c5be6c91 | ||
|
3b92831fab | ||
|
e6d07585f8 | ||
|
4bd0f04531 | ||
|
45716cffbe | ||
|
ae633fa0ef | ||
|
25861dc7f3 | ||
|
3fc660e896 | ||
|
0fbf3562d1 | ||
|
13476840a6 | ||
|
5336f7f5a5 | ||
|
a470104763 | ||
|
338cf7128c | ||
|
36dab12726 | ||
|
dc253d3100 | ||
|
9f362a587e | ||
|
8b5257a96f | ||
|
94e12df164 | ||
|
ac6a24001b | ||
|
b7e69912fa | ||
|
268a2c1a8a | ||
|
28b95b2b01 | ||
|
0a6ef34741 | ||
|
545ecf6542 | ||
|
a88f4914a3 | ||
|
ad2b567f51 | ||
|
37c2c9688c | ||
|
012b2057e8 | ||
|
eb2a04b467 | ||
|
060e22c212 | ||
|
2330b7267c | ||
|
7a7377a090 | ||
|
d79d69c933 | ||
|
d072260921 | ||
|
942c1b8de1 | ||
|
0502da1ade | ||
|
bb38f931a8 | ||
|
726ce042f8 | ||
|
4ebd2c7c09 | ||
|
e7794048ca | ||
|
e20346bfc8 | ||
|
2217a70aaf | ||
|
6c1a9a327d | ||
|
e33f306d67 | ||
|
f69357d77a | ||
|
d8a0c1b4bc | ||
|
f396e43b7d | ||
|
aedfd07fb2 | ||
|
9e669d9f28 | ||
|
4258e9b3a5 | ||
|
de8f22af28 | ||
|
6ee71bab94 | ||
|
6c72801c2b | ||
|
0d2c369535 | ||
|
fffd20cdc1 | ||
|
fad610fec9 | ||
|
9ca791d380 | ||
|
69720cb0c4 | ||
|
8589ca000a | ||
|
dcbd00e73c | ||
|
bba1600531 | ||
|
f4c55ea016 | ||
|
aa05fbe14d | ||
|
0a7574f62c | ||
|
1098f9228d | ||
|
5238303790 | ||
|
a03974ffb9 | ||
|
2d64d34cb9 | ||
|
66b41af391 | ||
|
67aa20d9d5 | ||
|
7d6c37b0c2 | ||
|
32c7224edb | ||
|
788acd552e | ||
|
a2b8802ed5 | ||
|
8b41ae0b2a | ||
|
b00b5fe267 | ||
|
3a5a7cfd2a | ||
|
aad12d15bb | ||
|
977db7cc65 | ||
|
d31c1c33ed | ||
|
3481a5a1e6 | ||
|
a26b6cc001 | ||
|
7d992b8471 | ||
|
0bfa310049 | ||
|
7555eb7478 | ||
|
fd461c5888 | ||
|
208bae4251 | ||
|
13d12b35e9 | ||
|
337102684b | ||
|
b305c956be | ||
|
7c98381ed4 | ||
|
0ce6506d6e | ||
|
7fc66f0bed | ||
|
e24c3575e4 | ||
|
2e50a93cf3 | ||
|
2c29c24543 | ||
|
4cbaa2283c | ||
|
e29d44eacd | ||
|
f29208aa9b | ||
|
7af4e18dcd | ||
|
344db29ede | ||
|
680c468f61 | ||
|
7ee4cb453b | ||
|
a152ab6df1 | ||
|
a99914509e | ||
|
891073fea3 | ||
|
dcaec739ea | ||
|
ea241750f7 | ||
|
9efd6dc677 | ||
|
c6ddeeed7a | ||
|
108e807b7b | ||
|
421bca32fb | ||
|
0f0ab15a46 | ||
|
b3c2438d4e | ||
|
25287008b6 | ||
|
62b282e749 | ||
|
9aa8c02ae2 | ||
|
b0ecde7f39 | ||
|
fe70a40e47 | ||
|
73b68316f4 | ||
|
7ba7531929 | ||
|
2826e3a000 | ||
|
f80ae99cbd | ||
|
ae11fb02dd | ||
|
a90b88f354 | ||
|
0e699cc0e8 | ||
|
e6e7c456de | ||
|
31f4ab790f | ||
|
9f978104d8 | ||
|
9d78935100 | ||
|
d469ebaa0a | ||
|
f5fa4606ea | ||
|
89ed95ad3d | ||
|
3b605cb0d6 | ||
|
9bfb79923f | ||
|
7d8a04643f | ||
|
3065bae508 | ||
|
443ff6024d | ||
|
a20a950829 | ||
|
9279c1e556 | ||
|
b8f722a82e | ||
|
9304645a07 | ||
|
c3b3719096 | ||
|
55a75856fb | ||
|
e3e99be131 | ||
|
5a7d1c9710 | ||
|
6ac5554298 | ||
|
9eace71048 | ||
|
8d9202c162 | ||
|
ef9f16f632 | ||
|
d739434af8 | ||
|
72f2bd2a41 | ||
|
b0549fab5c | ||
|
ac88916978 | ||
|
336b2c7fbd | ||
|
a8907c6005 | ||
|
89af428aea | ||
|
8a77029f4c | ||
|
928bf189ff | ||
|
a9e34ada26 | ||
|
804995807d | ||
|
b033f050fd | ||
|
c66982f7dc | ||
|
530c68d616 | ||
|
576f489dad | ||
|
270de51f1d | ||
|
57fe695a17 | ||
|
189303fb30 | ||
|
c4da12e74f | ||
|
8428b48673 | ||
|
b0a4f34ea8 | ||
|
efd0ffd1b0 | ||
|
dc062db95d | ||
|
b292ef8f88 | ||
|
d3bfa9bb4a | ||
|
98af042079 | ||
|
127bd9d5b6 | ||
|
b8972db223 | ||
|
f28cf18609 | ||
|
42cd6192a2 | ||
|
1ae00c5960 | ||
|
65d0d69c91 | ||
|
433afb7352 | ||
|
f70c2f8521 | ||
|
e4cef07b87 | ||
|
2196feb47f | ||
|
b90c710c6c | ||
|
bd1ceb5c5b | ||
|
567778e49a | ||
|
0fafcc6919 | ||
|
29574af377 | ||
|
0eb780262c | ||
|
e43a096f0c | ||
|
52aa06a2cd | ||
|
5d1561b4ab | ||
|
a8d7f36d65 | ||
|
82ebfa6387 | ||
|
ee416c6ffe | ||
|
ebc884d3dd | ||
|
9383cfb4ba |
36
Makefile
36
Makefile
@@ -183,7 +183,7 @@ ultrix-gcc:
|
|||||||
|
|
||||||
# Rules for making release tarballs
|
# Rules for making release tarballs
|
||||||
|
|
||||||
VERSION=7.11-devel
|
VERSION=7.11.2
|
||||||
DIRECTORY = Mesa-$(VERSION)
|
DIRECTORY = Mesa-$(VERSION)
|
||||||
LIB_NAME = MesaLib-$(VERSION)
|
LIB_NAME = MesaLib-$(VERSION)
|
||||||
GLUT_NAME = MesaGLUT-$(VERSION)
|
GLUT_NAME = MesaGLUT-$(VERSION)
|
||||||
@@ -253,7 +253,6 @@ MAIN_FILES = \
|
|||||||
$(DIRECTORY)/src/mesa/descrip.mms \
|
$(DIRECTORY)/src/mesa/descrip.mms \
|
||||||
$(DIRECTORY)/src/mesa/gl.pc.in \
|
$(DIRECTORY)/src/mesa/gl.pc.in \
|
||||||
$(DIRECTORY)/src/mesa/osmesa.pc.in \
|
$(DIRECTORY)/src/mesa/osmesa.pc.in \
|
||||||
$(DIRECTORY)/src/mesa/depend \
|
|
||||||
$(MAIN_ES_FILES) \
|
$(MAIN_ES_FILES) \
|
||||||
$(DIRECTORY)/src/mesa/main/*.[chS] \
|
$(DIRECTORY)/src/mesa/main/*.[chS] \
|
||||||
$(DIRECTORY)/src/mesa/main/*.cpp \
|
$(DIRECTORY)/src/mesa/main/*.cpp \
|
||||||
@@ -286,9 +285,6 @@ MAIN_FILES = \
|
|||||||
$(DIRECTORY)/src/mesa/drivers/osmesa/descrip.mms \
|
$(DIRECTORY)/src/mesa/drivers/osmesa/descrip.mms \
|
||||||
$(DIRECTORY)/src/mesa/drivers/osmesa/osmesa.def \
|
$(DIRECTORY)/src/mesa/drivers/osmesa/osmesa.def \
|
||||||
$(DIRECTORY)/src/mesa/drivers/osmesa/*.[ch] \
|
$(DIRECTORY)/src/mesa/drivers/osmesa/*.[ch] \
|
||||||
$(DIRECTORY)/src/mesa/drivers/dri/r300/compiler/*.[ch] \
|
|
||||||
$(DIRECTORY)/src/mesa/drivers/dri/r300/compiler/Makefile \
|
|
||||||
$(DIRECTORY)/src/mesa/drivers/dri/r300/compiler/SConscript \
|
|
||||||
$(DIRECTORY)/src/mesa/drivers/windows/*/*.[ch] \
|
$(DIRECTORY)/src/mesa/drivers/windows/*/*.[ch] \
|
||||||
$(DIRECTORY)/src/mesa/drivers/windows/*/*.def \
|
$(DIRECTORY)/src/mesa/drivers/windows/*/*.def \
|
||||||
$(DIRECTORY)/src/mesa/drivers/x11/Makefile \
|
$(DIRECTORY)/src/mesa/drivers/x11/Makefile \
|
||||||
@@ -394,6 +390,7 @@ DRI_FILES = \
|
|||||||
$(DIRECTORY)/src/mesa/drivers/dri/*/*/*.[chS] \
|
$(DIRECTORY)/src/mesa/drivers/dri/*/*/*.[chS] \
|
||||||
$(DIRECTORY)/src/mesa/drivers/dri/*/Makefile \
|
$(DIRECTORY)/src/mesa/drivers/dri/*/Makefile \
|
||||||
$(DIRECTORY)/src/mesa/drivers/dri/*/*/Makefile \
|
$(DIRECTORY)/src/mesa/drivers/dri/*/*/Makefile \
|
||||||
|
$(DIRECTORY)/src/mesa/drivers/dri/*/*/SConscript \
|
||||||
$(DIRECTORY)/src/mesa/drivers/dri/*/Doxyfile
|
$(DIRECTORY)/src/mesa/drivers/dri/*/Doxyfile
|
||||||
|
|
||||||
SGI_GLU_FILES = \
|
SGI_GLU_FILES = \
|
||||||
@@ -423,15 +420,13 @@ GLW_FILES = \
|
|||||||
$(DIRECTORY)/src/glw/*.[ch] \
|
$(DIRECTORY)/src/glw/*.[ch] \
|
||||||
$(DIRECTORY)/src/glw/Makefile* \
|
$(DIRECTORY)/src/glw/Makefile* \
|
||||||
$(DIRECTORY)/src/glw/README \
|
$(DIRECTORY)/src/glw/README \
|
||||||
$(DIRECTORY)/src/glw/glw.pc.in \
|
$(DIRECTORY)/src/glw/glw.pc.in
|
||||||
$(DIRECTORY)/src/glw/depend
|
|
||||||
|
|
||||||
GLUT_FILES = \
|
GLUT_FILES = \
|
||||||
$(DIRECTORY)/include/GL/glut.h \
|
$(DIRECTORY)/include/GL/glut.h \
|
||||||
$(DIRECTORY)/include/GL/glutf90.h \
|
$(DIRECTORY)/include/GL/glutf90.h \
|
||||||
$(DIRECTORY)/src/glut/glx/Makefile* \
|
$(DIRECTORY)/src/glut/glx/Makefile* \
|
||||||
$(DIRECTORY)/src/glut/glx/SConscript \
|
$(DIRECTORY)/src/glut/glx/SConscript \
|
||||||
$(DIRECTORY)/src/glut/glx/depend \
|
|
||||||
$(DIRECTORY)/src/glut/glx/glut.pc.in \
|
$(DIRECTORY)/src/glut/glx/glut.pc.in \
|
||||||
$(DIRECTORY)/src/glut/glx/*def \
|
$(DIRECTORY)/src/glut/glx/*def \
|
||||||
$(DIRECTORY)/src/glut/glx/*.[ch] \
|
$(DIRECTORY)/src/glut/glx/*.[ch] \
|
||||||
@@ -439,13 +434,6 @@ GLUT_FILES = \
|
|||||||
$(DIRECTORY)/src/glut/beos/*.cpp \
|
$(DIRECTORY)/src/glut/beos/*.cpp \
|
||||||
$(DIRECTORY)/src/glut/beos/Makefile
|
$(DIRECTORY)/src/glut/beos/Makefile
|
||||||
|
|
||||||
DEPEND_FILES = \
|
|
||||||
$(TOP)/src/mesa/depend \
|
|
||||||
$(TOP)/src/glx/depend \
|
|
||||||
$(TOP)/src/glw/depend \
|
|
||||||
$(TOP)/src/glut/glx/depend \
|
|
||||||
$(TOP)/src/glu/sgi/depend
|
|
||||||
|
|
||||||
|
|
||||||
LIB_FILES = \
|
LIB_FILES = \
|
||||||
$(MAIN_FILES) \
|
$(MAIN_FILES) \
|
||||||
@@ -463,7 +451,7 @@ parsers: configure
|
|||||||
-@touch $(TOP)/configs/current
|
-@touch $(TOP)/configs/current
|
||||||
$(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp
|
$(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp
|
||||||
$(MAKE) -C src/glsl/glcpp glcpp-lex.c glcpp-parse.c glcpp-parse.h
|
$(MAKE) -C src/glsl/glcpp glcpp-lex.c glcpp-parse.c glcpp-parse.h
|
||||||
$(MAKE) -C src/mesa/program lex.yy.c program_parse.tab.c program_parse.tab.h
|
$(MAKE) -C src/mesa program/lex.yy.c program/program_parse.tab.c program/program_parse.tab.h
|
||||||
|
|
||||||
# Everything for new a Mesa release:
|
# Everything for new a Mesa release:
|
||||||
ARCHIVES = $(LIB_NAME).tar.gz \
|
ARCHIVES = $(LIB_NAME).tar.gz \
|
||||||
@@ -483,27 +471,21 @@ AUTOCONF = autoconf
|
|||||||
AC_FLAGS =
|
AC_FLAGS =
|
||||||
aclocal.m4: configure.ac acinclude.m4
|
aclocal.m4: configure.ac acinclude.m4
|
||||||
$(ACLOCAL) $(ACLOCAL_FLAGS)
|
$(ACLOCAL) $(ACLOCAL_FLAGS)
|
||||||
configure: rm_depend configure.ac aclocal.m4 acinclude.m4
|
configure: configure.ac aclocal.m4 acinclude.m4
|
||||||
$(AUTOCONF) $(AC_FLAGS)
|
$(AUTOCONF) $(AC_FLAGS)
|
||||||
|
|
||||||
rm_depend:
|
|
||||||
@for dep in $(DEPEND_FILES) ; do \
|
|
||||||
rm -f $$dep ; \
|
|
||||||
touch $$dep ; \
|
|
||||||
done
|
|
||||||
|
|
||||||
rm_config: parsers
|
rm_config: parsers
|
||||||
rm -f configs/current
|
rm -f configs/current
|
||||||
rm -f configs/autoconf
|
rm -f configs/autoconf
|
||||||
|
|
||||||
$(LIB_NAME).tar: rm_config
|
$(LIB_NAME).tar: rm_config
|
||||||
cd .. ; tar -cf $(DIRECTORY)/$(LIB_NAME).tar $(LIB_FILES)
|
cd .. ; tar --dereference -cf $(DIRECTORY)/$(LIB_NAME).tar $(LIB_FILES)
|
||||||
|
|
||||||
$(LIB_NAME).tar.gz: $(LIB_NAME).tar
|
$(LIB_NAME).tar.gz: $(LIB_NAME).tar
|
||||||
gzip --stdout --best $(LIB_NAME).tar > $(LIB_NAME).tar.gz
|
gzip --stdout --best $(LIB_NAME).tar > $(LIB_NAME).tar.gz
|
||||||
|
|
||||||
$(GLUT_NAME).tar: rm_depend
|
$(GLUT_NAME).tar:
|
||||||
cd .. ; tar -cf $(DIRECTORY)/$(GLUT_NAME).tar $(GLUT_FILES)
|
cd .. ; tar --dereference -cf $(DIRECTORY)/$(GLUT_NAME).tar $(GLUT_FILES)
|
||||||
|
|
||||||
$(GLUT_NAME).tar.gz: $(GLUT_NAME).tar
|
$(GLUT_NAME).tar.gz: $(GLUT_NAME).tar
|
||||||
gzip --stdout --best $(GLUT_NAME).tar > $(GLUT_NAME).tar.gz
|
gzip --stdout --best $(GLUT_NAME).tar > $(GLUT_NAME).tar.gz
|
||||||
@@ -534,4 +516,4 @@ md5: $(ARCHIVES)
|
|||||||
@-md5sum $(GLUT_NAME).tar.bz2
|
@-md5sum $(GLUT_NAME).tar.bz2
|
||||||
@-md5sum $(GLUT_NAME).zip
|
@-md5sum $(GLUT_NAME).zip
|
||||||
|
|
||||||
.PHONY: tarballs rm_depend rm_config md5
|
.PHONY: tarballs rm_config md5
|
||||||
|
136
configure.ac
136
configure.ac
@@ -17,6 +17,10 @@ AC_INIT([Mesa],[mesa_version],
|
|||||||
AC_CONFIG_AUX_DIR([bin])
|
AC_CONFIG_AUX_DIR([bin])
|
||||||
AC_CANONICAL_HOST
|
AC_CANONICAL_HOST
|
||||||
|
|
||||||
|
dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
|
||||||
|
USER_CFLAGS="$CFLAGS"
|
||||||
|
USER_CXXFLAGS="$CXXFLAGS"
|
||||||
|
|
||||||
dnl Versions for external dependencies
|
dnl Versions for external dependencies
|
||||||
LIBDRM_REQUIRED=2.4.24
|
LIBDRM_REQUIRED=2.4.24
|
||||||
LIBDRM_RADEON_REQUIRED=2.4.24
|
LIBDRM_RADEON_REQUIRED=2.4.24
|
||||||
@@ -71,13 +75,13 @@ AC_COMPILE_IFELSE(
|
|||||||
not clang
|
not clang
|
||||||
#endif
|
#endif
|
||||||
]])],
|
]])],
|
||||||
[CLANG=yes], [CLANG=no])
|
[acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
|
||||||
|
|
||||||
AC_MSG_RESULT([$CLANG])
|
AC_MSG_RESULT([$acv_mesa_CLANG])
|
||||||
|
|
||||||
dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
|
dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
|
||||||
dnl versions are explictly not supported.
|
dnl versions are explictly not supported.
|
||||||
if test "x$GCC" = xyes -a "x$CLANG" = xno; then
|
if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
|
||||||
AC_MSG_CHECKING([whether gcc version is sufficient])
|
AC_MSG_CHECKING([whether gcc version is sufficient])
|
||||||
major=0
|
major=0
|
||||||
minor=0
|
minor=0
|
||||||
@@ -85,7 +89,7 @@ if test "x$GCC" = xyes -a "x$CLANG" = xno; then
|
|||||||
GCC_VERSION=`$CC -dumpversion`
|
GCC_VERSION=`$CC -dumpversion`
|
||||||
if test $? -eq 0; then
|
if test $? -eq 0; then
|
||||||
major=`echo $GCC_VERSION | cut -d. -f1`
|
major=`echo $GCC_VERSION | cut -d. -f1`
|
||||||
minor=`echo $GCC_VERSION | cut -d. -f1`
|
minor=`echo $GCC_VERSION | cut -d. -f2`
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
|
if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
|
||||||
@@ -563,9 +567,9 @@ AC_ARG_ENABLE([gallium_gbm],
|
|||||||
[AS_HELP_STRING([--enable-gallium-gbm],
|
[AS_HELP_STRING([--enable-gallium-gbm],
|
||||||
[enable optional gbm state tracker (not required for
|
[enable optional gbm state tracker (not required for
|
||||||
gbm support in Gallium)
|
gbm support in Gallium)
|
||||||
@<:@default=disable@:>@])],
|
@<:@default=auto@:>@])],
|
||||||
[enable_gallium_gbm="$enableval"],
|
[enable_gallium_gbm="$enableval"],
|
||||||
[enable_gallium_gbm=no])
|
[enable_gallium_gbm=auto])
|
||||||
|
|
||||||
# Option for Gallium drivers
|
# Option for Gallium drivers
|
||||||
GALLIUM_DRIVERS_DEFAULT="r300,r600,swrast"
|
GALLIUM_DRIVERS_DEFAULT="r300,r600,swrast"
|
||||||
@@ -578,6 +582,13 @@ AC_ARG_WITH([gallium-drivers],
|
|||||||
[with_gallium_drivers="$withval"],
|
[with_gallium_drivers="$withval"],
|
||||||
[with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
|
[with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
|
||||||
|
|
||||||
|
# Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
|
||||||
|
# here so that the script doesn't choke on an unknown driver name later.
|
||||||
|
case "$with_gallium_drivers" in
|
||||||
|
yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
|
||||||
|
no) with_gallium_drivers='' ;;
|
||||||
|
esac
|
||||||
|
|
||||||
if test "x$enable_opengl" = xno -a \
|
if test "x$enable_opengl" = xno -a \
|
||||||
"x$enable_gles1" = xno -a \
|
"x$enable_gles1" = xno -a \
|
||||||
"x$enable_gles2" = xno -a \
|
"x$enable_gles2" = xno -a \
|
||||||
@@ -822,7 +833,7 @@ xlib)
|
|||||||
GL_PC_LIB_PRIV="$GL_LIB_DEPS"
|
GL_PC_LIB_PRIV="$GL_LIB_DEPS"
|
||||||
GL_PC_CFLAGS="$X11_INCLUDES"
|
GL_PC_CFLAGS="$X11_INCLUDES"
|
||||||
fi
|
fi
|
||||||
GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
|
GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
|
||||||
GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
|
GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
|
||||||
|
|
||||||
# if static, move the external libraries to the programs
|
# if static, move the external libraries to the programs
|
||||||
@@ -948,11 +959,6 @@ AC_SUBST([MESA_MODULES])
|
|||||||
|
|
||||||
AC_SUBST([HAVE_XF86VIDMODE])
|
AC_SUBST([HAVE_XF86VIDMODE])
|
||||||
|
|
||||||
PKG_CHECK_MODULES([LIBDRM_RADEON],
|
|
||||||
[libdrm_radeon >= $LIBDRM_RADEON_REQUIRED],
|
|
||||||
HAVE_LIBDRM_RADEON=yes,
|
|
||||||
HAVE_LIBDRM_RADEON=no)
|
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl More X11 setup
|
dnl More X11 setup
|
||||||
dnl
|
dnl
|
||||||
@@ -1139,6 +1145,11 @@ esac
|
|||||||
|
|
||||||
case $DRI_DIRS in
|
case $DRI_DIRS in
|
||||||
*radeon*|*r200*|*r300*|*r600*)
|
*radeon*|*r200*|*r300*|*r600*)
|
||||||
|
PKG_CHECK_MODULES([LIBDRM_RADEON],
|
||||||
|
[libdrm_radeon >= $LIBDRM_RADEON_REQUIRED],
|
||||||
|
HAVE_LIBDRM_RADEON=yes,
|
||||||
|
HAVE_LIBDRM_RADEON=no)
|
||||||
|
|
||||||
if test "x$HAVE_LIBDRM_RADEON" = xyes; then
|
if test "x$HAVE_LIBDRM_RADEON" = xyes; then
|
||||||
RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
|
RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
|
||||||
RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
|
RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
|
||||||
@@ -1214,6 +1225,41 @@ AC_SUBST([OSMESA_MESA_DEPS])
|
|||||||
AC_SUBST([OSMESA_PC_REQ])
|
AC_SUBST([OSMESA_PC_REQ])
|
||||||
AC_SUBST([OSMESA_PC_LIB_PRIV])
|
AC_SUBST([OSMESA_PC_LIB_PRIV])
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl gbm configuration
|
||||||
|
dnl
|
||||||
|
if test "x$enable_gbm" = xauto; then
|
||||||
|
case "$with_egl_platforms" in
|
||||||
|
*drm*)
|
||||||
|
enable_gbm=yes ;;
|
||||||
|
*)
|
||||||
|
enable_gbm=no ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if test "x$enable_gbm" = xyes; then
|
||||||
|
SRC_DIRS="$SRC_DIRS gbm"
|
||||||
|
GBM_BACKEND_DIRS=""
|
||||||
|
|
||||||
|
PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
|
||||||
|
AC_MSG_ERROR([gbm needs udev]))
|
||||||
|
GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS"
|
||||||
|
|
||||||
|
if test "$mesa_driver" = dri; then
|
||||||
|
GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
|
||||||
|
if test "$SHARED_GLAPI" -eq 0; then
|
||||||
|
AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AC_SUBST([GBM_LIB_DEPS])
|
||||||
|
AC_SUBST([GBM_BACKEND_DIRS])
|
||||||
|
GBM_PC_REQ_PRIV="libudev"
|
||||||
|
GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
|
||||||
|
GBM_PC_CFLAGS=
|
||||||
|
AC_SUBST([GBM_PC_REQ_PRIV])
|
||||||
|
AC_SUBST([GBM_PC_LIB_PRIV])
|
||||||
|
AC_SUBST([GBM_PC_CFLAGS])
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl EGL configuration
|
dnl EGL configuration
|
||||||
dnl
|
dnl
|
||||||
@@ -1260,41 +1306,6 @@ fi
|
|||||||
AC_SUBST([EGL_LIB_DEPS])
|
AC_SUBST([EGL_LIB_DEPS])
|
||||||
AC_SUBST([EGL_DRIVERS_DIRS])
|
AC_SUBST([EGL_DRIVERS_DIRS])
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl gbm configuration
|
|
||||||
dnl
|
|
||||||
if test "x$enable_gbm" = xauto; then
|
|
||||||
case "$with_egl_platforms" in
|
|
||||||
*drm*)
|
|
||||||
enable_gbm=yes ;;
|
|
||||||
*)
|
|
||||||
enable_gbm=no ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
if test "x$enable_gbm" = xyes; then
|
|
||||||
SRC_DIRS="$SRC_DIRS gbm"
|
|
||||||
GBM_BACKEND_DIRS=""
|
|
||||||
|
|
||||||
PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
|
|
||||||
AC_MSG_ERROR([gbm needs udev]))
|
|
||||||
GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS"
|
|
||||||
|
|
||||||
if test "$mesa_driver" = dri; then
|
|
||||||
GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
|
|
||||||
if test "$SHARED_GLAPI" -eq 0; then
|
|
||||||
AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
AC_SUBST([GBM_LIB_DEPS])
|
|
||||||
AC_SUBST([GBM_BACKEND_DIRS])
|
|
||||||
GBM_PC_REQ_PRIV="libudev"
|
|
||||||
GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
|
|
||||||
GBM_PC_CFLAGS=
|
|
||||||
AC_SUBST([GBM_PC_REQ_PRIV])
|
|
||||||
AC_SUBST([GBM_PC_LIB_PRIV])
|
|
||||||
AC_SUBST([GBM_PC_CFLAGS])
|
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl EGL Gallium configuration
|
dnl EGL Gallium configuration
|
||||||
dnl
|
dnl
|
||||||
@@ -1314,6 +1325,14 @@ fi
|
|||||||
dnl
|
dnl
|
||||||
dnl gbm Gallium configuration
|
dnl gbm Gallium configuration
|
||||||
dnl
|
dnl
|
||||||
|
if test "x$enable_gallium_gbm" = xauto; then
|
||||||
|
case "$enable_gbm$HAVE_ST_EGL$with_egl_platforms" in
|
||||||
|
yesyes*drm*)
|
||||||
|
enable_gallium_gbm=yes ;;
|
||||||
|
*)
|
||||||
|
enable_gallium_gbm=no ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
if test "x$enable_gallium_gbm" = xyes; then
|
if test "x$enable_gallium_gbm" = xyes; then
|
||||||
if test "x$with_gallium_drivers" = x; then
|
if test "x$with_gallium_drivers" = x; then
|
||||||
AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
|
AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
|
||||||
@@ -1595,9 +1614,6 @@ dnl Gallium configuration
|
|||||||
dnl
|
dnl
|
||||||
if test "x$with_gallium_drivers" != x; then
|
if test "x$with_gallium_drivers" != x; then
|
||||||
SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
|
SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
|
||||||
AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
|
|
||||||
else
|
|
||||||
LLVM_CONFIG=no
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_SUBST([LLVM_CFLAGS])
|
AC_SUBST([LLVM_CFLAGS])
|
||||||
@@ -1650,9 +1666,13 @@ yes)
|
|||||||
WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
|
WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
|
||||||
GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
|
GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
|
||||||
fi
|
fi
|
||||||
if test "$plat" = "drm" && test "x$enable_gbm" = no; then
|
if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
|
||||||
AC_MSG_ERROR([EGL platform drm needs gbm])
|
AC_MSG_ERROR([EGL platform drm needs gbm])
|
||||||
fi
|
fi
|
||||||
|
case "$plat$have_libudev" in
|
||||||
|
waylandno|drmno)
|
||||||
|
AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
EGL_PLATFORMS="$egl_platforms"
|
EGL_PLATFORMS="$egl_platforms"
|
||||||
;;
|
;;
|
||||||
@@ -1715,6 +1735,8 @@ if test "x$enable_gallium_llvm" = xauto; then
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
if test "x$enable_gallium_llvm" = xyes; then
|
if test "x$enable_gallium_llvm" = xyes; then
|
||||||
|
AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
|
||||||
|
|
||||||
if test "x$LLVM_CONFIG" != xno; then
|
if test "x$LLVM_CONFIG" != xno; then
|
||||||
LLVM_VERSION=`$LLVM_CONFIG --version`
|
LLVM_VERSION=`$LLVM_CONFIG --version`
|
||||||
LLVM_CFLAGS=`$LLVM_CONFIG --cppflags`
|
LLVM_CFLAGS=`$LLVM_CONFIG --cppflags`
|
||||||
@@ -1767,9 +1789,11 @@ if test "x$with_gallium_drivers" != x; then
|
|||||||
gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
|
gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
|
||||||
;;
|
;;
|
||||||
xi915)
|
xi915)
|
||||||
|
PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
|
||||||
gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
|
gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
|
||||||
;;
|
;;
|
||||||
xi965)
|
xi965)
|
||||||
|
PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
|
||||||
gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
|
gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
|
||||||
;;
|
;;
|
||||||
xr300)
|
xr300)
|
||||||
@@ -1781,10 +1805,16 @@ if test "x$with_gallium_drivers" != x; then
|
|||||||
gallium_check_st "r600/drm" "dri-r600"
|
gallium_check_st "r600/drm" "dri-r600"
|
||||||
;;
|
;;
|
||||||
xnouveau)
|
xnouveau)
|
||||||
|
PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
|
||||||
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
|
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
|
||||||
gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
|
gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
|
||||||
;;
|
;;
|
||||||
xswrast)
|
xswrast)
|
||||||
|
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
|
||||||
|
if test "x$MESA_LLVM" = x1; then
|
||||||
|
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
|
||||||
|
fi
|
||||||
|
|
||||||
if test "x$HAVE_ST_DRI" = xyes; then
|
if test "x$HAVE_ST_DRI" = xyes; then
|
||||||
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
|
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
|
||||||
fi
|
fi
|
||||||
@@ -1803,6 +1833,10 @@ dnl Restore LDFLAGS and CPPFLAGS
|
|||||||
LDFLAGS="$_SAVE_LDFLAGS"
|
LDFLAGS="$_SAVE_LDFLAGS"
|
||||||
CPPFLAGS="$_SAVE_CPPFLAGS"
|
CPPFLAGS="$_SAVE_CPPFLAGS"
|
||||||
|
|
||||||
|
dnl Add user CFLAGS and CXXFLAGS
|
||||||
|
CFLAGS="$CFLAGS $USER_CFLAGS"
|
||||||
|
CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
|
||||||
|
|
||||||
dnl Substitute the config
|
dnl Substitute the config
|
||||||
AC_CONFIG_FILES([configs/autoconf])
|
AC_CONFIG_FILES([configs/autoconf])
|
||||||
|
|
||||||
|
@@ -22,21 +22,20 @@ It's the fastest software rasterizer for Mesa.
|
|||||||
|
|
||||||
<h1>Requirements</h1>
|
<h1>Requirements</h1>
|
||||||
|
|
||||||
<dl>
|
<ul>
|
||||||
<dt>An x86 or amd64 processor. 64-bit mode is preferred.</dt>
|
<li>
|
||||||
<dd>
|
<p>An x86 or amd64 processor; 64-bit mode recommended.</p
|
||||||
<p>
|
<p>
|
||||||
Support for sse2 is strongly encouraged. Support for ssse3, and sse4.1 will
|
Support for SSE2 is strongly encouraged. Support for SSSE3, and SSE4.1 will
|
||||||
yield the most efficient code. The less features the CPU has the more
|
yield the most efficient code. The less features the CPU has the more
|
||||||
likely is that you ran into underperforming, buggy, or incomplete code.
|
likely is that you ran into underperforming, buggy, or incomplete code.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
See /proc/cpuinfo to know what your CPU supports.
|
See /proc/cpuinfo to know what your CPU supports.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</li>
|
||||||
<dt>LLVM. Version 2.8 recommended. 2.6 or later required.</dt>
|
<li>
|
||||||
<dd>
|
<p>LLVM: version 2.9 recommended; 2.6 or later required.</p>
|
||||||
<p>
|
|
||||||
<b>NOTE</b>: LLVM 2.8 and earlier will not work on systems that support the
|
<b>NOTE</b>: LLVM 2.8 and earlier will not work on systems that support the
|
||||||
Intel AVX extensions (e.g. Sandybridge). LLVM's code generator will
|
Intel AVX extensions (e.g. Sandybridge). LLVM's code generator will
|
||||||
fail when trying to emit AVX instructions. This was fixed in LLVM 2.9.
|
fail when trying to emit AVX instructions. This was fixed in LLVM 2.9.
|
||||||
@@ -54,26 +53,25 @@ It's the fastest software rasterizer for Mesa.
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
For Windows download pre-built MSVC 9.0 or MinGW binaries from
|
For Windows you will need to build LLVM from source with MSVC or MINGW
|
||||||
http://people.freedesktop.org/~jrfonseca/llvm/ and set the LLVM environment
|
(either natively or through cross compilers) and CMake, and set the LLVM
|
||||||
variable to the extracted path.
|
environment variable to the directory you installed it to.
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
LLVM will be statically linked, so when building on MSVC it needs to be
|
||||||
For MSVC there are two set of binaries: llvm-x.x-msvc32mt.7z and
|
built with a matching CRT as Mesa, and you'll need to pass
|
||||||
llvm-x.x-msvc32mtd.7z .
|
-DLLVM_USE_CRT_RELEASE=MTd for debug and checked builds,
|
||||||
</p>
|
-DLLVM_USE_CRT_RELEASE=MTd for profile and release builds.
|
||||||
|
|
||||||
<p>
|
You can build only the x86 target by passing -DLLVM_TARGETS_TO_BUILD=X86
|
||||||
You have to set the LLVM=/path/to/llvm-x.x-msvc32mtd env var when passing
|
to cmake.
|
||||||
debug=yes to scons, and LLVM=/path/to/llvm-x.x-msvc32mt when building with
|
|
||||||
debug=no. This is necessary as LLVM builds as static library so the chosen
|
|
||||||
MS CRT must match.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<p>scons (optional)</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<dt>scons (optional)</dt>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -93,7 +91,7 @@ Alternatively, you can build it with GNU make, if you prefer, by invoking it as
|
|||||||
|
|
||||||
but the rest of these instructions assume that scons is used.
|
but the rest of these instructions assume that scons is used.
|
||||||
|
|
||||||
For windows is everything the except except the winsys:
|
For Windows the procedure is similar except the target:
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
scons build=debug libgl-gdi
|
scons build=debug libgl-gdi
|
||||||
|
@@ -11,6 +11,30 @@
|
|||||||
<H1>News</H1>
|
<H1>News</H1>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>November 27, 2011</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="relnotes-7.11.2.html">Mesa 7.11.2</a> is released.
|
||||||
|
This release was made primarily to fix build problems with 7.11.1 on
|
||||||
|
Mandriva and to fix problems related to glCopyTexImage to
|
||||||
|
luminance-alpha textures. That later was believed to have been fixed
|
||||||
|
in 7.11.1 but was not.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>November 17, 2011</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="relnotes-7.11.1.html">Mesa 7.11.1</a> is released. This is a bug fix
|
||||||
|
release.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>July 31, 2011</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="relnotes-7.11.html">Mesa 7.11</a> is released. This is a new
|
||||||
|
release with many new features.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h2>June 13, 2011</h2>
|
<h2>June 13, 2011</h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
391
docs/relnotes-7.11.1.html
Normal file
391
docs/relnotes-7.11.1.html
Normal file
@@ -0,0 +1,391 @@
|
|||||||
|
<HTML>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<TITLE>Mesa Release Notes</TITLE>
|
||||||
|
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<BODY>
|
||||||
|
|
||||||
|
<body bgcolor="#eeeeee">
|
||||||
|
|
||||||
|
<H1>Mesa 7.11.1 Release Notes / November 17, 2011</H1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Mesa 7.11.1 is a bug fix release which fixes bugs found since the 7.11 release.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Mesa 7.11 implements the OpenGL 2.1 API, but the version reported by
|
||||||
|
glGetString(GL_VERSION) depends on the particular driver being used.
|
||||||
|
Some drivers don't support all the features required in OpenGL 2.1.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
|
||||||
|
for DRI hardware acceleration.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>MD5 checksums</h2>
|
||||||
|
<pre>
|
||||||
|
ac0181a4076770fb657c1169af43aa09 MesaLib-7.11.1.tar.gz
|
||||||
|
a77307102cee844ff6544ffa8fafeac1 MesaLib-7.11.1.tar.bz2
|
||||||
|
dfcb11516c1730f3981b55a65a835623 MesaLib-7.11.1.zip
|
||||||
|
2cb2b9ecb4fb7d1a6be69346ee886952 MesaGLUT-7.11.1.tar.gz
|
||||||
|
3f54e314290d4dacbab089839197080b MesaGLUT-7.11.1.tar.bz2
|
||||||
|
5d66c7ee8c5cc2f27e1ffb037ad4172c MesaGLUT-7.11.1.zip
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<h2>New features</h2>
|
||||||
|
<p>None.</p>
|
||||||
|
|
||||||
|
<h2>Bug fixes</h2>
|
||||||
|
|
||||||
|
<p>This list is likely incomplete.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=3165">Bug 3165</a> - texImage.IsCompressed and texImage.CompressedSize issues</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=23525">Bug 23525</a> - Software rendering on QEMU guests badly broken</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28125">Bug 28125</a> - DRI2 prevents indirect glx</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34628">Bug 34628</a> - [ilk] skybox errors in quake4</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36371">Bug 36371</a> - r200: piglit readPixSanity failure</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36669">Bug 36669</a> - EmitNoMainReturn set to 1 doesn't make the GLSL compiler lower all the RET opcodes</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36939">Bug 36939</a> - multitexturing is messed up in quake wars (regression)</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37907">Bug 37907</a> - [swrast] SIGSEGV swrast/s_depth.c:569</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38163">Bug 38163</a> - Gnome Shell Display Bug</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38625">Bug 38625</a> - ast_to_hir.cpp:1761: const glsl_type* process_array_type(YYLTYPE*, const glsl_type*, ast_node*, _mesa_glsl_parse_state*): Assertion `dummy_instructions.is_empty()' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38729">Bug 38729</a> - [softpipe] sp_quad_depth_test.c:215:convert_quad_stencil: Assertion `0' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38863">Bug 38863</a> - [IVB]GPU hang when running 3D games like openarena</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39193">Bug 39193</a> - [llvmpipe and r600g] glCheckFramebufferStatusEXT segfaults in Gallium when checking status on a framebuffer bound to a texture that's bound to a pixmap</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39651">Bug 39651</a> - [glsl] Assertion failure when implicitly converting out parameters</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39991">Bug 39991</a> - [regression]GL_PALETTE8_RGBA8_OES format of glCompressedTexImage2D will cause err GL_INVALID_ENUM with GLES1.x</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=40022">Bug 40022</a> - [i915] out-of-bounds write src/mesa/drivers/dri/i915/i915_fragprog.c:321</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=40062">Bug 40062</a> - in etqw the strogg radar is black (regression)</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=40324">Bug 40324</a> - [SNB] gpu hang in mesa 7.11</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=40533">Bug 40533</a> - i915: piglit glean/readPixSanity: DRI2SwapBuffers: BadDrawable (invalid Pixmap or Window parameter)</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=41096">Bug 41096</a> - [sandybridge-m-gt2+] GPU lockup render.IPEHR: 0x7a000002</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=41969">Bug 41969</a> - The Mesa meta save/restore code doesn't always save the active program</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=42175">Bug 42175</a> - RV730: Display errors in glxgears & WebGL</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=42268">Bug 42268</a> - [bisected] oglc pbo(negative.invalidOffsetValue) aborts on 7.11 branch</li>
|
||||||
|
|
||||||
|
<!-- <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li> -->
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Changes</h2>
|
||||||
|
<p>The full set of changes can be viewed by using the following GIT command:</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
git log mesa-7.11..mesa-7.11.1
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>Adam Jackson (2):
|
||||||
|
<ul>
|
||||||
|
<li>drisw: Remove cargo culting that breaks GLX 1.3 ctors</li>
|
||||||
|
<li>glx: Don't enable INTEL_swap_event unconditionally</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Alex Deucher (1):
|
||||||
|
<ul>
|
||||||
|
<li>r600g: fix up vs export handling</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Ben Widawsky (1):
|
||||||
|
<ul>
|
||||||
|
<li>intel: GetBuffer fix</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Brian Paul (15):
|
||||||
|
<ul>
|
||||||
|
<li>docs: add 7.11 md5 sums</li>
|
||||||
|
<li>docs: news item for 7.11 release</li>
|
||||||
|
<li>st/mesa: Convert size assertions to conditionals in st_texture_image_copy.</li>
|
||||||
|
<li>softpipe: add missing stencil format case in convert_quad_stencil()</li>
|
||||||
|
<li>mesa: fix texstore addressing bugs for depth/stencil formats</li>
|
||||||
|
<li>mesa: add missing breaks for GL_TEXTURE_CUBE_MAP_SEAMLESS queries</li>
|
||||||
|
<li>swrast: don't try to do depth testing if there's no depth buffer</li>
|
||||||
|
<li>meta: fix/add checks for GL_EXT_framebuffer_sRGB</li>
|
||||||
|
<li>mesa: fix PACK_COLOR_5551(), PACK_COLOR_1555() macros</li>
|
||||||
|
<li>meta: fix broken sRGB mipmap generation</li>
|
||||||
|
<li>mesa: add _NEW_CURRENT_ATTRIB in _mesa_program_state_flags()</li>
|
||||||
|
<li>mesa: fix error handling for dlist image unpacking</li>
|
||||||
|
<li>mesa: generate GL_INVALID_OPERATION in glIsEnabledIndex() between Begin/End</li>
|
||||||
|
<li>mesa: fix incorrect error code in _mesa_FramebufferTexture1D/3DEXT()</li>
|
||||||
|
<li>mesa: fix format/type check in unpack_image() for bitmaps</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Carl Simonson (1):
|
||||||
|
<ul>
|
||||||
|
<li>i830: Add missing vtable entry for i830 from the hiz work.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Carl Worth (5):
|
||||||
|
<ul>
|
||||||
|
<li>glcpp: Fix two (or more) successive applications of token pasting</li>
|
||||||
|
<li>glcpp: Test a non-function-like macro using the token paste operator</li>
|
||||||
|
<li>glcpp: Implement token pasting for non-function-like macros</li>
|
||||||
|
<li>glcpp: Raise error if defining any macro containing two consecutive underscores</li>
|
||||||
|
<li>glcpp: Add a test for #elif with an undefined macro.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Chad Versace (5):
|
||||||
|
<ul>
|
||||||
|
<li>glsl: Add method glsl_type::can_implicitly_convert_to()</li>
|
||||||
|
<li>glsl: Fix implicit conversions in non-constructor function calls</li>
|
||||||
|
<li>glsl: Remove ir_function.cpp:type_compare()</li>
|
||||||
|
<li>glsl: Fix conversions in array constructors</li>
|
||||||
|
<li>x86-64: Fix compile error with clang</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Chia-I Wu (3):
|
||||||
|
<ul>
|
||||||
|
<li>glsl: empty declarations should be valid</li>
|
||||||
|
<li>intel: rename intel_extensions_es2.c to intel_extensions_es.c</li>
|
||||||
|
<li>intel: fix GLESv1 support</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Chris Wilson (1):
|
||||||
|
<ul>
|
||||||
|
<li>i915: out-of-bounds write in calc_live_regs()</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Christopher James Halse Rogers (1):
|
||||||
|
<ul>
|
||||||
|
<li>glx/dri2: Paper over errors in DRI2Connect when indirect</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>David Reveman (1):
|
||||||
|
<ul>
|
||||||
|
<li>i915g: Fix off-by-one in scissors.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Eric Anholt (16):
|
||||||
|
<ul>
|
||||||
|
<li>mesa: Don't skip glGetProgramEnvParam4dvARB if there was already an error.</li>
|
||||||
|
<li>mesa: Fix glGetUniform() type conversions.</li>
|
||||||
|
<li>mesa: Add support for Begin/EndConditionalRender in display lists.</li>
|
||||||
|
<li>mesa: Throw an error instead of asserting for condrender with query == 0.</li>
|
||||||
|
<li>mesa: Throw an error when starting conditional render on an active query.</li>
|
||||||
|
<li>mesa: Don't skip glGetProgramLocalParam4dvARB if there was already an error.</li>
|
||||||
|
<li>glsl: Allow ir_assignment() constructor to not specify condition.</li>
|
||||||
|
<li>glsl: Clarify error message about whole-array assignment in GLSL 1.10.</li>
|
||||||
|
<li>glsl: When assigning to a whole array, mark the array as accessed.</li>
|
||||||
|
<li>glsl: When assiging from a whole array, mark it as used.</li>
|
||||||
|
<li>i965/fs: Respect ARB_color_buffer_float clamping.</li>
|
||||||
|
<li>i965: Add missing _NEW_POLYGON flag to polygon stipple upload.</li>
|
||||||
|
<li>i965: Fix polygon stipple offset state flagging.</li>
|
||||||
|
<li>intel: Mark MESA_FORMAT_X8_Z24 as always supported.</li>
|
||||||
|
<li>mesa: Don't error on glFeedbackBuffer(size = 0, buffer = NULL)</li>
|
||||||
|
<li>glsl: Fix gl_NormalMatrix swizzle setup to match i965's invariants.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Henri Verbeet (6):
|
||||||
|
<ul>
|
||||||
|
<li>mesa: Also set the remaining draw buffers to GL_NONE when updating just the first buffer in _mesa_drawbuffers().</li>
|
||||||
|
<li>r600g: Support the PIPE_FORMAT_R16_FLOAT colorformat.</li>
|
||||||
|
<li>mesa: Check the texture against all units in unbind_texobj_from_texunits().</li>
|
||||||
|
<li>mesa: Allow sampling from units >= MAX_TEXTURE_UNITS in shaders.</li>
|
||||||
|
<li>mesa: Use the Elements macro for the sampler index assert in validate_samplers().</li>
|
||||||
|
<li>mesa: Fix a couple of TexEnv unit limits.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Ian Romanick (17):
|
||||||
|
<ul>
|
||||||
|
<li>mesa: Add utility function to get base format from a GL compressed format</li>
|
||||||
|
<li>mesa: Return the correct internal fmt when a generic compressed fmt was used</li>
|
||||||
|
<li>mesa: Make _mesa_get_compressed_formats match the texture compression specs</li>
|
||||||
|
<li>linker: Make linker_error set LinkStatus to false</li>
|
||||||
|
<li>linker: Make linker_{error,warning} generally available</li>
|
||||||
|
<li>mesa: Ensure that gl_shader_program::InfoLog is never NULL</li>
|
||||||
|
<li>ir_to_mesa: Use Add linker_error instead of fail_link</li>
|
||||||
|
<li>ir_to_mesa: Emit warnings instead of errors for IR that can't be lowered</li>
|
||||||
|
<li>i915: Fail without crashing if a Mesa IR program uses too many registers</li>
|
||||||
|
<li>i915: Only emit program errors when INTEL_DEBUG=wm or INTEL_DEBUG=fallbacks</li>
|
||||||
|
<li>mesa: Add GL_OES_compressed_paletted_texture formats to _mesa_is_compressed_format</li>
|
||||||
|
<li>mesa: Add GL_OES_compressed_paletted_texture formats to _mesa_base_tex_format</li>
|
||||||
|
<li>mesa: Refactor expected texture size check in cpal_get_info</li>
|
||||||
|
<li>mesa: Add _mesa_cpal_compressed_format_type</li>
|
||||||
|
<li>mesa: Refactor compressed texture error checks to work with paletted textures</li>
|
||||||
|
<li>mesa: Remove redundant compressed paletted texture error checks</li>
|
||||||
|
<li>mesa: Advertise GL_OES_compressed_paletted_texture in OpenGL ES1.x</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Jeremy Huddleston (3):
|
||||||
|
<ul>
|
||||||
|
<li>apple: Silence some debug spew</li>
|
||||||
|
<li>apple: Use the correct (OpenGL.framework) glViewport and glScissor during init</li>
|
||||||
|
<li>apple: Implement applegl_unbind_context</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>José Fonseca (1):
|
||||||
|
<ul>
|
||||||
|
<li>docs: Update llvmpipe docs.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Kenneth Graunke (12):
|
||||||
|
<ul>
|
||||||
|
<li>glsl: Avoid massive ralloc_strndup overhead in S-Expression parsing.</li>
|
||||||
|
<li>mesa: In validate_program(), initialize errMsg for safety.</li>
|
||||||
|
<li>i965/gen5+: Fix incorrect miptree layout for non-power-of-two cubemaps.</li>
|
||||||
|
<li>i965: Use proper texture alignment units for cubemaps on Gen5+.</li>
|
||||||
|
<li>i965: Fix incorrect maximum PS thread count shift on Ivybridge.</li>
|
||||||
|
<li>i965: Emit depth stalls and flushes before changing depth state on Gen6+.</li>
|
||||||
|
<li>i965/fs: Allow SIMD16 with control flow on Ivybridge.</li>
|
||||||
|
<li>i965: Allow SIMD16 color writes on Ivybridge.</li>
|
||||||
|
<li>i965: Fix inconsistent indentation in brw_eu_emit.c.</li>
|
||||||
|
<li>intel: Depth format fixes</li>
|
||||||
|
<li>i965: Apply post-sync non-zero workaround to homebrew workaround.</li>
|
||||||
|
<li>mesa/get: Move MAX_LIGHTS from GL/ES2 to GL/ES1.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Kristian Høgsberg (1):
|
||||||
|
<ul>
|
||||||
|
<li>glx: Don't flush twice if we fallback to dri2CopySubBuffer</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Marc Pignat (1):
|
||||||
|
<ul>
|
||||||
|
<li>drisw: Fix 24bpp software rendering, take 2</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Marcin Baczyński (2):
|
||||||
|
<ul>
|
||||||
|
<li>configure: fix gcc version check</li>
|
||||||
|
<li>configure: allow C{,XX}FLAGS override</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Marcin Slusarz (3):
|
||||||
|
<ul>
|
||||||
|
<li>nouveau: fix nouveau_fence leak</li>
|
||||||
|
<li>nouveau: fix crash during fence emission</li>
|
||||||
|
<li>nouveau: fix fence hang</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Marek Olšák (19):
|
||||||
|
<ul>
|
||||||
|
<li>vbo: do not call _mesa_max_buffer_index in debug builds</li>
|
||||||
|
<li>winsys/radeon: fix space checking</li>
|
||||||
|
<li>r300/compiler: fix a warning that a variable may be uninitialized</li>
|
||||||
|
<li>r300/compiler: remove an unused-but-set variable and simplify the code</li>
|
||||||
|
<li>u_vbuf_mgr: cleanup original vs real vertex buffer arrays</li>
|
||||||
|
<li>u_vbuf_mgr: don't take per-instance attribs into acc. when computing max index</li>
|
||||||
|
<li>u_vbuf_mgr: fix max_index computation for large src_offset</li>
|
||||||
|
<li>u_vbuf_mgr: s/u_vbuf_mgr_/u_vbuf_</li>
|
||||||
|
<li>u_vbuf_mgr: remove unused flag U_VBUF_UPLOAD_FLUSHED</li>
|
||||||
|
<li>u_vbuf_mgr: rework user buffer uploads</li>
|
||||||
|
<li>u_vbuf_mgr: fix uploading with a non-zero index bias</li>
|
||||||
|
<li>configure.ac: fix xlib-based softpipe build</li>
|
||||||
|
<li>r600g: add index_bias to index buffer bounds</li>
|
||||||
|
<li>r300g: fix rendering with a non-zero index bias in draw_elements_immediate</li>
|
||||||
|
<li>Revert "r300g: fix rendering with a non-zero index bias in draw_elements_immediate"</li>
|
||||||
|
<li>pb_bufmgr_cache: flush cache when create_buffer fails and try again</li>
|
||||||
|
<li>r300g: don't return NULL in resource_from_handle if the resource is too small</li>
|
||||||
|
<li>r600g: set correct tiling flags in depth info</li>
|
||||||
|
<li>r300g: don't call u_trim_pipe_prim in r300_swtcl_draw_vbo</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Michel Dänzer (4):
|
||||||
|
<ul>
|
||||||
|
<li>st/mesa: Finalize texture on render-to-texture.</li>
|
||||||
|
<li>glx/dri2: Don't call X server for SwapBuffers when there's no back buffer.</li>
|
||||||
|
<li>gallium/util: Add macros for converting from little endian to CPU byte order.</li>
|
||||||
|
<li>r300g: Fix queries on big endian hosts.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Neil Roberts (1):
|
||||||
|
<ul>
|
||||||
|
<li>meta: Fix saving the active program</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Paul Berry (18):
|
||||||
|
<ul>
|
||||||
|
<li>glsl: Lower unconditional return statements.</li>
|
||||||
|
<li>glsl: Refactor logic for determining whether to lower return statements.</li>
|
||||||
|
<li>glsl: lower unconditional returns and continues in loops.</li>
|
||||||
|
<li>glsl: Use foreach_list in lower_jumps.cpp</li>
|
||||||
|
<li>glsl: In lower_jumps.cpp, lower both branches of a conditional.</li>
|
||||||
|
<li>glsl: Lower break instructions when necessary at the end of a loop.</li>
|
||||||
|
<li>glsl: improve the accuracy of the radians() builtin function</li>
|
||||||
|
<li>glsl: improve the accuracy of the atan(x,y) builtin function.</li>
|
||||||
|
<li>Revert "glsl: Skip processing the first function's body in do_dead_functions()."</li>
|
||||||
|
<li>glsl: Emit function signatures at toplevel, even for built-ins.</li>
|
||||||
|
<li>glsl: Constant-fold built-in functions before outputting IR</li>
|
||||||
|
<li>glsl: Check array size is const before asserting that no IR was generated.</li>
|
||||||
|
<li>glsl: Perform implicit type conversions on function call out parameters.</li>
|
||||||
|
<li>glsl: Fix type error when lowering integer divisions</li>
|
||||||
|
<li>glsl: Rework oversize array check for gl_TexCoord.</li>
|
||||||
|
<li>glsl: Remove field array_lvalue from ir_variable.</li>
|
||||||
|
<li>glsl hierarchical visitor: Do not overwrite base_ir for parameter lists.</li>
|
||||||
|
<li>glsl: improve the accuracy of the asin() builtin function.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Tobias Droste (1):
|
||||||
|
<ul>
|
||||||
|
<li>r300/compiler: simplify code in peephole_add_presub_add</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Tom Fogal (1):
|
||||||
|
<ul>
|
||||||
|
<li>Only use gcc visibility support with gcc4+.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Tom Stellard (1):
|
||||||
|
<ul>
|
||||||
|
<li>r300/compiler: Fix regalloc for values with multiple writers</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Vadim Girlin (5):
|
||||||
|
<ul>
|
||||||
|
<li>st/mesa: flush bitmap cache on query and conditional render boundaries</li>
|
||||||
|
<li>r600g: use backend mask for occlusion queries</li>
|
||||||
|
<li>r600g: take into account force_add_cf in pops</li>
|
||||||
|
<li>r600g: fix check_and_set_bank_swizzle</li>
|
||||||
|
<li>r600g: fix replace_gpr_with_pv_ps</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Yuanhan Liu (17):
|
||||||
|
<ul>
|
||||||
|
<li>i965: fix the constant interp bitmask for flat mode</li>
|
||||||
|
<li>mesa: fix error handling for glEvalMesh1/2D</li>
|
||||||
|
<li>mesa: fix error handling for some glGet* functions</li>
|
||||||
|
<li>mesa: fix error handling for glTexEnv</li>
|
||||||
|
<li>mesa: fix error handling for glIsEnabled</li>
|
||||||
|
<li>mesa: fix error handling for glPixelZoom</li>
|
||||||
|
<li>mesa: fix error handling for glSelectBuffer</li>
|
||||||
|
<li>mesa: fix error handling for glMapBufferRange</li>
|
||||||
|
<li>mesa: fix error handling for glMaterial*</li>
|
||||||
|
<li>intel: fix the wrong code to detect null texture.</li>
|
||||||
|
<li>mesa: add a function to do the image data copy stuff for save_CompressedTex(Sub)Image</li>
|
||||||
|
<li>i965: setup address rounding enable bits</li>
|
||||||
|
<li>mesa: generate error if pbo offset is not aligned with the size of specified type</li>
|
||||||
|
<li>mesa: fix inverted pbo test error at _mesa_GetnCompressedTexImageARB</li>
|
||||||
|
<li>mesa: handle the pbo case for save_Bitmap</li>
|
||||||
|
<li>mesa: handle PBO access error in display list mode</li>
|
||||||
|
<li>intel: don't call unmap pbo if pbo is not mapped</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
85
docs/relnotes-7.11.2.html
Normal file
85
docs/relnotes-7.11.2.html
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
<HTML>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<TITLE>Mesa Release Notes</TITLE>
|
||||||
|
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<BODY>
|
||||||
|
|
||||||
|
<body bgcolor="#eeeeee">
|
||||||
|
|
||||||
|
<H1>Mesa 7.11.2 Release Notes / November 27, 2011</H1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Mesa 7.11.2 is a bug fix release which fixes bugs found since the 7.11 release.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Mesa 7.11 implements the OpenGL 2.1 API, but the version reported by
|
||||||
|
glGetString(GL_VERSION) depends on the particular driver being used.
|
||||||
|
Some drivers don't support all the features required in OpenGL 2.1.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
|
||||||
|
for DRI hardware acceleration.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>MD5 checksums</h2>
|
||||||
|
<pre>
|
||||||
|
b9e84efee3931c0acbccd1bb5a860554 MesaLib-7.11.2.tar.gz
|
||||||
|
0837c52698fe3252369c3fdb5195afcc MesaLib-7.11.2.tar.bz2
|
||||||
|
141273c274d12e0d2bafb497fe937da3 MesaLib-7.11.2.zip
|
||||||
|
39ae9926794794503815ffdc069521eb MesaGLUT-7.11.2.tar.gz
|
||||||
|
35ca3a0b54cb6f9d2e0e4eae8f6bb95e MesaGLUT-7.11.2.tar.bz2
|
||||||
|
f8705fcff2510b6c39cd27b575c05dba MesaGLUT-7.11.2.zip
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<h2>New features</h2>
|
||||||
|
<p>None.</p>
|
||||||
|
|
||||||
|
<h2>Bug fixes</h2>
|
||||||
|
|
||||||
|
<p>This list is likely incomplete.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=43143">Bug 43143</a> - Mesa 7.11.1 fails to build at main/dlist.c:4532 with error message: "format not a string literal and no format arguments"</li>
|
||||||
|
|
||||||
|
<li>Incorrect handling of CopyTexImage from RGBA window to LA texture.</li>
|
||||||
|
|
||||||
|
<!-- <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li> -->
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Changes</h2>
|
||||||
|
<p>The full set of changes can be viewed by using the following GIT command:</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
git log mesa-7.11.1..mesa-7.11.2
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>Brian Paul (4):
|
||||||
|
<ul>
|
||||||
|
<li>mesa: stop using ctx->Driver.CopyTexImage1D/2D() hooks</li>
|
||||||
|
<li>mesa: fix format selection for meta CopyTexSubImage()</li>
|
||||||
|
<li>docs: update news.html and relnotes.html for 7.11.1 release</li>
|
||||||
|
<li>mesa: use format string in _mesa_error() call to silence warning</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Chad Versace (3):
|
||||||
|
<ul>
|
||||||
|
<li>intel: Simplify stencil detiling arithmetic</li>
|
||||||
|
<li>intel: Fix region dimensions for stencil buffers received from DDX</li>
|
||||||
|
<li>intel: Fix separate stencil in builtin DRI2 backend</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<p>Ian Romanick (3):
|
||||||
|
<ul>
|
||||||
|
<li>docs: Add 7.11.1 release md5sums</li>
|
||||||
|
<li>mesa: set version string to 7.11.2-devel</li>
|
||||||
|
<li>mesa: Bump version to 7.11.2 (final)</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<body bgcolor="#eeeeee">
|
<body bgcolor="#eeeeee">
|
||||||
|
|
||||||
<H1>Mesa 7.11 Release Notes / (release date TBD)</H1>
|
<H1>Mesa 7.11 Release Notes / July 31, 2011</H1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Mesa 7.11 is a new development release.
|
Mesa 7.11 is a new development release.
|
||||||
@@ -30,7 +30,12 @@ for DRI hardware acceleration.
|
|||||||
|
|
||||||
<h2>MD5 checksums</h2>
|
<h2>MD5 checksums</h2>
|
||||||
<pre>
|
<pre>
|
||||||
tbd
|
fa2c7068503133fb2453244cda11cb2a MesaLib-7.11.tar.gz
|
||||||
|
ff03aca82d0560009a076a87c888cf13 MesaLib-7.11.tar.bz2
|
||||||
|
ede1ac0976f6f05df586093fc17d63ed MesaLib-7.11.zip
|
||||||
|
b4fb81a47c5caedaefad49af7702c23d MesaGLUT-7.11.tar.gz
|
||||||
|
77a9a0bbd7f8bca882aa5709b88cb071 MesaGLUT-7.11.tar.bz2
|
||||||
|
c19ef0c6eb61188c96ed4ccedd70717c MesaGLUT-7.11.zip
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
@@ -64,11 +69,263 @@ tbd
|
|||||||
<li>GL_ATI_texture_float (gallium, i965)
|
<li>GL_ATI_texture_float (gallium, i965)
|
||||||
<li>GL_NV_conditional_render (i965)
|
<li>GL_NV_conditional_render (i965)
|
||||||
<li>GL_NV_texture_barrier (gallium drivers)
|
<li>GL_NV_texture_barrier (gallium drivers)
|
||||||
|
<li>Enable 16-wide fragment shader execution in i965 driver. This should improve performance in many applications.
|
||||||
|
<li>Initial alpha-level support for Intel "Ivybridge" chipsets in the i965 driver.
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<h2>Bug fixes</h2>
|
<h2>Bug fixes</h2>
|
||||||
|
|
||||||
|
<p>This list is likely incomplete. This list only includes bug fixes not
|
||||||
|
included in the previous release (7.10.3). Many of these are regressions that
|
||||||
|
did not exist in the 7.10 release series at all.</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25871">Bug 25871</a> - nearest neighbour samples wrong texel (precision/rounding problem)</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29162">Bug 29162</a> - mesa/darwin is severly broken</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30080">Bug 30080</a> - [i915] piglit nodepth-test fails</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30217">Bug 30217</a> - Possible sources of memory leaks reported by valgrind</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30266">Bug 30266</a> - Regression, segfault in libdrm_intel when calling glBitmap</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31561">Bug 31561</a> - [i915] intel_regions.c:289: intel_region_release: Assertion `region->map_refcount == 0' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31744">Bug 31744</a> - [GLSL] overriding built-in function impacts another shader</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32308">Bug 32308</a> - [llvmpipe] src/gallium/auxiliary/gallivm/lp_bld_init.c:319:gallivm_register_garbage_collector_callback: Assertion `NumCallbacks < 32' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32309">Bug 32309</a> - [softpipe] SIGSEGV sp_state_derived.c:204</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32459">Bug 32459</a> - [softpipe] glean depthStencil regression</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32460">Bug 32460</a> - [softpipe] piglit texwrap 1D regression</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32534">Bug 32534</a> - [arrandale/sandybridge] Mesa swallowing GEM ioctl failures</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32560">Bug 32560</a> - To fix: 64-bit-portabilty-issue state_tracker/st_program.c:427</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32634">Bug 32634</a> - [r300g, bisected] Massive corruption in Unigine Sanctuary</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32768">Bug 32768</a> - VBO rendering using glDrawArrays causes program termination and "cs IB too big" message</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32804">Bug 32804</a> - [swrast] glean pixelFormats regression</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32814">Bug 32814</a> - Build error in osmesa.c due to change in _mesa_update_framebuffer_visual() signature</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32859">Bug 32859</a> - Mesa doesn't compile under NetBSD</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32912">Bug 32912</a> - [bisected, r300g] Unigine Sanctuary: r300_emit.c:902:r300_emit_vertex_arrays: Assertion `&buf->b.b' failed with RADEON_HYPERZ=1</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32945">Bug 32945</a> - [RADEON:KMS:R300G] HiZ: Weird behavior with 3 pipes</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33046">Bug 33046</a> - [bisected]glean/pixelFormats and 3 oglc cases segfault</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33185">Bug 33185</a> - [RADEON:KMS:R300G] X crashes when kwin effects are turned on</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33215">Bug 33215</a> - [llvmpipe] piglit fbo-drawbuffers2-blend regression</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33247">Bug 33247</a> - [swrast] tnl/t_draw.c:471: _tnl_draw_prims: Assertion `prim[i].num_instances > 0' failed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33284">Bug 33284</a> - [llvmpipe] piglit fbo-drawbuffers-fragcolor fails</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33306">Bug 33306</a> - [glsl] GLSL integer division by zero crashes GLSL compiler</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33353">Bug 33353</a> - [softpipe] piglit fbo-srgb looks incorrect</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33360">Bug 33360</a> - inclusion of $(TALLOC_LIBS) in src/mesa/drivers/osmesa/Makefile causes a build failure</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33374">Bug 33374</a> - [bisect] FTBFS on commit 9767d3b5 (glapi: Fix OpenGL ES 1.1 and 2.0 interop)</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33508">Bug 33508</a> - [glsl] GLSL compiler modulus by zero crash</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33555">Bug 33555</a> - [softpipe] tgsi/tgsi_sse2.c:1527:emit_tex: Assertion `0' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33885">Bug 33885</a> - [glsl] GLSL compiler allows recursion</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33823">Bug 33823</a> - [glsl] ralloc.c:78: get_header: Assertion `info->canary == 0x5A1106' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33934">Bug 33934</a> - 3D blitting is orders of magnitude slower than equivalent 2D blitting.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33946">Bug 33946</a> - Crash: Mesa checks for invalid pointer, then uses it anyway.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34008">Bug 34008</a> - r600g: piglit failure (regression)</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34009">Bug 34009</a> - Automatic Mipmap Generation produces very blurry image.</li>
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34042">Bug 34042</a> - Surfaceless eglMakeCurrent() fails if the supplied EGLContext is not a dummy context</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34049">Bug 34049</a> - r600g: assertion failure (regression)</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34119">Bug 34119</a> - [glsl] piglit glsl-texcoord-array regression</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34323">Bug 34323</a> - [i915 GLSL gles2] gl_FragCoord.w not correct</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34346">Bug 34346</a> - src/glsl relies on $PWD which can be unset</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34378">Bug 34378</a> - st/mesa: 2a904fd6a0cb80eec6dec2bae07fd8778b04caf3 breaks sauerbraten</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34419">Bug 34419</a> - Kwin crashes screensaver exits</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34463">Bug 34463</a> - state_tracker/st_texture.c:370:st_texture_image_copy: Assertion `u_minify(src->width0, srcLevel) == width' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34468">Bug 34468</a> - src/glsl/Makefile fix</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34541">Bug 34541</a> - [ilk, wine] massive render corruption after recent patchset</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34589">Bug 34589</a> - [pineview bisected]many cases regression</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34595">Bug 34595</a> - [bisected piketon]oglc half_float_vertex(misc.fillmode.wireframe) regressed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34597">Bug 34597</a> - [bisected piketon]oglc blend-constcolor and 7 draw-buffers2 subcases regressed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34603">Bug 34603</a> - [bisected piketon]oglc vbo subcase basic.bufferdata regressed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34604">Bug 34604</a> - [bisected piketon]piglit fbo/fbo-depth-sample-compare regressed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34646">Bug 34646</a> - [bisected piketon]ogles2conform GL2Tests/GL/gl_FragCoord/gl_FragCoord_w_frag.test</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34656">Bug 34656</a> - i965: Crash when running WebGL Conformance Test in firefox-4 nightly build</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34691">Bug 34691</a> - [GLSL] matrix array member assignment with a complex subscript fails</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34906">Bug 34906</a> - [Pineview] Some WebGL conformance tests will crash firefox</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34968">Bug 34968</a> - Bad fps in Lightsmark benchmark</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35025">Bug 35025</a> - [Patch] Serious compiler warnings</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35312">Bug 35312</a> - r600g: Automatic mipmap generation doesn't work properly</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35373">Bug 35373</a> - [[GM45] OpenGL] GL_EXT_texture_sRGB_decode broken</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35434">Bug 35434</a> - [RADEON:KMS:R600G] etqw: broken ground textures</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35441">Bug 35441</a> - [PATCH] Mesa does not find nouveau include files with --enable-shared-dricore</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35614">Bug 35614</a> - [SNB] random hang on piglit case shaders/glsl-max-varyings</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35820">Bug 35820</a> - [bisected SNB] System hangs when Gnome with compiz start up</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35822">Bug 35822</a> - [bisected pineview] many cases related to depth and stencil failed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35849">Bug 35849</a> - when sampling textures from both fragment and vertex shaders the vertex texture has the incorrect texture bound</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35852">Bug 35852</a> - [bisected pineview] oglc case pxconv-read failed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35961">Bug 35961</a> - src/gallium/auxiliary/util/u_draw.c:77:util_draw_max_index: Assertion `buffer_size - format_size <= buffer_size' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36032">Bug 36032</a> - piglit fdo9833 regression</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36033">Bug 36033</a> - main/shaderapi.c:1044: validate_samplers: Assertion `(sizeof(targetName)/sizeof(*(targetName))) == NUM_TEXTURE_TARGETS' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36086">Bug 36086</a> - [wine] Segfault r300_resource_copy_region with some wine apps and RADEON_HYPERZ</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36182">Bug 36182</a> - Game Trine from http://www.humblebundle.com/ needs ATI_draw_buffers</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36268">Bug 36268</a> - [r300g, bisected] minor flickering in Unigine Sanctuary</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36282">Bug 36282</a> - 34a5d3b9f4740601708c82093e2114356d749e65: glxgears segfaults when compiled with shared glapi</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36333">Bug 36333</a> - can't build demos if mesa build with --enable-selinux</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36473">Bug 36473</a> - [bisected] piglit bugs/fdo23670-depth_test failed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36572">Bug 36572</a> - [bisected]oglc case texenv segfaults</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36609">Bug 36609</a> - 45920d2ecb38b14fdda5253fecce996570c22863 breaks sauerbraten on r300g</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36648">Bug 36648</a> - [bisected SNB]piglit fbo/fbo-alphatest-nocolor failed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36649">Bug 36649</a> - [bisected SNB]oglc draw-buffers2 failed with 16-wide</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36753">Bug 36753</a> - Some textures now rendered as completely black after register allocator rewrite.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36821">Bug 36821</a> - [bisected SNB]oglc api-texcoord causes GPU hang</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36914">Bug 36914</a> - r600g: add rv670 flushing workaround. Causes games and some mesa demos to segfault.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36917">Bug 36917</a> - Rendering glitches in ETQW</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36939">Bug 36939</a> - multitexturing is messed up in quake wars (regression)</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36987">Bug 36987</a> - Intel GMA 4500 ARB_shader_texture_lod support</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37028">Bug 37028</a> - Amnesia/HPL2 Demo: Strange graphical bugs on r600g</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37150">Bug 37150</a> - sRGB textures are too bright in Starcraft 2</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37154">Bug 37154</a> - main/texstore.c:4187: _mesa_texstore_rgb9_e5: Assertion `baseInternalFormat == 0x1907' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37157">Bug 37157</a> - [bisected] KDE KWin crashes on start with delayed BO mapping</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37168">Bug 37168</a> - Regression: Severe memory leak when running Second Life</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37366">Bug 37366</a> - [i965 bisected ILK] Fragment shader discard tests occasionally fail</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37383">Bug 37383</a> - incorrect GLSL optimization</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37476">Bug 37476</a> - [wine] Devil May Cry 4: TXD tgsi opcode unsupported / translation from TGSI failed / missing vertex shader</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37743">Bug 37743</a> - [bisected i965]oglc GLSLlinker subcase negative.varying.beyondMaxVaryingFloats aborted</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37766">Bug 37766</a> - Crash in dri2InvalidateBuffers when resizing Java window with OpenGL pipeline enabled</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37839">Bug 37839</a> - main/teximage.c:2393: _mesa_choose_texture_format: Assertion `f != MESA_FORMAT_NONE' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37934">Bug 37934</a> - Corruption with topogun trace</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38015">Bug 38015</a> - Some extensions enabled even when not supported by the underlying driver</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38134">Bug 38134</a> - [bisected i965]piglit fbo/fbo-blit-d24s8 crashed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38145">Bug 38145</a> - r600g/evergreen: Incorrect rendering of some effects in doom3</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38440">Bug 38440</a> - ETQW: Model in team select rendering too bright</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38566">Bug 38566</a> - [regression] ETQW crashes with 21972c85ea734dbfcf69629c6b0b940efb42d4ba</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38584">Bug 38584</a> - MESA_GLSL=dump causes SEGV in ir_print_visitor::unique_name</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38599">Bug 38599</a> - THe value of WGL_PBUFFER_HEIGHT_ARB is returned as width in wglQueryPbufferARB</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38602">Bug 38602</a> - [bisected] Wrong display after "prefer native texture formats when possible" commit</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38624">Bug 38624</a> - program/ir_to_mesa.cpp:1440: virtual void ir_to_mesa_visitor::visit(ir_dereference_variable*): Assertion `var->location != -1' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38626">Bug 38626</a> - vbo: Don't discount stride breaks piglit on softpipe/r600g</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38649">Bug 38649</a> - piglit fbo-copyteximage regression</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38762">Bug 38762</a> - [IVB bisected]3D demos like glxgears abort</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38771">Bug 38771</a> - [[GM45] DRI] GPU hangs with current Mesa GIT when running certain OpenGL applications</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38842">Bug 38842</a> - Various valid GLX attributes are rejected by MESA glxChooseFBConfig</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38971">Bug 38971</a> - [bisected]oglc glsl-autointconv subcase negative.function.ambiguousMatch failed</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=38987">Bug 38987</a> - sampler allowed as non-uniform / non-function parameters</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39024">Bug 39024</a> - [Pineview webgl] many webgl conformance cases crash the browser</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39083">Bug 39083</a> - [regression, bisected, r600g] Wrong rendering of Bubbles3D screensaver</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39119">Bug 39119</a> - setting SQ_LDS_RESOURCE_MGMT register to zero in other applications muddles up font rendering permanently</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39209">Bug 39209</a> - [bisected] Wrong display after "prefer native texture formats when possible" commit - part2</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39219">Bug 39219</a> - libgl conflict with xbmc causes lock up on xbmc exit</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39257">Bug 39257</a> - [bisected SNB]Mesa demos engine causes GPU hang</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39487">Bug 39487</a> - [i965] brw_wm_surface_state.c:495: brw_update_renderbuffer_surface: Assertion `brw->>has_surface_tile_offset || (tile_x == 0 && tile_y == 0)' failed.</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39515">Bug 39515</a> - FTBFS: libEGL depends on libgbm, but libEGL builds first</li>
|
||||||
|
|
||||||
|
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=39572">Bug 39572</a> - Cogs: GPU hang</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
@@ -81,6 +338,11 @@ Building with SCons is an alternative.
|
|||||||
driver that implemented it.
|
driver that implemented it.
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<p>The full set of changes can be viewed by using the following GIT command:</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
git log mesa-7.10..mesa-7.11
|
||||||
|
</pre>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -13,6 +13,8 @@ The release notes summarize what's new or changed in each Mesa release.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
<LI><A HREF="relnotes-7.11.2.html">7.11.2 release notes</A>
|
||||||
|
<LI><A HREF="relnotes-7.11.1.html">7.11.1 release notes</A>
|
||||||
<LI><A HREF="relnotes-7.11.html">7.11 release notes</A>
|
<LI><A HREF="relnotes-7.11.html">7.11 release notes</A>
|
||||||
<LI><A HREF="relnotes-7.10.3.html">7.10.3 release notes</A>
|
<LI><A HREF="relnotes-7.10.3.html">7.10.3 release notes</A>
|
||||||
<LI><A HREF="relnotes-7.10.2.html">7.10.2 release notes</A>
|
<LI><A HREF="relnotes-7.10.2.html">7.10.2 release notes</A>
|
||||||
|
@@ -67,7 +67,7 @@
|
|||||||
#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */
|
#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */
|
||||||
# define GLAPI extern
|
# define GLAPI extern
|
||||||
# define GLAPIENTRY __stdcall
|
# define GLAPIENTRY __stdcall
|
||||||
#elif defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
|
#elif (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
|
||||||
# define GLAPI __attribute__((visibility("default")))
|
# define GLAPI __attribute__((visibility("default")))
|
||||||
# define GLAPIENTRY
|
# define GLAPIENTRY
|
||||||
#endif /* WIN32 && !CYGWIN */
|
#endif /* WIN32 && !CYGWIN */
|
||||||
|
@@ -6,7 +6,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2007-2010 The Khronos Group Inc.
|
** Copyright (c) 2007-2011 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
** copy of this software and/or associated documentation files (the
|
** copy of this software and/or associated documentation files (the
|
||||||
@@ -29,9 +29,9 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Header file version number, required by OpenGL ABI for Linux */
|
/* Header file version number, required by OpenGL ABI for Linux */
|
||||||
/* glext.h last updated $Date: 2010-12-09 02:15:08 -0800 (Thu, 09 Dec 2010) $ */
|
/* glext.h last updated $Date: 2011-07-06 02:49:14 -0700 (Wed, 06 Jul 2011) $ */
|
||||||
/* Current version at http://www.opengl.org/registry/ */
|
/* Current version at http://www.opengl.org/registry/ */
|
||||||
#define GL_GLEXT_VERSION 67
|
#define GL_GLEXT_VERSION 71
|
||||||
/* Function declaration macros - to move into glplatform.h */
|
/* Function declaration macros - to move into glplatform.h */
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
||||||
@@ -5032,6 +5032,32 @@ extern "C" {
|
|||||||
#define GL_SKIP_DECODE_EXT 0x8A4A
|
#define GL_SKIP_DECODE_EXT 0x8A4A
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_NV_texture_multisample
|
||||||
|
#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045
|
||||||
|
#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_AMD_blend_minmax_factor
|
||||||
|
#define GL_FACTOR_MIN_AMD 0x901C
|
||||||
|
#define GL_FACTOR_MAX_AMD 0x901D
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_AMD_sample_positions
|
||||||
|
#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_EXT_x11_sync_object
|
||||||
|
#define GL_SYNC_X11_FENCE_EXT 0x90E1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_AMD_multi_draw_indirect
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_EXT_framebuffer_multisample_blit_scaled
|
||||||
|
#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA
|
||||||
|
#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
|
|
||||||
@@ -11041,6 +11067,58 @@ typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, cons
|
|||||||
#define GL_EXT_texture_sRGB_decode 1
|
#define GL_EXT_texture_sRGB_decode 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_NV_texture_multisample
|
||||||
|
#define GL_NV_texture_multisample 1
|
||||||
|
#ifdef GL_GLEXT_PROTOTYPES
|
||||||
|
GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
|
||||||
|
GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
|
||||||
|
GLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
|
||||||
|
GLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
|
||||||
|
GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
|
||||||
|
GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
|
||||||
|
#endif /* GL_GLEXT_PROTOTYPES */
|
||||||
|
typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
|
||||||
|
typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
|
||||||
|
typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
|
||||||
|
typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
|
||||||
|
typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
|
||||||
|
typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_AMD_blend_minmax_factor
|
||||||
|
#define GL_AMD_blend_minmax_factor 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_AMD_sample_positions
|
||||||
|
#define GL_AMD_sample_positions 1
|
||||||
|
#ifdef GL_GLEXT_PROTOTYPES
|
||||||
|
GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val);
|
||||||
|
#endif /* GL_GLEXT_PROTOTYPES */
|
||||||
|
typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_EXT_x11_sync_object
|
||||||
|
#define GL_EXT_x11_sync_object 1
|
||||||
|
#ifdef GL_GLEXT_PROTOTYPES
|
||||||
|
GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
|
||||||
|
#endif /* GL_GLEXT_PROTOTYPES */
|
||||||
|
typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_AMD_multi_draw_indirect
|
||||||
|
#define GL_AMD_multi_draw_indirect 1
|
||||||
|
#ifdef GL_GLEXT_PROTOTYPES
|
||||||
|
GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const GLvoid *indirect, GLsizei primcount, GLsizei stride);
|
||||||
|
GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const GLvoid *indirect, GLsizei primcount, GLsizei stride);
|
||||||
|
#endif /* GL_GLEXT_PROTOTYPES */
|
||||||
|
typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const GLvoid *indirect, GLsizei primcount, GLsizei stride);
|
||||||
|
typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const GLvoid *indirect, GLsizei primcount, GLsizei stride);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_EXT_framebuffer_multisample_blit_scaled
|
||||||
|
#define GL_EXT_framebuffer_multisample_blit_scaled 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -249,6 +249,7 @@ CHIPSET(0x6749, TURKS_6749, TURKS)
|
|||||||
CHIPSET(0x6750, TURKS_6750, TURKS)
|
CHIPSET(0x6750, TURKS_6750, TURKS)
|
||||||
CHIPSET(0x6758, TURKS_6758, TURKS)
|
CHIPSET(0x6758, TURKS_6758, TURKS)
|
||||||
CHIPSET(0x6759, TURKS_6759, TURKS)
|
CHIPSET(0x6759, TURKS_6759, TURKS)
|
||||||
|
CHIPSET(0x675F, TURKS_675F, TURKS)
|
||||||
|
|
||||||
CHIPSET(0x6760, CAICOS_6760, CAICOS)
|
CHIPSET(0x6760, CAICOS_6760, CAICOS)
|
||||||
CHIPSET(0x6761, CAICOS_6761, CAICOS)
|
CHIPSET(0x6761, CAICOS_6761, CAICOS)
|
||||||
@@ -260,4 +261,5 @@ CHIPSET(0x6766, CAICOS_6766, CAICOS)
|
|||||||
CHIPSET(0x6767, CAICOS_6767, CAICOS)
|
CHIPSET(0x6767, CAICOS_6767, CAICOS)
|
||||||
CHIPSET(0x6768, CAICOS_6768, CAICOS)
|
CHIPSET(0x6768, CAICOS_6768, CAICOS)
|
||||||
CHIPSET(0x6770, CAICOS_6770, CAICOS)
|
CHIPSET(0x6770, CAICOS_6770, CAICOS)
|
||||||
|
CHIPSET(0x6778, CAICOS_6778, CAICOS)
|
||||||
CHIPSET(0x6779, CAICOS_6779, CAICOS)
|
CHIPSET(0x6779, CAICOS_6779, CAICOS)
|
||||||
|
@@ -506,6 +506,8 @@ dri2_create_screen(_EGLDisplay *disp)
|
|||||||
return EGL_FALSE;
|
return EGL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dri2_dpy->own_dri_screen = 1;
|
||||||
|
|
||||||
extensions = dri2_dpy->core->getExtensions(dri2_dpy->dri_screen);
|
extensions = dri2_dpy->core->getExtensions(dri2_dpy->dri_screen);
|
||||||
|
|
||||||
if (dri2_dpy->dri2) {
|
if (dri2_dpy->dri2) {
|
||||||
@@ -576,10 +578,12 @@ dri2_terminate(_EGLDriver *drv, _EGLDisplay *disp)
|
|||||||
_eglReleaseDisplayResources(drv, disp);
|
_eglReleaseDisplayResources(drv, disp);
|
||||||
_eglCleanupDisplay(disp);
|
_eglCleanupDisplay(disp);
|
||||||
|
|
||||||
dri2_dpy->core->destroyScreen(dri2_dpy->dri_screen);
|
if (dri2_dpy->own_dri_screen)
|
||||||
|
dri2_dpy->core->destroyScreen(dri2_dpy->dri_screen);
|
||||||
if (dri2_dpy->fd)
|
if (dri2_dpy->fd)
|
||||||
close(dri2_dpy->fd);
|
close(dri2_dpy->fd);
|
||||||
dlclose(dri2_dpy->driver);
|
if (dri2_dpy->driver)
|
||||||
|
dlclose(dri2_dpy->driver);
|
||||||
|
|
||||||
if (disp->PlatformDisplay == NULL) {
|
if (disp->PlatformDisplay == NULL) {
|
||||||
switch (disp->Platform) {
|
switch (disp->Platform) {
|
||||||
|
@@ -44,7 +44,9 @@
|
|||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
#include <GL/internal/dri_interface.h>
|
#include <GL/internal/dri_interface.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_DRM_PLATFORM
|
||||||
#include <gbm_driint.h>
|
#include <gbm_driint.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "eglconfig.h"
|
#include "eglconfig.h"
|
||||||
#include "eglcontext.h"
|
#include "eglcontext.h"
|
||||||
@@ -71,6 +73,7 @@ struct dri2_egl_display
|
|||||||
int dri2_major;
|
int dri2_major;
|
||||||
int dri2_minor;
|
int dri2_minor;
|
||||||
__DRIscreen *dri_screen;
|
__DRIscreen *dri_screen;
|
||||||
|
int own_dri_screen;
|
||||||
const __DRIconfig **driver_configs;
|
const __DRIconfig **driver_configs;
|
||||||
void *driver;
|
void *driver;
|
||||||
__DRIcoreExtension *core;
|
__DRIcoreExtension *core;
|
||||||
@@ -81,7 +84,9 @@ struct dri2_egl_display
|
|||||||
__DRIimageExtension *image;
|
__DRIimageExtension *image;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
|
#ifdef HAVE_DRM_PLATFORM
|
||||||
struct gbm_dri_device *gbm_dri;
|
struct gbm_dri_device *gbm_dri;
|
||||||
|
#endif
|
||||||
|
|
||||||
char *device_name;
|
char *device_name;
|
||||||
char *driver_name;
|
char *driver_name;
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
@@ -15,13 +17,13 @@
|
|||||||
* next paragraph) shall be included in all copies or substantial portions
|
* next paragraph) shall be included in all copies or substantial portions
|
||||||
* of the Software.
|
* of the Software.
|
||||||
*
|
*
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* DEALINGS IN THE SOFTWARE.
|
||||||
*
|
*
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public EGL API entrypoints
|
* Public EGL API entrypoints
|
||||||
*
|
*
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLAPI_INCLUDED
|
#ifndef EGLAPI_INCLUDED
|
||||||
#define EGLAPI_INCLUDED
|
#define EGLAPI_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,31 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@@ -1,3 +1,31 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLARRAY_INCLUDED
|
#ifndef EGLARRAY_INCLUDED
|
||||||
#define EGLARRAY_INCLUDED
|
#define EGLARRAY_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,32 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLCOMPILER_INCLUDED
|
#ifndef EGLCOMPILER_INCLUDED
|
||||||
#define EGLCOMPILER_INCLUDED
|
#define EGLCOMPILER_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EGL Configuration (pixel format) functions.
|
* EGL Configuration (pixel format) functions.
|
||||||
*/
|
*/
|
||||||
@@ -456,8 +486,6 @@ _eglIsConfigAttribValid(_EGLConfig *conf, EGLint attr)
|
|||||||
return EGL_FALSE;
|
return EGL_FALSE;
|
||||||
|
|
||||||
switch (attr) {
|
switch (attr) {
|
||||||
case EGL_MATCH_NATIVE_PIXMAP:
|
|
||||||
return EGL_FALSE;
|
|
||||||
case EGL_Y_INVERTED_NOK:
|
case EGL_Y_INVERTED_NOK:
|
||||||
return conf->Display->Extensions.NOK_texture_from_pixmap;
|
return conf->Display->Extensions.NOK_texture_from_pixmap;
|
||||||
default:
|
default:
|
||||||
@@ -739,6 +767,16 @@ _eglGetConfigAttrib(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf,
|
|||||||
{
|
{
|
||||||
if (!_eglIsConfigAttribValid(conf, attribute))
|
if (!_eglIsConfigAttribValid(conf, attribute))
|
||||||
return _eglError(EGL_BAD_ATTRIBUTE, "eglGetConfigAttrib");
|
return _eglError(EGL_BAD_ATTRIBUTE, "eglGetConfigAttrib");
|
||||||
|
|
||||||
|
/* nonqueryable attributes */
|
||||||
|
switch (attribute) {
|
||||||
|
case EGL_MATCH_NATIVE_PIXMAP:
|
||||||
|
return _eglError(EGL_BAD_ATTRIBUTE, "eglGetConfigAttrib");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (!value)
|
if (!value)
|
||||||
return _eglError(EGL_BAD_PARAMETER, "eglGetConfigAttrib");
|
return _eglError(EGL_BAD_PARAMETER, "eglGetConfigAttrib");
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLCONFIG_INCLUDED
|
#ifndef EGLCONFIG_INCLUDED
|
||||||
#define EGLCONFIG_INCLUDED
|
#define EGLCONFIG_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLCONTEXT_INCLUDED
|
#ifndef EGLCONTEXT_INCLUDED
|
||||||
#define EGLCONTEXT_INCLUDED
|
#define EGLCONTEXT_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,31 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "egllog.h"
|
#include "egllog.h"
|
||||||
|
@@ -1,3 +1,31 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLCURRENT_INCLUDED
|
#ifndef EGLCURRENT_INCLUDED
|
||||||
#define EGLCURRENT_INCLUDED
|
#define EGLCURRENT_INCLUDED
|
||||||
|
|
||||||
|
@@ -15,18 +15,17 @@
|
|||||||
* next paragraph) shall be included in all copies or substantial portions
|
* next paragraph) shall be included in all copies or substantial portions
|
||||||
* of the Software.
|
* of the Software.
|
||||||
*
|
*
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* DEALINGS IN THE SOFTWARE.
|
||||||
*
|
*
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal EGL defines
|
* Internal EGL defines
|
||||||
*/
|
*/
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functions related to EGLDisplay.
|
* Functions related to EGLDisplay.
|
||||||
*/
|
*/
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLDISPLAY_INCLUDED
|
#ifndef EGLDISPLAY_INCLUDED
|
||||||
#define EGLDISPLAY_INCLUDED
|
#define EGLDISPLAY_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functions for choosing and opening/loading device drivers.
|
* Functions for choosing and opening/loading device drivers.
|
||||||
*/
|
*/
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLDRIVER_INCLUDED
|
#ifndef EGLDRIVER_INCLUDED
|
||||||
#define EGLDRIVER_INCLUDED
|
#define EGLDRIVER_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,31 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "egltypedefs.h"
|
#include "egltypedefs.h"
|
||||||
#include "egldriver.h"
|
#include "egldriver.h"
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "eglglobals.h"
|
#include "eglglobals.h"
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLGLOBALS_INCLUDED
|
#ifndef EGLGLOBALS_INCLUDED
|
||||||
#define EGLGLOBALS_INCLUDED
|
#define EGLGLOBALS_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,32 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@@ -1,3 +1,32 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLIMAGE_INCLUDED
|
#ifndef EGLIMAGE_INCLUDED
|
||||||
#define EGLIMAGE_INCLUDED
|
#define EGLIMAGE_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logging facility for debug/info messages.
|
* Logging facility for debug/info messages.
|
||||||
* _EGL_FATAL messages are printed to stderr
|
* _EGL_FATAL messages are printed to stderr
|
||||||
|
@@ -1,3 +1,32 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLLOG_INCLUDED
|
#ifndef EGLLOG_INCLUDED
|
||||||
#define EGLLOG_INCLUDED
|
#define EGLLOG_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
@@ -15,13 +17,13 @@
|
|||||||
* next paragraph) shall be included in all copies or substantial portions
|
* next paragraph) shall be included in all copies or substantial portions
|
||||||
* of the Software.
|
* of the Software.
|
||||||
*
|
*
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* DEALINGS IN THE SOFTWARE.
|
||||||
*
|
*
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
@@ -15,13 +17,13 @@
|
|||||||
* next paragraph) shall be included in all copies or substantial portions
|
* next paragraph) shall be included in all copies or substantial portions
|
||||||
* of the Software.
|
* of the Software.
|
||||||
*
|
*
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* DEALINGS IN THE SOFTWARE.
|
||||||
*
|
*
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLMODE_INCLUDED
|
#ifndef EGLMODE_INCLUDED
|
||||||
#define EGLMODE_INCLUDED
|
#define EGLMODE_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,31 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2009 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLMUTEX_INCLUDED
|
#ifndef EGLMUTEX_INCLUDED
|
||||||
#define EGLMUTEX_INCLUDED
|
#define EGLMUTEX_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ideas for screen management extension to EGL.
|
* Ideas for screen management extension to EGL.
|
||||||
*
|
*
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLSCREEN_INCLUDED
|
#ifndef EGLSCREEN_INCLUDED
|
||||||
#define EGLSCREEN_INCLUDED
|
#define EGLSCREEN_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* String utils.
|
* String utils.
|
||||||
*/
|
*/
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010-2011 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLSTRING_INCLUDED
|
#ifndef EGLSTRING_INCLUDED
|
||||||
#define EGLSTRING_INCLUDED
|
#define EGLSTRING_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Surface-related functions.
|
* Surface-related functions.
|
||||||
*/
|
*/
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLSURFACE_INCLUDED
|
#ifndef EGLSURFACE_INCLUDED
|
||||||
#define EGLSURFACE_INCLUDED
|
#define EGLSURFACE_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,31 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "eglsync.h"
|
#include "eglsync.h"
|
||||||
|
@@ -1,3 +1,31 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLSYNC_INCLUDED
|
#ifndef EGLSYNC_INCLUDED
|
||||||
#define EGLSYNC_INCLUDED
|
#define EGLSYNC_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||||
|
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||||
|
* Copyright 2010 LunarG, Inc.
|
||||||
|
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EGLTYPEDEFS_INCLUDED
|
#ifndef EGLTYPEDEFS_INCLUDED
|
||||||
#define EGLTYPEDEFS_INCLUDED
|
#define EGLTYPEDEFS_INCLUDED
|
||||||
|
|
||||||
|
@@ -1,5 +1,32 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<protocol name="drm">
|
<protocol name="drm">
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
Copyright © 2008-2011 Kristian Høgsberg
|
||||||
|
Copyright © 2010-2011 Intel Corporation
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and sell this
|
||||||
|
software and its documentation for any purpose is hereby granted
|
||||||
|
without fee, provided that\n the above copyright notice appear in
|
||||||
|
all copies and that both that copyright notice and this permission
|
||||||
|
notice appear in supporting documentation, and that the name of
|
||||||
|
the copyright holders not be used in advertising or publicity
|
||||||
|
pertaining to distribution of the software without specific,
|
||||||
|
written prior permission. The copyright holders make no
|
||||||
|
representations about the suitability of this software for any
|
||||||
|
purpose. It is provided "as is" without express or implied
|
||||||
|
warranty.
|
||||||
|
|
||||||
|
THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
|
||||||
|
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
|
||||||
|
AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||||
|
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
||||||
|
THIS SOFTWARE.
|
||||||
|
</copyright>
|
||||||
|
|
||||||
<!-- drm support. This object is created by the server and published
|
<!-- drm support. This object is created by the server and published
|
||||||
using the display's global event. -->
|
using the display's global event. -->
|
||||||
<interface name="wl_drm" version="1">
|
<interface name="wl_drm" version="1">
|
||||||
|
@@ -96,7 +96,7 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *var);
|
|||||||
* Create LLVM type for struct draw_jit_texture
|
* Create LLVM type for struct draw_jit_texture
|
||||||
*/
|
*/
|
||||||
static LLVMTypeRef
|
static LLVMTypeRef
|
||||||
create_jit_texture_type(struct gallivm_state *gallivm)
|
create_jit_texture_type(struct gallivm_state *gallivm, const char *struct_name)
|
||||||
{
|
{
|
||||||
LLVMTargetDataRef target = gallivm->target;
|
LLVMTargetDataRef target = gallivm->target;
|
||||||
LLVMTypeRef texture_type;
|
LLVMTypeRef texture_type;
|
||||||
@@ -120,13 +120,21 @@ create_jit_texture_type(struct gallivm_state *gallivm)
|
|||||||
elem_types[DRAW_JIT_TEXTURE_BORDER_COLOR] =
|
elem_types[DRAW_JIT_TEXTURE_BORDER_COLOR] =
|
||||||
LLVMArrayType(LLVMFloatTypeInContext(gallivm->context), 4);
|
LLVMArrayType(LLVMFloatTypeInContext(gallivm->context), 4);
|
||||||
|
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
texture_type = LLVMStructCreateNamed(gallivm->context, struct_name);
|
||||||
|
LLVMStructSetBody(texture_type, elem_types,
|
||||||
|
Elements(elem_types), 0);
|
||||||
|
#else
|
||||||
texture_type = LLVMStructTypeInContext(gallivm->context, elem_types,
|
texture_type = LLVMStructTypeInContext(gallivm->context, elem_types,
|
||||||
Elements(elem_types), 0);
|
Elements(elem_types), 0);
|
||||||
|
|
||||||
|
LLVMAddTypeName(gallivm->module, struct_name, texture_type);
|
||||||
|
|
||||||
/* Make sure the target's struct layout cache doesn't return
|
/* Make sure the target's struct layout cache doesn't return
|
||||||
* stale/invalid data.
|
* stale/invalid data.
|
||||||
*/
|
*/
|
||||||
LLVMInvalidateStructLayout(gallivm->target, texture_type);
|
LLVMInvalidateStructLayout(gallivm->target, texture_type);
|
||||||
|
#endif
|
||||||
|
|
||||||
LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, width,
|
LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, width,
|
||||||
target, texture_type,
|
target, texture_type,
|
||||||
@@ -176,7 +184,7 @@ create_jit_texture_type(struct gallivm_state *gallivm)
|
|||||||
*/
|
*/
|
||||||
static LLVMTypeRef
|
static LLVMTypeRef
|
||||||
create_jit_context_type(struct gallivm_state *gallivm,
|
create_jit_context_type(struct gallivm_state *gallivm,
|
||||||
LLVMTypeRef texture_type)
|
LLVMTypeRef texture_type, const char *struct_name)
|
||||||
{
|
{
|
||||||
LLVMTargetDataRef target = gallivm->target;
|
LLVMTargetDataRef target = gallivm->target;
|
||||||
LLVMTypeRef float_type = LLVMFloatTypeInContext(gallivm->context);
|
LLVMTypeRef float_type = LLVMFloatTypeInContext(gallivm->context);
|
||||||
@@ -189,11 +197,17 @@ create_jit_context_type(struct gallivm_state *gallivm,
|
|||||||
elem_types[3] = LLVMPointerType(float_type, 0); /* viewport */
|
elem_types[3] = LLVMPointerType(float_type, 0); /* viewport */
|
||||||
elem_types[4] = LLVMArrayType(texture_type,
|
elem_types[4] = LLVMArrayType(texture_type,
|
||||||
PIPE_MAX_VERTEX_SAMPLERS); /* textures */
|
PIPE_MAX_VERTEX_SAMPLERS); /* textures */
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
context_type = LLVMStructCreateNamed(gallivm->context, struct_name);
|
||||||
|
LLVMStructSetBody(context_type, elem_types,
|
||||||
|
Elements(elem_types), 0);
|
||||||
|
#else
|
||||||
context_type = LLVMStructTypeInContext(gallivm->context, elem_types,
|
context_type = LLVMStructTypeInContext(gallivm->context, elem_types,
|
||||||
Elements(elem_types), 0);
|
Elements(elem_types), 0);
|
||||||
|
LLVMAddTypeName(gallivm->module, struct_name, context_type);
|
||||||
|
|
||||||
LLVMInvalidateStructLayout(gallivm->target, context_type);
|
LLVMInvalidateStructLayout(gallivm->target, context_type);
|
||||||
|
#endif
|
||||||
|
|
||||||
LP_CHECK_MEMBER_OFFSET(struct draw_jit_context, vs_constants,
|
LP_CHECK_MEMBER_OFFSET(struct draw_jit_context, vs_constants,
|
||||||
target, context_type, 0);
|
target, context_type, 0);
|
||||||
@@ -215,7 +229,7 @@ create_jit_context_type(struct gallivm_state *gallivm,
|
|||||||
* Create LLVM type for struct pipe_vertex_buffer
|
* Create LLVM type for struct pipe_vertex_buffer
|
||||||
*/
|
*/
|
||||||
static LLVMTypeRef
|
static LLVMTypeRef
|
||||||
create_jit_vertex_buffer_type(struct gallivm_state *gallivm)
|
create_jit_vertex_buffer_type(struct gallivm_state *gallivm, const char *struct_name)
|
||||||
{
|
{
|
||||||
LLVMTargetDataRef target = gallivm->target;
|
LLVMTargetDataRef target = gallivm->target;
|
||||||
LLVMTypeRef elem_types[3];
|
LLVMTypeRef elem_types[3];
|
||||||
@@ -225,10 +239,17 @@ create_jit_vertex_buffer_type(struct gallivm_state *gallivm)
|
|||||||
elem_types[1] = LLVMInt32TypeInContext(gallivm->context);
|
elem_types[1] = LLVMInt32TypeInContext(gallivm->context);
|
||||||
elem_types[2] = LLVMPointerType(LLVMInt8TypeInContext(gallivm->context), 0); /* vs_constants */
|
elem_types[2] = LLVMPointerType(LLVMInt8TypeInContext(gallivm->context), 0); /* vs_constants */
|
||||||
|
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
vb_type = LLVMStructCreateNamed(gallivm->context, struct_name);
|
||||||
|
LLVMStructSetBody(vb_type, elem_types,
|
||||||
|
Elements(elem_types), 0);
|
||||||
|
#else
|
||||||
vb_type = LLVMStructTypeInContext(gallivm->context, elem_types,
|
vb_type = LLVMStructTypeInContext(gallivm->context, elem_types,
|
||||||
Elements(elem_types), 0);
|
Elements(elem_types), 0);
|
||||||
|
LLVMAddTypeName(gallivm->module, struct_name, vb_type);
|
||||||
|
|
||||||
LLVMInvalidateStructLayout(gallivm->target, vb_type);
|
LLVMInvalidateStructLayout(gallivm->target, vb_type);
|
||||||
|
#endif
|
||||||
|
|
||||||
LP_CHECK_MEMBER_OFFSET(struct pipe_vertex_buffer, stride,
|
LP_CHECK_MEMBER_OFFSET(struct pipe_vertex_buffer, stride,
|
||||||
target, vb_type, 0);
|
target, vb_type, 0);
|
||||||
@@ -258,10 +279,17 @@ create_jit_vertex_header(struct gallivm_state *gallivm, int data_elems)
|
|||||||
elem_types[1] = LLVMArrayType(LLVMFloatTypeInContext(gallivm->context), 4);
|
elem_types[1] = LLVMArrayType(LLVMFloatTypeInContext(gallivm->context), 4);
|
||||||
elem_types[2] = LLVMArrayType(elem_types[1], data_elems);
|
elem_types[2] = LLVMArrayType(elem_types[1], data_elems);
|
||||||
|
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
vertex_header = LLVMStructCreateNamed(gallivm->context, struct_name);
|
||||||
|
LLVMStructSetBody(vertex_header, elem_types,
|
||||||
|
Elements(elem_types), 0);
|
||||||
|
#else
|
||||||
vertex_header = LLVMStructTypeInContext(gallivm->context, elem_types,
|
vertex_header = LLVMStructTypeInContext(gallivm->context, elem_types,
|
||||||
Elements(elem_types), 0);
|
Elements(elem_types), 0);
|
||||||
|
LLVMAddTypeName(gallivm->module, struct_name, vertex_header);
|
||||||
|
|
||||||
LLVMInvalidateStructLayout(gallivm->target, vertex_header);
|
LLVMInvalidateStructLayout(gallivm->target, vertex_header);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* these are bit-fields and we can't take address of them
|
/* these are bit-fields and we can't take address of them
|
||||||
LP_CHECK_MEMBER_OFFSET(struct vertex_header, clipmask,
|
LP_CHECK_MEMBER_OFFSET(struct vertex_header, clipmask,
|
||||||
@@ -284,8 +312,6 @@ create_jit_vertex_header(struct gallivm_state *gallivm, int data_elems)
|
|||||||
target, vertex_header,
|
target, vertex_header,
|
||||||
DRAW_JIT_VERTEX_DATA);
|
DRAW_JIT_VERTEX_DATA);
|
||||||
|
|
||||||
LLVMAddTypeName(gallivm->module, struct_name, vertex_header);
|
|
||||||
|
|
||||||
return vertex_header;
|
return vertex_header;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,19 +325,15 @@ create_jit_types(struct draw_llvm *llvm)
|
|||||||
struct gallivm_state *gallivm = llvm->gallivm;
|
struct gallivm_state *gallivm = llvm->gallivm;
|
||||||
LLVMTypeRef texture_type, context_type, buffer_type, vb_type;
|
LLVMTypeRef texture_type, context_type, buffer_type, vb_type;
|
||||||
|
|
||||||
texture_type = create_jit_texture_type(gallivm);
|
texture_type = create_jit_texture_type(gallivm, "texture");
|
||||||
LLVMAddTypeName(gallivm->module, "texture", texture_type);
|
|
||||||
|
|
||||||
context_type = create_jit_context_type(gallivm, texture_type);
|
context_type = create_jit_context_type(gallivm, texture_type, "draw_jit_context");
|
||||||
LLVMAddTypeName(gallivm->module, "draw_jit_context", context_type);
|
|
||||||
llvm->context_ptr_type = LLVMPointerType(context_type, 0);
|
llvm->context_ptr_type = LLVMPointerType(context_type, 0);
|
||||||
|
|
||||||
buffer_type = LLVMPointerType(LLVMIntTypeInContext(gallivm->context, 8), 0);
|
buffer_type = LLVMPointerType(LLVMIntTypeInContext(gallivm->context, 8), 0);
|
||||||
LLVMAddTypeName(gallivm->module, "buffer", buffer_type);
|
|
||||||
llvm->buffer_ptr_type = LLVMPointerType(buffer_type, 0);
|
llvm->buffer_ptr_type = LLVMPointerType(buffer_type, 0);
|
||||||
|
|
||||||
vb_type = create_jit_vertex_buffer_type(gallivm);
|
vb_type = create_jit_vertex_buffer_type(gallivm, "pipe_vertex_buffer");
|
||||||
LLVMAddTypeName(gallivm->module, "pipe_vertex_buffer", vb_type);
|
|
||||||
llvm->vb_ptr_type = LLVMPointerType(vb_type, 0);
|
llvm->vb_ptr_type = LLVMPointerType(vb_type, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,17 +27,23 @@
|
|||||||
|
|
||||||
#include <llvm-c/Core.h>
|
#include <llvm-c/Core.h>
|
||||||
#include <llvm/Target/TargetMachine.h>
|
#include <llvm/Target/TargetMachine.h>
|
||||||
#include <llvm/Target/TargetRegistry.h>
|
|
||||||
#include <llvm/Target/TargetSelect.h>
|
|
||||||
#include <llvm/Target/TargetInstrInfo.h>
|
#include <llvm/Target/TargetInstrInfo.h>
|
||||||
#include <llvm/Support/raw_ostream.h>
|
#include <llvm/Support/raw_ostream.h>
|
||||||
#include <llvm/Support/MemoryObject.h>
|
#include <llvm/Support/MemoryObject.h>
|
||||||
|
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
#include <llvm/Support/TargetRegistry.h>
|
||||||
|
#include <llvm/Support/TargetSelect.h>
|
||||||
|
#else /* HAVE_LLVM < 0x0300 */
|
||||||
|
#include <llvm/Target/TargetRegistry.h>
|
||||||
|
#include <llvm/Target/TargetSelect.h>
|
||||||
|
#endif /* HAVE_LLVM < 0x0300 */
|
||||||
|
|
||||||
#if HAVE_LLVM >= 0x0209
|
#if HAVE_LLVM >= 0x0209
|
||||||
#include <llvm/Support/Host.h>
|
#include <llvm/Support/Host.h>
|
||||||
#else
|
#else /* HAVE_LLVM < 0x0209 */
|
||||||
#include <llvm/System/Host.h>
|
#include <llvm/System/Host.h>
|
||||||
#endif
|
#endif /* HAVE_LLVM < 0x0209 */
|
||||||
|
|
||||||
#if HAVE_LLVM >= 0x0207
|
#if HAVE_LLVM >= 0x0207
|
||||||
#include <llvm/MC/MCDisassembler.h>
|
#include <llvm/MC/MCDisassembler.h>
|
||||||
@@ -193,30 +199,39 @@ lp_disassemble(const void* func)
|
|||||||
|
|
||||||
InitializeAllDisassemblers();
|
InitializeAllDisassemblers();
|
||||||
|
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
OwningPtr<const MCAsmInfo> AsmInfo(T->createMCAsmInfo(Triple));
|
||||||
|
#else
|
||||||
OwningPtr<const MCAsmInfo> AsmInfo(T->createAsmInfo(Triple));
|
OwningPtr<const MCAsmInfo> AsmInfo(T->createAsmInfo(Triple));
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!AsmInfo) {
|
if (!AsmInfo) {
|
||||||
debug_printf("error: no assembly info for target %s\n", Triple.c_str());
|
debug_printf("error: no assembly info for target %s\n", Triple.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
const MCSubtargetInfo *STI = T->createMCSubtargetInfo(Triple, sys::getHostCPUName(), "");
|
||||||
|
OwningPtr<const MCDisassembler> DisAsm(T->createMCDisassembler(*STI));
|
||||||
|
#else
|
||||||
OwningPtr<const MCDisassembler> DisAsm(T->createMCDisassembler());
|
OwningPtr<const MCDisassembler> DisAsm(T->createMCDisassembler());
|
||||||
|
#endif
|
||||||
if (!DisAsm) {
|
if (!DisAsm) {
|
||||||
debug_printf("error: no disassembler for target %s\n", Triple.c_str());
|
debug_printf("error: no disassembler for target %s\n", Triple.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
raw_debug_ostream Out;
|
raw_debug_ostream Out;
|
||||||
TargetMachine *TM = T->createTargetMachine(Triple, "");
|
|
||||||
|
|
||||||
#if HAVE_LLVM >= 0x0300
|
#if HAVE_LLVM >= 0x0300
|
||||||
unsigned int AsmPrinterVariant = AsmInfo->getAssemblerDialect();
|
unsigned int AsmPrinterVariant = AsmInfo->getAssemblerDialect();
|
||||||
#else
|
#else
|
||||||
int AsmPrinterVariant = AsmInfo->getAssemblerDialect();
|
int AsmPrinterVariant = AsmInfo->getAssemblerDialect();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAVE_LLVM >= 0x0300
|
#if HAVE_LLVM >= 0x0300
|
||||||
OwningPtr<MCInstPrinter> Printer(
|
OwningPtr<MCInstPrinter> Printer(
|
||||||
T->createMCInstPrinter(*TM, AsmPrinterVariant, *AsmInfo));
|
T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo, *STI));
|
||||||
#elif HAVE_LLVM >= 0x0208
|
#elif HAVE_LLVM >= 0x0208
|
||||||
OwningPtr<MCInstPrinter> Printer(
|
OwningPtr<MCInstPrinter> Printer(
|
||||||
T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo));
|
T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo));
|
||||||
@@ -229,6 +244,12 @@ lp_disassemble(const void* func)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
TargetMachine *TM = T->createTargetMachine(Triple, sys::getHostCPUName(), "");
|
||||||
|
#else
|
||||||
|
TargetMachine *TM = T->createTargetMachine(Triple, "");
|
||||||
|
#endif
|
||||||
|
|
||||||
const TargetInstrInfo *TII = TM->getInstrInfo();
|
const TargetInstrInfo *TII = TM->getInstrInfo();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -251,7 +272,11 @@ lp_disassemble(const void* func)
|
|||||||
|
|
||||||
if (!DisAsm->getInstruction(Inst, Size, memoryObject,
|
if (!DisAsm->getInstruction(Inst, Size, memoryObject,
|
||||||
pc,
|
pc,
|
||||||
nulls())) {
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
nulls(), nulls())) {
|
||||||
|
#else
|
||||||
|
nulls())) {
|
||||||
|
#endif
|
||||||
debug_printf("invalid\n");
|
debug_printf("invalid\n");
|
||||||
pc += 1;
|
pc += 1;
|
||||||
}
|
}
|
||||||
@@ -274,7 +299,9 @@ lp_disassemble(const void* func)
|
|||||||
* Print the instruction.
|
* Print the instruction.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if HAVE_LLVM >= 0x208
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
Printer->printInst(&Inst, Out, "");
|
||||||
|
#elif HAVE_LLVM >= 0x208
|
||||||
Printer->printInst(&Inst, Out);
|
Printer->printInst(&Inst, Out);
|
||||||
#else
|
#else
|
||||||
Printer->printInst(&Inst);
|
Printer->printInst(&Inst);
|
||||||
@@ -287,7 +314,11 @@ lp_disassemble(const void* func)
|
|||||||
|
|
||||||
pc += Size;
|
pc += Size;
|
||||||
|
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
const MCInstrDesc &TID = TII->get(Inst.getOpcode());
|
||||||
|
#else
|
||||||
const TargetInstrDesc &TID = TII->get(Inst.getOpcode());
|
const TargetInstrDesc &TID = TII->get(Inst.getOpcode());
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Keep track of forward jumps to a nearby address.
|
* Keep track of forward jumps to a nearby address.
|
||||||
|
@@ -325,16 +325,18 @@ lp_typekind_name(LLVMTypeKind t)
|
|||||||
return "LLVMArrayTypeKind";
|
return "LLVMArrayTypeKind";
|
||||||
case LLVMPointerTypeKind:
|
case LLVMPointerTypeKind:
|
||||||
return "LLVMPointerTypeKind";
|
return "LLVMPointerTypeKind";
|
||||||
|
#if HAVE_LLVM < 0x0300
|
||||||
case LLVMOpaqueTypeKind:
|
case LLVMOpaqueTypeKind:
|
||||||
return "LLVMOpaqueTypeKind";
|
return "LLVMOpaqueTypeKind";
|
||||||
|
#endif
|
||||||
case LLVMVectorTypeKind:
|
case LLVMVectorTypeKind:
|
||||||
return "LLVMVectorTypeKind";
|
return "LLVMVectorTypeKind";
|
||||||
case LLVMMetadataTypeKind:
|
case LLVMMetadataTypeKind:
|
||||||
return "LLVMMetadataTypeKind";
|
return "LLVMMetadataTypeKind";
|
||||||
/* Only in LLVM 2.7 and later???
|
#if HAVE_LLVM == 0x0207
|
||||||
case LLVMUnionTypeKind:
|
case LLVMUnionTypeKind:
|
||||||
return "LLVMUnionTypeKind";
|
return "LLVMUnionTypeKind";
|
||||||
*/
|
#endif
|
||||||
default:
|
default:
|
||||||
return "unknown LLVMTypeKind";
|
return "unknown LLVMTypeKind";
|
||||||
}
|
}
|
||||||
|
@@ -324,6 +324,13 @@ pb_cache_manager_create_buffer(struct pb_manager *_mgr,
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
buf->buffer = mgr->provider->create_buffer(mgr->provider, size, desc);
|
buf->buffer = mgr->provider->create_buffer(mgr->provider, size, desc);
|
||||||
|
|
||||||
|
/* Empty the cache and try again. */
|
||||||
|
if (!buf->buffer) {
|
||||||
|
mgr->base.flush(&mgr->base);
|
||||||
|
buf->buffer = mgr->provider->create_buffer(mgr->provider, size, desc);
|
||||||
|
}
|
||||||
|
|
||||||
if(!buf->buffer) {
|
if(!buf->buffer) {
|
||||||
FREE(buf);
|
FREE(buf);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@@ -119,8 +119,15 @@ util_format_s3tc_init(void)
|
|||||||
|
|
||||||
library = util_dl_open(DXTN_LIBNAME);
|
library = util_dl_open(DXTN_LIBNAME);
|
||||||
if (!library) {
|
if (!library) {
|
||||||
debug_printf("couldn't open " DXTN_LIBNAME ", software DXTn "
|
if (getenv("force_s3tc_enable") &&
|
||||||
"compression/decompression unavailable\n");
|
!strcmp(getenv("force_s3tc_enable"), "true")) {
|
||||||
|
debug_printf("couldn't open " DXTN_LIBNAME ", enabling DXTn due to "
|
||||||
|
"force_s3tc_enable=true environment variable\n");
|
||||||
|
util_format_s3tc_enabled = TRUE;
|
||||||
|
} else {
|
||||||
|
debug_printf("couldn't open " DXTN_LIBNAME ", software DXTn "
|
||||||
|
"compression/decompression unavailable\n");
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -547,6 +547,19 @@ util_bitcount(unsigned n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert from little endian to CPU byte order.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef PIPE_ARCH_BIG_ENDIAN
|
||||||
|
#define util_le32_to_cpu(x) util_bswap32(x)
|
||||||
|
#define util_le16_to_cpu(x) util_bswap16(x)
|
||||||
|
#else
|
||||||
|
#define util_le32_to_cpu(x) (x)
|
||||||
|
#define util_le16_to_cpu(x) (x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse byte order of a 32 bit word.
|
* Reverse byte order of a 32 bit word.
|
||||||
*/
|
*/
|
||||||
|
@@ -49,7 +49,7 @@ struct u_vbuf_caps {
|
|||||||
unsigned fetch_dword_unaligned:1;
|
unsigned fetch_dword_unaligned:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct u_vbuf_mgr_elements {
|
struct u_vbuf_elements {
|
||||||
unsigned count;
|
unsigned count;
|
||||||
struct pipe_vertex_element ve[PIPE_MAX_ATTRIBS];
|
struct pipe_vertex_element ve[PIPE_MAX_ATTRIBS];
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ struct u_vbuf_mgr_elements {
|
|||||||
boolean incompatible_layout;
|
boolean incompatible_layout;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct u_vbuf_mgr_priv {
|
struct u_vbuf_priv {
|
||||||
struct u_vbuf_mgr b;
|
struct u_vbuf_mgr b;
|
||||||
struct u_vbuf_caps caps;
|
struct u_vbuf_caps caps;
|
||||||
struct pipe_context *pipe;
|
struct pipe_context *pipe;
|
||||||
@@ -75,7 +75,7 @@ struct u_vbuf_mgr_priv {
|
|||||||
struct translate_cache *translate_cache;
|
struct translate_cache *translate_cache;
|
||||||
unsigned translate_vb_slot;
|
unsigned translate_vb_slot;
|
||||||
|
|
||||||
struct u_vbuf_mgr_elements *ve;
|
struct u_vbuf_elements *ve;
|
||||||
void *saved_ve, *fallback_ve;
|
void *saved_ve, *fallback_ve;
|
||||||
boolean ve_binding_lock;
|
boolean ve_binding_lock;
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ struct u_vbuf_mgr_priv {
|
|||||||
boolean incompatible_vb_layout;
|
boolean incompatible_vb_layout;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void u_vbuf_mgr_init_format_caps(struct u_vbuf_mgr_priv *mgr)
|
static void u_vbuf_init_format_caps(struct u_vbuf_priv *mgr)
|
||||||
{
|
{
|
||||||
struct pipe_screen *screen = mgr->pipe->screen;
|
struct pipe_screen *screen = mgr->pipe->screen;
|
||||||
|
|
||||||
@@ -113,13 +113,13 @@ static void u_vbuf_mgr_init_format_caps(struct u_vbuf_mgr_priv *mgr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct u_vbuf_mgr *
|
struct u_vbuf_mgr *
|
||||||
u_vbuf_mgr_create(struct pipe_context *pipe,
|
u_vbuf_create(struct pipe_context *pipe,
|
||||||
unsigned upload_buffer_size,
|
unsigned upload_buffer_size,
|
||||||
unsigned upload_buffer_alignment,
|
unsigned upload_buffer_alignment,
|
||||||
unsigned upload_buffer_bind,
|
unsigned upload_buffer_bind,
|
||||||
enum u_fetch_alignment fetch_alignment)
|
enum u_fetch_alignment fetch_alignment)
|
||||||
{
|
{
|
||||||
struct u_vbuf_mgr_priv *mgr = CALLOC_STRUCT(u_vbuf_mgr_priv);
|
struct u_vbuf_priv *mgr = CALLOC_STRUCT(u_vbuf_priv);
|
||||||
|
|
||||||
mgr->pipe = pipe;
|
mgr->pipe = pipe;
|
||||||
mgr->translate_cache = translate_cache_create();
|
mgr->translate_cache = translate_cache_create();
|
||||||
@@ -131,19 +131,21 @@ u_vbuf_mgr_create(struct pipe_context *pipe,
|
|||||||
mgr->caps.fetch_dword_unaligned =
|
mgr->caps.fetch_dword_unaligned =
|
||||||
fetch_alignment == U_VERTEX_FETCH_BYTE_ALIGNED;
|
fetch_alignment == U_VERTEX_FETCH_BYTE_ALIGNED;
|
||||||
|
|
||||||
u_vbuf_mgr_init_format_caps(mgr);
|
u_vbuf_init_format_caps(mgr);
|
||||||
|
|
||||||
return &mgr->b;
|
return &mgr->b;
|
||||||
}
|
}
|
||||||
|
|
||||||
void u_vbuf_mgr_destroy(struct u_vbuf_mgr *mgrb)
|
void u_vbuf_destroy(struct u_vbuf_mgr *mgrb)
|
||||||
{
|
{
|
||||||
struct u_vbuf_mgr_priv *mgr = (struct u_vbuf_mgr_priv*)mgrb;
|
struct u_vbuf_priv *mgr = (struct u_vbuf_priv*)mgrb;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
for (i = 0; i < mgr->b.nr_real_vertex_buffers; i++) {
|
for (i = 0; i < mgr->b.nr_vertex_buffers; i++) {
|
||||||
pipe_resource_reference(&mgr->b.vertex_buffer[i].buffer, NULL);
|
pipe_resource_reference(&mgr->b.vertex_buffer[i].buffer, NULL);
|
||||||
pipe_resource_reference(&mgr->b.real_vertex_buffer[i], NULL);
|
}
|
||||||
|
for (i = 0; i < mgr->b.nr_real_vertex_buffers; i++) {
|
||||||
|
pipe_resource_reference(&mgr->b.real_vertex_buffer[i].buffer, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
translate_cache_destroy(mgr->translate_cache);
|
translate_cache_destroy(mgr->translate_cache);
|
||||||
@@ -152,8 +154,8 @@ void u_vbuf_mgr_destroy(struct u_vbuf_mgr *mgrb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static enum u_vbuf_return_flags
|
static void
|
||||||
u_vbuf_translate_begin(struct u_vbuf_mgr_priv *mgr,
|
u_vbuf_translate_begin(struct u_vbuf_priv *mgr,
|
||||||
int min_index, int max_index)
|
int min_index, int max_index)
|
||||||
{
|
{
|
||||||
struct translate_key key;
|
struct translate_key key;
|
||||||
@@ -280,9 +282,9 @@ u_vbuf_translate_begin(struct u_vbuf_mgr_priv *mgr,
|
|||||||
if (mgr->translate_vb_slot != ~0) {
|
if (mgr->translate_vb_slot != ~0) {
|
||||||
/* Setup the new vertex buffer. */
|
/* Setup the new vertex buffer. */
|
||||||
pipe_resource_reference(
|
pipe_resource_reference(
|
||||||
&mgr->b.real_vertex_buffer[mgr->translate_vb_slot], out_buffer);
|
&mgr->b.real_vertex_buffer[mgr->translate_vb_slot].buffer, out_buffer);
|
||||||
mgr->b.vertex_buffer[mgr->translate_vb_slot].buffer_offset = out_offset;
|
mgr->b.real_vertex_buffer[mgr->translate_vb_slot].buffer_offset = out_offset;
|
||||||
mgr->b.vertex_buffer[mgr->translate_vb_slot].stride = key.output_stride;
|
mgr->b.real_vertex_buffer[mgr->translate_vb_slot].stride = key.output_stride;
|
||||||
|
|
||||||
/* Setup new vertex elements. */
|
/* Setup new vertex elements. */
|
||||||
for (i = 0; i < mgr->ve->count; i++) {
|
for (i = 0; i < mgr->ve->count; i++) {
|
||||||
@@ -309,11 +311,9 @@ u_vbuf_translate_begin(struct u_vbuf_mgr_priv *mgr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
pipe_resource_reference(&out_buffer, NULL);
|
pipe_resource_reference(&out_buffer, NULL);
|
||||||
|
|
||||||
return upload_flushed ? U_VBUF_UPLOAD_FLUSHED : 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void u_vbuf_translate_end(struct u_vbuf_mgr_priv *mgr)
|
static void u_vbuf_translate_end(struct u_vbuf_priv *mgr)
|
||||||
{
|
{
|
||||||
if (mgr->fallback_ve == NULL) {
|
if (mgr->fallback_ve == NULL) {
|
||||||
return;
|
return;
|
||||||
@@ -326,7 +326,7 @@ static void u_vbuf_translate_end(struct u_vbuf_mgr_priv *mgr)
|
|||||||
mgr->fallback_ve = NULL;
|
mgr->fallback_ve = NULL;
|
||||||
|
|
||||||
/* Delete the now-unused VBO. */
|
/* Delete the now-unused VBO. */
|
||||||
pipe_resource_reference(&mgr->b.real_vertex_buffer[mgr->translate_vb_slot],
|
pipe_resource_reference(&mgr->b.real_vertex_buffer[mgr->translate_vb_slot].buffer,
|
||||||
NULL);
|
NULL);
|
||||||
mgr->b.nr_real_vertex_buffers = mgr->b.nr_vertex_buffers;
|
mgr->b.nr_real_vertex_buffers = mgr->b.nr_vertex_buffers;
|
||||||
}
|
}
|
||||||
@@ -334,15 +334,15 @@ static void u_vbuf_translate_end(struct u_vbuf_mgr_priv *mgr)
|
|||||||
#define FORMAT_REPLACE(what, withwhat) \
|
#define FORMAT_REPLACE(what, withwhat) \
|
||||||
case PIPE_FORMAT_##what: format = PIPE_FORMAT_##withwhat; break
|
case PIPE_FORMAT_##what: format = PIPE_FORMAT_##withwhat; break
|
||||||
|
|
||||||
struct u_vbuf_mgr_elements *
|
struct u_vbuf_elements *
|
||||||
u_vbuf_mgr_create_vertex_elements(struct u_vbuf_mgr *mgrb,
|
u_vbuf_create_vertex_elements(struct u_vbuf_mgr *mgrb,
|
||||||
unsigned count,
|
unsigned count,
|
||||||
const struct pipe_vertex_element *attribs,
|
const struct pipe_vertex_element *attribs,
|
||||||
struct pipe_vertex_element *native_attribs)
|
struct pipe_vertex_element *native_attribs)
|
||||||
{
|
{
|
||||||
struct u_vbuf_mgr_priv *mgr = (struct u_vbuf_mgr_priv*)mgrb;
|
struct u_vbuf_priv *mgr = (struct u_vbuf_priv*)mgrb;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
struct u_vbuf_mgr_elements *ve = CALLOC_STRUCT(u_vbuf_mgr_elements);
|
struct u_vbuf_elements *ve = CALLOC_STRUCT(u_vbuf_elements);
|
||||||
|
|
||||||
ve->count = count;
|
ve->count = count;
|
||||||
|
|
||||||
@@ -438,11 +438,11 @@ u_vbuf_mgr_create_vertex_elements(struct u_vbuf_mgr *mgrb,
|
|||||||
return ve;
|
return ve;
|
||||||
}
|
}
|
||||||
|
|
||||||
void u_vbuf_mgr_bind_vertex_elements(struct u_vbuf_mgr *mgrb,
|
void u_vbuf_bind_vertex_elements(struct u_vbuf_mgr *mgrb,
|
||||||
void *cso,
|
void *cso,
|
||||||
struct u_vbuf_mgr_elements *ve)
|
struct u_vbuf_elements *ve)
|
||||||
{
|
{
|
||||||
struct u_vbuf_mgr_priv *mgr = (struct u_vbuf_mgr_priv*)mgrb;
|
struct u_vbuf_priv *mgr = (struct u_vbuf_priv*)mgrb;
|
||||||
|
|
||||||
if (!cso) {
|
if (!cso) {
|
||||||
return;
|
return;
|
||||||
@@ -454,17 +454,17 @@ void u_vbuf_mgr_bind_vertex_elements(struct u_vbuf_mgr *mgrb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void u_vbuf_mgr_destroy_vertex_elements(struct u_vbuf_mgr *mgr,
|
void u_vbuf_destroy_vertex_elements(struct u_vbuf_mgr *mgr,
|
||||||
struct u_vbuf_mgr_elements *ve)
|
struct u_vbuf_elements *ve)
|
||||||
{
|
{
|
||||||
FREE(ve);
|
FREE(ve);
|
||||||
}
|
}
|
||||||
|
|
||||||
void u_vbuf_mgr_set_vertex_buffers(struct u_vbuf_mgr *mgrb,
|
void u_vbuf_set_vertex_buffers(struct u_vbuf_mgr *mgrb,
|
||||||
unsigned count,
|
unsigned count,
|
||||||
const struct pipe_vertex_buffer *bufs)
|
const struct pipe_vertex_buffer *bufs)
|
||||||
{
|
{
|
||||||
struct u_vbuf_mgr_priv *mgr = (struct u_vbuf_mgr_priv*)mgrb;
|
struct u_vbuf_priv *mgr = (struct u_vbuf_priv*)mgrb;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
mgr->any_user_vbs = FALSE;
|
mgr->any_user_vbs = FALSE;
|
||||||
@@ -487,7 +487,13 @@ void u_vbuf_mgr_set_vertex_buffers(struct u_vbuf_mgr *mgrb,
|
|||||||
const struct pipe_vertex_buffer *vb = &bufs[i];
|
const struct pipe_vertex_buffer *vb = &bufs[i];
|
||||||
|
|
||||||
pipe_resource_reference(&mgr->b.vertex_buffer[i].buffer, vb->buffer);
|
pipe_resource_reference(&mgr->b.vertex_buffer[i].buffer, vb->buffer);
|
||||||
pipe_resource_reference(&mgr->b.real_vertex_buffer[i], NULL);
|
pipe_resource_reference(&mgr->b.real_vertex_buffer[i].buffer, NULL);
|
||||||
|
|
||||||
|
mgr->b.real_vertex_buffer[i].buffer_offset =
|
||||||
|
mgr->b.vertex_buffer[i].buffer_offset = vb->buffer_offset;
|
||||||
|
|
||||||
|
mgr->b.real_vertex_buffer[i].stride =
|
||||||
|
mgr->b.vertex_buffer[i].stride = vb->stride;
|
||||||
|
|
||||||
if (!vb->buffer) {
|
if (!vb->buffer) {
|
||||||
continue;
|
continue;
|
||||||
@@ -498,79 +504,95 @@ void u_vbuf_mgr_set_vertex_buffers(struct u_vbuf_mgr *mgrb,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
pipe_resource_reference(&mgr->b.real_vertex_buffer[i], vb->buffer);
|
pipe_resource_reference(&mgr->b.real_vertex_buffer[i].buffer, vb->buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (; i < mgr->b.nr_real_vertex_buffers; i++) {
|
for (i = count; i < mgr->b.nr_vertex_buffers; i++) {
|
||||||
pipe_resource_reference(&mgr->b.vertex_buffer[i].buffer, NULL);
|
pipe_resource_reference(&mgr->b.vertex_buffer[i].buffer, NULL);
|
||||||
pipe_resource_reference(&mgr->b.real_vertex_buffer[i], NULL);
|
|
||||||
}
|
}
|
||||||
|
for (i = count; i < mgr->b.nr_real_vertex_buffers; i++) {
|
||||||
memcpy(mgr->b.vertex_buffer, bufs,
|
pipe_resource_reference(&mgr->b.real_vertex_buffer[i].buffer, NULL);
|
||||||
sizeof(struct pipe_vertex_buffer) * count);
|
}
|
||||||
|
|
||||||
mgr->b.nr_vertex_buffers = count;
|
mgr->b.nr_vertex_buffers = count;
|
||||||
mgr->b.nr_real_vertex_buffers = count;
|
mgr->b.nr_real_vertex_buffers = count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum u_vbuf_return_flags
|
static void
|
||||||
u_vbuf_upload_buffers(struct u_vbuf_mgr_priv *mgr,
|
u_vbuf_upload_buffers(struct u_vbuf_priv *mgr,
|
||||||
int min_index, int max_index,
|
int min_index, int max_index,
|
||||||
unsigned instance_count)
|
unsigned instance_count)
|
||||||
{
|
{
|
||||||
unsigned i, nr = mgr->ve->count;
|
unsigned i;
|
||||||
unsigned count = max_index + 1 - min_index;
|
unsigned count = max_index + 1 - min_index;
|
||||||
boolean uploaded[PIPE_MAX_ATTRIBS] = {0};
|
unsigned nr_velems = mgr->ve->count;
|
||||||
enum u_vbuf_return_flags retval = 0;
|
unsigned nr_vbufs = mgr->b.nr_vertex_buffers;
|
||||||
|
unsigned start_offset[PIPE_MAX_ATTRIBS];
|
||||||
|
unsigned end_offset[PIPE_MAX_ATTRIBS] = {0};
|
||||||
|
|
||||||
for (i = 0; i < nr; i++) {
|
/* Determine how much data needs to be uploaded. */
|
||||||
unsigned index = mgr->ve->ve[i].vertex_buffer_index;
|
for (i = 0; i < nr_velems; i++) {
|
||||||
|
struct pipe_vertex_element *velem = &mgr->ve->ve[i];
|
||||||
|
unsigned index = velem->vertex_buffer_index;
|
||||||
|
unsigned instance_div = velem->instance_divisor;
|
||||||
struct pipe_vertex_buffer *vb = &mgr->b.vertex_buffer[index];
|
struct pipe_vertex_buffer *vb = &mgr->b.vertex_buffer[index];
|
||||||
|
unsigned first, size;
|
||||||
|
|
||||||
if (vb->buffer &&
|
assert(vb->buffer);
|
||||||
u_vbuf_resource(vb->buffer)->user_ptr &&
|
|
||||||
!uploaded[index]) {
|
|
||||||
unsigned first, size;
|
|
||||||
boolean flushed;
|
|
||||||
unsigned instance_div = mgr->ve->ve[i].instance_divisor;
|
|
||||||
|
|
||||||
if (instance_div) {
|
if (!u_vbuf_resource(vb->buffer)->user_ptr) {
|
||||||
first = 0;
|
continue;
|
||||||
size = vb->stride *
|
}
|
||||||
((instance_count + instance_div - 1) / instance_div);
|
|
||||||
} else if (vb->stride) {
|
|
||||||
first = vb->stride * min_index;
|
|
||||||
size = vb->stride * count;
|
|
||||||
|
|
||||||
/* Unusual case when stride is smaller than the format size.
|
first = vb->buffer_offset + velem->src_offset;
|
||||||
* XXX This won't work with interleaved arrays. */
|
|
||||||
if (mgr->ve->native_format_size[i] > vb->stride)
|
|
||||||
size += mgr->ve->native_format_size[i] - vb->stride;
|
|
||||||
} else {
|
|
||||||
first = 0;
|
|
||||||
size = mgr->ve->native_format_size[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
u_upload_data(mgr->b.uploader, first, size,
|
if (!vb->stride) {
|
||||||
u_vbuf_resource(vb->buffer)->user_ptr + first,
|
/* Constant attrib. */
|
||||||
&vb->buffer_offset,
|
size = mgr->ve->src_format_size[i];
|
||||||
&mgr->b.real_vertex_buffer[index],
|
} else if (instance_div) {
|
||||||
&flushed);
|
/* Per-instance attrib. */
|
||||||
|
unsigned count = (instance_count + instance_div - 1) / instance_div;
|
||||||
vb->buffer_offset -= first;
|
size = vb->stride * (count - 1) + mgr->ve->src_format_size[i];
|
||||||
|
|
||||||
uploaded[index] = TRUE;
|
|
||||||
if (flushed)
|
|
||||||
retval |= U_VBUF_UPLOAD_FLUSHED;
|
|
||||||
} else {
|
} else {
|
||||||
assert(mgr->b.real_vertex_buffer[index]);
|
/* Per-vertex attrib. */
|
||||||
|
first += vb->stride * min_index;
|
||||||
|
size = vb->stride * (count - 1) + mgr->ve->src_format_size[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Update offsets. */
|
||||||
|
if (!end_offset[index]) {
|
||||||
|
start_offset[index] = first;
|
||||||
|
end_offset[index] = first + size;
|
||||||
|
} else {
|
||||||
|
if (first < start_offset[index])
|
||||||
|
start_offset[index] = first;
|
||||||
|
if (first + size > end_offset[index])
|
||||||
|
end_offset[index] = first + size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return retval;
|
/* Upload buffers. */
|
||||||
|
for (i = 0; i < nr_vbufs; i++) {
|
||||||
|
unsigned start = start_offset[i];
|
||||||
|
unsigned end = end_offset[i];
|
||||||
|
boolean flushed;
|
||||||
|
|
||||||
|
if (!end) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
assert(start < end);
|
||||||
|
|
||||||
|
u_upload_data(mgr->b.uploader, start, end - start,
|
||||||
|
u_vbuf_resource(mgr->b.vertex_buffer[i].buffer)->user_ptr + start,
|
||||||
|
&mgr->b.real_vertex_buffer[i].buffer_offset,
|
||||||
|
&mgr->b.real_vertex_buffer[i].buffer,
|
||||||
|
&flushed);
|
||||||
|
|
||||||
|
mgr->b.real_vertex_buffer[i].buffer_offset -= start;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void u_vbuf_mgr_compute_max_index(struct u_vbuf_mgr_priv *mgr)
|
static void u_vbuf_compute_max_index(struct u_vbuf_priv *mgr)
|
||||||
{
|
{
|
||||||
unsigned i, nr = mgr->ve->count;
|
unsigned i, nr = mgr->ve->count;
|
||||||
|
|
||||||
@@ -579,25 +601,26 @@ static void u_vbuf_mgr_compute_max_index(struct u_vbuf_mgr_priv *mgr)
|
|||||||
for (i = 0; i < nr; i++) {
|
for (i = 0; i < nr; i++) {
|
||||||
struct pipe_vertex_buffer *vb =
|
struct pipe_vertex_buffer *vb =
|
||||||
&mgr->b.vertex_buffer[mgr->ve->ve[i].vertex_buffer_index];
|
&mgr->b.vertex_buffer[mgr->ve->ve[i].vertex_buffer_index];
|
||||||
int unused;
|
unsigned max_index, src_size, unused;
|
||||||
unsigned max_index;
|
|
||||||
|
|
||||||
if (!vb->buffer ||
|
if (!vb->buffer ||
|
||||||
!vb->stride ||
|
!vb->stride ||
|
||||||
u_vbuf_resource(vb->buffer)->user_ptr) {
|
u_vbuf_resource(vb->buffer)->user_ptr ||
|
||||||
|
mgr->ve->ve[i].instance_divisor) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* How many bytes is unused after the last vertex.
|
src_size = mgr->ve->ve[i].src_offset + mgr->ve->src_format_size[i];
|
||||||
* width0 may be "count*stride - unused" and we have to compensate
|
|
||||||
* for that when dividing by stride. */
|
|
||||||
unused = vb->stride -
|
|
||||||
(mgr->ve->ve[i].src_offset + mgr->ve->src_format_size[i]);
|
|
||||||
|
|
||||||
/* If src_offset is greater than stride (which means it's a buffer
|
/* If src_offset is greater than stride (which means it's a buffer
|
||||||
* offset rather than a vertex offset)... */
|
* offset rather than a vertex offset)... */
|
||||||
if (unused < 0) {
|
if (src_size >= vb->stride) {
|
||||||
unused = 0;
|
unused = 0;
|
||||||
|
} else {
|
||||||
|
/* How many bytes is unused after the last vertex.
|
||||||
|
* width0 may be "count*stride - unused" and we have to compensate
|
||||||
|
* for that when dividing by stride. */
|
||||||
|
unused = vb->stride - src_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Compute the maximum index for this vertex element. */
|
/* Compute the maximum index for this vertex element. */
|
||||||
@@ -610,43 +633,43 @@ static void u_vbuf_mgr_compute_max_index(struct u_vbuf_mgr_priv *mgr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum u_vbuf_return_flags
|
enum u_vbuf_return_flags
|
||||||
u_vbuf_mgr_draw_begin(struct u_vbuf_mgr *mgrb,
|
u_vbuf_draw_begin(struct u_vbuf_mgr *mgrb,
|
||||||
const struct pipe_draw_info *info)
|
const struct pipe_draw_info *info)
|
||||||
{
|
{
|
||||||
struct u_vbuf_mgr_priv *mgr = (struct u_vbuf_mgr_priv*)mgrb;
|
struct u_vbuf_priv *mgr = (struct u_vbuf_priv*)mgrb;
|
||||||
int min_index, max_index;
|
int min_index, max_index;
|
||||||
enum u_vbuf_return_flags retval = 0;
|
|
||||||
|
|
||||||
u_vbuf_mgr_compute_max_index(mgr);
|
u_vbuf_compute_max_index(mgr);
|
||||||
|
|
||||||
min_index = info->min_index - info->index_bias;
|
if (info->indexed) {
|
||||||
if (info->max_index == ~0) {
|
min_index = info->min_index;
|
||||||
max_index = mgr->b.max_index;
|
if (info->max_index == ~0) {
|
||||||
|
max_index = mgr->b.max_index;
|
||||||
|
} else {
|
||||||
|
max_index = MIN2(info->max_index, mgr->b.max_index);
|
||||||
|
}
|
||||||
|
min_index += info->index_bias;
|
||||||
|
max_index += info->index_bias;
|
||||||
} else {
|
} else {
|
||||||
max_index = MIN2(info->max_index - info->index_bias, mgr->b.max_index);
|
min_index = info->start;
|
||||||
|
max_index = info->start + info->count - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Translate vertices with non-native layouts or formats. */
|
/* Translate vertices with non-native layouts or formats. */
|
||||||
if (mgr->incompatible_vb_layout || mgr->ve->incompatible_layout) {
|
if (mgr->incompatible_vb_layout || mgr->ve->incompatible_layout) {
|
||||||
retval |= u_vbuf_translate_begin(mgr, min_index, max_index);
|
u_vbuf_translate_begin(mgr, min_index, max_index);
|
||||||
|
|
||||||
if (mgr->fallback_ve) {
|
|
||||||
retval |= U_VBUF_BUFFERS_UPDATED;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Upload user buffers. */
|
/* Upload user buffers. */
|
||||||
if (mgr->any_user_vbs) {
|
if (mgr->any_user_vbs) {
|
||||||
retval |= u_vbuf_upload_buffers(mgr, min_index, max_index,
|
u_vbuf_upload_buffers(mgr, min_index, max_index, info->instance_count);
|
||||||
info->instance_count);
|
|
||||||
retval |= U_VBUF_BUFFERS_UPDATED;
|
|
||||||
}
|
}
|
||||||
return retval;
|
return mgr->any_user_vbs || mgr->fallback_ve ? U_VBUF_BUFFERS_UPDATED : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void u_vbuf_mgr_draw_end(struct u_vbuf_mgr *mgrb)
|
void u_vbuf_draw_end(struct u_vbuf_mgr *mgrb)
|
||||||
{
|
{
|
||||||
struct u_vbuf_mgr_priv *mgr = (struct u_vbuf_mgr_priv*)mgrb;
|
struct u_vbuf_priv *mgr = (struct u_vbuf_priv*)mgrb;
|
||||||
|
|
||||||
if (mgr->fallback_ve) {
|
if (mgr->fallback_ve) {
|
||||||
u_vbuf_translate_end(mgr);
|
u_vbuf_translate_end(mgr);
|
||||||
|
@@ -49,7 +49,7 @@ struct u_vbuf_mgr {
|
|||||||
/* Contains only real vertex buffers.
|
/* Contains only real vertex buffers.
|
||||||
* Hardware drivers should use real_vertex_buffers[i]
|
* Hardware drivers should use real_vertex_buffers[i]
|
||||||
* instead of vertex_buffers[i].buffer. */
|
* instead of vertex_buffers[i].buffer. */
|
||||||
struct pipe_resource *real_vertex_buffer[PIPE_MAX_ATTRIBS];
|
struct pipe_vertex_buffer real_vertex_buffer[PIPE_MAX_ATTRIBS];
|
||||||
int nr_real_vertex_buffers;
|
int nr_real_vertex_buffers;
|
||||||
|
|
||||||
/* Precomputed max_index for hardware vertex buffers. */
|
/* Precomputed max_index for hardware vertex buffers. */
|
||||||
@@ -71,7 +71,7 @@ struct u_vbuf_resource {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* Opaque type containing information about vertex elements for the manager. */
|
/* Opaque type containing information about vertex elements for the manager. */
|
||||||
struct u_vbuf_mgr_elements;
|
struct u_vbuf_elements;
|
||||||
|
|
||||||
enum u_fetch_alignment {
|
enum u_fetch_alignment {
|
||||||
U_VERTEX_FETCH_BYTE_ALIGNED,
|
U_VERTEX_FETCH_BYTE_ALIGNED,
|
||||||
@@ -79,42 +79,40 @@ enum u_fetch_alignment {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum u_vbuf_return_flags {
|
enum u_vbuf_return_flags {
|
||||||
U_VBUF_BUFFERS_UPDATED = 1,
|
U_VBUF_BUFFERS_UPDATED = 1
|
||||||
U_VBUF_UPLOAD_FLUSHED = 2
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct u_vbuf_mgr *
|
struct u_vbuf_mgr *
|
||||||
u_vbuf_mgr_create(struct pipe_context *pipe,
|
u_vbuf_create(struct pipe_context *pipe,
|
||||||
unsigned upload_buffer_size,
|
unsigned upload_buffer_size,
|
||||||
unsigned upload_buffer_alignment,
|
unsigned upload_buffer_alignment,
|
||||||
unsigned upload_buffer_bind,
|
unsigned upload_buffer_bind,
|
||||||
enum u_fetch_alignment fetch_alignment);
|
enum u_fetch_alignment fetch_alignment);
|
||||||
|
|
||||||
void u_vbuf_mgr_destroy(struct u_vbuf_mgr *mgr);
|
void u_vbuf_destroy(struct u_vbuf_mgr *mgr);
|
||||||
|
|
||||||
struct u_vbuf_mgr_elements *
|
struct u_vbuf_elements *
|
||||||
u_vbuf_mgr_create_vertex_elements(struct u_vbuf_mgr *mgr,
|
u_vbuf_create_vertex_elements(struct u_vbuf_mgr *mgr,
|
||||||
unsigned count,
|
unsigned count,
|
||||||
const struct pipe_vertex_element *attrs,
|
const struct pipe_vertex_element *attrs,
|
||||||
struct pipe_vertex_element *native_attrs);
|
struct pipe_vertex_element *native_attrs);
|
||||||
|
|
||||||
void u_vbuf_mgr_bind_vertex_elements(struct u_vbuf_mgr *mgr,
|
void u_vbuf_bind_vertex_elements(struct u_vbuf_mgr *mgr,
|
||||||
void *cso,
|
void *cso,
|
||||||
struct u_vbuf_mgr_elements *ve);
|
struct u_vbuf_elements *ve);
|
||||||
|
|
||||||
void u_vbuf_mgr_destroy_vertex_elements(struct u_vbuf_mgr *mgr,
|
void u_vbuf_destroy_vertex_elements(struct u_vbuf_mgr *mgr,
|
||||||
struct u_vbuf_mgr_elements *ve);
|
struct u_vbuf_elements *ve);
|
||||||
|
|
||||||
void u_vbuf_mgr_set_vertex_buffers(struct u_vbuf_mgr *mgr,
|
void u_vbuf_set_vertex_buffers(struct u_vbuf_mgr *mgr,
|
||||||
unsigned count,
|
unsigned count,
|
||||||
const struct pipe_vertex_buffer *bufs);
|
const struct pipe_vertex_buffer *bufs);
|
||||||
|
|
||||||
enum u_vbuf_return_flags
|
enum u_vbuf_return_flags u_vbuf_draw_begin(struct u_vbuf_mgr *mgr,
|
||||||
u_vbuf_mgr_draw_begin(struct u_vbuf_mgr *mgr,
|
const struct pipe_draw_info *info);
|
||||||
const struct pipe_draw_info *info);
|
|
||||||
|
|
||||||
void u_vbuf_mgr_draw_end(struct u_vbuf_mgr *mgr);
|
void u_vbuf_draw_end(struct u_vbuf_mgr *mgr);
|
||||||
|
|
||||||
|
|
||||||
static INLINE struct u_vbuf_resource *u_vbuf_resource(struct pipe_resource *r)
|
static INLINE struct u_vbuf_resource *u_vbuf_resource(struct pipe_resource *r)
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
#define I915_BATCH_H
|
#define I915_BATCH_H
|
||||||
|
|
||||||
#include "i915_batchbuffer.h"
|
#include "i915_batchbuffer.h"
|
||||||
|
#include "i915_context.h"
|
||||||
|
|
||||||
|
|
||||||
#define BEGIN_BATCH(dwords) \
|
#define BEGIN_BATCH(dwords) \
|
||||||
@@ -49,11 +50,26 @@
|
|||||||
#define FLUSH_BATCH(fence) \
|
#define FLUSH_BATCH(fence) \
|
||||||
i915_flush(i915, fence)
|
i915_flush(i915, fence)
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* i915_flush.c
|
* i915_flush.c
|
||||||
*/
|
*/
|
||||||
void i915_flush(struct i915_context *i915, struct pipe_fence_handle **fence);
|
void i915_flush(struct i915_context *i915, struct pipe_fence_handle **fence);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Flush if the current color buf is idle and we have more than 256 vertices
|
||||||
|
* queued, or if the current color buf is busy and we have more than 4096
|
||||||
|
* vertices queued.
|
||||||
|
*/
|
||||||
|
static INLINE void i915_flush_heuristically(struct i915_context* i915,
|
||||||
|
int num_vertex)
|
||||||
|
{
|
||||||
|
struct i915_winsys *iws = i915->iws;
|
||||||
|
i915->vertices_since_last_flush += num_vertex;
|
||||||
|
if ( i915->vertices_since_last_flush > 4096
|
||||||
|
|| ( i915->vertices_since_last_flush > 256 &&
|
||||||
|
!iws->buffer_is_busy(iws, i915->current.cbuf_bo)) )
|
||||||
|
FLUSH_BATCH(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -120,6 +120,11 @@ i915_clear_emit(struct pipe_context *pipe, unsigned buffers, const float *rgba,
|
|||||||
OUT_BATCH_F(desty + height);
|
OUT_BATCH_F(desty + height);
|
||||||
OUT_BATCH_F(destx);
|
OUT_BATCH_F(destx);
|
||||||
OUT_BATCH_F(desty);
|
OUT_BATCH_F(desty);
|
||||||
|
|
||||||
|
/* Flush after clear, its expected to be a costly operation.
|
||||||
|
* This is not required, just a heuristic
|
||||||
|
*/
|
||||||
|
FLUSH_BATCH(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -264,6 +264,8 @@ struct i915_context {
|
|||||||
struct util_slab_mempool transfer_pool;
|
struct util_slab_mempool transfer_pool;
|
||||||
struct util_slab_mempool texture_transfer_pool;
|
struct util_slab_mempool texture_transfer_pool;
|
||||||
|
|
||||||
|
int vertices_since_last_flush;
|
||||||
|
|
||||||
/** blitter/hw-clear */
|
/** blitter/hw-clear */
|
||||||
struct blitter_context* blitter;
|
struct blitter_context* blitter;
|
||||||
|
|
||||||
|
@@ -77,4 +77,5 @@ void i915_flush(struct i915_context *i915, struct pipe_fence_handle **fence)
|
|||||||
i915->static_dirty = ~0;
|
i915->static_dirty = ~0;
|
||||||
/* kernel emits flushes in between batchbuffers */
|
/* kernel emits flushes in between batchbuffers */
|
||||||
i915->flush_dirty = 0;
|
i915->flush_dirty = 0;
|
||||||
|
i915->vertices_since_last_flush = 0;
|
||||||
}
|
}
|
||||||
|
@@ -166,6 +166,8 @@ emit_prim( struct draw_stage *stage,
|
|||||||
|
|
||||||
for (i = 0; i < nr; i++)
|
for (i = 0; i < nr; i++)
|
||||||
emit_hw_vertex(i915, prim->v[i]);
|
emit_hw_vertex(i915, prim->v[i]);
|
||||||
|
|
||||||
|
i915_flush_heuristically(i915, nr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -487,6 +487,7 @@ draw_arrays_fallback(struct vbuf_render *render,
|
|||||||
|
|
||||||
draw_arrays_generate_indices(render, start, nr, i915_render->fallback);
|
draw_arrays_generate_indices(render, start, nr, i915_render->fallback);
|
||||||
|
|
||||||
|
i915_flush_heuristically(i915, nr_indices);
|
||||||
out:
|
out:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -534,6 +535,7 @@ i915_vbuf_render_draw_arrays(struct vbuf_render *render,
|
|||||||
nr);
|
nr);
|
||||||
OUT_BATCH(start); /* Beginning vertex index */
|
OUT_BATCH(start); /* Beginning vertex index */
|
||||||
|
|
||||||
|
i915_flush_heuristically(i915, nr);
|
||||||
out:
|
out:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -657,6 +659,7 @@ i915_vbuf_render_draw_elements(struct vbuf_render *render,
|
|||||||
save_nr_indices,
|
save_nr_indices,
|
||||||
i915_render->fallback);
|
i915_render->fallback);
|
||||||
|
|
||||||
|
i915_flush_heuristically(i915, nr_indices);
|
||||||
out:
|
out:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -268,8 +268,8 @@ static void upload_SCISSOR_RECT(struct i915_context *i915)
|
|||||||
{
|
{
|
||||||
unsigned x1 = i915->scissor.minx;
|
unsigned x1 = i915->scissor.minx;
|
||||||
unsigned y1 = i915->scissor.miny;
|
unsigned y1 = i915->scissor.miny;
|
||||||
unsigned x2 = i915->scissor.maxx;
|
unsigned x2 = i915->scissor.maxx - 1;
|
||||||
unsigned y2 = i915->scissor.maxy;
|
unsigned y2 = i915->scissor.maxy - 1;
|
||||||
unsigned sc[3];
|
unsigned sc[3];
|
||||||
|
|
||||||
sc[0] = _3DSTATE_SCISSOR_RECT_0_CMD;
|
sc[0] = _3DSTATE_SCISSOR_RECT_0_CMD;
|
||||||
|
@@ -349,25 +349,25 @@ static const struct
|
|||||||
uint hw_swizzle;
|
uint hw_swizzle;
|
||||||
} fixup_formats[] = {
|
} fixup_formats[] = {
|
||||||
{ PIPE_FORMAT_R8G8B8A8_UNORM, 0x21030000 /* BGRA */},
|
{ PIPE_FORMAT_R8G8B8A8_UNORM, 0x21030000 /* BGRA */},
|
||||||
{ PIPE_FORMAT_L8_UNORM, 0x00000000 /* RRRR */},
|
{ PIPE_FORMAT_L8_UNORM, 0x00030000 /* RRRA */},
|
||||||
{ PIPE_FORMAT_I8_UNORM, 0x00000000 /* RRRR */},
|
{ PIPE_FORMAT_I8_UNORM, 0x00030000 /* RRRA */},
|
||||||
{ PIPE_FORMAT_A8_UNORM, 0x33330000 /* AAAA */},
|
{ PIPE_FORMAT_A8_UNORM, 0x33330000 /* AAAA */},
|
||||||
{ PIPE_FORMAT_NONE, 0x00000000},
|
{ PIPE_FORMAT_NONE, 0x00000000},
|
||||||
};
|
};
|
||||||
|
|
||||||
static boolean need_fixup(struct pipe_surface* p)
|
static uint need_target_fixup(struct pipe_surface* p)
|
||||||
{
|
{
|
||||||
enum pipe_format f;
|
enum pipe_format f;
|
||||||
/* if we don't have a surface bound yet, we don't need to fixup the shader */
|
/* if we don't have a surface bound yet, we don't need to fixup the shader */
|
||||||
if (!p)
|
if (!p)
|
||||||
return FALSE;
|
return 0;
|
||||||
|
|
||||||
f = p->format;
|
f = p->format;
|
||||||
for(int i=0; fixup_formats[i].format != PIPE_FORMAT_NONE; i++)
|
for(int i=0; fixup_formats[i].format != PIPE_FORMAT_NONE; i++)
|
||||||
if (fixup_formats[i].format == f)
|
if (fixup_formats[i].format == f)
|
||||||
return TRUE;
|
return 1;
|
||||||
|
|
||||||
return FALSE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint fixup_swizzle(enum pipe_format f)
|
static uint fixup_swizzle(enum pipe_format f)
|
||||||
@@ -383,29 +383,35 @@ static void
|
|||||||
validate_program(struct i915_context *i915, unsigned *batch_space)
|
validate_program(struct i915_context *i915, unsigned *batch_space)
|
||||||
{
|
{
|
||||||
struct pipe_surface *cbuf_surface = i915->framebuffer.cbufs[0];
|
struct pipe_surface *cbuf_surface = i915->framebuffer.cbufs[0];
|
||||||
|
uint additional_size = need_target_fixup(cbuf_surface);
|
||||||
|
|
||||||
/* we need more batch space if we want to emulate rgba framebuffers */
|
/* we need more batch space if we want to emulate rgba framebuffers */
|
||||||
*batch_space = i915->fs->program_len + (need_fixup(cbuf_surface) ? 3 : 0);
|
*batch_space = i915->fs->program_len + 3 * additional_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
emit_program(struct i915_context *i915)
|
emit_program(struct i915_context *i915)
|
||||||
{
|
{
|
||||||
struct pipe_surface *cbuf_surface = i915->framebuffer.cbufs[0];
|
struct pipe_surface *cbuf_surface = i915->framebuffer.cbufs[0];
|
||||||
boolean need_format_fixup = need_fixup(cbuf_surface);
|
uint target_fixup = need_target_fixup(cbuf_surface);
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
/* we should always have, at least, a pass-through program */
|
/* we should always have, at least, a pass-through program */
|
||||||
assert(i915->fs->program_len > 0);
|
assert(i915->fs->program_len > 0);
|
||||||
for (i = 0; i < i915->fs->program_len; i++) {
|
|
||||||
if ((i == 0) && need_format_fixup)
|
{
|
||||||
OUT_BATCH(i915->fs->program[i] + 3);
|
/* first word has the size, we have to adjust that */
|
||||||
else
|
uint size = (i915->fs->program[0]);
|
||||||
OUT_BATCH(i915->fs->program[i]);
|
size += target_fixup * 3;
|
||||||
|
OUT_BATCH(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* output the declarations of the program */
|
||||||
|
for (i=1 ; i < i915->fs->program_len; i++)
|
||||||
|
OUT_BATCH(i915->fs->program[i]);
|
||||||
|
|
||||||
/* we emit an additional mov with swizzle to fake RGBA framebuffers */
|
/* we emit an additional mov with swizzle to fake RGBA framebuffers */
|
||||||
if (need_format_fixup) {
|
if (target_fixup) {
|
||||||
/* mov out_color, out_color.zyxw */
|
/* mov out_color, out_color.zyxw */
|
||||||
OUT_BATCH(A0_MOV |
|
OUT_BATCH(A0_MOV |
|
||||||
(REG_TYPE_OC << A0_DEST_TYPE_SHIFT) |
|
(REG_TYPE_OC << A0_DEST_TYPE_SHIFT) |
|
||||||
|
@@ -207,6 +207,12 @@ struct i915_winsys {
|
|||||||
|
|
||||||
void (*buffer_destroy)(struct i915_winsys *iws,
|
void (*buffer_destroy)(struct i915_winsys *iws,
|
||||||
struct i915_winsys_buffer *buffer);
|
struct i915_winsys_buffer *buffer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a buffer is busy.
|
||||||
|
*/
|
||||||
|
boolean (*buffer_is_busy)(struct i915_winsys *iws,
|
||||||
|
struct i915_winsys_buffer *buffer);
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
@@ -68,10 +68,17 @@ lp_jit_create_types(struct llvmpipe_context *lp)
|
|||||||
elem_types[LP_JIT_TEXTURE_BORDER_COLOR] =
|
elem_types[LP_JIT_TEXTURE_BORDER_COLOR] =
|
||||||
LLVMArrayType(LLVMFloatTypeInContext(lc), 4);
|
LLVMArrayType(LLVMFloatTypeInContext(lc), 4);
|
||||||
|
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
texture_type = LLVMStructCreateNamed(gallivm->context, "texture");
|
||||||
|
LLVMStructSetBody(texture_type, elem_types,
|
||||||
|
Elements(elem_types), 0);
|
||||||
|
#else
|
||||||
texture_type = LLVMStructTypeInContext(lc, elem_types,
|
texture_type = LLVMStructTypeInContext(lc, elem_types,
|
||||||
Elements(elem_types), 0);
|
Elements(elem_types), 0);
|
||||||
|
LLVMAddTypeName(gallivm->module, "texture", texture_type);
|
||||||
|
|
||||||
LLVMInvalidateStructLayout(gallivm->target, texture_type);
|
LLVMInvalidateStructLayout(gallivm->target, texture_type);
|
||||||
|
#endif
|
||||||
|
|
||||||
LP_CHECK_MEMBER_OFFSET(struct lp_jit_texture, width,
|
LP_CHECK_MEMBER_OFFSET(struct lp_jit_texture, width,
|
||||||
gallivm->target, texture_type,
|
gallivm->target, texture_type,
|
||||||
@@ -112,8 +119,6 @@ lp_jit_create_types(struct llvmpipe_context *lp)
|
|||||||
|
|
||||||
LP_CHECK_STRUCT_SIZE(struct lp_jit_texture,
|
LP_CHECK_STRUCT_SIZE(struct lp_jit_texture,
|
||||||
gallivm->target, texture_type);
|
gallivm->target, texture_type);
|
||||||
|
|
||||||
LLVMAddTypeName(gallivm->module, "texture", texture_type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* struct lp_jit_context */
|
/* struct lp_jit_context */
|
||||||
@@ -129,11 +134,19 @@ lp_jit_create_types(struct llvmpipe_context *lp)
|
|||||||
elem_types[LP_JIT_CTX_TEXTURES] = LLVMArrayType(texture_type,
|
elem_types[LP_JIT_CTX_TEXTURES] = LLVMArrayType(texture_type,
|
||||||
PIPE_MAX_SAMPLERS);
|
PIPE_MAX_SAMPLERS);
|
||||||
|
|
||||||
|
#if HAVE_LLVM >= 0x0300
|
||||||
|
context_type = LLVMStructCreateNamed(gallivm->context, "context");
|
||||||
|
LLVMStructSetBody(context_type, elem_types,
|
||||||
|
Elements(elem_types), 0);
|
||||||
|
#else
|
||||||
context_type = LLVMStructTypeInContext(lc, elem_types,
|
context_type = LLVMStructTypeInContext(lc, elem_types,
|
||||||
Elements(elem_types), 0);
|
Elements(elem_types), 0);
|
||||||
|
|
||||||
LLVMInvalidateStructLayout(gallivm->target, context_type);
|
LLVMInvalidateStructLayout(gallivm->target, context_type);
|
||||||
|
|
||||||
|
LLVMAddTypeName(gallivm->module, "context", context_type);
|
||||||
|
#endif
|
||||||
|
|
||||||
LP_CHECK_MEMBER_OFFSET(struct lp_jit_context, constants,
|
LP_CHECK_MEMBER_OFFSET(struct lp_jit_context, constants,
|
||||||
gallivm->target, context_type,
|
gallivm->target, context_type,
|
||||||
LP_JIT_CTX_CONSTANTS);
|
LP_JIT_CTX_CONSTANTS);
|
||||||
@@ -155,8 +168,6 @@ lp_jit_create_types(struct llvmpipe_context *lp)
|
|||||||
LP_CHECK_STRUCT_SIZE(struct lp_jit_context,
|
LP_CHECK_STRUCT_SIZE(struct lp_jit_context,
|
||||||
gallivm->target, context_type);
|
gallivm->target, context_type);
|
||||||
|
|
||||||
LLVMAddTypeName(gallivm->module, "context", context_type);
|
|
||||||
|
|
||||||
lp->jit_context_ptr_type = LLVMPointerType(context_type, 0);
|
lp->jit_context_ptr_type = LLVMPointerType(context_type, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -86,14 +86,10 @@ nouveau_fence_emit(struct nouveau_fence *fence)
|
|||||||
{
|
{
|
||||||
struct nouveau_screen *screen = fence->screen;
|
struct nouveau_screen *screen = fence->screen;
|
||||||
|
|
||||||
fence->sequence = ++screen->fence.sequence;
|
|
||||||
|
|
||||||
assert(fence->state == NOUVEAU_FENCE_STATE_AVAILABLE);
|
assert(fence->state == NOUVEAU_FENCE_STATE_AVAILABLE);
|
||||||
|
|
||||||
/* set this now, so that if fence.emit triggers a flush we don't recurse */
|
/* set this now, so that if fence.emit triggers a flush we don't recurse */
|
||||||
fence->state = NOUVEAU_FENCE_STATE_EMITTED;
|
fence->state = NOUVEAU_FENCE_STATE_EMITTING;
|
||||||
|
|
||||||
screen->fence.emit(&screen->base, fence->sequence);
|
|
||||||
|
|
||||||
++fence->ref;
|
++fence->ref;
|
||||||
|
|
||||||
@@ -103,6 +99,11 @@ nouveau_fence_emit(struct nouveau_fence *fence)
|
|||||||
screen->fence.head = fence;
|
screen->fence.head = fence;
|
||||||
|
|
||||||
screen->fence.tail = fence;
|
screen->fence.tail = fence;
|
||||||
|
|
||||||
|
screen->fence.emit(&screen->base, &fence->sequence);
|
||||||
|
|
||||||
|
assert(fence->state == NOUVEAU_FENCE_STATE_EMITTING);
|
||||||
|
fence->state = NOUVEAU_FENCE_STATE_EMITTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -162,7 +163,8 @@ nouveau_fence_update(struct nouveau_screen *screen, boolean flushed)
|
|||||||
|
|
||||||
if (flushed) {
|
if (flushed) {
|
||||||
for (fence = next; fence; fence = fence->next)
|
for (fence = next; fence; fence = fence->next)
|
||||||
fence->state = NOUVEAU_FENCE_STATE_FLUSHED;
|
if (fence->state == NOUVEAU_FENCE_STATE_EMITTED)
|
||||||
|
fence->state = NOUVEAU_FENCE_STATE_FLUSHED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,6 +187,9 @@ nouveau_fence_wait(struct nouveau_fence *fence)
|
|||||||
struct nouveau_screen *screen = fence->screen;
|
struct nouveau_screen *screen = fence->screen;
|
||||||
uint32_t spins = 0;
|
uint32_t spins = 0;
|
||||||
|
|
||||||
|
/* wtf, someone is waiting on a fence in flush_notify handler? */
|
||||||
|
assert(fence->state != NOUVEAU_FENCE_STATE_EMITTING);
|
||||||
|
|
||||||
if (fence->state < NOUVEAU_FENCE_STATE_EMITTED) {
|
if (fence->state < NOUVEAU_FENCE_STATE_EMITTED) {
|
||||||
nouveau_fence_emit(fence);
|
nouveau_fence_emit(fence);
|
||||||
|
|
||||||
@@ -216,8 +221,10 @@ nouveau_fence_wait(struct nouveau_fence *fence)
|
|||||||
void
|
void
|
||||||
nouveau_fence_next(struct nouveau_screen *screen)
|
nouveau_fence_next(struct nouveau_screen *screen)
|
||||||
{
|
{
|
||||||
if (screen->fence.current->state < NOUVEAU_FENCE_STATE_EMITTED)
|
if (screen->fence.current->state < NOUVEAU_FENCE_STATE_EMITTING)
|
||||||
nouveau_fence_emit(screen->fence.current);
|
nouveau_fence_emit(screen->fence.current);
|
||||||
|
|
||||||
|
nouveau_fence_ref(NULL, &screen->fence.current);
|
||||||
|
|
||||||
nouveau_fence_new(screen, &screen->fence.current, FALSE);
|
nouveau_fence_new(screen, &screen->fence.current, FALSE);
|
||||||
}
|
}
|
||||||
|
@@ -6,9 +6,10 @@
|
|||||||
#include "util/u_double_list.h"
|
#include "util/u_double_list.h"
|
||||||
|
|
||||||
#define NOUVEAU_FENCE_STATE_AVAILABLE 0
|
#define NOUVEAU_FENCE_STATE_AVAILABLE 0
|
||||||
#define NOUVEAU_FENCE_STATE_EMITTED 1
|
#define NOUVEAU_FENCE_STATE_EMITTING 1
|
||||||
#define NOUVEAU_FENCE_STATE_FLUSHED 2
|
#define NOUVEAU_FENCE_STATE_EMITTED 2
|
||||||
#define NOUVEAU_FENCE_STATE_SIGNALLED 3
|
#define NOUVEAU_FENCE_STATE_FLUSHED 3
|
||||||
|
#define NOUVEAU_FENCE_STATE_SIGNALLED 4
|
||||||
|
|
||||||
struct nouveau_fence_work {
|
struct nouveau_fence_work {
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
|
@@ -24,7 +24,7 @@ struct nouveau_screen {
|
|||||||
struct nouveau_fence *current;
|
struct nouveau_fence *current;
|
||||||
u32 sequence;
|
u32 sequence;
|
||||||
u32 sequence_ack;
|
u32 sequence_ack;
|
||||||
void (*emit)(struct pipe_screen *, u32 sequence);
|
void (*emit)(struct pipe_screen *, u32 *sequence);
|
||||||
u32 (*update)(struct pipe_screen *);
|
u32 (*update)(struct pipe_screen *);
|
||||||
} fence;
|
} fence;
|
||||||
|
|
||||||
|
@@ -60,13 +60,13 @@ nv50_texture_barrier(struct pipe_context *pipe)
|
|||||||
void
|
void
|
||||||
nv50_default_flush_notify(struct nouveau_channel *chan)
|
nv50_default_flush_notify(struct nouveau_channel *chan)
|
||||||
{
|
{
|
||||||
struct nv50_context *nv50 = chan->user_private;
|
struct nv50_screen *screen = chan->user_private;
|
||||||
|
|
||||||
if (!nv50)
|
if (!screen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
nouveau_fence_update(&nv50->screen->base, TRUE);
|
nouveau_fence_update(&screen->base, TRUE);
|
||||||
nouveau_fence_next(&nv50->screen->base);
|
nouveau_fence_next(&screen->base);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -100,10 +100,8 @@ nv50_destroy(struct pipe_context *pipe)
|
|||||||
|
|
||||||
draw_destroy(nv50->draw);
|
draw_destroy(nv50->draw);
|
||||||
|
|
||||||
if (nv50->screen->cur_ctx == nv50) {
|
if (nv50->screen->cur_ctx == nv50)
|
||||||
nv50->screen->base.channel->user_private = NULL;
|
|
||||||
nv50->screen->cur_ctx = NULL;
|
nv50->screen->cur_ctx = NULL;
|
||||||
}
|
|
||||||
|
|
||||||
FREE(nv50);
|
FREE(nv50);
|
||||||
}
|
}
|
||||||
@@ -140,7 +138,6 @@ nv50_create(struct pipe_screen *pscreen, void *priv)
|
|||||||
|
|
||||||
if (!screen->cur_ctx)
|
if (!screen->cur_ctx)
|
||||||
screen->cur_ctx = nv50;
|
screen->cur_ctx = nv50;
|
||||||
screen->base.channel->user_private = nv50;
|
|
||||||
screen->base.channel->flush_notify = nv50_default_flush_notify;
|
screen->base.channel->flush_notify = nv50_default_flush_notify;
|
||||||
|
|
||||||
nv50_init_query_functions(nv50);
|
nv50_init_query_functions(nv50);
|
||||||
|
@@ -284,7 +284,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R16G16B16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16B16X16_FLOAT,
|
[PIPE_FORMAT_R16G16B16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16B16X16_FLOAT,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16_16_16, 0),
|
A_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16_16_16, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R16G16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16_FLOAT,
|
[PIPE_FORMAT_R16G16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16_FLOAT,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16_16, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16_16, 0),
|
||||||
@@ -302,7 +302,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R32G32B32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32B32X32_FLOAT,
|
[PIPE_FORMAT_R32G32B32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32B32X32_FLOAT,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32, 0),
|
A_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R32G32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32_FLOAT,
|
[PIPE_FORMAT_R32G32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32_FLOAT,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32, 0),
|
||||||
@@ -330,7 +330,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R32G32B32_SNORM] = { 0,
|
[PIPE_FORMAT_R32G32B32_SNORM] = { 0,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32_32_32, 0),
|
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32_32_32, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R32G32_SNORM] = { 0,
|
[PIPE_FORMAT_R32G32_SNORM] = { 0,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32_32, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32_32, 0),
|
||||||
@@ -348,7 +348,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R32G32B32_UNORM] = { 0,
|
[PIPE_FORMAT_R32G32B32_UNORM] = { 0,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32_32_32, 0),
|
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32_32_32, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R32G32_UNORM] = { 0,
|
[PIPE_FORMAT_R32G32_UNORM] = { 0,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32_32, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32_32, 0),
|
||||||
@@ -366,7 +366,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R16G16B16_SNORM] = { 0,
|
[PIPE_FORMAT_R16G16B16_SNORM] = { 0,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16_16, 0),
|
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16_16, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R16G16_SNORM] = { NV50_SURFACE_FORMAT_R16G16_SNORM,
|
[PIPE_FORMAT_R16G16_SNORM] = { NV50_SURFACE_FORMAT_R16G16_SNORM,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16, 0),
|
||||||
@@ -384,7 +384,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R16G16B16_UNORM] = { 0,
|
[PIPE_FORMAT_R16G16B16_UNORM] = { 0,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16_16, 0),
|
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16_16, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R16G16_UNORM] = { NV50_SURFACE_FORMAT_R16G16_UNORM,
|
[PIPE_FORMAT_R16G16_UNORM] = { NV50_SURFACE_FORMAT_R16G16_UNORM,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16, 0),
|
||||||
@@ -402,7 +402,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R8G8B8_SNORM] = { 0,
|
[PIPE_FORMAT_R8G8B8_SNORM] = { 0,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8_8_8, 0),
|
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8_8_8, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R8G8_SNORM] = { NV50_SURFACE_FORMAT_R8G8_SNORM,
|
[PIPE_FORMAT_R8G8_SNORM] = { NV50_SURFACE_FORMAT_R8G8_SNORM,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8_8, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8_8, 0),
|
||||||
@@ -422,13 +422,13 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
|
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
|
||||||
SAMPLER_VIEW | RENDER_TARGET },
|
SAMPLER_VIEW | RENDER_TARGET },
|
||||||
|
|
||||||
|
[PIPE_FORMAT_R8G8B8X8_UNORM] = { NV50_SURFACE_FORMAT_X8B8G8R8_UNORM,
|
||||||
|
B_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
|
||||||
|
SAMPLER_VIEW | RENDER_TARGET },
|
||||||
|
|
||||||
[PIPE_FORMAT_R8G8B8_UNORM] = { NV50_SURFACE_FORMAT_X8B8G8R8_UNORM,
|
[PIPE_FORMAT_R8G8B8_UNORM] = { NV50_SURFACE_FORMAT_X8B8G8R8_UNORM,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
|
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R8G8B8_SRGB] = { NV50_SURFACE_FORMAT_X8B8G8R8_SRGB,
|
|
||||||
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
|
|
||||||
SAMPLER_VIEW | RENDER_TARGET },
|
|
||||||
|
|
||||||
[PIPE_FORMAT_R8G8_UNORM] = { NV50_SURFACE_FORMAT_R8G8_UNORM,
|
[PIPE_FORMAT_R8G8_UNORM] = { NV50_SURFACE_FORMAT_R8G8_UNORM,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8, 0),
|
||||||
|
@@ -154,6 +154,9 @@ nv50_miptree_create(struct pipe_screen *pscreen,
|
|||||||
case PIPE_FORMAT_R32G32B32_FLOAT:
|
case PIPE_FORMAT_R32G32B32_FLOAT:
|
||||||
tile_flags = 0x7400;
|
tile_flags = 0x7400;
|
||||||
break;
|
break;
|
||||||
|
case PIPE_FORMAT_Z32_FLOAT:
|
||||||
|
tile_flags = 0x4000;
|
||||||
|
break;
|
||||||
case PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED:
|
case PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED:
|
||||||
tile_flags = 0x6000;
|
tile_flags = 0x6000;
|
||||||
break;
|
break;
|
||||||
|
@@ -215,6 +215,8 @@ nv50_screen_destroy(struct pipe_screen *pscreen)
|
|||||||
nouveau_fence_wait(screen->base.fence.current);
|
nouveau_fence_wait(screen->base.fence.current);
|
||||||
nouveau_fence_ref (NULL, &screen->base.fence.current);
|
nouveau_fence_ref (NULL, &screen->base.fence.current);
|
||||||
}
|
}
|
||||||
|
if (screen->base.channel)
|
||||||
|
screen->base.channel->user_private = NULL;
|
||||||
|
|
||||||
nouveau_bo_ref(NULL, &screen->code);
|
nouveau_bo_ref(NULL, &screen->code);
|
||||||
nouveau_bo_ref(NULL, &screen->tls_bo);
|
nouveau_bo_ref(NULL, &screen->tls_bo);
|
||||||
@@ -244,16 +246,20 @@ nv50_screen_destroy(struct pipe_screen *pscreen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
nv50_screen_fence_emit(struct pipe_screen *pscreen, u32 sequence)
|
nv50_screen_fence_emit(struct pipe_screen *pscreen, u32 *sequence)
|
||||||
{
|
{
|
||||||
struct nv50_screen *screen = nv50_screen(pscreen);
|
struct nv50_screen *screen = nv50_screen(pscreen);
|
||||||
struct nouveau_channel *chan = screen->base.channel;
|
struct nouveau_channel *chan = screen->base.channel;
|
||||||
|
|
||||||
MARK_RING (chan, 5, 2);
|
MARK_RING (chan, 5, 2);
|
||||||
|
|
||||||
|
/* we need to do it after possible flush in MARK_RING */
|
||||||
|
*sequence = ++screen->base.fence.sequence;
|
||||||
|
|
||||||
BEGIN_RING(chan, RING_3D(QUERY_ADDRESS_HIGH), 4);
|
BEGIN_RING(chan, RING_3D(QUERY_ADDRESS_HIGH), 4);
|
||||||
OUT_RELOCh(chan, screen->fence.bo, 0, NOUVEAU_BO_WR);
|
OUT_RELOCh(chan, screen->fence.bo, 0, NOUVEAU_BO_WR);
|
||||||
OUT_RELOCl(chan, screen->fence.bo, 0, NOUVEAU_BO_WR);
|
OUT_RELOCl(chan, screen->fence.bo, 0, NOUVEAU_BO_WR);
|
||||||
OUT_RING (chan, sequence);
|
OUT_RING (chan, *sequence);
|
||||||
OUT_RING (chan, NV50_3D_QUERY_GET_MODE_WRITE_UNK0 |
|
OUT_RING (chan, NV50_3D_QUERY_GET_MODE_WRITE_UNK0 |
|
||||||
NV50_3D_QUERY_GET_UNK4 |
|
NV50_3D_QUERY_GET_UNK4 |
|
||||||
NV50_3D_QUERY_GET_UNIT_CROP |
|
NV50_3D_QUERY_GET_UNIT_CROP |
|
||||||
@@ -300,6 +306,7 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
|
|||||||
FAIL_SCREEN_INIT("nouveau_screen_init failed: %d\n", ret);
|
FAIL_SCREEN_INIT("nouveau_screen_init failed: %d\n", ret);
|
||||||
|
|
||||||
chan = screen->base.channel;
|
chan = screen->base.channel;
|
||||||
|
chan->user_private = screen;
|
||||||
|
|
||||||
pscreen->winsys = ws;
|
pscreen->winsys = ws;
|
||||||
pscreen->destroy = nv50_screen_destroy;
|
pscreen->destroy = nv50_screen_destroy;
|
||||||
|
@@ -282,8 +282,7 @@ nv50_switch_pipe_context(struct nv50_context *ctx_to)
|
|||||||
if (!ctx_to->zsa)
|
if (!ctx_to->zsa)
|
||||||
ctx_to->dirty &= ~NV50_NEW_ZSA;
|
ctx_to->dirty &= ~NV50_NEW_ZSA;
|
||||||
|
|
||||||
ctx_to->screen->base.channel->user_private = ctx_to->screen->cur_ctx =
|
ctx_to->screen->cur_ctx = ctx_to;
|
||||||
ctx_to;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct state_validate {
|
static struct state_validate {
|
||||||
|
@@ -389,11 +389,11 @@ nv50_prim_gl(unsigned prim)
|
|||||||
static void
|
static void
|
||||||
nv50_draw_vbo_flush_notify(struct nouveau_channel *chan)
|
nv50_draw_vbo_flush_notify(struct nouveau_channel *chan)
|
||||||
{
|
{
|
||||||
struct nv50_context *nv50 = chan->user_private;
|
struct nv50_screen *screen = chan->user_private;
|
||||||
|
|
||||||
nouveau_fence_update(&nv50->screen->base, TRUE);
|
nouveau_fence_update(&screen->base, TRUE);
|
||||||
|
|
||||||
nv50_bufctx_emit_relocs(nv50);
|
nv50_bufctx_emit_relocs(screen->cur_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -650,7 +650,6 @@ nv50_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
|
|||||||
nv50_state_validate(nv50);
|
nv50_state_validate(nv50);
|
||||||
|
|
||||||
chan->flush_notify = nv50_draw_vbo_flush_notify;
|
chan->flush_notify = nv50_draw_vbo_flush_notify;
|
||||||
chan->user_private = nv50;
|
|
||||||
|
|
||||||
if (nv50->vbo_fifo) {
|
if (nv50->vbo_fifo) {
|
||||||
nv50_push_vbo(nv50, info);
|
nv50_push_vbo(nv50, info);
|
||||||
|
@@ -89,10 +89,8 @@ nvc0_destroy(struct pipe_context *pipe)
|
|||||||
|
|
||||||
draw_destroy(nvc0->draw);
|
draw_destroy(nvc0->draw);
|
||||||
|
|
||||||
if (nvc0->screen->cur_ctx == nvc0) {
|
if (nvc0->screen->cur_ctx == nvc0)
|
||||||
nvc0->screen->base.channel->user_private = NULL;
|
|
||||||
nvc0->screen->cur_ctx = NULL;
|
nvc0->screen->cur_ctx = NULL;
|
||||||
}
|
|
||||||
|
|
||||||
FREE(nvc0);
|
FREE(nvc0);
|
||||||
}
|
}
|
||||||
@@ -100,13 +98,13 @@ nvc0_destroy(struct pipe_context *pipe)
|
|||||||
void
|
void
|
||||||
nvc0_default_flush_notify(struct nouveau_channel *chan)
|
nvc0_default_flush_notify(struct nouveau_channel *chan)
|
||||||
{
|
{
|
||||||
struct nvc0_context *nvc0 = chan->user_private;
|
struct nvc0_screen *screen = chan->user_private;
|
||||||
|
|
||||||
if (!nvc0)
|
if (!screen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
nouveau_fence_update(&nvc0->screen->base, TRUE);
|
nouveau_fence_update(&screen->base, TRUE);
|
||||||
nouveau_fence_next(&nvc0->screen->base);
|
nouveau_fence_next(&screen->base);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct pipe_context *
|
struct pipe_context *
|
||||||
@@ -141,7 +139,6 @@ nvc0_create(struct pipe_screen *pscreen, void *priv)
|
|||||||
|
|
||||||
if (!screen->cur_ctx)
|
if (!screen->cur_ctx)
|
||||||
screen->cur_ctx = nvc0;
|
screen->cur_ctx = nvc0;
|
||||||
screen->base.channel->user_private = nvc0;
|
|
||||||
screen->base.channel->flush_notify = nvc0_default_flush_notify;
|
screen->base.channel->flush_notify = nvc0_default_flush_notify;
|
||||||
|
|
||||||
nvc0_init_query_functions(nvc0);
|
nvc0_init_query_functions(nvc0);
|
||||||
|
@@ -289,7 +289,7 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R16G16B16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16B16X16_FLOAT,
|
[PIPE_FORMAT_R16G16B16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16B16X16_FLOAT,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16_16_16, 0),
|
A_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16_16_16, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R16G16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16_FLOAT,
|
[PIPE_FORMAT_R16G16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16_FLOAT,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16_16, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16_16, 0),
|
||||||
@@ -307,7 +307,7 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R32G32B32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32B32X32_FLOAT,
|
[PIPE_FORMAT_R32G32B32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32B32X32_FLOAT,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32, 0),
|
A_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R32G32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32_FLOAT,
|
[PIPE_FORMAT_R32G32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32_FLOAT,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32, 0),
|
||||||
@@ -335,7 +335,7 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R32G32B32_SNORM] = { 0,
|
[PIPE_FORMAT_R32G32B32_SNORM] = { 0,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32_32_32, 0),
|
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32_32_32, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R32G32_SNORM] = { 0,
|
[PIPE_FORMAT_R32G32_SNORM] = { 0,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32_32, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32_32, 0),
|
||||||
@@ -353,7 +353,7 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R32G32B32_UNORM] = { 0,
|
[PIPE_FORMAT_R32G32B32_UNORM] = { 0,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32_32_32, 0),
|
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32_32_32, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R32G32_UNORM] = { 0,
|
[PIPE_FORMAT_R32G32_UNORM] = { 0,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32_32, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32_32, 0),
|
||||||
@@ -371,7 +371,7 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R16G16B16_SNORM] = { 0,
|
[PIPE_FORMAT_R16G16B16_SNORM] = { 0,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16_16, 0),
|
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16_16, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R16G16_SNORM] = { NV50_SURFACE_FORMAT_R16G16_SNORM,
|
[PIPE_FORMAT_R16G16_SNORM] = { NV50_SURFACE_FORMAT_R16G16_SNORM,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16, 0),
|
||||||
@@ -389,7 +389,7 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R16G16B16_UNORM] = { 0,
|
[PIPE_FORMAT_R16G16B16_UNORM] = { 0,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16_16, 0),
|
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16_16, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R16G16_UNORM] = { NV50_SURFACE_FORMAT_R16G16_UNORM,
|
[PIPE_FORMAT_R16G16_UNORM] = { NV50_SURFACE_FORMAT_R16G16_UNORM,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16, 0),
|
||||||
@@ -407,7 +407,7 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
|
|
||||||
[PIPE_FORMAT_R8G8B8_SNORM] = { 0,
|
[PIPE_FORMAT_R8G8B8_SNORM] = { 0,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8_8_8, 0),
|
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8_8_8, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R8G8_SNORM] = { NV50_SURFACE_FORMAT_R8G8_SNORM,
|
[PIPE_FORMAT_R8G8_SNORM] = { NV50_SURFACE_FORMAT_R8G8_SNORM,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8_8, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8_8, 0),
|
||||||
@@ -427,13 +427,13 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] =
|
|||||||
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
|
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
|
||||||
SAMPLER_VIEW | RENDER_TARGET },
|
SAMPLER_VIEW | RENDER_TARGET },
|
||||||
|
|
||||||
|
[PIPE_FORMAT_R8G8B8X8_UNORM] = { NV50_SURFACE_FORMAT_X8B8G8R8_UNORM,
|
||||||
|
B_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
|
||||||
|
SAMPLER_VIEW | RENDER_TARGET },
|
||||||
|
|
||||||
[PIPE_FORMAT_R8G8B8_UNORM] = { NV50_SURFACE_FORMAT_X8B8G8R8_UNORM,
|
[PIPE_FORMAT_R8G8B8_UNORM] = { NV50_SURFACE_FORMAT_X8B8G8R8_UNORM,
|
||||||
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
|
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
|
||||||
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
|
VERTEX_BUFFER },
|
||||||
|
|
||||||
[PIPE_FORMAT_R8G8B8_SRGB] = { NV50_SURFACE_FORMAT_X8B8G8R8_SRGB,
|
|
||||||
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
|
|
||||||
SAMPLER_VIEW | RENDER_TARGET },
|
|
||||||
|
|
||||||
[PIPE_FORMAT_R8G8_UNORM] = { NV50_SURFACE_FORMAT_R8G8_UNORM,
|
[PIPE_FORMAT_R8G8_UNORM] = { NV50_SURFACE_FORMAT_R8G8_UNORM,
|
||||||
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8, 0),
|
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8, 0),
|
||||||
|
@@ -168,6 +168,9 @@ nvc0_miptree_create(struct pipe_screen *pscreen,
|
|||||||
tile_flags = 0xf900; /* MSAA 4 */
|
tile_flags = 0xf900; /* MSAA 4 */
|
||||||
tile_flags = 0xfe00; /* NORMAL */
|
tile_flags = 0xfe00; /* NORMAL */
|
||||||
break;
|
break;
|
||||||
|
case PIPE_FORMAT_Z32_FLOAT:
|
||||||
|
tile_flags = 0x7b00;
|
||||||
|
break;
|
||||||
case PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED:
|
case PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED:
|
||||||
tile_flags = 0xce00; /* COMPRESSED */
|
tile_flags = 0xce00; /* COMPRESSED */
|
||||||
tile_flags = 0xcf00; /* MSAA 2, COMPRESSED */
|
tile_flags = 0xcf00; /* MSAA 2, COMPRESSED */
|
||||||
|
@@ -198,8 +198,12 @@ nvc0_screen_destroy(struct pipe_screen *pscreen)
|
|||||||
{
|
{
|
||||||
struct nvc0_screen *screen = nvc0_screen(pscreen);
|
struct nvc0_screen *screen = nvc0_screen(pscreen);
|
||||||
|
|
||||||
nouveau_fence_wait(screen->base.fence.current);
|
if (screen->base.fence.current) {
|
||||||
nouveau_fence_ref(NULL, &screen->base.fence.current);
|
nouveau_fence_wait(screen->base.fence.current);
|
||||||
|
nouveau_fence_ref(NULL, &screen->base.fence.current);
|
||||||
|
}
|
||||||
|
if (screen->base.channel)
|
||||||
|
screen->base.channel->user_private = NULL;
|
||||||
|
|
||||||
nouveau_bo_ref(NULL, &screen->text);
|
nouveau_bo_ref(NULL, &screen->text);
|
||||||
nouveau_bo_ref(NULL, &screen->tls);
|
nouveau_bo_ref(NULL, &screen->tls);
|
||||||
@@ -308,16 +312,20 @@ nvc0_magic_3d_init(struct nouveau_channel *chan)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
nvc0_screen_fence_emit(struct pipe_screen *pscreen, u32 sequence)
|
nvc0_screen_fence_emit(struct pipe_screen *pscreen, u32 *sequence)
|
||||||
{
|
{
|
||||||
struct nvc0_screen *screen = nvc0_screen(pscreen);
|
struct nvc0_screen *screen = nvc0_screen(pscreen);
|
||||||
struct nouveau_channel *chan = screen->base.channel;
|
struct nouveau_channel *chan = screen->base.channel;
|
||||||
|
|
||||||
MARK_RING (chan, 5, 2);
|
MARK_RING (chan, 5, 2);
|
||||||
|
|
||||||
|
/* we need to do it after possible flush in MARK_RING */
|
||||||
|
*sequence = ++screen->base.fence.sequence;
|
||||||
|
|
||||||
BEGIN_RING(chan, RING_3D(QUERY_ADDRESS_HIGH), 4);
|
BEGIN_RING(chan, RING_3D(QUERY_ADDRESS_HIGH), 4);
|
||||||
OUT_RELOCh(chan, screen->fence.bo, 0, NOUVEAU_BO_WR);
|
OUT_RELOCh(chan, screen->fence.bo, 0, NOUVEAU_BO_WR);
|
||||||
OUT_RELOCl(chan, screen->fence.bo, 0, NOUVEAU_BO_WR);
|
OUT_RELOCl(chan, screen->fence.bo, 0, NOUVEAU_BO_WR);
|
||||||
OUT_RING (chan, sequence);
|
OUT_RING (chan, *sequence);
|
||||||
OUT_RING (chan, NVC0_3D_QUERY_GET_FENCE | NVC0_3D_QUERY_GET_SHORT |
|
OUT_RING (chan, NVC0_3D_QUERY_GET_FENCE | NVC0_3D_QUERY_GET_SHORT |
|
||||||
(0xf << NVC0_3D_QUERY_GET_UNIT__SHIFT));
|
(0xf << NVC0_3D_QUERY_GET_UNIT__SHIFT));
|
||||||
}
|
}
|
||||||
@@ -358,6 +366,7 @@ nvc0_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
chan = screen->base.channel;
|
chan = screen->base.channel;
|
||||||
|
chan->user_private = screen;
|
||||||
|
|
||||||
pscreen->winsys = ws;
|
pscreen->winsys = ws;
|
||||||
pscreen->destroy = nvc0_screen_destroy;
|
pscreen->destroy = nvc0_screen_destroy;
|
||||||
|
@@ -428,8 +428,7 @@ nvc0_switch_pipe_context(struct nvc0_context *ctx_to)
|
|||||||
if (!ctx_to->zsa)
|
if (!ctx_to->zsa)
|
||||||
ctx_to->dirty &= ~NVC0_NEW_ZSA;
|
ctx_to->dirty &= ~NVC0_NEW_ZSA;
|
||||||
|
|
||||||
ctx_to->screen->base.channel->user_private = ctx_to->screen->cur_ctx =
|
ctx_to->screen->cur_ctx = ctx_to;
|
||||||
ctx_to;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct state_validate {
|
static struct state_validate {
|
||||||
|
@@ -367,11 +367,11 @@ nvc0_prim_gl(unsigned prim)
|
|||||||
static void
|
static void
|
||||||
nvc0_draw_vbo_flush_notify(struct nouveau_channel *chan)
|
nvc0_draw_vbo_flush_notify(struct nouveau_channel *chan)
|
||||||
{
|
{
|
||||||
struct nvc0_context *nvc0 = chan->user_private;
|
struct nvc0_screen *screen = chan->user_private;
|
||||||
|
|
||||||
nouveau_fence_update(&nvc0->screen->base, TRUE);
|
nouveau_fence_update(&screen->base, TRUE);
|
||||||
|
|
||||||
nvc0_bufctx_emit_relocs(nvc0);
|
nvc0_bufctx_emit_relocs(screen->cur_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -587,7 +587,6 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
|
|||||||
nvc0_state_validate(nvc0);
|
nvc0_state_validate(nvc0);
|
||||||
|
|
||||||
chan->flush_notify = nvc0_draw_vbo_flush_notify;
|
chan->flush_notify = nvc0_draw_vbo_flush_notify;
|
||||||
chan->user_private = nvc0;
|
|
||||||
|
|
||||||
if (nvc0->vbo_fifo) {
|
if (nvc0->vbo_fifo) {
|
||||||
nvc0_push_vbo(nvc0, info);
|
nvc0_push_vbo(nvc0, info);
|
||||||
|
@@ -33,6 +33,9 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||||||
return 1;
|
return 1;
|
||||||
case PIPE_CAP_GLSL:
|
case PIPE_CAP_GLSL:
|
||||||
return 1;
|
return 1;
|
||||||
|
case PIPE_CAP_SM3:
|
||||||
|
/* TODO: >= nv4x support Shader Model 3.0 */
|
||||||
|
return 0;
|
||||||
case PIPE_CAP_ANISOTROPIC_FILTER:
|
case PIPE_CAP_ANISOTROPIC_FILTER:
|
||||||
return 1;
|
return 1;
|
||||||
case PIPE_CAP_POINT_SPRITE:
|
case PIPE_CAP_POINT_SPRITE:
|
||||||
|
@@ -106,7 +106,7 @@ static void r300_destroy_context(struct pipe_context* context)
|
|||||||
draw_destroy(r300->draw);
|
draw_destroy(r300->draw);
|
||||||
|
|
||||||
if (r300->vbuf_mgr)
|
if (r300->vbuf_mgr)
|
||||||
u_vbuf_mgr_destroy(r300->vbuf_mgr);
|
u_vbuf_destroy(r300->vbuf_mgr);
|
||||||
|
|
||||||
/* XXX: This function assumes r300->query_list was initialized */
|
/* XXX: This function assumes r300->query_list was initialized */
|
||||||
r300_release_referenced_objects(r300);
|
r300_release_referenced_objects(r300);
|
||||||
@@ -437,7 +437,7 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
|
|||||||
r300_init_state_functions(r300);
|
r300_init_state_functions(r300);
|
||||||
r300_init_resource_functions(r300);
|
r300_init_resource_functions(r300);
|
||||||
|
|
||||||
r300->vbuf_mgr = u_vbuf_mgr_create(&r300->context, 1024 * 1024, 16,
|
r300->vbuf_mgr = u_vbuf_create(&r300->context, 1024 * 1024, 16,
|
||||||
PIPE_BIND_VERTEX_BUFFER |
|
PIPE_BIND_VERTEX_BUFFER |
|
||||||
PIPE_BIND_INDEX_BUFFER,
|
PIPE_BIND_INDEX_BUFFER,
|
||||||
U_VERTEX_FETCH_DWORD_ALIGNED);
|
U_VERTEX_FETCH_DWORD_ALIGNED);
|
||||||
|
@@ -425,7 +425,7 @@ struct r300_vertex_element_state {
|
|||||||
struct pipe_vertex_element velem[PIPE_MAX_ATTRIBS];
|
struct pipe_vertex_element velem[PIPE_MAX_ATTRIBS];
|
||||||
unsigned format_size[PIPE_MAX_ATTRIBS];
|
unsigned format_size[PIPE_MAX_ATTRIBS];
|
||||||
|
|
||||||
struct u_vbuf_mgr_elements *vmgr_elements;
|
struct u_vbuf_elements *vmgr_elements;
|
||||||
|
|
||||||
/* The size of the vertex, in dwords. */
|
/* The size of the vertex, in dwords. */
|
||||||
unsigned vertex_size_dwords;
|
unsigned vertex_size_dwords;
|
||||||
|
@@ -822,8 +822,7 @@ void r300_emit_textures_state(struct r300_context *r300,
|
|||||||
void r300_emit_vertex_arrays(struct r300_context* r300, int offset,
|
void r300_emit_vertex_arrays(struct r300_context* r300, int offset,
|
||||||
boolean indexed, int instance_id)
|
boolean indexed, int instance_id)
|
||||||
{
|
{
|
||||||
struct pipe_vertex_buffer *vbuf = r300->vbuf_mgr->vertex_buffer;
|
struct pipe_vertex_buffer *vbuf = r300->vbuf_mgr->real_vertex_buffer;
|
||||||
struct pipe_resource **valid_vbuf = r300->vbuf_mgr->real_vertex_buffer;
|
|
||||||
struct pipe_vertex_element *velem = r300->velems->velem;
|
struct pipe_vertex_element *velem = r300->velems->velem;
|
||||||
struct r300_resource *buf;
|
struct r300_resource *buf;
|
||||||
int i;
|
int i;
|
||||||
@@ -861,7 +860,7 @@ void r300_emit_vertex_arrays(struct r300_context* r300, int offset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < vertex_array_count; i++) {
|
for (i = 0; i < vertex_array_count; i++) {
|
||||||
buf = r300_resource(valid_vbuf[velem[i].vertex_buffer_index]);
|
buf = r300_resource(vbuf[velem[i].vertex_buffer_index].buffer);
|
||||||
OUT_CS_RELOC(buf);
|
OUT_CS_RELOC(buf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -913,7 +912,7 @@ void r300_emit_vertex_arrays(struct r300_context* r300, int offset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < vertex_array_count; i++) {
|
for (i = 0; i < vertex_array_count; i++) {
|
||||||
buf = r300_resource(valid_vbuf[velem[i].vertex_buffer_index]);
|
buf = r300_resource(vbuf[velem[i].vertex_buffer_index].buffer);
|
||||||
OUT_CS_RELOC(buf);
|
OUT_CS_RELOC(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1221,15 +1220,17 @@ validate:
|
|||||||
r300_resource(r300->vbo)->domain, 0);
|
r300_resource(r300->vbo)->domain, 0);
|
||||||
/* ...vertex buffers for HWTCL path... */
|
/* ...vertex buffers for HWTCL path... */
|
||||||
if (do_validate_vertex_buffers && r300->vertex_arrays_dirty) {
|
if (do_validate_vertex_buffers && r300->vertex_arrays_dirty) {
|
||||||
struct pipe_resource **buf = r300->vbuf_mgr->real_vertex_buffer;
|
struct pipe_vertex_buffer *vbuf = r300->vbuf_mgr->real_vertex_buffer;
|
||||||
struct pipe_resource **last = r300->vbuf_mgr->real_vertex_buffer +
|
struct pipe_vertex_buffer *last = r300->vbuf_mgr->real_vertex_buffer +
|
||||||
r300->vbuf_mgr->nr_real_vertex_buffers;
|
r300->vbuf_mgr->nr_real_vertex_buffers;
|
||||||
for (; buf != last; buf++) {
|
struct pipe_resource *buf;
|
||||||
if (!*buf)
|
for (; vbuf != last; vbuf++) {
|
||||||
|
buf = vbuf->buffer;
|
||||||
|
if (!buf)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
r300->rws->cs_add_reloc(r300->cs, r300_resource(*buf)->cs_buf,
|
r300->rws->cs_add_reloc(r300->cs, r300_resource(buf)->cs_buf,
|
||||||
r300_resource(*buf)->domain, 0);
|
r300_resource(buf)->domain, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* ...and index buffer for HWTCL path. */
|
/* ...and index buffer for HWTCL path. */
|
||||||
@@ -1237,13 +1238,12 @@ validate:
|
|||||||
r300->rws->cs_add_reloc(r300->cs, r300_resource(index_buffer)->cs_buf,
|
r300->rws->cs_add_reloc(r300->cs, r300_resource(index_buffer)->cs_buf,
|
||||||
r300_resource(index_buffer)->domain, 0);
|
r300_resource(index_buffer)->domain, 0);
|
||||||
|
|
||||||
/* Now do the validation. */
|
/* Now do the validation (flush is called inside cs_validate on failure). */
|
||||||
if (!r300->rws->cs_validate(r300->cs)) {
|
if (!r300->rws->cs_validate(r300->cs)) {
|
||||||
/* Ooops, an infinite loop, give up. */
|
/* Ooops, an infinite loop, give up. */
|
||||||
if (flushed)
|
if (flushed)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
r300_flush(&r300->context, RADEON_FLUSH_ASYNC, NULL);
|
|
||||||
flushed = TRUE;
|
flushed = TRUE;
|
||||||
goto validate;
|
goto validate;
|
||||||
}
|
}
|
||||||
|
@@ -138,7 +138,8 @@ static boolean r300_get_query_result(struct pipe_context* pipe,
|
|||||||
/* Sum up the results. */
|
/* Sum up the results. */
|
||||||
temp = 0;
|
temp = 0;
|
||||||
for (i = 0; i < q->num_results; i++) {
|
for (i = 0; i < q->num_results; i++) {
|
||||||
temp += *map;
|
/* Convert little endian values written by GPU to CPU byte order */
|
||||||
|
temp += util_le32_to_cpu(*map);
|
||||||
map++;
|
map++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -146,7 +146,7 @@ static void r300_emit_draw_init(struct r300_context *r300, unsigned mode,
|
|||||||
static void r300_split_index_bias(struct r300_context *r300, int index_bias,
|
static void r300_split_index_bias(struct r300_context *r300, int index_bias,
|
||||||
int *buffer_offset, int *index_offset)
|
int *buffer_offset, int *index_offset)
|
||||||
{
|
{
|
||||||
struct pipe_vertex_buffer *vb, *vbufs = r300->vbuf_mgr->vertex_buffer;
|
struct pipe_vertex_buffer *vb, *vbufs = r300->vbuf_mgr->real_vertex_buffer;
|
||||||
struct pipe_vertex_element *velem = r300->velems->velem;
|
struct pipe_vertex_element *velem = r300->velems->velem;
|
||||||
unsigned i, size;
|
unsigned i, size;
|
||||||
int max_neg_bias;
|
int max_neg_bias;
|
||||||
@@ -338,7 +338,7 @@ static boolean immd_is_good_idea(struct r300_context *r300,
|
|||||||
vbi = velem->vertex_buffer_index;
|
vbi = velem->vertex_buffer_index;
|
||||||
|
|
||||||
if (!checked[vbi]) {
|
if (!checked[vbi]) {
|
||||||
buf = r300->vbuf_mgr->real_vertex_buffer[vbi];
|
buf = r300->vbuf_mgr->real_vertex_buffer[vbi].buffer;
|
||||||
|
|
||||||
if ((r300_resource(buf)->domain != RADEON_DOMAIN_GTT)) {
|
if ((r300_resource(buf)->domain != RADEON_DOMAIN_GTT)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -389,13 +389,13 @@ static void r300_draw_arrays_immediate(struct r300_context *r300,
|
|||||||
velem = &r300->velems->velem[i];
|
velem = &r300->velems->velem[i];
|
||||||
size[i] = r300->velems->format_size[i] / 4;
|
size[i] = r300->velems->format_size[i] / 4;
|
||||||
vbi = velem->vertex_buffer_index;
|
vbi = velem->vertex_buffer_index;
|
||||||
vbuf = &r300->vbuf_mgr->vertex_buffer[vbi];
|
vbuf = &r300->vbuf_mgr->real_vertex_buffer[vbi];
|
||||||
stride[i] = vbuf->stride / 4;
|
stride[i] = vbuf->stride / 4;
|
||||||
|
|
||||||
/* Map the buffer. */
|
/* Map the buffer. */
|
||||||
if (!map[vbi]) {
|
if (!map[vbi]) {
|
||||||
map[vbi] = (uint32_t*)r300->rws->buffer_map(
|
map[vbi] = (uint32_t*)r300->rws->buffer_map(
|
||||||
r300_resource(r300->vbuf_mgr->real_vertex_buffer[vbi])->buf,
|
r300_resource(vbuf->buffer)->buf,
|
||||||
r300->cs, PIPE_TRANSFER_READ | PIPE_TRANSFER_UNSYNCHRONIZED);
|
r300->cs, PIPE_TRANSFER_READ | PIPE_TRANSFER_UNSYNCHRONIZED);
|
||||||
map[vbi] += (vbuf->buffer_offset / 4) + stride[i] * info->start;
|
map[vbi] += (vbuf->buffer_offset / 4) + stride[i] * info->start;
|
||||||
}
|
}
|
||||||
@@ -423,7 +423,7 @@ static void r300_draw_arrays_immediate(struct r300_context *r300,
|
|||||||
vbi = r300->velems->velem[i].vertex_buffer_index;
|
vbi = r300->velems->velem[i].vertex_buffer_index;
|
||||||
|
|
||||||
if (map[vbi]) {
|
if (map[vbi]) {
|
||||||
r300->rws->buffer_unmap(r300_resource(r300->vbuf_mgr->real_vertex_buffer[vbi])->buf);
|
r300->rws->buffer_unmap(r300_resource(r300->vbuf_mgr->real_vertex_buffer[vbi].buffer)->buf);
|
||||||
map[vbi] = NULL;
|
map[vbi] = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -779,7 +779,7 @@ static void r300_draw_vbo(struct pipe_context* pipe,
|
|||||||
r300_update_derived_state(r300);
|
r300_update_derived_state(r300);
|
||||||
|
|
||||||
/* Start the vbuf manager and update buffers if needed. */
|
/* Start the vbuf manager and update buffers if needed. */
|
||||||
if (u_vbuf_mgr_draw_begin(r300->vbuf_mgr, &info) & U_VBUF_BUFFERS_UPDATED) {
|
if (u_vbuf_draw_begin(r300->vbuf_mgr, &info) & U_VBUF_BUFFERS_UPDATED) {
|
||||||
r300->vertex_arrays_dirty = TRUE;
|
r300->vertex_arrays_dirty = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -810,7 +810,7 @@ static void r300_draw_vbo(struct pipe_context* pipe,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
u_vbuf_mgr_draw_end(r300->vbuf_mgr);
|
u_vbuf_draw_end(r300->vbuf_mgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -825,7 +825,6 @@ static void r300_swtcl_draw_vbo(struct pipe_context* pipe,
|
|||||||
struct r300_context* r300 = r300_context(pipe);
|
struct r300_context* r300 = r300_context(pipe);
|
||||||
struct pipe_transfer *vb_transfer[PIPE_MAX_ATTRIBS];
|
struct pipe_transfer *vb_transfer[PIPE_MAX_ATTRIBS];
|
||||||
struct pipe_transfer *ib_transfer = NULL;
|
struct pipe_transfer *ib_transfer = NULL;
|
||||||
unsigned count = info->count;
|
|
||||||
int i;
|
int i;
|
||||||
void *indices = NULL;
|
void *indices = NULL;
|
||||||
boolean indexed = info->indexed && r300->index_buffer.buffer;
|
boolean indexed = info->indexed && r300->index_buffer.buffer;
|
||||||
@@ -834,10 +833,6 @@ static void r300_swtcl_draw_vbo(struct pipe_context* pipe,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!u_trim_pipe_prim(info->mode, &count)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
r300_update_derived_state(r300);
|
r300_update_derived_state(r300);
|
||||||
|
|
||||||
r300_reserve_cs_dwords(r300,
|
r300_reserve_cs_dwords(r300,
|
||||||
|
@@ -1583,7 +1583,7 @@ static void r300_set_vertex_buffers(struct pipe_context* pipe,
|
|||||||
count = 1;
|
count = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
u_vbuf_mgr_set_vertex_buffers(r300->vbuf_mgr, count, buffers);
|
u_vbuf_set_vertex_buffers(r300->vbuf_mgr, count, buffers);
|
||||||
|
|
||||||
if (r300->screen->caps.has_tcl) {
|
if (r300->screen->caps.has_tcl) {
|
||||||
/* HW TCL. */
|
/* HW TCL. */
|
||||||
@@ -1691,7 +1691,7 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe,
|
|||||||
|
|
||||||
velems->count = count;
|
velems->count = count;
|
||||||
velems->vmgr_elements =
|
velems->vmgr_elements =
|
||||||
u_vbuf_mgr_create_vertex_elements(r300->vbuf_mgr, count, attribs,
|
u_vbuf_create_vertex_elements(r300->vbuf_mgr, count, attribs,
|
||||||
velems->velem);
|
velems->velem);
|
||||||
|
|
||||||
if (r300_screen(pipe->screen)->caps.has_tcl) {
|
if (r300_screen(pipe->screen)->caps.has_tcl) {
|
||||||
@@ -1721,7 +1721,7 @@ static void r300_bind_vertex_elements_state(struct pipe_context *pipe,
|
|||||||
|
|
||||||
r300->velems = velems;
|
r300->velems = velems;
|
||||||
|
|
||||||
u_vbuf_mgr_bind_vertex_elements(r300->vbuf_mgr, state, velems->vmgr_elements);
|
u_vbuf_bind_vertex_elements(r300->vbuf_mgr, state, velems->vmgr_elements);
|
||||||
|
|
||||||
if (r300->draw) {
|
if (r300->draw) {
|
||||||
draw_set_vertex_elements(r300->draw, velems->count, velems->velem);
|
draw_set_vertex_elements(r300->draw, velems->count, velems->velem);
|
||||||
@@ -1738,7 +1738,7 @@ static void r300_delete_vertex_elements_state(struct pipe_context *pipe, void *s
|
|||||||
struct r300_context *r300 = r300_context(pipe);
|
struct r300_context *r300 = r300_context(pipe);
|
||||||
struct r300_vertex_element_state *velems = state;
|
struct r300_vertex_element_state *velems = state;
|
||||||
|
|
||||||
u_vbuf_mgr_destroy_vertex_elements(r300->vbuf_mgr, velems->vmgr_elements);
|
u_vbuf_destroy_vertex_elements(r300->vbuf_mgr, velems->vmgr_elements);
|
||||||
FREE(state);
|
FREE(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -447,16 +447,8 @@ static uint32_t r300_translate_colorformat(enum pipe_format format)
|
|||||||
/*case PIPE_FORMAT_B8G8R8A8_SNORM:*/
|
/*case PIPE_FORMAT_B8G8R8A8_SNORM:*/
|
||||||
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
||||||
/*case PIPE_FORMAT_B8G8R8X8_SNORM:*/
|
/*case PIPE_FORMAT_B8G8R8X8_SNORM:*/
|
||||||
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
|
||||||
/*case PIPE_FORMAT_A8R8G8B8_SNORM:*/
|
|
||||||
case PIPE_FORMAT_X8R8G8B8_UNORM:
|
|
||||||
/*case PIPE_FORMAT_X8R8G8B8_SNORM:*/
|
|
||||||
case PIPE_FORMAT_A8B8G8R8_UNORM:
|
|
||||||
/*case PIPE_FORMAT_A8B8G8R8_SNORM:*/
|
|
||||||
case PIPE_FORMAT_R8G8B8A8_UNORM:
|
case PIPE_FORMAT_R8G8B8A8_UNORM:
|
||||||
case PIPE_FORMAT_R8G8B8A8_SNORM:
|
case PIPE_FORMAT_R8G8B8A8_SNORM:
|
||||||
case PIPE_FORMAT_X8B8G8R8_UNORM:
|
|
||||||
/*case PIPE_FORMAT_X8B8G8R8_SNORM:*/
|
|
||||||
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
||||||
/*case PIPE_FORMAT_R8G8B8X8_SNORM:*/
|
/*case PIPE_FORMAT_R8G8B8X8_SNORM:*/
|
||||||
/* These formats work fine with ARGB8888 if US_OUT_FMT is set
|
/* These formats work fine with ARGB8888 if US_OUT_FMT is set
|
||||||
@@ -662,10 +654,6 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format)
|
|||||||
R300_C2_SEL_R | R300_C3_SEL_A;
|
R300_C2_SEL_R | R300_C3_SEL_A;
|
||||||
|
|
||||||
/* ARGB outputs. */
|
/* ARGB outputs. */
|
||||||
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
|
||||||
/*case PIPE_FORMAT_A8R8G8B8_SNORM:*/
|
|
||||||
case PIPE_FORMAT_X8R8G8B8_UNORM:
|
|
||||||
/*case PIPE_FORMAT_X8R8G8B8_SNORM:*/
|
|
||||||
case PIPE_FORMAT_A16_UNORM:
|
case PIPE_FORMAT_A16_UNORM:
|
||||||
case PIPE_FORMAT_A16_SNORM:
|
case PIPE_FORMAT_A16_SNORM:
|
||||||
case PIPE_FORMAT_A16_FLOAT:
|
case PIPE_FORMAT_A16_FLOAT:
|
||||||
@@ -674,15 +662,6 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format)
|
|||||||
R300_C0_SEL_A | R300_C1_SEL_R |
|
R300_C0_SEL_A | R300_C1_SEL_R |
|
||||||
R300_C2_SEL_G | R300_C3_SEL_B;
|
R300_C2_SEL_G | R300_C3_SEL_B;
|
||||||
|
|
||||||
/* ABGR outputs. */
|
|
||||||
case PIPE_FORMAT_A8B8G8R8_UNORM:
|
|
||||||
/*case PIPE_FORMAT_A8B8G8R8_SNORM:*/
|
|
||||||
case PIPE_FORMAT_X8B8G8R8_UNORM:
|
|
||||||
/*case PIPE_FORMAT_X8B8G8R8_SNORM:*/
|
|
||||||
return modifier |
|
|
||||||
R300_C0_SEL_A | R300_C1_SEL_B |
|
|
||||||
R300_C2_SEL_G | R300_C3_SEL_R;
|
|
||||||
|
|
||||||
/* RGBA outputs. */
|
/* RGBA outputs. */
|
||||||
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
||||||
/*case PIPE_FORMAT_R8G8B8X8_SNORM:*/
|
/*case PIPE_FORMAT_R8G8B8X8_SNORM:*/
|
||||||
@@ -845,10 +824,10 @@ static void r300_texture_setup_fb_state(struct r300_surface *surf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean r300_resource_set_properties(struct pipe_screen *screen,
|
void r300_resource_set_properties(struct pipe_screen *screen,
|
||||||
struct pipe_resource *tex,
|
struct pipe_resource *tex,
|
||||||
unsigned offset,
|
unsigned offset,
|
||||||
const struct pipe_resource *new_properties)
|
const struct pipe_resource *new_properties)
|
||||||
{
|
{
|
||||||
struct r300_screen *rscreen = r300_screen(screen);
|
struct r300_screen *rscreen = r300_screen(screen);
|
||||||
struct r300_resource *res = r300_resource(tex);
|
struct r300_resource *res = r300_resource(tex);
|
||||||
@@ -858,14 +837,9 @@ boolean r300_resource_set_properties(struct pipe_screen *screen,
|
|||||||
util_format_short_name(tex->format),
|
util_format_short_name(tex->format),
|
||||||
util_format_short_name(new_properties->format));
|
util_format_short_name(new_properties->format));
|
||||||
|
|
||||||
if (!r300_texture_desc_init(rscreen, res, new_properties)) {
|
r300_texture_desc_init(rscreen, res, new_properties);
|
||||||
fprintf(stderr, "r300: ERROR: Cannot set texture properties.\n");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
res->tex_offset = offset;
|
res->tex_offset = offset;
|
||||||
r300_texture_setup_format_state(rscreen, res, 0, &res->tx_format);
|
r300_texture_setup_format_state(rscreen, res, 0, &res->tx_format);
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void r300_texture_destroy(struct pipe_screen *screen,
|
static void r300_texture_destroy(struct pipe_screen *screen,
|
||||||
@@ -936,12 +910,7 @@ r300_texture_create_object(struct r300_screen *rscreen,
|
|||||||
RADEON_DOMAIN_VRAM | RADEON_DOMAIN_GTT;
|
RADEON_DOMAIN_VRAM | RADEON_DOMAIN_GTT;
|
||||||
tex->buf_size = max_buffer_size;
|
tex->buf_size = max_buffer_size;
|
||||||
|
|
||||||
if (!r300_resource_set_properties(&rscreen->screen, &tex->b.b.b, 0, base)) {
|
r300_resource_set_properties(&rscreen->screen, &tex->b.b.b, 0, base);
|
||||||
if (buffer)
|
|
||||||
pb_reference(&buffer, NULL);
|
|
||||||
FREE(tex);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create the backing buffer if needed. */
|
/* Create the backing buffer if needed. */
|
||||||
if (!buffer) {
|
if (!buffer) {
|
||||||
|
@@ -50,10 +50,10 @@ uint32_t r300_translate_texformat(enum pipe_format format,
|
|||||||
|
|
||||||
uint32_t r500_tx_format_msb_bit(enum pipe_format format);
|
uint32_t r500_tx_format_msb_bit(enum pipe_format format);
|
||||||
|
|
||||||
boolean r300_resource_set_properties(struct pipe_screen *screen,
|
void r300_resource_set_properties(struct pipe_screen *screen,
|
||||||
struct pipe_resource *tex,
|
struct pipe_resource *tex,
|
||||||
unsigned offset,
|
unsigned offset,
|
||||||
const struct pipe_resource *new_properties);
|
const struct pipe_resource *new_properties);
|
||||||
|
|
||||||
boolean r300_is_colorbuffer_format_supported(enum pipe_format format);
|
boolean r300_is_colorbuffer_format_supported(enum pipe_format format);
|
||||||
|
|
||||||
|
@@ -473,9 +473,9 @@ static void r300_tex_print_info(struct r300_resource *tex,
|
|||||||
util_format_short_name(tex->b.b.b.format));
|
util_format_short_name(tex->b.b.b.format));
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean r300_texture_desc_init(struct r300_screen *rscreen,
|
void r300_texture_desc_init(struct r300_screen *rscreen,
|
||||||
struct r300_resource *tex,
|
struct r300_resource *tex,
|
||||||
const struct pipe_resource *base)
|
const struct pipe_resource *base)
|
||||||
{
|
{
|
||||||
tex->b.b.b.target = base->target;
|
tex->b.b.b.target = base->target;
|
||||||
tex->b.b.b.format = base->format;
|
tex->b.b.b.format = base->format;
|
||||||
@@ -518,11 +518,15 @@ boolean r300_texture_desc_init(struct r300_screen *rscreen,
|
|||||||
if (tex->buf_size) {
|
if (tex->buf_size) {
|
||||||
/* Make sure the buffer we got is large enough. */
|
/* Make sure the buffer we got is large enough. */
|
||||||
if (tex->tex.size_in_bytes > tex->buf_size) {
|
if (tex->tex.size_in_bytes > tex->buf_size) {
|
||||||
fprintf(stderr, "r300: texture_desc_init: The buffer is not "
|
fprintf(stderr,
|
||||||
"large enough. Got: %i, Need: %i, Info:\n",
|
"r300: I got a pre-allocated buffer to use it as a texture "
|
||||||
tex->buf_size, tex->tex.size_in_bytes);
|
"storage, but the buffer is too small. I'll use the buffer "
|
||||||
|
"anyway, because I can't crash here, but it's dangerous. "
|
||||||
|
"This can be a DDX bug. Got: %iB, Need: %iB, Info:\n",
|
||||||
|
tex->buf_size, tex->tex.size_in_bytes);
|
||||||
r300_tex_print_info(tex, "texture_desc_init");
|
r300_tex_print_info(tex, "texture_desc_init");
|
||||||
return FALSE;
|
/* Ooops, what now. Apps will break if we fail this,
|
||||||
|
* so just pretend everything's okay. */
|
||||||
}
|
}
|
||||||
|
|
||||||
tex->tex.buffer_size_in_bytes = tex->buf_size;
|
tex->tex.buffer_size_in_bytes = tex->buf_size;
|
||||||
@@ -532,8 +536,6 @@ boolean r300_texture_desc_init(struct r300_screen *rscreen,
|
|||||||
|
|
||||||
if (SCREEN_DBG_ON(rscreen, DBG_TEX))
|
if (SCREEN_DBG_ON(rscreen, DBG_TEX))
|
||||||
r300_tex_print_info(tex, "texture_desc_init");
|
r300_tex_print_info(tex, "texture_desc_init");
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned r300_texture_get_offset(struct r300_resource *tex,
|
unsigned r300_texture_get_offset(struct r300_resource *tex,
|
||||||
|
@@ -43,9 +43,9 @@ unsigned r300_get_pixel_alignment(enum pipe_format format,
|
|||||||
enum radeon_bo_layout macrotile,
|
enum radeon_bo_layout macrotile,
|
||||||
enum r300_dim dim, boolean is_rs690);
|
enum r300_dim dim, boolean is_rs690);
|
||||||
|
|
||||||
boolean r300_texture_desc_init(struct r300_screen *rscreen,
|
void r300_texture_desc_init(struct r300_screen *rscreen,
|
||||||
struct r300_resource *tex,
|
struct r300_resource *tex,
|
||||||
const struct pipe_resource *base);
|
const struct pipe_resource *base);
|
||||||
|
|
||||||
unsigned r300_texture_get_offset(struct r300_resource *tex,
|
unsigned r300_texture_get_offset(struct r300_resource *tex,
|
||||||
unsigned level, unsigned layer);
|
unsigned level, unsigned layer);
|
||||||
|
@@ -327,6 +327,7 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format)
|
|||||||
return V_028C70_SWAP_STD;
|
return V_028C70_SWAP_STD;
|
||||||
|
|
||||||
case PIPE_FORMAT_R16_UNORM:
|
case PIPE_FORMAT_R16_UNORM:
|
||||||
|
case PIPE_FORMAT_R16_FLOAT:
|
||||||
return V_028C70_SWAP_STD;
|
return V_028C70_SWAP_STD;
|
||||||
|
|
||||||
/* 32-bit buffers. */
|
/* 32-bit buffers. */
|
||||||
@@ -430,6 +431,9 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format)
|
|||||||
case PIPE_FORMAT_R16_UNORM:
|
case PIPE_FORMAT_R16_UNORM:
|
||||||
return V_028C70_COLOR_16;
|
return V_028C70_COLOR_16;
|
||||||
|
|
||||||
|
case PIPE_FORMAT_R16_FLOAT:
|
||||||
|
return V_028C70_COLOR_16_FLOAT;
|
||||||
|
|
||||||
/* 32-bit buffers. */
|
/* 32-bit buffers. */
|
||||||
case PIPE_FORMAT_A8B8G8R8_SRGB:
|
case PIPE_FORMAT_A8B8G8R8_SRGB:
|
||||||
case PIPE_FORMAT_A8B8G8R8_UNORM:
|
case PIPE_FORMAT_A8B8G8R8_UNORM:
|
||||||
|
@@ -809,9 +809,7 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state
|
|||||||
struct r600_resource_texture *rtex;
|
struct r600_resource_texture *rtex;
|
||||||
struct r600_resource *rbuffer;
|
struct r600_resource *rbuffer;
|
||||||
struct r600_surface *surf;
|
struct r600_surface *surf;
|
||||||
unsigned level;
|
unsigned level, pitch, slice, format, stencil_format, offset, array_mode;
|
||||||
unsigned pitch, slice, format, stencil_format;
|
|
||||||
unsigned offset;
|
|
||||||
|
|
||||||
if (state->zsbuf == NULL)
|
if (state->zsbuf == NULL)
|
||||||
return;
|
return;
|
||||||
@@ -823,9 +821,13 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state
|
|||||||
|
|
||||||
rbuffer = &rtex->resource;
|
rbuffer = &rtex->resource;
|
||||||
|
|
||||||
/* XXX quite sure for dx10+ hw don't need any offset hacks */
|
|
||||||
offset = r600_texture_get_offset((struct r600_resource_texture *)state->zsbuf->texture,
|
offset = r600_texture_get_offset((struct r600_resource_texture *)state->zsbuf->texture,
|
||||||
level, state->zsbuf->u.tex.first_layer);
|
level, state->zsbuf->u.tex.first_layer);
|
||||||
|
|
||||||
|
/* XXX remove this once tiling is properly supported */
|
||||||
|
array_mode = rtex->array_mode[level] ? rtex->array_mode[level] :
|
||||||
|
V_028C70_ARRAY_1D_TILED_THIN1;
|
||||||
|
|
||||||
pitch = rtex->pitch_in_blocks[level] / 8 - 1;
|
pitch = rtex->pitch_in_blocks[level] / 8 - 1;
|
||||||
slice = rtex->pitch_in_blocks[level] * surf->aligned_height / 64 - 1;
|
slice = rtex->pitch_in_blocks[level] * surf->aligned_height / 64 - 1;
|
||||||
format = r600_translate_dbformat(state->zsbuf->texture->format);
|
format = r600_translate_dbformat(state->zsbuf->texture->format);
|
||||||
@@ -851,7 +853,7 @@ static void evergreen_db(struct r600_pipe_context *rctx, struct r600_pipe_state
|
|||||||
S_028044_FORMAT(stencil_format), 0xFFFFFFFF, rbuffer->bo);
|
S_028044_FORMAT(stencil_format), 0xFFFFFFFF, rbuffer->bo);
|
||||||
|
|
||||||
r600_pipe_state_add_reg(rstate, R_028040_DB_Z_INFO,
|
r600_pipe_state_add_reg(rstate, R_028040_DB_Z_INFO,
|
||||||
S_028040_ARRAY_MODE(rtex->array_mode[level]) | S_028040_FORMAT(format),
|
S_028040_ARRAY_MODE(array_mode) | S_028040_FORMAT(format),
|
||||||
0xFFFFFFFF, rbuffer->bo);
|
0xFFFFFFFF, rbuffer->bo);
|
||||||
r600_pipe_state_add_reg(rstate, R_028058_DB_DEPTH_SIZE,
|
r600_pipe_state_add_reg(rstate, R_028058_DB_DEPTH_SIZE,
|
||||||
S_028058_PITCH_TILE_MAX(pitch),
|
S_028058_PITCH_TILE_MAX(pitch),
|
||||||
@@ -1454,6 +1456,11 @@ void evergreen_init_config(struct r600_pipe_context *rctx)
|
|||||||
tmp |= S_008C28_NUM_LS_STACK_ENTRIES(num_ls_stack_entries);
|
tmp |= S_008C28_NUM_LS_STACK_ENTRIES(num_ls_stack_entries);
|
||||||
r600_pipe_state_add_reg(rstate, R_008C28_SQ_STACK_RESOURCE_MGMT_3, tmp, 0xFFFFFFFF, NULL);
|
r600_pipe_state_add_reg(rstate, R_008C28_SQ_STACK_RESOURCE_MGMT_3, tmp, 0xFFFFFFFF, NULL);
|
||||||
|
|
||||||
|
tmp = 0;
|
||||||
|
tmp |= S_008E2C_NUM_PS_LDS(0x1000);
|
||||||
|
tmp |= S_008E2C_NUM_LS_LDS(0x1000);
|
||||||
|
r600_pipe_state_add_reg(rstate, R_008E2C_SQ_LDS_RESOURCE_MGMT, tmp, 0xFFFFFFFF, NULL);
|
||||||
|
|
||||||
r600_pipe_state_add_reg(rstate, R_009100_SPI_CONFIG_CNTL, 0x0, 0xFFFFFFFF, NULL);
|
r600_pipe_state_add_reg(rstate, R_009100_SPI_CONFIG_CNTL, 0x0, 0xFFFFFFFF, NULL);
|
||||||
r600_pipe_state_add_reg(rstate, R_00913C_SPI_CONFIG_CNTL_1, S_00913C_VTX_DONE_DELAY(4), 0xFFFFFFFF, NULL);
|
r600_pipe_state_add_reg(rstate, R_00913C_SPI_CONFIG_CNTL_1, S_00913C_VTX_DONE_DELAY(4), 0xFFFFFFFF, NULL);
|
||||||
|
|
||||||
@@ -1721,7 +1728,7 @@ void evergreen_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader
|
|||||||
struct r600_pipe_state *rstate = &shader->rstate;
|
struct r600_pipe_state *rstate = &shader->rstate;
|
||||||
struct r600_shader *rshader = &shader->shader;
|
struct r600_shader *rshader = &shader->shader;
|
||||||
unsigned spi_vs_out_id[10];
|
unsigned spi_vs_out_id[10];
|
||||||
unsigned i, tmp;
|
unsigned i, tmp, nparams;
|
||||||
|
|
||||||
/* clear previous register */
|
/* clear previous register */
|
||||||
rstate->nregs = 0;
|
rstate->nregs = 0;
|
||||||
@@ -1740,9 +1747,17 @@ void evergreen_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader
|
|||||||
spi_vs_out_id[i], 0xFFFFFFFF, NULL);
|
spi_vs_out_id[i], 0xFFFFFFFF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Certain attributes (position, psize, etc.) don't count as params.
|
||||||
|
* VS is required to export at least one param and r600_shader_from_tgsi()
|
||||||
|
* takes care of adding a dummy export.
|
||||||
|
*/
|
||||||
|
nparams = rshader->noutput - rshader->npos;
|
||||||
|
if (nparams < 1)
|
||||||
|
nparams = 1;
|
||||||
|
|
||||||
r600_pipe_state_add_reg(rstate,
|
r600_pipe_state_add_reg(rstate,
|
||||||
R_0286C4_SPI_VS_OUT_CONFIG,
|
R_0286C4_SPI_VS_OUT_CONFIG,
|
||||||
S_0286C4_VS_EXPORT_COUNT(rshader->noutput - 2),
|
S_0286C4_VS_EXPORT_COUNT(nparams - 1),
|
||||||
0xFFFFFFFF, NULL);
|
0xFFFFFFFF, NULL);
|
||||||
r600_pipe_state_add_reg(rstate,
|
r600_pipe_state_add_reg(rstate,
|
||||||
R_028860_SQ_PGM_RESOURCES_VS,
|
R_028860_SQ_PGM_RESOURCES_VS,
|
||||||
|
@@ -216,6 +216,13 @@
|
|||||||
#define S_008C28_NUM_LS_STACK_ENTRIES(x) (((x) & 0xFFF) << 16)
|
#define S_008C28_NUM_LS_STACK_ENTRIES(x) (((x) & 0xFFF) << 16)
|
||||||
#define G_008C28_NUM_LS_STACK_ENTRIES(x) (((x) >> 16) & 0xFFF)
|
#define G_008C28_NUM_LS_STACK_ENTRIES(x) (((x) >> 16) & 0xFFF)
|
||||||
#define C_008C28_NUM_LS_STACK_ENTRIES(x) 0xF000FFFF
|
#define C_008C28_NUM_LS_STACK_ENTRIES(x) 0xF000FFFF
|
||||||
|
#define R_008E2C_SQ_LDS_RESOURCE_MGMT 0x00008E2C
|
||||||
|
#define S_008E2C_NUM_PS_LDS(x) (((x) & 0xFFFF) << 0)
|
||||||
|
#define G_008E2C_NUM_PS_LDS(x) (((x) >> 0) & 0xFFFF)
|
||||||
|
#define C_008E2C_NUM_PS_LDS(x) 0x0000FFFF
|
||||||
|
#define S_008E2C_NUM_LS_LDS(x) (((x) & 0xFFFF) << 16)
|
||||||
|
#define G_008E2C_NUM_LS_LDS(x) (((x) >> 16) & 0xFFFF)
|
||||||
|
#define C_008E2C_NUM_LS_LDS(x) 0xFFFF0000
|
||||||
|
|
||||||
#define R_008CF0_SQ_MS_FIFO_SIZES 0x00008CF0
|
#define R_008CF0_SQ_MS_FIFO_SIZES 0x00008CF0
|
||||||
#define S_008CF0_CACHE_FIFO_SIZE(x) (((x) & 0xFF) << 0)
|
#define S_008CF0_CACHE_FIFO_SIZE(x) (((x) & 0xFF) << 0)
|
||||||
|
@@ -94,6 +94,8 @@ struct r600_tiling_info *r600_get_tiling_info(struct radeon *radeon);
|
|||||||
unsigned r600_get_clock_crystal_freq(struct radeon *radeon);
|
unsigned r600_get_clock_crystal_freq(struct radeon *radeon);
|
||||||
unsigned r600_get_minor_version(struct radeon *radeon);
|
unsigned r600_get_minor_version(struct radeon *radeon);
|
||||||
unsigned r600_get_num_backends(struct radeon *radeon);
|
unsigned r600_get_num_backends(struct radeon *radeon);
|
||||||
|
unsigned r600_get_num_tile_pipes(struct radeon *radeon);
|
||||||
|
unsigned r600_get_backend_map(struct radeon *radeon);
|
||||||
|
|
||||||
/* r600_bo.c */
|
/* r600_bo.c */
|
||||||
struct r600_bo;
|
struct r600_bo;
|
||||||
@@ -211,14 +213,21 @@ struct r600_reloc {
|
|||||||
*/
|
*/
|
||||||
struct r600_query {
|
struct r600_query {
|
||||||
u64 result;
|
u64 result;
|
||||||
/* The kind of query. Currently only OQ is supported. */
|
/* The kind of query */
|
||||||
unsigned type;
|
unsigned type;
|
||||||
/* How many results have been written, in dwords. It's incremented
|
/* Offset of the first result for current query */
|
||||||
* after end_query and flush. */
|
unsigned results_start;
|
||||||
unsigned num_results;
|
/* Offset of the next free result after current query data */
|
||||||
/* if we've flushed the query */
|
unsigned results_end;
|
||||||
|
/* Size of the result */
|
||||||
|
unsigned result_size;
|
||||||
|
/* Count of new queries started in one stream without flushing */
|
||||||
|
unsigned queries_emitted;
|
||||||
|
/* State flags */
|
||||||
unsigned state;
|
unsigned state;
|
||||||
/* The buffer where query results are stored. */
|
/* The buffer where query results are stored. It's used as a ring,
|
||||||
|
* data blocks for current query are stored sequentially from
|
||||||
|
* results_start to results_end, with wrapping on the buffer end */
|
||||||
struct r600_bo *buffer;
|
struct r600_bo *buffer;
|
||||||
unsigned buffer_size;
|
unsigned buffer_size;
|
||||||
/* linked list of queries */
|
/* linked list of queries */
|
||||||
@@ -228,6 +237,7 @@ struct r600_query {
|
|||||||
#define R600_QUERY_STATE_STARTED (1 << 0)
|
#define R600_QUERY_STATE_STARTED (1 << 0)
|
||||||
#define R600_QUERY_STATE_ENDED (1 << 1)
|
#define R600_QUERY_STATE_ENDED (1 << 1)
|
||||||
#define R600_QUERY_STATE_SUSPENDED (1 << 2)
|
#define R600_QUERY_STATE_SUSPENDED (1 << 2)
|
||||||
|
#define R600_QUERY_STATE_FLUSHED (1 << 3)
|
||||||
|
|
||||||
#define R600_CONTEXT_DRAW_PENDING (1 << 0)
|
#define R600_CONTEXT_DRAW_PENDING (1 << 0)
|
||||||
#define R600_CONTEXT_DST_CACHES_DIRTY (1 << 1)
|
#define R600_CONTEXT_DST_CACHES_DIRTY (1 << 1)
|
||||||
@@ -245,6 +255,7 @@ struct r600_context {
|
|||||||
unsigned pm4_cdwords;
|
unsigned pm4_cdwords;
|
||||||
unsigned pm4_dirty_cdwords;
|
unsigned pm4_dirty_cdwords;
|
||||||
unsigned ctx_pm4_ndwords;
|
unsigned ctx_pm4_ndwords;
|
||||||
|
unsigned init_dwords;
|
||||||
unsigned nreloc;
|
unsigned nreloc;
|
||||||
unsigned creloc;
|
unsigned creloc;
|
||||||
struct r600_reloc *reloc;
|
struct r600_reloc *reloc;
|
||||||
@@ -252,6 +263,7 @@ struct r600_context {
|
|||||||
u32 *pm4;
|
u32 *pm4;
|
||||||
struct list_head query_list;
|
struct list_head query_list;
|
||||||
unsigned num_query_running;
|
unsigned num_query_running;
|
||||||
|
unsigned backend_mask;
|
||||||
struct list_head fenced_bo;
|
struct list_head fenced_bo;
|
||||||
unsigned max_db; /* for OQ */
|
unsigned max_db; /* for OQ */
|
||||||
unsigned num_dest_buffers;
|
unsigned num_dest_buffers;
|
||||||
@@ -273,6 +285,7 @@ struct r600_draw {
|
|||||||
struct r600_bo *indices;
|
struct r600_bo *indices;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void r600_get_backend_mask(struct r600_context *ctx);
|
||||||
int r600_context_init(struct r600_context *ctx, struct radeon *radeon);
|
int r600_context_init(struct r600_context *ctx, struct radeon *radeon);
|
||||||
void r600_context_fini(struct r600_context *ctx);
|
void r600_context_fini(struct r600_context *ctx);
|
||||||
void r600_context_pipe_state_set(struct r600_context *ctx, struct r600_pipe_state *state);
|
void r600_context_pipe_state_set(struct r600_context *ctx, struct r600_pipe_state *state);
|
||||||
@@ -293,7 +306,7 @@ boolean r600_context_query_result(struct r600_context *ctx,
|
|||||||
void r600_query_begin(struct r600_context *ctx, struct r600_query *query);
|
void r600_query_begin(struct r600_context *ctx, struct r600_query *query);
|
||||||
void r600_query_end(struct r600_context *ctx, struct r600_query *query);
|
void r600_query_end(struct r600_context *ctx, struct r600_query *query);
|
||||||
void r600_context_queries_suspend(struct r600_context *ctx);
|
void r600_context_queries_suspend(struct r600_context *ctx);
|
||||||
void r600_context_queries_resume(struct r600_context *ctx);
|
void r600_context_queries_resume(struct r600_context *ctx, boolean flushed);
|
||||||
void r600_query_predication(struct r600_context *ctx, struct r600_query *query, int operation,
|
void r600_query_predication(struct r600_context *ctx, struct r600_query *query, int operation,
|
||||||
int flag_wait);
|
int flag_wait);
|
||||||
void r600_context_emit_fence(struct r600_context *ctx, struct r600_bo *fence,
|
void r600_context_emit_fence(struct r600_context *ctx, struct r600_bo *fence,
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user