Compare commits
483 Commits
android-x8
...
7.10
Author | SHA1 | Date | |
---|---|---|---|
|
a96360a951 | ||
|
c8f2665f02 | ||
|
1e279de4b0 | ||
|
7c3cf50d99 | ||
|
7b8e7f4450 | ||
|
db3d21d676 | ||
|
0a838d1d32 | ||
|
94a1fe1fd8 | ||
|
f2ef6036e8 | ||
|
f81058140f | ||
|
3871c55a18 | ||
|
7a75fcd657 | ||
|
e041956cb2 | ||
|
c286f7870f | ||
|
4e2a5d013d | ||
|
cd73c06eed | ||
|
7424f9c1fe | ||
|
cb6dd6c399 | ||
|
85b965b462 | ||
|
459012b148 | ||
|
bd40e7cebd | ||
|
9370ddde85 | ||
|
26ab29cf79 | ||
|
a312052add | ||
|
6128739b75 | ||
|
bc46f0c969 | ||
|
1ad06c7a25 | ||
|
bdc518e341 | ||
|
338e8e5f14 | ||
|
5255e844af | ||
|
45f369c74d | ||
|
39ad7dc7b1 | ||
|
2d0fd07037 | ||
|
edbaa9e856 | ||
|
a40eed0a10 | ||
|
2b7ee98588 | ||
|
ff07695e19 | ||
|
fc23cc06af | ||
|
195e15559e | ||
|
22bf0ec991 | ||
|
3f3d199121 | ||
|
ac28843c1a | ||
|
c78ac563f1 | ||
|
b6c601a5e8 | ||
|
27f6db0f38 | ||
|
c1da25aede | ||
|
05d9a4ab1c | ||
|
b0625f8486 | ||
|
b10abac70e | ||
|
7d30582c91 | ||
|
08c47e4851 | ||
|
39865f5c46 | ||
|
6586475f37 | ||
|
b9f2eefd1d | ||
|
48a3b03409 | ||
|
29164dcac8 | ||
|
f2901d3f98 | ||
|
3b89e1c0e6 | ||
|
8a78e6cf80 | ||
|
788dda53cf | ||
|
cc5d54e797 | ||
|
59b147c6a3 | ||
|
5ec931eb7d | ||
|
9c7e1b054d | ||
|
3d5e6c4c1e | ||
|
bbebbdd3e7 | ||
|
e5408efb20 | ||
|
8f8d7d0803 | ||
|
addc396d18 | ||
|
8ea26afd8b | ||
|
ca9ab0a6a1 | ||
|
1a79cde8fa | ||
|
4d934efa19 | ||
|
aba30d8fbe | ||
|
4e18ad9d71 | ||
|
12537b0baf | ||
|
891ce8aaa8 | ||
|
0f11d05e81 | ||
|
1605525111 | ||
|
d92931467d | ||
|
ee004cc681 | ||
|
60291c0798 | ||
|
56930eccb2 | ||
|
6ad7721500 | ||
|
5e1199ff12 | ||
|
a10cba3a7f | ||
|
f8b4ca7e47 | ||
|
9e1f40c182 | ||
|
4d08ca20ba | ||
|
fd9a093086 | ||
|
c7e0c21d42 | ||
|
dc8599cdf1 | ||
|
25134f877b | ||
|
27fb522faa | ||
|
3436f5d82f | ||
|
77be3db45c | ||
|
1d58f70e56 | ||
|
bb8336f82c | ||
|
d264ed0b48 | ||
|
e78908d152 | ||
|
1d779672fa | ||
|
0ab66b7d0b | ||
|
b47825e626 | ||
|
7609af4228 | ||
|
ef96b6148b | ||
|
4d9becfb1f | ||
|
157f4a9d28 | ||
|
5f8729859e | ||
|
db17691e28 | ||
|
43ad25baa7 | ||
|
9e5da5894d | ||
|
10bf7aeeeb | ||
|
e6c031c440 | ||
|
6850899f44 | ||
|
c6b6688f88 | ||
|
831c7b1768 | ||
|
06b04a2a64 | ||
|
23d9baa5a1 | ||
|
1b8df41f75 | ||
|
224ed851ed | ||
|
b531e75cc5 | ||
|
eaadbacb5c | ||
|
9286d0ddd3 | ||
|
c66ffcf663 | ||
|
4a14f76c69 | ||
|
068926aaea | ||
|
a5c0969087 | ||
|
b6bca28113 | ||
|
348779a1fc | ||
|
abf9217ea4 | ||
|
0309089e5a | ||
|
a8032483ec | ||
|
8963295b1b | ||
|
3371397b1a | ||
|
b8c6362389 | ||
|
73f4273b86 | ||
|
6d35d0bda6 | ||
|
29c2e1f3f7 | ||
|
dca5ddf471 | ||
|
ff77a69ae3 | ||
|
510fb3269e | ||
|
62fad6cb30 | ||
|
0f02b4253d | ||
|
773ea1a234 | ||
|
41d5dd4a6e | ||
|
2c83c28608 | ||
|
d4a82b3146 | ||
|
8d539264ca | ||
|
c13a7748de | ||
|
f814e28e6d | ||
|
7e325d5e62 | ||
|
4373f6b9ad | ||
|
1f8c5611a2 | ||
|
bf9a469cb6 | ||
|
f890661a9a | ||
|
b31425aae9 | ||
|
6c7a5d52ee | ||
|
3c405079fd | ||
|
1fb1012bf1 | ||
|
b0866f6cfd | ||
|
c6a68814b4 | ||
|
3831ba6dd1 | ||
|
812e11f4b4 | ||
|
0c69a2fda5 | ||
|
6e08ceb77d | ||
|
50dccfdbef | ||
|
22035e3d84 | ||
|
62b75d889c | ||
|
7c9d66c60f | ||
|
1068b7f9ed | ||
|
e17ac39d38 | ||
|
33129c040b | ||
|
ed5c9ae016 | ||
|
06422ce0d2 | ||
|
cd2cf02139 | ||
|
f3a21be95e | ||
|
5a3f1aee64 | ||
|
0372db6fa8 | ||
|
868ca30235 | ||
|
b39603e008 | ||
|
73f7453318 | ||
|
a947d9be61 | ||
|
ed4aa47d42 | ||
|
5bbaf1992c | ||
|
71b06c63ce | ||
|
7fcaf9ae80 | ||
|
d464f5908f | ||
|
78fa94f091 | ||
|
1ae33556dd | ||
|
c21a44463a | ||
|
386921cf45 | ||
|
310d85c492 | ||
|
55d86204f3 | ||
|
da8c178c8b | ||
|
9dec904ef3 | ||
|
856a661d2f | ||
|
f0231a44b9 | ||
|
a28cef5e6e | ||
|
1efb7428ed | ||
|
b8a077cee0 | ||
|
9ebb904bbd | ||
|
7cf7c966f8 | ||
|
7628e489e4 | ||
|
d525a1b468 | ||
|
d59da64817 | ||
|
ea26cc8696 | ||
|
954787cee1 | ||
|
75fd54e7bd | ||
|
8453dce232 | ||
|
e48b0b9032 | ||
|
3a1b2bb372 | ||
|
38f0e9b651 | ||
|
aaf7c86b30 | ||
|
c3fcd8af4f | ||
|
b5d293e4fd | ||
|
3a02a2bf25 | ||
|
3ed9054cc5 | ||
|
9a5de0895e | ||
|
2aebe261aa | ||
|
d7c64d7c36 | ||
|
68cdea9fb2 | ||
|
565caabf40 | ||
|
e4fefc3c32 | ||
|
b0a7492aeb | ||
|
8aabb1bc99 | ||
|
a67a0a0589 | ||
|
a6263f2738 | ||
|
7e158e85bd | ||
|
2fc2553261 | ||
|
355601812a | ||
|
8a27f9845b | ||
|
e160c815c2 | ||
|
a9d3cce8f3 | ||
|
a62d3534e1 | ||
|
f9f01e40c7 | ||
|
c9ded4d418 | ||
|
022f1110dd | ||
|
bb90087eda | ||
|
e0f6193024 | ||
|
2171197559 | ||
|
ec4822a316 | ||
|
f13e45d45d | ||
|
4fef0bc115 | ||
|
8bf3a4f05e | ||
|
aa180f2786 | ||
|
52a274a4c0 | ||
|
d7d55ab841 | ||
|
bba05bc699 | ||
|
bcdb23ef8a | ||
|
5db7ee0fde | ||
|
614eff1fc6 | ||
|
89576ea75b | ||
|
0ca5a1593d | ||
|
ec162447a5 | ||
|
8b91cf406a | ||
|
ab58b21634 | ||
|
d92cc2f45f | ||
|
a527411469 | ||
|
f9e01af6c3 | ||
|
0a92301c80 | ||
|
3274681f80 | ||
|
96917f1f0c | ||
|
1d35ffc541 | ||
|
15e6d05650 | ||
|
d3c1fb7775 | ||
|
6428ca32c0 | ||
|
281d3fe3c0 | ||
|
88f24e2598 | ||
|
7992b59087 | ||
|
ac06d610fb | ||
|
9d1b17059d | ||
|
525c5458f5 | ||
|
3a4ab56f32 | ||
|
654ee9f282 | ||
|
f012e8832b | ||
|
1328fbdefb | ||
|
d9d1b8dab0 | ||
|
21e44e947a | ||
|
2d1b154f73 | ||
|
76366ee06b | ||
|
d3d2be2de1 | ||
|
8402caf752 | ||
|
f0fa040d94 | ||
|
b847da213e | ||
|
e7d1b5489e | ||
|
6c7adb0822 | ||
|
917c44aa52 | ||
|
49a190bb0e | ||
|
71eee987d9 | ||
|
0ed0670fa9 | ||
|
f3f0e30e8e | ||
|
a835f586c6 | ||
|
d91ec5322a | ||
|
739d099d43 | ||
|
dd34903790 | ||
|
d15da60f3b | ||
|
63733afc48 | ||
|
2fa6aef594 | ||
|
24797bd375 | ||
|
0ec3ec8086 | ||
|
5a4be4455e | ||
|
cdcad7bb31 | ||
|
a23311e5c7 | ||
|
89fb9a94bb | ||
|
7739b6b54c | ||
|
9d54f6bf83 | ||
|
1a6154e022 | ||
|
5b844eff0a | ||
|
fef0bf65a7 | ||
|
5ad00ef7a3 | ||
|
60675572f7 | ||
|
6b7b2af43a | ||
|
9a9bd548b0 | ||
|
d5a1325f81 | ||
|
0555e04aaa | ||
|
cc1636b6db | ||
|
995edd4c0a | ||
|
546aade286 | ||
|
77e3c82ad1 | ||
|
5c1e361b8e | ||
|
72f90dc3ee | ||
|
6fb448c314 | ||
|
2e226777a4 | ||
|
4e5b184a61 | ||
|
511e5e30a5 | ||
|
281e3bee4b | ||
|
ea4df94d61 | ||
|
92a619b43f | ||
|
b54faf45dc | ||
|
3370f9b606 | ||
|
bdcdcb5c18 | ||
|
b51b8db450 | ||
|
32786b8a33 | ||
|
7bb3fe50c2 | ||
|
c4b626018a | ||
|
a9eec42b0e | ||
|
0ee9a6698d | ||
|
10f6e286d5 | ||
|
b2b1b1f596 | ||
|
757a49cafd | ||
|
9016ab24b8 | ||
|
c597334ef2 | ||
|
84b857ef73 | ||
|
a80384d7f6 | ||
|
092b6f2ca8 | ||
|
c8e504eec5 | ||
|
acc7369285 | ||
|
2d22c508c7 | ||
|
aba5e843dd | ||
|
4e0d6cf7ba | ||
|
2afa3f47af | ||
|
219b8b672d | ||
|
b90223f4cf | ||
|
e15ad414d0 | ||
|
a702858139 | ||
|
8f3eef1206 | ||
|
0a0b0c8f7e | ||
|
05ff61dc6b | ||
|
aff4170849 | ||
|
d81615ee19 | ||
|
4ee68e2d47 | ||
|
27ef465276 | ||
|
50d40edb8c | ||
|
c2b721bc0e | ||
|
45be27d09b | ||
|
6fded6d29d | ||
|
ea96167f2f | ||
|
b8062cdf4b | ||
|
0e809808b1 | ||
|
b28a90c9a7 | ||
|
38c3d8a828 | ||
|
36009724fd | ||
|
50a82a8601 | ||
|
7a3f869a47 | ||
|
c18447bf97 | ||
|
5768445eaf | ||
|
fbd98eae6a | ||
|
14950c50e1 | ||
|
ca8e49f303 | ||
|
f2f89f7b18 | ||
|
3285d1dc57 | ||
|
9ba827100a | ||
|
002ce07abe | ||
|
949c24862a | ||
|
34c58f6d46 | ||
|
ece71d605b | ||
|
0fc205152c | ||
|
4434614844 | ||
|
e7b12f2a0e | ||
|
b11623a5df | ||
|
bbf7cc1f2a | ||
|
4e8f123f14 | ||
|
f5c1346932 | ||
|
ebcb7f27e5 | ||
|
52586ceb2b | ||
|
438fc337d4 | ||
|
7b6c5804f0 | ||
|
29bcf0a940 | ||
|
fa61cb3609 | ||
|
db4e1c44b2 | ||
|
d4ae5f3411 | ||
|
1feecbdb00 | ||
|
8847205976 | ||
|
8604d91ae4 | ||
|
bba89b3793 | ||
|
f4f3274ba3 | ||
|
7b1200901a | ||
|
9dfa27c924 | ||
|
b71bff0100 | ||
|
8cfce0c643 | ||
|
9d3573c905 | ||
|
8d2c910e66 | ||
|
f0c2420917 | ||
|
83b39afc46 | ||
|
adb49457c6 | ||
|
9da0e20e46 | ||
|
07342c84a9 | ||
|
3501fd8594 | ||
|
4febfee3b7 | ||
|
d3fa3c60f2 | ||
|
4ad4c700bf | ||
|
aa196d047c | ||
|
747279c21c | ||
|
0092793735 | ||
|
96685a662f | ||
|
7e3c1f221a | ||
|
1e58915062 | ||
|
1ca240ec2d | ||
|
d7e5620d6e | ||
|
0bb9a3215e | ||
|
962ef4cada | ||
|
a8e34dd8c2 | ||
|
4fd0d556fc | ||
|
8a908819cc | ||
|
6af8eac21b | ||
|
0874c37195 | ||
|
0874356dbf | ||
|
3232019b67 | ||
|
fdf27dfdf8 | ||
|
10757e86f2 | ||
|
d62a383d53 | ||
|
c043c5ae00 | ||
|
da4ecaef8a | ||
|
9a6d7d7eb8 | ||
|
1988cba847 | ||
|
8953ac2570 | ||
|
639f595fa0 | ||
|
604009fa77 | ||
|
7e856fd043 | ||
|
fd2b11e433 | ||
|
662afccabe | ||
|
7d0c7d52e4 | ||
|
b7c187df9a | ||
|
55fb7269f0 | ||
|
0dc5b97ddd | ||
|
612e26e82c | ||
|
ed9eed088e | ||
|
ccff6dcf0d | ||
|
c547e230bb | ||
|
32218e4cc8 | ||
|
7db3e66ba8 | ||
|
ad523d08b5 | ||
|
7d38797ac9 | ||
|
d50e8b2276 | ||
|
0e50c21e24 | ||
|
13c45c590b | ||
|
528fa8ce32 | ||
|
b13a2e640f | ||
|
3fb18d6775 | ||
|
b4e8ec3a57 | ||
|
c3ca384e71 | ||
|
af5f7b3260 | ||
|
121079bd67 | ||
|
7055068eea | ||
|
15753cf54d | ||
|
ef534f3838 | ||
|
834cc8e501 | ||
|
cfcc2ef587 | ||
|
30f25a1019 | ||
|
14a9153a32 | ||
|
8fab1c0e2e | ||
|
cdd4f04f80 | ||
|
9946f15d30 |
@@ -1,3 +0,0 @@
|
||||
ifneq ($(TARGET_SIMULATOR),true)
|
||||
include $(call all-subdir-makefiles)
|
||||
endif
|
31
Makefile
31
Makefile
@@ -180,7 +180,7 @@ ultrix-gcc:
|
||||
|
||||
# Rules for making release tarballs
|
||||
|
||||
VERSION=7.10-devel
|
||||
VERSION=7.10.3
|
||||
DIRECTORY = Mesa-$(VERSION)
|
||||
LIB_NAME = MesaLib-$(VERSION)
|
||||
GLUT_NAME = MesaGLUT-$(VERSION)
|
||||
@@ -197,6 +197,9 @@ MAIN_FILES = \
|
||||
$(DIRECTORY)/configure.ac \
|
||||
$(DIRECTORY)/acinclude.m4 \
|
||||
$(DIRECTORY)/aclocal.m4 \
|
||||
$(DIRECTORY)/SConstruct \
|
||||
$(DIRECTORY)/common.py \
|
||||
$(DIRECTORY)/scons/*py \
|
||||
$(DIRECTORY)/bin/config.guess \
|
||||
$(DIRECTORY)/bin/config.sub \
|
||||
$(DIRECTORY)/bin/install-sh \
|
||||
@@ -209,7 +212,6 @@ MAIN_FILES = \
|
||||
$(DIRECTORY)/docs/README.* \
|
||||
$(DIRECTORY)/docs/RELNOTES* \
|
||||
$(DIRECTORY)/docs/*.spec \
|
||||
$(DIRECTORY)/include/GL/internal/glcore.h \
|
||||
$(DIRECTORY)/include/GL/gl.h \
|
||||
$(DIRECTORY)/include/GL/glext.h \
|
||||
$(DIRECTORY)/include/GL/gl_mangle.h \
|
||||
@@ -224,6 +226,7 @@ MAIN_FILES = \
|
||||
$(DIRECTORY)/include/GL/vms_x_fix.h \
|
||||
$(DIRECTORY)/include/GL/wglext.h \
|
||||
$(DIRECTORY)/include/GL/wmesa.h \
|
||||
$(DIRECTORY)/include/c99/*.h \
|
||||
$(DIRECTORY)/src/glsl/Makefile \
|
||||
$(DIRECTORY)/src/glsl/Makefile.template \
|
||||
$(DIRECTORY)/src/glsl/SConscript \
|
||||
@@ -233,7 +236,9 @@ MAIN_FILES = \
|
||||
$(DIRECTORY)/src/glsl/glcpp/*.[chly] \
|
||||
$(DIRECTORY)/src/glsl/glcpp/README \
|
||||
$(DIRECTORY)/src/Makefile \
|
||||
$(DIRECTORY)/src/SConscript \
|
||||
$(DIRECTORY)/src/mesa/Makefile* \
|
||||
$(DIRECTORY)/src/mesa/SConscript \
|
||||
$(DIRECTORY)/src/mesa/sources.mak \
|
||||
$(DIRECTORY)/src/mesa/descrip.mms \
|
||||
$(DIRECTORY)/src/mesa/gl.pc.in \
|
||||
@@ -259,6 +264,7 @@ MAIN_FILES = \
|
||||
$(DIRECTORY)/src/mesa/tnl_dd/*.[ch] \
|
||||
$(DIRECTORY)/src/mesa/tnl_dd/imm/*.[ch] \
|
||||
$(DIRECTORY)/src/mesa/tnl_dd/imm/NOTES.imm \
|
||||
$(DIRECTORY)/src/mesa/vf/*.[ch] \
|
||||
$(DIRECTORY)/src/mesa/drivers/Makefile \
|
||||
$(DIRECTORY)/src/mesa/drivers/beos/*.cpp \
|
||||
$(DIRECTORY)/src/mesa/drivers/beos/Makefile \
|
||||
@@ -271,6 +277,9 @@ MAIN_FILES = \
|
||||
$(DIRECTORY)/src/mesa/drivers/osmesa/descrip.mms \
|
||||
$(DIRECTORY)/src/mesa/drivers/osmesa/osmesa.def \
|
||||
$(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/*/*.def \
|
||||
$(DIRECTORY)/src/mesa/drivers/x11/Makefile \
|
||||
@@ -307,9 +316,9 @@ MAPI_FILES = \
|
||||
$(DIRECTORY)/src/mapi/mapi/sources.mak \
|
||||
$(DIRECTORY)/src/mapi/mapi/*.[ch] \
|
||||
$(DIRECTORY)/src/mapi/vgapi/Makefile \
|
||||
$(DIRECTORY)/src/mapi/vgapi/SConscript \
|
||||
$(DIRECTORY)/src/mapi/vgapi/vgapi.csv \
|
||||
$(DIRECTORY)/src/mapi/vgapi/vg.pc.in \
|
||||
$(DIRECTORY)/src/mapi/vgapi/*.h
|
||||
$(DIRECTORY)/src/mapi/vgapi/vg.pc.in
|
||||
|
||||
EGL_FILES = \
|
||||
$(DIRECTORY)/include/KHR/*.h \
|
||||
@@ -320,6 +329,7 @@ EGL_FILES = \
|
||||
$(DIRECTORY)/src/egl/*/*.[ch] \
|
||||
$(DIRECTORY)/src/egl/*/*/Makefile \
|
||||
$(DIRECTORY)/src/egl/*/*/*.[ch] \
|
||||
$(DIRECTORY)/src/egl/main/SConscript \
|
||||
$(DIRECTORY)/src/egl/main/*.pc.in \
|
||||
$(DIRECTORY)/src/egl/main/*.def
|
||||
|
||||
@@ -344,12 +354,24 @@ GALLIUM_FILES = \
|
||||
$(DIRECTORY)/src/gallium/*/*/*/*.[ch] \
|
||||
$(DIRECTORY)/src/gallium/*/*/*/*.py
|
||||
|
||||
APPLE_DRI_FILES = \
|
||||
$(DIRECTORY)/src/glx/apple/Makefile \
|
||||
$(DIRECTORY)/src/glx/apple/*.[ch] \
|
||||
$(DIRECTORY)/src/glx/apple/*.tcl \
|
||||
$(DIRECTORY)/src/glx/apple/apple_exports.list \
|
||||
$(DIRECTORY)/src/glx/apple/GL_aliases \
|
||||
$(DIRECTORY)/src/glx/apple/GL_extensions \
|
||||
$(DIRECTORY)/src/glx/apple/GL_noop \
|
||||
$(DIRECTORY)/src/glx/apple/GL_promoted \
|
||||
$(DIRECTORY)/src/glx/apple/specs/*.spec \
|
||||
$(DIRECTORY)/src/glx/apple/specs/*.tm
|
||||
|
||||
DRI_FILES = \
|
||||
$(DIRECTORY)/include/GL/internal/dri_interface.h \
|
||||
$(DIRECTORY)/include/GL/internal/sarea.h \
|
||||
$(DIRECTORY)/src/glx/Makefile \
|
||||
$(DIRECTORY)/src/glx/*.[ch] \
|
||||
$(APPLE_DRI_FILES) \
|
||||
$(DIRECTORY)/src/mesa/drivers/dri/Makefile \
|
||||
$(DIRECTORY)/src/mesa/drivers/dri/Makefile.template \
|
||||
$(DIRECTORY)/src/mesa/drivers/dri/dri.pc.in \
|
||||
@@ -395,6 +417,7 @@ GLUT_FILES = \
|
||||
$(DIRECTORY)/include/GL/glut.h \
|
||||
$(DIRECTORY)/include/GL/glutf90.h \
|
||||
$(DIRECTORY)/src/glut/glx/Makefile* \
|
||||
$(DIRECTORY)/src/glut/glx/SConscript \
|
||||
$(DIRECTORY)/src/glut/glx/depend \
|
||||
$(DIRECTORY)/src/glut/glx/glut.pc.in \
|
||||
$(DIRECTORY)/src/glut/glx/*def \
|
||||
|
@@ -34,9 +34,6 @@ LLVM_LIBS = @LLVM_LIBS@
|
||||
GLW_CFLAGS = @GLW_CFLAGS@
|
||||
GLUT_CFLAGS = @GLUT_CFLAGS@
|
||||
|
||||
TALLOC_LIBS = @TALLOC_LIBS@
|
||||
TALLOC_CFLAGS = @TALLOC_CFLAGS@
|
||||
|
||||
# dlopen
|
||||
DLOPEN_LIBS = @DLOPEN_LIBS@
|
||||
|
||||
@@ -56,6 +53,10 @@ INSTALL = @INSTALL@
|
||||
PYTHON2 = @PYTHON2@
|
||||
PYTHON_FLAGS = -t -O -O
|
||||
|
||||
# Flex and Bison for GLSL compiler
|
||||
FLEX = @FLEX@
|
||||
BISON = @BISON@
|
||||
|
||||
# Library names (base name)
|
||||
GL_LIB = GL
|
||||
GLU_LIB = GLU
|
||||
|
@@ -31,21 +31,23 @@ CXXFLAGS = -ggdb3 -Os -Wall -fno-strict-aliasing \
|
||||
-I$(INSTALL_DIR)/include -I$(X11_DIR)/include $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
|
||||
|
||||
# Library names (actual file names)
|
||||
GL_LIB_NAME = libGL.dylib
|
||||
GLU_LIB_NAME = libGLU.dylib
|
||||
GLUT_LIB_NAME = libglut.dylib
|
||||
GLW_LIB_NAME = libGLw.dylib
|
||||
OSMESA_LIB_NAME = libOSMesa.dylib
|
||||
GL_LIB_NAME = lib$(GL_LIB).dylib
|
||||
GLU_LIB_NAME = lib$(GLU_LIB).dylib
|
||||
GLUT_LIB_NAME = lib$(GLUT_LIB).dylib
|
||||
GLW_LIB_NAME = lib$(GLW_LIB).dylib
|
||||
OSMESA_LIB_NAME = lib$(OSMESA_LIB).dylib
|
||||
VG_LIB_NAME = lib$(VG_LIB).dylib
|
||||
|
||||
# globs used to install the lib and all symlinks
|
||||
GL_LIB_GLOB = libGL.*dylib
|
||||
GLU_LIB_GLOB = libGLU.*dylib
|
||||
GLUT_LIB_GLOB = libglut.*dylib
|
||||
GLW_LIB_GLOB = libGLw.*dylib
|
||||
OSMESA_LIB_GLOB = libOSMesa.*dylib
|
||||
GL_LIB_GLOB = lib$(GL_LIB).*dylib
|
||||
GLU_LIB_GLOB = lib$(GLU_LIB).*dylib
|
||||
GLUT_LIB_GLOB = lib$(GLUT_LIB).*dylib
|
||||
GLW_LIB_GLOB = lib$(GLW_LIB).*dylib
|
||||
OSMESA_LIB_GLOB = lib$(OSMESA_LIB).*dylib
|
||||
VG_LIB_GLOB = lib$(VG_LIB).*dylib
|
||||
|
||||
GL_LIB_DEPS = -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXext -lm -lpthread
|
||||
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
|
||||
OSMESA_LIB_DEPS =
|
||||
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
|
||||
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXmu -lXi -lXext
|
||||
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXt
|
||||
@@ -57,3 +59,5 @@ GLU_DIRS = sgi
|
||||
DRIVER_DIRS = osmesa
|
||||
#DRIVER_DIRS = dri
|
||||
DRI_DIRS = swrast
|
||||
GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad failover
|
||||
#GALLIUM_DRIVERS_DIRS += llvmpipe
|
||||
|
@@ -10,7 +10,7 @@ CONFIG_NAME = default
|
||||
# Version info
|
||||
MESA_MAJOR=7
|
||||
MESA_MINOR=10
|
||||
MESA_TINY=0
|
||||
MESA_TINY=3
|
||||
MESA_VERSION = $(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY)
|
||||
|
||||
# external projects. This should be useless now that we use libdrm.
|
||||
@@ -37,6 +37,8 @@ MKLIB_OPTIONS =
|
||||
MKDEP = makedepend
|
||||
MKDEP_OPTIONS = -fdepend
|
||||
MAKE = make
|
||||
FLEX = flex
|
||||
BISON = bison
|
||||
|
||||
# Use MINSTALL for installing libraries, INSTALL for everything else
|
||||
MINSTALL = $(SHELL) $(TOP)/bin/minstall
|
||||
@@ -82,9 +84,6 @@ GLESv1_CM_LIB_GLOB = $(GLESv1_CM_LIB_NAME)*
|
||||
GLESv2_LIB_GLOB = $(GLESv2_LIB_NAME)*
|
||||
VG_LIB_GLOB = $(VG_LIB_NAME)*
|
||||
|
||||
TALLOC_LIBS = `pkg-config --libs talloc`
|
||||
TALLOC_CFLAGS = `pkg-config --cflags talloc`
|
||||
|
||||
# Optional assembly language optimization files for libGL
|
||||
MESA_ASM_SOURCES =
|
||||
|
||||
@@ -119,7 +118,7 @@ EGL_CLIENT_APIS = $(GL_LIB)
|
||||
|
||||
# Library dependencies
|
||||
#EXTRA_LIB_PATH ?=
|
||||
GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread $(TALLOC_LIBS)
|
||||
GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread
|
||||
EGL_LIB_DEPS = $(EXTRA_LIB_PATH) -ldl -lpthread
|
||||
OSMESA_LIB_DEPS = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
|
||||
GLU_LIB_DEPS = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm
|
||||
|
@@ -45,7 +45,7 @@ EXTRA_LIB_PATH=-L/usr/X11R6/lib
|
||||
|
||||
LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm)
|
||||
LIBDRM_LIB = $(shell pkg-config --libs libdrm)
|
||||
DRI_LIB_DEPS = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl -ltalloc $(LIBDRM_LIB)
|
||||
DRI_LIB_DEPS = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
|
||||
GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
|
||||
-lm -lpthread -ldl $(LIBDRM_LIB)
|
||||
|
||||
|
@@ -41,4 +41,4 @@ else
|
||||
endif
|
||||
|
||||
LD = g++
|
||||
GL_LIB_DEPS = $(LLVM_LDFLAGS) $(LLVM_LIBS) $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread -ltalloc -lstdc++ -ludis86
|
||||
GL_LIB_DEPS = $(LLVM_LDFLAGS) $(LLVM_LIBS) $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread -lstdc++ -ludis86
|
||||
|
28
configure.ac
28
configure.ac
@@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR([bin])
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
dnl Versions for external dependencies
|
||||
LIBDRM_REQUIRED=2.4.15
|
||||
LIBDRM_REQUIRED=2.4.24
|
||||
LIBDRM_RADEON_REQUIRED=2.4.17
|
||||
DRI2PROTO_REQUIRED=2.1
|
||||
GLPROTO_REQUIRED=1.4.11
|
||||
@@ -38,6 +38,12 @@ if test "x$MKDEP" = "x"; then
|
||||
AC_MSG_ERROR([makedepend is required to build Mesa])
|
||||
fi
|
||||
|
||||
AC_PATH_PROG([FLEX], [flex])
|
||||
test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
|
||||
|
||||
AC_PATH_PROG([BISON], [bison])
|
||||
test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
|
||||
|
||||
dnl Our fallback install-sh is a symlink to minstall. Use the existing
|
||||
dnl configuration in that case.
|
||||
AC_PROG_INSTALL
|
||||
@@ -572,10 +578,6 @@ xno)
|
||||
;;
|
||||
esac
|
||||
|
||||
PKG_CHECK_MODULES([TALLOC], [talloc])
|
||||
AC_SUBST([TALLOC_LIBS])
|
||||
AC_SUBST([TALLOC_CFLAGS])
|
||||
|
||||
dnl
|
||||
dnl Driver specific build directories
|
||||
dnl
|
||||
@@ -714,8 +716,8 @@ xlib)
|
||||
GL_PC_LIB_PRIV="$GL_LIB_DEPS"
|
||||
GL_PC_CFLAGS="$X11_INCLUDES"
|
||||
fi
|
||||
GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
|
||||
GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
|
||||
GL_LIB_DEPS="$GL_LIB_DEPS $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
|
||||
# and empty the libraries for libGL
|
||||
@@ -964,7 +966,7 @@ if test "$mesa_driver" = dri -o "$mesa_driver" = no; then
|
||||
fi
|
||||
|
||||
# put all the necessary libs together
|
||||
DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS $TALLOC_LIBS"
|
||||
DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
|
||||
fi
|
||||
AC_SUBST([DRI_DIRS])
|
||||
AC_SUBST([EXPAT_INCLUDES])
|
||||
@@ -1040,12 +1042,12 @@ case "$DRIVER_DIRS" in
|
||||
*osmesa*)
|
||||
# only link libraries with osmesa if shared
|
||||
if test "$enable_static" = no; then
|
||||
OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
|
||||
OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
|
||||
else
|
||||
OSMESA_LIB_DEPS=""
|
||||
fi
|
||||
OSMESA_MESA_DEPS=""
|
||||
OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
|
||||
OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
|
||||
;;
|
||||
esac
|
||||
AC_SUBST([OSMESA_LIB_DEPS])
|
||||
@@ -1352,7 +1354,7 @@ if test "x$enable_gallium_egl" = xauto; then
|
||||
enable_gallium_egl=$enable_egl
|
||||
;;
|
||||
*)
|
||||
enable_gallium_egl=no
|
||||
enable_gallium_egl=$enable_openvg
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
@@ -1467,10 +1469,6 @@ AC_SUBST([EGL_CLIENT_APIS])
|
||||
|
||||
if test "x$HAVE_ST_EGL" = xyes; then
|
||||
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
|
||||
# define GLX_DIRECT_RENDERING even when the driver is not dri
|
||||
if test "x$mesa_driver" != xdri -a "x$driglx_direct" = xyes; then
|
||||
DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$HAVE_ST_XORG" = xyes; then
|
||||
|
@@ -62,6 +62,7 @@ a:visited {
|
||||
<LI><A HREF="perf.html" target="MainFrame">Performance Tips</A>
|
||||
<LI><A HREF="extensions.html" target="MainFrame">Mesa Extensions</A>
|
||||
<LI><A HREF="mangling.html" target="MainFrame">Function Name Mangling</A>
|
||||
<LI><A href="llvmpipe.html" target="MainFrame">Gallium llvmpipe driver</A>
|
||||
</ul>
|
||||
|
||||
<b>Developer Topics</b>
|
||||
|
@@ -21,76 +21,52 @@ When a new release is coming, release candidates (betas) may be found
|
||||
|
||||
|
||||
<p>
|
||||
Mesa is distributed in several parts:
|
||||
The Mesa package is named MesaLib-x.y.z.{tar.bz2, tar.gz, zip} where x.y.z
|
||||
is the version. There are three types of compressed archives.
|
||||
</p>
|
||||
<ul>
|
||||
<li><b>MesaLib-x.y.z</b> - the main Mesa library source code, drivers
|
||||
and documentation.
|
||||
</li>
|
||||
<li><b>MesaDemos-x.y.z</b> - OpenGL demonstration and test programs.
|
||||
Most of the programs require GLUT (either the
|
||||
<a href="http://www.opengl.org/resources/libraries/glut"
|
||||
target="_parent">original GLUT by Mark Kilgard</a> or
|
||||
<a href="http://freeglut.sourceforge.net" target="_parent">freeglut</a> or
|
||||
<a href="http://openglut.sourceforge.net" target="_parent">OpenGLUT</a>).
|
||||
</li>
|
||||
<li><b>MesaGLUT-x.y.z</b> - Mark Kilgard's GLUT, easily compiled and used
|
||||
with Mesa. Plus, other implementation of GLUT for DOS, OS/2, BeOS, etc.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
If you're not interested in running the demos, you'll only need the first
|
||||
package.
|
||||
There's also the MesaGLUT-x.y.z.{tar.bz2, tar.gz, zip} packages which
|
||||
contain Mark Kilgard's GLUT library.
|
||||
This is optional.
|
||||
Most Linux distributions include an implementation of GLUT (such as freeglut).
|
||||
</p>
|
||||
<p>
|
||||
In the past, the Mesa demos collection was distributed as
|
||||
MesaDemos-x.y.z.{tar.bz2, tar.gz, zip}.
|
||||
Now, the
|
||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/demos/" target="_parent">
|
||||
Mesa demos</a> are distributed separately.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If you're new to this and not sure what you're doing, grab all three packages.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The packages are available in .tar.gz, .tar.bz2 and .zip formats.
|
||||
Other sites might offer additional package formats.
|
||||
</p>
|
||||
|
||||
<H1>Unpacking</H1>
|
||||
|
||||
<p>
|
||||
All the packages should be in the same directory prior to unpacking.
|
||||
To unpack .tar.gz files:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>To unpack .tar.gz files:
|
||||
<pre>
|
||||
tar zxf MesaLib-X.Y.tar.gz
|
||||
tar zxf MesaDemos-X.Y.tar.gz
|
||||
tar zxf MesaGLUT-X.Y.tar.gz
|
||||
tar zxf MesaLib-x.y.z.tar.gz
|
||||
</pre>
|
||||
or
|
||||
<pre>
|
||||
gzcat MesaLib-X.Y.tar.gz | tar xf -
|
||||
gzcat MesaDemos-X.Y.tar.gz | tar xf -
|
||||
gzcat MesaGLUT-X.Y.tar.gz | tar xf -
|
||||
gzcat MesaLib-x.y.z.tar.gz | tar xf -
|
||||
</pre>
|
||||
or
|
||||
<pre>
|
||||
gunzip MesaLib-X.Y.tar.gz ; tar xf MesaLib-X.Y.tar
|
||||
gunzip MesaDemos-X.Y.tar.gz ; tar xf MesaDemos-X.Y.tar
|
||||
gunzip MesaGLUT-X.Y.tar.gz ; tar xf MesaGLUT-X.Y.tar
|
||||
gunzip MesaLib-x.y.z.tar.gz ; tar xf MesaLib-x.y.z.tar
|
||||
</pre>
|
||||
<li>To unpack .tar.bz2 files:
|
||||
<p>
|
||||
To unpack .tar.bz2 files:
|
||||
</p>
|
||||
<pre>
|
||||
bunzip2 -c MesaLib-X.Y.tar.gz | tar xf -
|
||||
bunzip2 -c MesaDemos-X.Y.tar.gz | tar xf -
|
||||
bunzip2 -c MesaGLUT-X.Y.tar.gz | tar xf -
|
||||
bunzip2 -c MesaLib-x.y.z.tar.gz | tar xf -
|
||||
</pre>
|
||||
<li>To unpack .zip files:
|
||||
<p>
|
||||
To unpack .zip files:
|
||||
</p>
|
||||
<pre>
|
||||
unzip MesaLib-X.Y.zip
|
||||
unzip MesaDemos-X.Y.zip
|
||||
unzip MesaGLUT-X.Y.zip
|
||||
unzip MesaLib-x.y.z.zip
|
||||
</pre>
|
||||
</ul>
|
||||
|
||||
|
||||
<h1>Contents</h1>
|
||||
@@ -106,22 +82,13 @@ bin/ - shell scripts for making shared libraries, etc
|
||||
docs/ - documentation
|
||||
src/ - source code for libraries
|
||||
src/mesa - sources for the main Mesa library and device drivers
|
||||
src/gallium - sources for Gallium and Gallium drivers
|
||||
src/glu - libGLU source code
|
||||
src/glx - sources for building libGL with full GLX and DRI support
|
||||
src/glw - Xt/Motif/OpenGL widget code
|
||||
</pre>
|
||||
|
||||
If you downloaded and unpacked the MesaDemos.X.Y package:
|
||||
|
||||
<pre>
|
||||
progs/demos - original Mesa demos
|
||||
progs/xdemos - GLX OpenGL/Mesa demos
|
||||
progs/redbook - examples from the OpenGL Programming Guide
|
||||
progs/samples - examples from SGI
|
||||
progs/images/ - image files
|
||||
</pre>
|
||||
|
||||
If you downloaded and unpacked the MesaGLUT.X.Y package:
|
||||
If you downloaded and unpacked the MesaGLUT.x.y.z package:
|
||||
<pre>
|
||||
src/glut - GLUT library source code
|
||||
</pre>
|
||||
|
@@ -19,10 +19,7 @@ API entry points and helper functions for use by the drivers. Drivers are
|
||||
dynamically loaded by the main library and most of the EGL API calls are
|
||||
directly dispatched to the drivers.</p>
|
||||
|
||||
<p>The driver in use decides the window system to support. For drivers that
|
||||
support hardware rendering, there are usually multiple drivers supporting the
|
||||
same window system. Each one of of them supports a certain range of graphics
|
||||
cards.</p>
|
||||
<p>The driver in use decides the window system to support.</p>
|
||||
|
||||
<h2>Build EGL</h2>
|
||||
|
||||
@@ -86,16 +83,19 @@ select the right platforms automatically.</p>
|
||||
|
||||
<li><code>--enable-gles1</code> and <code>--enable-gles2</code>
|
||||
|
||||
<p>These options enable OpenGL ES support in OpenGL. The result is
|
||||
one big library that supports multiple APIs.</p>
|
||||
<p>These options enable OpenGL ES support in OpenGL. The result is one big
|
||||
internal library that supports multiple APIs.</p>
|
||||
|
||||
</li>
|
||||
|
||||
<li><code>--enable-gles-overlay</code>
|
||||
|
||||
<p>This option enables OpenGL ES as separate libraries. This is an alternative
|
||||
approach to enable OpenGL ES. It is only supported by
|
||||
<code>egl_gallium</code>.</p>
|
||||
<p>This option enables OpenGL ES as separate internal libraries. This is an
|
||||
alternative approach to enable OpenGL ES.</p>
|
||||
|
||||
<p>This is only supported by <code>egl_gallium</code>. For systems using DRI
|
||||
drivers, <code>--enable-gles1</code> and <code>--enable-gles2</code> are
|
||||
suggested instead as all drivers will benefit.</p>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -134,6 +134,16 @@ colon-separated directories where the main library will look for drivers, in
|
||||
addition to the default directory. This variable is ignored for setuid/setgid
|
||||
binaries.</p>
|
||||
|
||||
<p>This variable is usually set to test an uninstalled build. For example, one
|
||||
may set</p>
|
||||
|
||||
<pre>
|
||||
$ export LD_LIBRARY_PATH=$mesa/lib
|
||||
$ export EGL_DRIVERS_PATH=$mesa/lib/egl
|
||||
</pre>
|
||||
|
||||
<p>to test a build without installation</p>
|
||||
|
||||
</li>
|
||||
|
||||
<li><code>EGL_DRIVER</code>
|
||||
@@ -180,8 +190,10 @@ variable to true forces the use of software rendering.</p>
|
||||
<li><code>egl_dri2</code>
|
||||
|
||||
<p>This driver supports both <code>x11</code> and <code>drm</code> platforms.
|
||||
It functions as a DRI2 driver loader. For <code>x11</code> support, it talks
|
||||
to the X server directly using (XCB-)DRI2 protocol.</p>
|
||||
It functions as a DRI driver loader. For <code>x11</code> support, it talks to
|
||||
the X server directly using (XCB-)DRI2 protocol.</p>
|
||||
|
||||
<p>This driver can share DRI drivers with <code>libGL</code>.</p>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -191,6 +203,10 @@ to the X server directly using (XCB-)DRI2 protocol.</p>
|
||||
hardwares supported by Gallium3D. It is the only driver that supports OpenVG.
|
||||
The supported platforms are X11, DRM, FBDEV, and GDI.</p>
|
||||
|
||||
<p>This driver comes with its own hardware drivers
|
||||
(<code>pipe_<hw></code>) and client API modules
|
||||
(<code>st_<api></code>).</p>
|
||||
|
||||
</li>
|
||||
|
||||
<li><code>egl_glx</code>
|
||||
@@ -202,6 +218,21 @@ is not available in GLX or GLX extensions.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Packaging</h2>
|
||||
|
||||
<p>The ABI between the main library and its drivers are not stable. Nor is
|
||||
there a plan to stabilize it at the moment. Of the EGL drivers,
|
||||
<code>egl_gallium</code> has its own hardware drivers and client API modules.
|
||||
They are considered internal to <code>egl_gallium</code> and there is also no
|
||||
stable ABI between them. These should be kept in mind when packaging for
|
||||
distribution.</p>
|
||||
|
||||
<p>Generally, <code>egl_dri2</code> is preferred over <code>egl_gallium</code>
|
||||
when the system already has DRI drivers. As <code>egl_gallium</code> is loaded
|
||||
before <code>egl_dri2</code> when both are available, <code>egl_gallium</code>
|
||||
may either be disabled with <code>--disable-gallium-egl</code> or packaged
|
||||
separately.</p>
|
||||
|
||||
<h2>Developers</h2>
|
||||
|
||||
<p>The sources of the main library and the classic drivers can be found at
|
||||
|
@@ -9,16 +9,38 @@
|
||||
<H1>Environment Variables</H1>
|
||||
|
||||
<p>
|
||||
Mesa supports the following environment variables:
|
||||
Normally, no environment variables need to be set. Most of the environment
|
||||
variables used by Mesa/Gallium are for debugging purposes, but they can
|
||||
sometimes be useful for debugging end-user issues.
|
||||
</p>
|
||||
|
||||
|
||||
<H2>LibGL environment variables</H2>
|
||||
|
||||
<ul>
|
||||
<li>LIBGL_DEBUG - If defined debug information will be printed to stderr.
|
||||
If set to 'verbose' additional information will be printed.
|
||||
<li>LIBGL_DRIVERS_PATH - colon-separated list of paths to search for DRI drivers
|
||||
<li>LIBGL_ALWAYS_INDIRECT - forces an indirect rendering context/connection.
|
||||
<li>LIBGL_ALWAYS_SOFTWARE - if set, always use software rendering
|
||||
<li>LIBGL_NO_DRAWARRAYS - if set do not use DrawArrays GLX protocol (for debugging)
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<H2>Core Mesa environment variables</H2>
|
||||
|
||||
<ul>
|
||||
<li>MESA_NO_ASM - if set, disables all assembly language optimizations
|
||||
<li>MESA_NO_MMX - if set, disables Intel MMX optimizations
|
||||
<li>MESA_NO_3DNOW - if set, disables AMD 3DNow! optimizations
|
||||
<li>MESA_NO_SSE - if set, disables Intel SSE optimizations
|
||||
<li>MESA_DEBUG - if set, error messages are printed to stderr.
|
||||
If the value of MESA_DEBUG is "FP" floating point arithmetic errors will
|
||||
generate exceptions.
|
||||
<li>MESA_DEBUG - if set, error messages are printed to stderr. For example,
|
||||
if the application generates a GL_INVALID_ENUM error, a corresponding error
|
||||
message indicating where the error occured, and possibly why, will be
|
||||
printed to stderr.<br>
|
||||
If the value of MESA_DEBUG is 'FP' floating point arithmetic errors will
|
||||
generate exceptions.
|
||||
<li>MESA_NO_DITHER - if set, disables dithering, overriding glEnable(GL_DITHER)
|
||||
<li>MESA_TEX_PROG - if set, implement conventional texture env modes with
|
||||
fragment programs (intended for developers only)
|
||||
@@ -28,11 +50,14 @@ Setting this variable automatically sets the MESA_TEX_PROG variable as well.
|
||||
<li>MESA_EXTENSION_OVERRIDE - can be used to enable/disable extensions.
|
||||
A value such as "GL_EXT_foo -GL_EXT_bar" will enable the GL_EXT_foo extension
|
||||
and disable the GL_EXT_bar extension.
|
||||
<li>MESA_GLSL - <a href="shading.html#envvars">shading language options</a>
|
||||
<li>MESA_GLSL - <a href="shading.html#envvars">shading language compiler options</a>
|
||||
</ul>
|
||||
|
||||
|
||||
<H2>Mesa Xlib driver environment variables</H2>
|
||||
|
||||
<p>
|
||||
The following are only applicable to the Xlib software driver.
|
||||
The following are only applicable to the Mesa Xlib software driver.
|
||||
See the <A HREF="xlibdriver.html">Xlib software driver page</A> for details.
|
||||
</p>
|
||||
<ul>
|
||||
@@ -51,9 +76,8 @@ See the <A HREF="xlibdriver.html">Xlib software driver page</A> for details.
|
||||
</ul>
|
||||
|
||||
|
||||
<p>
|
||||
These environment variables are for the Intel i945/i965 drivers:
|
||||
</p>
|
||||
<h2>i945/i965 driver environment variables (non-Gallium)</h2>
|
||||
|
||||
<ul>
|
||||
<li>INTEL_STRICT_CONFORMANCE - if set to 1, enable sw fallbacks to improve
|
||||
OpenGL conformance. If set to 2, always use software rendering.
|
||||
@@ -62,17 +86,71 @@ These environment variables are for the Intel i945/i965 drivers:
|
||||
</ul>
|
||||
|
||||
|
||||
<p>
|
||||
These environment variables are for the Radeon R300 driver:
|
||||
</p>
|
||||
<h2>Radeon R300 driver environment variables (non-Gallium)</h2>
|
||||
|
||||
<ul>
|
||||
<li>R300_NO_TCL - if set, disable hardware-accelerated Transform/Clip/Lighting.
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>EGL environment variables</h2>
|
||||
|
||||
<p>
|
||||
Mesa EGL supports different sets of environment variables. See the
|
||||
<a href="egl.html">Mesa EGL</a> page for the details.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Gallium environment variables</h2>
|
||||
|
||||
<ul>
|
||||
<li>GALLIUM_PRINT_OPTIONS - if non-zero, print all the Gallium environment
|
||||
variables which are used, and their current values.
|
||||
<li>GALLIUM_NOSSE - if non-zero, do not use SSE runtime code generation for
|
||||
shader execution
|
||||
<li>GALLIUM_NOPPC - if non-zero, do not use PPC runtime code generation for
|
||||
shader execution
|
||||
<li>GALLIUM_DUMP_CPU - if non-zero, print information about the CPU on start-up
|
||||
<li>TGSI_PRINT_SANITY - if set, do extra sanity checking on TGSI shaders and
|
||||
print any errors to stderr.
|
||||
<LI>DRAW_FSE - ???
|
||||
<LI>DRAW_NO_FSE - ???
|
||||
<li>DRAW_USE_LLVM - if set to zero, the draw module will not use LLVM to execute
|
||||
shaders, vertex fetch, etc.
|
||||
</ul>
|
||||
|
||||
<h3>Softpipe driver environment variables</h3>
|
||||
<ul>
|
||||
<li>SOFTPIPE_DUMP_FS - if set, the softpipe driver will print fragment shaders
|
||||
to stderr
|
||||
<li>SOFTPIPE_DUMP_GS - if set, the softpipe driver will print geometry shaders
|
||||
to stderr
|
||||
<li>SOFTPIPE_NO_RAST - if set, rasterization is no-op'd. For profiling purposes.
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>LLVMpipe driver environment variables</h3>
|
||||
<ul>
|
||||
<li>LP_NO_RAST - if set LLVMpipe will no-op rasterization
|
||||
<li>LP_DEBUG - a comma-separated list of debug options is acceptec. See the
|
||||
source code for details.
|
||||
<li>LP_PERF - a comma-separated list of options to selectively no-op various
|
||||
parts of the driver. See the source code for details.
|
||||
<li>LP_NUM_THREADS - an integer indicating how many threads to use for rendering.
|
||||
Zero turns of threading completely. The default value is the number of CPU
|
||||
cores present.
|
||||
</ul>
|
||||
|
||||
|
||||
<p>
|
||||
Other Gallium drivers have their own environment variables. These may change
|
||||
frequently so the source code should be consulted for details.
|
||||
</p>
|
||||
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
@@ -12,16 +12,16 @@
|
||||
<ol>
|
||||
<li><a href="#unix-x11">Unix / X11</a>
|
||||
<ul>
|
||||
<li><a href="#prereq">Prerequisites for DRI and hardware acceleration</a>
|
||||
<li><a href="#prereq-general">General prerequisites for building</a>
|
||||
<li><a href="#prereq-dri">Prerequisites for DRI and hardware acceleration</a>
|
||||
<li><a href="#autoconf">Building with autoconf</a>
|
||||
<li><a href="#traditional">Building with traditional Makefiles</a>
|
||||
<li><a href="#libs">The Libraries</a>
|
||||
<li><a href="#demos">Running the demos
|
||||
<li><a href="#install">Installing the header and library files
|
||||
<li><a href="#pkg-config">Building OpenGL programs with pkg-config
|
||||
</ul>
|
||||
<li><a href="#windows">Windows</a>
|
||||
<li><a href="#scons">SCons</a>
|
||||
<li><a href="#scons">Building with SCons</a>
|
||||
<li><a href="#other">Other</a>
|
||||
</ol>
|
||||
<br>
|
||||
@@ -31,8 +31,22 @@
|
||||
<H2>1. Unix/X11 Compilation and Installation</H1>
|
||||
|
||||
|
||||
<a name="prereq">
|
||||
<h3>1.1 Prerequisites for DRI and hardware acceleration</h3>
|
||||
<a name="prereq-general">
|
||||
<h3>1.1 General prerequisites for building</h3>
|
||||
|
||||
<ul>
|
||||
<li>lex / yacc - for building the GLSL compiler.
|
||||
On Linux systems, flex and bison are used.
|
||||
Versions 2.5.35 and 2.4.1, respectively, (or later) should work.
|
||||
</li>
|
||||
<li>python - Python is needed for building the Gallium components.
|
||||
Version 2.6.4 or later should work.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<a name="prereq-dri">
|
||||
<h3>1.2 Prerequisites for DRI and hardware acceleration</h3>
|
||||
|
||||
<p>
|
||||
The following are required for DRI-based hardware acceleration with Mesa:
|
||||
@@ -49,7 +63,7 @@ version 2.4.15 or later
|
||||
|
||||
|
||||
<a name="autoconf">
|
||||
<h3>1.2 Building with Autoconf</h3>
|
||||
<h3>1.3 Building with Autoconf</h3>
|
||||
|
||||
<p>
|
||||
Mesa may be <a href="autoconf.html">built using autoconf</a>.
|
||||
@@ -59,7 +73,7 @@ If that fails the traditional Mesa build system is available.
|
||||
|
||||
|
||||
<a name="traditional">
|
||||
<h3>1.3 Building with traditional Makefiles</h3>
|
||||
<h3>1.4 Building with traditional Makefiles</h3>
|
||||
|
||||
<p>
|
||||
The traditional Mesa build system is based on a collection of pre-defined
|
||||
@@ -126,7 +140,7 @@ Later, if you want to rebuild for a different configuration run
|
||||
|
||||
|
||||
<a name="libs">
|
||||
<h3>1.4 The libraries</h3>
|
||||
<h3>1.5 The libraries</h3>
|
||||
|
||||
<p>
|
||||
When compilation has finished, look in the top-level <code>lib/</code>
|
||||
@@ -185,81 +199,11 @@ If you built the DRI hardware drivers, you'll also see the DRI drivers:
|
||||
-rwxr-xr-x 1 brian users 10997120 Jul 21 12:13 unichrome_dri.so
|
||||
</pre>
|
||||
|
||||
|
||||
<a name="demos">
|
||||
<h3>1.5 Running the demos</h3>
|
||||
|
||||
<p>
|
||||
If you downloaded/unpacked the MesaDemos-x.y.z.tar.gz archive or
|
||||
obtained Mesa from CVS, the <b>progs/</b> directory will contain a
|
||||
bunch of demonstration programs.
|
||||
If you built with Gallium support, look in lib/gallium/ for Gallium-based
|
||||
versions of libGL and device drivers.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Before running a demo, you'll probably have to set two environment variables
|
||||
to indicate where the libraries are located. For example:
|
||||
<p>
|
||||
<blockquote>
|
||||
<b>cd lib/</b>
|
||||
<br>
|
||||
<b>export LD_LIBRARY_PATH=${PWD}</b>
|
||||
<br>
|
||||
<b>export LIBGL_DRIVERS_PATH=${PWD}</b> (if using DRI drivers)
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
Next, change to the Mesa/demos/ directory:
|
||||
</p>
|
||||
<blockquote>
|
||||
<b>cd ../progs/demos</b>
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
Run a demo such as gears:
|
||||
</p>
|
||||
<blockquote>
|
||||
<b>./gears</b>
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
If this doesn't work, try the <b>Mesa/progs/xdemos/glxinfo</b> program
|
||||
and see that it prints the expected Mesa version number.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If you're using Linux or a similar OS, verify that the demo program is
|
||||
being linked with the proper library files:
|
||||
</p>
|
||||
<blockquote>
|
||||
<b>ldd gears</b>
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
You should see something like this:
|
||||
</p>
|
||||
<pre>
|
||||
libglut.so.3 => /home/brian/Mesa/lib/libglut.so.3 (0x40013000)
|
||||
libGLU.so.1 => /home/brian/Mesa/lib/libGLU.so.1 (0x40051000)
|
||||
libGL.so.1 => /home/brian/Mesa/lib/libGL.so.1 (0x400e0000)
|
||||
libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
|
||||
libm.so.6 => /lib/i686/libm.so.6 (0x403da000)
|
||||
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x403fc000)
|
||||
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x404da000)
|
||||
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x404f1000)
|
||||
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40543000)
|
||||
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4054b000)
|
||||
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x405fd000)
|
||||
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40605000)
|
||||
libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40613000)
|
||||
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
|
||||
libdl.so.2 => /lib/libdl.so.2 (0x40644000)
|
||||
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40647000)
|
||||
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40650000)
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Retrace your steps if this doesn't look right.
|
||||
</p>
|
||||
|
||||
|
||||
<a name="install">
|
||||
|
@@ -1,74 +1,116 @@
|
||||
LLVMPIPE -- a fork of softpipe that employs LLVM for code generation.
|
||||
<HTML>
|
||||
|
||||
<TITLE>llvmpipe</TITLE>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css"></head>
|
||||
|
||||
<BODY>
|
||||
|
||||
<H1>Introduction</H1>
|
||||
|
||||
<p>
|
||||
The Gallium llvmpipe driver is a software rasterizer that uses LLVM to
|
||||
do runtime code generation.
|
||||
Shaders, point/line/triangle rasterization and vertex processing are
|
||||
implemented with LLVM IR which is translated to x86 or x86-64 machine
|
||||
code.
|
||||
Also, the driver is multithreaded to take advantage of multiple CPU cores
|
||||
(up to 8 at this time).
|
||||
It's the fastest software rasterizer for Mesa.
|
||||
</p>
|
||||
|
||||
|
||||
Requirements
|
||||
============
|
||||
<h1>Requirements</h1>
|
||||
|
||||
- A x86 or amd64 processor. 64bit mode is preferred.
|
||||
|
||||
<dl>
|
||||
<dt>An x86 or amd64 processor. 64-bit mode is preferred.</dt>
|
||||
<dd>
|
||||
<p>
|
||||
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
|
||||
likely is that you ran into underperforming, buggy, or incomplete code.
|
||||
|
||||
</p>
|
||||
<p>
|
||||
See /proc/cpuinfo to know what your CPU supports.
|
||||
|
||||
- LLVM 2.6 (or later)
|
||||
|
||||
</p>
|
||||
</dd>
|
||||
<dt>LLVM. Version 2.8 recommended. 2.6 or later required.</dt>
|
||||
<dd>
|
||||
<p>
|
||||
<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
|
||||
fail when trying to emit AVX instructions. This was fixed in LLVM 2.9.
|
||||
</p>
|
||||
<p>
|
||||
For Linux, on a recent Debian based distribution do:
|
||||
|
||||
</p>
|
||||
<pre>
|
||||
aptitude install llvm-dev
|
||||
</pre>
|
||||
For a RPM-based distribution do:
|
||||
</p>
|
||||
<pre>
|
||||
yum install llvm-devel
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
For Windows download pre-built MSVC 9.0 or MinGW binaries from
|
||||
http://people.freedesktop.org/~jrfonseca/llvm/ and set the LLVM environment
|
||||
variable to the extracted path.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
For MSVC there are two set of binaries: llvm-x.x-msvc32mt.7z and
|
||||
llvm-x.x-msvc32mtd.7z .
|
||||
</p>
|
||||
|
||||
<p>
|
||||
You have to set the LLVM=/path/to/llvm-x.x-msvc32mtd env var when passing
|
||||
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>
|
||||
</dd>
|
||||
|
||||
The version of LLVM from SVN ("2.7svn") from mid-March 2010 is pretty
|
||||
stable and has some features not in version 2.6.
|
||||
<dt>scons (optional)</dt>
|
||||
</dl>
|
||||
|
||||
- scons (optional)
|
||||
|
||||
- udis86, http://udis86.sourceforge.net/ (optional). My personal repository
|
||||
supports more opcodes which haven't been merged upstream yet:
|
||||
|
||||
git clone git://anongit.freedesktop.org/~jrfonseca/udis86
|
||||
cd udis86
|
||||
./autogen.sh
|
||||
./configure --with-pic
|
||||
make
|
||||
sudo make install
|
||||
|
||||
|
||||
Building
|
||||
========
|
||||
<h1>Building</h1>
|
||||
|
||||
To build everything on Linux invoke scons as:
|
||||
|
||||
<pre>
|
||||
scons build=debug libgl-xlib
|
||||
</pre>
|
||||
|
||||
Alternatively, you can build it with GNU make, if you prefer, by invoking it as
|
||||
|
||||
<pre>
|
||||
make linux-llvm
|
||||
</pre>
|
||||
|
||||
but the rest of these instructions assume that scons is used.
|
||||
|
||||
For windows is everything the except except the winsys:
|
||||
|
||||
<pre>
|
||||
scons build=debug libgl-gdi
|
||||
</pre>
|
||||
|
||||
Using
|
||||
=====
|
||||
|
||||
<h1>Using</h1>
|
||||
|
||||
On Linux, building will create a drop-in alternative for libGL.so into
|
||||
|
||||
<pre>
|
||||
build/foo/gallium/targets/libgl-xlib/libGL.so
|
||||
</pre>
|
||||
or
|
||||
<pre>
|
||||
lib/gallium/libGL.so
|
||||
</pre>
|
||||
|
||||
To use it set the LD_LIBRARY_PATH environment variable accordingly.
|
||||
|
||||
@@ -81,26 +123,21 @@ replacing the native ICD driver, but it's quite an advanced usage, so if you
|
||||
need to ask, don't even try it.
|
||||
|
||||
|
||||
Profiling
|
||||
=========
|
||||
<h1>Profiling</h1>
|
||||
|
||||
To profile llvmpipe you should pass the options
|
||||
|
||||
<pre>
|
||||
scons build=profile <same-as-before>
|
||||
</pre>
|
||||
|
||||
This will ensure that frame pointers are used both in C and JIT functions, and
|
||||
that no tail call optimizations are done by gcc.
|
||||
|
||||
|
||||
To better profile JIT code you'll need to build LLVM with oprofile integration.
|
||||
|
||||
source_dir=$PWD/llvm-2.6
|
||||
build_dir=$source_dir/build/profile
|
||||
install_dir=$source_dir-profile
|
||||
|
||||
mkdir -p "$build_dir"
|
||||
cd "$build_dir" && \
|
||||
$source_dir/configure \
|
||||
<pre>
|
||||
./configure \
|
||||
--prefix=$install_dir \
|
||||
--enable-optimized \
|
||||
--disable-profiling \
|
||||
@@ -111,43 +148,57 @@ To better profile JIT code you'll need to build LLVM with oprofile integration.
|
||||
make -C "$build_dir" install
|
||||
|
||||
find "$install_dir/lib" -iname '*.a' -print0 | xargs -0 strip --strip-debug
|
||||
</pre>
|
||||
|
||||
The you should define
|
||||
|
||||
<pre>
|
||||
export LLVM=/path/to/llvm-2.6-profile
|
||||
</pre>
|
||||
|
||||
and rebuild.
|
||||
|
||||
|
||||
Unit testing
|
||||
============
|
||||
<h1>Unit testing</h1>
|
||||
|
||||
<p>
|
||||
Building will also create several unit tests in
|
||||
build/linux-???-debug/gallium/drivers/llvmpipe:
|
||||
</p>
|
||||
|
||||
- lp_test_blend: blending
|
||||
- lp_test_conv: SIMD vector conversion
|
||||
- lp_test_format: pixel unpacking/packing
|
||||
</ul>
|
||||
<li> lp_test_blend: blending
|
||||
<li> lp_test_conv: SIMD vector conversion
|
||||
<li> lp_test_format: pixel unpacking/packing
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
Some of this tests can output results and benchmarks to a tab-separated-file
|
||||
for posterior analysis, e.g.:
|
||||
|
||||
</p>
|
||||
<pre>
|
||||
build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend -o blend.tsv
|
||||
</pre>
|
||||
|
||||
|
||||
Development Notes
|
||||
=================
|
||||
<h1>Development Notes</h1>
|
||||
|
||||
- When looking to this code by the first time start in lp_state_fs.c, and
|
||||
<ul>
|
||||
<li>
|
||||
When looking to this code by the first time start in lp_state_fs.c, and
|
||||
then skim through the lp_bld_* functions called in there, and the comments
|
||||
at the top of the lp_bld_*.c functions.
|
||||
|
||||
- The driver-independent parts of the LLVM / Gallium code are found in
|
||||
</li>
|
||||
<li>
|
||||
The driver-independent parts of the LLVM / Gallium code are found in
|
||||
src/gallium/auxiliary/gallivm/. The filenames and function prefixes
|
||||
need to be renamed from "lp_bld_" to something else though.
|
||||
|
||||
- We use LLVM-C bindings for now. They are not documented, but follow the C++
|
||||
</li>
|
||||
<li>
|
||||
We use LLVM-C bindings for now. They are not documented, but follow the C++
|
||||
interfaces very closely, and appear to be complete enough for code
|
||||
generation. See
|
||||
http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html
|
||||
for a stand-alone example. See the llvm-c/Core.h file for reference.
|
||||
</li>
|
||||
</ul>
|
@@ -11,6 +11,46 @@
|
||||
<H1>News</H1>
|
||||
|
||||
|
||||
<h2>June 13, 2011</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes-7.10.3.html">Mesa 7.10.3</a> is released. This is a bug
|
||||
fix release.
|
||||
</p>
|
||||
|
||||
<h2>April 6, 2011</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes-7.10.2.html">Mesa 7.10.2</a> is released. This is a bug
|
||||
fix release.
|
||||
</p>
|
||||
|
||||
<h2>March 2, 2011</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes-7.10.1.html">Mesa 7.10.1</a> is released. This is a bug
|
||||
fix release.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Also, <a href="relnotes-7.9.2.html">Mesa 7.9.2</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>January 7, 2011</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes-7.10.html">Mesa 7.10</a> (final) is released. This is a new
|
||||
development release.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Also, <a href="relnotes-7.9.1.html">Mesa 7.9.1</a> (final) is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>October 4, 2010</h2>
|
||||
|
||||
<p>
|
||||
|
380
docs/relnotes-7.10.1.html
Normal file
380
docs/relnotes-7.10.1.html
Normal file
@@ -0,0 +1,380 @@
|
||||
<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.10.1 Release Notes / March 2, 2011</H1>
|
||||
|
||||
<p>
|
||||
Mesa 7.10.1 is a bug fix release which fixes bugs found since the 7.10 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 7.10.1 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>
|
||||
4b4cee19f3bf16eb78bd4cc278ccf812 MesaLib-7.10.1.tar.gz
|
||||
efe8da4d80c2a5d32a800770b8ce5dfa MesaLib-7.10.1.tar.bz2
|
||||
0fd2b1a025934de3f8cecf9fb9b57f4c MesaLib-7.10.1.zip
|
||||
42beb0f5188d544476c19496f725fa67 MesaGLUT-7.10.1.tar.gz
|
||||
637bb8a20fdad89f7382b4ea83f896e3 MesaGLUT-7.10.1.tar.bz2
|
||||
bdbf3ffb2606d6aa8afabb6c6243b91b MesaGLUT-7.10.1.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None.</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
<p>This list is likely incomplete.</p>
|
||||
<ul>
|
||||
<li>Fix an off-by-one bug in a vsplit assertion.</li>
|
||||
<li>Fix incorrect handling of <tt>layout</tt> qualifier
|
||||
with <tt>in</tt>, <tt>out</tt>, <tt>attribute</tt>, and <tt>varying</tt>.</li>
|
||||
|
||||
<li>Fix an i965 shader bug where the negative absolute value was generated instead of the absolute value of a negation.</li>
|
||||
|
||||
<li>Fix numerous issues handling precision qualifiers in GLSL ES.</li>
|
||||
|
||||
<li>Fixed a few GLX protocol encoder bugs (Julien Cristau)</li>
|
||||
|
||||
<li>Assorted Gallium llvmpipe driver bug fixes</li>
|
||||
|
||||
<li>Assorted Mesa/Gallium state tracker bug fixes</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26795">Bug 26795</a> - gl_FragCoord off by one in Gallium drivers.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29164">Bug 29164</a> - [GLSL 1.20] invariant variable shouldn't be used before declaration</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29823">Bug 29823</a> - GetUniform[if]v busted</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29927">Bug 29927</a> - [glsl2] fail to compile shader with constructor for array of struct type</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30156">Bug 30156</a> - [i965] After updating to Mesa 7.9, Civilization IV starts to show garbage</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31923">Bug 31923</a> - [GLSL 1.20] allowing inconsistent centroid declaration between two vertex shaders</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31925">Bug 31925</a> - [GLSL 1.20] "#pragma STDGL invariant(all)" fail</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32214">Bug 32214</a> - [gles2]no link error happens when missing vertex shader or frag shader</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32375">Bug 32375</a> - [gl gles2] Not able to get the attribute by function glGetVertexAttribfv</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32541">Bug 32541</a> - Segmentation Fault while running an HDR (high dynamic range) rendering demo</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32569">Bug 32569</a> - [gles2] glGetShaderPrecisionFormat not implemented yet</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32695">Bug 32695</a> - [glsl] SIGSEGV glcpp/glcpp-parse.y:833</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32831">Bug 32831</a> - [glsl] division by zero crashes GLSL compiler</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32910">Bug 32910</a> - Keywords 'in' and 'out' not handled properly for GLSL 1.20 shaders</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33219">Bug 33219</a> -[GLSL bisected] implicit sized array triggers segfault in ir_to_mesa_visitor::copy_propagate</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33306">Bug 33306</a> - GLSL integer division by zero crashes GLSL compiler</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33308">Bug 33308</a> -[glsl] ast_to_hir.cpp:3016: virtual ir_rvalue* ast_jump_statement::hir(exec_list*, _mesa_glsl_parse_state*): Assertion `ret != __null' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33316">Bug 33316</a> - uniform array will be allocate one line more and initialize it when it was freed will abort</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33386">Bug 33386</a> - Dubious assembler in read_rgba_span_x86.S</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33388">Bug 33388</a> - Dubious assembler in xform4.S</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33433">Bug 33433</a> - Error in x86-64 API dispatch code.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33507">Bug 33507</a> - [glsl] GLSL preprocessor modulus by zero crash</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=33916">Bug 33916</a> - Compiler accepts reserved operators % and %=</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34030">Bug 34030</a> - [bisected] Starcraft 2: some effects are corrupted or too big</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34047">Bug 34047</a> - Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34114">Bug 34114</a> - Sun Studio build fails due to standard library functions not being in global namespace</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34179">Bug 34179</a> - Nouveau 3D driver: nv50_pc_emit.c:863 assertion error kills Compiz</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34198">Bug 34198</a> - [GLSL] implicit sized array with index 0 used gets assertion</li>
|
||||
|
||||
<li><a href="https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/691653">Ubuntu bug 691653</a> - compiz crashes when using alt-tab (the radeon driver kills it) </li>
|
||||
|
||||
<li><a href="https://bugs.meego.com/show_bug.cgi?id=13005">Meego bug 13005</a> - Graphics GLSL issue lead to camera preview fail on Pinetrail</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.10..mesa-7.10.1
|
||||
</pre>
|
||||
|
||||
<p>Alberto Milone (1):
|
||||
<ul>
|
||||
<li>r600c: add evergreen ARL support.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Brian Paul (21):
|
||||
<ul>
|
||||
<li>draw: Fix an off-by-one bug in a vsplit assertion.</li>
|
||||
<li>docs: add links to 7.9.1 and 7.10 release notes</li>
|
||||
<li>docs: added news item for 7.9.1 and 7.10 release</li>
|
||||
<li>gallivm: work around LLVM 2.6 bug when calling C functions</li>
|
||||
<li>gallivm: fix copy&paste error from previous commit</li>
|
||||
<li>mesa: fix a few format table mistakes, assertions</li>
|
||||
<li>mesa: fix num_draw_buffers==0 in fixed-function fragment program generation</li>
|
||||
<li>mesa: don't assert in GetIntegerIndexed, etc</li>
|
||||
<li>mesa: check for dummy renderbuffer in _mesa_FramebufferRenderbufferEXT()</li>
|
||||
<li>llvmpipe: make sure binning is active when we begin/end a query</li>
|
||||
<li>st/mesa: fix incorrect fragcoord.x translation</li>
|
||||
<li>softpipe: fix off-by-one error in setup_fragcoord_coeff()</li>
|
||||
<li>cso: fix loop bound in cso_set_vertex_samplers()</li>
|
||||
<li>st/mesa: fix incorrect glCopyPixels position on fallback path</li>
|
||||
<li>st/mesa: set renderbuffer _BaseFormat in a few places</li>
|
||||
<li>st/mesa: fix the default case in st_format_datatype()</li>
|
||||
<li>st/mesa: need to translate clear color according to surface's base format</li>
|
||||
<li>docs: update 7.9.2 release notes with Brian's cherry-picks</li>
|
||||
<li>docs: add link to 7.10.1 release notes</li>
|
||||
<li>mesa: implement glGetShaderPrecisionFormat()</li>
|
||||
<li>docs: updated environment variable list</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Bryce Harrington (1):
|
||||
<ul>
|
||||
<li>r300g: Null pointer check for buffer deref in gallium winsys</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Chad Versace (20):
|
||||
<ul>
|
||||
<li>glsl: At link-time, check that globals have matching centroid qualifiers</li>
|
||||
<li>glcpp: Fix segfault when validating macro redefinitions</li>
|
||||
<li>glsl: Fix parser rule for type_specifier</li>
|
||||
<li>glsl: Change default value of ast_type_specifier::precision</li>
|
||||
<li>glsl: Add semantic checks for precision qualifiers</li>
|
||||
<li>glsl: Add support for default precision statements</li>
|
||||
<li>glsl: Remove redundant semantic check in parser</li>
|
||||
<li>glsl: Fix semantic checks on precision qualifiers</li>
|
||||
<li>glsl: Fix segfault due to missing printf argument</li>
|
||||
<li>glsl: Mark 'in' variables at global scope as read-only</li>
|
||||
<li>mesa: Refactor handling of extension strings</li>
|
||||
<li>mesa: Add/remove extensions in extension string</li>
|
||||
<li>mesa: Change dependencies of some OES extension strings</li>
|
||||
<li>mesa: Change OES_point_sprite to depend on ARB_point_sprite</li>
|
||||
<li>mesa: Change OES_standard_derivatives to be stand-alone extension</li>
|
||||
<li>i915: Disable extension OES_standard_derivatives</li>
|
||||
<li>glcpp: Raise error when modulus is zero</li>
|
||||
<li>glsl: Set operators '%' and '%=' to be reserved when GLSL < 1.30</li>
|
||||
<li>glsl: Reinstate constant-folding for division by zero</li>
|
||||
<li>tnl: Add support for datatype GL_FIXED in vertex arrays</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Chia-I Wu (1):
|
||||
<ul>
|
||||
<li>mesa: Add glDepthRangef and glClearDepthf to APIspec.xml.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Christoph Bumiller (1):
|
||||
<ul>
|
||||
<li>nv50,nvc0: do not forget to apply sign mode to saved TGSI inputs</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Cyril Brulebois (1):
|
||||
<ul>
|
||||
<li>Point to bugs.freedesktop.org rather than bugzilla.freedesktop.org</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Dave Airlie (3):
|
||||
<ul>
|
||||
<li>radeon/r200: fix fbo-clearmipmap + gen-teximage</li>
|
||||
<li>radeon: calculate complete texture state inside TFP function</li>
|
||||
<li>radeon: avoid segfault on 3D textures.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Dimitry Andric (4):
|
||||
<ul>
|
||||
<li>mesa: s/movzx/movzbl/</li>
|
||||
<li>mesa: s/movzxw/movzwl/ in read_rgba_span_x86.S</li>
|
||||
<li>glapi: adding @ char before type specifier in glapi_x86.S</li>
|
||||
<li>glapi: add @GOTPCREL relocation type</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Eric Anholt (16):
|
||||
<ul>
|
||||
<li>glsl: Fix the lowering of variable array indexing to not lose write_masks.</li>
|
||||
<li>i965/fs: When producing ir_unop_abs of an operand, strip negate.</li>
|
||||
<li>i965/vs: When MOVing to produce ABS, strip negate of the operand.</li>
|
||||
<li>i965/fs: Do flat shading when appropriate.</li>
|
||||
<li>i965: Avoid double-negation of immediate values in the VS.</li>
|
||||
<li>intel: Make renderbuffer tiling choice match texture tiling choice.</li>
|
||||
<li>i965: Fix dead pointers to fp->Parameters->ParameterValues[] after realloc.</li>
|
||||
<li>docs: Add a relnote for the Civ IV on i965.</li>
|
||||
<li>glapi: Add entrypoints and enums for GL_ARB_ES2_compatibility.</li>
|
||||
<li>mesa: Add extension enable bit for GL_ARB_ES2_compatibility.</li>
|
||||
<li>mesa: Add actual support for glReleaseShaderCompiler from ES2.</li>
|
||||
<li>mesa: Add support for glDepthRangef and glClearDepthf.</li>
|
||||
<li>mesa: Add getters for ARB_ES2_compatibility MAX_*_VECTORS.</li>
|
||||
<li>mesa: Add getter for GL_SHADER_COMPILER with ARB_ES2_compatibility.</li>
|
||||
<li>i965: Fix a bug in i965 compute-to-MRF.</li>
|
||||
<li>i965/fs: Add a helper function for detecting math opcodes.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Fredrik Höglund (1):
|
||||
<ul>
|
||||
<li>st/mesa: fix a regression from cae2bb76</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Ian Romanick (42):
|
||||
<ul>
|
||||
<li>docs: Add 7.10 md5sums</li>
|
||||
<li>glsl: Support the 'invariant(all)' pragma</li>
|
||||
<li>glcpp: Generate an error for division by zero</li>
|
||||
<li>glsl: Add version_string containing properly formatted GLSL version</li>
|
||||
<li>glsl & glcpp: Refresh autogenerated lexer and parser files.</li>
|
||||
<li>glsl: Disallow 'in' and 'out' on globals in GLSL 1.20</li>
|
||||
<li>glsl: Track variable usage, use that to enforce semantics</li>
|
||||
<li>glsl: Allow 'in' and 'out' when 'layout' is also available</li>
|
||||
<li>docs: Initial bits of 7.10.1 release notes</li>
|
||||
<li>mesa: bump version to 7.10.1-devel</li>
|
||||
<li>doc: Update 7.10.1 release notes</li>
|
||||
<li>glsl: Emit errors or warnings when 'layout' is used with 'attribute' or 'varying'</li>
|
||||
<li>docs: Update 7.10.1 release notes</li>
|
||||
<li>glsl: Refresh autogenerated lexer and parser files.</li>
|
||||
<li>glsl: Don't assert when the value returned by a function has no rvalue</li>
|
||||
<li>linker: Set sizes for non-global arrays as well</li>
|
||||
<li>linker: Propagate max_array_access while linking functions</li>
|
||||
<li>docs: Update 7.10.1 release notes</li>
|
||||
<li>mesa: glGetUniform only returns a single element of an array</li>
|
||||
<li>linker: Generate link errors when ES shaders are missing stages</li>
|
||||
<li>mesa: Fix error checks in GetVertexAttrib functions</li>
|
||||
<li>Use C-style system headers in C++ code to avoid issues with std:: namespace</li>
|
||||
<li>docs: Update 7.10.1 release notes</li>
|
||||
<li>glapi: Regenerate for GL_ARB_ES2_compatibility.</li>
|
||||
<li>mesa: Connect glGetShaderPrecisionFormat into the dispatch table</li>
|
||||
<li>i965: Set correct values for range/precision of fragment shader types</li>
|
||||
<li>i915: Set correct values for range/precision of fragment shader types</li>
|
||||
<li>intel: Fix typeos from 3d028024 and 790ff232</li>
|
||||
<li>glsl: Ensure that all GLSL versions are supported in the stand-alone compiler</li>
|
||||
<li>glsl: Reject shader versions not supported by the implementation</li>
|
||||
<li>mesa: Initial size for secondary color array is 3</li>
|
||||
<li>glsl: Finish out the reduce/reduce error fixes</li>
|
||||
<li>glsl: Regenerate compiler and glcpp files from cherry picks</li>
|
||||
<li>linker: Fix off-by-one error implicit array sizing</li>
|
||||
<li>docs: update 7.10.1 release notes with Ian's recent cherry picks</li>
|
||||
<li>i915: Only mark a register as available if all components are written</li>
|
||||
<li>i915: Calculate partial result to temp register first</li>
|
||||
<li>i915: Force lowering of all types of indirect array accesses in the FS</li>
|
||||
<li>docs: Update 7.10.1 with (hopefully) the last of the cherry picks</li>
|
||||
<li>docs: Clean up bug fixes list</li>
|
||||
<li>intel: Remove driver date and related bits from renderer string</li>
|
||||
<li>mesa: set version string to 7.10.1 (final)</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Jian Zhao (1):
|
||||
<ul>
|
||||
<li>mesa: fix an error in uniform arrays in row calculating.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Julien Cristau (3):
|
||||
<ul>
|
||||
<li>glx: fix request lengths</li>
|
||||
<li>glx: fix GLXChangeDrawableAttributesSGIX request</li>
|
||||
<li>glx: fix length of GLXGetFBConfigsSGIX</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Keith Packard (1):
|
||||
<ul>
|
||||
<li>glsl: Eliminate reduce/reduce conflicts in glsl grammar</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Kenneth Graunke (20):
|
||||
<ul>
|
||||
<li>glsl: Expose a public glsl_type::void_type const pointer.</li>
|
||||
<li>glsl: Don't bother unsetting a destructor that was never set.</li>
|
||||
<li>glsl, i965: Remove unnecessary talloc includes.</li>
|
||||
<li>glcpp: Remove use of talloc reference counting.</li>
|
||||
<li>ralloc: Add a fake implementation of ralloc based on talloc.</li>
|
||||
<li>Convert everything from the talloc API to the ralloc API.</li>
|
||||
<li>ralloc: a new MIT-licensed recursive memory allocator.</li>
|
||||
<li>Remove talloc from the make and automake build systems.</li>
|
||||
<li>Remove talloc from the SCons build system.</li>
|
||||
<li>Remove the talloc sources from the Mesa repository.</li>
|
||||
<li>glsl: Fix use of uninitialized values in _mesa_glsl_parse_state ctor.</li>
|
||||
<li>i965/fs: Apply source modifier workarounds to POW as well.</li>
|
||||
<li>i965: Fix shaders that write to gl_PointSize on Sandybridge.</li>
|
||||
<li>i965/fs: Avoid register coalescing away gen6 MATH workarounds.</li>
|
||||
<li>i965/fs: Correctly set up gl_FragCoord.w on Sandybridge.</li>
|
||||
<li>i965: Increase Sandybridge point size clamp.</li>
|
||||
<li>i965/fs: Refactor control flow stack handling.</li>
|
||||
<li>i965: Increase Sandybridge point size clamp in the clip state.</li>
|
||||
<li>glsl: Use reralloc instead of plain realloc.</li>
|
||||
<li>Revert "i965/fs: Correctly set up gl_FragCoord.w on Sandybridge."</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Marek Olšák (4):
|
||||
<ul>
|
||||
<li>docs: fix messed up names with special characters in relnotes-7.10</li>
|
||||
<li>docs: fix messed up names with special characters in relnotes-7.9.1</li>
|
||||
<li>mesa: fix texture3D mipmap generation for UNSIGNED_BYTE_3_3_2</li>
|
||||
<li>st/dri: Track drawable context bindings</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Paulo Zanoni (1):
|
||||
<ul>
|
||||
<li>dri_util: fail driCreateNewScreen if InitScreen is NULL</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Sam Hocevar (2):
|
||||
<ul>
|
||||
<li>docs: add glsl info</li>
|
||||
<li>docs: fix glsl_compiler name</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Tom Fogal (1):
|
||||
<ul>
|
||||
<li>Regenerate gl_mangle.h.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Tom Stellard (2):
|
||||
<ul>
|
||||
<li>r300/compiler: Disable register rename pass on r500</li>
|
||||
<li>r300/compiler: Don't erase sources when converting RGB->Alpha</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Vinson Lee (3):
|
||||
<ul>
|
||||
<li>ralloc: Add missing va_end following va_copy.</li>
|
||||
<li>mesa: Move declaration before code in extensions.c.</li>
|
||||
<li>mesa: Move loop variable declarations outside for loop in extensions.c.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>nobled (1):
|
||||
<ul>
|
||||
<li>glx: Put null check before use</li>
|
||||
</ul></p>
|
||||
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
206
docs/relnotes-7.10.2.html
Normal file
206
docs/relnotes-7.10.2.html
Normal file
@@ -0,0 +1,206 @@
|
||||
<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.10.2 Release Notes / April 6, 2011</H1>
|
||||
|
||||
<p>
|
||||
Mesa 7.10.2 is a bug fix release which fixes bugs found since the 7.10 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 7.10.2 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>
|
||||
2f9f444265534a2cfd9a99d1a8291089 MesaLib-7.10.2.tar.gz
|
||||
f5de82852f1243f42cc004039e10b771 MesaLib-7.10.2.tar.bz2
|
||||
47836e37bab6fcafe3ac90c9544ba0e9 MesaLib-7.10.2.zip
|
||||
175120325828f313621cc5bc6c504803 MesaGLUT-7.10.2.tar.gz
|
||||
8c71d273f5f8d6c5eda4ffc39e0fe03e MesaGLUT-7.10.2.tar.bz2
|
||||
03036c8efe7b791a90fa0f2c41b43f43 MesaGLUT-7.10.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=29172">Bug 29172</a> - Arrandale - Pill Popper Pops Pills</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31159">Bug 31159</a> - shadow problem in 0ad game</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32688">Bug 32688</a> - [RADEON:KMS:R300G] some games have a wireframe or outline visible</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32949">Bug 32949</a> - [glsl wine] Need for Speed renders incorrectly with GLSL enabled</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34203">Bug 34203</a> - [GLSL] fail to call long chains across shaders</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34376">Bug 34376</a> - [GLSL] allowing assignment to unsized array
|
||||
<ul>
|
||||
<li>The commit message incorrectly
|
||||
lists <a href="https://bugs.freedesktop.org/show_bug.cgi?id=34367">bug
|
||||
34367</a>.</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34370">Bug 34370</a> - [GLSL] "i<5 && i<4" in for loop fails</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34374">Bug 34374</a> - [GLSL] fail to redeclare an array using initializer</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35073">Bug 35073</a> - [GM45] Alpha test is broken when rendering to FBO with no color attachment</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35483">Bug 35483</a> - util_blit_pixels_writemask: crash in line 322 of src/gallium/auxiliary/util/u_blit.c</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.10.1..mesa-7.10.2
|
||||
</pre>
|
||||
|
||||
<p><em>Note:</em> Reverted commits and the reverts are not included in this list.</p>
|
||||
|
||||
<p>Alex Deucher (2):
|
||||
<ul>
|
||||
<li>r600c: add new ontario pci ids</li>
|
||||
<li>r600g: add some additional ontario pci ids</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Benjamin Franzke (1):
|
||||
<ul>
|
||||
<li>st/dri: Fix surfaceless gl using contexts with previous bound surfaces</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Brian Paul (9):
|
||||
<ul>
|
||||
<li>docs: pull 7.9.2 release notes into 7.10 branch</li>
|
||||
<li>docs: update news.html with 7.10.1 and 7.9.2 releases</li>
|
||||
<li>docs: fill in 7.10.1 release data</li>
|
||||
<li>docs: add, fix release notes links</li>
|
||||
<li>docs: update info about Mesa packaging/contents</li>
|
||||
<li>docs: update prerequisites, remove old demo info</li>
|
||||
<li>mesa: Guard against null pointer deref in fbo validation</li>
|
||||
<li>st/mesa: Apply LOD bias from correct texture unit</li>
|
||||
<li>glsl: silence warning in printf() with a cast</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Chad Versace (1):
|
||||
<ul>
|
||||
<li>i965: Fix tex_swizzle when depth mode is GL_RED</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Dave Airlie (1):
|
||||
<ul>
|
||||
<li>r600: don't close fd on failed load</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Eric Anholt (2):
|
||||
<ul>
|
||||
<li>i965: Apply a workaround for the Ironlake "vertex flashing".</li>
|
||||
<li>i965: Fix alpha testing when there is no color buffer in the FBO.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Fabian Bieler (1):
|
||||
<ul>
|
||||
<li>st/mesa: Apply LOD from texture object</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Henri Verbeet (1):
|
||||
<ul>
|
||||
<li>st/mesa: Validate state before doing blits.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Ian Romanick (13):
|
||||
<ul>
|
||||
<li>docs: Add 7.10.1 md5sums</li>
|
||||
<li>glsl: Refactor AST-to-HIR code handling variable initializers</li>
|
||||
<li>glsl: Refactor AST-to-HIR code handling variable redeclarations</li>
|
||||
<li>glsl: Process redeclarations before initializers</li>
|
||||
<li>glsl: Function signatures cannot have NULL return type</li>
|
||||
<li>glsl: Add several function / call related validations</li>
|
||||
<li>linker: Add imported functions to the linked IR</li>
|
||||
<li>glsl: Use insert_before for lists instead of open coding it</li>
|
||||
<li>glsl: Only allow unsized array assignment in an initializer</li>
|
||||
<li>glcpp: Refresh autogenerated lexer files</li>
|
||||
<li>docs: Initial bits of 7.10.2 release notes</li>
|
||||
<li>mesa: set version string to 7.10.2</li>
|
||||
<li>mesa: Remove nonexistant files from _FILES lists</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Jerome Glisse (1):
|
||||
<ul>
|
||||
<li>r600g: move user fence into base radeon structure</li>
|
||||
</ul></p>
|
||||
|
||||
<p>José Fonseca (2):
|
||||
<ul>
|
||||
<li>mesa: Fix typo glGet*v(GL_TEXTURE_COORD_ARRAY_*).</li>
|
||||
<li>mesa: More glGet* fixes.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Kenneth Graunke (4):
|
||||
<ul>
|
||||
<li>glcpp: Rework lexer to use a SKIP state rather than REJECT.</li>
|
||||
<li>glcpp: Remove trailing contexts from #if rules.</li>
|
||||
<li>i965/fs: Fix linear gl_Color interpolation on pre-gen6 hardware.</li>
|
||||
<li>glsl: Accept precision qualifiers on sampler types, but only in ES.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Marek Olšák (15):
|
||||
<ul>
|
||||
<li>st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL</li>
|
||||
<li>st/mesa: fail to alloc a renderbuffer if st_choose_renderbuffer_format fails</li>
|
||||
<li>r300/compiler: fix the saturate modifier when applied to TEX instructions</li>
|
||||
<li>r300/compiler: fix translating the src negate bits in pair_translate</li>
|
||||
<li>r300/compiler: Abs doesn't cancel Negate (in the conversion to native swizzles)</li>
|
||||
<li>r300/compiler: TEX instructions don't support negation on source arguments</li>
|
||||
<li>r300/compiler: do not set TEX_IGNORE_UNCOVERED on r500</li>
|
||||
<li>r300/compiler: saturate Z before the shadow comparison</li>
|
||||
<li>r300/compiler: fix equal and notequal shadow compare functions</li>
|
||||
<li>r300/compiler: remove unused variables</li>
|
||||
<li>st/mesa: fix crash when using both user and vbo buffers with the same stride</li>
|
||||
<li>r300g: fix alpha-test with no colorbuffer</li>
|
||||
<li>r300g: tell the GLSL compiler to lower the continue opcode</li>
|
||||
<li>r300/compiler: propagate SaturateMode down to the result of shadow comparison</li>
|
||||
<li>r300/compiler: apply the texture swizzle to shadow pass and fail values too</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Michel Dänzer (1):
|
||||
<ul>
|
||||
<li>Use proper source row stride when getting depth/stencil texels.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Tom Stellard (4):
|
||||
<ul>
|
||||
<li>r300/compiler: Use a 4-bit writemask in pair instructions</li>
|
||||
<li>prog_optimize: Fix reallocating registers for shaders with loops</li>
|
||||
<li>r300/compiler: Fix vertex shader MAD instructions with constant swizzles</li>
|
||||
<li>r300/compiler: Don't try to convert RGB to Alpha in full instructions</li>
|
||||
</ul></p>
|
||||
|
||||
</body>
|
||||
</html>
|
303
docs/relnotes-7.10.3.html
Normal file
303
docs/relnotes-7.10.3.html
Normal file
@@ -0,0 +1,303 @@
|
||||
<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.10.3 Release Notes / June 13, 2011</H1>
|
||||
|
||||
<p>
|
||||
Mesa 7.10.3 is a bug fix release which fixes bugs found since the 7.10.2 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 7.10.3 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>
|
||||
d77b02034c11d6c2a55c07f82367d780 MesaLib-7.10.3.tar.gz
|
||||
8c38fe8266be8e1ed1d84076ba5a703b MesaLib-7.10.3.tar.bz2
|
||||
614d063ecd170940d9ae7b355d365d59 MesaLib-7.10.3.zip
|
||||
8768fd562ede7ed763d92b2d22232d7a MesaGLUT-7.10.3.tar.gz
|
||||
1496415b89da9549f0f3b34d9622e2e2 MesaGLUT-7.10.3.tar.bz2
|
||||
1f29d0e7398fd3bf9f36f5db02941198 MesaGLUT-7.10.3.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=29162">Bug 29162</a> - mesa/darwin is severly broken</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31590">Bug 31590</a> - Black space between colors on mole hill example</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32395">Bug 32395</a> - [glsl] Incorrect code generation for shadow2DProj() with bias</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32564">Bug 32564</a> - [llvmpipe] prog: Unknown command line argument '-disable-mmx'. Try: 'prog -help' with llvm-2.9svn</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32835">Bug 32835</a> - [glsl] recursive #define results in infinite stack recursion</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33303">Bug 33303</a> - [glsl] ir_constant_expression.cpp:72: virtual ir_constant* ir_expression::constant_expression_value(): Assertion `op[0]->type->base_type == op[1]->type->base_type' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33314">Bug 33314</a> - [glsl] ir_constant_expression.cpp:122: virtual ir_constant* ir_expression::constant_expression_value(): Assertion `op[0]->type->base_type == GLSL_TYPE_BOOL' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33512">Bug 33512</a> - [SNB] case ogles2conform/GL/gl_FragCoord/gl_FragCoord_xy_frag.test and gl_FragCoord_w_frag.test fail</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34280">Bug 34280</a> - r200 mesa-7.10 font distortion</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34321">Bug 34321</a> - The ARB_fragment_program subset of ARB_draw_buffers not implemented</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35603">Bug 35603</a> - GLSL compiler freezes compiling shaders</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36173">Bug 36173</a> - struct renderbuffer's 'format' field never set when using FBO</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36238">Bug 36238</a> - Mesa release files don't contain scons control files</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36410">Bug 36410</a> - [SNB] Rendering errors in 3DMMES subtest taiji</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36527">Bug 36527</a> - [wine] Wolfenstein: Failed to translate rgb instruction.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36651">Bug 36651</a> - mesa requires bison and flex to build but configure does not check for them</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36738">Bug 36738</a> - Openarena crash with r300g, swrastg + llvm > 2.8</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37648">Bug 37648</a> - Logic error in mesa/main/teximage.c:texsubimage</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37739">Bug 37739</a> - Color clear of FBO without color buffer crashes</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.10.2..mesa-7.10.3
|
||||
</pre>
|
||||
|
||||
<p>Alan Hourihane (1):
|
||||
<ul>
|
||||
<li>Check for out of memory when creating fence</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Alex Buell (1):
|
||||
<ul>
|
||||
<li>configure: bump LIBDRM_REQUIRED to 2.4.24</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Alex Deucher (2):
|
||||
<ul>
|
||||
<li>r600c: add new pci ids</li>
|
||||
<li>r600g: add new pci ids</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Brian Paul (19):
|
||||
<ul>
|
||||
<li>docs: add link to 7.10.2 release notes</li>
|
||||
<li>scons: remove dangling reference to state_trackers/python/SConscript</li>
|
||||
<li>Makefile: add missing Scons files</li>
|
||||
<li>llvmpipe: document issue with LLVM 2.8 and earlier with AVX</li>
|
||||
<li>docs: replace llvmpipe/README with docs/llvmpipe.html</li>
|
||||
<li>glsl: add static qualifier to silence warning</li>
|
||||
<li>glsl: add cast to silence signed/unsigned comparison warning</li>
|
||||
<li>mesa: s/height/depth/ in texsubimage()</li>
|
||||
<li>mesa: fix void pointer arithmetic warnings</li>
|
||||
<li>mesa: add some missing GLAPIENTRY keywords</li>
|
||||
<li>mesa: check that flex/bison are installed</li>
|
||||
<li>st/mesa: fix incorrect texture level/face/slice accesses</li>
|
||||
<li>draw: fix edge flag handling in clipper (for unfilled tris/quads/polygons)</li>
|
||||
<li>vbo: check array indexes to prevent negative indexing</li>
|
||||
<li>vbo: remove node->count > 0 test in vbo_save_playback_vertex_list()</li>
|
||||
<li>st/mesa: fix software accum buffer format bug</li>
|
||||
<li>mesa: add include/c99/inttypes.h include/c99/stdbool.h include/c99/stdint.h files to tarballs</li>
|
||||
<li>docs: 7.10.3 release notes skeleton file, links</li>
|
||||
<li>mesa: bump version to 7.10.3</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Carl Worth (2):
|
||||
<ul>
|
||||
<li>glcpp: Simplify calling convention of parser's active_list functions</li>
|
||||
<li>glcpp: Fix attempts to expand recursive macros infinitely (bug #32835).</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Dave Airlie (1):
|
||||
<ul>
|
||||
<li>st/mesa: fix compressed mipmap generation.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Eric Anholt (19):
|
||||
<ul>
|
||||
<li>i965: Fix the VS thread limits for GT1, and clarify the WM limits on both.</li>
|
||||
<li>glsl: Avoid cascading errors when looking for a scalar boolean and failing.</li>
|
||||
<li>glsl: Semantically check the RHS of `&&' even when short-circuiting.</li>
|
||||
<li>glsl: Semantically check the RHS of `||' even when short-circuiting.</li>
|
||||
<li>glsl: When we've emitted a semantic error for ==, return a bool constant.</li>
|
||||
<li>glsl: Perform type checking on "^^" operands.</li>
|
||||
<li>intel: Use _mesa_base_tex_format for FBO texture attachments.</li>
|
||||
<li>swrast: Don't assert against glReadPixels of GL_RED and GL_RG.</li>
|
||||
<li>mesa: Add a gl_renderbuffer.RowStride field like textures have.</li>
|
||||
<li>mesa: Add a function to set up the default renderbuffer accessors.</li>
|
||||
<li>intel: Use Mesa core's renderbuffer accessors for depth.</li>
|
||||
<li>mesa: Use _mesa_get_format_bytes to refactor out the RB get_pointer_*</li>
|
||||
<li>mesa: Use _mesa_get_format_bytes to refactor out the RB get_row_*</li>
|
||||
<li>mesa: Add renderbuffer accessors for R8/RG88/R16/RG1616.</li>
|
||||
<li>swrast: Don't try to adjust_colors for <8bpc when handling R16, RG1616.</li>
|
||||
<li>intel: Use mesa core's R8, RG88, R16, RG1616 RB accessors.</li>
|
||||
<li>Revert "intel: Add spans code for the ARB_texture_rg support."</li>
|
||||
<li>mesa: Add support for the ARB_fragment_program part of ARB_draw_buffers.</li>
|
||||
<li>mesa: Add support for OPTION ATI_draw_buffers to ARB_fp.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Hans de Goede (1):
|
||||
<ul>
|
||||
<li>texstore: fix regression stricter check for memcpy path for unorm88 and unorm1616</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Henri Verbeet (3):
|
||||
<ul>
|
||||
<li>mesa: Also update the color draw buffer if it's explicitly set to GL_NONE.</li>
|
||||
<li>glx: Destroy dri2Hash on DRI2 display destruction.</li>
|
||||
<li>glx: Only remove the glx_display from the list after it's destroyed.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Ian Romanick (9):
|
||||
<ul>
|
||||
<li>docs: Add 7.10.2 md5sums</li>
|
||||
<li>glsl: Fix off-by-one error setting max_array_access for non-constant indexing</li>
|
||||
<li>ir_to_mesa: Handle shadow compare w/projection and LOD bias correctly</li>
|
||||
<li>intel: Fix ROUND_DOWN_TO macro</li>
|
||||
<li>glsl: Regenerate compiler and glcpp files from cherry picks</li>
|
||||
<li>i965: Remove hint_gs_always and resulting dead code</li>
|
||||
<li>mesa: Don't try to clear a NULL renderbuffer</li>
|
||||
<li>mesa: Ignore blits to/from missing buffers</li>
|
||||
<li>docs: Add list of bugs fixed in 7.10.3 release</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Jeremy Huddleston (18):
|
||||
<ul>
|
||||
<li>apple: Update GL specs</li>
|
||||
<li>apple: Rename glcontextmodes.[ch] to glxconfig.[ch]</li>
|
||||
<li>apple: Rename __GLcontextModes to struct glx_config</li>
|
||||
<li>apple: Rename GLXcontext</li>
|
||||
<li>apple: Re-add driContext and do_destroy</li>
|
||||
<li>apple: Rename _gl_context_modes_find_visual to glx_config_find_visual</li>
|
||||
<li>apple: Rename GLXcontext</li>
|
||||
<li>apple: Change from XExtDisplayInfo to struct glx_display</li>
|
||||
<li>apple: ifdef out come glapi-foo on darwin</li>
|
||||
<li>glx: Dead code removal</li>
|
||||
<li>apple: Build darwin using applegl rather than indirect</li>
|
||||
<li>apple: Fix build failures in applegl_glx.c</li>
|
||||
<li>darwin: Define GALLIUM_DRIVERS_DIRS in darwin config</li>
|
||||
<li>apple: Package applegl source into MesaLib tarball</li>
|
||||
<li>darwin: Set VG_LIB_{NAME,GLOB} to fix make install</li>
|
||||
<li>darwin: Don't link against libGL when building libOSMesa</li>
|
||||
<li>darwin: Fix VG_LIB_GLOB to also match the unversioned symlink</li>
|
||||
<li>osmesa: Fix missing symbols when GLX_INDIRECT_RENDERING is defined.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>José Fonseca (13):
|
||||
<ul>
|
||||
<li>llvmpipe: Update readme.</li>
|
||||
<li>mesa: GL_PROVOKING_VERTEX_EXT is a GLenum, not GLboolean.</li>
|
||||
<li>mesa: Fix GetVertexAttrib* inside display lists.</li>
|
||||
<li>draw: Fix draw_variant_output::format's type.</li>
|
||||
<li>gallivm: Tell LLVM to not assume a 16-byte aligned stack on x86.</li>
|
||||
<li>gallivm: Fix for dynamically linked LLVM 2.8 library.</li>
|
||||
<li>st/wgl: Adjust the pbuffer invisible window size.</li>
|
||||
<li>st/wgl: Fix debug output format specifiers of stw_framebuffer_get_size().</li>
|
||||
<li>st/wgl: Prevent spurious framebuffer sizes when the window is minimized.</li>
|
||||
<li>st/wgl: Cope with zero width/height windows.</li>
|
||||
<li>st/wgl: Allow to create pbuffers bigger than the desktop.</li>
|
||||
<li>st/wgl: Remove buggy assertion.</li>
|
||||
<li>wgl: Don't hold on to user supplied HDC.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Kenneth Graunke (10):
|
||||
<ul>
|
||||
<li>i965/fs: Switch W and 1/W in Sandybridge interpolation setup.</li>
|
||||
<li>i965: Refactor Sandybridge implied move handling.</li>
|
||||
<li>i965: Resolve implied moves in brw_dp_READ_4_vs_relative.</li>
|
||||
<li>intel: Add IS_GT2 macro for recognizing Sandybridge GT2 systems.</li>
|
||||
<li>i965: Allocate the whole URB to the VS and fix calculations for Gen6.</li>
|
||||
<li>intel: Support glCopyTexImage() from ARGB8888 to XRGB8888.</li>
|
||||
<li>glsl: Fix memory error when creating the supported version string.</li>
|
||||
<li>glsl: Regenerate autogenerated file builtin_function.cpp.</li>
|
||||
<li>i965: Rename various gen6 #defines to match the documentation.</li>
|
||||
<li>i965: Never enable the GS on Gen6.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Kostas Georgiou (1):
|
||||
<ul>
|
||||
<li>r600c/g: Add pci id for FirePro 2270</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Marek Olšák (18):
|
||||
<ul>
|
||||
<li>tgsi/ureg: bump the limit of immediates</li>
|
||||
<li>st/mesa: fix changing internal format via RenderbufferStorage</li>
|
||||
<li>st/mesa: GenerateMipmap should not be killed by conditional rendering</li>
|
||||
<li>swrast: BlitFramebuffer should not be killed by conditional rendering</li>
|
||||
<li>st/mesa: BlitFramebuffer should not be killed by conditional rendering</li>
|
||||
<li>st/mesa: CopyTex(Sub)Image should not be killed by conditional rendering</li>
|
||||
<li>st/mesa: conditional rendering should not kill texture decompression via blit</li>
|
||||
<li>mesa: forbid UseProgram to be called inside Begin/End</li>
|
||||
<li>mesa: UseShaderProgramEXT and Uniform* shouldn't be allowed inside Begin/End</li>
|
||||
<li>mesa: queries of non-existent FBO attachments should return INVALID_OPERATION</li>
|
||||
<li>r300g: fix draw_vbo splitting on r3xx-r4xx</li>
|
||||
<li>r300g: fix texturing with non-3D textures and wrap R mode set to sample border</li>
|
||||
<li>r300g: fix occlusion queries when depth test is disabled or zbuffer is missing</li>
|
||||
<li>r300g: clear can be killed by render condition</li>
|
||||
<li>st/mesa: remove asserts in st_texture_image_copy</li>
|
||||
<li>mesa: fix up assertion in _mesa_source_buffer_exists</li>
|
||||
<li>mesa: invalidate framebuffer if internal format of renderbuffer is changed</li>
|
||||
<li>mesa: return after invalidating renderbuffer</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Matt Turner (1):
|
||||
<ul>
|
||||
<li>r300/compiler: align memory allocations to 8-bytes</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Tom Stellard (3):
|
||||
<ul>
|
||||
<li>r300/compiler: Fix incorrect presubtract conversion</li>
|
||||
<li>r300/compiler: Fix dataflow analysis bug with ELSE blocks</li>
|
||||
<li>r300/compiler: Limit instructions to 3 source selects</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Vinson Lee (1):
|
||||
<ul>
|
||||
<li>gallivm: Disable MMX-disabling code on llvm-2.9.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Zou Nan hai (1):
|
||||
<ul>
|
||||
<li>i965: Align interleaved URB write length to 2</li>
|
||||
</ul></p>
|
||||
|
||||
<p>pepp (1):
|
||||
<ul>
|
||||
<li>st/mesa: assign renderbuffer's format field when allocating storage</li>
|
||||
</ul></p>
|
||||
|
||||
</body>
|
||||
</html>
|
File diff suppressed because it is too large
Load Diff
406
docs/relnotes-7.9.1.html
Normal file
406
docs/relnotes-7.9.1.html
Normal file
@@ -0,0 +1,406 @@
|
||||
<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.9.1 Release Notes / January 7, 2011</H1>
|
||||
|
||||
<p>
|
||||
Mesa 7.9.1 is a bug fix release which fixes bugs found since the 7.9 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 7.9.1 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>
|
||||
78422843ea875ad4eac35b9b8584032b MesaLib-7.9.1.tar.gz
|
||||
07dc6cfb5928840b8b9df5bd1b3ae434 MesaLib-7.9.1.tar.bz2
|
||||
c8eaea5b3c3d6dee784bd8c2db91c80f MesaLib-7.9.1.zip
|
||||
ee9ecae4ca56fbb2d14dc15e3a0a7640 MesaGLUT-7.9.1.tar.gz
|
||||
41fc477d524e7dc5c84da8ef22422bea MesaGLUT-7.9.1.tar.bz2
|
||||
90b287229afdf19317aa989d19462e7a MesaGLUT-7.9.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=28800">Bug 28800</a> - [r300c, r300g] Texture corruption with World of Warcraft</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29420">Bug 29420</a> - Amnesia / HPL2 RendererFeatTest - not rendering correctly</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29946">Bug 29946</a> - [swrast] piglit valgrind glsl-array-bounds-04 fails</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30261">Bug 30261</a> - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30632">Bug 30632</a> - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb && stfb->iface == stfbi' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30694">Bug 30694</a> - wincopy will crash on Gallium drivers when going to front buffer</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30787">Bug 30787</a> - Invalid asm shader does not generate draw-time error when used with GLSL shader</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30993">Bug 30993</a> - getFramebufferAttachmentParameteriv wrongly generates error</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31101">Bug 31101</a> - [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31193">Bug 31193</a> - [regression] aa43176e break water reflections</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31194">Bug 31194</a> - The mesa meta save/restore code doesn't ref the current GLSL program</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31371">Bug 31371</a> - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type >= 0) && (type->base_type <= 3)' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31439">Bug 31439</a> - Crash in glBufferSubData() with size == 0</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31495">Bug 31495</a> - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31514">Bug 31514</a> - isBuffer returns true for unbound buffers</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31560">Bug 31560</a> - [tdfx] tdfx_tex.c:702: error: ‘const struct gl_color_table’ has no member named ‘Format’</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31617">Bug 31617</a> - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31648">Bug 31648</a> - [GLSL] array-struct-array gets assertion: `(size >= 1) && (size <= 4)' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31650">Bug 31650</a> - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31673">Bug 31673</a> - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31690">Bug 31690</a> - i915 shader compiler fails to flatten if in Aquarium webgl demo.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31832">Bug 31832</a> - [i915] Bad renderbuffer format: 21</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31841">Bug 31841</a> - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31894">Bug 31894</a> - Writing to gl_PointSize with GLES2 corrupts other varyings</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31909">Bug 31909</a> - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr->operands[i]->type->is_scalar()' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31934">Bug 31934</a> - [gallium] Mapping empty buffer object causes SIGSEGV</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31983">Bug 31983</a> - [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31985">Bug 31985</a> - [GLSL 1.20] initialized uniform array considered as "unsized"</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31987">Bug 31987</a> - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32035">Bug 32035</a> - [GLSL bisected] comparing unsized array gets segfault</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32070">Bug 32070</a> - llvmpipe renders stencil demo incorrectly</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32273">Bug 32273</a> - assertion fails when starting vdrift 2010 release with shaders enabled</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32287">Bug 32287</a> - [bisected GLSL] float-int failure</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32311">Bug 32311</a> - [965 bisected] Array look-ups broken on GM45</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32520">Bug 32520</a> - [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32825">Bug 32825</a> - egl_glx driver completely broken in 7.9 branch [fix in master]</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.9..mesa-7.9.1
|
||||
</pre>
|
||||
|
||||
<p>Alex Deucher (5):
|
||||
<ul>
|
||||
<li>r100: revalidate after radeon_update_renderbuffers</li>
|
||||
<li>r600c: add missing radeon_prepare_render() call on evergreen</li>
|
||||
<li>r600c: properly align mipmaps to group size</li>
|
||||
<li>gallium/egl: fix r300 vs r600 loading</li>
|
||||
<li>r600c: fix some opcodes on evergreen</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Aras Pranckevicius (2):
|
||||
<ul>
|
||||
<li>glsl: fix crash in loop analysis when some controls can't be determined</li>
|
||||
<li>glsl: fix matrix type check in ir_algebraic</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Brian Paul (27):
|
||||
<ul>
|
||||
<li>swrast: fix choose_depth_texture_level() to respect mipmap filtering state</li>
|
||||
<li>st/mesa: replace assertion w/ conditional in framebuffer invalidation</li>
|
||||
<li>egl/i965: include inline_wrapper_sw_helper.h</li>
|
||||
<li>mesa: Add missing else in do_row_3D</li>
|
||||
<li>mesa: add missing formats in _mesa_format_to_type_and_comps()</li>
|
||||
<li>mesa: handle more pixel types in mipmap generation code</li>
|
||||
<li>mesa: make glIsBuffer() return false for never bound buffers</li>
|
||||
<li>mesa: fix glDeleteBuffers() regression</li>
|
||||
<li>swrast: init alpha value to 1.0 in opt_sample_rgb_2d()</li>
|
||||
<li>meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear</li>
|
||||
<li>st/mesa: fix mapping of zero-sized buffer objects</li>
|
||||
<li>mesa: check for posix_memalign() errors</li>
|
||||
<li>llvmpipe: fix broken stencil writemask</li>
|
||||
<li>mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query</li>
|
||||
<li>mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type</li>
|
||||
<li>mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM</li>
|
||||
<li>mesa: test for cube map completeness in glGenerateMipmap()</li>
|
||||
<li>tnl: Initialize gl_program_machine memory in run_vp.</li>
|
||||
<li>tnl: a better way to initialize the gl_program_machine memory</li>
|
||||
<li>mesa, st/mesa: disable GL_ARB_geometry_shader4</li>
|
||||
<li>glsl: fix off by one in register index assertion</li>
|
||||
<li>st/mesa: fix mipmap generation bug</li>
|
||||
<li>glsl: new glsl_strtod() wrapper to fix decimal point interpretation</li>
|
||||
<li>mesa: no-op glBufferSubData() on size==0</li>
|
||||
<li>tdfx: s/Format/_BaseFormat/</li>
|
||||
<li>st/mesa: fix renderbuffer pointer check in st_Clear()</li>
|
||||
<li>mesa: Bump the number of bits in the register index.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Chad Versace (5):
|
||||
<ul>
|
||||
<li>glsl: Fix lexer rule for ^=</li>
|
||||
<li>glsl: Fix ast-to-hir for ARB_fragment_coord_conventions</li>
|
||||
<li>glsl: Fix ir_expression::constant_expression_value()</li>
|
||||
<li>glsl: Fix erroneous cast in ast_jump_statement::hir()</li>
|
||||
<li>glsl: Fix linker bug in cross_validate_globals()</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Chia-I Wu (10):
|
||||
<ul>
|
||||
<li>targets/egl: Fix linking with libdrm.</li>
|
||||
<li>st/vega: Fix version check in context creation.</li>
|
||||
<li>st/egl: Do not finish a fence that is NULL.</li>
|
||||
<li>egl: Fix a false negative check in _eglCheckMakeCurrent.</li>
|
||||
<li>st/mesa: Unreference the sampler view in st_bind_surface.</li>
|
||||
<li>egl_dri2: Fix __DRI_DRI2 version 1 support.</li>
|
||||
<li>st/vega: Do not wait NULL fences.</li>
|
||||
<li>mesa: Do not advertise GL_OES_texture_3D.</li>
|
||||
<li>egl_glx: Fix borken driver.</li>
|
||||
<li>egl: Check extensions.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Daniel Lichtenberger (1):
|
||||
<ul>
|
||||
<li>radeon: fix potential segfault in renderbuffer update</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Daniel Vetter (1):
|
||||
<ul>
|
||||
<li>r200: revalidate after radeon_update_renderbuffers</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Dave Airlie (1):
|
||||
<ul>
|
||||
<li>r300g: fixup rs690 tiling stride alignment calculations.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Eric Anholt (13):
|
||||
<ul>
|
||||
<li>intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.</li>
|
||||
<li>glsl: Free the loop state context when we free the loop state.</li>
|
||||
<li>i965: Allow OPCODE_SWZ to put immediates in the first arg.</li>
|
||||
<li>i965: Add support for rendering to SARGB8 FBOs.</li>
|
||||
<li>glsl: Add a helper constructor for expressions that works out result type.</li>
|
||||
<li>glsl: Fix structure and array comparisions.</li>
|
||||
<li>glsl: Quiet unreachable no-return-from-function warning.</li>
|
||||
<li>glsl: Mark the array access for whole-array comparisons.</li>
|
||||
<li>glsl: Fix flipped return of has_value() for array constants.</li>
|
||||
<li>mesa: Add getters for the rest of the supported draw buffers.</li>
|
||||
<li>mesa: Add getters for ARB_copy_buffer's attachment points.</li>
|
||||
<li>i965: Correct the dp_read message descriptor setup on g4x.</li>
|
||||
<li>glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Fabian Bieler (1):
|
||||
<ul>
|
||||
<li>glsl: fix lowering conditional returns in subroutines</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Francisco Jerez (3):
|
||||
<ul>
|
||||
<li>meta: Don't leak alpha function/reference value changes.</li>
|
||||
<li>meta: Fix incorrect rendering of the bitmap alpha component.</li>
|
||||
<li>meta: Don't try to disable cube maps if the driver doesn't expose the extension.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Henri Verbeet (2):
|
||||
<ul>
|
||||
<li>r600: Evergreen has two extra frac_bits for the sampler LOD state.</li>
|
||||
<li>st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Ian Romanick (33):
|
||||
<ul>
|
||||
<li>Add 7.9 md5sums</li>
|
||||
<li>docs: Import 7.8.x release notes from 7.8 branch.</li>
|
||||
<li>docs: download.html does not need to be updated for each release</li>
|
||||
<li>docs: Update mailing lines from sf.net to freedesktop.org</li>
|
||||
<li>docs: added news item for 7.9 release</li>
|
||||
<li>mesa: Validate assembly shaders when GLSL shaders are used</li>
|
||||
<li>linker: Reject shaders that have unresolved function calls</li>
|
||||
<li>mesa: Refactor validation of shader targets</li>
|
||||
<li>glsl: Slightly change the semantic of _LinkedShaders</li>
|
||||
<li>linker: Improve handling of unread/unwritten shader inputs/outputs</li>
|
||||
<li>glsl: Commit lexer files changed by previous cherry picking</li>
|
||||
<li>mesa: Make metaops use program refcounts instead of names.</li>
|
||||
<li>glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow</li>
|
||||
<li>mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample</li>
|
||||
<li>glsl: better handling of linker failures</li>
|
||||
<li>mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.</li>
|
||||
<li>i915: Disallow alpha, red, RG, and sRGB as render targets</li>
|
||||
<li>glsl/linker: Free any IR discarded by optimization passes.</li>
|
||||
<li>glsl: Add an optimization pass to simplify discards.</li>
|
||||
<li>glsl: Add a lowering pass to move discards out of if-statements.</li>
|
||||
<li>i915: Correctly generate unconditional KIL instructions</li>
|
||||
<li>glsl: Add unary ir_expression constructor</li>
|
||||
<li>glsl: Ensure that equality comparisons don't return a NULL IR tree</li>
|
||||
<li>glcpp: Commit changes in generated files cause by previous commit</li>
|
||||
<li>glsl: Inherrit type of declared variable from initializer</li>
|
||||
<li>glsl: Inherrit type of declared variable from initializer after processing assignment</li>
|
||||
<li>linker: Ensure that unsized arrays have a size after linking</li>
|
||||
<li>linker: Fix regressions caused by previous commit</li>
|
||||
<li>linker: Allow built-in arrays to have different sizes between shader stages</li>
|
||||
<li>ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors</li>
|
||||
<li>Refresh autogenerated file builtin_function.cpp.</li>
|
||||
<li>docs: Initial set of release notes for 7.9.1</li>
|
||||
<li>mesa: set version string to 7.9.1</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Julien Cristau (1):
|
||||
<ul>
|
||||
<li>Makefile: don't include the same files twice in the tarball</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Kenneth Graunke (19):
|
||||
<ul>
|
||||
<li>glcpp: Return NEWLINE token for newlines inside multi-line comments.</li>
|
||||
<li>generate_builtins.py: Output large strings as arrays of characters.</li>
|
||||
<li>glsl: Fix constant component count in vector constructor emitting.</li>
|
||||
<li>ir_dead_functions: Actually free dead functions and signatures.</li>
|
||||
<li>glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version >= 1.30.</li>
|
||||
<li>glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.</li>
|
||||
<li>glsl: Fix constant expression handling for <, >, <=, >= on vectors.</li>
|
||||
<li>glsl: Use do_common_optimization in the standalone compiler.</li>
|
||||
<li>glsl: Don't inline function prototypes.</li>
|
||||
<li>glsl: Add a virtual as_discard() method.</li>
|
||||
<li>glsl: Remove "discard" support from lower_jumps.</li>
|
||||
<li>glsl: Refactor get_num_operands.</li>
|
||||
<li>glcpp: Don't emit SPACE tokens in conditional_tokens production.</li>
|
||||
<li>glsl: Clean up code by adding a new is_break() function.</li>
|
||||
<li>glsl: Consider the "else" branch when looking for loop breaks.</li>
|
||||
<li>Remove OES_compressed_paletted_texture from the ES2 extension list.</li>
|
||||
<li>glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).</li>
|
||||
<li>Fix build on systems where "python" is python 3.</li>
|
||||
<li>i965: Internally enable GL_NV_blend_square on ES2.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Kristian Høgsberg (1):
|
||||
<ul>
|
||||
<li>i965: Don't write mrf assignment for pointsize output</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Luca Barbieri (1):
|
||||
<ul>
|
||||
<li>glsl: Unroll loops with conditional breaks anywhere (not just the end)</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Marek Olšák (17):
|
||||
<ul>
|
||||
<li>r300g: fix microtiling for 16-bits-per-channel formats</li>
|
||||
<li>r300g: fix texture border for 16-bits-per-channel formats</li>
|
||||
<li>r300g: add a default channel ordering of texture border for unhandled formats</li>
|
||||
<li>r300g: fix texture border color for all texture formats</li>
|
||||
<li>r300g: fix rendering with no vertex elements</li>
|
||||
<li>r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction</li>
|
||||
<li>r300g: fix texture border color once again</li>
|
||||
<li>r300g: fix texture swizzling with compressed textures on r400-r500</li>
|
||||
<li>r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only</li>
|
||||
<li>mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium</li>
|
||||
<li>st/mesa: initialize key in st_vp_varient</li>
|
||||
<li>r300/compiler: fix swizzle lowering with a presubtract source operand</li>
|
||||
<li>r300g: fix rendering with a vertex attrib having a zero stride</li>
|
||||
<li>ir_to_mesa: Add support for conditional discards.</li>
|
||||
<li>r300g: finally fix the texture corruption on r3xx-r4xx</li>
|
||||
<li>mesa: fix texel store functions for some float formats</li>
|
||||
<li>r300/compiler: disable the rename_regs pass for loops</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Mario Kleiner (1):
|
||||
<ul>
|
||||
<li>mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Peter Clifton (1):
|
||||
<ul>
|
||||
<li>intel: Fix emit_linear_blit to use DWORD aligned width blits</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Robert Hooker (2):
|
||||
<ul>
|
||||
<li>intel: Add a new B43 pci id.</li>
|
||||
<li>egl_dri2: Add missing intel chip ids.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Roland Scheidegger (1):
|
||||
<ul>
|
||||
<li>r200: fix r200 large points</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Thomas Hellstrom (17):
|
||||
<ul>
|
||||
<li>st/xorg: Don't try to use option values before processing options</li>
|
||||
<li>xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers</li>
|
||||
<li>st/xorg: Add a customizer option to get rid of annoying cursor update flicker</li>
|
||||
<li>xorg/vmwgfx: Don't hide HW cursors when updating them</li>
|
||||
<li>st/xorg: Don't try to remove invalid fbs</li>
|
||||
<li>st/xorg: Fix typo</li>
|
||||
<li>st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments</li>
|
||||
<li>st/xorg: Fix compilation errors for Xservers compiled without Composite</li>
|
||||
<li>st/xorg: Don't use deprecated x*alloc / xfree functions</li>
|
||||
<li>xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions</li>
|
||||
<li>st/xorg: Fix compilation for Xservers >= 1.10</li>
|
||||
<li>mesa: Make sure we have the talloc cflags when using the talloc headers</li>
|
||||
<li>egl: Add an include for size_t</li>
|
||||
<li>mesa: Add talloc includes for gles</li>
|
||||
<li>st/egl: Fix build for include files in nonstandard places</li>
|
||||
<li>svga/drm: Optionally resolve calls to powf during link-time</li>
|
||||
<li>gallium/targets: Trivial crosscompiling fix</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Tom Stellard (7):
|
||||
<ul>
|
||||
<li>r300/compiler: Make sure presubtract sources use supported swizzles</li>
|
||||
<li>r300/compiler: Fix register allocator's handling of loops</li>
|
||||
<li>r300/compiler: Fix instruction scheduling within IF blocks</li>
|
||||
<li>r300/compiler: Use zero as the register index for unused sources</li>
|
||||
<li>r300/compiler: Ignore alpha dest register when replicating the result</li>
|
||||
<li>r300/compiler: Use correct swizzles for all presubtract sources</li>
|
||||
<li>r300/compiler: Don't allow presubtract sources to be remapped twice</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Vinson Lee (1):
|
||||
<ul>
|
||||
<li>glsl: Fix 'control reaches end of non-void function' warning.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>richard (1):
|
||||
<ul>
|
||||
<li>r600c : inline vertex format is not updated in an app, switch to use vfetch constants. For the 7.9 and 7.10 branches as well.</li>
|
||||
</ul></p>
|
||||
|
||||
</body>
|
||||
</html>
|
336
docs/relnotes-7.9.2.html
Normal file
336
docs/relnotes-7.9.2.html
Normal file
@@ -0,0 +1,336 @@
|
||||
<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.9.2 Release Notes / March 2, 2011</H1>
|
||||
|
||||
<p>
|
||||
Mesa 7.9.2 is a bug fix release which fixes bugs found since the 7.9.1 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 7.9.2 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>
|
||||
eb4ab8c1a03386def3ea34b1358e9cda MesaLib-7.9.2.tar.gz
|
||||
8f6d1474912787ce13bd35f3bae9938a MesaLib-7.9.2.tar.bz2
|
||||
427a81dd43ac97603768dc5c6af3df26 MesaLib-7.9.2.zip
|
||||
aacb8f4db997e346db40c6066942140a MesaGLUT-7.9.2.tar.gz
|
||||
18abe6cff4fad8ad4752c7b7ab548e5d MesaGLUT-7.9.2.tar.bz2
|
||||
3189e5732d636c71baf3d8bc23ce7b11 MesaGLUT-7.9.2.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None.</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
<p>This list is likely incomplete.</p>
|
||||
<ul>
|
||||
<li>Fix an off-by-one bug in a vsplit assertion.</li>
|
||||
<li>Fix incorrect handling of <tt>layout</tt> qualifier
|
||||
with <tt>in</tt>, <tt>out</tt>, <tt>attribute</tt>, and <tt>varying</tt>.</li>
|
||||
|
||||
<li>Fix an i965 GPU hang in GLSL shaders that contain an unconditional <tt>discard</tt> statement.</li>
|
||||
|
||||
<li>Fix an i965 shader bug where the negative absolute value was generated instead of the absolute value of a negation.</li>
|
||||
|
||||
<li>Fix numerous issues handling precision qualifiers in GLSL ES.</li>
|
||||
|
||||
<li>Fixed a few GLX protocol encoder bugs (Julien Cristau)</li>
|
||||
|
||||
<li>Assorted Gallium llvmpipe driver bug fixes</li>
|
||||
|
||||
<li>Assorted Mesa/Gallium state tracker bug fixes</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26795">Bug 26795</a> - gl_FragCoord off by one in Gallium drivers.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29164">Bug 29164</a> - [GLSL 1.20] invariant variable shouldn't be used before declaration</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29823">Bug 29823</a> - GetUniform[if]v busted</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29927">Bug 29927</a> - [glsl2] fail to compile shader with constructor for array of struct type</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30156">Bug 30156</a> - [i965] After updating to Mesa 7.9, Civilization IV starts to show garbage</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31923">Bug 31923</a> - [GLSL 1.20] allowing inconsistent centroid declaration between two vertex shaders</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31925">Bug 31925</a> - [GLSL 1.20] "#pragma STDGL invariant(all)" fail</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32214">Bug 32214</a> - [gles2]no link error happens when missing vertex shader or frag shader</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32375">Bug 32375</a> - [gl gles2] Not able to get the attribute by function glGetVertexAttribfv</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32541">Bug 32541</a> - Segmentation Fault while running an HDR (high dynamic range) rendering demo</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32569">Bug 32569</a> - [gles2] glGetShaderPrecisionFormat not implemented yet</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32695">Bug 32695</a> - [glsl] SIGSEGV glcpp/glcpp-parse.y:833</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32831">Bug 32831</a> - [glsl] division by zero crashes GLSL compiler</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32910">Bug 32910</a> - Keywords 'in' and 'out' not handled properly for GLSL 1.20 shaders</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33219">Bug 33219</a> -[GLSL bisected] implicit sized array triggers segfault in ir_to_mesa_visitor::copy_propagate</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33306">Bug 33306</a> - GLSL integer division by zero crashes GLSL compiler</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33308">Bug 33308</a> -[glsl] ast_to_hir.cpp:3016: virtual ir_rvalue* ast_jump_statement::hir(exec_list*, _mesa_glsl_parse_state*): Assertion `ret != __null' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33316">Bug 33316</a> - uniform array will be allocate one line more and initialize it when it was freed will abort</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33386">Bug 33386</a> - Dubious assembler in read_rgba_span_x86.S</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33388">Bug 33388</a> - Dubious assembler in xform4.S</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33433">Bug 33433</a> - Error in x86-64 API dispatch code.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33507">Bug 33507</a> - [glsl] GLSL preprocessor modulus by zero crash</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=33916">Bug 33916</a> - Compiler accepts reserved operators % and %=</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34047">Bug 34047</a> - Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34114">Bug 34114</a> - Sun Studio build fails due to standard library functions not being in global namespace</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34198">Bug 34198</a> - [GLSL] implicit sized array with index 0 used gets assertion</li>
|
||||
|
||||
<li><a href="https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/691653">Ubuntu bug 691653</a> - compiz crashes when using alt-tab (the radeon driver kills it) </li>
|
||||
|
||||
<li><a href="https://bugs.meego.com/show_bug.cgi?id=13005">Meego bug 13005</a> - Graphics GLSL issue lead to camera preview fail on Pinetrail</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.9.1..mesa-7.9.2
|
||||
</pre>
|
||||
|
||||
<p>Alberto Milone (1):
|
||||
<ul>
|
||||
<li>r600c: add evergreen ARL support.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Brian Paul (19):
|
||||
<ul>
|
||||
<li>draw: Fix an off-by-one bug in a vsplit assertion.</li>
|
||||
<li>mesa: fix a few format table mistakes, assertions</li>
|
||||
<li>mesa: fix num_draw_buffers==0 in fixed-function fragment program generation</li>
|
||||
<li>mesa: don't assert in GetIntegerIndexed, etc</li>
|
||||
<li>mesa: check for dummy renderbuffer in _mesa_FramebufferRenderbufferEXT()</li>
|
||||
<li>llvmpipe: make sure binning is active when we begin/end a query</li>
|
||||
<li>st/mesa: fix incorrect fragcoord.x translation</li>
|
||||
<li>softpipe: fix off-by-one error in setup_fragcoord_coeff()</li>
|
||||
<li>cso: fix loop bound in cso_set_vertex_samplers()</li>
|
||||
<li>st/mesa: set renderbuffer _BaseFormat in a few places</li>
|
||||
<li>st/mesa: fix the default case in st_format_datatype()</li>
|
||||
<li>st/mesa: need to translate clear color according to surface's base format</li>
|
||||
<li>docs: update 7.9.2 release notes with Brian's cherry-picks</li>
|
||||
<li>docs: add links to 7.9.1 and 7.9.2 release notes</li>
|
||||
<li>mesa: include compiler.h for ASSERT macro</li>
|
||||
<li>glsl: add ir_shader case in switch stmt to silence warning</li>
|
||||
<li>glsl2: fix signed/unsigned comparison warning</li>
|
||||
<li>mesa: implement glGetShaderPrecisionFormat()</li>
|
||||
<li>docs: updated environment variable list</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Bryce Harrington (1):
|
||||
<ul>
|
||||
<li>r300g: Null pointer check for buffer deref in gallium winsys</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Chad Versace (14):
|
||||
<ul>
|
||||
<li>glsl: At link-time, check that globals have matching centroid qualifiers</li>
|
||||
<li>glcpp: Fix segfault when validating macro redefinitions</li>
|
||||
<li>glsl: Fix parser rule for type_specifier</li>
|
||||
<li>glsl: Change default value of ast_type_specifier::precision</li>
|
||||
<li>glsl: Add semantic checks for precision qualifiers</li>
|
||||
<li>glsl: Add support for default precision statements</li>
|
||||
<li>glsl: Remove redundant semantic check in parser</li>
|
||||
<li>glsl: Fix semantic checks on precision qualifiers</li>
|
||||
<li>glsl: Fix segfault due to missing printf argument</li>
|
||||
<li>glsl: Mark 'in' variables at global scope as read-only</li>
|
||||
<li>glcpp: Raise error when modulus is zero</li>
|
||||
<li>glsl: Set operators '%' and '%=' to be reserved when GLSL < 1.30</li>
|
||||
<li>glsl: Reinstate constant-folding for division by zero</li>
|
||||
<li>tnl: Add support for datatype GL_FIXED in vertex arrays</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Chia-I Wu (1):
|
||||
<ul>
|
||||
<li>mesa: Add glDepthRangef and glClearDepthf to APIspec.xml.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Chris Wilson (1):
|
||||
<ul>
|
||||
<li>intel: Check for unsupported texture when finishing using as a render target</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Cyril Brulebois (1):
|
||||
<ul>
|
||||
<li>Point to bugs.freedesktop.org rather than bugzilla.freedesktop.org</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Dave Airlie (2):
|
||||
<ul>
|
||||
<li>radeon/r200: fix fbo-clearmipmap + gen-teximage</li>
|
||||
<li>radeon: avoid segfault on 3D textures.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Dimitry Andric (4):
|
||||
<ul>
|
||||
<li>mesa: s/movzx/movzbl/</li>
|
||||
<li>mesa: s/movzxw/movzwl/ in read_rgba_span_x86.S</li>
|
||||
<li>glapi: adding @ char before type specifier in glapi_x86.S</li>
|
||||
<li>glapi: add @GOTPCREL relocation type</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Eric Anholt (11):
|
||||
<ul>
|
||||
<li>i965: Avoid double-negation of immediate values in the VS.</li>
|
||||
<li>docs: Add a relnote for the Civ IV on i965.</li>
|
||||
<li>i965/vs: When MOVing to produce ABS, strip negate of the operand.</li>
|
||||
<li>glsl: Fix the lowering of variable array indexing to not lose write_masks.</li>
|
||||
<li>intel: Make renderbuffer tiling choice match texture tiling choice.</li>
|
||||
<li>glapi: Add entrypoints and enums for GL_ARB_ES2_compatibility.</li>
|
||||
<li>mesa: Add extension enable bit for GL_ARB_ES2_compatibility.</li>
|
||||
<li>mesa: Add actual support for glReleaseShaderCompiler from ES2.</li>
|
||||
<li>mesa: Add support for glDepthRangef and glClearDepthf.</li>
|
||||
<li>mesa: Add getters for ARB_ES2_compatibility MAX_*_VECTORS.</li>
|
||||
<li>mesa: Add getter for GL_SHADER_COMPILER with ARB_ES2_compatibility.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Ian Romanick (42):
|
||||
<ul>
|
||||
<li>docs: Add 7.9.1 md5sums</li>
|
||||
<li>glsl: Support the 'invariant(all)' pragma</li>
|
||||
<li>glcpp: Generate an error for division by zero</li>
|
||||
<li>glsl: Add version_string containing properly formatted GLSL version</li>
|
||||
<li>glsl & glcpp: Refresh autogenerated lexer and parser files.</li>
|
||||
<li>glsl: Disallow 'in' and 'out' on globals in GLSL 1.20</li>
|
||||
<li>glsl: Track variable usage, use that to enforce semantics</li>
|
||||
<li>glsl: Allow 'in' and 'out' when 'layout' is also available</li>
|
||||
<li>docs: Initial set of release notes for 7.9.2</li>
|
||||
<li>mesa: bump version to 7.9.2-devel</li>
|
||||
<li>docs: Update 7.9.2 release notes</li>
|
||||
<li>i965: Make OPCODE_KIL_NV do its work in a temp, not the null reg!</li>
|
||||
<li>glsl: Refresh autogenerated lexer and parser files.</li>
|
||||
<li>glsl: Don't assert when the value returned by a function has no rvalue</li>
|
||||
<li>linker: Set sizes for non-global arrays as well</li>
|
||||
<li>linker: Propagate max_array_access while linking functions</li>
|
||||
<li>docs: Update 7.9.2 release notes</li>
|
||||
<li>Use C-style system headers in C++ code to avoid issues with std:: namespace</li>
|
||||
<li>mesa: glGetUniform only returns a single element of an array</li>
|
||||
<li>linker: Generate link errors when ES shaders are missing stages</li>
|
||||
<li>mesa: Fix error checks in GetVertexAttrib functions</li>
|
||||
<li>docs: Update 7.9.2 release notes</li>
|
||||
<li>mesa: Remove unsupported OES extensions</li>
|
||||
<li>glapi: Regenerate for GL_ARB_ES2_compatibility.</li>
|
||||
<li>mesa: Connect glGetShaderPrecisionFormat into the dispatch table</li>
|
||||
<li>i965: Set correct values for range/precision of fragment shader types</li>
|
||||
<li>i915: Set correct values for range/precision of fragment shader types</li>
|
||||
<li>intel: Fix typeos from 3d028024 and 790ff232</li>
|
||||
<li>glsl: Ensure that all GLSL versions are supported in the stand-alone compiler</li>
|
||||
<li>glsl: Reject shader versions not supported by the implementation</li>
|
||||
<li>mesa: Initial size for secondary color array is 3</li>
|
||||
<li>glcpp: Regenerate files from recent cherry picks</li>
|
||||
<li>glsl: Finish out the reduce/reduce error fixes</li>
|
||||
<li>glsl: Regenerate compiler files from cherry picks</li>
|
||||
<li>linker: Fix off-by-one error implicit array sizing</li>
|
||||
<li>i915: Only mark a register as available if all components are written</li>
|
||||
<li>i915: Calculate partial result to temp register first</li>
|
||||
<li>i915: Force lowering of all types of indirect array accesses in the FS</li>
|
||||
<li>docs: Update 7.9.2 release notes for recent cherry picks</li>
|
||||
<li>docs: Clean up bug fixes list</li>
|
||||
<li>intel: Remove driver date and related bits from renderer string</li>
|
||||
<li>mesa: set version string to 7.9.2 (final)</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Jian Zhao (1):
|
||||
<ul>
|
||||
<li>mesa: fix an error in uniform arrays in row calculating.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Julien Cristau (3):
|
||||
<ul>
|
||||
<li>glx: fix request lengths</li>
|
||||
<li>glx: fix GLXChangeDrawableAttributesSGIX request</li>
|
||||
<li>glx: fix length of GLXGetFBConfigsSGIX</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Keith Packard (1):
|
||||
<ul>
|
||||
<li>glsl: Eliminate reduce/reduce conflicts in glsl grammar</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Kenneth Graunke (12):
|
||||
<ul>
|
||||
<li>glsl: Expose a public glsl_type::void_type const pointer.</li>
|
||||
<li>glsl: Don't bother unsetting a destructor that was never set.</li>
|
||||
<li>glsl, i965: Remove unnecessary talloc includes.</li>
|
||||
<li>glcpp: Remove use of talloc reference counting.</li>
|
||||
<li>ralloc: Add a fake implementation of ralloc based on talloc.</li>
|
||||
<li>Convert everything from the talloc API to the ralloc API.</li>
|
||||
<li>ralloc: a new MIT-licensed recursive memory allocator.</li>
|
||||
<li>Remove talloc from the make and automake build systems.</li>
|
||||
<li>Remove talloc from the SCons build system.</li>
|
||||
<li>Remove the talloc sources from the Mesa repository.</li>
|
||||
<li>glsl: Fix use of uninitialized values in _mesa_glsl_parse_state ctor.</li>
|
||||
<li>glsl: Use reralloc instead of plain realloc.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Marek Olšák (3):
|
||||
<ul>
|
||||
<li>docs: fix messed up names with special characters in relnotes-7.9.1</li>
|
||||
<li>mesa: fix texture3D mipmap generation for UNSIGNED_BYTE_3_3_2</li>
|
||||
<li>st/dri: Track drawable context bindings</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Paulo Zanoni (1):
|
||||
<ul>
|
||||
<li>dri_util: fail driCreateNewScreen if InitScreen is NULL</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Sam Hocevar (2):
|
||||
<ul>
|
||||
<li>docs: add glsl info</li>
|
||||
<li>docs: fix glsl_compiler name</li>
|
||||
</ul></p>
|
||||
|
||||
<p>Vinson Lee (1):
|
||||
<ul>
|
||||
<li>ralloc: Add missing va_end following va_copy.</li>
|
||||
</ul></p>
|
||||
|
||||
<p>nobled (1):
|
||||
<ul>
|
||||
<li>glx: Put null check before use</li>
|
||||
</ul></p>
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -13,6 +13,12 @@ The release notes summarize what's new or changed in each Mesa release.
|
||||
</p>
|
||||
|
||||
<UL>
|
||||
<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.1.html">7.10.1 release notes</A>
|
||||
<LI><A HREF="relnotes-7.10.html">7.10 release notes</A>
|
||||
<LI><A HREF="relnotes-7.9.2.html">7.9.2 release notes</A>
|
||||
<LI><A HREF="relnotes-7.9.1.html">7.9.1 release notes</A>
|
||||
<LI><A HREF="relnotes-7.9.html">7.9 release notes</A>
|
||||
<LI><A HREF="relnotes-7.8.3.html">7.8.3 release notes</A>
|
||||
<LI><A HREF="relnotes-7.8.2.html">7.8.2 release notes</A>
|
||||
|
@@ -167,7 +167,7 @@ Here's an example of using the compiler to compile a vertex shader and
|
||||
emit GL_ARB_vertex_program-style instructions:
|
||||
</p>
|
||||
<pre>
|
||||
src/glsl/glslcompiler --dump-ast myshader.vert
|
||||
src/glsl/glsl_compiler --dump-ast myshader.vert
|
||||
</pre>
|
||||
|
||||
Options include
|
||||
|
@@ -23,6 +23,7 @@ each directory.
|
||||
<ul>
|
||||
<li><b>docs</b> - EGL documentation
|
||||
<li><b>drivers</b> - EGL drivers
|
||||
<li><b>glsl</b> - the GLSL compiler
|
||||
<li><b>main</b> - main EGL library implementation. This is where all
|
||||
the EGL API functions are implemented, like eglCreateContext().
|
||||
</ul>
|
||||
|
@@ -376,28 +376,6 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOK) (EGLDisplay dpy, EG
|
||||
#define EGL_Y_INVERTED_NOK 0x307F
|
||||
#endif /* EGL_NOK_texture_from_pixmap */
|
||||
|
||||
#ifndef EGL_ANDROID_image_native_buffer
|
||||
#define EGL_ANDROID_image_native_buffer 1
|
||||
struct android_native_buffer_t;
|
||||
#define EGL_NATIVE_BUFFER_ANDROID 0x3140 /* eglCreateImageKHR target */
|
||||
#endif
|
||||
|
||||
#ifndef EGL_ANDROID_get_render_buffer
|
||||
#define EGL_ANDROID_get_render_buffer 1
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLClientBuffer EGLAPIENTRY eglGetRenderBufferANDROID(EGLDisplay dpy, EGLSurface draw);
|
||||
#endif
|
||||
typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETRENDERBUFFERANDROIDPROC) (EGLDisplay dpy, EGLSurface draw);
|
||||
#endif
|
||||
|
||||
#ifndef EGL_ANDROID_swap_rectangle
|
||||
#define EGL_ANDROID_swap_rectangle 1
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSetSwapRectangleANDROID (EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height);
|
||||
#endif /* EGL_EGLEXT_PROTOTYPES */
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSWAPRECTANGLEANDROIDPROC) (EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@@ -78,15 +78,6 @@ typedef int EGLNativeDisplayType;
|
||||
typedef void *EGLNativeWindowType;
|
||||
typedef void *EGLNativePixmapType;
|
||||
|
||||
#elif defined(ANDROID) /* Android */
|
||||
|
||||
struct android_native_window_t;
|
||||
struct egl_native_pixmap_t;
|
||||
|
||||
typedef struct android_native_window_t* EGLNativeWindowType;
|
||||
typedef struct egl_native_pixmap_t* EGLNativePixmapType;
|
||||
typedef void* EGLNativeDisplayType;
|
||||
|
||||
#elif defined(__unix__) || defined(__unix)
|
||||
|
||||
#ifdef MESA_EGL_NO_X11_HEADERS
|
||||
|
@@ -31,6 +31,7 @@
|
||||
|
||||
#define glAccum MANGLE(Accum)
|
||||
#define glActiveProgramEXT MANGLE(ActiveProgramEXT)
|
||||
#define glActiveShaderProgram MANGLE(ActiveShaderProgram)
|
||||
#define glActiveStencilFaceEXT MANGLE(ActiveStencilFaceEXT)
|
||||
#define glActiveTextureARB MANGLE(ActiveTextureARB)
|
||||
#define glActiveTexture MANGLE(ActiveTexture)
|
||||
@@ -56,6 +57,7 @@
|
||||
#define glBeginOcclusionQueryNV MANGLE(BeginOcclusionQueryNV)
|
||||
#define glBeginPerfMonitorAMD MANGLE(BeginPerfMonitorAMD)
|
||||
#define glBeginQueryARB MANGLE(BeginQueryARB)
|
||||
#define glBeginQueryIndexed MANGLE(BeginQueryIndexed)
|
||||
#define glBeginQuery MANGLE(BeginQuery)
|
||||
#define glBeginTransformFeedbackEXT MANGLE(BeginTransformFeedbackEXT)
|
||||
#define glBeginTransformFeedback MANGLE(BeginTransformFeedback)
|
||||
@@ -75,22 +77,27 @@
|
||||
#define glBindBufferRange MANGLE(BindBufferRange)
|
||||
#define glBindBufferRangeNV MANGLE(BindBufferRangeNV)
|
||||
#define glBindFragDataLocationEXT MANGLE(BindFragDataLocationEXT)
|
||||
#define glBindFragDataLocationIndexed MANGLE(BindFragDataLocationIndexed)
|
||||
#define glBindFragDataLocation MANGLE(BindFragDataLocation)
|
||||
#define glBindFragmentShaderATI MANGLE(BindFragmentShaderATI)
|
||||
#define glBindFramebufferEXT MANGLE(BindFramebufferEXT)
|
||||
#define glBindFramebuffer MANGLE(BindFramebuffer)
|
||||
#define glBindImageTextureEXT MANGLE(BindImageTextureEXT)
|
||||
#define glBindLightParameterEXT MANGLE(BindLightParameterEXT)
|
||||
#define glBindMaterialParameterEXT MANGLE(BindMaterialParameterEXT)
|
||||
#define glBindMultiTextureEXT MANGLE(BindMultiTextureEXT)
|
||||
#define glBindParameterEXT MANGLE(BindParameterEXT)
|
||||
#define glBindProgramARB MANGLE(BindProgramARB)
|
||||
#define glBindProgramNV MANGLE(BindProgramNV)
|
||||
#define glBindProgramPipeline MANGLE(BindProgramPipeline)
|
||||
#define glBindRenderbufferEXT MANGLE(BindRenderbufferEXT)
|
||||
#define glBindRenderbuffer MANGLE(BindRenderbuffer)
|
||||
#define glBindSampler MANGLE(BindSampler)
|
||||
#define glBindTexGenParameterEXT MANGLE(BindTexGenParameterEXT)
|
||||
#define glBindTextureEXT MANGLE(BindTextureEXT)
|
||||
#define glBindTexture MANGLE(BindTexture)
|
||||
#define glBindTextureUnitParameterEXT MANGLE(BindTextureUnitParameterEXT)
|
||||
#define glBindTransformFeedback MANGLE(BindTransformFeedback)
|
||||
#define glBindTransformFeedbackNV MANGLE(BindTransformFeedbackNV)
|
||||
#define glBindVertexArrayAPPLE MANGLE(BindVertexArrayAPPLE)
|
||||
#define glBindVertexArray MANGLE(BindVertexArray)
|
||||
@@ -112,18 +119,22 @@
|
||||
#define glBlendColorEXT MANGLE(BlendColorEXT)
|
||||
#define glBlendColor MANGLE(BlendColor)
|
||||
#define glBlendEquationEXT MANGLE(BlendEquationEXT)
|
||||
#define glBlendEquationiARB MANGLE(BlendEquationiARB)
|
||||
#define glBlendEquationi MANGLE(BlendEquationi)
|
||||
#define glBlendEquationIndexedAMD MANGLE(BlendEquationIndexedAMD)
|
||||
#define glBlendEquation MANGLE(BlendEquation)
|
||||
#define glBlendEquationSeparateATI MANGLE(BlendEquationSeparateATI)
|
||||
#define glBlendEquationSeparateEXT MANGLE(BlendEquationSeparateEXT)
|
||||
#define glBlendEquationSeparateiARB MANGLE(BlendEquationSeparateiARB)
|
||||
#define glBlendEquationSeparatei MANGLE(BlendEquationSeparatei)
|
||||
#define glBlendEquationSeparateIndexedAMD MANGLE(BlendEquationSeparateIndexedAMD)
|
||||
#define glBlendEquationSeparate MANGLE(BlendEquationSeparate)
|
||||
#define glBlendFunciARB MANGLE(BlendFunciARB)
|
||||
#define glBlendFunci MANGLE(BlendFunci)
|
||||
#define glBlendFuncIndexedAMD MANGLE(BlendFuncIndexedAMD)
|
||||
#define glBlendFunc MANGLE(BlendFunc)
|
||||
#define glBlendFuncSeparateEXT MANGLE(BlendFuncSeparateEXT)
|
||||
#define glBlendFuncSeparateiARB MANGLE(BlendFuncSeparateiARB)
|
||||
#define glBlendFuncSeparatei MANGLE(BlendFuncSeparatei)
|
||||
#define glBlendFuncSeparateIndexedAMD MANGLE(BlendFuncSeparateIndexedAMD)
|
||||
#define glBlendFuncSeparateINGR MANGLE(BlendFuncSeparateINGR)
|
||||
@@ -153,6 +164,7 @@
|
||||
#define glClearColor MANGLE(ClearColor)
|
||||
#define glClearDebugLogMESA MANGLE(ClearDebugLogMESA)
|
||||
#define glClearDepthdNV MANGLE(ClearDepthdNV)
|
||||
#define glClearDepthf MANGLE(ClearDepthf)
|
||||
#define glClearDepth MANGLE(ClearDepth)
|
||||
#define glClearIndex MANGLE(ClearIndex)
|
||||
#define glClear MANGLE(Clear)
|
||||
@@ -215,6 +227,10 @@
|
||||
#define glColorMaskIndexedEXT MANGLE(ColorMaskIndexedEXT)
|
||||
#define glColorMask MANGLE(ColorMask)
|
||||
#define glColorMaterial MANGLE(ColorMaterial)
|
||||
#define glColorP3ui MANGLE(ColorP3ui)
|
||||
#define glColorP3uiv MANGLE(ColorP3uiv)
|
||||
#define glColorP4ui MANGLE(ColorP4ui)
|
||||
#define glColorP4uiv MANGLE(ColorP4uiv)
|
||||
#define glColorPointerEXT MANGLE(ColorPointerEXT)
|
||||
#define glColorPointerListIBM MANGLE(ColorPointerListIBM)
|
||||
#define glColorPointer MANGLE(ColorPointer)
|
||||
@@ -236,6 +252,7 @@
|
||||
#define glCombinerParameterivNV MANGLE(CombinerParameterivNV)
|
||||
#define glCombinerStageParameterfvNV MANGLE(CombinerStageParameterfvNV)
|
||||
#define glCompileShaderARB MANGLE(CompileShaderARB)
|
||||
#define glCompileShaderIncludeARB MANGLE(CompileShaderIncludeARB)
|
||||
#define glCompileShader MANGLE(CompileShader)
|
||||
#define glCompressedMultiTexImage1DEXT MANGLE(CompressedMultiTexImage1DEXT)
|
||||
#define glCompressedMultiTexImage2DEXT MANGLE(CompressedMultiTexImage2DEXT)
|
||||
@@ -310,10 +327,18 @@
|
||||
#define glCreateShader MANGLE(CreateShader)
|
||||
#define glCreateShaderObjectARB MANGLE(CreateShaderObjectARB)
|
||||
#define glCreateShaderProgramEXT MANGLE(CreateShaderProgramEXT)
|
||||
#define glCreateShaderProgramv MANGLE(CreateShaderProgramv)
|
||||
#define glCreateSyncFromCLeventARB MANGLE(CreateSyncFromCLeventARB)
|
||||
#define glCullFace MANGLE(CullFace)
|
||||
#define glCullParameterdvEXT MANGLE(CullParameterdvEXT)
|
||||
#define glCullParameterfvEXT MANGLE(CullParameterfvEXT)
|
||||
#define glCurrentPaletteMatrixARB MANGLE(CurrentPaletteMatrixARB)
|
||||
#define glDebugMessageCallbackAMD MANGLE(DebugMessageCallbackAMD)
|
||||
#define glDebugMessageCallbackARB MANGLE(DebugMessageCallbackARB)
|
||||
#define glDebugMessageControlARB MANGLE(DebugMessageControlARB)
|
||||
#define glDebugMessageEnableAMD MANGLE(DebugMessageEnableAMD)
|
||||
#define glDebugMessageInsertAMD MANGLE(DebugMessageInsertAMD)
|
||||
#define glDebugMessageInsertARB MANGLE(DebugMessageInsertARB)
|
||||
#define glDeformationMap3dSGIX MANGLE(DeformationMap3dSGIX)
|
||||
#define glDeformationMap3fSGIX MANGLE(DeformationMap3fSGIX)
|
||||
#define glDeformSGIX MANGLE(DeformSGIX)
|
||||
@@ -326,20 +351,25 @@
|
||||
#define glDeleteFramebuffersEXT MANGLE(DeleteFramebuffersEXT)
|
||||
#define glDeleteFramebuffers MANGLE(DeleteFramebuffers)
|
||||
#define glDeleteLists MANGLE(DeleteLists)
|
||||
#define glDeleteNamedStringARB MANGLE(DeleteNamedStringARB)
|
||||
#define glDeleteNamesAMD MANGLE(DeleteNamesAMD)
|
||||
#define glDeleteObjectARB MANGLE(DeleteObjectARB)
|
||||
#define glDeleteOcclusionQueriesNV MANGLE(DeleteOcclusionQueriesNV)
|
||||
#define glDeletePerfMonitorsAMD MANGLE(DeletePerfMonitorsAMD)
|
||||
#define glDeleteProgram MANGLE(DeleteProgram)
|
||||
#define glDeleteProgramPipelines MANGLE(DeleteProgramPipelines)
|
||||
#define glDeleteProgramsARB MANGLE(DeleteProgramsARB)
|
||||
#define glDeleteProgramsNV MANGLE(DeleteProgramsNV)
|
||||
#define glDeleteQueriesARB MANGLE(DeleteQueriesARB)
|
||||
#define glDeleteQueries MANGLE(DeleteQueries)
|
||||
#define glDeleteRenderbuffersEXT MANGLE(DeleteRenderbuffersEXT)
|
||||
#define glDeleteRenderbuffers MANGLE(DeleteRenderbuffers)
|
||||
#define glDeleteSamplers MANGLE(DeleteSamplers)
|
||||
#define glDeleteShader MANGLE(DeleteShader)
|
||||
#define glDeleteSync MANGLE(DeleteSync)
|
||||
#define glDeleteTexturesEXT MANGLE(DeleteTexturesEXT)
|
||||
#define glDeleteTextures MANGLE(DeleteTextures)
|
||||
#define glDeleteTransformFeedbacks MANGLE(DeleteTransformFeedbacks)
|
||||
#define glDeleteTransformFeedbacksNV MANGLE(DeleteTransformFeedbacksNV)
|
||||
#define glDeleteVertexArraysAPPLE MANGLE(DeleteVertexArraysAPPLE)
|
||||
#define glDeleteVertexArrays MANGLE(DeleteVertexArrays)
|
||||
@@ -348,7 +378,10 @@
|
||||
#define glDepthBoundsEXT MANGLE(DepthBoundsEXT)
|
||||
#define glDepthFunc MANGLE(DepthFunc)
|
||||
#define glDepthMask MANGLE(DepthMask)
|
||||
#define glDepthRangeArrayv MANGLE(DepthRangeArrayv)
|
||||
#define glDepthRangedNV MANGLE(DepthRangedNV)
|
||||
#define glDepthRangef MANGLE(DepthRangef)
|
||||
#define glDepthRangeIndexed MANGLE(DepthRangeIndexed)
|
||||
#define glDepthRange MANGLE(DepthRange)
|
||||
#define glDetachObjectARB MANGLE(DetachObjectARB)
|
||||
#define glDetachShader MANGLE(DetachShader)
|
||||
@@ -363,6 +396,7 @@
|
||||
#define glDisableVertexAttribArrayARB MANGLE(DisableVertexAttribArrayARB)
|
||||
#define glDisableVertexAttribArray MANGLE(DisableVertexAttribArray)
|
||||
#define glDrawArraysEXT MANGLE(DrawArraysEXT)
|
||||
#define glDrawArraysIndirect MANGLE(DrawArraysIndirect)
|
||||
#define glDrawArraysInstancedARB MANGLE(DrawArraysInstancedARB)
|
||||
#define glDrawArraysInstancedEXT MANGLE(DrawArraysInstancedEXT)
|
||||
#define glDrawArraysInstanced MANGLE(DrawArraysInstanced)
|
||||
@@ -374,6 +408,7 @@
|
||||
#define glDrawElementArrayAPPLE MANGLE(DrawElementArrayAPPLE)
|
||||
#define glDrawElementArrayATI MANGLE(DrawElementArrayATI)
|
||||
#define glDrawElementsBaseVertex MANGLE(DrawElementsBaseVertex)
|
||||
#define glDrawElementsIndirect MANGLE(DrawElementsIndirect)
|
||||
#define glDrawElementsInstancedARB MANGLE(DrawElementsInstancedARB)
|
||||
#define glDrawElementsInstancedBaseVertex MANGLE(DrawElementsInstancedBaseVertex)
|
||||
#define glDrawElementsInstancedEXT MANGLE(DrawElementsInstancedEXT)
|
||||
@@ -386,7 +421,9 @@
|
||||
#define glDrawRangeElementsBaseVertex MANGLE(DrawRangeElementsBaseVertex)
|
||||
#define glDrawRangeElementsEXT MANGLE(DrawRangeElementsEXT)
|
||||
#define glDrawRangeElements MANGLE(DrawRangeElements)
|
||||
#define glDrawTransformFeedback MANGLE(DrawTransformFeedback)
|
||||
#define glDrawTransformFeedbackNV MANGLE(DrawTransformFeedbackNV)
|
||||
#define glDrawTransformFeedbackStream MANGLE(DrawTransformFeedbackStream)
|
||||
#define glEdgeFlagFormatNV MANGLE(EdgeFlagFormatNV)
|
||||
#define glEdgeFlag MANGLE(EdgeFlag)
|
||||
#define glEdgeFlagPointerEXT MANGLE(EdgeFlagPointerEXT)
|
||||
@@ -414,6 +451,7 @@
|
||||
#define glEndOcclusionQueryNV MANGLE(EndOcclusionQueryNV)
|
||||
#define glEndPerfMonitorAMD MANGLE(EndPerfMonitorAMD)
|
||||
#define glEndQueryARB MANGLE(EndQueryARB)
|
||||
#define glEndQueryIndexed MANGLE(EndQueryIndexed)
|
||||
#define glEndQuery MANGLE(EndQuery)
|
||||
#define glEndTransformFeedbackEXT MANGLE(EndTransformFeedbackEXT)
|
||||
#define glEndTransformFeedback MANGLE(EndTransformFeedback)
|
||||
@@ -447,6 +485,7 @@
|
||||
#define glFlush MANGLE(Flush)
|
||||
#define glFlushMappedBufferRangeAPPLE MANGLE(FlushMappedBufferRangeAPPLE)
|
||||
#define glFlushMappedBufferRange MANGLE(FlushMappedBufferRange)
|
||||
#define glFlushMappedNamedBufferRangeEXT MANGLE(FlushMappedNamedBufferRangeEXT)
|
||||
#define glFlushPixelDataRangeNV MANGLE(FlushPixelDataRangeNV)
|
||||
#define glFlushRasterSGIX MANGLE(FlushRasterSGIX)
|
||||
#define glFlushVertexArrayRangeAPPLE MANGLE(FlushVertexArrayRangeAPPLE)
|
||||
@@ -498,7 +537,6 @@
|
||||
#define glFramebufferTextureEXT MANGLE(FramebufferTextureEXT)
|
||||
#define glFramebufferTextureFaceARB MANGLE(FramebufferTextureFaceARB)
|
||||
#define glFramebufferTextureFaceEXT MANGLE(FramebufferTextureFaceEXT)
|
||||
#define glFramebufferTextureFace MANGLE(FramebufferTextureFace)
|
||||
#define glFramebufferTextureLayerARB MANGLE(FramebufferTextureLayerARB)
|
||||
#define glFramebufferTextureLayerEXT MANGLE(FramebufferTextureLayerEXT)
|
||||
#define glFramebufferTextureLayer MANGLE(FramebufferTextureLayer)
|
||||
@@ -521,23 +559,30 @@
|
||||
#define glGenFramebuffersEXT MANGLE(GenFramebuffersEXT)
|
||||
#define glGenFramebuffers MANGLE(GenFramebuffers)
|
||||
#define glGenLists MANGLE(GenLists)
|
||||
#define glGenNamesAMD MANGLE(GenNamesAMD)
|
||||
#define glGenOcclusionQueriesNV MANGLE(GenOcclusionQueriesNV)
|
||||
#define glGenPerfMonitorsAMD MANGLE(GenPerfMonitorsAMD)
|
||||
#define glGenProgramPipelines MANGLE(GenProgramPipelines)
|
||||
#define glGenProgramsARB MANGLE(GenProgramsARB)
|
||||
#define glGenProgramsNV MANGLE(GenProgramsNV)
|
||||
#define glGenQueriesARB MANGLE(GenQueriesARB)
|
||||
#define glGenQueries MANGLE(GenQueries)
|
||||
#define glGenRenderbuffersEXT MANGLE(GenRenderbuffersEXT)
|
||||
#define glGenRenderbuffers MANGLE(GenRenderbuffers)
|
||||
#define glGenSamplers MANGLE(GenSamplers)
|
||||
#define glGenSymbolsEXT MANGLE(GenSymbolsEXT)
|
||||
#define glGenTexturesEXT MANGLE(GenTexturesEXT)
|
||||
#define glGenTextures MANGLE(GenTextures)
|
||||
#define glGenTransformFeedbacks MANGLE(GenTransformFeedbacks)
|
||||
#define glGenTransformFeedbacksNV MANGLE(GenTransformFeedbacksNV)
|
||||
#define glGenVertexArraysAPPLE MANGLE(GenVertexArraysAPPLE)
|
||||
#define glGenVertexArrays MANGLE(GenVertexArrays)
|
||||
#define glGenVertexShadersEXT MANGLE(GenVertexShadersEXT)
|
||||
#define glGetActiveAttribARB MANGLE(GetActiveAttribARB)
|
||||
#define glGetActiveAttrib MANGLE(GetActiveAttrib)
|
||||
#define glGetActiveSubroutineName MANGLE(GetActiveSubroutineName)
|
||||
#define glGetActiveSubroutineUniformiv MANGLE(GetActiveSubroutineUniformiv)
|
||||
#define glGetActiveSubroutineUniformName MANGLE(GetActiveSubroutineUniformName)
|
||||
#define glGetActiveUniformARB MANGLE(GetActiveUniformARB)
|
||||
#define glGetActiveUniformBlockiv MANGLE(GetActiveUniformBlockiv)
|
||||
#define glGetActiveUniformBlockName MANGLE(GetActiveUniformBlockName)
|
||||
@@ -589,16 +634,21 @@
|
||||
#define glGetConvolutionParameteriv MANGLE(GetConvolutionParameteriv)
|
||||
#define glGetDebugLogLengthMESA MANGLE(GetDebugLogLengthMESA)
|
||||
#define glGetDebugLogMESA MANGLE(GetDebugLogMESA)
|
||||
#define glGetDebugMessageLogAMD MANGLE(GetDebugMessageLogAMD)
|
||||
#define glGetDebugMessageLogARB MANGLE(GetDebugMessageLogARB)
|
||||
#define glGetDetailTexFuncSGIS MANGLE(GetDetailTexFuncSGIS)
|
||||
#define glGetDoubleIndexedvEXT MANGLE(GetDoubleIndexedvEXT)
|
||||
#define glGetDoublei_v MANGLE(GetDoublei_v)
|
||||
#define glGetDoublev MANGLE(GetDoublev)
|
||||
#define glGetError MANGLE(GetError)
|
||||
#define glGetFenceivNV MANGLE(GetFenceivNV)
|
||||
#define glGetFinalCombinerInputParameterfvNV MANGLE(GetFinalCombinerInputParameterfvNV)
|
||||
#define glGetFinalCombinerInputParameterivNV MANGLE(GetFinalCombinerInputParameterivNV)
|
||||
#define glGetFloatIndexedvEXT MANGLE(GetFloatIndexedvEXT)
|
||||
#define glGetFloati_v MANGLE(GetFloati_v)
|
||||
#define glGetFloatv MANGLE(GetFloatv)
|
||||
#define glGetFogFuncSGIS MANGLE(GetFogFuncSGIS)
|
||||
#define glGetFragDataIndex MANGLE(GetFragDataIndex)
|
||||
#define glGetFragDataLocationEXT MANGLE(GetFragDataLocationEXT)
|
||||
#define glGetFragDataLocation MANGLE(GetFragDataLocation)
|
||||
#define glGetFragmentLightfvSGIX MANGLE(GetFragmentLightfvSGIX)
|
||||
@@ -608,6 +658,7 @@
|
||||
#define glGetFramebufferAttachmentParameterivEXT MANGLE(GetFramebufferAttachmentParameterivEXT)
|
||||
#define glGetFramebufferAttachmentParameteriv MANGLE(GetFramebufferAttachmentParameteriv)
|
||||
#define glGetFramebufferParameterivEXT MANGLE(GetFramebufferParameterivEXT)
|
||||
#define glGetGraphicsResetStatusARB MANGLE(GetGraphicsResetStatusARB)
|
||||
#define glGetHandleARB MANGLE(GetHandleARB)
|
||||
#define glGetHistogramEXT MANGLE(GetHistogramEXT)
|
||||
#define glGetHistogram MANGLE(GetHistogram)
|
||||
@@ -678,6 +729,26 @@
|
||||
#define glGetNamedProgramLocalParameterIuivEXT MANGLE(GetNamedProgramLocalParameterIuivEXT)
|
||||
#define glGetNamedProgramStringEXT MANGLE(GetNamedProgramStringEXT)
|
||||
#define glGetNamedRenderbufferParameterivEXT MANGLE(GetNamedRenderbufferParameterivEXT)
|
||||
#define glGetNamedStringARB MANGLE(GetNamedStringARB)
|
||||
#define glGetNamedStringivARB MANGLE(GetNamedStringivARB)
|
||||
#define glGetnColorTableARB MANGLE(GetnColorTableARB)
|
||||
#define glGetnCompressedTexImageARB MANGLE(GetnCompressedTexImageARB)
|
||||
#define glGetnConvolutionFilterARB MANGLE(GetnConvolutionFilterARB)
|
||||
#define glGetnHistogramARB MANGLE(GetnHistogramARB)
|
||||
#define glGetnMapdvARB MANGLE(GetnMapdvARB)
|
||||
#define glGetnMapfvARB MANGLE(GetnMapfvARB)
|
||||
#define glGetnMapivARB MANGLE(GetnMapivARB)
|
||||
#define glGetnMinmaxARB MANGLE(GetnMinmaxARB)
|
||||
#define glGetnPixelMapfvARB MANGLE(GetnPixelMapfvARB)
|
||||
#define glGetnPixelMapuivARB MANGLE(GetnPixelMapuivARB)
|
||||
#define glGetnPixelMapusvARB MANGLE(GetnPixelMapusvARB)
|
||||
#define glGetnPolygonStippleARB MANGLE(GetnPolygonStippleARB)
|
||||
#define glGetnSeparableFilterARB MANGLE(GetnSeparableFilterARB)
|
||||
#define glGetnTexImageARB MANGLE(GetnTexImageARB)
|
||||
#define glGetnUniformdvARB MANGLE(GetnUniformdvARB)
|
||||
#define glGetnUniformfvARB MANGLE(GetnUniformfvARB)
|
||||
#define glGetnUniformivARB MANGLE(GetnUniformivARB)
|
||||
#define glGetnUniformuivARB MANGLE(GetnUniformuivARB)
|
||||
#define glGetObjectBufferfvATI MANGLE(GetObjectBufferfvATI)
|
||||
#define glGetObjectBufferivATI MANGLE(GetObjectBufferivATI)
|
||||
#define glGetObjectParameterfvARB MANGLE(GetObjectParameterfvARB)
|
||||
@@ -700,6 +771,7 @@
|
||||
#define glGetPointervEXT MANGLE(GetPointervEXT)
|
||||
#define glGetPointerv MANGLE(GetPointerv)
|
||||
#define glGetPolygonStipple MANGLE(GetPolygonStipple)
|
||||
#define glGetProgramBinary MANGLE(GetProgramBinary)
|
||||
#define glGetProgramEnvParameterdvARB MANGLE(GetProgramEnvParameterdvARB)
|
||||
#define glGetProgramEnvParameterfvARB MANGLE(GetProgramEnvParameterfvARB)
|
||||
#define glGetProgramEnvParameterIivNV MANGLE(GetProgramEnvParameterIivNV)
|
||||
@@ -716,28 +788,42 @@
|
||||
#define glGetProgramNamedParameterfvNV MANGLE(GetProgramNamedParameterfvNV)
|
||||
#define glGetProgramParameterdvNV MANGLE(GetProgramParameterdvNV)
|
||||
#define glGetProgramParameterfvNV MANGLE(GetProgramParameterfvNV)
|
||||
#define glGetProgramPipelineInfoLog MANGLE(GetProgramPipelineInfoLog)
|
||||
#define glGetProgramPipelineiv MANGLE(GetProgramPipelineiv)
|
||||
#define glGetProgramRegisterfvMESA MANGLE(GetProgramRegisterfvMESA)
|
||||
#define glGetProgramStageiv MANGLE(GetProgramStageiv)
|
||||
#define glGetProgramStringARB MANGLE(GetProgramStringARB)
|
||||
#define glGetProgramStringNV MANGLE(GetProgramStringNV)
|
||||
#define glGetProgramSubroutineParameteruivNV MANGLE(GetProgramSubroutineParameteruivNV)
|
||||
#define glGetQueryIndexediv MANGLE(GetQueryIndexediv)
|
||||
#define glGetQueryivARB MANGLE(GetQueryivARB)
|
||||
#define glGetQueryiv MANGLE(GetQueryiv)
|
||||
#define glGetQueryObjecti64vEXT MANGLE(GetQueryObjecti64vEXT)
|
||||
#define glGetQueryObjecti64v MANGLE(GetQueryObjecti64v)
|
||||
#define glGetQueryObjectivARB MANGLE(GetQueryObjectivARB)
|
||||
#define glGetQueryObjectiv MANGLE(GetQueryObjectiv)
|
||||
#define glGetQueryObjectui64vEXT MANGLE(GetQueryObjectui64vEXT)
|
||||
#define glGetQueryObjectui64v MANGLE(GetQueryObjectui64v)
|
||||
#define glGetQueryObjectuivARB MANGLE(GetQueryObjectuivARB)
|
||||
#define glGetQueryObjectuiv MANGLE(GetQueryObjectuiv)
|
||||
#define glGetRenderbufferParameterivEXT MANGLE(GetRenderbufferParameterivEXT)
|
||||
#define glGetRenderbufferParameteriv MANGLE(GetRenderbufferParameteriv)
|
||||
#define glGetSamplerParameterfv MANGLE(GetSamplerParameterfv)
|
||||
#define glGetSamplerParameterIiv MANGLE(GetSamplerParameterIiv)
|
||||
#define glGetSamplerParameterIuiv MANGLE(GetSamplerParameterIuiv)
|
||||
#define glGetSamplerParameteriv MANGLE(GetSamplerParameteriv)
|
||||
#define glGetSeparableFilterEXT MANGLE(GetSeparableFilterEXT)
|
||||
#define glGetSeparableFilter MANGLE(GetSeparableFilter)
|
||||
#define glGetShaderInfoLog MANGLE(GetShaderInfoLog)
|
||||
#define glGetShaderiv MANGLE(GetShaderiv)
|
||||
#define glGetShaderPrecisionFormat MANGLE(GetShaderPrecisionFormat)
|
||||
#define glGetShaderSourceARB MANGLE(GetShaderSourceARB)
|
||||
#define glGetShaderSource MANGLE(GetShaderSource)
|
||||
#define glGetSharpenTexFuncSGIS MANGLE(GetSharpenTexFuncSGIS)
|
||||
#define glGetStringi MANGLE(GetStringi)
|
||||
#define glGetString MANGLE(GetString)
|
||||
#define glGetSubroutineIndex MANGLE(GetSubroutineIndex)
|
||||
#define glGetSubroutineUniformLocation MANGLE(GetSubroutineUniformLocation)
|
||||
#define glGetSynciv MANGLE(GetSynciv)
|
||||
#define glGetTexBumpParameterfvATI MANGLE(GetTexBumpParameterfvATI)
|
||||
#define glGetTexBumpParameterivATI MANGLE(GetTexBumpParameterivATI)
|
||||
@@ -770,14 +856,17 @@
|
||||
#define glGetTransformFeedbackVaryingNV MANGLE(GetTransformFeedbackVaryingNV)
|
||||
#define glGetUniformBlockIndex MANGLE(GetUniformBlockIndex)
|
||||
#define glGetUniformBufferSizeEXT MANGLE(GetUniformBufferSizeEXT)
|
||||
#define glGetUniformdv MANGLE(GetUniformdv)
|
||||
#define glGetUniformfvARB MANGLE(GetUniformfvARB)
|
||||
#define glGetUniformfv MANGLE(GetUniformfv)
|
||||
#define glGetUniformi64vNV MANGLE(GetUniformi64vNV)
|
||||
#define glGetUniformIndices MANGLE(GetUniformIndices)
|
||||
#define glGetUniformivARB MANGLE(GetUniformivARB)
|
||||
#define glGetUniformiv MANGLE(GetUniformiv)
|
||||
#define glGetUniformLocationARB MANGLE(GetUniformLocationARB)
|
||||
#define glGetUniformLocation MANGLE(GetUniformLocation)
|
||||
#define glGetUniformOffsetEXT MANGLE(GetUniformOffsetEXT)
|
||||
#define glGetUniformSubroutineuiv MANGLE(GetUniformSubroutineuiv)
|
||||
#define glGetUniformui64vNV MANGLE(GetUniformui64vNV)
|
||||
#define glGetUniformuivEXT MANGLE(GetUniformuivEXT)
|
||||
#define glGetUniformuiv MANGLE(GetUniformuiv)
|
||||
@@ -803,6 +892,10 @@
|
||||
#define glGetVertexAttribivARB MANGLE(GetVertexAttribivARB)
|
||||
#define glGetVertexAttribiv MANGLE(GetVertexAttribiv)
|
||||
#define glGetVertexAttribivNV MANGLE(GetVertexAttribivNV)
|
||||
#define glGetVertexAttribLdvEXT MANGLE(GetVertexAttribLdvEXT)
|
||||
#define glGetVertexAttribLdv MANGLE(GetVertexAttribLdv)
|
||||
#define glGetVertexAttribLi64vNV MANGLE(GetVertexAttribLi64vNV)
|
||||
#define glGetVertexAttribLui64vNV MANGLE(GetVertexAttribLui64vNV)
|
||||
#define glGetVertexAttribPointervARB MANGLE(GetVertexAttribPointervARB)
|
||||
#define glGetVertexAttribPointerv MANGLE(GetVertexAttribPointerv)
|
||||
#define glGetVertexAttribPointervNV MANGLE(GetVertexAttribPointervNV)
|
||||
@@ -864,20 +957,25 @@
|
||||
#define glIsFramebufferEXT MANGLE(IsFramebufferEXT)
|
||||
#define glIsFramebuffer MANGLE(IsFramebuffer)
|
||||
#define glIsList MANGLE(IsList)
|
||||
#define glIsNameAMD MANGLE(IsNameAMD)
|
||||
#define glIsNamedBufferResidentNV MANGLE(IsNamedBufferResidentNV)
|
||||
#define glIsNamedStringARB MANGLE(IsNamedStringARB)
|
||||
#define glIsObjectBufferATI MANGLE(IsObjectBufferATI)
|
||||
#define glIsOcclusionQueryNV MANGLE(IsOcclusionQueryNV)
|
||||
#define glIsProgramARB MANGLE(IsProgramARB)
|
||||
#define glIsProgram MANGLE(IsProgram)
|
||||
#define glIsProgramNV MANGLE(IsProgramNV)
|
||||
#define glIsProgramPipeline MANGLE(IsProgramPipeline)
|
||||
#define glIsQueryARB MANGLE(IsQueryARB)
|
||||
#define glIsQuery MANGLE(IsQuery)
|
||||
#define glIsRenderbufferEXT MANGLE(IsRenderbufferEXT)
|
||||
#define glIsRenderbuffer MANGLE(IsRenderbuffer)
|
||||
#define glIsSampler MANGLE(IsSampler)
|
||||
#define glIsShader MANGLE(IsShader)
|
||||
#define glIsSync MANGLE(IsSync)
|
||||
#define glIsTextureEXT MANGLE(IsTextureEXT)
|
||||
#define glIsTexture MANGLE(IsTexture)
|
||||
#define glIsTransformFeedback MANGLE(IsTransformFeedback)
|
||||
#define glIsTransformFeedbackNV MANGLE(IsTransformFeedbackNV)
|
||||
#define glIsVariantEnabledEXT MANGLE(IsVariantEnabledEXT)
|
||||
#define glIsVertexArrayAPPLE MANGLE(IsVertexArrayAPPLE)
|
||||
@@ -915,6 +1013,8 @@
|
||||
#define glLogicOp MANGLE(LogicOp)
|
||||
#define glMakeBufferNonResidentNV MANGLE(MakeBufferNonResidentNV)
|
||||
#define glMakeBufferResidentNV MANGLE(MakeBufferResidentNV)
|
||||
#define glMakeNamedBufferNonResidentNV MANGLE(MakeNamedBufferNonResidentNV)
|
||||
#define glMakeNamedBufferResidentNV MANGLE(MakeNamedBufferResidentNV)
|
||||
#define glMap1d MANGLE(Map1d)
|
||||
#define glMap1f MANGLE(Map1f)
|
||||
#define glMap2d MANGLE(Map2d)
|
||||
@@ -928,6 +1028,7 @@
|
||||
#define glMapGrid2d MANGLE(MapGrid2d)
|
||||
#define glMapGrid2f MANGLE(MapGrid2f)
|
||||
#define glMapNamedBufferEXT MANGLE(MapNamedBufferEXT)
|
||||
#define glMapNamedBufferRangeEXT MANGLE(MapNamedBufferRangeEXT)
|
||||
#define glMapObjectBufferATI MANGLE(MapObjectBufferATI)
|
||||
#define glMapParameterfvNV MANGLE(MapParameterfvNV)
|
||||
#define glMapParameterivNV MANGLE(MapParameterivNV)
|
||||
@@ -963,8 +1064,10 @@
|
||||
#define glMatrixScalefEXT MANGLE(MatrixScalefEXT)
|
||||
#define glMatrixTranslatedEXT MANGLE(MatrixTranslatedEXT)
|
||||
#define glMatrixTranslatefEXT MANGLE(MatrixTranslatefEXT)
|
||||
#define glMemoryBarrierEXT MANGLE(MemoryBarrierEXT)
|
||||
#define glMinmaxEXT MANGLE(MinmaxEXT)
|
||||
#define glMinmax MANGLE(Minmax)
|
||||
#define glMinSampleShadingARB MANGLE(MinSampleShadingARB)
|
||||
#define glMinSampleShading MANGLE(MinSampleShading)
|
||||
#define glMultiDrawArraysEXT MANGLE(MultiDrawArraysEXT)
|
||||
#define glMultiDrawArrays MANGLE(MultiDrawArrays)
|
||||
@@ -1048,6 +1151,14 @@
|
||||
#define glMultiTexCoord4s MANGLE(MultiTexCoord4s)
|
||||
#define glMultiTexCoord4svARB MANGLE(MultiTexCoord4svARB)
|
||||
#define glMultiTexCoord4sv MANGLE(MultiTexCoord4sv)
|
||||
#define glMultiTexCoordP1ui MANGLE(MultiTexCoordP1ui)
|
||||
#define glMultiTexCoordP1uiv MANGLE(MultiTexCoordP1uiv)
|
||||
#define glMultiTexCoordP2ui MANGLE(MultiTexCoordP2ui)
|
||||
#define glMultiTexCoordP2uiv MANGLE(MultiTexCoordP2uiv)
|
||||
#define glMultiTexCoordP3ui MANGLE(MultiTexCoordP3ui)
|
||||
#define glMultiTexCoordP3uiv MANGLE(MultiTexCoordP3uiv)
|
||||
#define glMultiTexCoordP4ui MANGLE(MultiTexCoordP4ui)
|
||||
#define glMultiTexCoordP4uiv MANGLE(MultiTexCoordP4uiv)
|
||||
#define glMultiTexCoordPointerEXT MANGLE(MultiTexCoordPointerEXT)
|
||||
#define glMultiTexEnvfEXT MANGLE(MultiTexEnvfEXT)
|
||||
#define glMultiTexEnvfvEXT MANGLE(MultiTexEnvfvEXT)
|
||||
@@ -1080,6 +1191,7 @@
|
||||
#define glMultTransposeMatrixf MANGLE(MultTransposeMatrixf)
|
||||
#define glNamedBufferDataEXT MANGLE(NamedBufferDataEXT)
|
||||
#define glNamedBufferSubDataEXT MANGLE(NamedBufferSubDataEXT)
|
||||
#define glNamedCopyBufferSubDataEXT MANGLE(NamedCopyBufferSubDataEXT)
|
||||
#define glNamedFramebufferRenderbufferEXT MANGLE(NamedFramebufferRenderbufferEXT)
|
||||
#define glNamedFramebufferTexture1DEXT MANGLE(NamedFramebufferTexture1DEXT)
|
||||
#define glNamedFramebufferTexture2DEXT MANGLE(NamedFramebufferTexture2DEXT)
|
||||
@@ -1087,8 +1199,6 @@
|
||||
#define glNamedFramebufferTextureEXT MANGLE(NamedFramebufferTextureEXT)
|
||||
#define glNamedFramebufferTextureFaceEXT MANGLE(NamedFramebufferTextureFaceEXT)
|
||||
#define glNamedFramebufferTextureLayerEXT MANGLE(NamedFramebufferTextureLayerEXT)
|
||||
#define glNamedMakeBufferNonResidentNV MANGLE(NamedMakeBufferNonResidentNV)
|
||||
#define glNamedMakeBufferResidentNV MANGLE(NamedMakeBufferResidentNV)
|
||||
#define glNamedProgramLocalParameter4dEXT MANGLE(NamedProgramLocalParameter4dEXT)
|
||||
#define glNamedProgramLocalParameter4dvEXT MANGLE(NamedProgramLocalParameter4dvEXT)
|
||||
#define glNamedProgramLocalParameter4fEXT MANGLE(NamedProgramLocalParameter4fEXT)
|
||||
@@ -1104,6 +1214,7 @@
|
||||
#define glNamedRenderbufferStorageEXT MANGLE(NamedRenderbufferStorageEXT)
|
||||
#define glNamedRenderbufferStorageMultisampleCoverageEXT MANGLE(NamedRenderbufferStorageMultisampleCoverageEXT)
|
||||
#define glNamedRenderbufferStorageMultisampleEXT MANGLE(NamedRenderbufferStorageMultisampleEXT)
|
||||
#define glNamedStringARB MANGLE(NamedStringARB)
|
||||
#define glNewList MANGLE(NewList)
|
||||
#define glNewObjectBufferATI MANGLE(NewObjectBufferATI)
|
||||
#define glNormal3b MANGLE(Normal3b)
|
||||
@@ -1121,6 +1232,8 @@
|
||||
#define glNormal3s MANGLE(Normal3s)
|
||||
#define glNormal3sv MANGLE(Normal3sv)
|
||||
#define glNormalFormatNV MANGLE(NormalFormatNV)
|
||||
#define glNormalP3ui MANGLE(NormalP3ui)
|
||||
#define glNormalP3uiv MANGLE(NormalP3uiv)
|
||||
#define glNormalPointerEXT MANGLE(NormalPointerEXT)
|
||||
#define glNormalPointerListIBM MANGLE(NormalPointerListIBM)
|
||||
#define glNormalPointer MANGLE(NormalPointer)
|
||||
@@ -1140,6 +1253,9 @@
|
||||
#define glOrtho MANGLE(Ortho)
|
||||
#define glPassTexCoordATI MANGLE(PassTexCoordATI)
|
||||
#define glPassThrough MANGLE(PassThrough)
|
||||
#define glPatchParameterfv MANGLE(PatchParameterfv)
|
||||
#define glPatchParameteri MANGLE(PatchParameteri)
|
||||
#define glPauseTransformFeedback MANGLE(PauseTransformFeedback)
|
||||
#define glPauseTransformFeedbackNV MANGLE(PauseTransformFeedbackNV)
|
||||
#define glPixelDataRangeNV MANGLE(PixelDataRangeNV)
|
||||
#define glPixelMapfv MANGLE(PixelMapfv)
|
||||
@@ -1191,6 +1307,7 @@
|
||||
#define glPrimitiveRestartNV MANGLE(PrimitiveRestartNV)
|
||||
#define glPrioritizeTexturesEXT MANGLE(PrioritizeTexturesEXT)
|
||||
#define glPrioritizeTextures MANGLE(PrioritizeTextures)
|
||||
#define glProgramBinary MANGLE(ProgramBinary)
|
||||
#define glProgramBufferParametersfvNV MANGLE(ProgramBufferParametersfvNV)
|
||||
#define glProgramBufferParametersIivNV MANGLE(ProgramBufferParametersIivNV)
|
||||
#define glProgramBufferParametersIuivNV MANGLE(ProgramBufferParametersIuivNV)
|
||||
@@ -1231,39 +1348,123 @@
|
||||
#define glProgramParameters4dvNV MANGLE(ProgramParameters4dvNV)
|
||||
#define glProgramParameters4fvNV MANGLE(ProgramParameters4fvNV)
|
||||
#define glProgramStringARB MANGLE(ProgramStringARB)
|
||||
#define glProgramSubroutineParametersuivNV MANGLE(ProgramSubroutineParametersuivNV)
|
||||
#define glProgramUniform1dEXT MANGLE(ProgramUniform1dEXT)
|
||||
#define glProgramUniform1d MANGLE(ProgramUniform1d)
|
||||
#define glProgramUniform1dvEXT MANGLE(ProgramUniform1dvEXT)
|
||||
#define glProgramUniform1dv MANGLE(ProgramUniform1dv)
|
||||
#define glProgramUniform1fEXT MANGLE(ProgramUniform1fEXT)
|
||||
#define glProgramUniform1f MANGLE(ProgramUniform1f)
|
||||
#define glProgramUniform1fvEXT MANGLE(ProgramUniform1fvEXT)
|
||||
#define glProgramUniform1fv MANGLE(ProgramUniform1fv)
|
||||
#define glProgramUniform1i64NV MANGLE(ProgramUniform1i64NV)
|
||||
#define glProgramUniform1i64vNV MANGLE(ProgramUniform1i64vNV)
|
||||
#define glProgramUniform1iEXT MANGLE(ProgramUniform1iEXT)
|
||||
#define glProgramUniform1i MANGLE(ProgramUniform1i)
|
||||
#define glProgramUniform1ivEXT MANGLE(ProgramUniform1ivEXT)
|
||||
#define glProgramUniform1iv MANGLE(ProgramUniform1iv)
|
||||
#define glProgramUniform1ui64NV MANGLE(ProgramUniform1ui64NV)
|
||||
#define glProgramUniform1ui64vNV MANGLE(ProgramUniform1ui64vNV)
|
||||
#define glProgramUniform1uiEXT MANGLE(ProgramUniform1uiEXT)
|
||||
#define glProgramUniform1ui MANGLE(ProgramUniform1ui)
|
||||
#define glProgramUniform1uivEXT MANGLE(ProgramUniform1uivEXT)
|
||||
#define glProgramUniform1uiv MANGLE(ProgramUniform1uiv)
|
||||
#define glProgramUniform2dEXT MANGLE(ProgramUniform2dEXT)
|
||||
#define glProgramUniform2d MANGLE(ProgramUniform2d)
|
||||
#define glProgramUniform2dvEXT MANGLE(ProgramUniform2dvEXT)
|
||||
#define glProgramUniform2dv MANGLE(ProgramUniform2dv)
|
||||
#define glProgramUniform2fEXT MANGLE(ProgramUniform2fEXT)
|
||||
#define glProgramUniform2f MANGLE(ProgramUniform2f)
|
||||
#define glProgramUniform2fvEXT MANGLE(ProgramUniform2fvEXT)
|
||||
#define glProgramUniform2fv MANGLE(ProgramUniform2fv)
|
||||
#define glProgramUniform2i64NV MANGLE(ProgramUniform2i64NV)
|
||||
#define glProgramUniform2i64vNV MANGLE(ProgramUniform2i64vNV)
|
||||
#define glProgramUniform2iEXT MANGLE(ProgramUniform2iEXT)
|
||||
#define glProgramUniform2i MANGLE(ProgramUniform2i)
|
||||
#define glProgramUniform2ivEXT MANGLE(ProgramUniform2ivEXT)
|
||||
#define glProgramUniform2iv MANGLE(ProgramUniform2iv)
|
||||
#define glProgramUniform2ui64NV MANGLE(ProgramUniform2ui64NV)
|
||||
#define glProgramUniform2ui64vNV MANGLE(ProgramUniform2ui64vNV)
|
||||
#define glProgramUniform2uiEXT MANGLE(ProgramUniform2uiEXT)
|
||||
#define glProgramUniform2ui MANGLE(ProgramUniform2ui)
|
||||
#define glProgramUniform2uivEXT MANGLE(ProgramUniform2uivEXT)
|
||||
#define glProgramUniform2uiv MANGLE(ProgramUniform2uiv)
|
||||
#define glProgramUniform3dEXT MANGLE(ProgramUniform3dEXT)
|
||||
#define glProgramUniform3d MANGLE(ProgramUniform3d)
|
||||
#define glProgramUniform3dvEXT MANGLE(ProgramUniform3dvEXT)
|
||||
#define glProgramUniform3dv MANGLE(ProgramUniform3dv)
|
||||
#define glProgramUniform3fEXT MANGLE(ProgramUniform3fEXT)
|
||||
#define glProgramUniform3f MANGLE(ProgramUniform3f)
|
||||
#define glProgramUniform3fvEXT MANGLE(ProgramUniform3fvEXT)
|
||||
#define glProgramUniform3fv MANGLE(ProgramUniform3fv)
|
||||
#define glProgramUniform3i64NV MANGLE(ProgramUniform3i64NV)
|
||||
#define glProgramUniform3i64vNV MANGLE(ProgramUniform3i64vNV)
|
||||
#define glProgramUniform3iEXT MANGLE(ProgramUniform3iEXT)
|
||||
#define glProgramUniform3i MANGLE(ProgramUniform3i)
|
||||
#define glProgramUniform3ivEXT MANGLE(ProgramUniform3ivEXT)
|
||||
#define glProgramUniform3iv MANGLE(ProgramUniform3iv)
|
||||
#define glProgramUniform3ui64NV MANGLE(ProgramUniform3ui64NV)
|
||||
#define glProgramUniform3ui64vNV MANGLE(ProgramUniform3ui64vNV)
|
||||
#define glProgramUniform3uiEXT MANGLE(ProgramUniform3uiEXT)
|
||||
#define glProgramUniform3ui MANGLE(ProgramUniform3ui)
|
||||
#define glProgramUniform3uivEXT MANGLE(ProgramUniform3uivEXT)
|
||||
#define glProgramUniform3uiv MANGLE(ProgramUniform3uiv)
|
||||
#define glProgramUniform4dEXT MANGLE(ProgramUniform4dEXT)
|
||||
#define glProgramUniform4d MANGLE(ProgramUniform4d)
|
||||
#define glProgramUniform4dvEXT MANGLE(ProgramUniform4dvEXT)
|
||||
#define glProgramUniform4dv MANGLE(ProgramUniform4dv)
|
||||
#define glProgramUniform4fEXT MANGLE(ProgramUniform4fEXT)
|
||||
#define glProgramUniform4f MANGLE(ProgramUniform4f)
|
||||
#define glProgramUniform4fvEXT MANGLE(ProgramUniform4fvEXT)
|
||||
#define glProgramUniform4fv MANGLE(ProgramUniform4fv)
|
||||
#define glProgramUniform4i64NV MANGLE(ProgramUniform4i64NV)
|
||||
#define glProgramUniform4i64vNV MANGLE(ProgramUniform4i64vNV)
|
||||
#define glProgramUniform4iEXT MANGLE(ProgramUniform4iEXT)
|
||||
#define glProgramUniform4i MANGLE(ProgramUniform4i)
|
||||
#define glProgramUniform4ivEXT MANGLE(ProgramUniform4ivEXT)
|
||||
#define glProgramUniform4iv MANGLE(ProgramUniform4iv)
|
||||
#define glProgramUniform4ui64NV MANGLE(ProgramUniform4ui64NV)
|
||||
#define glProgramUniform4ui64vNV MANGLE(ProgramUniform4ui64vNV)
|
||||
#define glProgramUniform4uiEXT MANGLE(ProgramUniform4uiEXT)
|
||||
#define glProgramUniform4ui MANGLE(ProgramUniform4ui)
|
||||
#define glProgramUniform4uivEXT MANGLE(ProgramUniform4uivEXT)
|
||||
#define glProgramUniform4uiv MANGLE(ProgramUniform4uiv)
|
||||
#define glProgramUniformMatrix2dvEXT MANGLE(ProgramUniformMatrix2dvEXT)
|
||||
#define glProgramUniformMatrix2dv MANGLE(ProgramUniformMatrix2dv)
|
||||
#define glProgramUniformMatrix2fvEXT MANGLE(ProgramUniformMatrix2fvEXT)
|
||||
#define glProgramUniformMatrix2fv MANGLE(ProgramUniformMatrix2fv)
|
||||
#define glProgramUniformMatrix2x3dvEXT MANGLE(ProgramUniformMatrix2x3dvEXT)
|
||||
#define glProgramUniformMatrix2x3dv MANGLE(ProgramUniformMatrix2x3dv)
|
||||
#define glProgramUniformMatrix2x3fvEXT MANGLE(ProgramUniformMatrix2x3fvEXT)
|
||||
#define glProgramUniformMatrix2x3fv MANGLE(ProgramUniformMatrix2x3fv)
|
||||
#define glProgramUniformMatrix2x4dvEXT MANGLE(ProgramUniformMatrix2x4dvEXT)
|
||||
#define glProgramUniformMatrix2x4dv MANGLE(ProgramUniformMatrix2x4dv)
|
||||
#define glProgramUniformMatrix2x4fvEXT MANGLE(ProgramUniformMatrix2x4fvEXT)
|
||||
#define glProgramUniformMatrix2x4fv MANGLE(ProgramUniformMatrix2x4fv)
|
||||
#define glProgramUniformMatrix3dvEXT MANGLE(ProgramUniformMatrix3dvEXT)
|
||||
#define glProgramUniformMatrix3dv MANGLE(ProgramUniformMatrix3dv)
|
||||
#define glProgramUniformMatrix3fvEXT MANGLE(ProgramUniformMatrix3fvEXT)
|
||||
#define glProgramUniformMatrix3fv MANGLE(ProgramUniformMatrix3fv)
|
||||
#define glProgramUniformMatrix3x2dvEXT MANGLE(ProgramUniformMatrix3x2dvEXT)
|
||||
#define glProgramUniformMatrix3x2dv MANGLE(ProgramUniformMatrix3x2dv)
|
||||
#define glProgramUniformMatrix3x2fvEXT MANGLE(ProgramUniformMatrix3x2fvEXT)
|
||||
#define glProgramUniformMatrix3x2fv MANGLE(ProgramUniformMatrix3x2fv)
|
||||
#define glProgramUniformMatrix3x4dvEXT MANGLE(ProgramUniformMatrix3x4dvEXT)
|
||||
#define glProgramUniformMatrix3x4dv MANGLE(ProgramUniformMatrix3x4dv)
|
||||
#define glProgramUniformMatrix3x4fvEXT MANGLE(ProgramUniformMatrix3x4fvEXT)
|
||||
#define glProgramUniformMatrix3x4fv MANGLE(ProgramUniformMatrix3x4fv)
|
||||
#define glProgramUniformMatrix4dvEXT MANGLE(ProgramUniformMatrix4dvEXT)
|
||||
#define glProgramUniformMatrix4dv MANGLE(ProgramUniformMatrix4dv)
|
||||
#define glProgramUniformMatrix4fvEXT MANGLE(ProgramUniformMatrix4fvEXT)
|
||||
#define glProgramUniformMatrix4fv MANGLE(ProgramUniformMatrix4fv)
|
||||
#define glProgramUniformMatrix4x2dvEXT MANGLE(ProgramUniformMatrix4x2dvEXT)
|
||||
#define glProgramUniformMatrix4x2dv MANGLE(ProgramUniformMatrix4x2dv)
|
||||
#define glProgramUniformMatrix4x2fvEXT MANGLE(ProgramUniformMatrix4x2fvEXT)
|
||||
#define glProgramUniformMatrix4x2fv MANGLE(ProgramUniformMatrix4x2fv)
|
||||
#define glProgramUniformMatrix4x3dvEXT MANGLE(ProgramUniformMatrix4x3dvEXT)
|
||||
#define glProgramUniformMatrix4x3dv MANGLE(ProgramUniformMatrix4x3dv)
|
||||
#define glProgramUniformMatrix4x3fvEXT MANGLE(ProgramUniformMatrix4x3fvEXT)
|
||||
#define glProgramUniformMatrix4x3fv MANGLE(ProgramUniformMatrix4x3fv)
|
||||
#define glProgramUniformui64NV MANGLE(ProgramUniformui64NV)
|
||||
#define glProgramUniformui64vNV MANGLE(ProgramUniformui64vNV)
|
||||
#define glProgramVertexLimitNV MANGLE(ProgramVertexLimitNV)
|
||||
@@ -1274,6 +1475,7 @@
|
||||
#define glPushClientAttrib MANGLE(PushClientAttrib)
|
||||
#define glPushMatrix MANGLE(PushMatrix)
|
||||
#define glPushName MANGLE(PushName)
|
||||
#define glQueryCounter MANGLE(QueryCounter)
|
||||
#define glRasterPos2d MANGLE(RasterPos2d)
|
||||
#define glRasterPos2dv MANGLE(RasterPos2dv)
|
||||
#define glRasterPos2f MANGLE(RasterPos2f)
|
||||
@@ -1300,6 +1502,7 @@
|
||||
#define glRasterPos4sv MANGLE(RasterPos4sv)
|
||||
#define glReadBuffer MANGLE(ReadBuffer)
|
||||
#define glReadInstrumentsSGIX MANGLE(ReadInstrumentsSGIX)
|
||||
#define glReadnPixelsARB MANGLE(ReadnPixelsARB)
|
||||
#define glReadPixels MANGLE(ReadPixels)
|
||||
#define glRectd MANGLE(Rectd)
|
||||
#define glRectdv MANGLE(Rectdv)
|
||||
@@ -1310,6 +1513,7 @@
|
||||
#define glRects MANGLE(Rects)
|
||||
#define glRectsv MANGLE(Rectsv)
|
||||
#define glReferencePlaneSGIX MANGLE(ReferencePlaneSGIX)
|
||||
#define glReleaseShaderCompiler MANGLE(ReleaseShaderCompiler)
|
||||
#define glRenderbufferStorageEXT MANGLE(RenderbufferStorageEXT)
|
||||
#define glRenderbufferStorage MANGLE(RenderbufferStorage)
|
||||
#define glRenderbufferStorageMultisampleCoverageNV MANGLE(RenderbufferStorageMultisampleCoverageNV)
|
||||
@@ -1345,6 +1549,7 @@
|
||||
#define glResetMinmaxEXT MANGLE(ResetMinmaxEXT)
|
||||
#define glResetMinmax MANGLE(ResetMinmax)
|
||||
#define glResizeBuffersMESA MANGLE(ResizeBuffersMESA)
|
||||
#define glResumeTransformFeedback MANGLE(ResumeTransformFeedback)
|
||||
#define glResumeTransformFeedbackNV MANGLE(ResumeTransformFeedbackNV)
|
||||
#define glRotated MANGLE(Rotated)
|
||||
#define glRotatef MANGLE(Rotatef)
|
||||
@@ -1357,8 +1562,17 @@
|
||||
#define glSampleMaskSGIS MANGLE(SampleMaskSGIS)
|
||||
#define glSamplePatternEXT MANGLE(SamplePatternEXT)
|
||||
#define glSamplePatternSGIS MANGLE(SamplePatternSGIS)
|
||||
#define glSamplerParameterf MANGLE(SamplerParameterf)
|
||||
#define glSamplerParameterfv MANGLE(SamplerParameterfv)
|
||||
#define glSamplerParameterIiv MANGLE(SamplerParameterIiv)
|
||||
#define glSamplerParameteri MANGLE(SamplerParameteri)
|
||||
#define glSamplerParameterIuiv MANGLE(SamplerParameterIuiv)
|
||||
#define glSamplerParameteriv MANGLE(SamplerParameteriv)
|
||||
#define glScaled MANGLE(Scaled)
|
||||
#define glScalef MANGLE(Scalef)
|
||||
#define glScissorArrayv MANGLE(ScissorArrayv)
|
||||
#define glScissorIndexed MANGLE(ScissorIndexed)
|
||||
#define glScissorIndexedv MANGLE(ScissorIndexedv)
|
||||
#define glScissor MANGLE(Scissor)
|
||||
#define glSecondaryColor3bEXT MANGLE(SecondaryColor3bEXT)
|
||||
#define glSecondaryColor3b MANGLE(SecondaryColor3b)
|
||||
@@ -1395,6 +1609,8 @@
|
||||
#define glSecondaryColor3usvEXT MANGLE(SecondaryColor3usvEXT)
|
||||
#define glSecondaryColor3usv MANGLE(SecondaryColor3usv)
|
||||
#define glSecondaryColorFormatNV MANGLE(SecondaryColorFormatNV)
|
||||
#define glSecondaryColorP3ui MANGLE(SecondaryColorP3ui)
|
||||
#define glSecondaryColorP3uiv MANGLE(SecondaryColorP3uiv)
|
||||
#define glSecondaryColorPointerEXT MANGLE(SecondaryColorPointerEXT)
|
||||
#define glSecondaryColorPointerListIBM MANGLE(SecondaryColorPointerListIBM)
|
||||
#define glSecondaryColorPointer MANGLE(SecondaryColorPointer)
|
||||
@@ -1408,6 +1624,7 @@
|
||||
#define glSetInvariantEXT MANGLE(SetInvariantEXT)
|
||||
#define glSetLocalConstantEXT MANGLE(SetLocalConstantEXT)
|
||||
#define glShadeModel MANGLE(ShadeModel)
|
||||
#define glShaderBinary MANGLE(ShaderBinary)
|
||||
#define glShaderOp1EXT MANGLE(ShaderOp1EXT)
|
||||
#define glShaderOp2EXT MANGLE(ShaderOp2EXT)
|
||||
#define glShaderOp3EXT MANGLE(ShaderOp3EXT)
|
||||
@@ -1509,6 +1726,14 @@
|
||||
#define glTexCoord4s MANGLE(TexCoord4s)
|
||||
#define glTexCoord4sv MANGLE(TexCoord4sv)
|
||||
#define glTexCoordFormatNV MANGLE(TexCoordFormatNV)
|
||||
#define glTexCoordP1ui MANGLE(TexCoordP1ui)
|
||||
#define glTexCoordP1uiv MANGLE(TexCoordP1uiv)
|
||||
#define glTexCoordP2ui MANGLE(TexCoordP2ui)
|
||||
#define glTexCoordP2uiv MANGLE(TexCoordP2uiv)
|
||||
#define glTexCoordP3ui MANGLE(TexCoordP3ui)
|
||||
#define glTexCoordP3uiv MANGLE(TexCoordP3uiv)
|
||||
#define glTexCoordP4ui MANGLE(TexCoordP4ui)
|
||||
#define glTexCoordP4uiv MANGLE(TexCoordP4uiv)
|
||||
#define glTexCoordPointerEXT MANGLE(TexCoordPointerEXT)
|
||||
#define glTexCoordPointerListIBM MANGLE(TexCoordPointerListIBM)
|
||||
#define glTexCoordPointer MANGLE(TexCoordPointer)
|
||||
@@ -1569,73 +1794,108 @@
|
||||
#define glTextureSubImage3DEXT MANGLE(TextureSubImage3DEXT)
|
||||
#define glTrackMatrixNV MANGLE(TrackMatrixNV)
|
||||
#define glTransformFeedbackAttribsNV MANGLE(TransformFeedbackAttribsNV)
|
||||
#define glTransformFeedbackStreamAttribsNV MANGLE(TransformFeedbackStreamAttribsNV)
|
||||
#define glTransformFeedbackVaryingsEXT MANGLE(TransformFeedbackVaryingsEXT)
|
||||
#define glTransformFeedbackVaryings MANGLE(TransformFeedbackVaryings)
|
||||
#define glTransformFeedbackVaryingsNV MANGLE(TransformFeedbackVaryingsNV)
|
||||
#define glTranslated MANGLE(Translated)
|
||||
#define glTranslatef MANGLE(Translatef)
|
||||
#define glUniform1d MANGLE(Uniform1d)
|
||||
#define glUniform1dv MANGLE(Uniform1dv)
|
||||
#define glUniform1fARB MANGLE(Uniform1fARB)
|
||||
#define glUniform1f MANGLE(Uniform1f)
|
||||
#define glUniform1fvARB MANGLE(Uniform1fvARB)
|
||||
#define glUniform1fv MANGLE(Uniform1fv)
|
||||
#define glUniform1i64NV MANGLE(Uniform1i64NV)
|
||||
#define glUniform1i64vNV MANGLE(Uniform1i64vNV)
|
||||
#define glUniform1iARB MANGLE(Uniform1iARB)
|
||||
#define glUniform1i MANGLE(Uniform1i)
|
||||
#define glUniform1ivARB MANGLE(Uniform1ivARB)
|
||||
#define glUniform1iv MANGLE(Uniform1iv)
|
||||
#define glUniform1ui64NV MANGLE(Uniform1ui64NV)
|
||||
#define glUniform1ui64vNV MANGLE(Uniform1ui64vNV)
|
||||
#define glUniform1uiEXT MANGLE(Uniform1uiEXT)
|
||||
#define glUniform1ui MANGLE(Uniform1ui)
|
||||
#define glUniform1uivEXT MANGLE(Uniform1uivEXT)
|
||||
#define glUniform1uiv MANGLE(Uniform1uiv)
|
||||
#define glUniform2d MANGLE(Uniform2d)
|
||||
#define glUniform2dv MANGLE(Uniform2dv)
|
||||
#define glUniform2fARB MANGLE(Uniform2fARB)
|
||||
#define glUniform2f MANGLE(Uniform2f)
|
||||
#define glUniform2fvARB MANGLE(Uniform2fvARB)
|
||||
#define glUniform2fv MANGLE(Uniform2fv)
|
||||
#define glUniform2i64NV MANGLE(Uniform2i64NV)
|
||||
#define glUniform2i64vNV MANGLE(Uniform2i64vNV)
|
||||
#define glUniform2iARB MANGLE(Uniform2iARB)
|
||||
#define glUniform2i MANGLE(Uniform2i)
|
||||
#define glUniform2ivARB MANGLE(Uniform2ivARB)
|
||||
#define glUniform2iv MANGLE(Uniform2iv)
|
||||
#define glUniform2ui64NV MANGLE(Uniform2ui64NV)
|
||||
#define glUniform2ui64vNV MANGLE(Uniform2ui64vNV)
|
||||
#define glUniform2uiEXT MANGLE(Uniform2uiEXT)
|
||||
#define glUniform2ui MANGLE(Uniform2ui)
|
||||
#define glUniform2uivEXT MANGLE(Uniform2uivEXT)
|
||||
#define glUniform2uiv MANGLE(Uniform2uiv)
|
||||
#define glUniform3d MANGLE(Uniform3d)
|
||||
#define glUniform3dv MANGLE(Uniform3dv)
|
||||
#define glUniform3fARB MANGLE(Uniform3fARB)
|
||||
#define glUniform3f MANGLE(Uniform3f)
|
||||
#define glUniform3fvARB MANGLE(Uniform3fvARB)
|
||||
#define glUniform3fv MANGLE(Uniform3fv)
|
||||
#define glUniform3i64NV MANGLE(Uniform3i64NV)
|
||||
#define glUniform3i64vNV MANGLE(Uniform3i64vNV)
|
||||
#define glUniform3iARB MANGLE(Uniform3iARB)
|
||||
#define glUniform3i MANGLE(Uniform3i)
|
||||
#define glUniform3ivARB MANGLE(Uniform3ivARB)
|
||||
#define glUniform3iv MANGLE(Uniform3iv)
|
||||
#define glUniform3ui64NV MANGLE(Uniform3ui64NV)
|
||||
#define glUniform3ui64vNV MANGLE(Uniform3ui64vNV)
|
||||
#define glUniform3uiEXT MANGLE(Uniform3uiEXT)
|
||||
#define glUniform3ui MANGLE(Uniform3ui)
|
||||
#define glUniform3uivEXT MANGLE(Uniform3uivEXT)
|
||||
#define glUniform3uiv MANGLE(Uniform3uiv)
|
||||
#define glUniform4d MANGLE(Uniform4d)
|
||||
#define glUniform4dv MANGLE(Uniform4dv)
|
||||
#define glUniform4fARB MANGLE(Uniform4fARB)
|
||||
#define glUniform4f MANGLE(Uniform4f)
|
||||
#define glUniform4fvARB MANGLE(Uniform4fvARB)
|
||||
#define glUniform4fv MANGLE(Uniform4fv)
|
||||
#define glUniform4i64NV MANGLE(Uniform4i64NV)
|
||||
#define glUniform4i64vNV MANGLE(Uniform4i64vNV)
|
||||
#define glUniform4iARB MANGLE(Uniform4iARB)
|
||||
#define glUniform4i MANGLE(Uniform4i)
|
||||
#define glUniform4ivARB MANGLE(Uniform4ivARB)
|
||||
#define glUniform4iv MANGLE(Uniform4iv)
|
||||
#define glUniform4ui64NV MANGLE(Uniform4ui64NV)
|
||||
#define glUniform4ui64vNV MANGLE(Uniform4ui64vNV)
|
||||
#define glUniform4uiEXT MANGLE(Uniform4uiEXT)
|
||||
#define glUniform4ui MANGLE(Uniform4ui)
|
||||
#define glUniform4uivEXT MANGLE(Uniform4uivEXT)
|
||||
#define glUniform4uiv MANGLE(Uniform4uiv)
|
||||
#define glUniformBlockBinding MANGLE(UniformBlockBinding)
|
||||
#define glUniformBufferEXT MANGLE(UniformBufferEXT)
|
||||
#define glUniformMatrix2dv MANGLE(UniformMatrix2dv)
|
||||
#define glUniformMatrix2fvARB MANGLE(UniformMatrix2fvARB)
|
||||
#define glUniformMatrix2fv MANGLE(UniformMatrix2fv)
|
||||
#define glUniformMatrix2x3dv MANGLE(UniformMatrix2x3dv)
|
||||
#define glUniformMatrix2x3fv MANGLE(UniformMatrix2x3fv)
|
||||
#define glUniformMatrix2x4dv MANGLE(UniformMatrix2x4dv)
|
||||
#define glUniformMatrix2x4fv MANGLE(UniformMatrix2x4fv)
|
||||
#define glUniformMatrix3dv MANGLE(UniformMatrix3dv)
|
||||
#define glUniformMatrix3fvARB MANGLE(UniformMatrix3fvARB)
|
||||
#define glUniformMatrix3fv MANGLE(UniformMatrix3fv)
|
||||
#define glUniformMatrix3x2dv MANGLE(UniformMatrix3x2dv)
|
||||
#define glUniformMatrix3x2fv MANGLE(UniformMatrix3x2fv)
|
||||
#define glUniformMatrix3x4dv MANGLE(UniformMatrix3x4dv)
|
||||
#define glUniformMatrix3x4fv MANGLE(UniformMatrix3x4fv)
|
||||
#define glUniformMatrix4dv MANGLE(UniformMatrix4dv)
|
||||
#define glUniformMatrix4fvARB MANGLE(UniformMatrix4fvARB)
|
||||
#define glUniformMatrix4fv MANGLE(UniformMatrix4fv)
|
||||
#define glUniformMatrix4x2dv MANGLE(UniformMatrix4x2dv)
|
||||
#define glUniformMatrix4x2fv MANGLE(UniformMatrix4x2fv)
|
||||
#define glUniformMatrix4x3dv MANGLE(UniformMatrix4x3dv)
|
||||
#define glUniformMatrix4x3fv MANGLE(UniformMatrix4x3fv)
|
||||
#define glUniformSubroutinesuiv MANGLE(UniformSubroutinesuiv)
|
||||
#define glUniformui64NV MANGLE(Uniformui64NV)
|
||||
#define glUniformui64vNV MANGLE(Uniformui64vNV)
|
||||
#define glUnlockArraysEXT MANGLE(UnlockArraysEXT)
|
||||
@@ -1646,9 +1906,11 @@
|
||||
#define glUpdateObjectBufferATI MANGLE(UpdateObjectBufferATI)
|
||||
#define glUseProgram MANGLE(UseProgram)
|
||||
#define glUseProgramObjectARB MANGLE(UseProgramObjectARB)
|
||||
#define glUseProgramStages MANGLE(UseProgramStages)
|
||||
#define glUseShaderProgramEXT MANGLE(UseShaderProgramEXT)
|
||||
#define glValidateProgramARB MANGLE(ValidateProgramARB)
|
||||
#define glValidateProgram MANGLE(ValidateProgram)
|
||||
#define glValidateProgramPipeline MANGLE(ValidateProgramPipeline)
|
||||
#define glVariantArrayObjectATI MANGLE(VariantArrayObjectATI)
|
||||
#define glVariantbvEXT MANGLE(VariantbvEXT)
|
||||
#define glVariantdvEXT MANGLE(VariantdvEXT)
|
||||
@@ -1659,6 +1921,16 @@
|
||||
#define glVariantubvEXT MANGLE(VariantubvEXT)
|
||||
#define glVariantuivEXT MANGLE(VariantuivEXT)
|
||||
#define glVariantusvEXT MANGLE(VariantusvEXT)
|
||||
#define glVDPAUFiniNV MANGLE(VDPAUFiniNV)
|
||||
#define glVDPAUGetSurfaceivNV MANGLE(VDPAUGetSurfaceivNV)
|
||||
#define glVDPAUInitNV MANGLE(VDPAUInitNV)
|
||||
#define glVDPAUIsSurfaceNV MANGLE(VDPAUIsSurfaceNV)
|
||||
#define glVDPAUMapSurfacesNV MANGLE(VDPAUMapSurfacesNV)
|
||||
#define glVDPAURegisterOutputSurfaceNV MANGLE(VDPAURegisterOutputSurfaceNV)
|
||||
#define glVDPAURegisterVideoSurfaceNV MANGLE(VDPAURegisterVideoSurfaceNV)
|
||||
#define glVDPAUSurfaceAccessNV MANGLE(VDPAUSurfaceAccessNV)
|
||||
#define glVDPAUUnmapSurfacesNV MANGLE(VDPAUUnmapSurfacesNV)
|
||||
#define glVDPAUUnregisterSurfaceNV MANGLE(VDPAUUnregisterSurfaceNV)
|
||||
#define glVertex2d MANGLE(Vertex2d)
|
||||
#define glVertex2dv MANGLE(Vertex2dv)
|
||||
#define glVertex2f MANGLE(Vertex2f)
|
||||
@@ -1692,6 +1964,7 @@
|
||||
#define glVertexArrayParameteriAPPLE MANGLE(VertexArrayParameteriAPPLE)
|
||||
#define glVertexArrayRangeAPPLE MANGLE(VertexArrayRangeAPPLE)
|
||||
#define glVertexArrayRangeNV MANGLE(VertexArrayRangeNV)
|
||||
#define glVertexArrayVertexAttribLOffsetEXT MANGLE(VertexArrayVertexAttribLOffsetEXT)
|
||||
#define glVertexAttrib1dARB MANGLE(VertexAttrib1dARB)
|
||||
#define glVertexAttrib1d MANGLE(VertexAttrib1d)
|
||||
#define glVertexAttrib1dNV MANGLE(VertexAttrib1dNV)
|
||||
@@ -1800,6 +2073,7 @@
|
||||
#define glVertexAttrib4usv MANGLE(VertexAttrib4usv)
|
||||
#define glVertexAttribArrayObjectATI MANGLE(VertexAttribArrayObjectATI)
|
||||
#define glVertexAttribDivisorARB MANGLE(VertexAttribDivisorARB)
|
||||
#define glVertexAttribDivisor MANGLE(VertexAttribDivisor)
|
||||
#define glVertexAttribFormatNV MANGLE(VertexAttribFormatNV)
|
||||
#define glVertexAttribI1iEXT MANGLE(VertexAttribI1iEXT)
|
||||
#define glVertexAttribI1i MANGLE(VertexAttribI1i)
|
||||
@@ -1844,6 +2118,49 @@
|
||||
#define glVertexAttribIFormatNV MANGLE(VertexAttribIFormatNV)
|
||||
#define glVertexAttribIPointerEXT MANGLE(VertexAttribIPointerEXT)
|
||||
#define glVertexAttribIPointer MANGLE(VertexAttribIPointer)
|
||||
#define glVertexAttribL1dEXT MANGLE(VertexAttribL1dEXT)
|
||||
#define glVertexAttribL1d MANGLE(VertexAttribL1d)
|
||||
#define glVertexAttribL1dvEXT MANGLE(VertexAttribL1dvEXT)
|
||||
#define glVertexAttribL1dv MANGLE(VertexAttribL1dv)
|
||||
#define glVertexAttribL1i64NV MANGLE(VertexAttribL1i64NV)
|
||||
#define glVertexAttribL1i64vNV MANGLE(VertexAttribL1i64vNV)
|
||||
#define glVertexAttribL1ui64NV MANGLE(VertexAttribL1ui64NV)
|
||||
#define glVertexAttribL1ui64vNV MANGLE(VertexAttribL1ui64vNV)
|
||||
#define glVertexAttribL2dEXT MANGLE(VertexAttribL2dEXT)
|
||||
#define glVertexAttribL2d MANGLE(VertexAttribL2d)
|
||||
#define glVertexAttribL2dvEXT MANGLE(VertexAttribL2dvEXT)
|
||||
#define glVertexAttribL2dv MANGLE(VertexAttribL2dv)
|
||||
#define glVertexAttribL2i64NV MANGLE(VertexAttribL2i64NV)
|
||||
#define glVertexAttribL2i64vNV MANGLE(VertexAttribL2i64vNV)
|
||||
#define glVertexAttribL2ui64NV MANGLE(VertexAttribL2ui64NV)
|
||||
#define glVertexAttribL2ui64vNV MANGLE(VertexAttribL2ui64vNV)
|
||||
#define glVertexAttribL3dEXT MANGLE(VertexAttribL3dEXT)
|
||||
#define glVertexAttribL3d MANGLE(VertexAttribL3d)
|
||||
#define glVertexAttribL3dvEXT MANGLE(VertexAttribL3dvEXT)
|
||||
#define glVertexAttribL3dv MANGLE(VertexAttribL3dv)
|
||||
#define glVertexAttribL3i64NV MANGLE(VertexAttribL3i64NV)
|
||||
#define glVertexAttribL3i64vNV MANGLE(VertexAttribL3i64vNV)
|
||||
#define glVertexAttribL3ui64NV MANGLE(VertexAttribL3ui64NV)
|
||||
#define glVertexAttribL3ui64vNV MANGLE(VertexAttribL3ui64vNV)
|
||||
#define glVertexAttribL4dEXT MANGLE(VertexAttribL4dEXT)
|
||||
#define glVertexAttribL4d MANGLE(VertexAttribL4d)
|
||||
#define glVertexAttribL4dvEXT MANGLE(VertexAttribL4dvEXT)
|
||||
#define glVertexAttribL4dv MANGLE(VertexAttribL4dv)
|
||||
#define glVertexAttribL4i64NV MANGLE(VertexAttribL4i64NV)
|
||||
#define glVertexAttribL4i64vNV MANGLE(VertexAttribL4i64vNV)
|
||||
#define glVertexAttribL4ui64NV MANGLE(VertexAttribL4ui64NV)
|
||||
#define glVertexAttribL4ui64vNV MANGLE(VertexAttribL4ui64vNV)
|
||||
#define glVertexAttribLFormatNV MANGLE(VertexAttribLFormatNV)
|
||||
#define glVertexAttribLPointerEXT MANGLE(VertexAttribLPointerEXT)
|
||||
#define glVertexAttribLPointer MANGLE(VertexAttribLPointer)
|
||||
#define glVertexAttribP1ui MANGLE(VertexAttribP1ui)
|
||||
#define glVertexAttribP1uiv MANGLE(VertexAttribP1uiv)
|
||||
#define glVertexAttribP2ui MANGLE(VertexAttribP2ui)
|
||||
#define glVertexAttribP2uiv MANGLE(VertexAttribP2uiv)
|
||||
#define glVertexAttribP3ui MANGLE(VertexAttribP3ui)
|
||||
#define glVertexAttribP3uiv MANGLE(VertexAttribP3uiv)
|
||||
#define glVertexAttribP4ui MANGLE(VertexAttribP4ui)
|
||||
#define glVertexAttribP4uiv MANGLE(VertexAttribP4uiv)
|
||||
#define glVertexAttribPointerARB MANGLE(VertexAttribPointerARB)
|
||||
#define glVertexAttribPointer MANGLE(VertexAttribPointer)
|
||||
#define glVertexAttribPointerNV MANGLE(VertexAttribPointerNV)
|
||||
@@ -1868,6 +2185,12 @@
|
||||
#define glVertexBlendEnvfATI MANGLE(VertexBlendEnvfATI)
|
||||
#define glVertexBlendEnviATI MANGLE(VertexBlendEnviATI)
|
||||
#define glVertexFormatNV MANGLE(VertexFormatNV)
|
||||
#define glVertexP2ui MANGLE(VertexP2ui)
|
||||
#define glVertexP2uiv MANGLE(VertexP2uiv)
|
||||
#define glVertexP3ui MANGLE(VertexP3ui)
|
||||
#define glVertexP3uiv MANGLE(VertexP3uiv)
|
||||
#define glVertexP4ui MANGLE(VertexP4ui)
|
||||
#define glVertexP4uiv MANGLE(VertexP4uiv)
|
||||
#define glVertexPointerEXT MANGLE(VertexPointerEXT)
|
||||
#define glVertexPointerListIBM MANGLE(VertexPointerListIBM)
|
||||
#define glVertexPointer MANGLE(VertexPointer)
|
||||
@@ -1913,6 +2236,9 @@
|
||||
#define glVideoCaptureStreamParameterdvNV MANGLE(VideoCaptureStreamParameterdvNV)
|
||||
#define glVideoCaptureStreamParameterfvNV MANGLE(VideoCaptureStreamParameterfvNV)
|
||||
#define glVideoCaptureStreamParameterivNV MANGLE(VideoCaptureStreamParameterivNV)
|
||||
#define glViewportArrayv MANGLE(ViewportArrayv)
|
||||
#define glViewportIndexedf MANGLE(ViewportIndexedf)
|
||||
#define glViewportIndexedfv MANGLE(ViewportIndexedfv)
|
||||
#define glViewport MANGLE(Viewport)
|
||||
#define glWaitSync MANGLE(WaitSync)
|
||||
#define glWeightbvARB MANGLE(WeightbvARB)
|
||||
|
@@ -788,7 +788,6 @@ struct __DRIdri2ExtensionRec {
|
||||
#define __DRI_IMAGE_FORMAT_RGB565 0x1001
|
||||
#define __DRI_IMAGE_FORMAT_XRGB8888 0x1002
|
||||
#define __DRI_IMAGE_FORMAT_ARGB8888 0x1003
|
||||
#define __DRI_IMAGE_FORMAT_RGBA8888_REV 0x1004
|
||||
|
||||
#define __DRI_IMAGE_USE_SHARE 0x0001
|
||||
#define __DRI_IMAGE_USE_SCANOUT 0x0002
|
||||
|
@@ -1,96 +0,0 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
# build classic static libraries
|
||||
MESA_BUILD_CLASSIC := false
|
||||
|
||||
# build gallium static libraries
|
||||
MESA_BUILD_GALLIUM := false
|
||||
|
||||
# build gralloc.i915
|
||||
MESA_BUILD_I915 := false
|
||||
|
||||
# build libGLES_i915c
|
||||
MESA_BUILD_I915C := false
|
||||
|
||||
# build libGLES_swrast
|
||||
MESA_BUILD_SWRAST := false
|
||||
|
||||
# build gralloc.vmwgfx
|
||||
MESA_BUILD_VMWGFX := false
|
||||
|
||||
# build libGLES_i915g
|
||||
MESA_BUILD_I915G := false
|
||||
|
||||
# for testing purpose
|
||||
#BOARD_USES_I915C := true
|
||||
#BOARD_USES_I915G := true
|
||||
#BOARD_USES_I965C := true
|
||||
#BOARD_USES_VMWGFX := true
|
||||
|
||||
MESA_GRALLOC_NAME :=
|
||||
MESA_GLES_NAME :=
|
||||
|
||||
ifeq ($(strip $(BOARD_USES_I915C)),true)
|
||||
MESA_BUILD_CLASSIC := true
|
||||
MESA_BUILD_I915 := true
|
||||
MESA_BUILD_I915C := true
|
||||
|
||||
MESA_GRALLOC_NAME := i915
|
||||
MESA_GLES_NAME := i915c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(BOARD_USES_I915G)),true)
|
||||
MESA_BUILD_GALLIUM := true
|
||||
MESA_BUILD_I915 := true
|
||||
MESA_BUILD_I915G := true
|
||||
|
||||
MESA_GRALLOC_NAME := i915
|
||||
MESA_GLES_NAME := i915g
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(BOARD_USES_I965C)),true)
|
||||
MESA_BUILD_CLASSIC := true
|
||||
MESA_BUILD_I915 := true
|
||||
MESA_BUILD_I965C := true
|
||||
|
||||
MESA_GRALLOC_NAME := i915
|
||||
MESA_GLES_NAME := i965c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(BOARD_USES_VMWGFX)),true)
|
||||
MESA_BUILD_GALLIUM := true
|
||||
MESA_BUILD_SWRAST := true
|
||||
MESA_BUILD_VMWGFX := true
|
||||
|
||||
MESA_GRALLOC_NAME := vmwgfx
|
||||
MESA_GLES_NAME := swrast
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(MESA_GRALLOC_NAME) $(MESA_GLES_NAME)),)
|
||||
|
||||
# build the real modules
|
||||
include $(call all-subdir-makefiles)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
symlink := $(TARGET_OUT_SHARED_LIBRARIES)/hw/gralloc.$(TARGET_PRODUCT)$(TARGET_SHLIB_SUFFIX)
|
||||
symlink_to := gralloc.$(MESA_GRALLOC_NAME)$(TARGET_SHLIB_SUFFIX)
|
||||
$(symlink): PRIVATE_TO := $(symlink_to)
|
||||
$(symlink): $(TARGET_OUT_SHARED_LIBRARIES)/hw/$(symlink_to)
|
||||
@echo "Symlink: $@ -> $(PRIVATE_TO)"
|
||||
@mkdir -p $(dir $@)
|
||||
@rm -rf $@
|
||||
$(hide) ln -sf $(PRIVATE_TO) $@
|
||||
ALL_PREBUILT += $(symlink)
|
||||
|
||||
symlink := $(TARGET_OUT_SHARED_LIBRARIES)/egl/libGLES_mesa$(TARGET_SHLIB_SUFFIX)
|
||||
symlink_to := libGLES_$(MESA_GLES_NAME)$(TARGET_SHLIB_SUFFIX)
|
||||
$(symlink): PRIVATE_TO := $(symlink_to)
|
||||
$(symlink): $(TARGET_OUT_SHARED_LIBRARIES)/egl/$(symlink_to)
|
||||
@echo "Symlink: $@ -> $(PRIVATE_TO)"
|
||||
@mkdir -p $(dir $@)
|
||||
@rm -rf $@
|
||||
$(hide) ln -sf $(PRIVATE_TO) $@
|
||||
ALL_PREBUILT += $(symlink)
|
||||
|
||||
endif # MESA_GRALLOC_NAME || MESA_GLES_NAME
|
@@ -4,7 +4,6 @@ SConscript('mapi/vgapi/SConscript')
|
||||
|
||||
if env['platform'] == 'windows':
|
||||
SConscript('egl/main/SConscript')
|
||||
SConscript('talloc/SConscript')
|
||||
|
||||
SConscript('glsl/SConscript')
|
||||
SConscript('mapi/glapi/SConscript')
|
||||
|
@@ -1,68 +0,0 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
# from main/Makefile
|
||||
SOURCES = \
|
||||
eglapi.c \
|
||||
eglarray.c \
|
||||
eglconfig.c \
|
||||
eglcontext.c \
|
||||
eglcurrent.c \
|
||||
egldisplay.c \
|
||||
egldriver.c \
|
||||
eglfallbacks.c \
|
||||
eglglobals.c \
|
||||
eglimage.c \
|
||||
egllog.c \
|
||||
eglmisc.c \
|
||||
eglmode.c \
|
||||
eglscreen.c \
|
||||
eglstring.c \
|
||||
eglsurface.c \
|
||||
eglsync.c
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
$(addprefix main/, $(SOURCES))
|
||||
|
||||
LOCAL_CFLAGS := \
|
||||
-DPTHREADS \
|
||||
-D_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_ANDROID \
|
||||
-D_EGL_DRIVER_SEARCH_DIR=\"/system/lib/egl\" \
|
||||
-fvisibility=hidden \
|
||||
-Wno-sign-compare
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
external/mesa/include
|
||||
|
||||
LOCAL_MODULE := libmesa_egl
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
|
||||
ifeq ($(strip $(MESA_BUILD_CLASSIC)),true)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
drivers/android/egl_android.c \
|
||||
drivers/android/droid.c \
|
||||
drivers/android/droid_core.c \
|
||||
drivers/android/droid_image.c
|
||||
|
||||
|
||||
LOCAL_CFLAGS := \
|
||||
-DPTHREADS \
|
||||
-fvisibility=hidden \
|
||||
-Wno-sign-compare
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
external/mesa/include \
|
||||
external/mesa/src/mapi \
|
||||
external/mesa/src/egl/main \
|
||||
external/mesa/src/gralloc \
|
||||
external/drm \
|
||||
external/drm/include/drm
|
||||
|
||||
LOCAL_MODULE := libmesa_classic_egl
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
endif # MESA_BUILD_CLASSIC
|
@@ -1,649 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2010 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (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.
|
||||
*
|
||||
* Authors:
|
||||
* Kristian Høgsberg <krh@bitplanet.net>
|
||||
*/
|
||||
|
||||
#define LOG_TAG "MESA-EGL"
|
||||
|
||||
#include <cutils/log.h>
|
||||
|
||||
#include "glapi/glapi.h"
|
||||
#include "droid.h"
|
||||
|
||||
static const __DRIuseInvalidateExtension use_invalidate = {
|
||||
{ __DRI_USE_INVALIDATE, 1 }
|
||||
};
|
||||
|
||||
static __DRIimage *
|
||||
droid_lookup_egl_image(__DRIscreen *screen, void *image, void *data)
|
||||
{
|
||||
_EGLDisplay *disp = data;
|
||||
struct droid_egl_image *dimg;
|
||||
_EGLImage *img;
|
||||
|
||||
(void) screen;
|
||||
|
||||
img = _eglLookupImage(image, disp);
|
||||
if (img == NULL) {
|
||||
_eglError(EGL_BAD_PARAMETER, "droid_lookup_egl_image");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dimg = droid_egl_image(image);
|
||||
|
||||
return dimg->dri_image;
|
||||
}
|
||||
|
||||
static const __DRIimageLookupExtension image_lookup_extension = {
|
||||
{ __DRI_IMAGE_LOOKUP, 1 },
|
||||
droid_lookup_egl_image
|
||||
};
|
||||
|
||||
static int
|
||||
get_format_bpp(int native)
|
||||
{
|
||||
int bpp;
|
||||
|
||||
/* see libpixelflinger/format.cpp */
|
||||
switch (native) {
|
||||
case GGL_PIXEL_FORMAT_RGBA_8888:
|
||||
case GGL_PIXEL_FORMAT_RGBX_8888:
|
||||
case GGL_PIXEL_FORMAT_BGRA_8888:
|
||||
bpp = 4;
|
||||
break;
|
||||
case GGL_PIXEL_FORMAT_RGB_888:
|
||||
bpp = 3;
|
||||
break;
|
||||
case GGL_PIXEL_FORMAT_RGB_565:
|
||||
case GGL_PIXEL_FORMAT_RGBA_5551:
|
||||
case GGL_PIXEL_FORMAT_RGBA_4444:
|
||||
case GGL_PIXEL_FORMAT_LA_88:
|
||||
bpp = 2;
|
||||
break;
|
||||
case GGL_PIXEL_FORMAT_RGB_332:
|
||||
case GGL_PIXEL_FORMAT_A_8:
|
||||
case GGL_PIXEL_FORMAT_L_8:
|
||||
bpp = 1;
|
||||
break;
|
||||
default:
|
||||
bpp = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return bpp;
|
||||
}
|
||||
|
||||
#include <gralloc_gem.h>
|
||||
int
|
||||
get_native_buffer_name(struct android_native_buffer_t *buf)
|
||||
{
|
||||
struct drm_bo_t *bo;
|
||||
|
||||
bo = drm_gem_get(buf->handle);
|
||||
|
||||
return (bo) ? bo->name : 0;
|
||||
}
|
||||
|
||||
EGLBoolean
|
||||
droid_dequeue_buffer(struct droid_egl_surface *dsurf)
|
||||
{
|
||||
__DRIbuffer *buf = &dsurf->dri_buffer;
|
||||
|
||||
if (dsurf->window->dequeueBuffer(dsurf->window, &dsurf->buffer))
|
||||
return EGL_FALSE;
|
||||
|
||||
dsurf->buffer->common.incRef(&dsurf->buffer->common);
|
||||
dsurf->window->lockBuffer(dsurf->window, dsurf->buffer);
|
||||
|
||||
buf->attachment = __DRI_BUFFER_FAKE_FRONT_LEFT;
|
||||
buf->name = get_native_buffer_name(dsurf->buffer);
|
||||
buf->cpp = get_format_bpp(dsurf->buffer->format);
|
||||
buf->pitch = dsurf->buffer->stride * buf->cpp;
|
||||
buf->flags = 0;
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
EGLBoolean
|
||||
droid_enqueue_buffer(struct droid_egl_surface *dsurf)
|
||||
{
|
||||
dsurf->window->queueBuffer(dsurf->window, dsurf->buffer);
|
||||
|
||||
dsurf->buffer->common.decRef(&dsurf->buffer->common);
|
||||
dsurf->buffer = NULL;
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
droid_flush_front_buffer(__DRIdrawable * driDrawable, void *loaderPrivate)
|
||||
{
|
||||
}
|
||||
|
||||
static __DRIbuffer *
|
||||
droid_get_buffers_with_format(__DRIdrawable * driDrawable,
|
||||
int *width, int *height,
|
||||
unsigned int *attachments, int count,
|
||||
int *out_count, void *loaderPrivate)
|
||||
{
|
||||
struct droid_egl_surface *dsurf = loaderPrivate;
|
||||
struct droid_egl_display *ddpy =
|
||||
droid_egl_display(dsurf->base.Resource.Display);
|
||||
|
||||
if (!dsurf->buffer) {
|
||||
if (!droid_dequeue_buffer(dsurf))
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (width)
|
||||
*width = dsurf->buffer->width;
|
||||
if (height)
|
||||
*height = dsurf->buffer->height;
|
||||
|
||||
*out_count = 1;
|
||||
|
||||
return &dsurf->dri_buffer;
|
||||
}
|
||||
|
||||
static const EGLint droid_to_egl_attribute_map[] = {
|
||||
0,
|
||||
EGL_BUFFER_SIZE, /* __DRI_ATTRIB_BUFFER_SIZE */
|
||||
EGL_LEVEL, /* __DRI_ATTRIB_LEVEL */
|
||||
EGL_RED_SIZE, /* __DRI_ATTRIB_RED_SIZE */
|
||||
EGL_GREEN_SIZE, /* __DRI_ATTRIB_GREEN_SIZE */
|
||||
EGL_BLUE_SIZE, /* __DRI_ATTRIB_BLUE_SIZE */
|
||||
EGL_LUMINANCE_SIZE, /* __DRI_ATTRIB_LUMINANCE_SIZE */
|
||||
EGL_ALPHA_SIZE, /* __DRI_ATTRIB_ALPHA_SIZE */
|
||||
0, /* __DRI_ATTRIB_ALPHA_MASK_SIZE */
|
||||
EGL_DEPTH_SIZE, /* __DRI_ATTRIB_DEPTH_SIZE */
|
||||
EGL_STENCIL_SIZE, /* __DRI_ATTRIB_STENCIL_SIZE */
|
||||
0, /* __DRI_ATTRIB_ACCUM_RED_SIZE */
|
||||
0, /* __DRI_ATTRIB_ACCUM_GREEN_SIZE */
|
||||
0, /* __DRI_ATTRIB_ACCUM_BLUE_SIZE */
|
||||
0, /* __DRI_ATTRIB_ACCUM_ALPHA_SIZE */
|
||||
EGL_SAMPLE_BUFFERS, /* __DRI_ATTRIB_SAMPLE_BUFFERS */
|
||||
EGL_SAMPLES, /* __DRI_ATTRIB_SAMPLES */
|
||||
0, /* __DRI_ATTRIB_RENDER_TYPE, */
|
||||
0, /* __DRI_ATTRIB_CONFIG_CAVEAT */
|
||||
0, /* __DRI_ATTRIB_CONFORMANT */
|
||||
0, /* __DRI_ATTRIB_DOUBLE_BUFFER */
|
||||
0, /* __DRI_ATTRIB_STEREO */
|
||||
0, /* __DRI_ATTRIB_AUX_BUFFERS */
|
||||
0, /* __DRI_ATTRIB_TRANSPARENT_TYPE */
|
||||
0, /* __DRI_ATTRIB_TRANSPARENT_INDEX_VALUE */
|
||||
0, /* __DRI_ATTRIB_TRANSPARENT_RED_VALUE */
|
||||
0, /* __DRI_ATTRIB_TRANSPARENT_GREEN_VALUE */
|
||||
0, /* __DRI_ATTRIB_TRANSPARENT_BLUE_VALUE */
|
||||
0, /* __DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE */
|
||||
0, /* __DRI_ATTRIB_FLOAT_MODE */
|
||||
0, /* __DRI_ATTRIB_RED_MASK */
|
||||
0, /* __DRI_ATTRIB_GREEN_MASK */
|
||||
0, /* __DRI_ATTRIB_BLUE_MASK */
|
||||
0, /* __DRI_ATTRIB_ALPHA_MASK */
|
||||
EGL_MAX_PBUFFER_WIDTH, /* __DRI_ATTRIB_MAX_PBUFFER_WIDTH */
|
||||
EGL_MAX_PBUFFER_HEIGHT, /* __DRI_ATTRIB_MAX_PBUFFER_HEIGHT */
|
||||
EGL_MAX_PBUFFER_PIXELS, /* __DRI_ATTRIB_MAX_PBUFFER_PIXELS */
|
||||
0, /* __DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH */
|
||||
0, /* __DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT */
|
||||
0, /* __DRI_ATTRIB_VISUAL_SELECT_GROUP */
|
||||
0, /* __DRI_ATTRIB_SWAP_METHOD */
|
||||
EGL_MAX_SWAP_INTERVAL, /* __DRI_ATTRIB_MAX_SWAP_INTERVAL */
|
||||
EGL_MIN_SWAP_INTERVAL, /* __DRI_ATTRIB_MIN_SWAP_INTERVAL */
|
||||
0, /* __DRI_ATTRIB_BIND_TO_TEXTURE_RGB */
|
||||
0, /* __DRI_ATTRIB_BIND_TO_TEXTURE_RGBA */
|
||||
0, /* __DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE */
|
||||
0, /* __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS */
|
||||
EGL_Y_INVERTED_NOK, /* __DRI_ATTRIB_YINVERTED */
|
||||
};
|
||||
|
||||
static struct droid_egl_config *
|
||||
droid_add_config(_EGLDisplay *dpy, const __DRIconfig *dri_config, int id,
|
||||
int depth, EGLint surface_type, int rgba_masks[4])
|
||||
{
|
||||
struct droid_egl_config *conf;
|
||||
struct droid_egl_display *ddpy;
|
||||
_EGLConfig base;
|
||||
unsigned int attrib, value, double_buffer;
|
||||
EGLint key, bind_to_texture_rgb, bind_to_texture_rgba;
|
||||
int dri_masks[4] = { 0, 0, 0, 0 };
|
||||
int i;
|
||||
|
||||
ddpy = dpy->DriverData;
|
||||
_eglInitConfig(&base, dpy, id);
|
||||
|
||||
i = 0;
|
||||
double_buffer = 0;
|
||||
bind_to_texture_rgb = 0;
|
||||
bind_to_texture_rgba = 0;
|
||||
|
||||
while (ddpy->core->indexConfigAttrib(dri_config, i++, &attrib, &value)) {
|
||||
switch (attrib) {
|
||||
case __DRI_ATTRIB_RENDER_TYPE:
|
||||
if (value & __DRI_ATTRIB_RGBA_BIT)
|
||||
value = EGL_RGB_BUFFER;
|
||||
else if (value & __DRI_ATTRIB_LUMINANCE_BIT)
|
||||
value = EGL_LUMINANCE_BUFFER;
|
||||
else
|
||||
assert(0);
|
||||
_eglSetConfigKey(&base, EGL_COLOR_BUFFER_TYPE, value);
|
||||
break;
|
||||
|
||||
case __DRI_ATTRIB_CONFIG_CAVEAT:
|
||||
if (value & __DRI_ATTRIB_NON_CONFORMANT_CONFIG)
|
||||
value = EGL_NON_CONFORMANT_CONFIG;
|
||||
else if (value & __DRI_ATTRIB_SLOW_BIT)
|
||||
value = EGL_SLOW_CONFIG;
|
||||
else
|
||||
value = EGL_NONE;
|
||||
_eglSetConfigKey(&base, EGL_CONFIG_CAVEAT, value);
|
||||
break;
|
||||
|
||||
case __DRI_ATTRIB_BIND_TO_TEXTURE_RGB:
|
||||
bind_to_texture_rgb = value;
|
||||
break;
|
||||
|
||||
case __DRI_ATTRIB_BIND_TO_TEXTURE_RGBA:
|
||||
bind_to_texture_rgba = value;
|
||||
break;
|
||||
|
||||
case __DRI_ATTRIB_DOUBLE_BUFFER:
|
||||
double_buffer = value;
|
||||
break;
|
||||
|
||||
case __DRI_ATTRIB_RED_MASK:
|
||||
dri_masks[0] = value;
|
||||
break;
|
||||
|
||||
case __DRI_ATTRIB_GREEN_MASK:
|
||||
dri_masks[1] = value;
|
||||
break;
|
||||
|
||||
case __DRI_ATTRIB_BLUE_MASK:
|
||||
dri_masks[2] = value;
|
||||
break;
|
||||
|
||||
case __DRI_ATTRIB_ALPHA_MASK:
|
||||
dri_masks[3] = value;
|
||||
break;
|
||||
|
||||
default:
|
||||
key = droid_to_egl_attribute_map[attrib];
|
||||
if (key != 0)
|
||||
_eglSetConfigKey(&base, key, value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* In EGL, double buffer or not isn't a config attribute. Pixmaps
|
||||
* surfaces are always single buffered, pbuffer surfaces are always
|
||||
* back buffers and windows can be either, selected by passing an
|
||||
* attribute at window surface construction time. To support this
|
||||
* we ignore all double buffer configs and manipulate the buffer we
|
||||
* return in the getBuffer callback to get the behaviour we want. */
|
||||
|
||||
if (double_buffer)
|
||||
return NULL;
|
||||
|
||||
if (depth > 0 && depth != _eglGetConfigKey(&base, EGL_BUFFER_SIZE))
|
||||
return NULL;
|
||||
|
||||
if (memcmp(dri_masks, rgba_masks, sizeof(rgba_masks)))
|
||||
return NULL;
|
||||
|
||||
_eglSetConfigKey(&base, EGL_NATIVE_RENDERABLE, EGL_TRUE);
|
||||
|
||||
_eglSetConfigKey(&base, EGL_SURFACE_TYPE, surface_type);
|
||||
if (surface_type & (EGL_PIXMAP_BIT | EGL_PBUFFER_BIT)) {
|
||||
_eglSetConfigKey(&base, EGL_BIND_TO_TEXTURE_RGB, bind_to_texture_rgb);
|
||||
if (_eglGetConfigKey(&base, EGL_ALPHA_SIZE) > 0)
|
||||
_eglSetConfigKey(&base,
|
||||
EGL_BIND_TO_TEXTURE_RGBA, bind_to_texture_rgba);
|
||||
}
|
||||
|
||||
_eglSetConfigKey(&base, EGL_RENDERABLE_TYPE, dpy->ClientAPIsMask);
|
||||
_eglSetConfigKey(&base, EGL_CONFORMANT, dpy->ClientAPIsMask);
|
||||
|
||||
if (!_eglValidateConfig(&base, EGL_FALSE)) {
|
||||
_eglLog(_EGL_DEBUG, "DRI2: failed to validate config %d", id);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
conf = calloc(1, sizeof(*conf));
|
||||
if (conf != NULL) {
|
||||
memcpy(&conf->base, &base, sizeof(base));
|
||||
conf->dri_config = dri_config;
|
||||
_eglLinkConfig(&conf->base);
|
||||
}
|
||||
|
||||
return conf;
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_add_configs_for_visuals(_EGLDriver *drv, _EGLDisplay *dpy)
|
||||
{
|
||||
struct droid_egl_display *ddpy = droid_egl_display(dpy);
|
||||
const struct {
|
||||
int format;
|
||||
int size;
|
||||
int rgba_masks[4];
|
||||
} visuals[] = {
|
||||
{ GGL_PIXEL_FORMAT_RGBA_8888, 32, { 0xff, 0xff00, 0xff0000, 0xff000000 } },
|
||||
{ GGL_PIXEL_FORMAT_RGBX_8888, 32, { 0xff, 0xff00, 0xff0000, 0x0 } },
|
||||
{ GGL_PIXEL_FORMAT_RGB_888, 24, { 0xff, 0xff00, 0xff0000, 0x0 } },
|
||||
{ GGL_PIXEL_FORMAT_RGB_565, 16, { 0xf800, 0x7e0, 0x1f, 0x0 } },
|
||||
{ GGL_PIXEL_FORMAT_BGRA_8888, 32, { 0xff0000, 0xff00, 0xff, 0xff000000 } },
|
||||
{ GGL_PIXEL_FORMAT_A_8, 8, { 0xf800, 0x7e0, 0x1f, 0x0 } },
|
||||
{ 0, 0, { 0, 0, 0, 0 } }
|
||||
};
|
||||
int count, i, j;
|
||||
|
||||
count = 0;
|
||||
for (i = 0; visuals[i].format; i++) {
|
||||
int format_count = 0;
|
||||
|
||||
for (j = 0; ddpy->dri_configs[j]; j++) {
|
||||
struct droid_egl_config *dconf;
|
||||
|
||||
dconf = droid_add_config(dpy, ddpy->dri_configs[j], count + 1,
|
||||
visuals[i].size, EGL_WINDOW_BIT, visuals[i].rgba_masks);
|
||||
if (dconf) {
|
||||
_eglSetConfigKey(&dconf->base,
|
||||
EGL_NATIVE_VISUAL_TYPE, visuals[i].format);
|
||||
count++;
|
||||
format_count++;
|
||||
}
|
||||
}
|
||||
|
||||
if (!format_count) {
|
||||
_eglLog(_EGL_DEBUG, "No DRI config supports native format 0x%x",
|
||||
visuals[i].format);
|
||||
}
|
||||
}
|
||||
|
||||
return (count != 0);
|
||||
}
|
||||
|
||||
struct droid_extension_match {
|
||||
const char *name;
|
||||
int version;
|
||||
int offset;
|
||||
};
|
||||
|
||||
static struct droid_extension_match droid_driver_extensions[] = {
|
||||
{ __DRI_CORE, 1, offsetof(struct droid_egl_display, core) },
|
||||
{ __DRI_DRI2, 1, offsetof(struct droid_egl_display, dri2) },
|
||||
{ NULL, 0, 0 }
|
||||
};
|
||||
|
||||
static struct droid_extension_match droid_core_extensions[] = {
|
||||
{ __DRI2_FLUSH, 1, offsetof(struct droid_egl_display, flush) },
|
||||
{ __DRI_IMAGE, 1, offsetof(struct droid_egl_display, image) },
|
||||
{ NULL, 0, 0 }
|
||||
};
|
||||
|
||||
extern const __DRIextension *__driDriverExtensions[];
|
||||
|
||||
static EGLBoolean
|
||||
droid_bind_extensions(struct droid_egl_display *ddpy,
|
||||
struct droid_extension_match *matches,
|
||||
const __DRIextension **extensions)
|
||||
{
|
||||
int i, j, ret = EGL_TRUE;
|
||||
void *field;
|
||||
|
||||
for (i = 0; extensions[i]; i++) {
|
||||
_eglLog(_EGL_DEBUG, "DRI2: found extension `%s'", extensions[i]->name);
|
||||
for (j = 0; matches[j].name; j++) {
|
||||
if (strcmp(extensions[i]->name, matches[j].name) == 0 &&
|
||||
extensions[i]->version >= matches[j].version) {
|
||||
field = ((char *) ddpy + matches[j].offset);
|
||||
*(const __DRIextension **) field = extensions[i];
|
||||
_eglLog(_EGL_INFO, "DRI2: found extension %s version %d",
|
||||
extensions[i]->name, extensions[i]->version);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (j = 0; matches[j].name; j++) {
|
||||
field = ((char *) ddpy + matches[j].offset);
|
||||
if (*(const __DRIextension **) field == NULL) {
|
||||
_eglLog(_EGL_FATAL, "DRI2: did not find extension %s version %d",
|
||||
matches[j].name, matches[j].version);
|
||||
ret = EGL_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_create_screen(_EGLDisplay *dpy)
|
||||
{
|
||||
struct droid_egl_display *ddpy = droid_egl_display(dpy);
|
||||
const __DRIextension **extensions;
|
||||
unsigned int api_mask;
|
||||
|
||||
ddpy->dri_screen =
|
||||
ddpy->dri2->createNewScreen(0, ddpy->fd, ddpy->extensions,
|
||||
&ddpy->dri_configs, dpy);
|
||||
if (ddpy->dri_screen == NULL) {
|
||||
_eglLog(_EGL_WARNING, "failed to create dri screen");
|
||||
return EGL_FALSE;
|
||||
}
|
||||
|
||||
extensions = ddpy->core->getExtensions(ddpy->dri_screen);
|
||||
if (!droid_bind_extensions(ddpy, droid_core_extensions, extensions)) {
|
||||
ddpy->core->destroyScreen(ddpy->dri_screen);
|
||||
return EGL_FALSE;
|
||||
}
|
||||
|
||||
if (ddpy->dri2->base.version >= 2)
|
||||
api_mask = ddpy->dri2->getAPIMask(ddpy->dri_screen);
|
||||
else
|
||||
api_mask = __DRI_API_OPENGL;
|
||||
|
||||
dpy->ClientAPIsMask = 0;
|
||||
if (api_mask & (1 <<__DRI_API_OPENGL))
|
||||
dpy->ClientAPIsMask |= EGL_OPENGL_BIT;
|
||||
if (api_mask & (1 <<__DRI_API_GLES))
|
||||
dpy->ClientAPIsMask |= EGL_OPENGL_ES_BIT;
|
||||
if (api_mask & (1 << __DRI_API_GLES2))
|
||||
dpy->ClientAPIsMask |= EGL_OPENGL_ES2_BIT;
|
||||
|
||||
if (ddpy->dri2->base.version >= 2) {
|
||||
dpy->Extensions.KHR_surfaceless_gles1 = EGL_TRUE;
|
||||
dpy->Extensions.KHR_surfaceless_gles2 = EGL_TRUE;
|
||||
dpy->Extensions.KHR_surfaceless_opengl = EGL_TRUE;
|
||||
}
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_load_driver(_EGLDisplay *disp)
|
||||
{
|
||||
struct droid_egl_display *ddpy = disp->DriverData;
|
||||
const __DRIextension **extensions;
|
||||
|
||||
extensions = __driDriverExtensions;
|
||||
|
||||
if (!droid_bind_extensions(ddpy, droid_driver_extensions, extensions))
|
||||
return EGL_FALSE;
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_initialize_android(_EGLDriver *drv, _EGLDisplay *dpy,
|
||||
EGLint *major, EGLint *minor)
|
||||
{
|
||||
struct droid_egl_display *ddpy;
|
||||
int fd = -1, err, i;
|
||||
const hw_module_t *mod;
|
||||
|
||||
err = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &mod);
|
||||
if (!err) {
|
||||
const gralloc_module_t *gr = (gralloc_module_t *) mod;
|
||||
|
||||
err = -EINVAL;
|
||||
if (gr->perform)
|
||||
err = gr->perform(gr, GRALLOC_MODULE_PERFORM_GET_DRM_FD, &fd);
|
||||
}
|
||||
if (err || fd < 0) {
|
||||
_eglLog(_EGL_WARNING, "fail to get drm fd");
|
||||
return EGL_FALSE;
|
||||
}
|
||||
|
||||
ddpy = calloc(1, sizeof(*ddpy));
|
||||
if (!ddpy)
|
||||
return _eglError(EGL_BAD_ALLOC, "eglInitialize");
|
||||
|
||||
dpy->DriverData = (void *) ddpy;
|
||||
|
||||
ddpy->fd = fd;
|
||||
if (!droid_load_driver(dpy))
|
||||
return EGL_FALSE;
|
||||
|
||||
ddpy->loader_extension.base.name = __DRI_DRI2_LOADER;
|
||||
ddpy->loader_extension.base.version = 3;
|
||||
ddpy->loader_extension.getBuffers = NULL;
|
||||
ddpy->loader_extension.flushFrontBuffer = droid_flush_front_buffer;
|
||||
ddpy->loader_extension.getBuffersWithFormat =
|
||||
droid_get_buffers_with_format;
|
||||
|
||||
ddpy->extensions[0] = &ddpy->loader_extension.base;
|
||||
ddpy->extensions[1] = &image_lookup_extension.base;
|
||||
ddpy->extensions[2] = &use_invalidate.base;
|
||||
ddpy->extensions[3] = NULL;
|
||||
|
||||
if (!droid_create_screen(dpy)) {
|
||||
free(ddpy);
|
||||
return EGL_FALSE;
|
||||
}
|
||||
|
||||
if (!droid_add_configs_for_visuals(drv, dpy)) {
|
||||
ddpy->core->destroyScreen(ddpy->dri_screen);
|
||||
free(ddpy);
|
||||
}
|
||||
|
||||
dpy->Extensions.ANDROID_image_native_buffer = EGL_TRUE;
|
||||
dpy->Extensions.KHR_image_base = EGL_TRUE;
|
||||
|
||||
/* we're supporting EGL 1.4 */
|
||||
*major = 1;
|
||||
*minor = 4;
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_terminate(_EGLDriver *drv, _EGLDisplay *dpy)
|
||||
{
|
||||
struct droid_egl_display *ddpy = droid_egl_display(dpy);
|
||||
|
||||
_eglReleaseDisplayResources(drv, dpy);
|
||||
_eglCleanupDisplay(dpy);
|
||||
|
||||
ddpy->core->destroyScreen(ddpy->dri_screen);
|
||||
free(ddpy);
|
||||
dpy->DriverData = NULL;
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_initialize(_EGLDriver *drv, _EGLDisplay *dpy,
|
||||
EGLint *major, EGLint *minor)
|
||||
{
|
||||
switch (dpy->Platform) {
|
||||
case _EGL_PLATFORM_ANDROID:
|
||||
return droid_initialize_android(drv, dpy, major, minor);
|
||||
default:
|
||||
return EGL_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static _EGLProc
|
||||
droid_get_proc_address(_EGLDriver *drv, const char *procname)
|
||||
{
|
||||
return (_EGLProc) _glapi_get_proc_address(procname);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
droid_unload(_EGLDriver *drv)
|
||||
{
|
||||
struct droid_egl_driver *ddrv = droid_egl_driver(drv);
|
||||
|
||||
free(ddrv);
|
||||
}
|
||||
|
||||
static void
|
||||
droid_log(EGLint level, const char *msg)
|
||||
{
|
||||
switch (level) {
|
||||
case _EGL_DEBUG:
|
||||
LOGD(msg);
|
||||
break;
|
||||
case _EGL_INFO:
|
||||
LOGI(msg);
|
||||
break;
|
||||
case _EGL_WARNING:
|
||||
LOGW(msg);
|
||||
break;
|
||||
case _EGL_FATAL:
|
||||
LOG_FATAL(msg);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_EGLDriver *
|
||||
droid_create_driver(void)
|
||||
{
|
||||
struct droid_egl_driver *ddrv;
|
||||
|
||||
ddrv = calloc(1, sizeof(*ddrv));
|
||||
if (!ddrv)
|
||||
return NULL;
|
||||
|
||||
_eglSetLogProc(droid_log);
|
||||
|
||||
ddrv->base.Name = "Droid";
|
||||
ddrv->base.Unload = droid_unload;
|
||||
|
||||
_eglInitDriverFallbacks(&ddrv->base);
|
||||
ddrv->base.API.Initialize = droid_initialize;
|
||||
ddrv->base.API.Terminate = droid_terminate;
|
||||
ddrv->base.API.GetProcAddress = droid_get_proc_address;
|
||||
|
||||
ddrv->glFlush =
|
||||
(void (*)(void)) droid_get_proc_address(&ddrv->base, "glFlush");
|
||||
ddrv->glFinish =
|
||||
(void (*)(void)) droid_get_proc_address(&ddrv->base, "glFinish");
|
||||
|
||||
return &ddrv->base;
|
||||
}
|
@@ -1,126 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2010 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (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.
|
||||
*
|
||||
* Authors:
|
||||
* Kristian Høgsberg <krh@bitplanet.net>
|
||||
*/
|
||||
|
||||
#ifndef _DROID_H_
|
||||
#define _DROID_H_
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include <ui/egl/android_natives.h>
|
||||
#include <ui/android_native_buffer.h>
|
||||
#include <pixelflinger/format.h>
|
||||
|
||||
#include <GL/gl.h>
|
||||
#include <GL/internal/dri_interface.h>
|
||||
|
||||
#include "egldriver.h"
|
||||
#include "egldisplay.h"
|
||||
#include "eglcontext.h"
|
||||
#include "eglsurface.h"
|
||||
#include "eglconfig.h"
|
||||
#include "eglimage.h"
|
||||
#include "eglcurrent.h"
|
||||
#include "egllog.h"
|
||||
|
||||
struct droid_egl_driver
|
||||
{
|
||||
_EGLDriver base;
|
||||
|
||||
void (*glFlush)(void);
|
||||
void (*glFinish)(void);
|
||||
};
|
||||
|
||||
struct droid_egl_display
|
||||
{
|
||||
int fd;
|
||||
|
||||
__DRIscreen *dri_screen;
|
||||
const __DRIconfig **dri_configs;
|
||||
__DRIcoreExtension *core;
|
||||
__DRIdri2Extension *dri2;
|
||||
__DRI2flushExtension *flush;
|
||||
__DRIimageExtension *image;
|
||||
|
||||
__DRIdri2LoaderExtension loader_extension;
|
||||
const __DRIextension *extensions[8];
|
||||
};
|
||||
|
||||
struct droid_egl_context
|
||||
{
|
||||
_EGLContext base;
|
||||
|
||||
__DRIcontext *dri_context;
|
||||
};
|
||||
|
||||
struct droid_egl_surface
|
||||
{
|
||||
_EGLSurface base;
|
||||
|
||||
__DRIdrawable *dri_drawable;
|
||||
__DRIbuffer dri_buffer;
|
||||
|
||||
android_native_window_t *window;
|
||||
android_native_buffer_t *buffer;
|
||||
};
|
||||
|
||||
struct droid_egl_config
|
||||
{
|
||||
_EGLConfig base;
|
||||
|
||||
const __DRIconfig *dri_config;
|
||||
};
|
||||
|
||||
struct droid_egl_image
|
||||
{
|
||||
_EGLImage base;
|
||||
|
||||
__DRIimage *dri_image;
|
||||
};
|
||||
|
||||
/* standard typecasts */
|
||||
_EGL_DRIVER_STANDARD_TYPECASTS(droid_egl)
|
||||
_EGL_DRIVER_TYPECAST(droid_egl_image, _EGLImage, obj)
|
||||
|
||||
_EGLDriver *
|
||||
droid_create_driver(void);
|
||||
|
||||
void
|
||||
droid_init_core_functions(_EGLDriver *drv);
|
||||
|
||||
void
|
||||
droid_init_image_functions(_EGLDriver *drv);
|
||||
|
||||
EGLBoolean
|
||||
droid_dequeue_buffer(struct droid_egl_surface *dsurf);
|
||||
|
||||
EGLBoolean
|
||||
droid_enqueue_buffer(struct droid_egl_surface *dsurf);
|
||||
|
||||
int
|
||||
get_native_buffer_name(struct android_native_buffer_t *buf);
|
||||
|
||||
#endif /* _DROID_H_ */
|
@@ -1,327 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2010 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (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.
|
||||
*
|
||||
* Authors:
|
||||
* Kristian Høgsberg <krh@bitplanet.net>
|
||||
*/
|
||||
|
||||
#include "droid.h"
|
||||
|
||||
static _EGLContext *
|
||||
droid_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf,
|
||||
_EGLContext *share_list, const EGLint *attrib_list)
|
||||
{
|
||||
struct droid_egl_context *dctx;
|
||||
struct droid_egl_display *ddpy = droid_egl_display(disp);
|
||||
struct droid_egl_context *dctx_shared = droid_egl_context(share_list);
|
||||
struct droid_egl_config *dconf = droid_egl_config(conf);
|
||||
const __DRIconfig *dri_config;
|
||||
int api;
|
||||
|
||||
(void) drv;
|
||||
|
||||
dctx = calloc(1, sizeof *dctx);
|
||||
if (!dctx) {
|
||||
_eglError(EGL_BAD_ALLOC, "eglCreateContext");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!_eglInitContext(&dctx->base, disp, conf, attrib_list))
|
||||
goto cleanup;
|
||||
|
||||
switch (dctx->base.ClientAPI) {
|
||||
case EGL_OPENGL_ES_API:
|
||||
switch (dctx->base.ClientVersion) {
|
||||
case 1:
|
||||
api = __DRI_API_GLES;
|
||||
break;
|
||||
case 2:
|
||||
api = __DRI_API_GLES2;
|
||||
break;
|
||||
default:
|
||||
_eglError(EGL_BAD_PARAMETER, "eglCreateContext");
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
case EGL_OPENGL_API:
|
||||
api = __DRI_API_OPENGL;
|
||||
break;
|
||||
default:
|
||||
_eglError(EGL_BAD_PARAMETER, "eglCreateContext");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (conf != NULL)
|
||||
dri_config = dconf->dri_config;
|
||||
else
|
||||
dri_config = NULL;
|
||||
|
||||
if (ddpy->dri2->base.version >= 2) {
|
||||
dctx->dri_context =
|
||||
ddpy->dri2->createNewContextForAPI(ddpy->dri_screen,
|
||||
api,
|
||||
dri_config,
|
||||
dctx_shared ?
|
||||
dctx_shared->dri_context : NULL,
|
||||
dctx);
|
||||
} else if (api == __DRI_API_OPENGL) {
|
||||
dctx->dri_context =
|
||||
ddpy->dri2->createNewContext(ddpy->dri_screen,
|
||||
dconf->dri_config,
|
||||
dctx_shared ?
|
||||
dctx_shared->dri_context : NULL,
|
||||
dctx);
|
||||
} else {
|
||||
/* fail */
|
||||
}
|
||||
|
||||
if (!dctx->dri_context)
|
||||
goto cleanup;
|
||||
|
||||
return &dctx->base;
|
||||
|
||||
cleanup:
|
||||
free(dctx);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static _EGLSurface *
|
||||
droid_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type,
|
||||
_EGLConfig *conf, EGLNativeWindowType window,
|
||||
const EGLint *attrib_list)
|
||||
{
|
||||
struct droid_egl_display *ddpy = droid_egl_display(disp);
|
||||
struct droid_egl_config *dconf = droid_egl_config(conf);
|
||||
struct droid_egl_surface *dsurf;
|
||||
int format, vis_type;
|
||||
|
||||
(void) drv;
|
||||
|
||||
if (!window || window->common.magic != ANDROID_NATIVE_WINDOW_MAGIC) {
|
||||
_eglError(EGL_BAD_NATIVE_WINDOW, "droid_create_surface");
|
||||
return NULL;
|
||||
}
|
||||
if (window->query(window, NATIVE_WINDOW_FORMAT, &format)) {
|
||||
_eglError(EGL_BAD_NATIVE_WINDOW, "droid_create_surface");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
vis_type = _eglGetConfigKey(&dconf->base, EGL_NATIVE_VISUAL_TYPE);
|
||||
if (format != vis_type) {
|
||||
_eglLog(_EGL_WARNING, "Native format mismatch: 0x%x != 0x%x",
|
||||
format, vis_type);
|
||||
}
|
||||
|
||||
dsurf = calloc(1, sizeof *dsurf);
|
||||
if (!dsurf) {
|
||||
_eglError(EGL_BAD_ALLOC, "droid_create_surface");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!_eglInitSurface(&dsurf->base, disp, type, conf, attrib_list))
|
||||
goto cleanup_surf;
|
||||
|
||||
dsurf->dri_drawable =
|
||||
(*ddpy->dri2->createNewDrawable) (ddpy->dri_screen,
|
||||
dconf->dri_config, dsurf);
|
||||
if (dsurf->dri_drawable == NULL) {
|
||||
_eglError(EGL_BAD_ALLOC, "dri2->createNewDrawable");
|
||||
goto cleanup_pixmap;
|
||||
}
|
||||
|
||||
window->common.incRef(&window->common);
|
||||
window->query(window, NATIVE_WINDOW_WIDTH, &dsurf->base.Width);
|
||||
window->query(window, NATIVE_WINDOW_HEIGHT, &dsurf->base.Height);
|
||||
|
||||
dsurf->window = window;
|
||||
|
||||
return &dsurf->base;
|
||||
|
||||
cleanup_dri_drawable:
|
||||
ddpy->core->destroyDrawable(dsurf->dri_drawable);
|
||||
cleanup_pixmap:
|
||||
cleanup_surf:
|
||||
free(dsurf);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static _EGLSurface *
|
||||
droid_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
_EGLConfig *conf, EGLNativeWindowType window,
|
||||
const EGLint *attrib_list)
|
||||
{
|
||||
return droid_create_surface(drv, disp, EGL_WINDOW_BIT, conf,
|
||||
window, attrib_list);
|
||||
}
|
||||
|
||||
static _EGLSurface *
|
||||
droid_create_pixmap_surface(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
_EGLConfig *conf, EGLNativePixmapType pixmap,
|
||||
const EGLint *attrib_list)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static _EGLSurface *
|
||||
droid_create_pbuffer_surface(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
_EGLConfig *conf, const EGLint *attrib_list)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
|
||||
{
|
||||
struct droid_egl_display *ddpy = droid_egl_display(disp);
|
||||
struct droid_egl_surface *dsurf = droid_egl_surface(surf);
|
||||
|
||||
(void) drv;
|
||||
|
||||
if (!_eglPutSurface(surf))
|
||||
return EGL_TRUE;
|
||||
|
||||
(*ddpy->core->destroyDrawable)(dsurf->dri_drawable);
|
||||
|
||||
droid_enqueue_buffer(dsurf);
|
||||
dsurf->window->common.decRef(&dsurf->window->common);
|
||||
|
||||
free(surf);
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf,
|
||||
_EGLSurface *rsurf, _EGLContext *ctx)
|
||||
{
|
||||
struct droid_egl_driver *ddrv = droid_egl_driver(drv);
|
||||
struct droid_egl_display *ddpy = droid_egl_display(disp);
|
||||
struct droid_egl_surface *droid_dsurf = droid_egl_surface(dsurf);
|
||||
struct droid_egl_surface *droid_rsurf = droid_egl_surface(rsurf);
|
||||
struct droid_egl_context *dctx = droid_egl_context(ctx);
|
||||
_EGLContext *old_ctx;
|
||||
_EGLSurface *old_dsurf, *old_rsurf;
|
||||
__DRIdrawable *ddraw, *rdraw;
|
||||
__DRIcontext *cctx;
|
||||
|
||||
/* make new bindings */
|
||||
if (!_eglBindContext(ctx, dsurf, rsurf, &old_ctx, &old_dsurf, &old_rsurf))
|
||||
return EGL_FALSE;
|
||||
|
||||
/* flush before context switch */
|
||||
if (old_ctx && ddrv->glFlush)
|
||||
ddrv->glFlush();
|
||||
|
||||
ddraw = (droid_dsurf) ? droid_dsurf->dri_drawable : NULL;
|
||||
rdraw = (droid_rsurf) ? droid_rsurf->dri_drawable : NULL;
|
||||
cctx = (dctx) ? dctx->dri_context : NULL;
|
||||
|
||||
if ((cctx == NULL && ddraw == NULL && rdraw == NULL) ||
|
||||
ddpy->core->bindContext(cctx, ddraw, rdraw)) {
|
||||
droid_destroy_surface(drv, disp, old_dsurf);
|
||||
droid_destroy_surface(drv, disp, old_rsurf);
|
||||
if (old_ctx) {
|
||||
/* unbind the old context only when there is no new context bound */
|
||||
if (!ctx) {
|
||||
__DRIcontext *old_cctx = droid_egl_context(old_ctx)->dri_context;
|
||||
ddpy->core->unbindContext(old_cctx);
|
||||
}
|
||||
/* no destroy? */
|
||||
_eglPutContext(old_ctx);
|
||||
}
|
||||
|
||||
return EGL_TRUE;
|
||||
} else {
|
||||
/* undo the previous _eglBindContext */
|
||||
_eglBindContext(old_ctx, old_dsurf, old_rsurf, &ctx, &dsurf, &rsurf);
|
||||
assert(&dctx->base == ctx &&
|
||||
&droid_dsurf->base == dsurf &&
|
||||
&droid_rsurf->base == rsurf);
|
||||
|
||||
_eglPutSurface(dsurf);
|
||||
_eglPutSurface(rsurf);
|
||||
_eglPutContext(ctx);
|
||||
|
||||
_eglPutSurface(old_dsurf);
|
||||
_eglPutSurface(old_rsurf);
|
||||
_eglPutContext(old_ctx);
|
||||
|
||||
return EGL_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
|
||||
{
|
||||
struct droid_egl_driver *ddrv = droid_egl_driver(drv);
|
||||
struct droid_egl_display *ddpy = droid_egl_display(disp);
|
||||
struct droid_egl_surface *dsurf = droid_egl_surface(draw);
|
||||
_EGLContext *ctx;
|
||||
|
||||
if (ddrv->glFlush) {
|
||||
ctx = _eglGetCurrentContext();
|
||||
if (ctx && ctx->DrawSurface == &dsurf->base)
|
||||
ddrv->glFlush();
|
||||
}
|
||||
|
||||
(*ddpy->flush->flush)(dsurf->dri_drawable);
|
||||
|
||||
if (dsurf->buffer)
|
||||
droid_enqueue_buffer(dsurf);
|
||||
|
||||
(*ddpy->flush->invalidate)(dsurf->dri_drawable);
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_wait_client(_EGLDriver *drv, _EGLDisplay *disp, _EGLContext *ctx)
|
||||
{
|
||||
struct droid_egl_driver *ddrv = droid_egl_driver(drv);
|
||||
struct droid_egl_display *ddpy = droid_egl_display(disp);
|
||||
struct droid_egl_surface *dsurf = droid_egl_surface(ctx->DrawSurface);
|
||||
|
||||
if (ddrv->glFinish)
|
||||
ddrv->glFinish();
|
||||
|
||||
if (dsurf)
|
||||
(*ddpy->flush->flush)(dsurf->dri_drawable);
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
droid_init_core_functions(_EGLDriver *drv)
|
||||
{
|
||||
struct droid_egl_driver *ddrv = droid_egl_driver(drv);
|
||||
|
||||
ddrv->base.API.CreateContext = droid_create_context;
|
||||
ddrv->base.API.CreateWindowSurface = droid_create_window_surface;
|
||||
ddrv->base.API.CreatePixmapSurface = droid_create_pixmap_surface;
|
||||
ddrv->base.API.CreatePbufferSurface = droid_create_pbuffer_surface;
|
||||
ddrv->base.API.DestroySurface = droid_destroy_surface;
|
||||
ddrv->base.API.MakeCurrent = droid_make_current;
|
||||
ddrv->base.API.SwapBuffers = droid_swap_buffers;
|
||||
ddrv->base.API.WaitClient = droid_wait_client;
|
||||
}
|
@@ -1,134 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2010 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (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.
|
||||
*
|
||||
* Authors:
|
||||
* Kristian Høgsberg <krh@bitplanet.net>
|
||||
*/
|
||||
|
||||
#include "droid.h"
|
||||
|
||||
static _EGLImage *
|
||||
droid_create_image_android_native_buffer(_EGLDisplay *disp,
|
||||
EGLClientBuffer buffer)
|
||||
{
|
||||
struct droid_egl_display *ddpy = droid_egl_display(disp);
|
||||
struct android_native_buffer_t *buf =
|
||||
(struct android_native_buffer_t *) buffer;
|
||||
struct droid_egl_image *dimg;
|
||||
EGLint format, name;
|
||||
|
||||
if (!buf || buf->common.magic != ANDROID_NATIVE_BUFFER_MAGIC ||
|
||||
buf->common.version != sizeof(*buf)) {
|
||||
_eglError(EGL_BAD_PARAMETER, "eglCreateEGLImageKHR");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
name = get_native_buffer_name(buf);
|
||||
if (!name) {
|
||||
_eglError(EGL_BAD_PARAMETER, "eglCreateEGLImageKHR");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
switch (buf->format) {
|
||||
case HAL_PIXEL_FORMAT_BGRA_8888:
|
||||
format = __DRI_IMAGE_FORMAT_ARGB8888;
|
||||
break;
|
||||
case HAL_PIXEL_FORMAT_RGB_565:
|
||||
format = __DRI_IMAGE_FORMAT_RGB565;
|
||||
break;
|
||||
case HAL_PIXEL_FORMAT_RGBA_8888:
|
||||
format = __DRI_IMAGE_FORMAT_RGBA8888_REV;
|
||||
break;
|
||||
case HAL_PIXEL_FORMAT_RGBX_8888:
|
||||
case HAL_PIXEL_FORMAT_RGB_888:
|
||||
case HAL_PIXEL_FORMAT_RGBA_5551:
|
||||
case HAL_PIXEL_FORMAT_RGBA_4444:
|
||||
/* unsupported */
|
||||
default:
|
||||
_eglLog(_EGL_WARNING, "unsupported native buffer format 0x%x", buf->format);
|
||||
return NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
dimg = calloc(1, sizeof(*dimg));
|
||||
if (!dimg) {
|
||||
_eglError(EGL_BAD_ALLOC, "droid_create_image_mesa_drm");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!_eglInitImage(&dimg->base, disp)) {
|
||||
free(dimg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dimg->dri_image =
|
||||
ddpy->image->createImageFromName(ddpy->dri_screen,
|
||||
buf->width,
|
||||
buf->height,
|
||||
format,
|
||||
name,
|
||||
buf->stride,
|
||||
dimg);
|
||||
if (!dimg->dri_image) {
|
||||
free(dimg);
|
||||
_eglError(EGL_BAD_ALLOC, "droid_create_image_mesa_drm");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return &dimg->base;
|
||||
}
|
||||
|
||||
static _EGLImage *
|
||||
droid_create_image_khr(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
_EGLContext *ctx, EGLenum target,
|
||||
EGLClientBuffer buffer, const EGLint *attr_list)
|
||||
{
|
||||
switch (target) {
|
||||
case EGL_NATIVE_BUFFER_ANDROID:
|
||||
return droid_create_image_android_native_buffer(disp, buffer);
|
||||
default:
|
||||
_eglError(EGL_BAD_PARAMETER, "droid_create_image_khr");
|
||||
return EGL_NO_IMAGE_KHR;
|
||||
}
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_destroy_image_khr(_EGLDriver *drv, _EGLDisplay *disp, _EGLImage *image)
|
||||
{
|
||||
struct droid_egl_display *ddpy = droid_egl_display(disp);
|
||||
struct droid_egl_image *dimg = droid_egl_image(image);
|
||||
|
||||
ddpy->image->destroyImage(dimg->dri_image);
|
||||
free(dimg);
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
droid_init_image_functions(_EGLDriver *drv)
|
||||
{
|
||||
struct droid_egl_driver *ddrv = droid_egl_driver(drv);
|
||||
|
||||
ddrv->base.API.CreateImageKHR = droid_create_image_khr;
|
||||
ddrv->base.API.DestroyImageKHR = droid_destroy_image_khr;
|
||||
}
|
@@ -1,42 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2010 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (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.
|
||||
*
|
||||
* Authors:
|
||||
* Kristian Høgsberg <krh@bitplanet.net>
|
||||
*/
|
||||
|
||||
#include "droid.h"
|
||||
|
||||
_EGLDriver *
|
||||
_eglMain(const char *args)
|
||||
{
|
||||
_EGLDriver *drv;
|
||||
|
||||
drv = droid_create_driver();
|
||||
if (drv) {
|
||||
droid_init_core_functions(drv);
|
||||
droid_init_image_functions(drv);
|
||||
}
|
||||
|
||||
return drv;
|
||||
}
|
@@ -916,12 +916,6 @@ eglGetProcAddress(const char *procname)
|
||||
#ifdef EGL_MESA_drm_image
|
||||
{ "eglCreateDRMImageMESA", (_EGLProc) eglCreateDRMImageMESA },
|
||||
{ "eglExportDRMImageMESA", (_EGLProc) eglExportDRMImageMESA },
|
||||
#endif
|
||||
#ifdef EGL_ANDROID_swap_rectangle
|
||||
{ "eglSetSwapRectangleANDROID", (_EGLProc) eglSetSwapRectangleANDROID },
|
||||
#endif
|
||||
#ifdef EGL_ANDROID_get_render_buffer
|
||||
{ "eglGetRenderBufferANDROID", (_EGLProc) eglGetRenderBufferANDROID },
|
||||
#endif
|
||||
{ NULL, NULL }
|
||||
};
|
||||
@@ -1500,49 +1494,3 @@ eglExportDRMImageMESA(EGLDisplay dpy, EGLImageKHR image,
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef EGL_ANDROID_swap_rectangle
|
||||
|
||||
EGLBoolean EGLAPIENTRY
|
||||
eglSetSwapRectangleANDROID(EGLDisplay dpy, EGLSurface draw,
|
||||
EGLint left, EGLint top,
|
||||
EGLint width, EGLint height)
|
||||
{
|
||||
_EGLDisplay *disp = _eglLockDisplay(dpy);
|
||||
_EGLSurface *surf = _eglLookupSurface(draw, disp);
|
||||
_EGLDriver *drv;
|
||||
EGLBoolean ret;
|
||||
|
||||
_EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
|
||||
|
||||
if (!disp->Extensions.ANDROID_swap_rectangle)
|
||||
RETURN_EGL_EVAL(disp, EGL_FALSE);
|
||||
|
||||
ret = drv->API.SetSwapRectangleANDROID(drv, disp, surf, left, top, width, height);
|
||||
|
||||
RETURN_EGL_EVAL(disp, ret);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef EGL_ANDROID_get_render_buffer
|
||||
|
||||
EGLClientBuffer EGLAPIENTRY
|
||||
eglGetRenderBufferANDROID(EGLDisplay dpy, EGLSurface draw)
|
||||
{
|
||||
_EGLDisplay *disp = _eglLockDisplay(dpy);
|
||||
_EGLSurface *surf = _eglLookupSurface(draw, disp);
|
||||
_EGLDriver *drv;
|
||||
EGLClientBuffer ret;
|
||||
|
||||
_EGL_CHECK_SURFACE(disp, surf, NULL, drv);
|
||||
|
||||
if (!disp->Extensions.ANDROID_get_render_buffer)
|
||||
RETURN_EGL_EVAL(disp, NULL);
|
||||
|
||||
ret = drv->API.GetRenderBufferANDROID(drv, disp, surf);
|
||||
|
||||
RETURN_EGL_EVAL(disp, ret);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -95,14 +95,6 @@ typedef _EGLImage *(*CreateDRMImageMESA_t)(_EGLDriver *drv, _EGLDisplay *disp, c
|
||||
typedef EGLBoolean (*ExportDRMImageMESA_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLImage *img, EGLint *name, EGLint *handle, EGLint *stride);
|
||||
#endif
|
||||
|
||||
#ifdef EGL_ANDROID_swap_rectangle
|
||||
typedef EGLBoolean (*SetSwapRectangleANDROID_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw, EGLint left, EGLint top, EGLint width, EGLint height);
|
||||
#endif
|
||||
|
||||
#ifdef EGL_ANDROID_get_render_buffer
|
||||
typedef EGLClientBuffer (*GetRenderBufferANDROID_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* The API dispatcher jumps through these functions
|
||||
*/
|
||||
@@ -177,13 +169,6 @@ struct _egl_api
|
||||
CreateDRMImageMESA_t CreateDRMImageMESA;
|
||||
ExportDRMImageMESA_t ExportDRMImageMESA;
|
||||
#endif
|
||||
|
||||
#ifdef EGL_ANDROID_swap_rectangle
|
||||
SetSwapRectangleANDROID_t SetSwapRectangleANDROID;
|
||||
#endif
|
||||
#ifdef EGL_ANDROID_get_render_buffer
|
||||
GetRenderBufferANDROID_t GetRenderBufferANDROID;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* EGLAPI_INCLUDED */
|
||||
|
@@ -28,8 +28,7 @@ _eglGetNativePlatformFromEnv(void)
|
||||
{ _EGL_PLATFORM_WINDOWS, "gdi" },
|
||||
{ _EGL_PLATFORM_X11, "x11" },
|
||||
{ _EGL_PLATFORM_DRM, "drm" },
|
||||
{ _EGL_PLATFORM_FBDEV, "fbdev" },
|
||||
{ _EGL_PLATFORM_ANDROID, "android" }
|
||||
{ _EGL_PLATFORM_FBDEV, "fbdev" }
|
||||
};
|
||||
_EGLPlatformType plat = _EGL_INVALID_PLATFORM;
|
||||
const char *plat_name;
|
||||
|
@@ -13,7 +13,6 @@ enum _egl_platform_type {
|
||||
_EGL_PLATFORM_X11,
|
||||
_EGL_PLATFORM_DRM,
|
||||
_EGL_PLATFORM_FBDEV,
|
||||
_EGL_PLATFORM_ANDROID,
|
||||
|
||||
_EGL_NUM_PLATFORMS,
|
||||
_EGL_INVALID_PLATFORM = -1
|
||||
@@ -76,10 +75,6 @@ struct _egl_extensions
|
||||
EGLBoolean NOK_swap_region;
|
||||
EGLBoolean NOK_texture_from_pixmap;
|
||||
|
||||
EGLBoolean ANDROID_image_native_buffer;
|
||||
EGLBoolean ANDROID_swap_rectangle;
|
||||
EGLBoolean ANDROID_get_render_buffer;
|
||||
|
||||
char String[_EGL_MAX_EXTENSIONS_LEN];
|
||||
};
|
||||
|
||||
|
@@ -86,30 +86,6 @@ library_suffix(void)
|
||||
}
|
||||
|
||||
|
||||
#else /* _EGL_PLATFORM_NO_OS */
|
||||
|
||||
|
||||
typedef void *lib_handle;
|
||||
|
||||
static INLINE void *
|
||||
open_library(const char *filename)
|
||||
{
|
||||
return (void *) filename;
|
||||
}
|
||||
|
||||
static INLINE void
|
||||
close_library(void *lib)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
static const char *
|
||||
library_suffix(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -147,8 +123,6 @@ _eglOpenLibrary(const char *driverPath, lib_handle *handle)
|
||||
else {
|
||||
error = dlerror();
|
||||
}
|
||||
#else /* _EGL_PLATFORM_NO_OS */
|
||||
mainFunc = (_EGLMain_t) _eglMain;
|
||||
#endif
|
||||
|
||||
if (!lib) {
|
||||
@@ -527,10 +501,6 @@ _eglAddDefaultDrivers(void)
|
||||
"egl_dri2",
|
||||
"egl_glx"
|
||||
};
|
||||
#else /* _EGL_PLATFORM_NO_OS */
|
||||
const char *DefaultDriverNames[] = {
|
||||
"<builtin>"
|
||||
};
|
||||
#endif
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(DefaultDriverNames); i++) {
|
||||
|
@@ -107,10 +107,6 @@ _eglUpdateExtensionsString(_EGLDisplay *dpy)
|
||||
|
||||
_EGL_CHECK_EXTENSION(NOK_swap_region);
|
||||
_EGL_CHECK_EXTENSION(NOK_texture_from_pixmap);
|
||||
|
||||
_EGL_CHECK_EXTENSION(ANDROID_image_native_buffer);
|
||||
_EGL_CHECK_EXTENSION(ANDROID_swap_rectangle);
|
||||
_EGL_CHECK_EXTENSION(ANDROID_get_render_buffer);
|
||||
#undef _EGL_CHECK_EXTENSION
|
||||
}
|
||||
|
||||
|
@@ -1,3 +0,0 @@
|
||||
ifeq ($(strip $(MESA_BUILD_GALLIUM)),true)
|
||||
include $(call all-subdir-makefiles)
|
||||
endif
|
@@ -52,7 +52,6 @@ if env['drm']:
|
||||
# Needed by some state trackers
|
||||
SConscript('winsys/sw/null/SConscript')
|
||||
|
||||
SConscript('state_trackers/python/SConscript')
|
||||
if env['platform'] != 'embedded':
|
||||
SConscript('state_trackers/vega/SConscript')
|
||||
|
||||
|
@@ -1,213 +0,0 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
# from Makefile
|
||||
C_SOURCES = \
|
||||
cso_cache/cso_cache.c \
|
||||
cso_cache/cso_context.c \
|
||||
cso_cache/cso_hash.c \
|
||||
draw/draw_context.c \
|
||||
draw/draw_fs.c \
|
||||
draw/draw_gs.c \
|
||||
draw/draw_pipe.c \
|
||||
draw/draw_pipe_aaline.c \
|
||||
draw/draw_pipe_aapoint.c \
|
||||
draw/draw_pipe_clip.c \
|
||||
draw/draw_pipe_cull.c \
|
||||
draw/draw_pipe_flatshade.c \
|
||||
draw/draw_pipe_offset.c \
|
||||
draw/draw_pipe_pstipple.c \
|
||||
draw/draw_pipe_stipple.c \
|
||||
draw/draw_pipe_twoside.c \
|
||||
draw/draw_pipe_unfilled.c \
|
||||
draw/draw_pipe_util.c \
|
||||
draw/draw_pipe_validate.c \
|
||||
draw/draw_pipe_vbuf.c \
|
||||
draw/draw_pipe_wide_line.c \
|
||||
draw/draw_pipe_wide_point.c \
|
||||
draw/draw_pt.c \
|
||||
draw/draw_pt_emit.c \
|
||||
draw/draw_pt_fetch.c \
|
||||
draw/draw_pt_fetch_emit.c \
|
||||
draw/draw_pt_fetch_shade_emit.c \
|
||||
draw/draw_pt_fetch_shade_pipeline.c \
|
||||
draw/draw_pt_post_vs.c \
|
||||
draw/draw_pt_so_emit.c \
|
||||
draw/draw_pt_util.c \
|
||||
draw/draw_pt_vsplit.c \
|
||||
draw/draw_vertex.c \
|
||||
draw/draw_vs.c \
|
||||
draw/draw_vs_aos.c \
|
||||
draw/draw_vs_aos_io.c \
|
||||
draw/draw_vs_aos_machine.c \
|
||||
draw/draw_vs_exec.c \
|
||||
draw/draw_vs_ppc.c \
|
||||
draw/draw_vs_sse.c \
|
||||
draw/draw_vs_varient.c \
|
||||
indices/u_indices_gen.c \
|
||||
indices/u_unfilled_gen.c \
|
||||
os/os_misc.c \
|
||||
os/os_stream.c \
|
||||
os/os_stream_log.c \
|
||||
os/os_stream_null.c \
|
||||
os/os_stream_stdc.c \
|
||||
os/os_stream_str.c \
|
||||
os/os_time.c \
|
||||
pipebuffer/pb_buffer_fenced.c \
|
||||
pipebuffer/pb_buffer_malloc.c \
|
||||
pipebuffer/pb_bufmgr_alt.c \
|
||||
pipebuffer/pb_bufmgr_cache.c \
|
||||
pipebuffer/pb_bufmgr_debug.c \
|
||||
pipebuffer/pb_bufmgr_mm.c \
|
||||
pipebuffer/pb_bufmgr_ondemand.c \
|
||||
pipebuffer/pb_bufmgr_pool.c \
|
||||
pipebuffer/pb_bufmgr_slab.c \
|
||||
pipebuffer/pb_validate.c \
|
||||
rbug/rbug_connection.c \
|
||||
rbug/rbug_context.c \
|
||||
rbug/rbug_core.c \
|
||||
rbug/rbug_demarshal.c \
|
||||
rbug/rbug_texture.c \
|
||||
rbug/rbug_shader.c \
|
||||
rtasm/rtasm_cpu.c \
|
||||
rtasm/rtasm_execmem.c \
|
||||
rtasm/rtasm_ppc.c \
|
||||
rtasm/rtasm_ppc_spe.c \
|
||||
rtasm/rtasm_x86sse.c \
|
||||
tgsi/tgsi_build.c \
|
||||
tgsi/tgsi_dump.c \
|
||||
tgsi/tgsi_exec.c \
|
||||
tgsi/tgsi_info.c \
|
||||
tgsi/tgsi_iterate.c \
|
||||
tgsi/tgsi_parse.c \
|
||||
tgsi/tgsi_ppc.c \
|
||||
tgsi/tgsi_sanity.c \
|
||||
tgsi/tgsi_scan.c \
|
||||
tgsi/tgsi_sse2.c \
|
||||
tgsi/tgsi_text.c \
|
||||
tgsi/tgsi_transform.c \
|
||||
tgsi/tgsi_ureg.c \
|
||||
tgsi/tgsi_util.c \
|
||||
translate/translate.c \
|
||||
translate/translate_cache.c \
|
||||
translate/translate_generic.c \
|
||||
translate/translate_sse.c \
|
||||
util/u_debug.c \
|
||||
util/u_debug_describe.c \
|
||||
util/u_debug_refcnt.c \
|
||||
util/u_debug_stack.c \
|
||||
util/u_debug_symbol.c \
|
||||
util/u_dump_defines.c \
|
||||
util/u_dump_state.c \
|
||||
util/u_bitmask.c \
|
||||
util/u_blit.c \
|
||||
util/u_blitter.c \
|
||||
util/u_cache.c \
|
||||
util/u_caps.c \
|
||||
util/u_cpu_detect.c \
|
||||
util/u_dl.c \
|
||||
util/u_draw_quad.c \
|
||||
util/u_format.c \
|
||||
util/u_format_other.c \
|
||||
util/u_format_s3tc.c \
|
||||
util/u_format_srgb.c \
|
||||
util/u_format_table.c \
|
||||
util/u_format_tests.c \
|
||||
util/u_format_yuv.c \
|
||||
util/u_format_zs.c \
|
||||
util/u_framebuffer.c \
|
||||
util/u_gen_mipmap.c \
|
||||
util/u_half.c \
|
||||
util/u_handle_table.c \
|
||||
util/u_hash.c \
|
||||
util/u_hash_table.c \
|
||||
util/u_index_modify.c \
|
||||
util/u_keymap.c \
|
||||
util/u_linear.c \
|
||||
util/u_linkage.c \
|
||||
util/u_network.c \
|
||||
util/u_math.c \
|
||||
util/u_mm.c \
|
||||
util/u_rect.c \
|
||||
util/u_ringbuffer.c \
|
||||
util/u_sampler.c \
|
||||
util/u_simple_shaders.c \
|
||||
util/u_slab.c \
|
||||
util/u_snprintf.c \
|
||||
util/u_staging.c \
|
||||
util/u_surface.c \
|
||||
util/u_surfaces.c \
|
||||
util/u_texture.c \
|
||||
util/u_tile.c \
|
||||
util/u_transfer.c \
|
||||
util/u_resource.c \
|
||||
util/u_upload_mgr.c
|
||||
|
||||
GENERATED_SOURCES = \
|
||||
indices/u_indices_gen.c \
|
||||
indices/u_unfilled_gen.c \
|
||||
util/u_format_srgb.c \
|
||||
util/u_format_table.c \
|
||||
util/u_half.c
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
$(filter-out $(GENERATED_SOURCES), $(C_SOURCES))
|
||||
|
||||
LOCAL_CFLAGS := \
|
||||
-fvisibility=hidden \
|
||||
-Wno-sign-compare
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
external/mesa/include \
|
||||
external/mesa/src/gallium/include \
|
||||
external/mesa/src/gallium/auxiliary \
|
||||
external/mesa/src/gallium/drivers \
|
||||
external/mesa/src/gallium/auxiliary/util
|
||||
|
||||
LOCAL_MODULE := libmesa_gallium
|
||||
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
|
||||
|
||||
intermediates := $(call local-intermediates-dir)
|
||||
|
||||
GEN_SCRIPT := $(LOCAL_PATH)/indices/u_indices_gen.py
|
||||
GEN := $(intermediates)/indices/u_indices_gen.c
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = python $< > $@
|
||||
$(GEN): $(GEN_SCRIPT)
|
||||
$(transform-generated-source)
|
||||
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
GEN_SCRIPT := $(LOCAL_PATH)/indices/u_unfilled_gen.py
|
||||
GEN := $(intermediates)/indices/u_unfilled_gen.c
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = python $< > $@
|
||||
$(GEN): $(GEN_SCRIPT)
|
||||
$(transform-generated-source)
|
||||
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
GEN_SCRIPT := $(LOCAL_PATH)/util/u_format_srgb.py
|
||||
GEN := $(intermediates)/util/u_format_srgb.c
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = python $< > $@
|
||||
$(GEN): $(GEN_SCRIPT)
|
||||
$(transform-generated-source)
|
||||
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
GEN_SCRIPT := $(LOCAL_PATH)/util/u_format_table.py
|
||||
GEN := $(intermediates)/util/u_format_table.c
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL := python $(GEN_SCRIPT) $(LOCAL_PATH)/util/u_format.csv > $(GEN)
|
||||
$(GEN): $(GEN_SCRIPT) $(LOCAL_PATH)/util/u_format.csv
|
||||
$(transform-generated-source)
|
||||
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
GEN_SCRIPT := $(LOCAL_PATH)/util/u_half.py
|
||||
GEN := $(intermediates)/util/u_half.c
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = python $< > $@
|
||||
$(GEN): $(GEN_SCRIPT)
|
||||
$(transform-generated-source)
|
||||
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
@@ -595,7 +595,7 @@ enum pipe_error cso_set_vertex_samplers(struct cso_context *ctx,
|
||||
error = temp;
|
||||
}
|
||||
|
||||
for ( ; i < ctx->nr_samplers; i++) {
|
||||
for ( ; i < ctx->nr_vertex_samplers; i++) {
|
||||
temp = cso_single_vertex_sampler( ctx, i, NULL );
|
||||
if (temp != PIPE_OK)
|
||||
error = temp;
|
||||
|
@@ -163,6 +163,7 @@ static void interp( const struct clip_stage *clip,
|
||||
*/
|
||||
static void emit_poly( struct draw_stage *stage,
|
||||
struct vertex_header **inlist,
|
||||
const boolean *edgeflags,
|
||||
unsigned n,
|
||||
const struct prim_header *origPrim)
|
||||
{
|
||||
@@ -181,6 +182,9 @@ static void emit_poly( struct draw_stage *stage,
|
||||
edge_last = DRAW_PIPE_EDGE_FLAG_1;
|
||||
}
|
||||
|
||||
if (!edgeflags[0])
|
||||
edge_first = 0;
|
||||
|
||||
/* later stages may need the determinant, but only the sign matters */
|
||||
header.det = origPrim->det;
|
||||
header.flags = DRAW_PIPE_RESET_STIPPLE | edge_first | edge_middle;
|
||||
@@ -199,7 +203,11 @@ static void emit_poly( struct draw_stage *stage,
|
||||
header.v[2] = inlist[0]; /* the provoking vertex */
|
||||
}
|
||||
|
||||
if (i == n-1)
|
||||
if (!edgeflags[i-1]) {
|
||||
header.flags &= ~edge_middle;
|
||||
}
|
||||
|
||||
if (i == n - 1 && edgeflags[i])
|
||||
header.flags |= edge_last;
|
||||
|
||||
if (0) {
|
||||
@@ -248,15 +256,33 @@ do_clip_tri( struct draw_stage *stage,
|
||||
unsigned tmpnr = 0;
|
||||
unsigned n = 3;
|
||||
unsigned i;
|
||||
boolean aEdges[MAX_CLIPPED_VERTICES];
|
||||
boolean bEdges[MAX_CLIPPED_VERTICES];
|
||||
boolean *inEdges = aEdges;
|
||||
boolean *outEdges = bEdges;
|
||||
|
||||
inlist[0] = header->v[0];
|
||||
inlist[1] = header->v[1];
|
||||
inlist[2] = header->v[2];
|
||||
|
||||
/*
|
||||
* Note: at this point we can't just use the per-vertex edge flags.
|
||||
* We have to observe the edge flag bits set in header->flags which
|
||||
* were set during primitive decomposition. Put those flags into
|
||||
* an edge flags array which parallels the vertex array.
|
||||
* Later, in the 'unfilled' pipeline stage we'll draw the edge if both
|
||||
* the header.flags bit is set AND the per-vertex edgeflag field is set.
|
||||
*/
|
||||
inEdges[0] = !!(header->flags & DRAW_PIPE_EDGE_FLAG_0);
|
||||
inEdges[1] = !!(header->flags & DRAW_PIPE_EDGE_FLAG_1);
|
||||
inEdges[2] = !!(header->flags & DRAW_PIPE_EDGE_FLAG_2);
|
||||
|
||||
while (clipmask && n >= 3) {
|
||||
const unsigned plane_idx = ffs(clipmask)-1;
|
||||
const boolean is_user_clip_plane = plane_idx >= 6;
|
||||
const float *plane = clipper->plane[plane_idx];
|
||||
struct vertex_header *vert_prev = inlist[0];
|
||||
boolean *edge_prev = &inEdges[0];
|
||||
float dp_prev = dot4( vert_prev->clip, plane );
|
||||
unsigned outcount = 0;
|
||||
|
||||
@@ -266,9 +292,11 @@ do_clip_tri( struct draw_stage *stage,
|
||||
if (n >= MAX_CLIPPED_VERTICES)
|
||||
return;
|
||||
inlist[n] = inlist[0]; /* prevent rotation of vertices */
|
||||
inEdges[n] = inEdges[0];
|
||||
|
||||
for (i = 1; i <= n; i++) {
|
||||
struct vertex_header *vert = inlist[i];
|
||||
boolean *edge = &inEdges[i];
|
||||
|
||||
float dp = dot4( vert->clip, plane );
|
||||
|
||||
@@ -276,11 +304,13 @@ do_clip_tri( struct draw_stage *stage,
|
||||
assert(outcount < MAX_CLIPPED_VERTICES);
|
||||
if (outcount >= MAX_CLIPPED_VERTICES)
|
||||
return;
|
||||
outEdges[outcount] = *edge_prev;
|
||||
outlist[outcount++] = vert_prev;
|
||||
}
|
||||
|
||||
if (DIFFERENT_SIGNS(dp, dp_prev)) {
|
||||
struct vertex_header *new_vert;
|
||||
boolean *new_edge;
|
||||
|
||||
assert(tmpnr < MAX_CLIPPED_VERTICES + 1);
|
||||
if (tmpnr >= MAX_CLIPPED_VERTICES + 1)
|
||||
@@ -290,6 +320,8 @@ do_clip_tri( struct draw_stage *stage,
|
||||
assert(outcount < MAX_CLIPPED_VERTICES);
|
||||
if (outcount >= MAX_CLIPPED_VERTICES)
|
||||
return;
|
||||
|
||||
new_edge = &outEdges[outcount];
|
||||
outlist[outcount++] = new_vert;
|
||||
|
||||
if (IS_NEGATIVE(dp)) {
|
||||
@@ -299,10 +331,22 @@ do_clip_tri( struct draw_stage *stage,
|
||||
float t = dp / (dp - dp_prev);
|
||||
interp( clipper, new_vert, t, vert, vert_prev );
|
||||
|
||||
/* Force edgeflag true in this case:
|
||||
/* Whether or not to set edge flag for the new vert depends
|
||||
* on whether it's a user-defined clipping plane. We're
|
||||
* copying NVIDIA's behaviour here.
|
||||
*/
|
||||
new_vert->edgeflag = 1;
|
||||
} else {
|
||||
if (is_user_clip_plane) {
|
||||
/* we want to see an edge along the clip plane */
|
||||
*new_edge = TRUE;
|
||||
new_vert->edgeflag = TRUE;
|
||||
}
|
||||
else {
|
||||
/* we don't want to see an edge along the frustum clip plane */
|
||||
*new_edge = *edge_prev;
|
||||
new_vert->edgeflag = FALSE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* Coming back in.
|
||||
*/
|
||||
float t = dp_prev / (dp_prev - dp);
|
||||
@@ -311,10 +355,12 @@ do_clip_tri( struct draw_stage *stage,
|
||||
/* Copy starting vert's edgeflag:
|
||||
*/
|
||||
new_vert->edgeflag = vert_prev->edgeflag;
|
||||
*new_edge = *edge_prev;
|
||||
}
|
||||
}
|
||||
|
||||
vert_prev = vert;
|
||||
edge_prev = edge;
|
||||
dp_prev = dp;
|
||||
}
|
||||
|
||||
@@ -325,6 +371,12 @@ do_clip_tri( struct draw_stage *stage,
|
||||
outlist = tmp;
|
||||
n = outcount;
|
||||
}
|
||||
{
|
||||
boolean *tmp = inEdges;
|
||||
inEdges = outEdges;
|
||||
outEdges = tmp;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* If flat-shading, copy provoking vertex color to polygon vertex[0]
|
||||
@@ -353,7 +405,7 @@ do_clip_tri( struct draw_stage *stage,
|
||||
|
||||
/* Emit the polygon as triangles to the setup stage:
|
||||
*/
|
||||
emit_poly( stage, inlist, n, header );
|
||||
emit_poly( stage, inlist, inEdges, n, header );
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -258,9 +258,10 @@ vsplit_segment_fan_linear(struct vsplit_frontend *vsplit, unsigned flags,
|
||||
boolean use_spoken = ((flags & DRAW_SPLIT_BEFORE) != 0);
|
||||
unsigned nr = 0, i;
|
||||
|
||||
assert(icount + !!use_spoken <= vsplit->segment_size);
|
||||
assert(icount <= vsplit->segment_size);
|
||||
|
||||
if (use_spoken) {
|
||||
/* replace istart by i0 */
|
||||
vsplit->fetch_elts[nr++] = i0;
|
||||
for (i = 1 ; i < icount; i++)
|
||||
vsplit->fetch_elts[nr++] = istart + i;
|
||||
|
@@ -33,6 +33,7 @@
|
||||
|
||||
#include "draw_context.h"
|
||||
#include "draw_private.h"
|
||||
#include "draw_vertex.h"
|
||||
|
||||
|
||||
struct draw_context;
|
||||
@@ -48,7 +49,7 @@ struct draw_varient_input
|
||||
|
||||
struct draw_varient_output
|
||||
{
|
||||
enum pipe_format format; /* output format */
|
||||
enum attrib_emit format; /* output format */
|
||||
unsigned vs_output:8; /* which vertex shader output is this? */
|
||||
unsigned offset:24; /* offset into output vertex */
|
||||
};
|
||||
|
@@ -384,7 +384,7 @@ static void emit_store_R8G8B8A8_UNORM( struct aos_compilation *cp,
|
||||
static boolean emit_output( struct aos_compilation *cp,
|
||||
struct x86_reg ptr,
|
||||
struct x86_reg dataXMM,
|
||||
unsigned format )
|
||||
enum attrib_emit format )
|
||||
{
|
||||
switch (format) {
|
||||
case EMIT_1F:
|
||||
@@ -422,7 +422,7 @@ boolean aos_emit_outputs( struct aos_compilation *cp )
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < cp->vaos->base.key.nr_outputs; i++) {
|
||||
unsigned format = cp->vaos->base.key.element[i].out.format;
|
||||
enum attrib_emit format = cp->vaos->base.key.element[i].out.format;
|
||||
unsigned offset = cp->vaos->base.key.element[i].out.offset;
|
||||
unsigned vs_output = cp->vaos->base.key.element[i].out.vs_output;
|
||||
|
||||
|
@@ -65,19 +65,7 @@ static void
|
||||
vs_llvm_delete( struct draw_vertex_shader *dvs )
|
||||
{
|
||||
struct llvm_vertex_shader *shader = llvm_vertex_shader(dvs);
|
||||
struct pipe_fence_handle *fence = NULL;
|
||||
struct draw_llvm_variant_list_item *li;
|
||||
struct pipe_context *pipe = dvs->draw->pipe;
|
||||
|
||||
/*
|
||||
* XXX: This might be not neccessary at all.
|
||||
*/
|
||||
pipe->flush(pipe, 0, &fence);
|
||||
if (fence) {
|
||||
pipe->screen->fence_finish(pipe->screen, fence, 0);
|
||||
pipe->screen->fence_reference(pipe->screen, &fence, NULL);
|
||||
}
|
||||
|
||||
|
||||
li = first_elem(&shader->variants);
|
||||
while(!at_end(&shader->variants, li)) {
|
||||
|
@@ -125,4 +125,22 @@ lp_build_const_float(struct gallivm_state *gallivm, float x)
|
||||
}
|
||||
|
||||
|
||||
/** Return constant-valued pointer to int */
|
||||
static INLINE LLVMValueRef
|
||||
lp_build_const_int_pointer(struct gallivm_state *gallivm, const void *ptr)
|
||||
{
|
||||
LLVMTypeRef int_type;
|
||||
LLVMValueRef v;
|
||||
|
||||
/* int type large enough to hold a pointer */
|
||||
int_type = LLVMIntTypeInContext(gallivm->context, 8 * sizeof(void *));
|
||||
v = LLVMConstInt(int_type, (unsigned long long) ptr, 0);
|
||||
v = LLVMBuildIntToPtr(gallivm->builder, v,
|
||||
LLVMPointerType(int_type, 0),
|
||||
"cast int to ptr");
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif /* !LP_BLD_CONST_H */
|
||||
|
@@ -36,6 +36,7 @@
|
||||
#include "util/u_format.h"
|
||||
#include "util/u_memory.h"
|
||||
#include "util/u_math.h"
|
||||
#include "util/u_pointer.h"
|
||||
#include "util/u_string.h"
|
||||
|
||||
#include "lp_bld_arit.h"
|
||||
@@ -520,6 +521,7 @@ lp_build_fetch_rgba_aos(struct gallivm_state *gallivm,
|
||||
LLVMValueRef tmp_ptr;
|
||||
LLVMValueRef tmp;
|
||||
LLVMValueRef res;
|
||||
LLVMValueRef callee;
|
||||
unsigned k;
|
||||
|
||||
util_snprintf(name, sizeof name, "util_format_%s_fetch_rgba_8unorm",
|
||||
@@ -535,6 +537,10 @@ lp_build_fetch_rgba_aos(struct gallivm_state *gallivm,
|
||||
|
||||
function = LLVMGetNamedFunction(module, name);
|
||||
if (!function) {
|
||||
/*
|
||||
* Function to call looks like:
|
||||
* fetch(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j)
|
||||
*/
|
||||
LLVMTypeRef ret_type;
|
||||
LLVMTypeRef arg_types[4];
|
||||
LLVMTypeRef function_type;
|
||||
@@ -542,19 +548,26 @@ lp_build_fetch_rgba_aos(struct gallivm_state *gallivm,
|
||||
ret_type = LLVMVoidTypeInContext(gallivm->context);
|
||||
arg_types[0] = pi8t;
|
||||
arg_types[1] = pi8t;
|
||||
arg_types[3] = arg_types[2] = LLVMIntTypeInContext(gallivm->context, sizeof(unsigned) * 8);
|
||||
function_type = LLVMFunctionType(ret_type, arg_types, Elements(arg_types), 0);
|
||||
arg_types[2] = i32t;
|
||||
arg_types[3] = i32t;
|
||||
function_type = LLVMFunctionType(ret_type, arg_types,
|
||||
Elements(arg_types), 0);
|
||||
function = LLVMAddFunction(module, name, function_type);
|
||||
|
||||
LLVMSetFunctionCallConv(function, LLVMCCallConv);
|
||||
LLVMSetLinkage(function, LLVMExternalLinkage);
|
||||
|
||||
assert(LLVMIsDeclaration(function));
|
||||
|
||||
LLVMAddGlobalMapping(gallivm->engine, function,
|
||||
func_to_pointer((func_pointer)format_desc->fetch_rgba_8unorm));
|
||||
}
|
||||
|
||||
/* make const pointer for the C fetch_rgba_float function */
|
||||
callee = lp_build_const_int_pointer(gallivm,
|
||||
func_to_pointer((func_pointer) format_desc->fetch_rgba_8unorm));
|
||||
|
||||
/* cast the callee pointer to the function's type */
|
||||
function = LLVMBuildBitCast(builder, callee,
|
||||
LLVMTypeOf(function), "cast callee");
|
||||
|
||||
tmp_ptr = lp_build_alloca(gallivm, i32t, "");
|
||||
|
||||
res = LLVMGetUndef(LLVMVectorType(i32t, num_pixels));
|
||||
@@ -619,10 +632,13 @@ lp_build_fetch_rgba_aos(struct gallivm_state *gallivm,
|
||||
LLVMTypeRef f32t = LLVMFloatTypeInContext(gallivm->context);
|
||||
LLVMTypeRef f32x4t = LLVMVectorType(f32t, 4);
|
||||
LLVMTypeRef pf32t = LLVMPointerType(f32t, 0);
|
||||
LLVMTypeRef pi8t = LLVMPointerType(LLVMInt8TypeInContext(gallivm->context), 0);
|
||||
LLVMTypeRef i32t = LLVMInt32TypeInContext(gallivm->context);
|
||||
LLVMValueRef function;
|
||||
LLVMValueRef tmp_ptr;
|
||||
LLVMValueRef tmps[LP_MAX_VECTOR_LENGTH/4];
|
||||
LLVMValueRef res;
|
||||
LLVMValueRef callee;
|
||||
unsigned k;
|
||||
|
||||
util_snprintf(name, sizeof name, "util_format_%s_fetch_rgba_float",
|
||||
@@ -638,26 +654,42 @@ lp_build_fetch_rgba_aos(struct gallivm_state *gallivm,
|
||||
|
||||
function = LLVMGetNamedFunction(module, name);
|
||||
if (!function) {
|
||||
/*
|
||||
* Function to call looks like:
|
||||
* fetch(float *dst, const uint8_t *src, unsigned i, unsigned j)
|
||||
*/
|
||||
LLVMTypeRef ret_type;
|
||||
LLVMTypeRef arg_types[4];
|
||||
LLVMTypeRef function_type;
|
||||
|
||||
ret_type = LLVMVoidTypeInContext(gallivm->context);
|
||||
arg_types[0] = pf32t;
|
||||
arg_types[1] = LLVMPointerType(LLVMInt8TypeInContext(gallivm->context), 0);
|
||||
arg_types[3] = arg_types[2] = LLVMIntTypeInContext(gallivm->context, sizeof(unsigned) * 8);
|
||||
function_type = LLVMFunctionType(ret_type, arg_types, Elements(arg_types), 0);
|
||||
arg_types[1] = pi8t;
|
||||
arg_types[2] = i32t;
|
||||
arg_types[3] = i32t;
|
||||
function_type = LLVMFunctionType(ret_type, arg_types,
|
||||
Elements(arg_types), 0);
|
||||
function = LLVMAddFunction(module, name, function_type);
|
||||
|
||||
LLVMSetFunctionCallConv(function, LLVMCCallConv);
|
||||
LLVMSetLinkage(function, LLVMExternalLinkage);
|
||||
|
||||
assert(LLVMIsDeclaration(function));
|
||||
|
||||
LLVMAddGlobalMapping(gallivm->engine, function,
|
||||
func_to_pointer((func_pointer)format_desc->fetch_rgba_float));
|
||||
}
|
||||
|
||||
/* Note: we're using this casting here instead of LLVMAddGlobalMapping()
|
||||
* to work around a bug in LLVM 2.6.
|
||||
*/
|
||||
|
||||
/* make const pointer for the C fetch_rgba_float function */
|
||||
callee = lp_build_const_int_pointer(gallivm,
|
||||
func_to_pointer((func_pointer) format_desc->fetch_rgba_float));
|
||||
|
||||
/* cast the callee pointer to the function's type */
|
||||
function = LLVMBuildBitCast(builder, callee,
|
||||
LLVMTypeOf(function), "cast callee");
|
||||
|
||||
|
||||
tmp_ptr = lp_build_alloca(gallivm, f32x4t, "");
|
||||
|
||||
/*
|
||||
|
@@ -133,6 +133,19 @@ lp_set_target_options(void)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* LLVM revision 123367 switched the default stack alignment to 16 bytes on
|
||||
* Linux (and several other Unices in later revisions), to match recent gcc
|
||||
* versions.
|
||||
*
|
||||
* However our drivers can be loaded by old binary applications, still
|
||||
* maintaining a 4 bytes stack alignment. Therefore we must tell LLVM here
|
||||
* to only assume a 4 bytes alignment for backwards compatibility.
|
||||
*/
|
||||
#if defined(PIPE_ARCH_X86)
|
||||
llvm::StackAlignment = 4;
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG) || defined(PROFILE)
|
||||
llvm::NoFramePointerElim = true;
|
||||
#endif
|
||||
@@ -144,6 +157,7 @@ lp_set_target_options(void)
|
||||
llvm::UnsafeFPMath = true;
|
||||
#endif
|
||||
|
||||
#if HAVE_LLVM < 0x0209
|
||||
/*
|
||||
* LLVM will generate MMX instructions for vectors <= 64 bits, leading to
|
||||
* innefficient code, and in 32bit systems, to the corruption of the FPU
|
||||
@@ -152,16 +166,27 @@ lp_set_target_options(void)
|
||||
* See also:
|
||||
* - http://llvm.org/bugs/show_bug.cgi?id=3287
|
||||
* - http://l4.me.uk/post/2009/06/07/llvm-wrinkle-3-configuration-what-configuration/
|
||||
*
|
||||
* The -disable-mmx global option can be specified only once since we
|
||||
* dynamically link against LLVM it will reside in a separate shared object,
|
||||
* which may or not be delete when this shared object is, so we use the
|
||||
* llvm::DisablePrettyStackTrace variable (which we set below and should
|
||||
* reside in the same shared library) to determine whether the -disable-mmx
|
||||
* option has been set or not.
|
||||
*
|
||||
* Thankfully this ugly hack is not necessary on LLVM 2.9 onwards.
|
||||
*/
|
||||
static boolean first = TRUE;
|
||||
if (first) {
|
||||
if (!llvm::DisablePrettyStackTrace) {
|
||||
static boolean first = TRUE;
|
||||
static const char* options[] = {
|
||||
"prog",
|
||||
"-disable-mmx"
|
||||
};
|
||||
assert(first);
|
||||
llvm::cl::ParseCommandLineOptions(2, const_cast<char**>(options));
|
||||
first = FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* By default LLVM adds a signal handler to output a pretty stack trace.
|
||||
|
@@ -306,7 +306,7 @@ typedef int64_t pipe_condvar;
|
||||
* pipe_barrier
|
||||
*/
|
||||
|
||||
#if (defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED)) && !defined(PIPE_OS_ANDROID)
|
||||
#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED)
|
||||
|
||||
typedef pthread_barrier_t pipe_barrier;
|
||||
|
||||
|
@@ -71,7 +71,7 @@ struct ureg_tokens {
|
||||
#define UREG_MAX_SYSTEM_VALUE PIPE_MAX_ATTRIBS
|
||||
#define UREG_MAX_OUTPUT PIPE_MAX_ATTRIBS
|
||||
#define UREG_MAX_CONSTANT_RANGE 32
|
||||
#define UREG_MAX_IMMEDIATE 32
|
||||
#define UREG_MAX_IMMEDIATE 256
|
||||
#define UREG_MAX_TEMP 256
|
||||
#define UREG_MAX_ADDR 2
|
||||
#define UREG_MAX_PRED 1
|
||||
|
@@ -187,16 +187,6 @@ static INLINE double log2( double x )
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
|
||||
#ifdef PIPE_OS_ANDROID
|
||||
|
||||
static INLINE
|
||||
double log2(double d)
|
||||
{
|
||||
return log(d) / M_LN2;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -1 +0,0 @@
|
||||
include $(call all-subdir-makefiles)
|
@@ -1,48 +0,0 @@
|
||||
ifeq ($(strip $(MESA_BUILD_I915G)),true)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
# from Makefile
|
||||
C_SOURCES = \
|
||||
i915_blit.c \
|
||||
i915_clear.c \
|
||||
i915_flush.c \
|
||||
i915_context.c \
|
||||
i915_debug.c \
|
||||
i915_debug_fp.c \
|
||||
i915_state.c \
|
||||
i915_state_immediate.c \
|
||||
i915_state_dynamic.c \
|
||||
i915_state_derived.c \
|
||||
i915_state_emit.c \
|
||||
i915_state_fpc.c \
|
||||
i915_state_sampler.c \
|
||||
i915_state_static.c \
|
||||
i915_screen.c \
|
||||
i915_prim_emit.c \
|
||||
i915_prim_vbuf.c \
|
||||
i915_resource.c \
|
||||
i915_resource_texture.c \
|
||||
i915_resource_buffer.c \
|
||||
i915_fpc_emit.c \
|
||||
i915_fpc_translate.c \
|
||||
i915_surface.c
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
$(C_SOURCES)
|
||||
|
||||
LOCAL_CFLAGS := \
|
||||
-fvisibility=hidden \
|
||||
-Wno-sign-compare
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
external/mesa/src/gallium/include \
|
||||
external/mesa/src/gallium/auxiliary
|
||||
|
||||
LOCAL_MODULE := libmesa_pipe_i915
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
|
||||
endif # MESA_BUILD_I915G
|
@@ -55,7 +55,7 @@ i915_buffer_destroy(struct pipe_screen *screen,
|
||||
{
|
||||
struct i915_buffer *buffer = i915_buffer(resource);
|
||||
if (buffer->free_on_destroy)
|
||||
FREE(buffer->data);
|
||||
align_free(buffer->data);
|
||||
FREE(buffer);
|
||||
}
|
||||
|
||||
|
@@ -47,6 +47,9 @@ lp_fence_create(unsigned rank)
|
||||
static int fence_id;
|
||||
struct lp_fence *fence = CALLOC_STRUCT(lp_fence);
|
||||
|
||||
if (!fence)
|
||||
return NULL;
|
||||
|
||||
pipe_reference_init(&fence->reference, 1);
|
||||
|
||||
pipe_mutex_init(fence->mutex);
|
||||
|
@@ -74,6 +74,7 @@ lp_scene_create( struct pipe_context *pipe )
|
||||
void
|
||||
lp_scene_destroy(struct lp_scene *scene)
|
||||
{
|
||||
lp_fence_reference(&scene->fence, NULL);
|
||||
pipe_mutex_destroy(scene->mutex);
|
||||
assert(scene->data.head->next == NULL);
|
||||
FREE(scene->data.head);
|
||||
|
@@ -996,6 +996,8 @@ lp_setup_destroy( struct lp_setup_context *setup )
|
||||
lp_scene_destroy(scene);
|
||||
}
|
||||
|
||||
lp_fence_reference(&setup->last_fence, NULL);
|
||||
|
||||
FREE( setup );
|
||||
}
|
||||
|
||||
@@ -1062,6 +1064,8 @@ lp_setup_begin_query(struct lp_setup_context *setup,
|
||||
{
|
||||
/* init the query to its beginning state */
|
||||
assert(setup->active_query == NULL);
|
||||
|
||||
set_scene_state(setup, SETUP_ACTIVE, "begin_query");
|
||||
|
||||
if (setup->scene) {
|
||||
if (!lp_scene_bin_everywhere(setup->scene,
|
||||
@@ -1091,6 +1095,8 @@ lp_setup_end_query(struct lp_setup_context *setup, struct llvmpipe_query *pq)
|
||||
{
|
||||
union lp_rast_cmd_arg dummy = { 0 };
|
||||
|
||||
set_scene_state(setup, SETUP_ACTIVE, "end_query");
|
||||
|
||||
assert(setup->active_query == pq);
|
||||
setup->active_query = NULL;
|
||||
|
||||
|
@@ -10,7 +10,7 @@
|
||||
#include "nouveau/nouveau_grobj.h"
|
||||
#include "nouveau/nouveau_notifier.h"
|
||||
#include "nouveau/nouveau_resource.h"
|
||||
#include "nouveau/nouveau_pushbuf.h"
|
||||
#include "nouveau/nv04_pushbuf.h"
|
||||
|
||||
#ifndef NV04_PFIFO_MAX_PACKET_LEN
|
||||
#define NV04_PFIFO_MAX_PACKET_LEN 2047
|
||||
|
@@ -22,7 +22,7 @@
|
||||
|
||||
#define __NOUVEAU_PUSH_H__
|
||||
#include <stdint.h>
|
||||
#include "nouveau/nouveau_pushbuf.h"
|
||||
#include "nouveau/nv04_pushbuf.h"
|
||||
#include "nv50_context.h"
|
||||
#include "nv50_resource.h"
|
||||
#include "pipe/p_defines.h"
|
||||
|
@@ -1130,7 +1130,7 @@ emit_fetch(struct bld_context *bld, const struct tgsi_full_instruction *insn,
|
||||
case TGSI_FILE_INPUT:
|
||||
res = bld_saved_input(bld, idx, swz);
|
||||
if (res && (insn->Instruction.Opcode != TGSI_OPCODE_TXP))
|
||||
return res;
|
||||
break;
|
||||
|
||||
res = new_value(bld->pc, bld->ti->input_file, type);
|
||||
res->reg.id = bld->ti->input_map[idx][swz];
|
||||
|
@@ -34,11 +34,11 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <nouveau/nouveau_device.h>
|
||||
#include <nouveau/nouveau_pushbuf.h>
|
||||
#include <nouveau/nouveau_channel.h>
|
||||
#include <nouveau/nouveau_bo.h>
|
||||
#include <nouveau/nouveau_notifier.h>
|
||||
#include <nouveau/nouveau_grobj.h>
|
||||
#include <nouveau/nv04_pushbuf.h>
|
||||
#include "nv04_2d.h"
|
||||
|
||||
#include "nouveau/nv_object.xml.h"
|
||||
|
@@ -9,8 +9,7 @@
|
||||
#include "nvfx_resource.h"
|
||||
|
||||
#include "nouveau/nouveau_channel.h"
|
||||
|
||||
#include "nouveau/nouveau_pushbuf.h"
|
||||
#include "nouveau/nv04_pushbuf.h"
|
||||
|
||||
static inline unsigned
|
||||
util_guess_unique_indices_count(unsigned mode, unsigned indices)
|
||||
|
@@ -31,14 +31,24 @@
|
||||
|
||||
enum r300_blitter_op /* bitmask */
|
||||
{
|
||||
R300_CLEAR = 1,
|
||||
R300_CLEAR_SURFACE = 2,
|
||||
R300_COPY = 4
|
||||
R300_STOP_QUERY = 1,
|
||||
R300_SAVE_TEXTURES = 2,
|
||||
R300_SAVE_FRAMEBUFFER = 4,
|
||||
R300_IGNORE_RENDER_COND = 8,
|
||||
|
||||
R300_CLEAR = R300_STOP_QUERY,
|
||||
|
||||
R300_CLEAR_SURFACE = R300_STOP_QUERY | R300_SAVE_FRAMEBUFFER,
|
||||
|
||||
R300_COPY = R300_STOP_QUERY | R300_SAVE_FRAMEBUFFER |
|
||||
R300_SAVE_TEXTURES | R300_IGNORE_RENDER_COND,
|
||||
|
||||
R300_DECOMPRESS = R300_STOP_QUERY | R300_IGNORE_RENDER_COND,
|
||||
};
|
||||
|
||||
static void r300_blitter_begin(struct r300_context* r300, enum r300_blitter_op op)
|
||||
{
|
||||
if (r300->query_current) {
|
||||
if ((op & R300_STOP_QUERY) && r300->query_current) {
|
||||
r300->blitter_saved_query = r300->query_current;
|
||||
r300_stop_query(r300);
|
||||
}
|
||||
@@ -58,10 +68,10 @@ static void r300_blitter_begin(struct r300_context* r300, enum r300_blitter_op o
|
||||
util_blitter_save_vertex_buffers(r300->blitter, r300->vertex_buffer_count,
|
||||
r300->vertex_buffer);
|
||||
|
||||
if (op & (R300_CLEAR_SURFACE | R300_COPY))
|
||||
if (op & R300_SAVE_FRAMEBUFFER)
|
||||
util_blitter_save_framebuffer(r300->blitter, r300->fb_state.state);
|
||||
|
||||
if (op & R300_COPY) {
|
||||
if (op & R300_SAVE_TEXTURES) {
|
||||
struct r300_textures_state* state =
|
||||
(struct r300_textures_state*)r300->textures_state.state;
|
||||
|
||||
@@ -73,6 +83,14 @@ static void r300_blitter_begin(struct r300_context* r300, enum r300_blitter_op o
|
||||
r300->blitter, state->sampler_view_count,
|
||||
(struct pipe_sampler_view**)state->sampler_views);
|
||||
}
|
||||
|
||||
if (op & R300_IGNORE_RENDER_COND) {
|
||||
/* Save the flag. */
|
||||
r300->blitter_saved_skip_rendering = r300->skip_rendering+1;
|
||||
r300->skip_rendering = FALSE;
|
||||
} else {
|
||||
r300->blitter_saved_skip_rendering = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void r300_blitter_end(struct r300_context *r300)
|
||||
@@ -81,6 +99,11 @@ static void r300_blitter_end(struct r300_context *r300)
|
||||
r300_resume_query(r300, r300->blitter_saved_query);
|
||||
r300->blitter_saved_query = NULL;
|
||||
}
|
||||
|
||||
if (r300->blitter_saved_skip_rendering) {
|
||||
/* Restore the flag. */
|
||||
r300->skip_rendering = r300->blitter_saved_skip_rendering-1;
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t r300_depth_clear_cb_value(enum pipe_format format,
|
||||
@@ -320,7 +343,7 @@ void r300_flush_depth_stencil(struct pipe_context *pipe,
|
||||
dstsurf = pipe->create_surface(pipe, dst, &surf_tmpl);
|
||||
|
||||
r300->z_decomp_rd = TRUE;
|
||||
r300_blitter_begin(r300, R300_CLEAR_SURFACE);
|
||||
r300_blitter_begin(r300, R300_DECOMPRESS);
|
||||
util_blitter_flush_depth_stencil(r300->blitter, dstsurf);
|
||||
r300_blitter_end(r300);
|
||||
r300->z_decomp_rd = FALSE;
|
||||
|
@@ -35,7 +35,9 @@
|
||||
#include "r300_screen_buffer.h"
|
||||
#include "r300_winsys.h"
|
||||
|
||||
#include <inttypes.h>
|
||||
#ifdef HAVE_LLVM
|
||||
#include "gallivm/lp_bld_init.h"
|
||||
#endif
|
||||
|
||||
static void r300_update_num_contexts(struct r300_screen *r300screen,
|
||||
int diff)
|
||||
@@ -103,9 +105,14 @@ static void r300_destroy_context(struct pipe_context* context)
|
||||
|
||||
if (r300->blitter)
|
||||
util_blitter_destroy(r300->blitter);
|
||||
if (r300->draw)
|
||||
if (r300->draw) {
|
||||
draw_destroy(r300->draw);
|
||||
|
||||
#ifdef HAVE_LLVM
|
||||
gallivm_destroy(r300->gallivm);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (r300->upload_vb)
|
||||
u_upload_destroy(r300->upload_vb);
|
||||
if (r300->upload_ib)
|
||||
@@ -424,7 +431,12 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
|
||||
|
||||
if (!r300screen->caps.has_tcl) {
|
||||
/* Create a Draw. This is used for SW TCL. */
|
||||
#ifdef HAVE_LLVM
|
||||
r300->gallivm = gallivm_create();
|
||||
r300->draw = draw_create_gallivm(&r300->context, r300->gallivm);
|
||||
#else
|
||||
r300->draw = draw_create(&r300->context);
|
||||
#endif
|
||||
if (r300->draw == NULL)
|
||||
goto fail;
|
||||
/* Enable our renderer. */
|
||||
|
@@ -459,6 +459,7 @@ struct r300_context {
|
||||
struct r300_screen *screen;
|
||||
|
||||
/* Draw module. Used mostly for SW TCL. */
|
||||
struct gallivm_state *gallivm;
|
||||
struct draw_context* draw;
|
||||
/* Vertex buffer for SW TCL. */
|
||||
struct pipe_resource* vbo;
|
||||
@@ -583,6 +584,8 @@ struct r300_context {
|
||||
uint32_t zbuffer_bpp;
|
||||
/* Whether rendering is conditional and should be skipped. */
|
||||
boolean skip_rendering;
|
||||
/* The flag above saved by blitter. */
|
||||
unsigned char blitter_saved_skip_rendering;
|
||||
/* Point sprites texcoord index, 1 bit per texcoord */
|
||||
int sprite_coord_enable;
|
||||
/* Whether two-sided color selection is enabled (AKA light_twoside). */
|
||||
|
@@ -448,6 +448,23 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state)
|
||||
OUT_CS_REG(R300_ZB_ZMASK_PITCH, 0);
|
||||
}
|
||||
}
|
||||
/* Set up a dummy zbuffer. Otherwise occlusion queries won't work.
|
||||
* Use the first colorbuffer, we will disable writes in the DSA state
|
||||
* so as not to corrupt it. */
|
||||
} else if (fb->nr_cbufs) {
|
||||
surf = r300_surface(fb->cbufs[0]);
|
||||
unsigned tiling =
|
||||
r300->rws->get_value(r300->rws, R300_VID_SQUARE_TILING_SUPPORT) ?
|
||||
R300_DEPTHMICROTILE_TILED_SQUARE :
|
||||
R300_DEPTHMICROTILE_TILED;
|
||||
|
||||
OUT_CS_REG(R300_ZB_FORMAT, R300_DEPTHFORMAT_16BIT_INT_Z);
|
||||
|
||||
OUT_CS_REG_SEQ(R300_ZB_DEPTHOFFSET, 1);
|
||||
OUT_CS_RELOC(surf->cs_buffer, 0, 0, surf->domain);
|
||||
|
||||
OUT_CS_REG_SEQ(R300_ZB_DEPTHPITCH, 1);
|
||||
OUT_CS_RELOC(surf->cs_buffer, 4 | tiling, 0, surf->domain);
|
||||
}
|
||||
|
||||
END_CS;
|
||||
@@ -494,6 +511,11 @@ void r300_emit_fb_state_pipelined(struct r300_context *r300,
|
||||
for (i = 0; i < fb->nr_cbufs; i++) {
|
||||
OUT_CS(r300_surface(fb->cbufs[i])->format);
|
||||
}
|
||||
for (; i < 1; i++) {
|
||||
OUT_CS(R300_US_OUT_FMT_C4_8 |
|
||||
R300_C0_SEL_B | R300_C1_SEL_G |
|
||||
R300_C2_SEL_R | R300_C3_SEL_A);
|
||||
}
|
||||
for (; i < 4; i++) {
|
||||
OUT_CS(R300_US_OUT_FMT_UNUSED);
|
||||
}
|
||||
|
@@ -184,23 +184,22 @@ static boolean r300_reserve_cs_dwords(struct r300_context *r300,
|
||||
unsigned cs_dwords)
|
||||
{
|
||||
boolean flushed = FALSE;
|
||||
boolean first_draw = flags & PREP_FIRST_DRAW;
|
||||
boolean emit_aos = flags & PREP_EMIT_AOS;
|
||||
boolean emit_aos_swtcl = flags & PREP_EMIT_AOS_SWTCL;
|
||||
boolean emit_states = flags & PREP_FIRST_DRAW;
|
||||
boolean emit_vertex_arrays = flags & PREP_EMIT_AOS;
|
||||
boolean emit_vertex_arrays_swtcl = flags & PREP_EMIT_AOS_SWTCL;
|
||||
|
||||
/* Add dirty state, index offset, and AOS. */
|
||||
if (first_draw) {
|
||||
if (emit_states)
|
||||
cs_dwords += r300_get_num_dirty_dwords(r300);
|
||||
|
||||
if (r300->screen->caps.index_bias_supported)
|
||||
cs_dwords += 2; /* emit_index_offset */
|
||||
if (r300->screen->caps.index_bias_supported)
|
||||
cs_dwords += 2; /* emit_index_offset */
|
||||
|
||||
if (emit_aos)
|
||||
cs_dwords += 55; /* emit_aos */
|
||||
if (emit_vertex_arrays)
|
||||
cs_dwords += 55; /* emit_vertex_arrays */
|
||||
|
||||
if (emit_aos_swtcl)
|
||||
cs_dwords += 7; /* emit_aos_swtcl */
|
||||
}
|
||||
if (emit_vertex_arrays_swtcl)
|
||||
cs_dwords += 7; /* emit_vertex_arrays_swtcl */
|
||||
|
||||
cs_dwords += r300_get_num_cs_end_dwords(r300);
|
||||
|
||||
@@ -228,14 +227,13 @@ static boolean r300_emit_states(struct r300_context *r300,
|
||||
int aos_offset,
|
||||
int index_bias)
|
||||
{
|
||||
boolean first_draw = flags & PREP_FIRST_DRAW;
|
||||
boolean emit_aos = flags & PREP_EMIT_AOS;
|
||||
boolean emit_aos_swtcl = flags & PREP_EMIT_AOS_SWTCL;
|
||||
boolean emit_states = flags & PREP_FIRST_DRAW;
|
||||
boolean emit_vertex_arrays = flags & PREP_EMIT_AOS;
|
||||
boolean emit_vertex_arrays_swtcl = flags & PREP_EMIT_AOS_SWTCL;
|
||||
boolean indexed = flags & PREP_INDEXED;
|
||||
boolean validate_vbos = flags & PREP_VALIDATE_VBOS;
|
||||
|
||||
/* Validate buffers and emit dirty state if needed. */
|
||||
if (first_draw) {
|
||||
if (emit_states) {
|
||||
/* upload buffers first */
|
||||
if (r300->screen->caps.has_tcl && r300->any_user_vbs) {
|
||||
r300_upload_user_buffers(r300);
|
||||
@@ -257,20 +255,21 @@ static boolean r300_emit_states(struct r300_context *r300,
|
||||
}
|
||||
|
||||
r300_emit_dirty_state(r300);
|
||||
if (r300->screen->caps.index_bias_supported) {
|
||||
if (r300->screen->caps.has_tcl)
|
||||
r500_emit_index_bias(r300, index_bias);
|
||||
else
|
||||
r500_emit_index_bias(r300, 0);
|
||||
}
|
||||
|
||||
if (emit_aos)
|
||||
r300_emit_aos(r300, aos_offset, indexed);
|
||||
|
||||
if (emit_aos_swtcl)
|
||||
r300_emit_aos_swtcl(r300, indexed);
|
||||
}
|
||||
|
||||
if (r300->screen->caps.index_bias_supported) {
|
||||
if (r300->screen->caps.has_tcl)
|
||||
r500_emit_index_bias(r300, index_bias);
|
||||
else
|
||||
r500_emit_index_bias(r300, 0);
|
||||
}
|
||||
|
||||
if (emit_vertex_arrays)
|
||||
r300_emit_aos(r300, aos_offset, indexed);
|
||||
|
||||
if (emit_vertex_arrays_swtcl)
|
||||
r300_emit_aos_swtcl(r300, indexed);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -566,7 +565,12 @@ static void r300_draw_range_elements(struct pipe_context* pipe,
|
||||
minIndex, maxIndex, mode, start, count);
|
||||
} else {
|
||||
do {
|
||||
short_count = MIN2(count, 65534);
|
||||
/* The maximum must be divisible by 4 and 3,
|
||||
* so that quad and triangle lists are split correctly.
|
||||
*
|
||||
* Strips, loops, and fans won't work. */
|
||||
short_count = MIN2(count, 65532);
|
||||
|
||||
r300_emit_draw_elements(r300, indexBuffer, indexSize,
|
||||
minIndex, maxIndex,
|
||||
mode, start, short_count);
|
||||
@@ -614,7 +618,11 @@ static void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
|
||||
r300_emit_draw_arrays(r300, mode, count);
|
||||
} else {
|
||||
do {
|
||||
short_count = MIN2(count, 65535);
|
||||
/* The maximum must be divisible by 4 and 3,
|
||||
* so that quad and triangle lists are split correctly.
|
||||
*
|
||||
* Strips, loops, and fans won't work. */
|
||||
short_count = MIN2(count, 65532);
|
||||
r300_emit_draw_arrays(r300, mode, short_count);
|
||||
|
||||
start += short_count;
|
||||
@@ -1095,6 +1103,9 @@ static void r300_blitter_draw_rectangle(struct blitter_context *blitter,
|
||||
const float zeros[4] = {0, 0, 0, 0};
|
||||
CS_LOCALS(r300);
|
||||
|
||||
if (r300->skip_rendering)
|
||||
return;
|
||||
|
||||
r300->context.set_vertex_buffers(&r300->context, 0, NULL);
|
||||
|
||||
if (type == UTIL_BLITTER_ATTRIB_TEXCOORD)
|
||||
|
@@ -34,6 +34,10 @@
|
||||
|
||||
#include "draw/draw_context.h"
|
||||
|
||||
#ifdef HAVE_LLVM
|
||||
#include "gallivm/lp_bld_init.h"
|
||||
#endif
|
||||
|
||||
/* Return the identifier behind whom the brave coders responsible for this
|
||||
* amalgamation of code, sweat, and duct tape, routinely obscure their names.
|
||||
*
|
||||
@@ -209,7 +213,7 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
|
||||
case PIPE_SHADER_CAP_MAX_PREDS:
|
||||
return is_r500 ? 1 : 0;
|
||||
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
||||
return 1;
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
|
||||
case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
|
||||
case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
|
||||
@@ -247,7 +251,7 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
|
||||
case PIPE_SHADER_CAP_MAX_PREDS:
|
||||
return is_r500 ? 4 : 0; /* XXX guessed. */
|
||||
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
||||
return 1;
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
|
||||
case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
|
||||
case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
|
||||
@@ -484,5 +488,9 @@ struct pipe_screen* r300_screen_create(struct r300_winsys_screen *rws)
|
||||
|
||||
util_format_s3tc_init();
|
||||
|
||||
#ifdef HAVE_LLVM
|
||||
lp_build_init();
|
||||
#endif
|
||||
|
||||
return &r300screen->screen;
|
||||
}
|
||||
|
@@ -119,6 +119,7 @@ int r300_upload_user_buffers(struct r300_context *r300)
|
||||
vb->buffer = upload_buffer;
|
||||
vb->buffer_offset = upload_offset;
|
||||
r300->validate_buffers = TRUE;
|
||||
r300->aos_dirty = TRUE;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
@@ -485,6 +485,10 @@ static void*
|
||||
dsa->z_stencil_control |=
|
||||
(r300_translate_depth_stencil_function(state->depth.func) <<
|
||||
R300_Z_FUNC_SHIFT);
|
||||
} else {
|
||||
/* We must enable depth test, otherwise occlusion queries won't work. */
|
||||
dsa->z_buffer_control |= R300_Z_ENABLE;
|
||||
dsa->z_stencil_control |= R300_ZS_ALWAYS;
|
||||
}
|
||||
|
||||
/* Stencil buffer setup. */
|
||||
@@ -554,11 +558,13 @@ static void*
|
||||
OUT_CB_REG(R500_ZB_STENCILREFMASK_BF, dsa->stencil_ref_bf);
|
||||
END_CB;
|
||||
|
||||
/* We must enable depth test, otherwise occlusion queries won't work.
|
||||
* We setup a dummy zbuffer to silent the CS checker, see emit_fb_state. */
|
||||
BEGIN_CB(dsa->cb_no_readwrite, 8);
|
||||
OUT_CB_REG(R300_FG_ALPHA_FUNC, dsa->alpha_function);
|
||||
OUT_CB_REG_SEQ(R300_ZB_CNTL, 3);
|
||||
OUT_CB(0);
|
||||
OUT_CB(0);
|
||||
OUT_CB(R300_Z_ENABLE);
|
||||
OUT_CB(R300_ZS_ALWAYS);
|
||||
OUT_CB(0);
|
||||
OUT_CB_REG(R500_ZB_STENCILREFMASK_BF, 0);
|
||||
END_CB;
|
||||
@@ -699,12 +705,14 @@ void r300_mark_fb_state_dirty(struct r300_context *r300,
|
||||
/* Now compute the fb_state atom size. */
|
||||
r300->fb_state.size = 2 + (8 * state->nr_cbufs);
|
||||
|
||||
if (r300->cbzb_clear)
|
||||
if (r300->cbzb_clear) {
|
||||
r300->fb_state.size += 10;
|
||||
else if (state->zsbuf) {
|
||||
} else if (state->zsbuf) {
|
||||
r300->fb_state.size += 10;
|
||||
if (can_hyperz)
|
||||
r300->fb_state.size += r300->screen->caps.hiz_ram ? 8 : 4;
|
||||
} else if (state->nr_cbufs) {
|
||||
r300->fb_state.size += 10;
|
||||
}
|
||||
|
||||
/* The size of the rest of atoms stays the same. */
|
||||
@@ -1298,29 +1306,27 @@ static void r300_set_fragment_sampler_views(struct pipe_context* pipe,
|
||||
}
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
if (&state->sampler_views[i]->base != views[i]) {
|
||||
pipe_sampler_view_reference(
|
||||
(struct pipe_sampler_view**)&state->sampler_views[i],
|
||||
views[i]);
|
||||
pipe_sampler_view_reference(
|
||||
(struct pipe_sampler_view**)&state->sampler_views[i],
|
||||
views[i]);
|
||||
|
||||
if (!views[i]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* A new sampler view (= texture)... */
|
||||
dirty_tex = TRUE;
|
||||
|
||||
/* Set the texrect factor in the fragment shader.
|
||||
* Needed for RECT and NPOT fallback. */
|
||||
texture = r300_texture(views[i]->texture);
|
||||
if (texture->desc.is_npot) {
|
||||
r300_mark_atom_dirty(r300, &r300->fs_rc_constant_state);
|
||||
}
|
||||
|
||||
state->sampler_views[i]->texcache_region =
|
||||
r300_assign_texture_cache_region(view_index, real_num_views);
|
||||
view_index++;
|
||||
if (!views[i]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* A new sampler view (= texture)... */
|
||||
dirty_tex = TRUE;
|
||||
|
||||
/* Set the texrect factor in the fragment shader.
|
||||
* Needed for RECT and NPOT fallback. */
|
||||
texture = r300_texture(views[i]->texture);
|
||||
if (texture->desc.is_npot) {
|
||||
r300_mark_atom_dirty(r300, &r300->fs_rc_constant_state);
|
||||
}
|
||||
|
||||
state->sampler_views[i]->texcache_region =
|
||||
r300_assign_texture_cache_region(view_index, real_num_views);
|
||||
view_index++;
|
||||
}
|
||||
|
||||
for (i = count; i < tex_units; i++) {
|
||||
@@ -1496,14 +1502,14 @@ static void r300_set_vertex_buffers(struct pipe_context* pipe,
|
||||
any_user_buffer = TRUE;
|
||||
}
|
||||
|
||||
/* The stride of zero means we will be fetching only the first
|
||||
* vertex, so don't care about max_index. */
|
||||
if (!vbo->stride)
|
||||
continue;
|
||||
|
||||
if (vbo->max_index == ~0) {
|
||||
/* if no VBO stride then only one vertex value so max index is 1 */
|
||||
/* should think about converting to VS constants like svga does */
|
||||
if (!vbo->stride)
|
||||
vbo->max_index = 1;
|
||||
else
|
||||
vbo->max_index =
|
||||
(vbo->buffer->width0 - vbo->buffer_offset) / vbo->stride;
|
||||
vbo->max_index =
|
||||
(vbo->buffer->width0 - vbo->buffer_offset) / vbo->stride;
|
||||
}
|
||||
|
||||
max_index = MIN2(vbo->max_index, max_index);
|
||||
|
@@ -782,6 +782,12 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300)
|
||||
texstate->filter0 |= R300_TX_WRAP_T(R300_TX_CLAMP_TO_EDGE);
|
||||
}
|
||||
|
||||
/* The hardware doesn't like CLAMP and CLAMP_TO_BORDER
|
||||
* for the 3rd coordinate if the texture isn't 3D. */
|
||||
if (tex->desc.b.b.target != PIPE_TEXTURE_3D) {
|
||||
texstate->filter0 &= ~R300_TX_WRAP_R_MASK;
|
||||
}
|
||||
|
||||
if (tex->desc.is_npot) {
|
||||
/* NPOT textures don't support mip filter, unfortunately.
|
||||
* This prevents incorrect rendering. */
|
||||
|
@@ -391,19 +391,15 @@ static uint32_t r300_translate_colorformat(enum pipe_format format)
|
||||
/* 32-bit buffers. */
|
||||
case PIPE_FORMAT_B8G8R8A8_UNORM:
|
||||
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
||||
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
||||
case PIPE_FORMAT_X8R8G8B8_UNORM:
|
||||
case PIPE_FORMAT_A8B8G8R8_UNORM:
|
||||
/*case PIPE_FORMAT_B8G8R8X8_SNORM:*/
|
||||
case PIPE_FORMAT_R8G8B8A8_UNORM:
|
||||
case PIPE_FORMAT_R8G8B8A8_SNORM:
|
||||
case PIPE_FORMAT_X8B8G8R8_UNORM:
|
||||
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
||||
case PIPE_FORMAT_R8SG8SB8UX8U_NORM:
|
||||
return R300_COLOR_FORMAT_ARGB8888;
|
||||
|
||||
case PIPE_FORMAT_R10G10B10A2_UNORM:
|
||||
case PIPE_FORMAT_R10G10B10X2_SNORM:
|
||||
case PIPE_FORMAT_B10G10R10A2_UNORM:
|
||||
case PIPE_FORMAT_R10SG10SB10SA2U_NORM:
|
||||
return R500_COLOR_FORMAT_ARGB2101010; /* R5xx-only? */
|
||||
|
||||
/* 64-bit buffers. */
|
||||
@@ -527,27 +523,11 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format)
|
||||
R300_C0_SEL_B | R300_C1_SEL_G |
|
||||
R300_C2_SEL_R | R300_C3_SEL_A;
|
||||
|
||||
/* ARGB outputs. */
|
||||
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
||||
case PIPE_FORMAT_X8R8G8B8_UNORM:
|
||||
return modifier |
|
||||
R300_C0_SEL_A | R300_C1_SEL_R |
|
||||
R300_C2_SEL_G | R300_C3_SEL_B;
|
||||
|
||||
/* ABGR outputs. */
|
||||
case PIPE_FORMAT_A8B8G8R8_UNORM:
|
||||
case PIPE_FORMAT_X8B8G8R8_UNORM:
|
||||
return modifier |
|
||||
R300_C0_SEL_A | R300_C1_SEL_B |
|
||||
R300_C2_SEL_G | R300_C3_SEL_R;
|
||||
|
||||
/* RGBA outputs. */
|
||||
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
||||
case PIPE_FORMAT_R8G8B8A8_SNORM:
|
||||
case PIPE_FORMAT_R8SG8SB8UX8U_NORM:
|
||||
case PIPE_FORMAT_R10G10B10A2_UNORM:
|
||||
case PIPE_FORMAT_R10G10B10X2_SNORM:
|
||||
case PIPE_FORMAT_R10SG10SB10SA2U_NORM:
|
||||
case PIPE_FORMAT_R16G16B16A16_UNORM:
|
||||
case PIPE_FORMAT_R16G16B16A16_SNORM:
|
||||
case PIPE_FORMAT_R16G16B16A16_FLOAT:
|
||||
@@ -899,7 +879,7 @@ struct pipe_surface* r300_create_surface(struct pipe_context * ctx,
|
||||
tex->desc.b.b.nr_samples,
|
||||
tex->desc.microtile,
|
||||
tex->desc.macrotile[level],
|
||||
DIM_HEIGHT);
|
||||
DIM_HEIGHT, 0);
|
||||
|
||||
surface->cbzb_height = align((surface->base.height + 1) / 2,
|
||||
tile_height);
|
||||
|
@@ -34,7 +34,7 @@ unsigned r300_get_pixel_alignment(enum pipe_format format,
|
||||
unsigned num_samples,
|
||||
enum r300_buffer_tiling microtile,
|
||||
enum r300_buffer_tiling macrotile,
|
||||
enum r300_dim dim)
|
||||
enum r300_dim dim, boolean is_rs690)
|
||||
{
|
||||
static const unsigned table[2][5][3][2] =
|
||||
{
|
||||
@@ -57,6 +57,7 @@ unsigned r300_get_pixel_alignment(enum pipe_format format,
|
||||
{{ 16, 8}, { 0, 0}, { 0, 0}} /* 128 bits per pixel */
|
||||
}
|
||||
};
|
||||
|
||||
static const unsigned aa_block[2] = {4, 8};
|
||||
unsigned tile = 0;
|
||||
unsigned pixsize = util_format_get_blocksize(format);
|
||||
@@ -74,6 +75,14 @@ unsigned r300_get_pixel_alignment(enum pipe_format format,
|
||||
} else {
|
||||
/* Standard alignment. */
|
||||
tile = table[macrotile][util_logbase2(pixsize)][microtile][dim];
|
||||
if (macrotile == 0 && is_rs690 && dim == DIM_WIDTH) {
|
||||
int align;
|
||||
int h_tile;
|
||||
h_tile = table[macrotile][util_logbase2(pixsize)][microtile][DIM_HEIGHT];
|
||||
align = 64 / (pixsize * h_tile);
|
||||
if (tile < align)
|
||||
tile = align;
|
||||
}
|
||||
}
|
||||
|
||||
assert(tile);
|
||||
@@ -89,7 +98,7 @@ static boolean r300_texture_macro_switch(struct r300_texture_desc *desc,
|
||||
unsigned tile, texdim;
|
||||
|
||||
tile = r300_get_pixel_alignment(desc->b.b.format, desc->b.b.nr_samples,
|
||||
desc->microtile, R300_BUFFER_TILED, dim);
|
||||
desc->microtile, R300_BUFFER_TILED, dim, 0);
|
||||
if (dim == DIM_WIDTH) {
|
||||
texdim = u_minify(desc->width0, level);
|
||||
} else {
|
||||
@@ -113,6 +122,9 @@ static unsigned r300_texture_get_stride(struct r300_screen *screen,
|
||||
unsigned level)
|
||||
{
|
||||
unsigned tile_width, width, stride;
|
||||
boolean is_rs690 = (screen->caps.family == CHIP_FAMILY_RS600 ||
|
||||
screen->caps.family == CHIP_FAMILY_RS690 ||
|
||||
screen->caps.family == CHIP_FAMILY_RS740);
|
||||
|
||||
if (desc->stride_in_bytes_override)
|
||||
return desc->stride_in_bytes_override;
|
||||
@@ -131,38 +143,14 @@ static unsigned r300_texture_get_stride(struct r300_screen *screen,
|
||||
desc->b.b.nr_samples,
|
||||
desc->microtile,
|
||||
desc->macrotile[level],
|
||||
DIM_WIDTH);
|
||||
DIM_WIDTH, is_rs690);
|
||||
width = align(width, tile_width);
|
||||
|
||||
stride = util_format_get_stride(desc->b.b.format, width);
|
||||
|
||||
/* Some IGPs need a minimum stride of 64 bytes, hmm... */
|
||||
if (!desc->macrotile[level] &&
|
||||
(screen->caps.family == CHIP_FAMILY_RS600 ||
|
||||
screen->caps.family == CHIP_FAMILY_RS690 ||
|
||||
screen->caps.family == CHIP_FAMILY_RS740)) {
|
||||
unsigned min_stride;
|
||||
|
||||
if (desc->microtile) {
|
||||
unsigned tile_height =
|
||||
r300_get_pixel_alignment(desc->b.b.format,
|
||||
desc->b.b.nr_samples,
|
||||
desc->microtile,
|
||||
desc->macrotile[level],
|
||||
DIM_HEIGHT);
|
||||
|
||||
min_stride = 64 / tile_height;
|
||||
} else {
|
||||
min_stride = 64;
|
||||
}
|
||||
|
||||
return stride < min_stride ? min_stride : stride;
|
||||
}
|
||||
|
||||
/* The alignment to 32 bytes is sort of implied by the layout... */
|
||||
return stride;
|
||||
} else {
|
||||
return align(util_format_get_stride(desc->b.b.format, width), 32);
|
||||
return align(util_format_get_stride(desc->b.b.format, width), is_rs690 ? 64 : 32);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,7 +167,7 @@ static unsigned r300_texture_get_nblocksy(struct r300_texture_desc *desc,
|
||||
desc->b.b.nr_samples,
|
||||
desc->microtile,
|
||||
desc->macrotile[level],
|
||||
DIM_HEIGHT);
|
||||
DIM_HEIGHT, 0);
|
||||
height = align(height, tile_height);
|
||||
|
||||
/* This is needed for the kernel checker, unfortunately. */
|
||||
|
@@ -41,7 +41,7 @@ unsigned r300_get_pixel_alignment(enum pipe_format format,
|
||||
unsigned num_samples,
|
||||
enum r300_buffer_tiling microtile,
|
||||
enum r300_buffer_tiling macrotile,
|
||||
enum r300_dim dim);
|
||||
enum r300_dim dim, boolean is_rs690);
|
||||
|
||||
boolean r300_texture_desc_init(struct r300_screen *rscreen,
|
||||
struct r300_texture_desc *desc,
|
||||
|
@@ -21,6 +21,7 @@ C_SOURCES = \
|
||||
evergreen_state.c \
|
||||
eg_asm.c \
|
||||
r600_translate.c \
|
||||
r600_state_common.c
|
||||
r600_state_common.c \
|
||||
r600_upload.c
|
||||
|
||||
include ../../Makefile.template
|
||||
|
@@ -28,6 +28,7 @@ r600 = env.ConvenienceLibrary(
|
||||
'r600_state_common.c',
|
||||
'r600_texture.c',
|
||||
'r600_translate.c',
|
||||
'r600_upload.c',
|
||||
'r700_asm.c',
|
||||
'evergreen_state.c',
|
||||
'eg_asm.c',
|
||||
|
@@ -1069,12 +1069,76 @@ void evergreen_init_config(struct r600_pipe_context *rctx)
|
||||
num_hs_stack_entries = 42;
|
||||
num_ls_stack_entries = 42;
|
||||
break;
|
||||
case CHIP_BARTS:
|
||||
num_ps_gprs = 93;
|
||||
num_vs_gprs = 46;
|
||||
num_temp_gprs = 4;
|
||||
num_gs_gprs = 31;
|
||||
num_es_gprs = 31;
|
||||
num_hs_gprs = 23;
|
||||
num_ls_gprs = 23;
|
||||
num_ps_threads = 128;
|
||||
num_vs_threads = 20;
|
||||
num_gs_threads = 20;
|
||||
num_es_threads = 20;
|
||||
num_hs_threads = 20;
|
||||
num_ls_threads = 20;
|
||||
num_ps_stack_entries = 85;
|
||||
num_vs_stack_entries = 85;
|
||||
num_gs_stack_entries = 85;
|
||||
num_es_stack_entries = 85;
|
||||
num_hs_stack_entries = 85;
|
||||
num_ls_stack_entries = 85;
|
||||
break;
|
||||
case CHIP_TURKS:
|
||||
num_ps_gprs = 93;
|
||||
num_vs_gprs = 46;
|
||||
num_temp_gprs = 4;
|
||||
num_gs_gprs = 31;
|
||||
num_es_gprs = 31;
|
||||
num_hs_gprs = 23;
|
||||
num_ls_gprs = 23;
|
||||
num_ps_threads = 128;
|
||||
num_vs_threads = 20;
|
||||
num_gs_threads = 20;
|
||||
num_es_threads = 20;
|
||||
num_hs_threads = 20;
|
||||
num_ls_threads = 20;
|
||||
num_ps_stack_entries = 42;
|
||||
num_vs_stack_entries = 42;
|
||||
num_gs_stack_entries = 42;
|
||||
num_es_stack_entries = 42;
|
||||
num_hs_stack_entries = 42;
|
||||
num_ls_stack_entries = 42;
|
||||
break;
|
||||
case CHIP_CAICOS:
|
||||
num_ps_gprs = 93;
|
||||
num_vs_gprs = 46;
|
||||
num_temp_gprs = 4;
|
||||
num_gs_gprs = 31;
|
||||
num_es_gprs = 31;
|
||||
num_hs_gprs = 23;
|
||||
num_ls_gprs = 23;
|
||||
num_ps_threads = 128;
|
||||
num_vs_threads = 10;
|
||||
num_gs_threads = 10;
|
||||
num_es_threads = 10;
|
||||
num_hs_threads = 10;
|
||||
num_ls_threads = 10;
|
||||
num_ps_stack_entries = 42;
|
||||
num_vs_stack_entries = 42;
|
||||
num_gs_stack_entries = 42;
|
||||
num_es_stack_entries = 42;
|
||||
num_hs_stack_entries = 42;
|
||||
num_ls_stack_entries = 42;
|
||||
break;
|
||||
}
|
||||
|
||||
tmp = 0x00000000;
|
||||
switch (family) {
|
||||
case CHIP_CEDAR:
|
||||
case CHIP_PALM:
|
||||
case CHIP_CAICOS:
|
||||
break;
|
||||
default:
|
||||
tmp |= S_008C00_VC_ENABLE(1);
|
||||
@@ -1295,11 +1359,6 @@ void evergreen_vertex_buffer_update(struct r600_pipe_context *rctx)
|
||||
if (rctx->vertex_elements == NULL || !rctx->nvertex_buffer)
|
||||
return;
|
||||
|
||||
/* delete previous translated vertex elements */
|
||||
if (rctx->tran.new_velems) {
|
||||
r600_end_vertex_translate(rctx);
|
||||
}
|
||||
|
||||
if (rctx->vertex_elements->incompatible_layout) {
|
||||
/* translate rebind new vertex elements so
|
||||
* return once translated
|
||||
@@ -1332,21 +1391,21 @@ void evergreen_vertex_buffer_update(struct r600_pipe_context *rctx)
|
||||
vbuffer_index = rctx->vertex_elements->elements[i].vertex_buffer_index;
|
||||
vertex_buffer = &rctx->vertex_buffer[vbuffer_index];
|
||||
rbuffer = (struct r600_resource*)vertex_buffer->buffer;
|
||||
offset = rctx->vertex_elements->vbuffer_offset[i] +
|
||||
vertex_buffer->buffer_offset +
|
||||
r600_bo_offset(rbuffer->bo);
|
||||
offset = rctx->vertex_elements->vbuffer_offset[i];
|
||||
} else {
|
||||
/* bind vertex buffer once */
|
||||
vertex_buffer = &rctx->vertex_buffer[i];
|
||||
rbuffer = (struct r600_resource*)vertex_buffer->buffer;
|
||||
offset = vertex_buffer->buffer_offset +
|
||||
r600_bo_offset(rbuffer->bo);
|
||||
offset = 0;
|
||||
}
|
||||
if (vertex_buffer == NULL || rbuffer == NULL)
|
||||
continue;
|
||||
offset += vertex_buffer->buffer_offset + r600_bo_offset(rbuffer->bo);
|
||||
|
||||
r600_pipe_state_add_reg(rstate, R_030000_RESOURCE0_WORD0,
|
||||
offset, 0xFFFFFFFF, rbuffer->bo);
|
||||
r600_pipe_state_add_reg(rstate, R_030004_RESOURCE0_WORD1,
|
||||
rbuffer->size - offset - 1, 0xFFFFFFFF, NULL);
|
||||
rbuffer->bo_size - offset - 1, 0xFFFFFFFF, NULL);
|
||||
r600_pipe_state_add_reg(rstate, R_030008_RESOURCE0_WORD2,
|
||||
S_030008_STRIDE(vertex_buffer->stride),
|
||||
0xFFFFFFFF, NULL);
|
||||
|
@@ -92,6 +92,9 @@ enum radeon_family {
|
||||
CHIP_CYPRESS,
|
||||
CHIP_HEMLOCK,
|
||||
CHIP_PALM,
|
||||
CHIP_BARTS,
|
||||
CHIP_TURKS,
|
||||
CHIP_CAICOS,
|
||||
CHIP_LAST,
|
||||
};
|
||||
|
||||
@@ -245,10 +248,7 @@ struct r600_context {
|
||||
u32 *pm4;
|
||||
struct list_head query_list;
|
||||
unsigned num_query_running;
|
||||
unsigned fence;
|
||||
struct list_head fenced_bo;
|
||||
unsigned *cfence;
|
||||
struct r600_bo *fence_bo;
|
||||
};
|
||||
|
||||
struct r600_draw {
|
||||
|
@@ -155,6 +155,9 @@ int r600_bc_init(struct r600_bc *bc, enum radeon_family family)
|
||||
case CHIP_CYPRESS:
|
||||
case CHIP_HEMLOCK:
|
||||
case CHIP_PALM:
|
||||
case CHIP_BARTS:
|
||||
case CHIP_TURKS:
|
||||
case CHIP_CAICOS:
|
||||
bc->chiprev = CHIPREV_EVERGREEN;
|
||||
break;
|
||||
default:
|
||||
@@ -470,7 +473,22 @@ int r600_bc_add_alu_type(struct r600_bc *bc, const struct r600_bc_alu *alu, int
|
||||
bc->cf_last->ndw += 2;
|
||||
bc->ndw += 2;
|
||||
|
||||
bc->cf_last->kcache0_mode = 2;
|
||||
/* The following configuration provides 64 128-bit constants.
|
||||
* Each cacheline holds 16 128-bit constants and each
|
||||
* kcache can lock 2 cachelines and there are 2 kcaches per
|
||||
* ALU clause for a max of 64 constants.
|
||||
* For supporting more than 64 constants, the code needs
|
||||
* to be broken down into multiple ALU clauses.
|
||||
*/
|
||||
/* select the constant buffer (0-15) for each kcache */
|
||||
bc->cf_last->kcache0_bank = 0;
|
||||
bc->cf_last->kcache1_bank = 0;
|
||||
/* lock 2 cachelines per kcache; 4 total */
|
||||
bc->cf_last->kcache0_mode = V_SQ_CF_KCACHE_LOCK_2;
|
||||
bc->cf_last->kcache1_mode = V_SQ_CF_KCACHE_LOCK_2;
|
||||
/* set the cacheline offsets for each kcache */
|
||||
bc->cf_last->kcache0_addr = 0;
|
||||
bc->cf_last->kcache1_addr = 2;
|
||||
|
||||
/* process cur ALU instructions for bank swizzle */
|
||||
if (alu->last) {
|
||||
|
@@ -29,7 +29,6 @@
|
||||
#include <util/u_math.h>
|
||||
#include <util/u_inlines.h>
|
||||
#include <util/u_memory.h>
|
||||
#include <util/u_upload_mgr.h>
|
||||
#include "state_tracker/drm_driver.h"
|
||||
#include <xf86drm.h>
|
||||
#include "radeon_drm.h"
|
||||
@@ -53,12 +52,13 @@ struct pipe_resource *r600_buffer_create(struct pipe_screen *screen,
|
||||
|
||||
rbuffer->magic = R600_BUFFER_MAGIC;
|
||||
rbuffer->user_buffer = NULL;
|
||||
rbuffer->num_ranges = 0;
|
||||
rbuffer->r.base.b = *templ;
|
||||
pipe_reference_init(&rbuffer->r.base.b.reference, 1);
|
||||
rbuffer->r.base.b.screen = screen;
|
||||
rbuffer->r.base.vtbl = &r600_buffer_vtbl;
|
||||
rbuffer->r.size = rbuffer->r.base.b.width0;
|
||||
rbuffer->r.bo_size = rbuffer->r.size;
|
||||
rbuffer->uploaded = FALSE;
|
||||
bo = r600_bo((struct radeon*)screen->winsys, rbuffer->r.base.b.width0, alignment, rbuffer->r.base.b.bind, rbuffer->r.base.b.usage);
|
||||
if (bo == NULL) {
|
||||
FREE(rbuffer);
|
||||
@@ -91,9 +91,10 @@ struct pipe_resource *r600_user_buffer_create(struct pipe_screen *screen,
|
||||
rbuffer->r.base.b.depth0 = 1;
|
||||
rbuffer->r.base.b.array_size = 1;
|
||||
rbuffer->r.base.b.flags = 0;
|
||||
rbuffer->num_ranges = 0;
|
||||
rbuffer->r.bo = NULL;
|
||||
rbuffer->r.bo_size = 0;
|
||||
rbuffer->user_buffer = ptr;
|
||||
rbuffer->uploaded = FALSE;
|
||||
return &rbuffer->r.base.b;
|
||||
}
|
||||
|
||||
@@ -105,6 +106,7 @@ static void r600_buffer_destroy(struct pipe_screen *screen,
|
||||
if (rbuffer->r.bo) {
|
||||
r600_bo_reference((struct radeon*)screen->winsys, &rbuffer->r.bo, NULL);
|
||||
}
|
||||
rbuffer->r.bo = NULL;
|
||||
FREE(rbuffer);
|
||||
}
|
||||
|
||||
@@ -114,29 +116,10 @@ static void *r600_buffer_transfer_map(struct pipe_context *pipe,
|
||||
struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource);
|
||||
int write = 0;
|
||||
uint8_t *data;
|
||||
int i;
|
||||
boolean flush = FALSE;
|
||||
|
||||
if (rbuffer->user_buffer)
|
||||
return (uint8_t*)rbuffer->user_buffer + transfer->box.x;
|
||||
|
||||
if (transfer->usage & PIPE_TRANSFER_DISCARD) {
|
||||
for (i = 0; i < rbuffer->num_ranges; i++) {
|
||||
if ((transfer->box.x >= rbuffer->ranges[i].start) &&
|
||||
(transfer->box.x < rbuffer->ranges[i].end))
|
||||
flush = TRUE;
|
||||
|
||||
if (flush) {
|
||||
r600_bo_reference((struct radeon*)pipe->winsys, &rbuffer->r.bo, NULL);
|
||||
rbuffer->num_ranges = 0;
|
||||
rbuffer->r.bo = r600_bo((struct radeon*)pipe->winsys,
|
||||
rbuffer->r.base.b.width0, 0,
|
||||
rbuffer->r.base.b.bind,
|
||||
rbuffer->r.base.b.usage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (transfer->usage & PIPE_TRANSFER_DONTBLOCK) {
|
||||
/* FIXME */
|
||||
}
|
||||
@@ -155,36 +138,17 @@ static void r600_buffer_transfer_unmap(struct pipe_context *pipe,
|
||||
{
|
||||
struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource);
|
||||
|
||||
if (rbuffer->user_buffer)
|
||||
return;
|
||||
|
||||
if (rbuffer->r.bo)
|
||||
r600_bo_unmap((struct radeon*)pipe->winsys, rbuffer->r.bo);
|
||||
}
|
||||
|
||||
static void r600_buffer_transfer_flush_region(struct pipe_context *pipe,
|
||||
struct pipe_transfer *transfer,
|
||||
const struct pipe_box *box)
|
||||
struct pipe_transfer *transfer,
|
||||
const struct pipe_box *box)
|
||||
{
|
||||
struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource);
|
||||
unsigned i;
|
||||
unsigned offset = transfer->box.x + box->x;
|
||||
unsigned length = box->width;
|
||||
|
||||
assert(box->x + box->width <= transfer->box.width);
|
||||
|
||||
if (rbuffer->user_buffer)
|
||||
return;
|
||||
|
||||
/* mark the range as used */
|
||||
for(i = 0; i < rbuffer->num_ranges; ++i) {
|
||||
if(offset <= rbuffer->ranges[i].end && rbuffer->ranges[i].start <= (offset+box->width)) {
|
||||
rbuffer->ranges[i].start = MIN2(rbuffer->ranges[i].start, offset);
|
||||
rbuffer->ranges[i].end = MAX2(rbuffer->ranges[i].end, (offset+length));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
rbuffer->ranges[rbuffer->num_ranges].start = offset;
|
||||
rbuffer->ranges[rbuffer->num_ranges].end = offset+length;
|
||||
rbuffer->num_ranges++;
|
||||
}
|
||||
|
||||
unsigned r600_buffer_is_referenced_by_cs(struct pipe_context *context,
|
||||
@@ -236,29 +200,25 @@ struct u_resource_vtbl r600_buffer_vtbl =
|
||||
|
||||
int r600_upload_index_buffer(struct r600_pipe_context *rctx, struct r600_drawl *draw)
|
||||
{
|
||||
struct pipe_resource *upload_buffer = NULL;
|
||||
unsigned index_offset = draw->index_buffer_offset;
|
||||
int ret = 0;
|
||||
|
||||
if (r600_buffer_is_user_buffer(draw->index_buffer)) {
|
||||
ret = u_upload_buffer(rctx->upload_ib,
|
||||
index_offset,
|
||||
draw->count * draw->index_size,
|
||||
draw->index_buffer,
|
||||
&index_offset,
|
||||
&upload_buffer);
|
||||
if (ret) {
|
||||
goto done;
|
||||
}
|
||||
draw->index_buffer_offset = index_offset;
|
||||
struct r600_resource_buffer *rbuffer = r600_buffer(draw->index_buffer);
|
||||
unsigned upload_offset;
|
||||
int ret = 0;
|
||||
|
||||
/* Transfer ownership. */
|
||||
pipe_resource_reference(&draw->index_buffer, upload_buffer);
|
||||
pipe_resource_reference(&upload_buffer, NULL);
|
||||
ret = r600_upload_buffer(rctx->rupload_vb,
|
||||
draw->index_buffer_offset,
|
||||
draw->count * draw->index_size,
|
||||
rbuffer,
|
||||
&upload_offset,
|
||||
&rbuffer->r.bo_size,
|
||||
&rbuffer->r.bo);
|
||||
if (ret)
|
||||
return ret;
|
||||
rbuffer->uploaded = TRUE;
|
||||
draw->index_buffer_offset = upload_offset;
|
||||
}
|
||||
|
||||
done:
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int r600_upload_user_buffers(struct r600_pipe_context *rctx)
|
||||
@@ -270,23 +230,21 @@ int r600_upload_user_buffers(struct r600_pipe_context *rctx)
|
||||
nr = rctx->nvertex_buffer;
|
||||
|
||||
for (i = 0; i < nr; i++) {
|
||||
// struct pipe_vertex_buffer *vb = &rctx->vertex_buffer[rctx->vertex_elements->elements[i].vertex_buffer_index];
|
||||
struct pipe_vertex_buffer *vb = &rctx->vertex_buffer[i];
|
||||
|
||||
if (r600_buffer_is_user_buffer(vb->buffer)) {
|
||||
struct pipe_resource *upload_buffer = NULL;
|
||||
unsigned offset = 0; /*vb->buffer_offset * 4;*/
|
||||
unsigned size = vb->buffer->width0;
|
||||
struct r600_resource_buffer *rbuffer = r600_buffer(vb->buffer);
|
||||
unsigned upload_offset;
|
||||
ret = u_upload_buffer(rctx->upload_vb,
|
||||
offset, size,
|
||||
vb->buffer,
|
||||
&upload_offset, &upload_buffer);
|
||||
|
||||
ret = r600_upload_buffer(rctx->rupload_vb,
|
||||
0, vb->buffer->width0,
|
||||
rbuffer,
|
||||
&upload_offset,
|
||||
&rbuffer->r.bo_size,
|
||||
&rbuffer->r.bo);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
pipe_resource_reference(&vb->buffer, NULL);
|
||||
vb->buffer = upload_buffer;
|
||||
rbuffer->uploaded = TRUE;
|
||||
vb->buffer_offset = upload_offset;
|
||||
}
|
||||
}
|
||||
|
@@ -35,7 +35,6 @@
|
||||
#include <util/u_pack_color.h>
|
||||
#include <util/u_memory.h>
|
||||
#include <util/u_inlines.h>
|
||||
#include <util/u_upload_mgr.h>
|
||||
#include <pipebuffer/pb_buffer.h>
|
||||
#include "r600.h"
|
||||
#include "r600d.h"
|
||||
@@ -59,9 +58,6 @@ static void r600_flush(struct pipe_context *ctx, unsigned flags,
|
||||
if (!rctx->ctx.pm4_cdwords)
|
||||
return;
|
||||
|
||||
u_upload_flush(rctx->upload_vb);
|
||||
u_upload_flush(rctx->upload_ib);
|
||||
|
||||
#if 0
|
||||
sprintf(dname, "gallium-%08d.bof", dc);
|
||||
if (dc < 20) {
|
||||
@@ -71,6 +67,8 @@ static void r600_flush(struct pipe_context *ctx, unsigned flags,
|
||||
dc++;
|
||||
#endif
|
||||
r600_context_flush(&rctx->ctx);
|
||||
|
||||
r600_upload_flush(rctx->rupload_vb);
|
||||
}
|
||||
|
||||
static void r600_destroy_context(struct pipe_context *context)
|
||||
@@ -89,8 +87,7 @@ static void r600_destroy_context(struct pipe_context *context)
|
||||
free(rctx->states[i]);
|
||||
}
|
||||
|
||||
u_upload_destroy(rctx->upload_vb);
|
||||
u_upload_destroy(rctx->upload_ib);
|
||||
r600_upload_destroy(rctx->rupload_vb);
|
||||
|
||||
if (rctx->tran.translate_cache)
|
||||
translate_cache_destroy(rctx->tran.translate_cache);
|
||||
@@ -151,6 +148,9 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void
|
||||
case CHIP_CYPRESS:
|
||||
case CHIP_HEMLOCK:
|
||||
case CHIP_PALM:
|
||||
case CHIP_BARTS:
|
||||
case CHIP_TURKS:
|
||||
case CHIP_CAICOS:
|
||||
rctx->context.draw_vbo = evergreen_draw;
|
||||
evergreen_init_state_functions(rctx);
|
||||
if (evergreen_context_init(&rctx->ctx, rctx->radeon)) {
|
||||
@@ -165,16 +165,8 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void
|
||||
return NULL;
|
||||
}
|
||||
|
||||
rctx->upload_ib = u_upload_create(&rctx->context, 32 * 1024, 16,
|
||||
PIPE_BIND_INDEX_BUFFER);
|
||||
if (rctx->upload_ib == NULL) {
|
||||
r600_destroy_context(&rctx->context);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
rctx->upload_vb = u_upload_create(&rctx->context, 128 * 1024, 16,
|
||||
PIPE_BIND_VERTEX_BUFFER);
|
||||
if (rctx->upload_vb == NULL) {
|
||||
rctx->rupload_vb = r600_upload_create(rctx, 128 * 1024, 16);
|
||||
if (rctx->rupload_vb == NULL) {
|
||||
r600_destroy_context(&rctx->context);
|
||||
return NULL;
|
||||
}
|
||||
@@ -243,6 +235,9 @@ static const char *r600_get_family_name(enum radeon_family family)
|
||||
case CHIP_CYPRESS: return "AMD CYPRESS";
|
||||
case CHIP_HEMLOCK: return "AMD HEMLOCK";
|
||||
case CHIP_PALM: return "AMD PALM";
|
||||
case CHIP_BARTS: return "AMD BARTS";
|
||||
case CHIP_TURKS: return "AMD TURKS";
|
||||
case CHIP_CAICOS: return "AMD CAICOS";
|
||||
default: return "AMD unknown";
|
||||
}
|
||||
}
|
||||
@@ -372,9 +367,9 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e
|
||||
return 8; /* FIXME */
|
||||
case PIPE_SHADER_CAP_MAX_INPUTS:
|
||||
if(shader == PIPE_SHADER_FRAGMENT)
|
||||
return 10;
|
||||
return 34;
|
||||
else
|
||||
return 16;
|
||||
return 32;
|
||||
case PIPE_SHADER_CAP_MAX_TEMPS:
|
||||
return 256; //max native temporaries
|
||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
||||
|
@@ -111,7 +111,7 @@ struct r600_pipe_shader {
|
||||
#define NUM_TEX_UNITS 16
|
||||
|
||||
struct r600_textures_info {
|
||||
struct r600_pipe_sampler_view *views[NUM_TEX_UNITS];
|
||||
struct r600_pipe_sampler_view *views[NUM_TEX_UNITS];
|
||||
unsigned n_views;
|
||||
void *samplers[NUM_TEX_UNITS];
|
||||
unsigned n_samplers;
|
||||
@@ -131,6 +131,8 @@ struct r600_translate_context {
|
||||
#define R600_CONSTANT_ARRAY_SIZE 256
|
||||
#define R600_RESOURCE_ARRAY_SIZE 160
|
||||
|
||||
struct r600_upload;
|
||||
|
||||
struct r600_pipe_context {
|
||||
struct pipe_context context;
|
||||
struct blitter_context *blitter;
|
||||
@@ -163,8 +165,7 @@ struct r600_pipe_context {
|
||||
/* shader information */
|
||||
unsigned sprite_coord_enable;
|
||||
bool flatshade;
|
||||
struct u_upload_mgr *upload_vb;
|
||||
struct u_upload_mgr *upload_ib;
|
||||
struct r600_upload *rupload_vb;
|
||||
unsigned any_user_vbs;
|
||||
struct r600_textures_info ps_samplers;
|
||||
unsigned vb_max_index;
|
||||
@@ -270,13 +271,13 @@ void r600_sampler_view_destroy(struct pipe_context *ctx,
|
||||
void r600_bind_state(struct pipe_context *ctx, void *state);
|
||||
void r600_delete_state(struct pipe_context *ctx, void *state);
|
||||
void r600_bind_vertex_elements(struct pipe_context *ctx, void *state);
|
||||
|
||||
void *r600_create_shader_state(struct pipe_context *ctx,
|
||||
const struct pipe_shader_state *state);
|
||||
void r600_bind_ps_shader(struct pipe_context *ctx, void *state);
|
||||
void r600_bind_vs_shader(struct pipe_context *ctx, void *state);
|
||||
void r600_delete_ps_shader(struct pipe_context *ctx, void *state);
|
||||
void r600_delete_vs_shader(struct pipe_context *ctx, void *state);
|
||||
|
||||
/*
|
||||
* common helpers
|
||||
*/
|
||||
|
@@ -46,6 +46,7 @@ struct r600_resource {
|
||||
struct u_resource base;
|
||||
struct r600_bo *bo;
|
||||
u32 size;
|
||||
unsigned bo_size;
|
||||
};
|
||||
|
||||
struct r600_resource_texture {
|
||||
@@ -61,7 +62,21 @@ struct r600_resource_texture {
|
||||
unsigned tile_type;
|
||||
unsigned depth;
|
||||
unsigned dirty;
|
||||
struct r600_resource_texture *flushed_depth_texture;
|
||||
struct r600_resource_texture *flushed_depth_texture;
|
||||
};
|
||||
|
||||
#define R600_BUFFER_MAGIC 0xabcd1600
|
||||
|
||||
struct r600_resource_buffer {
|
||||
struct r600_resource r;
|
||||
uint32_t magic;
|
||||
void *user_buffer;
|
||||
bool uploaded;
|
||||
};
|
||||
|
||||
struct r600_surface {
|
||||
struct pipe_surface base;
|
||||
unsigned aligned_height;
|
||||
};
|
||||
|
||||
void r600_init_screen_resource_functions(struct pipe_screen *screen);
|
||||
@@ -73,41 +88,25 @@ struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen,
|
||||
const struct pipe_resource *base,
|
||||
struct winsys_handle *whandle);
|
||||
|
||||
#define R600_BUFFER_MAGIC 0xabcd1600
|
||||
#define R600_BUFFER_MAX_RANGES 32
|
||||
|
||||
struct r600_buffer_range {
|
||||
uint32_t start;
|
||||
uint32_t end;
|
||||
};
|
||||
|
||||
struct r600_resource_buffer {
|
||||
struct r600_resource r;
|
||||
uint32_t magic;
|
||||
void *user_buffer;
|
||||
struct r600_buffer_range ranges[R600_BUFFER_MAX_RANGES];
|
||||
unsigned num_ranges;
|
||||
};
|
||||
|
||||
/* r600_buffer */
|
||||
static INLINE struct r600_resource_buffer *r600_buffer(struct pipe_resource *buffer)
|
||||
{
|
||||
if (buffer) {
|
||||
assert(((struct r600_resource_buffer *)buffer)->magic == R600_BUFFER_MAGIC);
|
||||
return (struct r600_resource_buffer *)buffer;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static INLINE boolean r600_buffer_is_user_buffer(struct pipe_resource *buffer)
|
||||
{
|
||||
return r600_buffer(buffer)->user_buffer ? TRUE : FALSE;
|
||||
if (r600_buffer(buffer)->uploaded)
|
||||
return FALSE;
|
||||
return r600_buffer(buffer)->user_buffer ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
int r600_texture_depth_flush(struct pipe_context *ctx,
|
||||
struct pipe_resource *texture);
|
||||
|
||||
extern int (*r600_blit_uncompress_depth_ptr)(struct pipe_context *ctx, struct r600_resource_texture *texture);
|
||||
int r600_texture_depth_flush(struct pipe_context *ctx, struct pipe_resource *texture);
|
||||
int (*r600_blit_uncompress_depth_ptr)(struct pipe_context *ctx, struct r600_resource_texture *texture);
|
||||
|
||||
/* r600_texture.c texture transfer functions. */
|
||||
struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
|
||||
@@ -122,9 +121,15 @@ void* r600_texture_transfer_map(struct pipe_context *ctx,
|
||||
void r600_texture_transfer_unmap(struct pipe_context *ctx,
|
||||
struct pipe_transfer* transfer);
|
||||
|
||||
struct r600_surface {
|
||||
struct pipe_surface base;
|
||||
unsigned aligned_height;
|
||||
};
|
||||
struct r600_pipe_context;
|
||||
struct r600_upload *r600_upload_create(struct r600_pipe_context *rctx,
|
||||
unsigned default_size,
|
||||
unsigned alignment);
|
||||
void r600_upload_flush(struct r600_upload *upload);
|
||||
void r600_upload_destroy(struct r600_upload *upload);
|
||||
int r600_upload_buffer(struct r600_upload *upload, unsigned offset,
|
||||
unsigned size, struct r600_resource_buffer *in_buffer,
|
||||
unsigned *out_offset, unsigned *out_size,
|
||||
struct r600_bo **out_buffer);
|
||||
|
||||
#endif
|
||||
|
@@ -589,6 +589,8 @@ int r600_shader_from_tgsi(const struct tgsi_token *tokens, struct r600_shader *s
|
||||
if (r)
|
||||
goto out_err;
|
||||
break;
|
||||
case TGSI_TOKEN_TYPE_PROPERTY:
|
||||
break;
|
||||
default:
|
||||
R600_ERR("unsupported token type %d\n", ctx.parse.FullToken.Token.Type);
|
||||
r = -EINVAL;
|
||||
@@ -1451,7 +1453,7 @@ static int tgsi_pow(struct r600_shader_ctx *ctx)
|
||||
return r;
|
||||
/* b * LOG2(a) */
|
||||
memset(&alu, 0, sizeof(struct r600_bc_alu));
|
||||
alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MUL_IEEE);
|
||||
alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MUL);
|
||||
r = tgsi_src(ctx, &inst->Src[1], &alu.src[0]);
|
||||
if (r)
|
||||
return r;
|
||||
|
@@ -74,6 +74,10 @@
|
||||
#define S_SQ_CF_ALU_WORD0_KCACHE_MODE0(x) (((x) & 0x3) << 30)
|
||||
#define G_SQ_CF_ALU_WORD0_KCACHE_MODE0(x) (((x) >> 30) & 0x3)
|
||||
#define C_SQ_CF_ALU_WORD0_KCACHE_MODE0 0x3FFFFFFF
|
||||
#define V_SQ_CF_KCACHE_NOP 0x00000000
|
||||
#define V_SQ_CF_KCACHE_LOCK_1 0x00000001
|
||||
#define V_SQ_CF_KCACHE_LOCK_2 0x00000002
|
||||
#define V_SQ_CF_KCACHE_LOCK_LOOP_INDEX 0x00000003
|
||||
#define P_SQ_CF_ALU_WORD1
|
||||
#define S_SQ_CF_ALU_WORD1_KCACHE_MODE1(x) (((x) & 0x3) << 0)
|
||||
#define G_SQ_CF_ALU_WORD1_KCACHE_MODE1(x) (((x) >> 0) & 0x3)
|
||||
|
@@ -36,7 +36,6 @@
|
||||
#include <util/u_pack_color.h>
|
||||
#include <util/u_memory.h>
|
||||
#include <util/u_inlines.h>
|
||||
#include <util/u_upload_mgr.h>
|
||||
#include <util/u_framebuffer.h>
|
||||
#include <pipebuffer/pb_buffer.h>
|
||||
#include "r600.h"
|
||||
@@ -136,11 +135,6 @@ void r600_vertex_buffer_update(struct r600_pipe_context *rctx)
|
||||
if (rctx->vertex_elements == NULL || !rctx->nvertex_buffer)
|
||||
return;
|
||||
|
||||
/* delete previous translated vertex elements */
|
||||
if (rctx->tran.new_velems) {
|
||||
r600_end_vertex_translate(rctx);
|
||||
}
|
||||
|
||||
if (rctx->vertex_elements->incompatible_layout) {
|
||||
/* translate rebind new vertex elements so
|
||||
* return once translated
|
||||
@@ -173,21 +167,21 @@ void r600_vertex_buffer_update(struct r600_pipe_context *rctx)
|
||||
vbuffer_index = rctx->vertex_elements->elements[i].vertex_buffer_index;
|
||||
vertex_buffer = &rctx->vertex_buffer[vbuffer_index];
|
||||
rbuffer = (struct r600_resource*)vertex_buffer->buffer;
|
||||
offset = rctx->vertex_elements->vbuffer_offset[i] +
|
||||
vertex_buffer->buffer_offset +
|
||||
r600_bo_offset(rbuffer->bo);
|
||||
offset = rctx->vertex_elements->vbuffer_offset[i];
|
||||
} else {
|
||||
/* bind vertex buffer once */
|
||||
vertex_buffer = &rctx->vertex_buffer[i];
|
||||
rbuffer = (struct r600_resource*)vertex_buffer->buffer;
|
||||
offset = vertex_buffer->buffer_offset +
|
||||
r600_bo_offset(rbuffer->bo);
|
||||
offset = 0;
|
||||
}
|
||||
if (vertex_buffer == NULL || rbuffer == NULL)
|
||||
continue;
|
||||
offset += vertex_buffer->buffer_offset + r600_bo_offset(rbuffer->bo);
|
||||
|
||||
r600_pipe_state_add_reg(rstate, R_038000_RESOURCE0_WORD0,
|
||||
offset, 0xFFFFFFFF, rbuffer->bo);
|
||||
r600_pipe_state_add_reg(rstate, R_038004_RESOURCE0_WORD1,
|
||||
rbuffer->size - offset - 1, 0xFFFFFFFF, NULL);
|
||||
rbuffer->bo_size - offset - 1, 0xFFFFFFFF, NULL);
|
||||
r600_pipe_state_add_reg(rstate, R_038008_RESOURCE0_WORD2,
|
||||
S_038008_STRIDE(vertex_buffer->stride),
|
||||
0xFFFFFFFF, NULL);
|
||||
@@ -281,7 +275,6 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
|
||||
{
|
||||
struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
|
||||
struct r600_drawl draw;
|
||||
boolean translate = FALSE;
|
||||
|
||||
memset(&draw, 0, sizeof(struct r600_drawl));
|
||||
draw.ctx = ctx;
|
||||
@@ -313,9 +306,6 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
|
||||
}
|
||||
r600_draw_common(&draw);
|
||||
|
||||
if (translate)
|
||||
r600_end_vertex_translate(rctx);
|
||||
|
||||
pipe_resource_reference(&draw.index_buffer, NULL);
|
||||
}
|
||||
|
||||
|
@@ -119,6 +119,11 @@ void r600_bind_vertex_elements(struct pipe_context *ctx, void *state)
|
||||
struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
|
||||
struct r600_vertex_element *v = (struct r600_vertex_element*)state;
|
||||
|
||||
/* delete previous translated vertex elements */
|
||||
if (rctx->tran.new_velems) {
|
||||
r600_end_vertex_translate(rctx);
|
||||
}
|
||||
|
||||
rctx->vertex_elements = v;
|
||||
if (v) {
|
||||
rctx->states[v->rstate.id] = &v->rstate;
|
||||
@@ -174,8 +179,16 @@ void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count,
|
||||
struct pipe_vertex_buffer *vbo;
|
||||
unsigned max_index = (unsigned)-1;
|
||||
|
||||
for (int i = 0; i < rctx->nvertex_buffer; i++) {
|
||||
pipe_resource_reference(&rctx->vertex_buffer[i].buffer, NULL);
|
||||
if (rctx->family >= CHIP_CEDAR) {
|
||||
for (int i = 0; i < rctx->nvertex_buffer; i++) {
|
||||
pipe_resource_reference(&rctx->vertex_buffer[i].buffer, NULL);
|
||||
evergreen_context_pipe_state_set_fs_resource(&rctx->ctx, NULL, i);
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < rctx->nvertex_buffer; i++) {
|
||||
pipe_resource_reference(&rctx->vertex_buffer[i].buffer, NULL);
|
||||
r600_context_pipe_state_set_fs_resource(&rctx->ctx, NULL, i);
|
||||
}
|
||||
}
|
||||
memcpy(rctx->vertex_buffer, buffers, sizeof(struct pipe_vertex_buffer) * count);
|
||||
|
||||
@@ -183,15 +196,19 @@ void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count,
|
||||
vbo = (struct pipe_vertex_buffer*)&buffers[i];
|
||||
|
||||
rctx->vertex_buffer[i].buffer = NULL;
|
||||
if (buffers[i].buffer == NULL)
|
||||
continue;
|
||||
if (r600_buffer_is_user_buffer(buffers[i].buffer))
|
||||
rctx->any_user_vbs = TRUE;
|
||||
pipe_resource_reference(&rctx->vertex_buffer[i].buffer, buffers[i].buffer);
|
||||
|
||||
/* The stride of zero means we will be fetching only the first
|
||||
* vertex, so don't care about max_index. */
|
||||
if (!vbo->stride)
|
||||
continue;
|
||||
|
||||
if (vbo->max_index == ~0) {
|
||||
if (!vbo->stride)
|
||||
vbo->max_index = 1;
|
||||
else
|
||||
vbo->max_index = (vbo->buffer->width0 - vbo->buffer_offset) / vbo->stride;
|
||||
vbo->max_index = (vbo->buffer->width0 - vbo->buffer_offset) / vbo->stride;
|
||||
}
|
||||
max_index = MIN2(vbo->max_index, max_index);
|
||||
}
|
||||
|
@@ -42,6 +42,7 @@ void r600_begin_vertex_translate(struct r600_pipe_context *rctx)
|
||||
struct pipe_resource *out_buffer;
|
||||
unsigned i, num_verts;
|
||||
struct pipe_vertex_element new_velems[PIPE_MAX_ATTRIBS];
|
||||
void *tmp;
|
||||
|
||||
/* Initialize the translate key, i.e. the recipe how vertices should be
|
||||
* translated. */
|
||||
@@ -159,8 +160,9 @@ void r600_begin_vertex_translate(struct r600_pipe_context *rctx)
|
||||
}
|
||||
}
|
||||
|
||||
rctx->tran.new_velems = pipe->create_vertex_elements_state(pipe, ve->count, new_velems);
|
||||
pipe->bind_vertex_elements_state(pipe, rctx->tran.new_velems);
|
||||
tmp = pipe->create_vertex_elements_state(pipe, ve->count, new_velems);
|
||||
pipe->bind_vertex_elements_state(pipe, tmp);
|
||||
rctx->tran.new_velems = tmp;
|
||||
|
||||
pipe_resource_reference(&out_buffer, NULL);
|
||||
}
|
||||
@@ -173,15 +175,11 @@ void r600_end_vertex_translate(struct r600_pipe_context *rctx)
|
||||
return;
|
||||
}
|
||||
/* Restore vertex elements. */
|
||||
if (rctx->vertex_elements == rctx->tran.new_velems) {
|
||||
pipe->bind_vertex_elements_state(pipe, NULL);
|
||||
}
|
||||
pipe->delete_vertex_elements_state(pipe, rctx->tran.new_velems);
|
||||
rctx->tran.new_velems = NULL;
|
||||
|
||||
/* Delete the now-unused VBO. */
|
||||
pipe_resource_reference(&rctx->vertex_buffer[rctx->tran.vb_slot].buffer,
|
||||
NULL);
|
||||
pipe_resource_reference(&rctx->vertex_buffer[rctx->tran.vb_slot].buffer, NULL);
|
||||
}
|
||||
|
||||
void r600_translate_index_buffer(struct r600_pipe_context *r600,
|
||||
|
114
src/gallium/drivers/r600/r600_upload.c
Normal file
114
src/gallium/drivers/r600/r600_upload.c
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
* Copyright 2010 Jerome Glisse <glisse@freedesktop.org>
|
||||
*
|
||||
* 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
|
||||
* on the rights to use, copy, modify, merge, publish, distribute, sub
|
||||
* license, and/or sell copies of the Software, and to permit persons to whom
|
||||
* the Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
* USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Authors:
|
||||
* Jerome Glisse <jglisse@redhat.com>
|
||||
*/
|
||||
#include <errno.h>
|
||||
#include "util/u_inlines.h"
|
||||
#include "util/u_memory.h"
|
||||
#include "r600.h"
|
||||
#include "r600_pipe.h"
|
||||
#include "r600_resource.h"
|
||||
|
||||
struct r600_upload {
|
||||
struct r600_pipe_context *rctx;
|
||||
struct r600_bo *buffer;
|
||||
char *ptr;
|
||||
unsigned size;
|
||||
unsigned default_size;
|
||||
unsigned total_alloc_size;
|
||||
unsigned offset;
|
||||
unsigned alignment;
|
||||
};
|
||||
|
||||
struct r600_upload *r600_upload_create(struct r600_pipe_context *rctx,
|
||||
unsigned default_size,
|
||||
unsigned alignment)
|
||||
{
|
||||
struct r600_upload *upload = CALLOC_STRUCT(r600_upload);
|
||||
|
||||
if (upload == NULL)
|
||||
return NULL;
|
||||
|
||||
upload->rctx = rctx;
|
||||
upload->size = 0;
|
||||
upload->default_size = default_size;
|
||||
upload->alignment = alignment;
|
||||
upload->ptr = NULL;
|
||||
upload->buffer = NULL;
|
||||
upload->total_alloc_size = 0;
|
||||
|
||||
return upload;
|
||||
}
|
||||
|
||||
void r600_upload_flush(struct r600_upload *upload)
|
||||
{
|
||||
if (upload->buffer) {
|
||||
r600_bo_reference(upload->rctx->radeon, &upload->buffer, NULL);
|
||||
}
|
||||
upload->default_size = MAX2(upload->total_alloc_size, upload->default_size);
|
||||
upload->total_alloc_size = 0;
|
||||
upload->size = 0;
|
||||
upload->offset = 0;
|
||||
upload->ptr = NULL;
|
||||
upload->buffer = NULL;
|
||||
}
|
||||
|
||||
void r600_upload_destroy(struct r600_upload *upload)
|
||||
{
|
||||
r600_upload_flush(upload);
|
||||
FREE(upload);
|
||||
}
|
||||
|
||||
int r600_upload_buffer(struct r600_upload *upload, unsigned offset,
|
||||
unsigned size, struct r600_resource_buffer *in_buffer,
|
||||
unsigned *out_offset, unsigned *out_size,
|
||||
struct r600_bo **out_buffer)
|
||||
{
|
||||
unsigned alloc_size = align(size, upload->alignment);
|
||||
const void *in_ptr = NULL;
|
||||
|
||||
if (upload->offset + alloc_size > upload->size) {
|
||||
if (upload->size) {
|
||||
r600_bo_reference(upload->rctx->radeon, &upload->buffer, NULL);
|
||||
}
|
||||
upload->size = align(MAX2(upload->default_size, alloc_size), 4096);
|
||||
upload->total_alloc_size += upload->size;
|
||||
upload->offset = 0;
|
||||
upload->buffer = r600_bo(upload->rctx->radeon, upload->size, 4096, PIPE_BIND_VERTEX_BUFFER, 0);
|
||||
if (upload->buffer == NULL) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
upload->ptr = r600_bo_map(upload->rctx->radeon, upload->buffer, 0, NULL);
|
||||
}
|
||||
|
||||
in_ptr = in_buffer->user_buffer;
|
||||
memcpy(upload->ptr + upload->offset, (uint8_t *) in_ptr + offset, size);
|
||||
*out_offset = upload->offset;
|
||||
*out_size = upload->size;
|
||||
*out_buffer = NULL;
|
||||
r600_bo_reference(upload->rctx->radeon, out_buffer, upload->buffer);
|
||||
upload->offset += alloc_size;
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,52 +0,0 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
# from Makefile
|
||||
C_SOURCES = \
|
||||
sp_fs_exec.c \
|
||||
sp_fs_sse.c \
|
||||
sp_clear.c \
|
||||
sp_fence.c \
|
||||
sp_flush.c \
|
||||
sp_query.c \
|
||||
sp_context.c \
|
||||
sp_draw_arrays.c \
|
||||
sp_prim_vbuf.c \
|
||||
sp_quad_pipe.c \
|
||||
sp_quad_stipple.c \
|
||||
sp_quad_depth_test.c \
|
||||
sp_quad_fs.c \
|
||||
sp_quad_blend.c \
|
||||
sp_screen.c \
|
||||
sp_setup.c \
|
||||
sp_state_blend.c \
|
||||
sp_state_clip.c \
|
||||
sp_state_derived.c \
|
||||
sp_state_sampler.c \
|
||||
sp_state_shader.c \
|
||||
sp_state_so.c \
|
||||
sp_state_rasterizer.c \
|
||||
sp_state_surface.c \
|
||||
sp_state_vertex.c \
|
||||
sp_texture.c \
|
||||
sp_tex_sample.c \
|
||||
sp_tex_tile_cache.c \
|
||||
sp_tile_cache.c \
|
||||
sp_surface.c
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
$(C_SOURCES)
|
||||
|
||||
LOCAL_CFLAGS := \
|
||||
-fvisibility=hidden \
|
||||
-Wno-sign-compare
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
external/mesa/include \
|
||||
external/mesa/src/gallium/include \
|
||||
external/mesa/src/gallium/auxiliary
|
||||
|
||||
LOCAL_MODULE := libmesa_pipe_softpipe
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
@@ -50,7 +50,7 @@ softpipe_flush( struct pipe_context *pipe,
|
||||
|
||||
draw_flush(softpipe->draw);
|
||||
|
||||
if (1 || (flags & PIPE_FLUSH_TEXTURE_CACHE)) {
|
||||
if (flags & PIPE_FLUSH_TEXTURE_CACHE) {
|
||||
for (i = 0; i < softpipe->num_sampler_views; i++) {
|
||||
sp_flush_tex_tile_cache(softpipe->tex_cache[i]);
|
||||
}
|
||||
|
@@ -575,7 +575,7 @@ setup_fragcoord_coeff(struct setup_context *setup, uint slot)
|
||||
setup->coef[slot].dady[0] = 0.0;
|
||||
/*Y*/
|
||||
setup->coef[slot].a0[1] =
|
||||
(spfs->origin_lower_left ? setup->softpipe->framebuffer.height : 0)
|
||||
(spfs->origin_lower_left ? setup->softpipe->framebuffer.height-1 : 0)
|
||||
+ (spfs->pixel_center_integer ? 0.0 : 0.5);
|
||||
setup->coef[slot].dadx[1] = 0.0;
|
||||
setup->coef[slot].dady[1] = spfs->origin_lower_left ? -1.0 : 1.0;
|
||||
|
@@ -1,73 +0,0 @@
|
||||
ifeq ($(strip $(MESA_BUILD_VMWGFX)),true)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
# from Makefile
|
||||
C_SOURCES = \
|
||||
svgadump/svga_shader_dump.c \
|
||||
svgadump/svga_shader_op.c \
|
||||
svgadump/svga_dump.c \
|
||||
svga_cmd.c \
|
||||
svga_context.c \
|
||||
svga_draw.c \
|
||||
svga_draw_arrays.c \
|
||||
svga_draw_elements.c \
|
||||
svga_pipe_blend.c \
|
||||
svga_pipe_blit.c \
|
||||
svga_pipe_clear.c \
|
||||
svga_pipe_constants.c \
|
||||
svga_pipe_depthstencil.c \
|
||||
svga_pipe_draw.c \
|
||||
svga_pipe_flush.c \
|
||||
svga_pipe_fs.c \
|
||||
svga_pipe_misc.c \
|
||||
svga_pipe_query.c \
|
||||
svga_pipe_rasterizer.c \
|
||||
svga_pipe_sampler.c \
|
||||
svga_pipe_vertex.c \
|
||||
svga_pipe_vs.c \
|
||||
svga_screen.c \
|
||||
svga_screen_cache.c \
|
||||
svga_state.c \
|
||||
svga_state_need_swtnl.c \
|
||||
svga_state_constants.c \
|
||||
svga_state_framebuffer.c \
|
||||
svga_state_rss.c \
|
||||
svga_state_tss.c \
|
||||
svga_state_vdecl.c \
|
||||
svga_state_fs.c \
|
||||
svga_state_vs.c \
|
||||
svga_swtnl_backend.c \
|
||||
svga_swtnl_draw.c \
|
||||
svga_swtnl_state.c \
|
||||
svga_tgsi.c \
|
||||
svga_tgsi_decl_sm20.c \
|
||||
svga_tgsi_decl_sm30.c \
|
||||
svga_tgsi_insn.c \
|
||||
svga_sampler_view.c \
|
||||
svga_surface.c \
|
||||
svga_resource.c \
|
||||
svga_resource_texture.c \
|
||||
svga_resource_buffer.c \
|
||||
svga_resource_buffer_upload.c
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
$(C_SOURCES)
|
||||
|
||||
LOCAL_CFLAGS := \
|
||||
-fvisibility=hidden \
|
||||
-Wno-sign-compare
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
external/mesa/include \
|
||||
external/mesa/src/gallium/include \
|
||||
external/mesa/src/gallium/auxiliary \
|
||||
external/mesa/src/gallium/drivers/svga/include
|
||||
|
||||
LOCAL_MODULE := libmesa_pipe_svga
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
|
||||
endif # MESA_BUILD_VMWGFX
|
@@ -67,9 +67,7 @@ extern "C" {
|
||||
|
||||
|
||||
#if !defined(__HAIKU__) && !defined(__USE_MISC)
|
||||
#if !defined(PIPE_OS_ANDROID)
|
||||
typedef unsigned int uint;
|
||||
#endif
|
||||
typedef unsigned short ushort;
|
||||
#endif
|
||||
typedef unsigned char ubyte;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user