Compare commits
349 Commits
mesa-23.3.
...
9.0
Author | SHA1 | Date | |
---|---|---|---|
|
1041bfe6dd | ||
|
ba73bea5d0 | ||
|
4d07d52e27 | ||
|
18973c7f0f | ||
|
ee30fd0ea0 | ||
|
3d80d54bc9 | ||
|
205f537b5a | ||
|
c864835b3d | ||
|
fde69f8500 | ||
|
f75b27a53e | ||
|
183a28a34a | ||
|
f84fe6aa2e | ||
|
be7048477a | ||
|
4e35ffa762 | ||
|
15693b7925 | ||
|
dddc5df519 | ||
|
e11ef54a92 | ||
|
2de8874ec3 | ||
|
d47020b6d4 | ||
|
52c711e5b2 | ||
|
71e3ee38ac | ||
|
fdfb299c22 | ||
|
2389fcc802 | ||
|
cef854dba7 | ||
|
adcf0a0cf4 | ||
|
663e41547a | ||
|
d40df80732 | ||
|
914368538e | ||
|
c760677c85 | ||
|
a1cb12c1fb | ||
|
d32aff91c1 | ||
|
d4fc90c129 | ||
|
5fdc42fb87 | ||
|
527b3b8555 | ||
|
9d4ab9a663 | ||
|
dca04373c2 | ||
|
a8f8287154 | ||
|
d2d3cd2be7 | ||
|
f4e33c551d | ||
|
8d38c72298 | ||
|
3fa0423c02 | ||
|
6b745a4e24 | ||
|
998f402af5 | ||
|
63f8589430 | ||
|
1151cdfa9e | ||
|
ffaa1c92e9 | ||
|
765221c0d5 | ||
|
c10c3eab4c | ||
|
2cde1e592e | ||
|
96c1678c3a | ||
|
af41a1d491 | ||
|
3a39c3cb67 | ||
|
938b156d82 | ||
|
cd95b67347 | ||
|
439842e434 | ||
|
3bdb758934 | ||
|
dcb6a7ccbb | ||
|
e8830f5a40 | ||
|
e6e58cfa9d | ||
|
5f8a8716b6 | ||
|
460096f5da | ||
|
25e34c3526 | ||
|
794c133dfb | ||
|
9ae069dbbd | ||
|
4a0423e1bd | ||
|
e582e35227 | ||
|
37be707f57 | ||
|
b086d9ced7 | ||
|
ce22054074 | ||
|
b7af6550b1 | ||
|
738d1ae3b5 | ||
|
3479fdef2f | ||
|
ebd4883a0c | ||
|
78222e6363 | ||
|
1e8de8437a | ||
|
d9c7fcff8f | ||
|
bc7112746d | ||
|
29bc8e7d8f | ||
|
de150e2478 | ||
|
a3d2e3e061 | ||
|
0ba14013f6 | ||
|
a474b455ac | ||
|
457eab5a9b | ||
|
871da78263 | ||
|
d02343e501 | ||
|
e479370164 | ||
|
42df904f88 | ||
|
3ebfd3f774 | ||
|
b922999a40 | ||
|
0f687f8455 | ||
|
f3374c6dda | ||
|
1c1b424408 | ||
|
2b2ab2b3ea | ||
|
81d40e66ad | ||
|
cd0e19a749 | ||
|
88258e0dfe | ||
|
d63e946587 | ||
|
4cf2be408e | ||
|
7045f222cd | ||
|
39fdab1d66 | ||
|
dfb3dc3fb8 | ||
|
320b5abda5 | ||
|
b694aa4ab9 | ||
|
6b3355c91d | ||
|
ced638e674 | ||
|
727b56b578 | ||
|
8333a7b6e3 | ||
|
7eddf86185 | ||
|
5a36510f71 | ||
|
67fb55b03d | ||
|
a096942592 | ||
|
eadadecbaa | ||
|
a00623174b | ||
|
da8876c7dd | ||
|
572889ffcb | ||
|
f05a0226b8 | ||
|
df7c634d20 | ||
|
b5d25dd849 | ||
|
c66256b484 | ||
|
65476169f3 | ||
|
8a3a76e1da | ||
|
07b505bfdf | ||
|
b683891fda | ||
|
3ec28fc976 | ||
|
ba36bd0375 | ||
|
a3f5601465 | ||
|
2d00d104b4 | ||
|
422f3bb8ab | ||
|
cc8ff5354d | ||
|
c4263ac0ba | ||
|
cb3bcb73e5 | ||
|
7e80685340 | ||
|
e6174a9fd9 | ||
|
9e1050d72f | ||
|
18a9979dc1 | ||
|
f19b7eceb0 | ||
|
05974cb8c6 | ||
|
97eed6da97 | ||
|
a908f4a754 | ||
|
f1188d4464 | ||
|
fb8d6b41d8 | ||
|
b63f8f7906 | ||
|
1b9436fb1a | ||
|
a5848562b5 | ||
|
19c1e7c664 | ||
|
070f317d99 | ||
|
409cb4fc73 | ||
|
b22de71c1b | ||
|
cb415d4df6 | ||
|
3703e9920c | ||
|
b3cd93d933 | ||
|
ddf1e620e9 | ||
|
f2da7e720f | ||
|
f9d8d0c3b5 | ||
|
b49d9338d7 | ||
|
eaf6884621 | ||
|
0ac90296a0 | ||
|
42f71b4861 | ||
|
9311e55c8a | ||
|
e1cb624a43 | ||
|
d0a9ab29b2 | ||
|
8b2922ff5a | ||
|
b55c98ea41 | ||
|
1106bbc7d6 | ||
|
7bcc228beb | ||
|
7ca75b62cd | ||
|
d1dfe4e020 | ||
|
5b007761fe | ||
|
efa6b5e42b | ||
|
492b69f3be | ||
|
de5e3774d0 | ||
|
8ff8c91893 | ||
|
94864becb0 | ||
|
23c71839e9 | ||
|
b2f18cd2b0 | ||
|
49150fd43c | ||
|
51ba1c1ae1 | ||
|
854b8099c3 | ||
|
c1534a5fdf | ||
|
ff83f29241 | ||
|
14b2c43f19 | ||
|
a138bc7c33 | ||
|
2d85170eb7 | ||
|
d4540c5f3d | ||
|
fcb9f25989 | ||
|
d0533029ce | ||
|
4510df5464 | ||
|
bf1fb345af | ||
|
2332bc26d4 | ||
|
d26890688f | ||
|
c4f392aafb | ||
|
129d9d5078 | ||
|
895a5873d1 | ||
|
4b507f809c | ||
|
94cc306e41 | ||
|
4be397e164 | ||
|
6a3c578dcd | ||
|
8d00f077c9 | ||
|
8aab8a50d3 | ||
|
cf7634d966 | ||
|
2a81037439 | ||
|
b565197c5c | ||
|
a5776ac0b8 | ||
|
79d9471efd | ||
|
0a72dbd350 | ||
|
5fe5aa8e55 | ||
|
8e01950625 | ||
|
95c47f07a1 | ||
|
77b1d2e09c | ||
|
8f772b34b0 | ||
|
3913cd19b8 | ||
|
d56ee24335 | ||
|
8dc79ae7d7 | ||
|
22b7ddc7f0 | ||
|
dc74c9d0f4 | ||
|
b4419477fb | ||
|
dee121b885 | ||
|
0c3c77ba17 | ||
|
0f5d87c3dd | ||
|
8e73273cb9 | ||
|
e75051d196 | ||
|
32faf7ab0d | ||
|
161aababc6 | ||
|
e5fdeef1e0 | ||
|
a8d0652c04 | ||
|
ad4b3b93de | ||
|
7851d398de | ||
|
19a15cd5ba | ||
|
c566267f5c | ||
|
8491e03b2b | ||
|
78c9adb17e | ||
|
e1cb50b15d | ||
|
c8fda5f44a | ||
|
542f6feda9 | ||
|
71b5503164 | ||
|
b2048c5e90 | ||
|
ddb9ecca3b | ||
|
76732c9ca5 | ||
|
c8669c7ba7 | ||
|
f9a8673a7a | ||
|
f88046a1f0 | ||
|
8ebcf34d87 | ||
|
3b794e4a56 | ||
|
0470fa395f | ||
|
6512610f9a | ||
|
03cfc8d660 | ||
|
a1f1add42d | ||
|
a2f28ceea2 | ||
|
421dda800d | ||
|
89e76252ca | ||
|
f2b4f588f5 | ||
|
dbe13c105f | ||
|
9fc4a39dbf | ||
|
604cd6b966 | ||
|
e642d61d13 | ||
|
d9197f9037 | ||
|
fc62ee7e0d | ||
|
50ba62e231 | ||
|
549129838c | ||
|
0586a94929 | ||
|
fdabc7d9f6 | ||
|
cb84fe5e10 | ||
|
cc18cc282f | ||
|
5ef472dd83 | ||
|
7c60a95a0e | ||
|
8aaef12a59 | ||
|
a87b0110b9 | ||
|
5174eed793 | ||
|
8c1c18769e | ||
|
849a3d243d | ||
|
36bc0fe4f2 | ||
|
76c1c34c4a | ||
|
21e9850d53 | ||
|
62bc4af0e1 | ||
|
68da5dfc2c | ||
|
96fd94ba94 | ||
|
239e9bef92 | ||
|
e87174cf4b | ||
|
127dc6d136 | ||
|
602e9a0f37 | ||
|
5c66640ac7 | ||
|
cb9765ca94 | ||
|
5db1deab51 | ||
|
4cdbf27fac | ||
|
0fb12a40e4 | ||
|
f16031513f | ||
|
0dc989ea5b | ||
|
c01f896062 | ||
|
b56c93dfff | ||
|
90ec1db9f4 | ||
|
dd0dd9aa52 | ||
|
7dc8dc0f7c | ||
|
961567d0fe | ||
|
de4e222794 | ||
|
f57bc97c7a | ||
|
bb16b471d2 | ||
|
d87c319390 | ||
|
cf81335712 | ||
|
8d06574d2b | ||
|
4eecc8d007 | ||
|
b1ce5749b9 | ||
|
82a08e2f46 | ||
|
3dd84a58bb | ||
|
0231c54ebb | ||
|
2fe673fec3 | ||
|
f6a66a33f7 | ||
|
38d1191f41 | ||
|
a940c74bc3 | ||
|
c3454d95af | ||
|
27e056ff15 | ||
|
e81717e9e7 | ||
|
86735d78e6 | ||
|
890b405232 | ||
|
1e314197dd | ||
|
437c40eee4 | ||
|
7cfd42cefe | ||
|
8f7990c5f2 | ||
|
a834381506 | ||
|
fafaf56479 | ||
|
f94b6d706f | ||
|
a5a86652f1 | ||
|
66e8f863d3 | ||
|
c586fce4fb | ||
|
405d47bbe7 | ||
|
04f902b472 | ||
|
f9bb66b1ce | ||
|
10b9a02952 | ||
|
1f4d074f75 | ||
|
42ef3f68c9 | ||
|
e2b4f9aac3 | ||
|
8b8416676e | ||
|
6e9baa85a9 | ||
|
3f6ce3454f | ||
|
7f011e2075 | ||
|
41d14eaf19 | ||
|
13b8eb6452 | ||
|
c7775e842b | ||
|
2a69de60bf | ||
|
8cffec495c | ||
|
284fe97515 | ||
|
6886da783a | ||
|
b982fa8e8f | ||
|
d240dcee6d | ||
|
0097809879 | ||
|
ef557eacff | ||
|
de92b7adca | ||
|
3ffd5dfbce | ||
|
03785fe360 | ||
|
7b676fd738 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -39,5 +39,6 @@ manifest.txt
|
||||
Makefile.in
|
||||
.dir-locals.el
|
||||
.deps/
|
||||
.dirstamp
|
||||
.libs/
|
||||
/Makefile
|
||||
|
@@ -40,7 +40,7 @@ LOCAL_CFLAGS += \
|
||||
-DANDROID_VERSION=0x0$(major)0$(minor)
|
||||
|
||||
LOCAL_CFLAGS += \
|
||||
-DPTHREADS \
|
||||
-DHAVE_PTHREAD=1 \
|
||||
-fvisibility=hidden \
|
||||
-Wno-sign-compare
|
||||
|
||||
|
17
Makefile.am
17
Makefile.am
@@ -21,6 +21,8 @@
|
||||
|
||||
SUBDIRS = src
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
doxygen:
|
||||
cd doxygen && $(MAKE)
|
||||
|
||||
@@ -52,13 +54,22 @@ distclean-local:
|
||||
|
||||
# Rules for making release tarballs
|
||||
|
||||
PACKAGE_VERSION=8.1-devel
|
||||
PACKAGE_VERSION=9.0.3
|
||||
PACKAGE_DIR = Mesa-$(PACKAGE_VERSION)
|
||||
PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION)
|
||||
|
||||
EXTRA_FILES = \
|
||||
aclocal.m4 \
|
||||
configure \
|
||||
bin/ar-lib \
|
||||
bin/compile \
|
||||
bin/config.sub \
|
||||
bin/config.guess \
|
||||
bin/depcomp \
|
||||
bin/install-sh \
|
||||
bin/ltmain.sh \
|
||||
bin/missing \
|
||||
bin/ylwrap \
|
||||
src/glsl/glsl_parser.cc \
|
||||
src/glsl/glsl_parser.h \
|
||||
src/glsl/glsl_lexer.cc \
|
||||
@@ -73,7 +84,9 @@ EXTRA_FILES = \
|
||||
src/mesa/main/api_exec_es2_remap_helper.h \
|
||||
src/mesa/program/lex.yy.c \
|
||||
src/mesa/program/program_parse.tab.c \
|
||||
src/mesa/program/program_parse.tab.h
|
||||
src/mesa/program/program_parse.tab.h \
|
||||
`git ls-files | grep "Makefile.am" | sed -e "s/Makefile.am/Makefile.in/"`
|
||||
|
||||
|
||||
IGNORE_FILES = \
|
||||
-x autogen.sh
|
||||
|
41
bin/.cherry-ignore
Normal file
41
bin/.cherry-ignore
Normal file
@@ -0,0 +1,41 @@
|
||||
# These commits were cherry picked without using -x.
|
||||
ca3ed3e024864e91ca3cccc59fb96950e1d079b5 egl/wayland: Don't invalidate drawable on swap buffers
|
||||
89ba4368fd86778405eea163e2b27812055f0df9 egl/wayland: Add invalidate back in eglSwapBuffers()
|
||||
60a11e295b86475ff334291a5b483e422371b21c egl/wayland: Dispatch the event queue before get_buffers
|
||||
41e105d5beb78c42993a602cc58d0f990739b088 nvc0: add missing call to map edge flag in push_vbo
|
||||
be75a9373a6d0f9e2ef35ac376a541e60d72d306 nv50/ir: wrap assertion using typeid in #ifndef NDEBUG
|
||||
7d2d450ea6d8082db14cd3f86c6c25442bf771c5 nouveau: fix undefined behaviour when testing sample_count
|
||||
|
||||
# Causes too many regressions...
|
||||
413c4914129cd26ca87960852d8c0264c0fb29e7 intel: Improve teximage perf for Google Chrome paint rects (v3)
|
||||
b1d0fe022dc4826dadce014ab8fe062a82f75a16 intel: Fix segfault in intel_texsubimage_tiled_memcpy
|
||||
b5891286202987dfc2606ac716050c0ee426de11 intel: Fix yet-another-bug in intel_texsubimage_tiled_memcpy
|
||||
|
||||
# Introduces performance regressions for other games... don't cherry-pick for now
|
||||
fa58644855e44830e0b91dc627703c236fa6712a r600g: fix abysmal performance in Reaction Quake
|
||||
|
||||
# i965 guardband clipping is disabled in 9.0, so no need to fix bugs in it
|
||||
23e7b81f2d742d292d77b53ac9cf72c3d89fc798 i965: Use fewer temporary variables in c
|
||||
lip setup.
|
||||
d411bbd5bd895617e265e023213895100e4509ef i965: Disable the GB clip test when a li
|
||||
mited viewport is set.
|
||||
|
||||
# Candidates for 9.1
|
||||
1559994cba380a4e87a5e8dbb04b0a7475711756 i965: Fix assignment instead of comparison in asserts.
|
||||
5c86a728d4f688c0fe7fbf9f4b8f88060b65c4ee r600g: fix htile buffer leak
|
||||
a06f03d795153ce060d99aafb61d10c27a47efc1 r300g: always put MSAA resources in VRAM
|
||||
a8a5055f2dea1960898763d17f28043577c3e64e radeonsi: Fix draws using user index buffer.
|
||||
257006e2a4201c11ca5f800a74ac4aaf62a7bfc1 r600g/llvm: Select the correct GPU type for RV670
|
||||
e5fb7347a72118bf06dfabaa453208578c7ad876 radeonsi: Adapt to sample intrinsics changes.
|
||||
120efeef8b51c16924dafa6bbeb017a856db911b radeonsi: Improve packing of texture address parameters.
|
||||
6bcb8238446060db665425d9f63eb0c1b3ba9f68 radeonsi: Enable texture arrays.
|
||||
6455d40b7ec09e3a3923c9b78952dc29627afed1 radeonsi: Remove spurious traces of R16G16B16 support.
|
||||
2db1f73849260cf8e5a7e390d04f5f26141a0b37 builtin_compiler/build: Don't use *_FOR_BUILD when not cross compiling
|
||||
11bd1b0f589bfeab8fcad5c70adf4c8a665eebc9 gallium/egl: Fix include dirs for VPATH build
|
||||
b92900d26a54ef997f2920d6a7371bb7c9caabf8 mesa/glsl: Separate parsing logic from _mesa_get_uniform_location.
|
||||
b4db34cc4c047427a21efb9bde03d7e125f70e55 glsl: Rename uniform_field_visitor to program_resource_visitor.
|
||||
53febac02c382fa163a9ad7280fc5f4d2707a665 glsl: Use parse_program_resource_name to parse transform feedback varyings.
|
||||
99b78337e38308480ee491493b045179f10ed579 glsl: Support transform feedback of varying structs.
|
||||
83e4407f443fb6baeccf9aefee291c82adcaa58b radeonsi: add support for Oland chips
|
||||
af0af75881ea99452086afd6907780de77af6e96 radeonsi: default PA_SC_RASTER_CONFIG to 0
|
||||
4161d70bba567e6e73d5e9e993a74d81930d0e72 radeonsi: add Oland pci ids
|
29
bin/get-pick-list.sh
Executable file
29
bin/get-pick-list.sh
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Script for generating a list of candidates for cherry-picking to a stable branch
|
||||
|
||||
# Grep for commits with "cherry picked from commit" in the commit message.
|
||||
git log --reverse --grep="cherry picked from commit" origin/master..HEAD |\
|
||||
grep "cherry picked from commit" |\
|
||||
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
||||
|
||||
# Grep for commits that were marked as a candidate for the stable tree.
|
||||
git log --reverse --pretty=%H -i --grep='^[[:space:]]*NOTE: This is a candidate' HEAD..origin/master |\
|
||||
while read sha
|
||||
do
|
||||
# Check to see whether the patch is on the ignore list.
|
||||
if [ -f bin/.cherry-ignore ] ; then
|
||||
if grep -q ^$sha bin/.cherry-ignore ; then
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check to see if it has already been picked over.
|
||||
if grep -q ^$sha already_picked ; then
|
||||
continue
|
||||
fi
|
||||
|
||||
git log -n1 --pretty=oneline $sha | cat
|
||||
done
|
||||
|
||||
rm -f already_picked
|
42
bin/mklib
42
bin/mklib
@@ -319,6 +319,25 @@ case $ARCH in
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if objects are 32-bit and we're running in 64-bit
|
||||
# environment. If so, pass -m32 flag to linker.
|
||||
add_abi_flag_to_opts() {
|
||||
case $(file $1) in
|
||||
*32-bit*x86-64*)
|
||||
# x86_64 x32 ABI.
|
||||
OPTS="-mx32 ${OPTS}"
|
||||
;;
|
||||
*64-bit*x86-64*)
|
||||
# x86_64 64-bit ABI.
|
||||
OPTS="-m64 ${OPTS}"
|
||||
;;
|
||||
*32-bit*Intel*)
|
||||
# x86 32-bit ABI.
|
||||
OPTS="-m32 ${OPTS}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
if [ $NOPREFIX = 1 ] ; then
|
||||
# No "lib" or ".so" part
|
||||
echo "mklib: Making" $ARCH "shared library: " ${LIBNAME}
|
||||
@@ -330,15 +349,8 @@ case $ARCH in
|
||||
;;
|
||||
esac
|
||||
|
||||
# Check if objects are 32-bit and we're running in 64-bit
|
||||
# environment. If so, pass -m32 flag to linker.
|
||||
set ${OBJECTS}
|
||||
ABI32=`file $1 | grep 32-bit`
|
||||
ARM=`file $1 | grep ARM`
|
||||
# Do not add "-m32" option for arm.
|
||||
if [ -z "$ARM" -a "${ABI32}" -a `uname -m` = "x86_64" ] ; then
|
||||
OPTS="-m32 ${OPTS}"
|
||||
fi
|
||||
# Check to see if we are building for a different ABI.
|
||||
add_abi_flag_to_opts ${OBJECTS}
|
||||
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
@@ -389,15 +401,9 @@ case $ARCH in
|
||||
# exptmp is removed below
|
||||
fi
|
||||
|
||||
# Check if objects are 32-bit and we're running in 64-bit
|
||||
# environment. If so, pass -m32 flag to linker.
|
||||
set ${OBJECTS}
|
||||
ABI32=`file $1 | grep 32-bit`
|
||||
ARM=`file $1 | grep ARM`
|
||||
# Do not add "-m32" option for arm.
|
||||
if [ -z "$ARM" -a "${ABI32}" -a `uname -m` = "x86_64" ] ; then
|
||||
OPTS="-m32 ${OPTS}"
|
||||
fi
|
||||
# Check to see if we are building for a different ABI.
|
||||
add_abi_flag_to_opts ${OBJECTS}
|
||||
|
||||
if [ "${ALTOPTS}" ] ; then
|
||||
OPTS=${ALTOPTS}
|
||||
fi
|
||||
|
@@ -144,7 +144,7 @@ GLAPI_LIB_DEPS = @GLAPI_LIB_DEPS@
|
||||
DRI_LIB_DEPS = @DRI_LIB_DEPS@
|
||||
GALLIUM_DRI_LIB_DEPS = @GALLIUM_DRI_LIB_DEPS@
|
||||
LIBDRM_CFLAGS = @LIBDRM_CFLAGS@
|
||||
LIBDRM_LIB = @LIBDRM_LIBS@
|
||||
LIBDRM_LIBS = @LIBDRM_LIBS@
|
||||
DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@
|
||||
GLPROTO_CFLAGS = @GLPROTO_CFLAGS@
|
||||
EXPAT_INCLUDES = @EXPAT_INCLUDES@
|
||||
@@ -182,7 +182,8 @@ VA_LIB_INSTALL_DIR=@VA_LIB_INSTALL_DIR@
|
||||
XORG_DRIVER_INSTALL_DIR = @XORG_DRIVER_INSTALL_DIR@
|
||||
|
||||
# Path to OpenCL C library libclc
|
||||
LIBCLC_PATH = @LIBCLC_PATH@
|
||||
LIBCLC_INCLUDEDIR = @LIBCLC_INCLUDEDIR@
|
||||
LIBCLC_LIBEXECDIR = @LIBCLC_LIBEXECDIR@
|
||||
|
||||
# pkg-config substitutions
|
||||
GL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@
|
||||
|
@@ -10,7 +10,7 @@ CONFIG_NAME = default
|
||||
# Version info
|
||||
MESA_MAJOR=9
|
||||
MESA_MINOR=0
|
||||
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.
|
||||
@@ -94,7 +94,7 @@ MOTIF_CFLAGS = -I/usr/include/Motif1.2
|
||||
# Directories to build
|
||||
LIB_DIR = lib
|
||||
SRC_DIRS = glsl mapi/glapi mapi/vgapi mesa \
|
||||
gallium egl gallium/winsys gallium/targets glu
|
||||
gallium egl gallium/winsys gallium/targets
|
||||
DRIVER_DIRS = x11 osmesa
|
||||
|
||||
# Gallium directories and
|
||||
|
190
configure.ac
190
configure.ac
@@ -6,9 +6,10 @@ dnl Tell the user about autoconf.html in the --help output
|
||||
m4_divert_once([HELP_END], [
|
||||
See docs/autoconf.html for more details on the options for Mesa.])
|
||||
|
||||
AC_INIT([Mesa], [8.1.0],
|
||||
AC_INIT([Mesa], [9.0.3],
|
||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
|
||||
AC_CONFIG_AUX_DIR([bin])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CANONICAL_HOST
|
||||
AM_INIT_AUTOMAKE([foreign])
|
||||
|
||||
@@ -26,6 +27,10 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
|
||||
LT_PREREQ([2.2])
|
||||
LT_INIT([disable-static])
|
||||
|
||||
dnl Set internal versions
|
||||
OSMESA_VERSION=8
|
||||
AC_SUBST([OSMESA_VERSION])
|
||||
|
||||
dnl Versions for external dependencies
|
||||
LIBDRM_REQUIRED=2.4.24
|
||||
LIBDRM_RADEON_REQUIRED=2.4.39
|
||||
@@ -45,6 +50,7 @@ AM_PROG_CC_C_O
|
||||
AM_PROG_AS
|
||||
AC_CHECK_PROGS([MAKE], [gmake make])
|
||||
AC_CHECK_PROGS([PYTHON2], [python2 python])
|
||||
AX_PYTHON_MODULE([libxml2], [needed])
|
||||
AC_PROG_SED
|
||||
AC_PROG_MKDIR_P
|
||||
AC_PATH_PROG([MKDEP], [makedepend])
|
||||
@@ -155,13 +161,13 @@ DEFINES=""
|
||||
AC_SUBST([DEFINES])
|
||||
case "$host_os" in
|
||||
linux*|*-gnu*|gnu*)
|
||||
DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
|
||||
DEFINES="$DEFINES -D_GNU_SOURCE -DHAVE_PTHREAD"
|
||||
;;
|
||||
solaris*)
|
||||
DEFINES="$DEFINES -DPTHREADS -DSVR4"
|
||||
DEFINES="$DEFINES -DHAVE_PTHREAD -DSVR4"
|
||||
;;
|
||||
cygwin*)
|
||||
DEFINES="$DEFINES -DPTHREADS"
|
||||
DEFINES="$DEFINES -DHAVE_PTHREAD"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -340,18 +346,12 @@ AC_ARG_WITH([gl-lib-name],
|
||||
[specify GL library name @<:@default=GL@:>@])],
|
||||
[GL_LIB=$withval],
|
||||
[GL_LIB=GL])
|
||||
AC_ARG_WITH([glu-lib-name],
|
||||
[AS_HELP_STRING([--with-glu-lib-name@<:@=NAME@:>@],
|
||||
[specify GLU library name @<:@default=GLU@:>@])],
|
||||
[GLU_LIB=$withval],
|
||||
[GLU_LIB=GLU])
|
||||
AC_ARG_WITH([osmesa-lib-name],
|
||||
[AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
|
||||
[specify OSMesa library name @<:@default=OSMesa@:>@])],
|
||||
[OSMESA_LIB=$withval],
|
||||
[OSMESA_LIB=OSMesa])
|
||||
AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
|
||||
AS_IF([test "x$GLU_LIB" = xyes], [GLU_LIB=GLU])
|
||||
AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
|
||||
|
||||
dnl
|
||||
@@ -366,11 +366,9 @@ AC_ARG_ENABLE([mangling],
|
||||
if test "x${enable_mangling}" = "xyes" ; then
|
||||
DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
|
||||
GL_LIB="Mangled${GL_LIB}"
|
||||
GLU_LIB="Mangled${GLU_LIB}"
|
||||
OSMESA_LIB="Mangled${OSMESA_LIB}"
|
||||
fi
|
||||
AC_SUBST([GL_LIB])
|
||||
AC_SUBST([GLU_LIB])
|
||||
AC_SUBST([OSMESA_LIB])
|
||||
|
||||
dnl
|
||||
@@ -389,7 +387,6 @@ if test "x$enable_texture_float" = xyes; then
|
||||
fi
|
||||
|
||||
GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
|
||||
GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
|
||||
OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
|
||||
EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
|
||||
GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
|
||||
@@ -398,7 +395,6 @@ VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
|
||||
GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
|
||||
|
||||
GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
|
||||
GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
|
||||
EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
|
||||
EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
|
||||
GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
|
||||
@@ -407,7 +403,6 @@ VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENS
|
||||
GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
|
||||
|
||||
AC_SUBST([GL_LIB_NAME])
|
||||
AC_SUBST([GLU_LIB_NAME])
|
||||
AC_SUBST([OSMESA_LIB_NAME])
|
||||
AC_SUBST([EGL_LIB_NAME])
|
||||
AC_SUBST([GLESv1_CM_LIB_NAME])
|
||||
@@ -416,7 +411,6 @@ AC_SUBST([VG_LIB_NAME])
|
||||
AC_SUBST([GLAPI_LIB_NAME])
|
||||
|
||||
AC_SUBST([GL_LIB_GLOB])
|
||||
AC_SUBST([GLU_LIB_GLOB])
|
||||
AC_SUBST([EGL_LIB_GLOB])
|
||||
AC_SUBST([GLESv1_CM_LIB_GLOB])
|
||||
AC_SUBST([GLESv2_LIB_GLOB])
|
||||
@@ -507,6 +501,13 @@ AC_SUBST([DLOPEN_LIBS])
|
||||
dnl See if posix_memalign is available
|
||||
AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
|
||||
|
||||
dnl Check for pthreads
|
||||
AX_PTHREAD
|
||||
dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
|
||||
dnl to -pthread, which causes problems if we need -lpthread to appear in
|
||||
dnl pkgconfig files.
|
||||
test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
|
||||
|
||||
dnl SELinux awareness.
|
||||
AC_ARG_ENABLE([selinux],
|
||||
[AS_HELP_STRING([--enable-selinux],
|
||||
@@ -521,6 +522,7 @@ if test "x$enable_selinux" = "xyes"; then
|
||||
SELINUX_LIBS="-lselinux"
|
||||
DEFINES="$DEFINES -DMESA_SELINUX"
|
||||
fi
|
||||
AC_SUBST([SELINUX_LIBS])
|
||||
|
||||
dnl Options for APIs
|
||||
AC_ARG_ENABLE([opengl],
|
||||
@@ -670,6 +672,17 @@ if test "x$enable_opengl" = xno -a \
|
||||
AC_MSG_ERROR([at least one API should be enabled])
|
||||
fi
|
||||
|
||||
# Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
|
||||
if test "x$enable_opengl" = xno -a \
|
||||
"x$enable_gles1" = xyes; then
|
||||
AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
|
||||
fi
|
||||
|
||||
if test "x$enable_opengl" = xno -a \
|
||||
"x$enable_gles2" = xyes; then
|
||||
AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
|
||||
fi
|
||||
|
||||
API_DEFINES=""
|
||||
if test "x$enable_opengl" = xno; then
|
||||
API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
|
||||
@@ -693,6 +706,16 @@ if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
|
||||
AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
|
||||
fi
|
||||
|
||||
if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
|
||||
AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
|
||||
fi
|
||||
|
||||
# Disable GLX if OpenGL is not enabled
|
||||
if test "x$enable_glx$enable_opengl" = xyesno; then
|
||||
AC_MSG_WARN([OpenGL not enabled, disabling GLX])
|
||||
enable_glx=no
|
||||
fi
|
||||
|
||||
# Disable GLX if DRI and Xlib-GLX are not enabled
|
||||
if test "x$enable_glx" = xyes -a \
|
||||
"x$enable_dri" = xno -a \
|
||||
@@ -861,19 +884,18 @@ xyesyes)
|
||||
GL_PC_REQ_PRIV="x11 xext"
|
||||
X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
|
||||
GL_LIB_DEPS="$XLIBGL_LIBS"
|
||||
GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
|
||||
GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
|
||||
GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
|
||||
;;
|
||||
xyesno)
|
||||
# DRI-based GLX
|
||||
PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
|
||||
GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
|
||||
if test x"$driglx_direct" = xyes; then
|
||||
if test "x$have_libdrm" != xyes; then
|
||||
AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
|
||||
fi
|
||||
PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
|
||||
GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
|
||||
GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
|
||||
fi
|
||||
|
||||
# find the DRI deps for libGL
|
||||
@@ -890,9 +912,9 @@ xyesno)
|
||||
X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
|
||||
GL_LIB_DEPS="$DRIGL_LIBS"
|
||||
|
||||
# need DRM libs, -lpthread, etc.
|
||||
GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
|
||||
GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
|
||||
# need DRM libs, $PTHREAD_LIBS, etc.
|
||||
GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -900,10 +922,10 @@ esac
|
||||
# builds.
|
||||
AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
|
||||
|
||||
GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
|
||||
GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
|
||||
GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
|
||||
GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
|
||||
GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
|
||||
AC_SUBST([GL_LIB_DEPS])
|
||||
AC_SUBST([GL_PC_REQ_PRIV])
|
||||
@@ -915,12 +937,7 @@ AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
|
||||
AC_SUBST([GLESv2_LIB_DEPS])
|
||||
AC_SUBST([GLESv2_PC_LIB_PRIV])
|
||||
|
||||
GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
|
||||
AC_SUBST([GLAPI_LIB_DEPS])
|
||||
|
||||
|
||||
DRI_LIB_DEPS="\$(top_builddir)/src/mesa/libdricore/libdricore${VERSION}.la"
|
||||
GALLIUM_DRI_LIB_DEPS="\$(TOP)/\$(LIB_DIR)/libdricore${VERSION}.so"
|
||||
|
||||
AC_SUBST([HAVE_XF86VIDMODE])
|
||||
|
||||
@@ -950,8 +967,8 @@ AC_ARG_ENABLE([glx-tls],
|
||||
[GLX_USE_TLS=no])
|
||||
AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
|
||||
|
||||
AS_IF([test "x$GLX_USE_TLS" = xyes],
|
||||
[DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
|
||||
AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
|
||||
[DEFINES="${DEFINES} -DGLX_USE_TLS -DHAVE_PTHREAD"])
|
||||
|
||||
dnl
|
||||
dnl More DRI setup
|
||||
@@ -1035,7 +1052,7 @@ if test "x$enable_dri" = xyes; then
|
||||
esac
|
||||
;;
|
||||
freebsd* | dragonfly* | *netbsd*)
|
||||
DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
|
||||
DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
|
||||
DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
|
||||
|
||||
if test "x$DRI_DIRS" = "xyes"; then
|
||||
@@ -1094,9 +1111,10 @@ if test "x$enable_dri" = xyes; then
|
||||
fi
|
||||
|
||||
# put all the necessary libs together
|
||||
DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
|
||||
GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
|
||||
DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
fi
|
||||
AM_CONDITIONAL(NEED_LIBDRICORE, test -n "$DRI_DIRS")
|
||||
AC_SUBST([DRI_DIRS])
|
||||
AC_SUBST([EXPAT_INCLUDES])
|
||||
AC_SUBST([DRI_LIB_DEPS])
|
||||
@@ -1191,12 +1209,12 @@ esac
|
||||
if test "x$enable_osmesa" = xyes; then
|
||||
# only link libraries with osmesa if shared
|
||||
if test "$enable_static" = no; then
|
||||
OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
|
||||
OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
|
||||
else
|
||||
OSMESA_LIB_DEPS=""
|
||||
fi
|
||||
OSMESA_MESA_DEPS=""
|
||||
OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
|
||||
OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
|
||||
fi
|
||||
|
||||
AC_SUBST([OSMESA_LIB_DEPS])
|
||||
@@ -1226,8 +1244,6 @@ if test "x$enable_gbm" = xyes; then
|
||||
if test "x$enable_shared_glapi" = xno; then
|
||||
AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
|
||||
fi
|
||||
PKG_CHECK_MODULES([LIBKMS], [libkms], [],
|
||||
AC_MSG_ERROR([gbm needs libkms]))
|
||||
fi
|
||||
fi
|
||||
GBM_PC_REQ_PRIV="libudev"
|
||||
@@ -1242,7 +1258,7 @@ EGL_CLIENT_APIS=""
|
||||
|
||||
if test "x$enable_egl" = xyes; then
|
||||
SRC_DIRS="$SRC_DIRS egl"
|
||||
EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
|
||||
EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
|
||||
|
||||
AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
|
||||
|
||||
@@ -1365,11 +1381,11 @@ if test "x$enable_openvg" = xyes; then
|
||||
fi
|
||||
|
||||
EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
|
||||
VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
|
||||
VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
|
||||
CORE_DIRS="$CORE_DIRS mapi/vgapi"
|
||||
GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
|
||||
HAVE_ST_VEGA=yes
|
||||
VG_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
|
||||
VG_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
AC_SUBST([VG_PC_LIB_PRIV])
|
||||
fi
|
||||
|
||||
@@ -1439,17 +1455,27 @@ dnl
|
||||
|
||||
AC_ARG_WITH([libclc-path],
|
||||
[AS_HELP_STRING([--with-libclc-path],
|
||||
[Path to libclc builtins library. Example: --with-libclc-path=\$HOME/libclc/])],
|
||||
[DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
|
||||
[LIBCLC_PATH="$withval"],
|
||||
[LIBCLC_PATH=""])
|
||||
|
||||
if test "x$LIBCLC_PATH" != x; then
|
||||
AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
|
||||
Please review the updated build instructions for clover:
|
||||
http://dri.freedesktop.org/wiki/GalliumCompute])
|
||||
fi
|
||||
|
||||
|
||||
AC_ARG_WITH([clang-libdir],
|
||||
[AS_HELP_STRING([--with-clang-libdir],
|
||||
[Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
|
||||
[CLANG_LIBDIR="$withval"],
|
||||
[CLANG_LIBDIR=""])
|
||||
|
||||
AC_SUBST([LIBCLC_PATH])
|
||||
LIBCLC_INCLUDEDIR=`pkg-config --variable=includedir libclc`
|
||||
LIBCLC_LIBEXECDIR=`pkg-config --variable=libexecdir libclc`
|
||||
AC_SUBST([LIBCLC_INCLUDEDIR])
|
||||
AC_SUBST([LIBCLC_LIBEXECDIR])
|
||||
|
||||
if test "x$enable_opencl" = xyes; then
|
||||
if test "x$with_gallium_drivers" = x; then
|
||||
@@ -1460,65 +1486,15 @@ if test "x$enable_opencl" = xyes; then
|
||||
AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
|
||||
fi
|
||||
|
||||
if test "x$LIBCLC_INCLUDEDIR" == x || test "x$LIBCLC_LIBEXECDIR" == x; then
|
||||
AC_MSG_ERROR([pkg-config cannot use libclc.pc which is required to build clover])
|
||||
fi
|
||||
|
||||
GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
|
||||
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
|
||||
enable_gallium_loader=yes
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl GLU configuration
|
||||
dnl
|
||||
AC_ARG_ENABLE([glu],
|
||||
[AS_HELP_STRING([--disable-glu],
|
||||
[enable OpenGL Utility library @<:@default=enabled@:>@])],
|
||||
[enable_glu="$enableval"],
|
||||
[enable_glu=yes])
|
||||
|
||||
if test "x$enable_glu" = xyes; then
|
||||
if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
|
||||
AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
|
||||
enable_glu=no
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$enable_glu" = xyes; then
|
||||
SRC_DIRS="$SRC_DIRS glu"
|
||||
|
||||
if test "x$enable_glx" = xno; then
|
||||
# Link libGLU to libOSMesa instead of libGL
|
||||
GLU_LIB_DEPS=""
|
||||
GLU_PC_REQ="osmesa"
|
||||
if test "$enable_static" = no; then
|
||||
GLU_MESA_DEPS='-l$(OSMESA_LIB)'
|
||||
else
|
||||
GLU_MESA_DEPS=""
|
||||
fi
|
||||
else
|
||||
# If static, empty GLU_LIB_DEPS and add libs for programs to link
|
||||
GLU_PC_REQ="gl"
|
||||
GLU_PC_LIB_PRIV="-lm"
|
||||
if test "$enable_static" = no; then
|
||||
GLU_LIB_DEPS="-lm"
|
||||
GLU_MESA_DEPS='-l$(GL_LIB)'
|
||||
else
|
||||
GLU_LIB_DEPS=""
|
||||
GLU_MESA_DEPS=""
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "$enable_static" = no; then
|
||||
GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
|
||||
fi
|
||||
GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
|
||||
AC_SUBST([GLU_LIB_DEPS])
|
||||
AC_SUBST([GLU_MESA_DEPS])
|
||||
AC_SUBST([GLU_PC_REQ])
|
||||
AC_SUBST([GLU_PC_REQ_PRIV])
|
||||
AC_SUBST([GLU_PC_LIB_PRIV])
|
||||
AC_SUBST([GLU_PC_CFLAGS])
|
||||
|
||||
AC_SUBST([PROGRAM_DIRS])
|
||||
|
||||
dnl
|
||||
dnl Gallium configuration
|
||||
dnl
|
||||
@@ -1576,8 +1552,7 @@ for plat in $egl_platforms; do
|
||||
;;
|
||||
|
||||
wayland)
|
||||
PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
|
||||
[AC_MSG_ERROR([cannot find libwayland-client])])
|
||||
PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.0.2 wayland-server >= 1.0.2])
|
||||
GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
|
||||
|
||||
WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
|
||||
@@ -1721,8 +1696,8 @@ if test "x$enable_gallium_llvm" = xyes; then
|
||||
fi
|
||||
LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
|
||||
LLVM_BINDIR=`$LLVM_CONFIG --bindir`
|
||||
LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags`
|
||||
LLVM_CPPFLAGS=`$LLVM_CONFIG --cppflags`
|
||||
LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g' -e 's/-Wcovered-switch-default//g'`
|
||||
LLVM_CPPFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g' -e 's/-Wcovered-switch-default//g'`
|
||||
LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
|
||||
LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
|
||||
DEFINES="${DEFINES} -DHAVE_LLVM=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/0x0\10\2/g'`"
|
||||
@@ -1986,10 +1961,6 @@ AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
|
||||
AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
|
||||
AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
|
||||
|
||||
# To pass as an argument to libtool's -version-number flag
|
||||
VERSION_NUMBER=`echo "$VERSION" | $SED 's/\./:/g'`
|
||||
AC_SUBST([VERSION_NUMBER])
|
||||
|
||||
dnl prepend CORE_DIRS to SRC_DIRS
|
||||
SRC_DIRS="$CORE_DIRS $SRC_DIRS"
|
||||
|
||||
@@ -2115,9 +2086,6 @@ xyesno)
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ""
|
||||
echo " GLU: $enable_glu"
|
||||
|
||||
dnl EGL
|
||||
echo ""
|
||||
echo " EGL: $enable_egl"
|
||||
|
@@ -34,8 +34,7 @@ sRGB framebuffer format (GL_EXT_framebuffer_sRGB) DONE (i965, r600)
|
||||
glClearBuffer commands DONE
|
||||
glGetStringi command DONE
|
||||
glTexParameterI, glGetTexParameterI commands DONE
|
||||
glVertexAttribI commands ~50% done (converts int
|
||||
values to floats)
|
||||
glVertexAttribI commands DONE
|
||||
Depth format cube textures DONE
|
||||
GLX_ARB_create_context (GLX 1.4 is required) DONE
|
||||
|
||||
|
@@ -17,10 +17,6 @@
|
||||
<li><a href="#dri">DRI Driver Options</a></li>
|
||||
<li><a href="#osmesa">OSMesa Driver Options</a></li>
|
||||
</ul>
|
||||
<li><p><a href="#library">Library Options</a>
|
||||
<ul>
|
||||
<li><a href="#glu">GLU</a></li>
|
||||
</ul>
|
||||
<li><p><a href="#demos">Demo Program Options</a>
|
||||
</ol>
|
||||
|
||||
@@ -219,12 +215,6 @@ libraries that will be built. More details on the specific GL libraries
|
||||
can be found in the <a href="install.html">basic installation
|
||||
instructions</a>.
|
||||
|
||||
<dl>
|
||||
<dt id="glu">GLU <dd><p> The libGLU library will be built by default
|
||||
on all drivers. This can be disable with the option
|
||||
<code>--disable-glu</code>.
|
||||
</dl>
|
||||
|
||||
|
||||
<h2 id="demos">4. Demo Program Options</h2>
|
||||
|
||||
|
@@ -74,7 +74,6 @@
|
||||
<li><a href="http://sourceforge.net/projects/mesa3d" target="_parent">SourceForge homepage</a>
|
||||
<li><a href="repository.html" target="MainFrame">Source Code Repository</a>
|
||||
<li><a href="sourcetree.html" target="MainFrame">Source Code Tree</a>
|
||||
<li><a href="glu.html" target="MainFrame">SGI's GLU</a>
|
||||
<li><a href="utilities.html" target="MainFrame">Utilities</a>
|
||||
<li><a href="helpwanted.html" target="MainFrame">Help Wanted</a>
|
||||
<li><a href="devinfo.html" target="MainFrame">Development Notes</a>
|
||||
|
@@ -169,7 +169,7 @@ branch is relevant.
|
||||
<dd>MESA_MAJOR, MESA_MINOR and MESA_TINY</dd>
|
||||
<dt>Makefile.am</dt>
|
||||
<dd>PACKAGE_VERSION</dd>
|
||||
<dt>autoconf.ac</dt>
|
||||
<dt>configure.ac</dt>
|
||||
<dd>AC_INIT</dd>
|
||||
<dt>src/mesa/main/version.h</dt>
|
||||
<dd>MESA_MAJOR, MESA_MINOR, MESA_PATCH and MESA_VERSION_STRING</dd>
|
||||
|
@@ -197,7 +197,7 @@ few preprocessor defines.</p>
|
||||
|
||||
<ul>
|
||||
<li>If <tt>GLX_USE_TLS</tt> is defined, method #4 is used.</li>
|
||||
<li>If <tt>PTHREADS</tt> is defined, method #3 is used.</li>
|
||||
<li>If <tt>HAVE_PTHREAD</tt> is defined, method #3 is used.</li>
|
||||
<li>If <tt>WIN32_THREADS</tt> is defined, method #2 is used.</li>
|
||||
<li>If none of the preceeding are defined, method #1 is used.</li>
|
||||
</ul>
|
||||
|
@@ -69,7 +69,6 @@ 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
|
||||
</pre>
|
||||
|
||||
@@ -80,7 +79,12 @@ instructions</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<h1>Demos and GLUT</h1>
|
||||
<h1>Demos, GLUT, and GLU</h1>
|
||||
|
||||
<p>
|
||||
A package of SGI's GLU library is available
|
||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/glu/" target="_parent">here</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
A package of Mark Kilgard's GLUT library is available
|
||||
@@ -93,9 +97,13 @@ The Mesa demos collection is available
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the past, GLUT and the Mesa demos were released in conjunction with
|
||||
Mesa releases. But since GLUT and the demos change infrequently, they
|
||||
were split off some time ago.
|
||||
In the past, GLUT, GLU and the Mesa demos were released in conjunction with
|
||||
Mesa releases. But since GLUT, GLU and the demos change infrequently, they
|
||||
were split off into their own git repositories:
|
||||
|
||||
<a href="http://cgit.freedesktop.org/mesa/glut/">GLUT</a>,
|
||||
<a href="http://cgit.freedesktop.org/mesa/glu/">GLU</a> and
|
||||
<a href="http://cgit.freedesktop.org/mesa/demos/">Demos</a>,
|
||||
</p>
|
||||
|
||||
|
||||
|
@@ -226,10 +226,6 @@ Basically you'll want the following:
|
||||
</li><li>/usr/lib/libGL.so.1 - a symlink to libGL.so.1.xyz
|
||||
</li><li>/usr/lib/libGL.so.xyz - the actual OpenGL/Mesa library. xyz denotes the
|
||||
Mesa version number.
|
||||
</li><li>/usr/lib/libGLU.so - a symlink to libGLU.so.1
|
||||
</li><li>/usr/lib/libGLU.so.1 - a symlink to libGLU.so.1.3.xyz
|
||||
</li><li>/usr/lib/libGLU.so.xyz - the OpenGL Utility library. xyz denotes the Mesa
|
||||
version number.
|
||||
</li></ul>
|
||||
<p>
|
||||
After installing XFree86/X.org and the DRI drivers, some of these files
|
||||
|
@@ -1,46 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>SGI GLU</title>
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>SGI SI GLU</h1>
|
||||
|
||||
(Silicon Graphics, Inc. Sample Implementation of the OpenGL Utility library)
|
||||
|
||||
<p>
|
||||
SGI open-sourced their OpenGL Sample Implementation (SI) in January, 2000.
|
||||
This includes the GLU library.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The SI GLU library implements GLU version 1.3 whereas the original
|
||||
Mesa GLU library only implemented version 1.2.
|
||||
We recommend using the SI GLU library instead of Mesa's GLU library
|
||||
since it's more up-to-date, complete and reliable.
|
||||
We're no longer developing the original Mesa GLU library.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The SI GLU library code is included in the Mesa distribution.
|
||||
You don't have to download it separately.
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
<b>Olivier Michel</b> has made Linux RPMs of GLU for i386 and PowerPC.
|
||||
You can download them from the
|
||||
<a href="http://www.sourceforge.net/project/showfiles.php?group_id=3"
|
||||
target="_parent">download area</a> under <b>Miscellaneous</b>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Visit the <a href="http://oss.sgi.com/projects/ogl-sample/" target="_parent">
|
||||
OpenGL Sample Implementation home page</a> for more information about the SI.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -151,9 +151,6 @@ You'll see a set of library files similar to this:
|
||||
lrwxrwxrwx 1 brian users 10 Mar 26 07:53 libGL.so -> libGL.so.1*
|
||||
lrwxrwxrwx 1 brian users 19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
|
||||
-rwxr-xr-x 1 brian users 3375861 Mar 26 07:53 libGL.so.1.5.060100*
|
||||
lrwxrwxrwx 1 brian users 11 Mar 26 07:53 libGLU.so -> libGLU.so.1*
|
||||
lrwxrwxrwx 1 brian users 20 Mar 26 07:53 libGLU.so.1 -> libGLU.so.1.3.060100*
|
||||
-rwxr-xr-x 1 brian users 549269 Mar 26 07:53 libGLU.so.1.3.060100*
|
||||
lrwxrwxrwx 1 brian users 14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
|
||||
lrwxrwxrwx 1 brian users 23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
|
||||
-rwxr-xr-x 1 brian users 23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
|
||||
@@ -162,8 +159,6 @@ lrwxrwxrwx 1 brian users 23 Mar 26 07:53 libOSMesa.so.6 -> libOSM
|
||||
<p>
|
||||
<b>libGL</b> is the main OpenGL library (i.e. Mesa).
|
||||
<br>
|
||||
<b>libGLU</b> is the OpenGL Utility library.
|
||||
<br>
|
||||
<b>libOSMesa</b> is the OSMesa (Off-Screen) interface library.
|
||||
</p>
|
||||
|
||||
|
@@ -95,8 +95,6 @@ Device drivers src/mesa/drivers/* MIT, generally
|
||||
|
||||
Ext headers include/GL/glext.h Khronos
|
||||
include/GL/glxext.h
|
||||
|
||||
SGI GLU library src/glu/sgi/ SGI Free B
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
|
@@ -9,6 +9,40 @@
|
||||
|
||||
<h1>News</h1>
|
||||
|
||||
<h2>February 21, 2013</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes-9.0.3.html">Mesa 9.0.3</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>January 22, 2013</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes-9.0.2.html">Mesa 9.0.2</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>November 16, 2012</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes-9.0.1.html">Mesa 9.0.1</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>October 8, 2012</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes-9.0.html">Mesa 9.0</a> is released.
|
||||
This is the first version of Mesa to support OpenGL 3.1 and GLSL 1.40
|
||||
(with the i965 driver).
|
||||
See the release notes for more information about the release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>July 10, 2012</h2>
|
||||
|
||||
<p>
|
||||
|
159
docs/relnotes-9.0.1.html
Normal file
159
docs/relnotes-9.0.1.html
Normal file
@@ -0,0 +1,159 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Mesa 9.0.1 Release Notes / November 16th, 2012</h1>
|
||||
|
||||
<p>
|
||||
Mesa 9.0.1 is a bug fix release which fixes bugs found since the 9.0 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.1. OpenGL
|
||||
3.1 is <strong>only</strong> available if requested at context creation
|
||||
because GL_ARB_compatibility is not supported.
|
||||
</p>
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
97d6554c05ea7449398afe3a0ede7018 MesaLib-9.0.1.tar.bz2
|
||||
fd0fd5a6e56bc3dd210c80e42baef975 MesaLib-9.0.1.tar.gz
|
||||
c2683d957acd530a00f747f50317186f MesaLib-9.0.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=44912">Bug 44912</a> - [bisected] WebGL conformance/textures/texture-mips tests fails</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=55856">Bug 55856</a> - kwin with gles window content is not updating (gen4)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=56057">Bug 56057</a> - INTEL_swap_event not correctly listed</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=56211">Bug 56211</a> - src/mesa/state_tracker/st_cb_texture.c:1123:copy_image_data_to_texture: Assertion `u_minify(stImage->pt->height0, src_level) == stImage->base.Height' failed.</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-9.0..mesa-9.0.1
|
||||
</pre>
|
||||
|
||||
<p>Adam Jackson (1):</p>
|
||||
<ul>
|
||||
<li>glx: Add GLXBadProfileARB to the error string list</li>
|
||||
</ul>
|
||||
|
||||
<p>Andreas Boll (7):</p>
|
||||
<ul>
|
||||
<li>docs: add news item for 9.0 release</li>
|
||||
<li>mesa: add get-pick-list.sh script into bin/</li>
|
||||
<li>mesa: add initial .cherry-ignore file for the 9.0 branch</li>
|
||||
<li>mesa: use .cherry-ignore in the get-pick-list.sh script</li>
|
||||
<li>build: add config.sub and config.guess to tarballs target</li>
|
||||
<li>build: add missing Makefile.in files to tarballs target</li>
|
||||
<li>build: add missing files to tarballs target</li>
|
||||
</ul>
|
||||
|
||||
<p>Brian Paul (2):</p>
|
||||
<ul>
|
||||
<li>mesa: don't call TexImage driver hooks for zero-sized images</li>
|
||||
<li>mesa: fix error check for zero-sized compressed subtexture</li>
|
||||
</ul>
|
||||
|
||||
<p>Fredrik Höglund (1):</p>
|
||||
<ul>
|
||||
<li>egl_dri2/x11: Fix eglPostSubBufferNV()</li>
|
||||
</ul>
|
||||
|
||||
<p>Ian Romanick (5):</p>
|
||||
<ul>
|
||||
<li>docs: Add 9.0 release md5sums</li>
|
||||
<li>i965: Fix regression in depth texture rendering on pre-SNB</li>
|
||||
<li>glx: Set sRGBCapable to a default value</li>
|
||||
<li>docs: Add 9.0.1 release notes</li>
|
||||
<li>mesa: Bump version to 9.0.1</li>
|
||||
</ul>
|
||||
|
||||
<p>Imre Deak (7):</p>
|
||||
<ul>
|
||||
<li>mesa: glGet: fix indentation of _mesa_init_get_hash</li>
|
||||
<li>mesa: glGet: fix indentation of find_value</li>
|
||||
<li>mesa: glGet: fix indentation of print_table_stats</li>
|
||||
<li>mesa: glGet: fix API check for EGL_image_external enums</li>
|
||||
<li>glapi: rename/move GL_POLYGON_OFFSET_BIAS to its extension section</li>
|
||||
<li>mesa: glGet: fix parameter lookup for apps using multiple APIs</li>
|
||||
<li>glget: fix make check for glGet GL_POLYGON_OFFSET_BIAS</li>
|
||||
</ul>
|
||||
|
||||
<p>Jonas Ådahl (1):</p>
|
||||
<ul>
|
||||
<li>wayland: Destroy frame callback when destroying surface</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (1):</p>
|
||||
<ul>
|
||||
<li>glsl: Allow ir_if in the linker's move_non_declarations function.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kristian Høgsberg (5):</p>
|
||||
<ul>
|
||||
<li>gbm: Reject buffers that are not wl_drm buffers in gbm_bo_import()</li>
|
||||
<li>gbm: Use the kms dumb ioctls for cursor instead of libkms</li>
|
||||
<li>egl/wayland: Update to Wayland 0.99 API</li>
|
||||
<li>wayland: Remove 0.85 compatibility #ifdefs</li>
|
||||
<li>wayland: Drop support for ill-defined, unused wl_egl_pixmap</li>
|
||||
</ul>
|
||||
|
||||
<p>Marcin Slusarz (1):</p>
|
||||
<ul>
|
||||
<li>nouveau: use pre-calculated stride for resource_get_handle</li>
|
||||
</ul>
|
||||
|
||||
<p>Matt Turner (4):</p>
|
||||
<ul>
|
||||
<li>egl: Return EGL_BAD_MATCH for invalid profile attributes</li>
|
||||
<li>Re-add HAVE_PTHREADS preprocessor macro</li>
|
||||
<li>build: Ship install-sh in the tarball</li>
|
||||
<li>ralloc: Annotate printf functions with PRINTFLIKE(...)</li>
|
||||
</ul>
|
||||
|
||||
<p>Michel Dänzer (2):</p>
|
||||
<ul>
|
||||
<li>st/mesa: Fix source miptree level for copying data to finalized miptree.</li>
|
||||
<li>st/mesa: Fix assertions for copying texture image to finalized miptree.</li>
|
||||
</ul>
|
||||
|
||||
<p>Owen W. Taylor (1):</p>
|
||||
<ul>
|
||||
<li>glx: Fix listing of INTEL_swap_event in glXQueryExtensionsString()</li>
|
||||
</ul>
|
||||
|
||||
<p>Quentin Glidic (1):</p>
|
||||
<ul>
|
||||
<li>intel: Add missing #include <time.h></li>
|
||||
</ul>
|
||||
|
||||
<p>Tomeu Vizoso (1):</p>
|
||||
<ul>
|
||||
<li>mesa/es: Define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT enum for all GLs</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
282
docs/relnotes-9.0.2.html
Normal file
282
docs/relnotes-9.0.2.html
Normal file
@@ -0,0 +1,282 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Mesa 9.0.2 Release Notes / January 22th, 2013</h1>
|
||||
|
||||
<p>
|
||||
Mesa 9.0.2 is a bug fix release which fixes bugs found since the 9.0.1 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.1. OpenGL
|
||||
3.1 is <strong>only</strong> available if requested at context creation
|
||||
because GL_ARB_compatibility is not supported.
|
||||
</p>
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
5ae216ca9fecfa349f14ecb83aa3f124 MesaLib-9.0.2.tar.gz
|
||||
dc45d1192203e418163e0017640e1cfc MesaLib-9.0.2.tar.bz2
|
||||
93d40ec77d656dd04b561ba203ffbb91 MesaLib-9.0.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=22576">Bug 22576</a> - [KMS] mesa demo spectex broken on rv280</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26809">Bug 26809</a> - KMS/R200: Bad shading in NWN since Mesa rewrite</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=45877">Bug 45877</a> - [bisected regression] Oglc fbo(negative.invalidParams3) Segmentation fault</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=54402">Bug 54402</a> - st_glsl_to_tgsi.cpp:4006:dst_register: Assertion `index < VERT_RESULT_MAX' failed</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=55175">Bug 55175</a> - Memoryleak with glPopAttrib only on Intel GM45</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=56442">Bug 56442</a> - glcpp accepts junk after #else/#elif/#endif tokens</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=56706">Bug 56706</a> - EGL sets error to EGL_SUCCESS when DRI driver fails to create context</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=57622">Bug 57622</a> - Webgl conformance shader-with-non-reserved-words crash.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=57842">Bug 57842</a> - r200: Culling is broken when rendering to an FBO</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=57984">Bug 57984</a> - r300g: blend sfactor=GL_DST_COLOR fails with FBOs</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=58545">Bug 58545</a> - [llvmpipe] src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c:75:analyse_src: Assertion `src->Index < (sizeof(ctx->imm)/sizeof((ctx->imm)[0]))' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59383">Bug 59383</a> - src/glsl/tests/Makefile.am missing $(top_srcdir)/include</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-9.0.1..mesa-9.0.2
|
||||
</pre>
|
||||
|
||||
<p>Abdiel Janulgue (1):</p>
|
||||
<ul>
|
||||
<li>mesa: Fix a crash in update_texture_state() for external texture type</li>
|
||||
</ul>
|
||||
|
||||
<p>Adam Jackson (4):</p>
|
||||
<ul>
|
||||
<li>glcpp: Fix visibility CFLAGS in automake</li>
|
||||
<li>glcpp: Typo fix.</li>
|
||||
<li>galahad, noop: Fix visibility CFLAGS in automake</li>
|
||||
<li>r300g: Fix visibility CFLAGS in automake</li>
|
||||
</ul>
|
||||
|
||||
<p>Alex Deucher (2):</p>
|
||||
<ul>
|
||||
<li>radeonsi: add some new SI pci ids</li>
|
||||
<li>radeonsi: add a new SI pci id</li>
|
||||
</ul>
|
||||
|
||||
<p>Ander Conselvan de Oliveira (2):</p>
|
||||
<ul>
|
||||
<li>egl/wayland: Don't invalidate drawable on swap buffers</li>
|
||||
<li>egl/wayland: Dispatch the event queue before get_buffers</li>
|
||||
<li>egl/wayland: Destroy the pending buffer callback with the egl surface</li>
|
||||
</ul>
|
||||
|
||||
<p>Andreas Boll (9):</p>
|
||||
<ul>
|
||||
<li>docs: fix release date of 9.0.1</li>
|
||||
<li>docs: add news item for 9.0.1 release</li>
|
||||
<li>Add .dirstamp to toplevel .gitignore</li>
|
||||
<li>build: use git ls-files for adding all Makefile.in into the release tarball</li>
|
||||
<li>build: Fix GLES linkage without libglapi</li>
|
||||
<li>Revert "r600g: try to fix streamout for the cases where BURST_COUNT > 0"</li>
|
||||
<li>mesa: update .cherry-ignore list</li>
|
||||
<li>mesa: Bump version to 9.0.2</li>
|
||||
<li>docs: Add 9.0.2 release notes</li>
|
||||
</ul>
|
||||
|
||||
<p>Anuj Phogat (2):</p>
|
||||
<ul>
|
||||
<li>mesa: Generate invalid operation in glGenerateMipMap for integer textures</li>
|
||||
<li>meta: Remove redundant code in _mesa_meta_GenerateMipmap</li>
|
||||
</ul>
|
||||
|
||||
<p>Ben Skeggs (3):</p>
|
||||
<ul>
|
||||
<li>nvc0: fix missing permanent bo reference on poly cache</li>
|
||||
<li>nvc0: point vertex runout at a valid address</li>
|
||||
<li>nv50: point vertex runout at a valid address</li>
|
||||
</ul>
|
||||
|
||||
<p>Brian Paul (5):</p>
|
||||
<ul>
|
||||
<li>svga: don't use uninitialized framebuffer state</li>
|
||||
<li>st/mesa: replace REALLOC() with realloc()</li>
|
||||
<li>st/mesa: free TGSI tokens with ureg_free_tokens()</li>
|
||||
<li>util: added pipe_surface_release() function</li>
|
||||
<li>gallivm: support more immediates in lp_build_tgsi_info()</li>
|
||||
</ul>
|
||||
|
||||
<p>Bryan Cain (1):</p>
|
||||
<ul>
|
||||
<li>glsl_to_tgsi: set correct register type for array and structure elements</li>
|
||||
</ul>
|
||||
|
||||
<p>Chad Versace (2):</p>
|
||||
<ul>
|
||||
<li>i965: Validate requested GLES context version in brwCreateContext</li>
|
||||
<li>egl/dri2: Set error code when dri2CreateContextAttribs fails</li>
|
||||
</ul>
|
||||
|
||||
<p>Chris Fester (1):</p>
|
||||
<ul>
|
||||
<li>util: null-out the node's prev/next pointers in list_del()</li>
|
||||
</ul>
|
||||
|
||||
<p>Christoph Bumiller (5):</p>
|
||||
<ul>
|
||||
<li>nv50/ir/tgsi: fix srcMask for TXP with SHADOW1D</li>
|
||||
<li>nvc0: add missing call to map edge flag in push_vbo</li>
|
||||
<li>nv50/ir: wrap assertion using typeid in #ifndef NDEBUG</li>
|
||||
<li>nouveau: fix undefined behaviour when testing sample_count</li>
|
||||
<li>nv50/ir: restore use of long immediate encodings</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (5):</p>
|
||||
<ul>
|
||||
<li>r600g: fix lod bias/explicit lod with cube maps.</li>
|
||||
<li>glsl_to_tgsi: fix dst register for texturing fetches.</li>
|
||||
<li>glsl: fix cut-n-paste error in error handling. (v2)</li>
|
||||
<li>glsl: initialise killed_all field.</li>
|
||||
<li>glsl: fix uninitialised variable from constructor</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (4):</p>
|
||||
<ul>
|
||||
<li>mesa: Fix the core GL genned-name handling for glBindBufferBase()/Range().</li>
|
||||
<li>mesa: Fix core GL genned-name handling for glBeginQuery().</li>
|
||||
<li>mesa: Fix segfault on reading from a missing color read buffer.</li>
|
||||
<li>i965/gen4: Fix memory leak each time compile_gs_prog() is called.</li>
|
||||
</ul>
|
||||
|
||||
<p>Ian Romanick (2):</p>
|
||||
<ul>
|
||||
<li>docs: Add 9.0.1 release md5sums</li>
|
||||
<li>glsl: Don't add structure fields to the symbol table</li>
|
||||
</ul>
|
||||
|
||||
<p>Johannes Obermayr (4):</p>
|
||||
<ul>
|
||||
<li>clover: Install CL headers.</li>
|
||||
<li>gallium/auxiliary: Add -fno-rtti to CXXFLAGS on LLVM >= 3.2.</li>
|
||||
<li>clover: Adapt libclc's INCLUDEDIR and LIBEXECDIR to make use of the new introduced libclc.pc.</li>
|
||||
<li>tests: AM_CPPFLAGS must include $(top_srcdir) instead of $(top_builddir).</li>
|
||||
</ul>
|
||||
|
||||
<p>Jonas Ådahl (1):</p>
|
||||
<ul>
|
||||
<li>wayland: Don't cancel a roundtrip when any event is received</li>
|
||||
</ul>
|
||||
|
||||
<p>José Fonseca (1):</p>
|
||||
<ul>
|
||||
<li>llvmpipe: Obey back writemask.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (8):</p>
|
||||
<ul>
|
||||
<li>i965/vs: Fix unit mismatch in scratch base_offset parameter.</li>
|
||||
<li>i965/vs: Implement register spilling.</li>
|
||||
<li>mesa: Don't flatten IF statements by default.</li>
|
||||
<li>glcpp: Don't use infinite lookhead for #define differentiation.</li>
|
||||
<li>i965/vs: Don't lose the MRF writemask when doing compute-to-MRF.</li>
|
||||
<li>i965/vs: Preserve the type when copy propagating into an instruction.</li>
|
||||
<li>mesa: Fix glGetVertexAttribI[u]iv now that we have real integer attribs.</li>
|
||||
<li>i965: Fix AA Line Distance Mode in 3DSTATE_SF on Ivybridge.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kristian Høgsberg (1):</p>
|
||||
<ul>
|
||||
<li>egl/wayland: Add invalidate back in eglSwapBuffers()</li>
|
||||
</ul>
|
||||
|
||||
<p>Maarten Lankhorst (2):</p>
|
||||
<ul>
|
||||
<li>makefiles: use configured name for -ldrm* where possible</li>
|
||||
<li>automake: strip LLVM_CXXFLAGS and LLVM_CPPFLAGS too</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (17):</p>
|
||||
<ul>
|
||||
<li>st/mesa: fix integer texture border color for some formats (v2)</li>
|
||||
<li>r300g: fix texture border color for sRGB formats</li>
|
||||
<li>mesa: bump MAX_VARYING to 32</li>
|
||||
<li>draw: fix assertion failure in draw_emit_vertex_attr</li>
|
||||
<li>vbo: fix glVertexAttribI* functions</li>
|
||||
<li>mesa: add MaxNumLevels to gl_texture_image, remove MaxLog2</li>
|
||||
<li>mesa: fix error checking of TexStorage(levels) for array and rect textures</li>
|
||||
<li>st/mesa: fix guessing the base level size</li>
|
||||
<li>st/mesa: fix computation of last_level during texture creation</li>
|
||||
<li>st/mesa: fix computation of last_level in GenerateMipmap</li>
|
||||
<li>r600g: fix streamout on RS780 and RS880</li>
|
||||
<li>r600g: advertise 32 streamout vec4 outputs</li>
|
||||
<li>r600g: fix broken streamout if streamout_begin caused a context flush</li>
|
||||
<li>mesa: fix BlitFramebuffer between linear and sRGB formats</li>
|
||||
<li>r600g: try to fix streamout for the cases where BURST_COUNT > 0</li>
|
||||
<li>r600g: always use a tiled resource as the destination of MSAA resolve</li>
|
||||
<li>mesa: add MaxNumLevels to gl_texture_image, remove MaxLog2</li>
|
||||
</ul>
|
||||
|
||||
<p>Mario Kleiner (1):</p>
|
||||
<ul>
|
||||
<li>mesa: Don't glPopAttrib() GL_POINT_SPRITE_COORD_ORIGIN on < OpenGL-2.0</li>
|
||||
</ul>
|
||||
|
||||
<p>Matt Turner (1):</p>
|
||||
<ul>
|
||||
<li>glcpp: Reject garbage after #else and #endif tokens</li>
|
||||
</ul>
|
||||
|
||||
<p>Stefan Dösinger (1):</p>
|
||||
<ul>
|
||||
<li>r300: Don't disable destination read if the src blend factor needs it</li>
|
||||
</ul>
|
||||
|
||||
<p>Tapani Pälli (1):</p>
|
||||
<ul>
|
||||
<li>android: generate matching remap_helper to dispatch table</li>
|
||||
</ul>
|
||||
|
||||
<p>Tom Stellard (1):</p>
|
||||
<ul>
|
||||
<li>r600g: Use LOOP_START_DX10 for loops</li>
|
||||
</ul>
|
||||
|
||||
<p>Vinson Lee (1):</p>
|
||||
<ul>
|
||||
<li>i915: Fix wrong sizeof argument in i915_update_tex_unit.</li>
|
||||
</ul>
|
||||
|
||||
<p>smoki (2):</p>
|
||||
<ul>
|
||||
<li>r200: fix broken tcl lighting</li>
|
||||
<li>radeon/r200: Fix tcl culling</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
239
docs/relnotes-9.0.3.html
Normal file
239
docs/relnotes-9.0.3.html
Normal file
@@ -0,0 +1,239 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Mesa 9.0.3 Release Notes / February 21th, 2013</h1>
|
||||
|
||||
<p>
|
||||
Mesa 9.0.3 is a bug fix release which fixes bugs found since the 9.0.2 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.1. OpenGL
|
||||
3.1 is <strong>only</strong> available if requested at context creation
|
||||
because GL_ARB_compatibility is not supported.
|
||||
</p>
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
168384ac0101f4600a15edd3561acdc7 MesaLib-9.0.3.tar.gz
|
||||
d7515cc5116c72ac63d735655bd63689 MesaLib-9.0.3.tar.bz2
|
||||
a2e1c794572440fd0d839a7d7dfea00c MesaLib-9.0.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=25201">Bug 25201</a> - Pink artifacts on objects in the distance in ETQW/Quake 4</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31598">Bug 31598</a> - configure: Doesn't check for python libxml2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=40404">Bug 40404</a> - [softpipe] piglit glsl-max-varyings regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=47220">Bug 47220</a> - [bisected] Oglc pxconv-gettex(basic.allCases) regressed</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=48629">Bug 48629</a> - [bisected i965]Oglc shad-compiler(advanced.TestLessThani) regressed</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=54240">Bug 54240</a> - [swrast] piglit fbo-generatemipmap-filtering regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=56920">Bug 56920</a> - [sandybridge][uxa] graphics very glitchy and always flickering</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=57166">Bug 57166</a> - [GM45] Chrome experiment "Stars" crash: brw_fs_emit.cpp:708: brw_reg brw_reg_from_fs_reg(fs_reg*): Assertion „!"not reached"“ failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=57746">Bug 57746</a> - build test failure: nouveau_fbo.c:198:3: error: too few arguments to function 'nouveau_renderbuffer_del'</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=57754">Bug 57754</a> - [swrast] Mesa 9.1-devel implementation error: Unable to delete renderbuffer, no context</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=58680">Bug 58680</a> - [IVB] Graphical glitches in 0 A.D</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=58972">Bug 58972</a> - [softpipe] util/u_tile.c:795:pipe_put_tile_z: Assertion `0' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59364">Bug 59364</a> - [bisected] Mesa build fails: clientattrib.c:33:22: fatal error: indirect.h: No such file or directory</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59700">Bug 59700</a> - [ILK/SNB/IVB Bisected]Oglc vertexshader(advanced.TestLightsTwoSided) causes GPU hung</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59873">Bug 59873</a> - [swrast] piglit ext_framebuffer_multisample-interpolation 0 centroid-edges regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60052">Bug 60052</a> - [Bisected]Piglit glx_extension_string_sanity fail</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60172">Bug 60172</a> - Planeshift: triangles where grass would be</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-9.0.2..mesa-9.0.3
|
||||
</pre>
|
||||
|
||||
<p>Adam Jackson (1):</p>
|
||||
<ul>
|
||||
<li>r200: Fix probable thinko in r200EmitArrays</li>
|
||||
</ul>
|
||||
|
||||
<p>Andreas Boll (7):</p>
|
||||
<ul>
|
||||
<li>docs: Add 9.0.2 release md5sums</li>
|
||||
<li>docs: add news item for 9.0.2 release</li>
|
||||
<li>configure.ac: Allow OpenGL ES1 and ES2 only with enabled OpenGL</li>
|
||||
<li>build: require python module libxml2</li>
|
||||
<li>cherry-ignore: Ignore candidates for the 9.1 branch.</li>
|
||||
<li>mesa: Bump version to 9.0.3</li>
|
||||
<li>docs: Add 9.0.3 release notes</li>
|
||||
</ul>
|
||||
|
||||
<p>Anuj Phogat (1):</p>
|
||||
<ul>
|
||||
<li>mesa: Fix GL_LUMINANCE handling for textures in glGetTexImage</li>
|
||||
</ul>
|
||||
|
||||
<p>Brian Paul (29):</p>
|
||||
<ul>
|
||||
<li>st/glx: accept GLX_SAMPLE_BUFFERS/SAMPLES_ARB == 0</li>
|
||||
<li>draw: set precalc_flat flag for AA lines too</li>
|
||||
<li>softpipe: fix up FS variant unbinding / deletion</li>
|
||||
<li>softpipe: fix unreliable FS variant binding bug</li>
|
||||
<li>xlib: handle _mesa_initialize_visual()'s return value</li>
|
||||
<li>xlib: allow GLX_DONT_CARE for glXChooseFBConfig() attribute values</li>
|
||||
<li>st/glx: allow GLX_DONT_CARE for glXChooseFBConfig() attribute values</li>
|
||||
<li>util: fix addressing bug in pipe_put_tile_z() for PIPE_FORMAT_Z32_FLOAT</li>
|
||||
<li>util: add get/put_tile_z() support for PIPE_FORMAT_Z32_FLOAT_S8X24_UINT</li>
|
||||
<li>mesa: use GLbitfield64 when copying program inputs</li>
|
||||
<li>svga: add NULL pointer check in svga_create_sampler_state()</li>
|
||||
<li>vbo: add a null pointer check to handle OOM instead of crashing</li>
|
||||
<li>osmesa: use _mesa_generate_mipmap() for mipmap generation, not meta</li>
|
||||
<li>xlib: use _mesa_generate_mipmap() for mipmap generation, not meta</li>
|
||||
<li>st/mesa: set ctx->Const.MaxSamples = 0, not 1</li>
|
||||
<li>mesa: fix-up and use _mesa_delete_renderbuffer()</li>
|
||||
<li>mesa: pass context parameter to gl_renderbuffer::Delete()</li>
|
||||
<li>st/mesa: fix context use-after-free problem in st_renderbuffer_delete()</li>
|
||||
<li>dri_glx: fix use after free report</li>
|
||||
<li>mesa: remove warning message in _mesa_reference_renderbuffer_()</li>
|
||||
<li>st/mesa: add null pointer check in st_renderbuffer_delete()</li>
|
||||
<li>util: add some defensive coding in u_upload_alloc()</li>
|
||||
<li>st/mesa: do proper error checking for u_upload_alloc() calls</li>
|
||||
<li>util: add new error checking code in vbuf helper</li>
|
||||
<li>mesa: don't enable GL_EXT_framebuffer_multisample for software drivers</li>
|
||||
<li>st/mesa: only enable GL_EXT_framebuffer_multisample if GL_MAX_SAMPLES >= 2</li>
|
||||
<li>mesa: don't expose IBM_rasterpos_clip in a core context</li>
|
||||
<li>svga: fix sRGB rendering</li>
|
||||
<li>nouveau: Fix build.</li>
|
||||
</ul>
|
||||
|
||||
<p>Chad Versace (1):</p>
|
||||
<ul>
|
||||
<li>i965/disasm: Fix horizontal stride of dest registers</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (5):</p>
|
||||
<ul>
|
||||
<li>i965/fs: Fix the gen6-specific if handling for 80ecb8f15b9ad7d6edc</li>
|
||||
<li>i965/fs: Don't generate saturates over existing variable values.</li>
|
||||
<li>i965: Actually add support for GL_ANY_SAMPLES_PASSED from GL_ARB_oq2.</li>
|
||||
<li>i965/vs: Try again when we've successfully spilled a reg.</li>
|
||||
<li>i965/gen7: Set up all samplers even if samplers are sparsely used.</li>
|
||||
</ul>
|
||||
|
||||
<p>Frank Henigman (1):</p>
|
||||
<ul>
|
||||
<li>mesa: add bounds checking for uniform array access</li>
|
||||
</ul>
|
||||
|
||||
<p>Jerome Glisse (1):</p>
|
||||
<ul>
|
||||
<li>r600g: add cs memory usage accounting and limit it v3 (backport for mesa 9.0)</li>
|
||||
</ul>
|
||||
|
||||
<p>Jordan Justen (1):</p>
|
||||
<ul>
|
||||
<li>unpack: support unpacking MESA_FORMAT_ARGB2101010</li>
|
||||
</ul>
|
||||
|
||||
<p>José Fonseca (2):</p>
|
||||
<ul>
|
||||
<li>mesa/st: Don't use 4bits for GL_UNSIGNED_BYTE_3_3_2(_REV)</li>
|
||||
<li>draw: Properly limit vertex buffer fetches on draw arrays.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (19):</p>
|
||||
<ul>
|
||||
<li>i965: Fix primitive restart on Haswell.</li>
|
||||
<li>i965: Refactor texture swizzle generation into a helper.</li>
|
||||
<li>i965: Do texture swizzling in hardware on Haswell.</li>
|
||||
<li>i965: Lower textureGrad() with samplerCubeShadow.</li>
|
||||
<li>i965: Use Haswell's sample_d_c for textureGrad with shadow samplers.</li>
|
||||
<li>i965: Add chipset limits for Haswell GT1/GT2.</li>
|
||||
<li>cherry-ignore: Ignore i965 guardband bug fixes.</li>
|
||||
<li>i965: Add missing _NEW_BUFFERS dirty bit in Gen7 SBE state.</li>
|
||||
<li>i965/vs: Create a 'lod_type' temporary for ir->lod_info.lod->type.</li>
|
||||
<li>i965/vs: Set LOD to 0 for ordinary texture() calls.</li>
|
||||
<li>i965/vs: Store texturing results into a vec4 temporary.</li>
|
||||
<li>cherry-ignore: Ignore candidates for the 9.1 branch.</li>
|
||||
<li>mesa: Disable GL_NV_primitive_restart extension in core contexts.</li>
|
||||
<li>glsl: Track UBO block names in the symbol table.</li>
|
||||
<li>build: Fix build on systems where /usr/bin/python isn't python 2.</li>
|
||||
<li>i965: Refactor Gen6+ SF attribute override code.</li>
|
||||
<li>i965: Compute the maximum SF source attribute.</li>
|
||||
<li>i965: Fix the SF Vertex URB Read Length calculation for Sandybridge.</li>
|
||||
<li>i965: Fix the SF Vertex URB Read Length calculation for Gen7 platforms.</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (3):</p>
|
||||
<ul>
|
||||
<li>r600g: fix int->bool conversion in fence_signalled</li>
|
||||
<li>gallium/u_upload_mgr: fix a serious memory leak</li>
|
||||
<li>r300g: fix blending with blend color and RGBA formats</li>
|
||||
</ul>
|
||||
|
||||
<p>Matt Turner (3):</p>
|
||||
<ul>
|
||||
<li>mesa: Return 0 for XFB_VARYING_MAX_LENGTH if no varyings</li>
|
||||
<li>mesa: Set transform feedback's default buffer mode to INTERLEAVED_ATTRIBS</li>
|
||||
<li>mesa/uniform_query: Don't write to *params if there is an error</li>
|
||||
</ul>
|
||||
|
||||
<p>Michel Dänzer (1):</p>
|
||||
<ul>
|
||||
<li>configure.ac: GLX cannot work without OpenGL</li>
|
||||
</ul>
|
||||
|
||||
<p>Paul Berry (1):</p>
|
||||
<ul>
|
||||
<li>mesa: Allow glReadBuffer(GL_NONE) for winsys framebuffers.</li>
|
||||
</ul>
|
||||
|
||||
<p>Roland Scheidegger (1):</p>
|
||||
<ul>
|
||||
<li>softpipe: fix using optimized filter function</li>
|
||||
</ul>
|
||||
|
||||
<p>Stefan Dösinger (3):</p>
|
||||
<ul>
|
||||
<li>meta: Disable GL_FRAGMENT_SHADER_ATI in MESA_META_SHADER</li>
|
||||
<li>radeon: Initialize swrast before setting limits</li>
|
||||
<li>r200: Initialize swrast before setting limits</li>
|
||||
</ul>
|
||||
|
||||
<p>Zack Rusin (2):</p>
|
||||
<ul>
|
||||
<li>glx: only advertise GLX_INTEL_swap_event if it's supported</li>
|
||||
<li>DRI2: Don't disable GLX_INTEL_swap_event unconditionally</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -7,7 +7,7 @@
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Mesa 9.0 Release Notes / date TBD</h1>
|
||||
<h1>Mesa 9.0 Release Notes / October 8th, 2012</h1>
|
||||
|
||||
<p>
|
||||
Mesa 9.0 is a new development release.
|
||||
@@ -26,7 +26,9 @@ because GL_ARB_compatibility is not supported.
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
tbd
|
||||
be4cd34c6599a7cb9d254b05c48bdb1f MesaLib-9.0.tar.gz
|
||||
60e557ce407be3732711da484ab3db6c MesaLib-9.0.tar.bz2
|
||||
16b128544cd3f7e237927bb9f8aab7ce MesaLib-9.0.zip
|
||||
</pre>
|
||||
|
||||
|
||||
@@ -37,10 +39,14 @@ Note: some of the new features are only available with certain drivers.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>Added new Gallium3D - nv30 driver</li>
|
||||
<li>Added new Gallium3D - radeonsi driver</li>
|
||||
<li>Added OpenCL state tracker Clover</li>
|
||||
<li>Completed VDPAU state tracker (video decoding support is currently limited to MPEG1 and MPEG2)</li>
|
||||
<li>GL_ARB_base_instance</li>
|
||||
<li>GL_ARB_blend_func_extended</li>
|
||||
<li>GL_ARB_debug_output</li>
|
||||
<li>GL_ARB_invalidate_subdate - Currently a "no-op" implementation. This
|
||||
<li>GL_ARB_invalidate_subdata - Currently a "no-op" implementation. This
|
||||
extension is always enabled in all drivers.</li>
|
||||
<li>GL_ARB_shader_bit_encoding</li>
|
||||
<li>GL_ARB_texture_buffer_object</li>
|
||||
@@ -52,6 +58,7 @@ extension is always enabled in all drivers.</li>
|
||||
<li>GL_EXT_read_format_bgra for ES 1.1 and 2.0</li>
|
||||
<li>GL_EXT_texture_rg for ES 2.x</li>
|
||||
<li>GL_NV_read_buffer for ES 2.0</li>
|
||||
<li>GLX_ARB_create_context_robustness</li>
|
||||
<li>EGL_KHR_create_context</li>
|
||||
<li>EGL_KHR_surfaceless_context - This replaces the
|
||||
EGL_KHR_surfaceless_{gles1,gles2,opengl} extensions that were never approved
|
||||
@@ -67,10 +74,18 @@ by Khronos.</li>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>
|
||||
The legacy/static Makefile system (ex: 'make linux-dri') has been removed.
|
||||
<br>
|
||||
The two supported build methods are now autoconf/automake and SCons.
|
||||
</p>
|
||||
</li>
|
||||
<li>Removed support for GL_ARB_shadow_ambient extension</li>
|
||||
<li>Removed Gallium3D - nvfx driver (use nv30 instead)</li>
|
||||
<li>
|
||||
libGLU has been moved into its own repository, found at <a href="http://cgit.freedesktop.org/mesa/glu/">http://cgit.freedesktop.org/mesa/glu/</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</body>
|
||||
|
@@ -14,12 +14,17 @@ The release notes summarize what's new or changed in each Mesa release.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="relnotes-8.1.html">8.1 release notes</a>
|
||||
<li><a href="relnotes-9.0.3.html">9.0.3 release notes</a>
|
||||
<li><a href="relnotes-9.0.2.html">9.0.2 release notes</a>
|
||||
<li><a href="relnotes-9.0.1.html">9.0.1 release notes</a>
|
||||
<li><a href="relnotes-9.0.html">9.0 release notes</a>
|
||||
<li><a href="relnotes-8.0.4.html">8.0.4 release notes</a>
|
||||
<li><a href="relnotes-8.0.3.html">8.0.3 release notes</a>
|
||||
<li><a href="relnotes-8.0.2.html">8.0.2 release notes</a>
|
||||
<li><a href="relnotes-8.0.1.html">8.0.1 release notes</a>
|
||||
<li><a href="relnotes-8.0.html">8.0 release notes</a>
|
||||
<li><a href="relnotes-7.11.2.html">7.11.2 release notes</a>
|
||||
<li><a href="relnotes-7.11.1.html">7.11.1 release notes</a>
|
||||
<li><a href="relnotes-7.11.html">7.11 release notes</a>
|
||||
<li><a href="relnotes-7.10.3.html">7.10.3 release notes</a>
|
||||
<li><a href="relnotes-7.10.2.html">7.10.2 release notes</a>
|
||||
|
@@ -146,11 +146,6 @@ each directory.
|
||||
</ul>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><b>glu</b> - The OpenGL Utility library
|
||||
<ul>
|
||||
<li><b>sgi</b> - GLU from SGI
|
||||
<li><b>mesa</b> - Mesa version of GLU (deprecated)
|
||||
</ul>
|
||||
<li><b>glx</b> - The GLX library code for building libGL. This is used for
|
||||
direct rendering drivers. It will dynamically load one of the
|
||||
xxx_dri.so drivers.
|
||||
|
@@ -29,9 +29,9 @@ extern "C" {
|
||||
*/
|
||||
|
||||
/* Header file version number, required by OpenGL ABI for Linux */
|
||||
/* glext.h last updated $Date: 2012-08-06 02:01:01 -0700 (Mon, 06 Aug 2012) $ */
|
||||
/* glext.h last updated $Date: 2012-09-19 19:02:24 -0700 (Wed, 19 Sep 2012) $ */
|
||||
/* Current version at http://www.opengl.org/registry/ */
|
||||
#define GL_GLEXT_VERSION 83
|
||||
#define GL_GLEXT_VERSION 85
|
||||
/* Function declaration macros - to move into glplatform.h */
|
||||
|
||||
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
||||
@@ -88,9 +88,6 @@ extern "C" {
|
||||
#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
|
||||
#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
|
||||
#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
|
||||
#endif
|
||||
|
||||
#ifndef GL_VERSION_1_2_DEPRECATED
|
||||
#define GL_RESCALE_NORMAL 0x803A
|
||||
#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
|
||||
#define GL_SINGLE_COLOR 0x81F9
|
||||
@@ -110,9 +107,6 @@ extern "C" {
|
||||
#define GL_BLEND_EQUATION 0x8009
|
||||
#define GL_FUNC_SUBTRACT 0x800A
|
||||
#define GL_FUNC_REVERSE_SUBTRACT 0x800B
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_imaging_DEPRECATED
|
||||
#define GL_CONVOLUTION_1D 0x8010
|
||||
#define GL_CONVOLUTION_2D 0x8011
|
||||
#define GL_SEPARABLE_2D 0x8012
|
||||
@@ -239,9 +233,6 @@ extern "C" {
|
||||
#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
|
||||
#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
|
||||
#define GL_CLAMP_TO_BORDER 0x812D
|
||||
#endif
|
||||
|
||||
#ifndef GL_VERSION_1_3_DEPRECATED
|
||||
#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
|
||||
#define GL_MAX_TEXTURE_UNITS 0x84E2
|
||||
#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
|
||||
@@ -298,9 +289,6 @@ extern "C" {
|
||||
#define GL_TEXTURE_DEPTH_SIZE 0x884A
|
||||
#define GL_TEXTURE_COMPARE_MODE 0x884C
|
||||
#define GL_TEXTURE_COMPARE_FUNC 0x884D
|
||||
#endif
|
||||
|
||||
#ifndef GL_VERSION_1_4_DEPRECATED
|
||||
#define GL_POINT_SIZE_MIN 0x8126
|
||||
#define GL_POINT_SIZE_MAX 0x8127
|
||||
#define GL_POINT_DISTANCE_ATTENUATION 0x8129
|
||||
@@ -354,9 +342,7 @@ extern "C" {
|
||||
#define GL_DYNAMIC_READ 0x88E9
|
||||
#define GL_DYNAMIC_COPY 0x88EA
|
||||
#define GL_SAMPLES_PASSED 0x8914
|
||||
#endif
|
||||
|
||||
#ifndef GL_VERSION_1_5_DEPRECATED
|
||||
#define GL_SRC1_ALPHA 0x8589
|
||||
#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896
|
||||
#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897
|
||||
#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898
|
||||
@@ -378,7 +364,6 @@ extern "C" {
|
||||
#define GL_SRC1_RGB 0x8581
|
||||
#define GL_SRC2_RGB 0x8582
|
||||
#define GL_SRC0_ALPHA 0x8588
|
||||
#define GL_SRC1_ALPHA 0x8589
|
||||
#define GL_SRC2_ALPHA 0x858A
|
||||
#endif
|
||||
|
||||
@@ -463,9 +448,6 @@ extern "C" {
|
||||
#define GL_STENCIL_BACK_REF 0x8CA3
|
||||
#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
|
||||
#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
|
||||
#endif
|
||||
|
||||
#ifndef GL_VERSION_2_0_DEPRECATED
|
||||
#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
|
||||
#define GL_POINT_SPRITE 0x8861
|
||||
#define GL_COORD_REPLACE 0x8862
|
||||
@@ -489,9 +471,6 @@ extern "C" {
|
||||
#define GL_SRGB8_ALPHA8 0x8C43
|
||||
#define GL_COMPRESSED_SRGB 0x8C48
|
||||
#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
|
||||
#endif
|
||||
|
||||
#ifndef GL_VERSION_2_1_DEPRECATED
|
||||
#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
|
||||
#define GL_SLUMINANCE_ALPHA 0x8C44
|
||||
#define GL_SLUMINANCE8_ALPHA8 0x8C45
|
||||
@@ -726,9 +705,6 @@ extern "C" {
|
||||
/* reuse GL_RG32UI */
|
||||
/* Reuse tokens from ARB_vertex_array_object */
|
||||
/* reuse GL_VERTEX_ARRAY_BINDING */
|
||||
#endif
|
||||
|
||||
#ifndef GL_VERSION_3_0_DEPRECATED
|
||||
#define GL_CLAMP_VERTEX_COLOR 0x891A
|
||||
#define GL_CLAMP_FRAGMENT_COLOR 0x891B
|
||||
#define GL_ALPHA_INTEGER 0x8D97
|
||||
@@ -749,7 +725,6 @@ extern "C" {
|
||||
#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
|
||||
#define GL_TEXTURE_BINDING_BUFFER 0x8C2C
|
||||
#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
|
||||
#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E
|
||||
#define GL_TEXTURE_RECTANGLE 0x84F5
|
||||
#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6
|
||||
#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7
|
||||
@@ -1015,6 +990,7 @@ extern "C" {
|
||||
/* reuse GL_MEDIUM_INT */
|
||||
/* reuse GL_HIGH_INT */
|
||||
/* reuse GL_SHADER_COMPILER */
|
||||
/* reuse GL_SHADER_BINARY_FORMATS */
|
||||
/* reuse GL_NUM_SHADER_BINARY_FORMATS */
|
||||
/* reuse GL_MAX_VERTEX_UNIFORM_VECTORS */
|
||||
/* reuse GL_MAX_VARYING_VECTORS */
|
||||
@@ -2030,9 +2006,6 @@ extern "C" {
|
||||
#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
|
||||
#define GL_MAX_SAMPLES 0x8D57
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_framebuffer_object_DEPRECATED
|
||||
#define GL_INDEX 0x8222
|
||||
#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14
|
||||
#define GL_TEXTURE_INTENSITY_TYPE 0x8C15
|
||||
@@ -2264,6 +2237,7 @@ extern "C" {
|
||||
#ifndef GL_ARB_texture_gather
|
||||
#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
|
||||
#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
|
||||
#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_texture_query_lod
|
||||
@@ -2441,6 +2415,7 @@ extern "C" {
|
||||
#define GL_MEDIUM_INT 0x8DF4
|
||||
#define GL_HIGH_INT 0x8DF5
|
||||
#define GL_SHADER_COMPILER 0x8DFA
|
||||
#define GL_SHADER_BINARY_FORMATS 0x8DF8
|
||||
#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
|
||||
#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
|
||||
#define GL_MAX_VARYING_VECTORS 0x8DFC
|
||||
@@ -2744,6 +2719,7 @@ extern "C" {
|
||||
#define GL_PROGRAM_PIPELINE 0x82E4
|
||||
#define GL_SAMPLER 0x82E6
|
||||
#define GL_DISPLAY_LIST 0x82E7
|
||||
/* DISPLAY_LIST used in compatibility profile only */
|
||||
#define GL_MAX_LABEL_LENGTH 0x82E8
|
||||
#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
|
||||
#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
|
||||
@@ -2787,33 +2763,25 @@ extern "C" {
|
||||
#ifndef GL_ARB_copy_image
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_debug_group
|
||||
/* reuse GL_DEBUG_TYPE_MARKER */
|
||||
/* reuse GL_DEBUG_TYPE_PUSH_GROUP */
|
||||
/* reuse GL_DEBUG_TYPE_POP_GROUP */
|
||||
/* reuse GL_DEBUG_SEVERITY_NOTIFICATION */
|
||||
/* reuse GL_MAX_DEBUG_GROUP_STACK_DEPTH */
|
||||
/* reuse GL_DEBUG_GROUP_STACK_DEPTH */
|
||||
/* reuse GL_STACK_UNDERFLOW */
|
||||
/* reuse GL_STACK_OVERFLOW */
|
||||
#ifndef GL_ARB_texture_view
|
||||
#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
|
||||
#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
|
||||
#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
|
||||
#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
|
||||
#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_debug_label
|
||||
/* reuse GL_BUFFER */
|
||||
/* reuse GL_SHADER */
|
||||
/* reuse GL_PROGRAM */
|
||||
/* reuse GL_QUERY */
|
||||
/* reuse GL_PROGRAM_PIPELINE */
|
||||
/* reuse GL_SAMPLER */
|
||||
/* DISPLAY_LIST used in compatibility profile only */
|
||||
/* reuse GL_DISPLAY_LIST */
|
||||
/* reuse GL_MAX_LABEL_LENGTH */
|
||||
/* reuse GL_VERTEX_ARRAY */
|
||||
#ifndef GL_ARB_vertex_attrib_binding
|
||||
#define GL_VERTEX_ATTRIB_BINDING 0x82D4
|
||||
#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
|
||||
#define GL_VERTEX_BINDING_DIVISOR 0x82D6
|
||||
#define GL_VERTEX_BINDING_OFFSET 0x82D7
|
||||
#define GL_VERTEX_BINDING_STRIDE 0x82D8
|
||||
#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
|
||||
#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_debug_output2
|
||||
/* reuse GL_CONTEXT_FLAG_DEBUG_BIT */
|
||||
/* reuse GL_DEBUG_OUTPUT */
|
||||
#ifndef GL_ARB_robustness_isolation
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_ES3_compatibility
|
||||
@@ -3050,7 +3018,7 @@ extern "C" {
|
||||
#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
|
||||
#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
|
||||
#define GL_SHADER_STORAGE_BARRIER_BIT 0x2000
|
||||
#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS
|
||||
#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS
|
||||
/* reuse GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS */
|
||||
#endif
|
||||
|
||||
@@ -3070,27 +3038,6 @@ extern "C" {
|
||||
#ifndef GL_ARB_texture_storage_multisample
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_texture_view
|
||||
#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
|
||||
#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
|
||||
#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
|
||||
#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
|
||||
#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_vertex_attrib_binding
|
||||
#define GL_VERTEX_ATTRIB_BINDING 0x82D4
|
||||
#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
|
||||
#define GL_VERTEX_BINDING_DIVISOR 0x82D6
|
||||
#define GL_VERTEX_BINDING_OFFSET 0x82D7
|
||||
#define GL_VERTEX_BINDING_STRIDE 0x82D8
|
||||
#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
|
||||
#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_robustness_isolation
|
||||
#endif
|
||||
|
||||
#ifndef GL_EXT_abgr
|
||||
#define GL_ABGR_EXT 0x8000
|
||||
#endif
|
||||
@@ -4947,6 +4894,8 @@ extern "C" {
|
||||
#define GL_RGB4_S3TC 0x83A1
|
||||
#define GL_RGBA_S3TC 0x83A2
|
||||
#define GL_RGBA4_S3TC 0x83A3
|
||||
#define GL_RGBA_DXT5_S3TC 0x83A4
|
||||
#define GL_RGBA4_DXT5_S3TC 0x83A5
|
||||
#endif
|
||||
|
||||
#ifndef GL_ATI_draw_buffers
|
||||
@@ -4970,7 +4919,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef GL_ATI_pixel_format_float
|
||||
#define GL_TYPE_RGBA_FLOAT_ATI 0x8820
|
||||
#define GL_RGBA_FLOAT_MODE_ATI 0x8820
|
||||
#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
|
||||
#endif
|
||||
|
||||
@@ -5430,7 +5379,7 @@ extern "C" {
|
||||
#define GL_PRIMITIVES_GENERATED_NV 0x8C87
|
||||
#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
|
||||
#define GL_RASTERIZER_DISCARD_NV 0x8C89
|
||||
#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A
|
||||
#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
|
||||
#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
|
||||
#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
|
||||
#define GL_SEPARATE_ATTRIBS_NV 0x8C8D
|
||||
@@ -5947,6 +5896,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef GL_AMD_debug_output
|
||||
#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143
|
||||
#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144
|
||||
#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145
|
||||
#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146
|
||||
@@ -6176,6 +6126,18 @@ extern "C" {
|
||||
#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194
|
||||
#endif
|
||||
|
||||
#ifndef GL_AMD_sparse_texture
|
||||
#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195
|
||||
#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196
|
||||
#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197
|
||||
#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198
|
||||
#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
|
||||
#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
|
||||
#define GL_MIN_SPARSE_LEVEL_AMD 0x919B
|
||||
#define GL_MIN_LOD_WARNING_AMD 0x919C
|
||||
#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************/
|
||||
|
||||
@@ -6292,18 +6254,6 @@ GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end,
|
||||
GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
|
||||
GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
|
||||
GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
|
||||
typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
|
||||
typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
|
||||
typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
|
||||
typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
#endif
|
||||
|
||||
#ifndef GL_VERSION_1_2_DEPRECATED
|
||||
#define GL_VERSION_1_2_DEPRECATED 1
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
|
||||
GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);
|
||||
GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);
|
||||
@@ -6337,6 +6287,12 @@ GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean si
|
||||
GLAPI void APIENTRY glResetHistogram (GLenum target);
|
||||
GLAPI void APIENTRY glResetMinmax (GLenum target);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
|
||||
typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
|
||||
typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
|
||||
typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
|
||||
typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
|
||||
typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
|
||||
typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
|
||||
@@ -6383,21 +6339,6 @@ GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint
|
||||
GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
|
||||
GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
|
||||
GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
|
||||
typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
|
||||
#endif
|
||||
|
||||
#ifndef GL_VERSION_1_3_DEPRECATED
|
||||
#define GL_VERSION_1_3_DEPRECATED 1
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glClientActiveTexture (GLenum texture);
|
||||
GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s);
|
||||
GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v);
|
||||
@@ -6436,6 +6377,15 @@ GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m);
|
||||
GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m);
|
||||
GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
|
||||
typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
|
||||
typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
|
||||
typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
|
||||
typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
|
||||
typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
|
||||
@@ -6485,19 +6435,6 @@ GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
|
||||
GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
|
||||
GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
|
||||
GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
|
||||
typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
|
||||
typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount);
|
||||
typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
|
||||
typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
|
||||
typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
|
||||
typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
|
||||
#endif
|
||||
|
||||
#ifndef GL_VERSION_1_4_DEPRECATED
|
||||
#define GL_VERSION_1_4_DEPRECATED 1
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glFogCoordf (GLfloat coord);
|
||||
GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord);
|
||||
GLAPI void APIENTRY glFogCoordd (GLdouble coord);
|
||||
@@ -6537,6 +6474,13 @@ GLAPI void APIENTRY glWindowPos3iv (const GLint *v);
|
||||
GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z);
|
||||
GLAPI void APIENTRY glWindowPos3sv (const GLshort *v);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
|
||||
typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
|
||||
typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount);
|
||||
typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
|
||||
typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
|
||||
typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
|
||||
typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
|
||||
typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
|
||||
typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
|
||||
typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
|
||||
@@ -7074,10 +7018,7 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB,
|
||||
/* ARB_clear_buffer_object */
|
||||
/* ARB_compute_shader */
|
||||
/* ARB_copy_image */
|
||||
/* ARB_debug_group */
|
||||
/* ARB_debug_label */
|
||||
/* KHR_debug (ARB_debug_output promoted to KHR without suffixes) */
|
||||
/* ARB_debug_output2 (no entry points) */
|
||||
/* KHR_debug (includes ARB_debug_output commands promoted to KHR without suffixes) */
|
||||
/* ARB_explicit_uniform_location (no entry points) */
|
||||
/* ARB_framebuffer_no_attachments */
|
||||
/* ARB_internalformat_query2 */
|
||||
@@ -8621,7 +8562,6 @@ typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum ta
|
||||
|
||||
#ifndef GL_KHR_debug
|
||||
#define GL_KHR_debug 1
|
||||
/* KHR_debug also reuses entry points from ARB_debug_group and ARB_debug_label */
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
|
||||
GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
|
||||
@@ -8682,18 +8622,46 @@ GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint
|
||||
typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_debug_group
|
||||
#define GL_ARB_debug_group 1
|
||||
/* ARB_debug_group reuses entry points from KHR_debug */
|
||||
#ifndef GL_ARB_texture_view
|
||||
#define GL_ARB_texture_view 1
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_debug_label
|
||||
#define GL_ARB_debug_label 1
|
||||
/* ARB_debug_label reuses entry points from KHR_debug */
|
||||
#ifndef GL_ARB_vertex_attrib_binding
|
||||
#define GL_ARB_vertex_attrib_binding 1
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex);
|
||||
GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor);
|
||||
GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
|
||||
GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
|
||||
typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_debug_output2
|
||||
#define GL_ARB_debug_output2 1
|
||||
#ifndef GL_ARB_robustness_isolation
|
||||
#define GL_ARB_robustness_isolation 1
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_ES3_compatibility
|
||||
@@ -8824,48 +8792,6 @@ typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture
|
||||
typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_texture_view
|
||||
#define GL_ARB_texture_view 1
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_vertex_attrib_binding
|
||||
#define GL_ARB_vertex_attrib_binding 1
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex);
|
||||
GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor);
|
||||
GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
|
||||
GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
|
||||
typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
|
||||
typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
|
||||
#endif
|
||||
|
||||
#ifndef GL_ARB_robustness_isolation
|
||||
#define GL_ARB_robustness_isolation 1
|
||||
#endif
|
||||
|
||||
#ifndef GL_EXT_abgr
|
||||
#define GL_EXT_abgr 1
|
||||
#endif
|
||||
@@ -9607,11 +9533,15 @@ GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname,
|
||||
GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param);
|
||||
GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params);
|
||||
GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
|
||||
GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params);
|
||||
GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
|
||||
typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
|
||||
typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
|
||||
typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
|
||||
typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
|
||||
#endif
|
||||
|
||||
#ifndef GL_EXT_pixel_transform_color_table
|
||||
@@ -9963,11 +9893,11 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLen
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight);
|
||||
GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight);
|
||||
GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
|
||||
GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
|
||||
typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
|
||||
typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
|
||||
typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
|
||||
#endif
|
||||
|
||||
#ifndef GL_NV_light_max_exponent
|
||||
@@ -12543,7 +12473,7 @@ typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glVDPAUInitNV (const GLvoid *vdpDevice, const GLvoid *getProcAddress);
|
||||
GLAPI void APIENTRY glVDPAUFiniNV (void);
|
||||
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
|
||||
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
|
||||
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
|
||||
GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
|
||||
GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
|
||||
@@ -12554,7 +12484,7 @@ GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSur
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const GLvoid *vdpDevice, const GLvoid *getProcAddress);
|
||||
typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
|
||||
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
|
||||
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
|
||||
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
|
||||
typedef void (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
|
||||
typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
|
||||
@@ -12792,6 +12722,16 @@ typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle)
|
||||
#define GL_AMD_query_buffer_object 1
|
||||
#endif
|
||||
|
||||
#ifndef GL_AMD_sparse_texture
|
||||
#define GL_AMD_sparse_texture 1
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
|
||||
GLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
|
||||
typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
353
include/GL/glu.h
353
include/GL/glu.h
@@ -1,353 +0,0 @@
|
||||
/*
|
||||
* SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
|
||||
* Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, 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 including the dates of first publication and
|
||||
* either this permission notice or a reference to
|
||||
* http://oss.sgi.com/projects/FreeB/
|
||||
* 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
|
||||
* SILICON GRAPHICS, INC. 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.
|
||||
*
|
||||
* Except as contained in this notice, the name of Silicon Graphics, Inc.
|
||||
* shall not be used in advertising or otherwise to promote the sale, use or
|
||||
* other dealings in this Software without prior written authorization from
|
||||
* Silicon Graphics, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __glu_h__
|
||||
#define __glu_h__
|
||||
|
||||
#if defined(USE_MGL_NAMESPACE)
|
||||
#include "glu_mangle.h"
|
||||
#endif
|
||||
|
||||
#include <GL/gl.h>
|
||||
|
||||
#ifndef GLAPIENTRY
|
||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||
#define GLAPIENTRY __stdcall
|
||||
#else
|
||||
#define GLAPIENTRY
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef GLAPIENTRYP
|
||||
#define GLAPIENTRYP GLAPIENTRY *
|
||||
#endif
|
||||
|
||||
#if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GLU32)
|
||||
# undef GLAPI
|
||||
# define GLAPI __declspec(dllexport)
|
||||
#elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL)
|
||||
/* tag specifying we're building for DLL runtime support */
|
||||
# undef GLAPI
|
||||
# define GLAPI __declspec(dllimport)
|
||||
#elif !defined(GLAPI)
|
||||
/* for use with static link lib build of Win32 edition only */
|
||||
# define GLAPI extern
|
||||
#endif /* _STATIC_MESA support */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*************************************************************/
|
||||
|
||||
/* Extensions */
|
||||
#define GLU_EXT_object_space_tess 1
|
||||
#define GLU_EXT_nurbs_tessellator 1
|
||||
|
||||
/* Boolean */
|
||||
#define GLU_FALSE 0
|
||||
#define GLU_TRUE 1
|
||||
|
||||
/* Version */
|
||||
#define GLU_VERSION_1_1 1
|
||||
#define GLU_VERSION_1_2 1
|
||||
#define GLU_VERSION_1_3 1
|
||||
|
||||
/* StringName */
|
||||
#define GLU_VERSION 100800
|
||||
#define GLU_EXTENSIONS 100801
|
||||
|
||||
/* ErrorCode */
|
||||
#define GLU_INVALID_ENUM 100900
|
||||
#define GLU_INVALID_VALUE 100901
|
||||
#define GLU_OUT_OF_MEMORY 100902
|
||||
#define GLU_INCOMPATIBLE_GL_VERSION 100903
|
||||
#define GLU_INVALID_OPERATION 100904
|
||||
|
||||
/* NurbsDisplay */
|
||||
/* GLU_FILL */
|
||||
#define GLU_OUTLINE_POLYGON 100240
|
||||
#define GLU_OUTLINE_PATCH 100241
|
||||
|
||||
/* NurbsCallback */
|
||||
#define GLU_NURBS_ERROR 100103
|
||||
#define GLU_ERROR 100103
|
||||
#define GLU_NURBS_BEGIN 100164
|
||||
#define GLU_NURBS_BEGIN_EXT 100164
|
||||
#define GLU_NURBS_VERTEX 100165
|
||||
#define GLU_NURBS_VERTEX_EXT 100165
|
||||
#define GLU_NURBS_NORMAL 100166
|
||||
#define GLU_NURBS_NORMAL_EXT 100166
|
||||
#define GLU_NURBS_COLOR 100167
|
||||
#define GLU_NURBS_COLOR_EXT 100167
|
||||
#define GLU_NURBS_TEXTURE_COORD 100168
|
||||
#define GLU_NURBS_TEX_COORD_EXT 100168
|
||||
#define GLU_NURBS_END 100169
|
||||
#define GLU_NURBS_END_EXT 100169
|
||||
#define GLU_NURBS_BEGIN_DATA 100170
|
||||
#define GLU_NURBS_BEGIN_DATA_EXT 100170
|
||||
#define GLU_NURBS_VERTEX_DATA 100171
|
||||
#define GLU_NURBS_VERTEX_DATA_EXT 100171
|
||||
#define GLU_NURBS_NORMAL_DATA 100172
|
||||
#define GLU_NURBS_NORMAL_DATA_EXT 100172
|
||||
#define GLU_NURBS_COLOR_DATA 100173
|
||||
#define GLU_NURBS_COLOR_DATA_EXT 100173
|
||||
#define GLU_NURBS_TEXTURE_COORD_DATA 100174
|
||||
#define GLU_NURBS_TEX_COORD_DATA_EXT 100174
|
||||
#define GLU_NURBS_END_DATA 100175
|
||||
#define GLU_NURBS_END_DATA_EXT 100175
|
||||
|
||||
/* NurbsError */
|
||||
#define GLU_NURBS_ERROR1 100251
|
||||
#define GLU_NURBS_ERROR2 100252
|
||||
#define GLU_NURBS_ERROR3 100253
|
||||
#define GLU_NURBS_ERROR4 100254
|
||||
#define GLU_NURBS_ERROR5 100255
|
||||
#define GLU_NURBS_ERROR6 100256
|
||||
#define GLU_NURBS_ERROR7 100257
|
||||
#define GLU_NURBS_ERROR8 100258
|
||||
#define GLU_NURBS_ERROR9 100259
|
||||
#define GLU_NURBS_ERROR10 100260
|
||||
#define GLU_NURBS_ERROR11 100261
|
||||
#define GLU_NURBS_ERROR12 100262
|
||||
#define GLU_NURBS_ERROR13 100263
|
||||
#define GLU_NURBS_ERROR14 100264
|
||||
#define GLU_NURBS_ERROR15 100265
|
||||
#define GLU_NURBS_ERROR16 100266
|
||||
#define GLU_NURBS_ERROR17 100267
|
||||
#define GLU_NURBS_ERROR18 100268
|
||||
#define GLU_NURBS_ERROR19 100269
|
||||
#define GLU_NURBS_ERROR20 100270
|
||||
#define GLU_NURBS_ERROR21 100271
|
||||
#define GLU_NURBS_ERROR22 100272
|
||||
#define GLU_NURBS_ERROR23 100273
|
||||
#define GLU_NURBS_ERROR24 100274
|
||||
#define GLU_NURBS_ERROR25 100275
|
||||
#define GLU_NURBS_ERROR26 100276
|
||||
#define GLU_NURBS_ERROR27 100277
|
||||
#define GLU_NURBS_ERROR28 100278
|
||||
#define GLU_NURBS_ERROR29 100279
|
||||
#define GLU_NURBS_ERROR30 100280
|
||||
#define GLU_NURBS_ERROR31 100281
|
||||
#define GLU_NURBS_ERROR32 100282
|
||||
#define GLU_NURBS_ERROR33 100283
|
||||
#define GLU_NURBS_ERROR34 100284
|
||||
#define GLU_NURBS_ERROR35 100285
|
||||
#define GLU_NURBS_ERROR36 100286
|
||||
#define GLU_NURBS_ERROR37 100287
|
||||
|
||||
/* NurbsProperty */
|
||||
#define GLU_AUTO_LOAD_MATRIX 100200
|
||||
#define GLU_CULLING 100201
|
||||
#define GLU_SAMPLING_TOLERANCE 100203
|
||||
#define GLU_DISPLAY_MODE 100204
|
||||
#define GLU_PARAMETRIC_TOLERANCE 100202
|
||||
#define GLU_SAMPLING_METHOD 100205
|
||||
#define GLU_U_STEP 100206
|
||||
#define GLU_V_STEP 100207
|
||||
#define GLU_NURBS_MODE 100160
|
||||
#define GLU_NURBS_MODE_EXT 100160
|
||||
#define GLU_NURBS_TESSELLATOR 100161
|
||||
#define GLU_NURBS_TESSELLATOR_EXT 100161
|
||||
#define GLU_NURBS_RENDERER 100162
|
||||
#define GLU_NURBS_RENDERER_EXT 100162
|
||||
|
||||
/* NurbsSampling */
|
||||
#define GLU_OBJECT_PARAMETRIC_ERROR 100208
|
||||
#define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208
|
||||
#define GLU_OBJECT_PATH_LENGTH 100209
|
||||
#define GLU_OBJECT_PATH_LENGTH_EXT 100209
|
||||
#define GLU_PATH_LENGTH 100215
|
||||
#define GLU_PARAMETRIC_ERROR 100216
|
||||
#define GLU_DOMAIN_DISTANCE 100217
|
||||
|
||||
/* NurbsTrim */
|
||||
#define GLU_MAP1_TRIM_2 100210
|
||||
#define GLU_MAP1_TRIM_3 100211
|
||||
|
||||
/* QuadricDrawStyle */
|
||||
#define GLU_POINT 100010
|
||||
#define GLU_LINE 100011
|
||||
#define GLU_FILL 100012
|
||||
#define GLU_SILHOUETTE 100013
|
||||
|
||||
/* QuadricCallback */
|
||||
/* GLU_ERROR */
|
||||
|
||||
/* QuadricNormal */
|
||||
#define GLU_SMOOTH 100000
|
||||
#define GLU_FLAT 100001
|
||||
#define GLU_NONE 100002
|
||||
|
||||
/* QuadricOrientation */
|
||||
#define GLU_OUTSIDE 100020
|
||||
#define GLU_INSIDE 100021
|
||||
|
||||
/* TessCallback */
|
||||
#define GLU_TESS_BEGIN 100100
|
||||
#define GLU_BEGIN 100100
|
||||
#define GLU_TESS_VERTEX 100101
|
||||
#define GLU_VERTEX 100101
|
||||
#define GLU_TESS_END 100102
|
||||
#define GLU_END 100102
|
||||
#define GLU_TESS_ERROR 100103
|
||||
#define GLU_TESS_EDGE_FLAG 100104
|
||||
#define GLU_EDGE_FLAG 100104
|
||||
#define GLU_TESS_COMBINE 100105
|
||||
#define GLU_TESS_BEGIN_DATA 100106
|
||||
#define GLU_TESS_VERTEX_DATA 100107
|
||||
#define GLU_TESS_END_DATA 100108
|
||||
#define GLU_TESS_ERROR_DATA 100109
|
||||
#define GLU_TESS_EDGE_FLAG_DATA 100110
|
||||
#define GLU_TESS_COMBINE_DATA 100111
|
||||
|
||||
/* TessContour */
|
||||
#define GLU_CW 100120
|
||||
#define GLU_CCW 100121
|
||||
#define GLU_INTERIOR 100122
|
||||
#define GLU_EXTERIOR 100123
|
||||
#define GLU_UNKNOWN 100124
|
||||
|
||||
/* TessProperty */
|
||||
#define GLU_TESS_WINDING_RULE 100140
|
||||
#define GLU_TESS_BOUNDARY_ONLY 100141
|
||||
#define GLU_TESS_TOLERANCE 100142
|
||||
|
||||
/* TessError */
|
||||
#define GLU_TESS_ERROR1 100151
|
||||
#define GLU_TESS_ERROR2 100152
|
||||
#define GLU_TESS_ERROR3 100153
|
||||
#define GLU_TESS_ERROR4 100154
|
||||
#define GLU_TESS_ERROR5 100155
|
||||
#define GLU_TESS_ERROR6 100156
|
||||
#define GLU_TESS_ERROR7 100157
|
||||
#define GLU_TESS_ERROR8 100158
|
||||
#define GLU_TESS_MISSING_BEGIN_POLYGON 100151
|
||||
#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152
|
||||
#define GLU_TESS_MISSING_END_POLYGON 100153
|
||||
#define GLU_TESS_MISSING_END_CONTOUR 100154
|
||||
#define GLU_TESS_COORD_TOO_LARGE 100155
|
||||
#define GLU_TESS_NEED_COMBINE_CALLBACK 100156
|
||||
|
||||
/* TessWinding */
|
||||
#define GLU_TESS_WINDING_ODD 100130
|
||||
#define GLU_TESS_WINDING_NONZERO 100131
|
||||
#define GLU_TESS_WINDING_POSITIVE 100132
|
||||
#define GLU_TESS_WINDING_NEGATIVE 100133
|
||||
#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
|
||||
|
||||
/*************************************************************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
class GLUnurbs;
|
||||
class GLUquadric;
|
||||
class GLUtesselator;
|
||||
#else
|
||||
typedef struct GLUnurbs GLUnurbs;
|
||||
typedef struct GLUquadric GLUquadric;
|
||||
typedef struct GLUtesselator GLUtesselator;
|
||||
#endif
|
||||
|
||||
typedef GLUnurbs GLUnurbsObj;
|
||||
typedef GLUquadric GLUquadricObj;
|
||||
typedef GLUtesselator GLUtesselatorObj;
|
||||
typedef GLUtesselator GLUtriangulatorObj;
|
||||
|
||||
#define GLU_TESS_MAX_COORD 1.0e150
|
||||
|
||||
/* Internal convenience typedefs */
|
||||
typedef void (GLAPIENTRYP _GLUfuncptr)(void);
|
||||
|
||||
GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb);
|
||||
GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess);
|
||||
GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb);
|
||||
GLAPI void GLAPIENTRY gluBeginTrim (GLUnurbs* nurb);
|
||||
GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||||
GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||||
GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||||
GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||||
GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||||
GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||||
GLAPI GLboolean GLAPIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
|
||||
GLAPI void GLAPIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
|
||||
GLAPI void GLAPIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb);
|
||||
GLAPI void GLAPIENTRY gluDeleteQuadric (GLUquadric* quad);
|
||||
GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator* tess);
|
||||
GLAPI void GLAPIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
|
||||
GLAPI void GLAPIENTRY gluEndCurve (GLUnurbs* nurb);
|
||||
GLAPI void GLAPIENTRY gluEndPolygon (GLUtesselator* tess);
|
||||
GLAPI void GLAPIENTRY gluEndSurface (GLUnurbs* nurb);
|
||||
GLAPI void GLAPIENTRY gluEndTrim (GLUnurbs* nurb);
|
||||
GLAPI const GLubyte * GLAPIENTRY gluErrorString (GLenum error);
|
||||
GLAPI void GLAPIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
|
||||
GLAPI const GLubyte * GLAPIENTRY gluGetString (GLenum name);
|
||||
GLAPI void GLAPIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
|
||||
GLAPI void GLAPIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
|
||||
GLAPI void GLAPIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
|
||||
GLAPI GLUnurbs* GLAPIENTRY gluNewNurbsRenderer (void);
|
||||
GLAPI GLUquadric* GLAPIENTRY gluNewQuadric (void);
|
||||
GLAPI GLUtesselator* GLAPIENTRY gluNewTess (void);
|
||||
GLAPI void GLAPIENTRY gluNextContour (GLUtesselator* tess, GLenum type);
|
||||
GLAPI void GLAPIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
|
||||
GLAPI void GLAPIENTRY gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
|
||||
GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||||
GLAPI void GLAPIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
|
||||
GLAPI void GLAPIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
|
||||
GLAPI void GLAPIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
|
||||
GLAPI void GLAPIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
|
||||
GLAPI void GLAPIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
|
||||
GLAPI void GLAPIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
|
||||
GLAPI void GLAPIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
|
||||
GLAPI GLint GLAPIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
|
||||
GLAPI void GLAPIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
|
||||
GLAPI void GLAPIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
|
||||
GLAPI void GLAPIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
|
||||
GLAPI void GLAPIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal);
|
||||
GLAPI void GLAPIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
|
||||
GLAPI void GLAPIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture);
|
||||
GLAPI GLint GLAPIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
|
||||
GLAPI void GLAPIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
|
||||
GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator* tess);
|
||||
GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
|
||||
GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
|
||||
GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator* tess);
|
||||
GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator* tess);
|
||||
GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
|
||||
GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
|
||||
GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
|
||||
GLAPI GLint GLAPIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
|
||||
GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __glu_h__ */
|
@@ -1,86 +0,0 @@
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.0
|
||||
* Copyright (C) 1995-1998 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef GLU_MANGLE_H
|
||||
#define GLU_MANGLE_H
|
||||
|
||||
|
||||
#define gluLookAt mgluLookAt
|
||||
#define gluOrtho2D mgluOrtho2D
|
||||
#define gluPerspective mgluPerspective
|
||||
#define gluPickMatrix mgluPickMatrix
|
||||
#define gluProject mgluProject
|
||||
#define gluUnProject mgluUnProject
|
||||
#define gluErrorString mgluErrorString
|
||||
#define gluScaleImage mgluScaleImage
|
||||
#define gluBuild1DMipmaps mgluBuild1DMipmaps
|
||||
#define gluBuild2DMipmaps mgluBuild2DMipmaps
|
||||
#define gluNewQuadric mgluNewQuadric
|
||||
#define gluDeleteQuadric mgluDeleteQuadric
|
||||
#define gluQuadricDrawStyle mgluQuadricDrawStyle
|
||||
#define gluQuadricOrientation mgluQuadricOrientation
|
||||
#define gluQuadricNormals mgluQuadricNormals
|
||||
#define gluQuadricTexture mgluQuadricTexture
|
||||
#define gluQuadricCallback mgluQuadricCallback
|
||||
#define gluCylinder mgluCylinder
|
||||
#define gluSphere mgluSphere
|
||||
#define gluDisk mgluDisk
|
||||
#define gluPartialDisk mgluPartialDisk
|
||||
#define gluNewNurbsRenderer mgluNewNurbsRenderer
|
||||
#define gluDeleteNurbsRenderer mgluDeleteNurbsRenderer
|
||||
#define gluLoadSamplingMatrices mgluLoadSamplingMatrices
|
||||
#define gluNurbsProperty mgluNurbsProperty
|
||||
#define gluGetNurbsProperty mgluGetNurbsProperty
|
||||
#define gluBeginCurve mgluBeginCurve
|
||||
#define gluEndCurve mgluEndCurve
|
||||
#define gluNurbsCurve mgluNurbsCurve
|
||||
#define gluBeginSurface mgluBeginSurface
|
||||
#define gluEndSurface mgluEndSurface
|
||||
#define gluNurbsSurface mgluNurbsSurface
|
||||
#define gluBeginTrim mgluBeginTrim
|
||||
#define gluEndTrim mgluEndTrim
|
||||
#define gluPwlCurve mgluPwlCurve
|
||||
#define gluNurbsCallback mgluNurbsCallback
|
||||
#define gluNewTess mgluNewTess
|
||||
#define gluDeleteTess mgluDeleteTess
|
||||
#define gluTessBeginPolygon mgluTessBeginPolygon
|
||||
#define gluTessBeginContour mgluTessBeginContour
|
||||
#define gluTessVertex mgluTessVertex
|
||||
#define gluTessEndPolygon mgluTessEndPolygon
|
||||
#define gluTessEndContour mgluTessEndContour
|
||||
#define gluTessProperty mgluTessProperty
|
||||
#define gluTessNormal mgluTessNormal
|
||||
#define gluTessCallback mgluTessCallback
|
||||
#define gluGetTessProperty mgluGetTessProperty
|
||||
#define gluBeginPolygon mgluBeginPolygon
|
||||
#define gluNextContour mgluNextContour
|
||||
#define gluEndPolygon mgluEndPolygon
|
||||
#define gluGetString mgluGetString
|
||||
#define gluBuild1DMipmapLevels mgluBuild1DMipmapLevels
|
||||
#define gluBuild2DMipmapLevels mgluBuild2DMipmapLevels
|
||||
#define gluBuild3DMipmapLevels mgluBuild3DMipmapLevels
|
||||
#define gluBuild3DMipmaps mgluBuild3DMipmaps
|
||||
#define gluCheckExtension mgluCheckExtension
|
||||
#define gluUnProject4 mgluUnProject4
|
||||
#define gluNurbsCallbackData mgluNurbsCallbackData
|
||||
#define gluNurbsCallbackDataEXT mgluNurbsCallbackDataEXT
|
||||
|
||||
#endif
|
@@ -923,6 +923,10 @@ struct __DRIdri2ExtensionRec {
|
||||
* __DRI_IMAGE_FORMAT_NONE is for images that aren't directly usable
|
||||
* by the driver (YUV planar formats) but serve as a base image for
|
||||
* creating sub-images for the different planes within the image.
|
||||
*
|
||||
* R8, GR88 and NONE should not be used with createImageFormName or
|
||||
* createImage, and are returned by query from sub images created with
|
||||
* createImageFromNames (NONE, see above) and fromPlane (R8 & GR88).
|
||||
*/
|
||||
#define __DRI_IMAGE_FORMAT_RGB565 0x1001
|
||||
#define __DRI_IMAGE_FORMAT_XRGB8888 0x1002
|
||||
@@ -937,6 +941,49 @@ struct __DRIdri2ExtensionRec {
|
||||
#define __DRI_IMAGE_USE_SCANOUT 0x0002
|
||||
#define __DRI_IMAGE_USE_CURSOR 0x0004 /* Depricated */
|
||||
|
||||
|
||||
/**
|
||||
* Four CC formats that matches with WL_DRM_FORMAT_* from wayland_drm.h
|
||||
* and GBM_FORMAT_* from gbm.h, used with createImageFromNames.
|
||||
*
|
||||
* \since 5
|
||||
*/
|
||||
|
||||
#define __DRI_IMAGE_FOURCC_RGB565 0x36314752
|
||||
#define __DRI_IMAGE_FOURCC_ARGB8888 0x34325241
|
||||
#define __DRI_IMAGE_FOURCC_XRGB8888 0x34325258
|
||||
#define __DRI_IMAGE_FOURCC_ABGR8888 0x34324241
|
||||
#define __DRI_IMAGE_FOURCC_XBGR8888 0x34324258
|
||||
#define __DRI_IMAGE_FOURCC_YUV410 0x39565559
|
||||
#define __DRI_IMAGE_FOURCC_YUV411 0x31315559
|
||||
#define __DRI_IMAGE_FOURCC_YUV420 0x32315559
|
||||
#define __DRI_IMAGE_FOURCC_YUV422 0x36315559
|
||||
#define __DRI_IMAGE_FOURCC_YUV444 0x34325559
|
||||
#define __DRI_IMAGE_FOURCC_NV12 0x3231564e
|
||||
#define __DRI_IMAGE_FOURCC_NV16 0x3631564e
|
||||
#define __DRI_IMAGE_FOURCC_YUYV 0x56595559
|
||||
|
||||
|
||||
/**
|
||||
* Queryable on images created by createImageFromNames.
|
||||
*
|
||||
* RGB and RGBA are may be usable directly as images but its still
|
||||
* recommended to call fromPlanar with plane == 0.
|
||||
*
|
||||
* Y_U_V, Y_UV and Y_XUXV all requires call to fromPlanar to create
|
||||
* usable sub-images, sampling from images return raw YUV data and
|
||||
* color conversion needs to be done in the shader.
|
||||
*
|
||||
* \since 5
|
||||
*/
|
||||
|
||||
#define __DRI_IMAGE_COMPONENTS_RGB 0x3001
|
||||
#define __DRI_IMAGE_COMPONENTS_RGBA 0x3002
|
||||
#define __DRI_IMAGE_COMPONENTS_Y_U_V 0x3003
|
||||
#define __DRI_IMAGE_COMPONENTS_Y_UV 0x3004
|
||||
#define __DRI_IMAGE_COMPONENTS_Y_XUXV 0x3005
|
||||
|
||||
|
||||
/**
|
||||
* queryImage attributes
|
||||
*/
|
||||
@@ -947,6 +994,7 @@ struct __DRIdri2ExtensionRec {
|
||||
#define __DRI_IMAGE_ATTRIB_FORMAT 0x2003 /* available in versions 3+ */
|
||||
#define __DRI_IMAGE_ATTRIB_WIDTH 0x2004 /* available in versions 4+ */
|
||||
#define __DRI_IMAGE_ATTRIB_HEIGHT 0x2005
|
||||
#define __DRI_IMAGE_ATTRIB_COMPONENTS 0x2006 /* available in versions 5+ */
|
||||
|
||||
typedef struct __DRIimageRec __DRIimage;
|
||||
typedef struct __DRIimageExtensionRec __DRIimageExtension;
|
||||
@@ -983,6 +1031,19 @@ struct __DRIimageExtensionRec {
|
||||
*/
|
||||
GLboolean (*validateUsage)(__DRIimage *image, unsigned int use);
|
||||
|
||||
/**
|
||||
* Unlike createImageFromName __DRI_IMAGE_FORMAT is not but instead
|
||||
* __DRI_IMAGE_FOURCC and strides are in bytes not pixels. Stride is
|
||||
* also per block and not per pixel (for non-RGB, see gallium blocks).
|
||||
*
|
||||
* \since 5
|
||||
*/
|
||||
__DRIimage *(*createImageFromNames)(__DRIscreen *screen,
|
||||
int width, int height, int fourcc,
|
||||
int *names, int num_names,
|
||||
int *strides, int *offsets,
|
||||
void *loaderPrivate);
|
||||
|
||||
/**
|
||||
* Create an image out of a sub-region of a parent image. This
|
||||
* entry point lets us create individual __DRIimages for different
|
||||
@@ -998,10 +1059,8 @@ struct __DRIimageExtensionRec {
|
||||
*
|
||||
* \since 5
|
||||
*/
|
||||
__DRIimage *(*createSubImage)(__DRIimage *image,
|
||||
int width, int height, int format,
|
||||
int offset, int pitch,
|
||||
void *loaderPrivate);
|
||||
__DRIimage *(*fromPlanar)(__DRIimage *image, int plane,
|
||||
void *loaderPrivate);
|
||||
};
|
||||
|
||||
|
||||
|
@@ -3,9 +3,12 @@ CHIPSET(0x6784, TAHITI_6784, TAHITI)
|
||||
CHIPSET(0x6788, TAHITI_6788, TAHITI)
|
||||
CHIPSET(0x678A, TAHITI_678A, TAHITI)
|
||||
CHIPSET(0x6790, TAHITI_6790, TAHITI)
|
||||
CHIPSET(0x6791, TAHITI_6791, TAHITI)
|
||||
CHIPSET(0x6792, TAHITI_6792, TAHITI)
|
||||
CHIPSET(0x6798, TAHITI_6798, TAHITI)
|
||||
CHIPSET(0x6799, TAHITI_6799, TAHITI)
|
||||
CHIPSET(0x679A, TAHITI_679A, TAHITI)
|
||||
CHIPSET(0x679B, TAHITI_679B, TAHITI)
|
||||
CHIPSET(0x679E, TAHITI_679E, TAHITI)
|
||||
CHIPSET(0x679F, TAHITI_679F, TAHITI)
|
||||
|
||||
@@ -16,6 +19,7 @@ CHIPSET(0x6806, PITCAIRN_6806, PITCAIRN)
|
||||
CHIPSET(0x6808, PITCAIRN_6808, PITCAIRN)
|
||||
CHIPSET(0x6809, PITCAIRN_6809, PITCAIRN)
|
||||
CHIPSET(0x6810, PITCAIRN_6810, PITCAIRN)
|
||||
CHIPSET(0x6811, PITCAIRN_6811, PITCAIRN)
|
||||
CHIPSET(0x6816, PITCAIRN_6816, PITCAIRN)
|
||||
CHIPSET(0x6817, PITCAIRN_6817, PITCAIRN)
|
||||
CHIPSET(0x6818, PITCAIRN_6818, PITCAIRN)
|
||||
|
5
m4/.gitignore
vendored
Normal file
5
m4/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
libtool.m4
|
||||
ltoptions.m4
|
||||
ltsugar.m4
|
||||
ltversion.m4
|
||||
lt~obsolete.m4
|
309
m4/ax_pthread.m4
Normal file
309
m4/ax_pthread.m4
Normal file
@@ -0,0 +1,309 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# This macro figures out how to build C programs using POSIX threads. It
|
||||
# sets the PTHREAD_LIBS output variable to the threads library and linker
|
||||
# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
|
||||
# flags that are needed. (The user can also force certain compiler
|
||||
# flags/libs to be tested by setting these environment variables.)
|
||||
#
|
||||
# Also sets PTHREAD_CC to any special C compiler that is needed for
|
||||
# multi-threaded programs (defaults to the value of CC otherwise). (This
|
||||
# is necessary on AIX to use the special cc_r compiler alias.)
|
||||
#
|
||||
# NOTE: You are assumed to not only compile your program with these flags,
|
||||
# but also link it with them as well. e.g. you should link with
|
||||
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
|
||||
#
|
||||
# If you are only building threads programs, you may wish to use these
|
||||
# variables in your default LIBS, CFLAGS, and CC:
|
||||
#
|
||||
# LIBS="$PTHREAD_LIBS $LIBS"
|
||||
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
# CC="$PTHREAD_CC"
|
||||
#
|
||||
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
|
||||
# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
|
||||
# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
#
|
||||
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
|
||||
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
|
||||
# PTHREAD_CFLAGS.
|
||||
#
|
||||
# ACTION-IF-FOUND is a list of shell commands to run if a threads library
|
||||
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
|
||||
# is not found. If ACTION-IF-FOUND is not specified, the default action
|
||||
# will define HAVE_PTHREAD.
|
||||
#
|
||||
# Please let the authors know if this macro fails on any platform, or if
|
||||
# you have any other suggestions or comments. This macro was based on work
|
||||
# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
|
||||
# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
|
||||
# Alejandro Forero Cuervo to the autoconf macro repository. We are also
|
||||
# grateful for the helpful feedback of numerous users.
|
||||
#
|
||||
# Updated for Autoconf 2.68 by Daniel Richard G.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 18
|
||||
|
||||
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
|
||||
AC_DEFUN([AX_PTHREAD], [
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_LANG_PUSH([C])
|
||||
ax_pthread_ok=no
|
||||
|
||||
# We used to check for pthread.h first, but this fails if pthread.h
|
||||
# requires special compiler flags (e.g. on True64 or Sequent).
|
||||
# It gets checked for in the link test anyway.
|
||||
|
||||
# First of all, check if the user has set any of the PTHREAD_LIBS,
|
||||
# etcetera environment variables, and if threads linking works using
|
||||
# them:
|
||||
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
|
||||
AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
|
||||
AC_MSG_RESULT($ax_pthread_ok)
|
||||
if test x"$ax_pthread_ok" = xno; then
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
fi
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
fi
|
||||
|
||||
# We must check for the threads library under a number of different
|
||||
# names; the ordering is very important because some systems
|
||||
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
|
||||
# libraries is broken (non-POSIX).
|
||||
|
||||
# Create a list of thread flags to try. Items starting with a "-" are
|
||||
# C compiler flags, and other items are library names, except for "none"
|
||||
# which indicates that we try without any flags at all, and "pthread-config"
|
||||
# which is a program returning the flags for the Pth emulation library.
|
||||
|
||||
ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
|
||||
|
||||
# The ordering *is* (sometimes) important. Some notes on the
|
||||
# individual items follow:
|
||||
|
||||
# pthreads: AIX (must check this before -lpthread)
|
||||
# none: in case threads are in libc; should be tried before -Kthread and
|
||||
# other compiler flags to prevent continual compiler warnings
|
||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
|
||||
# -pthreads: Solaris/gcc
|
||||
# -mthreads: Mingw32/gcc, Lynx/gcc
|
||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||
# doesn't hurt to check since this sometimes defines pthreads too;
|
||||
# also defines -D_REENTRANT)
|
||||
# ... -mt is also the pthreads flag for HP/aCC
|
||||
# pthread: Linux, etcetera
|
||||
# --thread-safe: KAI C++
|
||||
# pthread-config: use pthread-config program (for GNU Pth library)
|
||||
|
||||
case ${host_os} in
|
||||
solaris*)
|
||||
|
||||
# On Solaris (at least, for some versions), libc contains stubbed
|
||||
# (non-functional) versions of the pthreads routines, so link-based
|
||||
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
|
||||
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
|
||||
# a function called by this macro, so we could check for that, but
|
||||
# who knows whether they'll stub that too in a future libc.) So,
|
||||
# we'll just look for -pthreads and -lpthread first:
|
||||
|
||||
ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
|
||||
;;
|
||||
|
||||
darwin*)
|
||||
ax_pthread_flags="-pthread $ax_pthread_flags"
|
||||
;;
|
||||
esac
|
||||
|
||||
if test x"$ax_pthread_ok" = xno; then
|
||||
for flag in $ax_pthread_flags; do
|
||||
|
||||
case $flag in
|
||||
none)
|
||||
AC_MSG_CHECKING([whether pthreads work without any flags])
|
||||
;;
|
||||
|
||||
-*)
|
||||
AC_MSG_CHECKING([whether pthreads work with $flag])
|
||||
PTHREAD_CFLAGS="$flag"
|
||||
;;
|
||||
|
||||
pthread-config)
|
||||
AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
|
||||
if test x"$ax_pthread_config" = xno; then continue; fi
|
||||
PTHREAD_CFLAGS="`pthread-config --cflags`"
|
||||
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
||||
;;
|
||||
|
||||
*)
|
||||
AC_MSG_CHECKING([for the pthreads library -l$flag])
|
||||
PTHREAD_LIBS="-l$flag"
|
||||
;;
|
||||
esac
|
||||
|
||||
save_LIBS="$LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
|
||||
# Check for various functions. We must include pthread.h,
|
||||
# since some functions may be macros. (On the Sequent, we
|
||||
# need a special flag -Kthread to make this header compile.)
|
||||
# We check for pthread_join because it is in -lpthread on IRIX
|
||||
# while pthread_create is in libc. We check for pthread_attr_init
|
||||
# due to DEC craziness with -lpthreads. We check for
|
||||
# pthread_cleanup_push because it is one of the few pthread
|
||||
# functions on Solaris that doesn't have a non-functional libc stub.
|
||||
# We try pthread_create on general principles.
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
|
||||
static void routine(void *a) { a = 0; }
|
||||
static void *start_routine(void *a) { return a; }],
|
||||
[pthread_t th; pthread_attr_t attr;
|
||||
pthread_create(&th, 0, start_routine, 0);
|
||||
pthread_join(th, 0);
|
||||
pthread_attr_init(&attr);
|
||||
pthread_cleanup_push(routine, 0);
|
||||
pthread_cleanup_pop(0) /* ; */])],
|
||||
[ax_pthread_ok=yes],
|
||||
[])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
AC_MSG_RESULT($ax_pthread_ok)
|
||||
if test "x$ax_pthread_ok" = xyes; then
|
||||
break;
|
||||
fi
|
||||
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
done
|
||||
fi
|
||||
|
||||
# Various other checks:
|
||||
if test "x$ax_pthread_ok" = xyes; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
|
||||
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
||||
AC_MSG_CHECKING([for joinable pthread attribute])
|
||||
attr_name=unknown
|
||||
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
|
||||
[int attr = $attr; return attr /* ; */])],
|
||||
[attr_name=$attr; break],
|
||||
[])
|
||||
done
|
||||
AC_MSG_RESULT($attr_name)
|
||||
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
|
||||
AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
|
||||
[Define to necessary symbol if this constant
|
||||
uses a non-standard name on your system.])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([if more special flags are required for pthreads])
|
||||
flag=no
|
||||
case ${host_os} in
|
||||
aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
|
||||
osf* | hpux*) flag="-D_REENTRANT";;
|
||||
solaris*)
|
||||
if test "$GCC" = "yes"; then
|
||||
flag="-D_REENTRANT"
|
||||
else
|
||||
flag="-mt -D_REENTRANT"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT(${flag})
|
||||
if test "x$flag" != xno; then
|
||||
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
|
||||
ax_cv_PTHREAD_PRIO_INHERIT, [
|
||||
AC_LINK_IFELSE([
|
||||
AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=no])
|
||||
])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
|
||||
AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]))
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
# More AIX lossage: must compile with xlc_r or cc_r
|
||||
if test x"$GCC" != xyes; then
|
||||
AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
|
||||
else
|
||||
PTHREAD_CC=$CC
|
||||
fi
|
||||
else
|
||||
PTHREAD_CC="$CC"
|
||||
fi
|
||||
|
||||
AC_SUBST(PTHREAD_LIBS)
|
||||
AC_SUBST(PTHREAD_CFLAGS)
|
||||
AC_SUBST(PTHREAD_CC)
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test x"$ax_pthread_ok" = xyes; then
|
||||
ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
|
||||
:
|
||||
else
|
||||
ax_pthread_ok=no
|
||||
$2
|
||||
fi
|
||||
AC_LANG_POP
|
||||
])dnl AX_PTHREAD
|
49
m4/ax_python_module.m4
Normal file
49
m4/ax_python_module.m4
Normal file
@@ -0,0 +1,49 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_python_module.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_PYTHON_MODULE(modname[, fatal])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Checks for Python module.
|
||||
#
|
||||
# If fatal is non-empty then absence of a module will trigger an error.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Andrew Collier
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification, are
|
||||
# permitted in any medium without royalty provided the copyright notice
|
||||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 6
|
||||
|
||||
AU_ALIAS([AC_PYTHON_MODULE], [AX_PYTHON_MODULE])
|
||||
AC_DEFUN([AX_PYTHON_MODULE],[
|
||||
if test -z $PYTHON2;
|
||||
then
|
||||
PYTHON2="python"
|
||||
fi
|
||||
PYTHON_NAME=`basename $PYTHON2`
|
||||
AC_MSG_CHECKING($PYTHON_NAME module: $1)
|
||||
$PYTHON2 -c "import $1" 2>/dev/null
|
||||
if test $? -eq 0;
|
||||
then
|
||||
AC_MSG_RESULT(yes)
|
||||
eval AS_TR_CPP(HAVE_PYMOD_$1)=yes
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
eval AS_TR_CPP(HAVE_PYMOD_$1)=no
|
||||
#
|
||||
if test -n "$2"
|
||||
then
|
||||
AC_MSG_ERROR(failed to find required module $1)
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
])
|
@@ -251,7 +251,7 @@ def generate(env):
|
||||
'_SVID_SOURCE',
|
||||
'_BSD_SOURCE',
|
||||
'_GNU_SOURCE',
|
||||
'PTHREADS',
|
||||
'HAVE_PTHREAD',
|
||||
'HAVE_POSIX_MEMALIGN',
|
||||
]
|
||||
if env['platform'] == 'darwin':
|
||||
@@ -498,7 +498,7 @@ def generate(env):
|
||||
|
||||
# Default libs
|
||||
libs = []
|
||||
if env['platform'] in ('posix', 'linux', 'freebsd', 'darwin'):
|
||||
if env['platform'] in ('darwin', 'freebsd', 'linux', 'posix', 'sunos'):
|
||||
libs += ['m', 'pthread', 'dl']
|
||||
env.Append(LIBS = libs)
|
||||
|
||||
|
@@ -27,8 +27,6 @@ if not env['embedded']:
|
||||
SConscript('glx/SConscript')
|
||||
if env['platform'] not in ['darwin', 'haiku', 'sunos']:
|
||||
SConscript('egl/main/SConscript')
|
||||
if env['platform'] not in ['darwin']:
|
||||
SConscript('glu/sgi/SConscript')
|
||||
|
||||
if env['gles']:
|
||||
SConscript('mapi/shared-glapi/SConscript')
|
||||
|
@@ -639,6 +639,69 @@ dri2_terminate(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the error code after a call to
|
||||
* dri2_egl_display::dri2::createContextAttribs.
|
||||
*/
|
||||
static void
|
||||
dri2_create_context_attribs_error(int dri_error)
|
||||
{
|
||||
EGLint egl_error;
|
||||
|
||||
switch (dri_error) {
|
||||
case __DRI_CTX_ERROR_SUCCESS:
|
||||
return;
|
||||
|
||||
case __DRI_CTX_ERROR_NO_MEMORY:
|
||||
egl_error = EGL_BAD_ALLOC;
|
||||
break;
|
||||
|
||||
/* From the EGL_KHR_create_context spec, section "Errors":
|
||||
*
|
||||
* * If <config> does not support a client API context compatible
|
||||
* with the requested API major and minor version, [...] context flags,
|
||||
* and context reset notification behavior (for client API types where
|
||||
* these attributes are supported), then an EGL_BAD_MATCH error is
|
||||
* generated.
|
||||
*
|
||||
* * If an OpenGL ES context is requested and the values for
|
||||
* attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
|
||||
* EGL_CONTEXT_MINOR_VERSION_KHR specify an OpenGL ES version that
|
||||
* is not defined, than an EGL_BAD_MATCH error is generated.
|
||||
*
|
||||
* * If an OpenGL context is requested, the requested version is
|
||||
* greater than 3.2, and the value for attribute
|
||||
* EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR has no bits set; has any
|
||||
* bits set other than EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR and
|
||||
* EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR; has more than
|
||||
* one of these bits set; or if the implementation does not support
|
||||
* the requested profile, then an EGL_BAD_MATCH error is generated.
|
||||
*/
|
||||
case __DRI_CTX_ERROR_BAD_API:
|
||||
case __DRI_CTX_ERROR_BAD_VERSION:
|
||||
case __DRI_CTX_ERROR_BAD_FLAG:
|
||||
egl_error = EGL_BAD_MATCH;
|
||||
break;
|
||||
|
||||
/* From the EGL_KHR_create_context spec, section "Errors":
|
||||
*
|
||||
* * If an attribute name or attribute value in <attrib_list> is not
|
||||
* recognized (including unrecognized bits in bitmask attributes),
|
||||
* then an EGL_BAD_ATTRIBUTE error is generated."
|
||||
*/
|
||||
case __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE:
|
||||
case __DRI_CTX_ERROR_UNKNOWN_FLAG:
|
||||
egl_error = EGL_BAD_ATTRIBUTE;
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
egl_error = EGL_BAD_MATCH;
|
||||
break;
|
||||
}
|
||||
|
||||
_eglError(egl_error, "dri2_create_context");
|
||||
}
|
||||
|
||||
/**
|
||||
* Called via eglCreateContext(), drv->API.CreateContext().
|
||||
@@ -769,6 +832,7 @@ dri2_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf,
|
||||
ctx_attribs,
|
||||
& error,
|
||||
dri2_ctx);
|
||||
dri2_create_context_attribs_error(error);
|
||||
} else {
|
||||
dri2_ctx->dri_context =
|
||||
dri2_dpy->dri2->createNewContextForAPI(dri2_dpy->dri_screen,
|
||||
@@ -1093,68 +1157,16 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
* wl_drm format code to a description of the planes in the buffer
|
||||
* that lets us create a __DRIimage for each of the planes. */
|
||||
|
||||
static const struct wl_drm_format_descriptor {
|
||||
uint32_t wl_format;
|
||||
static const struct wl_drm_components_descriptor {
|
||||
uint32_t dri_components;
|
||||
EGLint components;
|
||||
int nplanes;
|
||||
struct {
|
||||
int buffer_index;
|
||||
int width_shift;
|
||||
int height_shift;
|
||||
uint32_t dri_format;
|
||||
int cpp;
|
||||
} planes[3];
|
||||
} wl_drm_formats[] = {
|
||||
{ WL_DRM_FORMAT_ARGB8888, EGL_TEXTURE_RGBA, 1,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_ARGB8888, 4 }, } },
|
||||
|
||||
{ WL_DRM_FORMAT_XRGB8888, EGL_TEXTURE_RGB, 1,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_XRGB8888, 4 }, } },
|
||||
|
||||
{ WL_DRM_FORMAT_YUV410, EGL_TEXTURE_Y_U_V_WL, 3,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 1, 2, 2, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 2, 2, 2, __DRI_IMAGE_FORMAT_R8, 1 } } },
|
||||
|
||||
{ WL_DRM_FORMAT_YUV411, EGL_TEXTURE_Y_U_V_WL, 3,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 1, 2, 0, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 2, 2, 0, __DRI_IMAGE_FORMAT_R8, 1 } } },
|
||||
|
||||
{ WL_DRM_FORMAT_YUV420, EGL_TEXTURE_Y_U_V_WL, 3,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 1, 1, 1, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 2, 1, 1, __DRI_IMAGE_FORMAT_R8, 1 } } },
|
||||
|
||||
{ WL_DRM_FORMAT_YUV422, EGL_TEXTURE_Y_U_V_WL, 3,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 1, 1, 0, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 2, 1, 0, __DRI_IMAGE_FORMAT_R8, 1 } } },
|
||||
|
||||
{ WL_DRM_FORMAT_YUV444, EGL_TEXTURE_Y_U_V_WL, 3,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 1, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 2, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 } } },
|
||||
|
||||
{ WL_DRM_FORMAT_NV12, EGL_TEXTURE_Y_UV_WL, 2,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 1, 1, 1, __DRI_IMAGE_FORMAT_GR88, 2 } } },
|
||||
|
||||
{ WL_DRM_FORMAT_NV16, EGL_TEXTURE_Y_UV_WL, 2,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 },
|
||||
{ 1, 1, 0, __DRI_IMAGE_FORMAT_GR88, 2 } } },
|
||||
|
||||
/* For YUYV buffers, we set up two overlapping DRI images and treat
|
||||
* them as planar buffers in the compositors. Plane 0 is GR88 and
|
||||
* samples YU or YV pairs and places Y into the R component, while
|
||||
* plane 1 is ARGB and samples YUYV clusters and places pairs and
|
||||
* places U into the G component and V into A. This lets the
|
||||
* texture sampler interpolate the Y components correctly when
|
||||
* sampling from plane 0, and interpolate U and V correctly when
|
||||
* sampling from plane 1. */
|
||||
{ WL_DRM_FORMAT_YUYV, EGL_TEXTURE_Y_XUXV_WL, 2,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_GR88, 2 },
|
||||
{ 0, 1, 0, __DRI_IMAGE_FORMAT_ARGB8888, 4 } } }
|
||||
} wl_drm_components[] = {
|
||||
{ __DRI_IMAGE_COMPONENTS_RGB, EGL_TEXTURE_RGB, 1 },
|
||||
{ __DRI_IMAGE_COMPONENTS_RGBA, EGL_TEXTURE_RGBA, 1 },
|
||||
{ __DRI_IMAGE_COMPONENTS_Y_U_V, EGL_TEXTURE_Y_U_V_WL, 3 },
|
||||
{ __DRI_IMAGE_COMPONENTS_Y_UV, EGL_TEXTURE_Y_UV_WL, 2 },
|
||||
{ __DRI_IMAGE_COMPONENTS_Y_XUXV, EGL_TEXTURE_Y_XUXV_WL, 2 },
|
||||
};
|
||||
|
||||
static _EGLImage *
|
||||
@@ -1164,13 +1176,11 @@ dri2_create_image_wayland_wl_buffer(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
{
|
||||
struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer;
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
const struct wl_drm_components_descriptor *f;
|
||||
__DRIimage *dri_image;
|
||||
_EGLImageAttribs attrs;
|
||||
EGLint err;
|
||||
uint32_t format;
|
||||
int32_t offset, stride, plane, width, height;
|
||||
int cpp, index;
|
||||
const struct wl_drm_format_descriptor *f;
|
||||
int32_t plane;
|
||||
|
||||
if (!wayland_buffer_is_drm(&buffer->buffer))
|
||||
return NULL;
|
||||
@@ -1189,17 +1199,12 @@ dri2_create_image_wayland_wl_buffer(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
width = buffer->buffer.width >> f->planes[plane].width_shift;
|
||||
height = buffer->buffer.height >> f->planes[plane].height_shift;
|
||||
format = f->planes[plane].dri_format;
|
||||
cpp = f->planes[plane].cpp;
|
||||
index = f->planes[plane].buffer_index;
|
||||
offset = buffer->offset[index];
|
||||
stride = buffer->stride[index];
|
||||
dri_image = dri2_dpy->image->fromPlanar(buffer->driver_buffer, plane, NULL);
|
||||
|
||||
dri_image = dri2_dpy->image->createSubImage(buffer->driver_buffer,
|
||||
width, height, format,
|
||||
offset, stride / cpp, NULL);
|
||||
if (dri_image == NULL) {
|
||||
_eglError(EGL_BAD_PARAMETER, "dri2_create_image_wayland_wl_buffer");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return dri2_create_image(disp, dri_image);
|
||||
}
|
||||
@@ -1360,24 +1365,31 @@ dri2_wl_reference_buffer(void *user_data, uint32_t name,
|
||||
{
|
||||
_EGLDisplay *disp = user_data;
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
int i;
|
||||
__DRIimage *img;
|
||||
int i, dri_components = 0;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(wl_drm_formats); i++)
|
||||
if (wl_drm_formats[i].wl_format == buffer->format) {
|
||||
buffer->driver_format = &wl_drm_formats[i];
|
||||
break;
|
||||
}
|
||||
img = dri2_dpy->image->createImageFromNames(dri2_dpy->dri_screen,
|
||||
buffer->buffer.width,
|
||||
buffer->buffer.height,
|
||||
buffer->format, (int*)&name, 1,
|
||||
buffer->stride,
|
||||
buffer->offset,
|
||||
NULL);
|
||||
|
||||
if (buffer->driver_format == NULL)
|
||||
if (img == NULL)
|
||||
return;
|
||||
|
||||
buffer->driver_buffer =
|
||||
dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen,
|
||||
buffer->buffer.width,
|
||||
buffer->buffer.height,
|
||||
__DRI_IMAGE_FORMAT_NONE, name,
|
||||
buffer->stride[0] / 4,
|
||||
NULL);
|
||||
dri2_dpy->image->queryImage(img, __DRI_IMAGE_ATTRIB_COMPONENTS, &dri_components);
|
||||
|
||||
buffer->driver_format = NULL;
|
||||
for (i = 0; i < ARRAY_SIZE(wl_drm_components); i++)
|
||||
if (wl_drm_components[i].dri_components == dri_components)
|
||||
buffer->driver_format = &wl_drm_components[i];
|
||||
|
||||
if (buffer->driver_format == NULL)
|
||||
dri2_dpy->image->destroyImage(img);
|
||||
else
|
||||
buffer->driver_buffer = img;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1442,7 +1454,7 @@ dri2_query_wayland_buffer_wl(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
EGLint attribute, EGLint *value)
|
||||
{
|
||||
struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer;
|
||||
const struct wl_drm_format_descriptor *format;
|
||||
const struct wl_drm_components_descriptor *format;
|
||||
|
||||
if (!wayland_buffer_is_drm(&buffer->buffer))
|
||||
return EGL_FALSE;
|
||||
|
@@ -122,8 +122,10 @@ struct dri2_egl_display
|
||||
|
||||
#ifdef HAVE_WAYLAND_PLATFORM
|
||||
struct wl_display *wl_dpy;
|
||||
struct wl_registry *wl_registry;
|
||||
struct wl_drm *wl_server_drm;
|
||||
struct wl_drm *wl_drm;
|
||||
struct wl_event_queue *wl_queue;
|
||||
int authenticated;
|
||||
int formats;
|
||||
#endif
|
||||
@@ -174,7 +176,8 @@ struct dri2_egl_surface
|
||||
__DRIbuffer *dri_buffers[__DRI_BUFFER_COUNT];
|
||||
__DRIbuffer *third_buffer;
|
||||
__DRIbuffer *pending_buffer;
|
||||
EGLBoolean block_swap_buffers;
|
||||
struct wl_callback *frame_callback;
|
||||
struct wl_callback *pending_buffer_callback;
|
||||
int format;
|
||||
#endif
|
||||
|
||||
|
@@ -500,6 +500,14 @@ droid_add_configs_for_visuals(_EGLDriver *drv, _EGLDisplay *dpy)
|
||||
for (j = 0; dri2_dpy->driver_configs[j]; j++) {
|
||||
const EGLint surface_type = EGL_WINDOW_BIT | EGL_PBUFFER_BIT;
|
||||
struct dri2_egl_config *dri2_conf;
|
||||
unsigned int double_buffered = 0;
|
||||
|
||||
dri2_dpy->core->getConfigAttrib(dri2_dpy->driver_configs[j],
|
||||
__DRI_ATTRIB_DOUBLE_BUFFER, &double_buffered);
|
||||
|
||||
/* support only double buffered configs */
|
||||
if (!double_buffered)
|
||||
continue;
|
||||
|
||||
dri2_conf = dri2_add_config(dpy, dri2_dpy->driver_configs[j],
|
||||
count + 1, visuals[i].size, surface_type, NULL,
|
||||
@@ -525,17 +533,6 @@ droid_add_configs_for_visuals(_EGLDriver *drv, _EGLDisplay *dpy)
|
||||
/* there is no front buffer so no OpenGL */
|
||||
dri2_conf->base.RenderableType &= ~EGL_OPENGL_BIT;
|
||||
dri2_conf->base.Conformant &= ~EGL_OPENGL_BIT;
|
||||
|
||||
/*
|
||||
* We want to make sure GL_DRAW_BUFFER for windows or pbuffers is always
|
||||
* GL_BACK. For EGL configs that do not have a double DRI config, clear
|
||||
* the surface type.
|
||||
*
|
||||
* This is just to be on the safe side. dri2_add_config never sets
|
||||
* EGL_WINDOW_BIT or EGL_PBUFFER_BIT for such configs.
|
||||
*/
|
||||
if (!dri2_conf->dri_double_config)
|
||||
dri2_conf->base.SurfaceType = 0;
|
||||
}
|
||||
|
||||
return (count != 0);
|
||||
@@ -660,18 +657,29 @@ droid_open_device(void)
|
||||
return (fd >= 0) ? dup(fd) : -1;
|
||||
}
|
||||
|
||||
/* support versions < JellyBean */
|
||||
#ifndef ALOGW
|
||||
#define ALOGW LOGW
|
||||
#endif
|
||||
#ifndef ALOGD
|
||||
#define ALOGD LOGD
|
||||
#endif
|
||||
#ifndef ALOGI
|
||||
#define ALOGI LOGI
|
||||
#endif
|
||||
|
||||
static void
|
||||
droid_log(EGLint level, const char *msg)
|
||||
{
|
||||
switch (level) {
|
||||
case _EGL_DEBUG:
|
||||
LOGD("%s", msg);
|
||||
ALOGD("%s", msg);
|
||||
break;
|
||||
case _EGL_INFO:
|
||||
LOGI("%s", msg);
|
||||
ALOGI("%s", msg);
|
||||
break;
|
||||
case _EGL_WARNING:
|
||||
LOGW("%s", msg);
|
||||
ALOGW("%s", msg);
|
||||
break;
|
||||
case _EGL_FATAL:
|
||||
LOG_FATAL("%s", msg);
|
||||
|
@@ -45,6 +45,37 @@ enum wl_drm_format_flags {
|
||||
HAS_XRGB8888 = 2
|
||||
};
|
||||
|
||||
static void
|
||||
sync_callback(void *data, struct wl_callback *callback, uint32_t serial)
|
||||
{
|
||||
int *done = data;
|
||||
|
||||
*done = 1;
|
||||
wl_callback_destroy(callback);
|
||||
}
|
||||
|
||||
static const struct wl_callback_listener sync_listener = {
|
||||
sync_callback
|
||||
};
|
||||
|
||||
static int
|
||||
roundtrip(struct dri2_egl_display *dri2_dpy)
|
||||
{
|
||||
struct wl_callback *callback;
|
||||
int done = 0, ret = 0;
|
||||
|
||||
callback = wl_display_sync(dri2_dpy->wl_dpy);
|
||||
wl_callback_add_listener(callback, &sync_listener, &done);
|
||||
wl_proxy_set_queue((struct wl_proxy *) callback, dri2_dpy->wl_queue);
|
||||
while (ret != -1 && !done)
|
||||
ret = wl_display_dispatch_queue(dri2_dpy->wl_dpy, dri2_dpy->wl_queue);
|
||||
|
||||
if (!done)
|
||||
wl_callback_destroy(callback);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
wl_buffer_release(void *data, struct wl_buffer *buffer)
|
||||
{
|
||||
@@ -69,6 +100,16 @@ static struct wl_buffer_listener wl_buffer_listener = {
|
||||
wl_buffer_release
|
||||
};
|
||||
|
||||
static void
|
||||
resize_callback(struct wl_egl_window *wl_win, void *data)
|
||||
{
|
||||
struct dri2_egl_surface *dri2_surf = data;
|
||||
struct dri2_egl_display *dri2_dpy =
|
||||
dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||
|
||||
(*dri2_dpy->flush->invalidate)(dri2_surf->dri_drawable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called via eglCreateWindowSurface(), drv->API.CreateWindowSurface().
|
||||
*/
|
||||
@@ -80,7 +121,6 @@ dri2_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type,
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
struct dri2_egl_config *dri2_conf = dri2_egl_config(conf);
|
||||
struct dri2_egl_surface *dri2_surf;
|
||||
struct dri2_egl_buffer *dri2_buf;
|
||||
int i;
|
||||
|
||||
(void) drv;
|
||||
@@ -104,7 +144,8 @@ dri2_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type,
|
||||
|
||||
dri2_surf->pending_buffer = NULL;
|
||||
dri2_surf->third_buffer = NULL;
|
||||
dri2_surf->block_swap_buffers = EGL_FALSE;
|
||||
dri2_surf->frame_callback = NULL;
|
||||
dri2_surf->pending_buffer_callback = NULL;
|
||||
|
||||
if (conf->AlphaSize == 0)
|
||||
dri2_surf->format = WL_DRM_FORMAT_XRGB8888;
|
||||
@@ -115,20 +156,12 @@ dri2_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type,
|
||||
case EGL_WINDOW_BIT:
|
||||
dri2_surf->wl_win = (struct wl_egl_window *) window;
|
||||
|
||||
dri2_surf->wl_win->private = dri2_surf;
|
||||
dri2_surf->wl_win->resize_callback = resize_callback;
|
||||
|
||||
dri2_surf->base.Width = -1;
|
||||
dri2_surf->base.Height = -1;
|
||||
break;
|
||||
case EGL_PIXMAP_BIT:
|
||||
dri2_surf->wl_pix = (struct wl_egl_pixmap *) window;
|
||||
|
||||
dri2_surf->base.Width = dri2_surf->wl_pix->width;
|
||||
dri2_surf->base.Height = dri2_surf->wl_pix->height;
|
||||
|
||||
if (dri2_surf->wl_pix->driver_private) {
|
||||
dri2_buf = dri2_surf->wl_pix->driver_private;
|
||||
dri2_surf->dri_buffers[__DRI_BUFFER_FRONT_LEFT] = dri2_buf->dri_buffer;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
goto cleanup_surf;
|
||||
}
|
||||
@@ -166,15 +199,6 @@ dri2_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
window, attrib_list);
|
||||
}
|
||||
|
||||
static _EGLSurface *
|
||||
dri2_create_pixmap_surface(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
_EGLConfig *conf, EGLNativePixmapType pixmap,
|
||||
const EGLint *attrib_list)
|
||||
{
|
||||
return dri2_create_surface(drv, disp, EGL_PIXMAP_BIT, conf,
|
||||
pixmap, attrib_list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called via eglDestroySurface(), drv->API.DestroySurface().
|
||||
*/
|
||||
@@ -197,8 +221,7 @@ dri2_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
|
||||
wl_buffer_destroy(dri2_surf->wl_drm_buffer[i]);
|
||||
|
||||
for (i = 0; i < __DRI_BUFFER_COUNT; ++i)
|
||||
if (dri2_surf->dri_buffers[i] && !(i == __DRI_BUFFER_FRONT_LEFT &&
|
||||
dri2_surf->base.Type == EGL_PIXMAP_BIT))
|
||||
if (dri2_surf->dri_buffers[i])
|
||||
dri2_dpy->dri2->releaseBuffer(dri2_dpy->dri_screen,
|
||||
dri2_surf->dri_buffers[i]);
|
||||
|
||||
@@ -207,27 +230,23 @@ dri2_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
|
||||
dri2_surf->third_buffer);
|
||||
}
|
||||
|
||||
if (dri2_surf->frame_callback)
|
||||
wl_callback_destroy(dri2_surf->frame_callback);
|
||||
|
||||
if (dri2_surf->pending_buffer_callback)
|
||||
wl_callback_destroy(dri2_surf->pending_buffer_callback);
|
||||
|
||||
|
||||
if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
|
||||
dri2_surf->wl_win->private = NULL;
|
||||
dri2_surf->wl_win->resize_callback = NULL;
|
||||
}
|
||||
|
||||
free(surf);
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
dri2_wl_egl_pixmap_destroy(struct wl_egl_pixmap *egl_pixmap)
|
||||
{
|
||||
struct dri2_egl_buffer *dri2_buf = egl_pixmap->driver_private;
|
||||
|
||||
assert(dri2_buf);
|
||||
|
||||
dri2_buf->dri2_dpy->dri2->releaseBuffer(dri2_buf->dri2_dpy->dri_screen,
|
||||
dri2_buf->dri_buffer);
|
||||
|
||||
free(dri2_buf);
|
||||
|
||||
egl_pixmap->driver_private = NULL;
|
||||
egl_pixmap->destroy = NULL;
|
||||
}
|
||||
|
||||
static struct wl_buffer *
|
||||
wayland_create_buffer(struct dri2_egl_surface *dri2_surf,
|
||||
__DRIbuffer *buffer)
|
||||
@@ -267,30 +286,6 @@ dri2_process_back_buffer(struct dri2_egl_surface *dri2_surf, unsigned format)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dri2_process_front_buffer(struct dri2_egl_surface *dri2_surf, unsigned format)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy =
|
||||
dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||
struct dri2_egl_buffer *dri2_buf;
|
||||
|
||||
switch (dri2_surf->base.Type) {
|
||||
case EGL_PIXMAP_BIT:
|
||||
dri2_buf = malloc(sizeof *dri2_buf);
|
||||
if (!dri2_buf)
|
||||
return;
|
||||
|
||||
dri2_buf->dri_buffer = dri2_surf->dri_buffers[__DRI_BUFFER_FRONT_LEFT];
|
||||
dri2_buf->dri2_dpy = dri2_dpy;
|
||||
|
||||
dri2_surf->wl_pix->driver_private = dri2_buf;
|
||||
dri2_surf->wl_pix->destroy = dri2_wl_egl_pixmap_destroy;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dri2_release_pending_buffer(void *data,
|
||||
struct wl_callback *callback, uint32_t time)
|
||||
@@ -308,6 +303,7 @@ dri2_release_pending_buffer(void *data,
|
||||
dri2_surf->pending_buffer = NULL;
|
||||
|
||||
wl_callback_destroy(callback);
|
||||
dri2_surf->pending_buffer_callback = NULL;
|
||||
}
|
||||
|
||||
static const struct wl_callback_listener release_buffer_listener = {
|
||||
@@ -333,11 +329,14 @@ dri2_release_buffers(struct dri2_egl_surface *dri2_surf)
|
||||
switch (i) {
|
||||
case __DRI_BUFFER_FRONT_LEFT:
|
||||
if (dri2_surf->pending_buffer)
|
||||
wl_display_roundtrip(dri2_dpy->wl_dpy);
|
||||
roundtrip(dri2_dpy);
|
||||
dri2_surf->pending_buffer = dri2_surf->dri_buffers[i];
|
||||
callback = wl_display_sync(dri2_dpy->wl_dpy);
|
||||
wl_callback_add_listener(callback,
|
||||
&release_buffer_listener, dri2_surf);
|
||||
wl_proxy_set_queue((struct wl_proxy *) callback,
|
||||
dri2_dpy->wl_queue);
|
||||
dri2_surf->pending_buffer_callback = callback;
|
||||
break;
|
||||
default:
|
||||
dri2_dpy->dri2->releaseBuffer(dri2_dpy->dri_screen,
|
||||
@@ -430,6 +429,9 @@ dri2_get_buffers_with_format(__DRIdrawable * driDrawable,
|
||||
dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||
int i;
|
||||
|
||||
/* There might be a buffer release already queued that wasn't processed */
|
||||
wl_display_dispatch_queue_pending(dri2_dpy->wl_dpy, dri2_dpy->wl_queue);
|
||||
|
||||
if (dri2_surf->base.Type == EGL_WINDOW_BIT &&
|
||||
(dri2_surf->base.Width != dri2_surf->wl_win->width ||
|
||||
dri2_surf->base.Height != dri2_surf->wl_win->height)) {
|
||||
@@ -466,9 +468,7 @@ dri2_get_buffers_with_format(__DRIdrawable * driDrawable,
|
||||
if (!dri2_surf->dri_buffers[attachments[i]])
|
||||
continue;
|
||||
|
||||
if (attachments[i] == __DRI_BUFFER_FRONT_LEFT)
|
||||
dri2_process_front_buffer(dri2_surf, attachments[i+1]);
|
||||
else if (attachments[i] == __DRI_BUFFER_BACK_LEFT)
|
||||
if (attachments[i] == __DRI_BUFFER_BACK_LEFT)
|
||||
dri2_process_back_buffer(dri2_surf, attachments[i+1]);
|
||||
}
|
||||
|
||||
@@ -479,13 +479,7 @@ dri2_get_buffers_with_format(__DRIdrawable * driDrawable,
|
||||
dri2_surf->buffer_count++;
|
||||
}
|
||||
|
||||
assert(dri2_surf->base.Type == EGL_PIXMAP_BIT ||
|
||||
dri2_surf->dri_buffers[__DRI_BUFFER_BACK_LEFT]);
|
||||
|
||||
if (dri2_surf->base.Type == EGL_PIXMAP_BIT && !dri2_surf->wl_pix->buffer)
|
||||
dri2_surf->wl_pix->buffer =
|
||||
wayland_create_buffer(dri2_surf,
|
||||
dri2_surf->dri_buffers[__DRI_BUFFER_FRONT_LEFT]);
|
||||
assert(dri2_surf->dri_buffers[__DRI_BUFFER_BACK_LEFT]);
|
||||
|
||||
*out_count = dri2_surf->buffer_count;
|
||||
if (dri2_surf->buffer_count == 0)
|
||||
@@ -552,7 +546,7 @@ wayland_frame_callback(void *data, struct wl_callback *callback, uint32_t time)
|
||||
{
|
||||
struct dri2_egl_surface *dri2_surf = data;
|
||||
|
||||
dri2_surf->block_swap_buffers = EGL_FALSE;
|
||||
dri2_surf->frame_callback = NULL;
|
||||
wl_callback_destroy(callback);
|
||||
}
|
||||
|
||||
@@ -569,17 +563,18 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
|
||||
struct dri2_egl_driver *dri2_drv = dri2_egl_driver(drv);
|
||||
struct wl_callback *callback;
|
||||
int ret = 0;
|
||||
|
||||
if (dri2_surf->block_swap_buffers) {
|
||||
wl_display_flush(dri2_dpy->wl_dpy);
|
||||
while (dri2_surf->block_swap_buffers)
|
||||
wl_display_iterate(dri2_dpy->wl_dpy, WL_DISPLAY_READABLE);
|
||||
}
|
||||
while (dri2_surf->frame_callback && ret != -1)
|
||||
ret = wl_display_dispatch_queue(dri2_dpy->wl_dpy, dri2_dpy->wl_queue);
|
||||
if (ret < 0)
|
||||
return EGL_FALSE;
|
||||
|
||||
dri2_surf->block_swap_buffers = EGL_TRUE;
|
||||
callback = wl_surface_frame(dri2_surf->wl_win->surface);
|
||||
wl_callback_add_listener(callback, &frame_listener, dri2_surf);
|
||||
dri2_surf->frame_callback = wl_surface_frame(dri2_surf->wl_win->surface);
|
||||
wl_callback_add_listener(dri2_surf->frame_callback,
|
||||
&frame_listener, dri2_surf);
|
||||
wl_proxy_set_queue((struct wl_proxy *) dri2_surf->frame_callback,
|
||||
dri2_dpy->wl_queue);
|
||||
|
||||
if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
|
||||
pointer_swap(
|
||||
@@ -611,6 +606,8 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
|
||||
|
||||
wl_surface_damage(dri2_surf->wl_win->surface, 0, 0,
|
||||
dri2_surf->base.Width, dri2_surf->base.Height);
|
||||
|
||||
wl_surface_commit(dri2_surf->wl_win->surface);
|
||||
}
|
||||
|
||||
_EGLContext *ctx;
|
||||
@@ -626,71 +623,6 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called via eglCreateImageKHR(), drv->API.CreateImageKHR().
|
||||
*/
|
||||
static _EGLImage *
|
||||
dri2_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
EGLClientBuffer buffer, const EGLint *attr_list)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
struct wl_egl_pixmap *wl_egl_pixmap = (struct wl_egl_pixmap *) buffer;
|
||||
struct dri2_egl_buffer *dri2_buf;
|
||||
EGLint wl_attr_list[] = {
|
||||
EGL_WIDTH, 0,
|
||||
EGL_HEIGHT, 0,
|
||||
EGL_DRM_BUFFER_STRIDE_MESA, 0,
|
||||
EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
|
||||
EGL_NONE
|
||||
};
|
||||
|
||||
dri2_buf = malloc(sizeof *dri2_buf);
|
||||
if (!dri2_buf)
|
||||
return NULL;
|
||||
|
||||
dri2_buf->dri2_dpy = dri2_dpy;
|
||||
dri2_buf->dri_buffer =
|
||||
dri2_dpy->dri2->allocateBuffer(dri2_dpy->dri_screen,
|
||||
__DRI_BUFFER_FRONT_LEFT, 32,
|
||||
wl_egl_pixmap->width,
|
||||
wl_egl_pixmap->height);
|
||||
|
||||
wl_egl_pixmap->destroy = dri2_wl_egl_pixmap_destroy;
|
||||
wl_egl_pixmap->driver_private = dri2_buf;
|
||||
|
||||
/* FIXME: Get buffer format from attr_list somehow... or from the
|
||||
wl_egl_piaxmap. */
|
||||
wl_egl_pixmap->buffer =
|
||||
wl_drm_create_buffer(dri2_dpy->wl_drm,
|
||||
dri2_buf->dri_buffer->name,
|
||||
wl_egl_pixmap->width,
|
||||
wl_egl_pixmap->height,
|
||||
dri2_buf->dri_buffer->pitch,
|
||||
WL_DRM_FORMAT_ARGB8888);
|
||||
|
||||
wl_attr_list[1] = wl_egl_pixmap->width;
|
||||
wl_attr_list[3] = wl_egl_pixmap->height;
|
||||
wl_attr_list[5] = dri2_buf->dri_buffer->pitch / 4;
|
||||
|
||||
return dri2_create_image_khr(disp->Driver, disp, ctx, EGL_DRM_BUFFER_MESA,
|
||||
(EGLClientBuffer)(intptr_t) dri2_buf->dri_buffer->name, wl_attr_list);
|
||||
}
|
||||
|
||||
static _EGLImage *
|
||||
dri2_wayland_create_image_khr(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
_EGLContext *ctx, EGLenum target,
|
||||
EGLClientBuffer buffer, const EGLint *attr_list)
|
||||
{
|
||||
(void) drv;
|
||||
|
||||
switch (target) {
|
||||
case EGL_NATIVE_PIXMAP_KHR:
|
||||
return dri2_create_image_khr_pixmap(disp, ctx, buffer, attr_list);
|
||||
default:
|
||||
return dri2_create_image_khr(drv, disp, ctx, target, buffer, attr_list);
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
dri2_wayland_authenticate(_EGLDisplay *disp, uint32_t id)
|
||||
{
|
||||
@@ -700,7 +632,8 @@ dri2_wayland_authenticate(_EGLDisplay *disp, uint32_t id)
|
||||
dri2_dpy->authenticated = 0;
|
||||
|
||||
wl_drm_authenticate(dri2_dpy->wl_drm, id);
|
||||
wl_display_roundtrip(dri2_dpy->wl_dpy);
|
||||
if (roundtrip(dri2_dpy) < 0)
|
||||
ret = -1;
|
||||
|
||||
if (!dri2_dpy->authenticated)
|
||||
ret = -1;
|
||||
@@ -795,22 +728,37 @@ static const struct wl_drm_listener drm_listener = {
|
||||
drm_handle_authenticated
|
||||
};
|
||||
|
||||
static void
|
||||
registry_handle_global(void *data, struct wl_registry *registry, uint32_t name,
|
||||
const char *interface, uint32_t version)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy = data;
|
||||
|
||||
if (strcmp(interface, "wl_drm") == 0) {
|
||||
dri2_dpy->wl_drm =
|
||||
wl_registry_bind(registry, name, &wl_drm_interface, 1);
|
||||
wl_drm_add_listener(dri2_dpy->wl_drm, &drm_listener, dri2_dpy);
|
||||
}
|
||||
}
|
||||
|
||||
static const struct wl_registry_listener registry_listener = {
|
||||
registry_handle_global
|
||||
};
|
||||
|
||||
EGLBoolean
|
||||
dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy;
|
||||
const __DRIconfig *config;
|
||||
uint32_t id, types;
|
||||
uint32_t types;
|
||||
int i;
|
||||
static const unsigned int argb_masks[4] =
|
||||
{ 0xff0000, 0xff00, 0xff, 0xff000000 };
|
||||
static const unsigned int rgb_masks[4] = { 0xff0000, 0xff00, 0xff, 0 };
|
||||
|
||||
drv->API.CreateWindowSurface = dri2_create_window_surface;
|
||||
drv->API.CreatePixmapSurface = dri2_create_pixmap_surface;
|
||||
drv->API.DestroySurface = dri2_destroy_surface;
|
||||
drv->API.SwapBuffers = dri2_swap_buffers;
|
||||
drv->API.CreateImageKHR = dri2_wayland_create_image_khr;
|
||||
drv->API.Terminate = dri2_terminate;
|
||||
|
||||
dri2_dpy = malloc(sizeof *dri2_dpy);
|
||||
@@ -829,22 +777,19 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
dri2_dpy->wl_dpy = disp->PlatformDisplay;
|
||||
}
|
||||
|
||||
id = wl_display_get_global(dri2_dpy->wl_dpy, "wl_drm", 1);
|
||||
if (id == 0)
|
||||
wl_display_roundtrip(dri2_dpy->wl_dpy);
|
||||
id = wl_display_get_global(dri2_dpy->wl_dpy, "wl_drm", 1);
|
||||
if (id == 0)
|
||||
dri2_dpy->wl_queue = wl_display_create_queue(dri2_dpy->wl_dpy);
|
||||
dri2_dpy->wl_registry = wl_display_get_registry(dri2_dpy->wl_dpy);
|
||||
wl_proxy_set_queue((struct wl_proxy *) dri2_dpy->wl_registry,
|
||||
dri2_dpy->wl_queue);
|
||||
wl_registry_add_listener(dri2_dpy->wl_registry,
|
||||
®istry_listener, dri2_dpy);
|
||||
if (roundtrip(dri2_dpy) < 0 || dri2_dpy->wl_drm == NULL)
|
||||
goto cleanup_dpy;
|
||||
dri2_dpy->wl_drm = wl_display_bind(dri2_dpy->wl_dpy, id, &wl_drm_interface);
|
||||
if (!dri2_dpy->wl_drm)
|
||||
goto cleanup_dpy;
|
||||
wl_drm_add_listener(dri2_dpy->wl_drm, &drm_listener, dri2_dpy);
|
||||
wl_display_roundtrip(dri2_dpy->wl_dpy);
|
||||
if (dri2_dpy->fd == -1)
|
||||
|
||||
if (roundtrip(dri2_dpy) < 0 || dri2_dpy->fd == -1)
|
||||
goto cleanup_drm;
|
||||
|
||||
wl_display_roundtrip(dri2_dpy->wl_dpy);
|
||||
if (!dri2_dpy->authenticated)
|
||||
if (roundtrip(dri2_dpy) < 0 || !dri2_dpy->authenticated)
|
||||
goto cleanup_fd;
|
||||
|
||||
dri2_dpy->driver_name = dri2_get_driver_for_fd(dri2_dpy->fd);
|
||||
@@ -871,7 +816,7 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
if (!dri2_create_screen(disp))
|
||||
goto cleanup_driver;
|
||||
|
||||
types = EGL_WINDOW_BIT | EGL_PIXMAP_BIT;
|
||||
types = EGL_WINDOW_BIT;
|
||||
for (i = 0; dri2_dpy->driver_configs[i]; i++) {
|
||||
config = dri2_dpy->driver_configs[i];
|
||||
if (dri2_dpy->formats & HAS_XRGB8888)
|
||||
@@ -880,8 +825,6 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
dri2_add_config(disp, config, i + 1, 0, types, NULL, argb_masks);
|
||||
}
|
||||
|
||||
disp->Extensions.KHR_image_pixmap = EGL_TRUE;
|
||||
|
||||
disp->Extensions.WL_bind_wayland_display = EGL_TRUE;
|
||||
dri2_dpy->authenticate = dri2_wayland_authenticate;
|
||||
|
||||
|
@@ -778,10 +778,9 @@ dri2_swap_buffers_region(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw,
|
||||
if (numRects > (int)ARRAY_SIZE(rectangles))
|
||||
return dri2_copy_region(drv, disp, draw, dri2_surf->region);
|
||||
|
||||
/* FIXME: Invert y here? */
|
||||
for (i = 0; i < numRects; i++) {
|
||||
rectangles[i].x = rects[i * 4];
|
||||
rectangles[i].y = rects[i * 4 + 1];
|
||||
rectangles[i].y = dri2_surf->base.Height - rects[i * 4 + 1] - rects[i * 4 + 3];
|
||||
rectangles[i].width = rects[i * 4 + 2];
|
||||
rectangles[i].height = rects[i * 4 + 3];
|
||||
}
|
||||
@@ -798,7 +797,7 @@ static EGLBoolean
|
||||
dri2_post_sub_buffer(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw,
|
||||
EGLint x, EGLint y, EGLint width, EGLint height)
|
||||
{
|
||||
const EGLint rect[4] = { x, draw->Height - y - height, width, height };
|
||||
const EGLint rect[4] = { x, y, width, height };
|
||||
|
||||
if (x < 0 || y < 0 || width < 0 || height < 0)
|
||||
_eglError(EGL_BAD_PARAMETER, "eglPostSubBufferNV");
|
||||
|
@@ -229,17 +229,14 @@ _eglParseContextAttribList(_EGLContext *ctx, _EGLDisplay *dpy,
|
||||
*
|
||||
* "* If an OpenGL context is requested, the requested version
|
||||
* is greater than 3.2, and the value for attribute
|
||||
* EGL_CONTEXT_PROFILE_MASK_KHR has no bits set; has any
|
||||
* bits set other than EGL_CONTEXT_CORE_PROFILE_BIT_KHR and
|
||||
* EGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_KHR; has more than
|
||||
* one of these bits set; or if the implementation does not
|
||||
* support the requested profile, then an
|
||||
* EGL_BAD_PROFILE_KHR error is generated."
|
||||
*
|
||||
* However, it does not define EGL_BAD_PROFILE_KHR. For now use
|
||||
* EGL_BAD_ATTRIBUTE.
|
||||
* EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR has no bits set; has
|
||||
* any bits set other than EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR
|
||||
* and EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR; has
|
||||
* more than one of these bits set; or if the implementation does
|
||||
* not support the requested profile, then an EGL_BAD_MATCH error
|
||||
* is generated."
|
||||
*/
|
||||
err = EGL_BAD_ATTRIBUTE;
|
||||
err = EGL_BAD_MATCH;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -42,7 +42,7 @@
|
||||
static _EGLThreadInfo dummy_thread = _EGL_THREAD_INFO_INITIALIZER;
|
||||
|
||||
|
||||
#if PTHREADS
|
||||
#if HAVE_PTHREAD
|
||||
#include <pthread.h>
|
||||
|
||||
static _EGL_DECLARE_MUTEX(_egl_TSDMutex);
|
||||
@@ -108,7 +108,7 @@ static INLINE EGLBoolean _eglInitTSD(void (*dtor)(_EGLThreadInfo *))
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
#else /* PTHREADS */
|
||||
#else /* HAVE_PTHREAD */
|
||||
static const _EGLThreadInfo *_egl_TSD;
|
||||
static void (*_egl_FreeTSD)(_EGLThreadInfo *);
|
||||
|
||||
@@ -137,7 +137,7 @@ static INLINE EGLBoolean _eglInitTSD(void (*dtor)(_EGLThreadInfo *))
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
#endif /* !PTHREADS */
|
||||
#endif /* !HAVE_PTHREAD */
|
||||
|
||||
|
||||
static void
|
||||
|
@@ -31,7 +31,7 @@
|
||||
|
||||
#include "eglcompiler.h"
|
||||
|
||||
#ifdef PTHREADS
|
||||
#ifdef HAVE_PTHREAD
|
||||
#include <pthread.h>
|
||||
|
||||
typedef pthread_mutex_t _EGLMutex;
|
||||
|
@@ -36,17 +36,6 @@
|
||||
#include "wayland-drm.h"
|
||||
#include "wayland-drm-server-protocol.h"
|
||||
|
||||
/* Git master of Wayland is moving towards a stable version of the
|
||||
* protocol, but breaking from 0.85 in the process. For the time
|
||||
* being, it's convenient to be able to build Mesa against both master
|
||||
* and 0.85.x of Wayland. To make this work we'll do a compile-time
|
||||
* version check and work around the difference in API and protocol */
|
||||
#if defined (WAYLAND_VERSION_MAJOR) && \
|
||||
WAYLAND_VERSION_MAJOR == 0 && \
|
||||
WAYLAND_VERSION_MINOR == 85
|
||||
#define HAS_WAYLAND_0_85
|
||||
#endif
|
||||
|
||||
struct wl_drm {
|
||||
struct wl_display *display;
|
||||
|
||||
@@ -69,25 +58,10 @@ destroy_buffer(struct wl_resource *resource)
|
||||
static void
|
||||
buffer_destroy(struct wl_client *client, struct wl_resource *resource)
|
||||
{
|
||||
#ifdef HAS_WAYLAND_0_85
|
||||
wl_resource_destroy(resource, 0);
|
||||
#else
|
||||
wl_resource_destroy(resource);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef HAS_WAYLAND_0_85
|
||||
static void
|
||||
buffer_damage(struct wl_client *client, struct wl_resource *buffer,
|
||||
int32_t x, int32_t y, int32_t width, int32_t height)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
const static struct wl_buffer_interface drm_buffer_interface = {
|
||||
#ifdef HAS_WAYLAND_0_85
|
||||
buffer_damage,
|
||||
#endif
|
||||
buffer_destroy
|
||||
};
|
||||
|
||||
|
@@ -24,17 +24,9 @@ struct wl_egl_window {
|
||||
|
||||
int attached_width;
|
||||
int attached_height;
|
||||
};
|
||||
|
||||
struct wl_egl_pixmap {
|
||||
struct wl_buffer *buffer;
|
||||
|
||||
int width;
|
||||
int height;
|
||||
|
||||
void (*destroy) (struct wl_egl_pixmap *egl_pixmap);
|
||||
|
||||
void *driver_private;
|
||||
void *private;
|
||||
void (*resize_callback)(struct wl_egl_window *, void *);
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@@ -13,6 +13,9 @@ wl_egl_window_resize(struct wl_egl_window *egl_window,
|
||||
egl_window->height = height;
|
||||
egl_window->dx = dx;
|
||||
egl_window->dy = dy;
|
||||
|
||||
if (egl_window->resize_callback)
|
||||
egl_window->resize_callback(egl_window, egl_window->private);
|
||||
}
|
||||
|
||||
WL_EGL_EXPORT struct wl_egl_window *
|
||||
@@ -26,6 +29,8 @@ wl_egl_window_create(struct wl_surface *surface,
|
||||
return NULL;
|
||||
|
||||
egl_window->surface = surface;
|
||||
egl_window->private = NULL;
|
||||
egl_window->resize_callback = NULL;
|
||||
wl_egl_window_resize(egl_window, width, height, 0, 0);
|
||||
egl_window->attached_width = 0;
|
||||
egl_window->attached_height = 0;
|
||||
@@ -48,36 +53,3 @@ wl_egl_window_get_attached_size(struct wl_egl_window *egl_window,
|
||||
if (height)
|
||||
*height = egl_window->attached_height;
|
||||
}
|
||||
|
||||
WL_EGL_EXPORT struct wl_egl_pixmap *
|
||||
wl_egl_pixmap_create(int width, int height, uint32_t flags)
|
||||
{
|
||||
struct wl_egl_pixmap *egl_pixmap;
|
||||
|
||||
egl_pixmap = malloc(sizeof *egl_pixmap);
|
||||
if (egl_pixmap == NULL)
|
||||
return NULL;
|
||||
|
||||
egl_pixmap->width = width;
|
||||
egl_pixmap->height = height;
|
||||
|
||||
egl_pixmap->destroy = NULL;
|
||||
egl_pixmap->buffer = NULL;
|
||||
egl_pixmap->driver_private = NULL;
|
||||
|
||||
return egl_pixmap;
|
||||
}
|
||||
|
||||
WL_EGL_EXPORT void
|
||||
wl_egl_pixmap_destroy(struct wl_egl_pixmap *egl_pixmap)
|
||||
{
|
||||
if (egl_pixmap->destroy)
|
||||
egl_pixmap->destroy(egl_pixmap);
|
||||
free(egl_pixmap);
|
||||
}
|
||||
|
||||
WL_EGL_EXPORT struct wl_buffer *
|
||||
wl_egl_pixmap_create_buffer(struct wl_egl_pixmap *egl_pixmap)
|
||||
{
|
||||
return egl_pixmap->buffer;
|
||||
}
|
||||
|
@@ -13,6 +13,11 @@ C_SOURCES += \
|
||||
$(GALLIVM_SOURCES)
|
||||
CPP_SOURCES += \
|
||||
$(GALLIVM_CPP_SOURCES)
|
||||
|
||||
# LLVM >= 3.2 requires -fno-rtti
|
||||
ifeq ($(shell expr `echo $(LLVM_VERSION) | sed -e 's/\([0-9]\)\.\([0-9]\)/\10\2/g'` \>= 302),1)
|
||||
CXXFLAGS += -fno-rtti
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
|
@@ -621,7 +621,7 @@ draw_set_indexes(struct draw_context *draw,
|
||||
elem_size == 2 ||
|
||||
elem_size == 4);
|
||||
draw->pt.user.elts = elements;
|
||||
draw->pt.user.eltSize = elem_size;
|
||||
draw->pt.user.eltSizeIB = elem_size;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -195,6 +195,7 @@ static struct draw_stage *validate_pipeline( struct draw_stage *stage )
|
||||
if (rast->line_smooth && draw->pipeline.aaline) {
|
||||
draw->pipeline.aaline->next = next;
|
||||
next = draw->pipeline.aaline;
|
||||
precalc_flat = TRUE;
|
||||
}
|
||||
|
||||
if (rast->point_smooth && draw->pipeline.aapoint) {
|
||||
|
@@ -174,6 +174,7 @@ struct draw_context
|
||||
/** vertex element/index buffer (ex: glDrawElements) */
|
||||
const void *elts;
|
||||
/** bytes per index (0, 1, 2 or 4) */
|
||||
unsigned eltSizeIB;
|
||||
unsigned eltSize;
|
||||
int eltBias;
|
||||
unsigned min_index;
|
||||
|
@@ -362,7 +362,7 @@ draw_pt_arrays_restart(struct draw_context *draw,
|
||||
|
||||
assert(info->primitive_restart);
|
||||
|
||||
if (draw->pt.user.elts) {
|
||||
if (draw->pt.user.eltSize) {
|
||||
/* indexed prims (draw_elements) */
|
||||
cur_start = start;
|
||||
cur_count = 0;
|
||||
@@ -433,12 +433,8 @@ draw_arrays_instanced(struct draw_context *draw,
|
||||
info.count = count;
|
||||
info.start_instance = startInstance;
|
||||
info.instance_count = instanceCount;
|
||||
|
||||
info.indexed = (draw->pt.user.elts != NULL);
|
||||
if (!info.indexed) {
|
||||
info.min_index = start;
|
||||
info.max_index = start + count - 1;
|
||||
}
|
||||
info.min_index = start;
|
||||
info.max_index = start + count - 1;
|
||||
|
||||
draw_vbo(draw, &info);
|
||||
}
|
||||
@@ -465,6 +461,7 @@ draw_vbo(struct draw_context *draw,
|
||||
draw->pt.user.eltBias = info->index_bias;
|
||||
draw->pt.user.min_index = info->min_index;
|
||||
draw->pt.user.max_index = info->max_index;
|
||||
draw->pt.user.eltSize = info->indexed ? draw->pt.user.eltSizeIB : 0;
|
||||
|
||||
if (0)
|
||||
debug_printf("draw_vbo(mode=%u start=%u count=%u):\n",
|
||||
|
@@ -189,7 +189,7 @@ draw_pt_fetch_run_linear(struct pt_fetch *fetch,
|
||||
((char *)draw->pt.user.vbuffer[i] +
|
||||
draw->pt.vertex_buffer[i].buffer_offset),
|
||||
draw->pt.vertex_buffer[i].stride,
|
||||
draw->pt.user.max_index + draw->pt.user.eltBias);
|
||||
draw->pt.max_index);
|
||||
}
|
||||
|
||||
translate->run( translate,
|
||||
|
@@ -42,6 +42,7 @@
|
||||
#include "pipe/p_compiler.h"
|
||||
#include "pipe/p_state.h"
|
||||
#include "util/u_debug.h"
|
||||
#include "util/u_memory.h"
|
||||
|
||||
|
||||
/**
|
||||
@@ -87,7 +88,7 @@ struct vertex_info
|
||||
unsigned interp_mode:4; /**< INTERP_x */
|
||||
unsigned emit:4; /**< EMIT_x */
|
||||
unsigned src_index:8; /**< map to post-xform attribs */
|
||||
} attrib[PIPE_MAX_SHADER_INPUTS];
|
||||
} attrib[PIPE_MAX_SHADER_OUTPUTS];
|
||||
};
|
||||
|
||||
static INLINE size_t
|
||||
@@ -127,7 +128,7 @@ draw_emit_vertex_attr(struct vertex_info *vinfo,
|
||||
uint src_index)
|
||||
{
|
||||
const uint n = vinfo->num_attribs;
|
||||
assert(n < PIPE_MAX_SHADER_INPUTS);
|
||||
assert(n < Elements(vinfo->attrib));
|
||||
vinfo->attrib[n].emit = emit;
|
||||
vinfo->attrib[n].interp_mode = interp;
|
||||
vinfo->attrib[n].src_index = src_index;
|
||||
|
@@ -47,7 +47,7 @@ struct analysis_context
|
||||
struct lp_tgsi_info *info;
|
||||
|
||||
unsigned num_imms;
|
||||
float imm[32][4];
|
||||
float imm[128][4];
|
||||
|
||||
struct lp_tgsi_channel_info temp[32][4];
|
||||
};
|
||||
|
@@ -73,7 +73,7 @@ struct ureg_tokens {
|
||||
|
||||
#define UREG_MAX_INPUT PIPE_MAX_ATTRIBS
|
||||
#define UREG_MAX_SYSTEM_VALUE PIPE_MAX_ATTRIBS
|
||||
#define UREG_MAX_OUTPUT PIPE_MAX_ATTRIBS
|
||||
#define UREG_MAX_OUTPUT PIPE_MAX_SHADER_OUTPUTS
|
||||
#define UREG_MAX_CONSTANT_RANGE 32
|
||||
#define UREG_MAX_IMMEDIATE 256
|
||||
#define UREG_MAX_ADDR 2
|
||||
|
@@ -1213,6 +1213,21 @@ void util_blitter_copy_texture_view(struct blitter_context *blitter,
|
||||
pipe->bind_fragment_sampler_states(pipe, 2, samplers);
|
||||
|
||||
pipe_sampler_view_reference(&views[1], NULL);
|
||||
} else if (blit_stencil) {
|
||||
/* Set a stencil-only sampler view for it not to sample depth instead. */
|
||||
struct pipe_sampler_view templ;
|
||||
struct pipe_sampler_view *view;
|
||||
|
||||
templ = *src;
|
||||
templ.format = util_format_stencil_only(templ.format);
|
||||
assert(templ.format != PIPE_FORMAT_NONE);
|
||||
|
||||
view = pipe->create_sampler_view(pipe, src->texture, &templ);
|
||||
|
||||
pipe->set_fragment_sampler_views(pipe, 1, &view);
|
||||
pipe->bind_fragment_sampler_states(pipe, 1, &ctx->sampler_state);
|
||||
|
||||
pipe_sampler_view_reference(&view, NULL);
|
||||
} else {
|
||||
pipe->set_fragment_sampler_views(pipe, 1, &src);
|
||||
pipe->bind_fragment_sampler_states(pipe, 1, &ctx->sampler_state);
|
||||
|
@@ -82,6 +82,7 @@ static INLINE void list_del(struct list_head *item)
|
||||
{
|
||||
item->prev->next = item->next;
|
||||
item->next->prev = item->prev;
|
||||
item->prev = item->next = NULL;
|
||||
}
|
||||
|
||||
static INLINE void list_delinit(struct list_head *item)
|
||||
|
@@ -114,6 +114,22 @@ pipe_surface_reference(struct pipe_surface **ptr, struct pipe_surface *surf)
|
||||
*ptr = surf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Similar to pipe_surface_reference() but always set the pointer to NULL
|
||||
* and pass in an explicit context. The explicit context avoids the problem
|
||||
* of using a deleted context's surface_destroy() method when freeing a surface
|
||||
* that's shared by multiple contexts.
|
||||
*/
|
||||
static INLINE void
|
||||
pipe_surface_release(struct pipe_context *pipe, struct pipe_surface **ptr)
|
||||
{
|
||||
if (pipe_reference_described(&(*ptr)->reference, NULL,
|
||||
(debug_reference_descriptor)debug_describe_surface))
|
||||
pipe->surface_destroy(pipe, *ptr);
|
||||
*ptr = NULL;
|
||||
}
|
||||
|
||||
|
||||
static INLINE void
|
||||
pipe_resource_reference(struct pipe_resource **ptr, struct pipe_resource *tex)
|
||||
{
|
||||
|
@@ -701,6 +701,28 @@ pipe_get_tile_z(struct pipe_context *pipe,
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT:
|
||||
{
|
||||
const float *ptrc = (const float *)(map + y * pt->stride + x*8);
|
||||
for (i = 0; i < h; i++) {
|
||||
for (j = 0; j < w; j++) {
|
||||
/* convert float Z to 32-bit Z */
|
||||
if (ptrc[j] <= 0.0) {
|
||||
pDest[j*2] = 0;
|
||||
}
|
||||
else if (ptrc[j] >= 1.0) {
|
||||
pDest[j*2] = 0xffffffff;
|
||||
}
|
||||
else {
|
||||
double z = ptrc[j] * 0xffffffff;
|
||||
pDest[j*2] = (uint) z;
|
||||
}
|
||||
}
|
||||
pDest += dstStride;
|
||||
ptrc += pt->stride/4;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
@@ -810,7 +832,7 @@ pipe_put_tile_z(struct pipe_context *pipe,
|
||||
break;
|
||||
case PIPE_FORMAT_Z32_FLOAT:
|
||||
{
|
||||
float *pDest = (float *) (map + y * pt->stride + x*2);
|
||||
float *pDest = (float *) (map + y * pt->stride + x*4);
|
||||
for (i = 0; i < h; i++) {
|
||||
for (j = 0; j < w; j++) {
|
||||
/* convert 32-bit integer Z to float Z */
|
||||
@@ -822,6 +844,20 @@ pipe_put_tile_z(struct pipe_context *pipe,
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT:
|
||||
{
|
||||
float *pDest = (float *) (map + y * pt->stride + x*8);
|
||||
for (i = 0; i < h; i++) {
|
||||
for (j = 0; j < w; j++) {
|
||||
/* convert 32-bit integer Z to float Z */
|
||||
const double scale = 1.0 / 0xffffffffU;
|
||||
pDest[j*2] = ptrc[j] * scale;
|
||||
}
|
||||
pDest += pt->stride/4;
|
||||
ptrc += srcStride;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
|
@@ -164,6 +164,13 @@ enum pipe_error u_upload_alloc( struct u_upload_mgr *upload,
|
||||
unsigned alloc_offset = align(min_out_offset, upload->alignment);
|
||||
unsigned offset;
|
||||
|
||||
/* Init these return values here in case we fail below to make
|
||||
* sure the caller doesn't get garbage values.
|
||||
*/
|
||||
*out_offset = ~0;
|
||||
pipe_resource_reference(outbuf, NULL);
|
||||
*ptr = NULL;
|
||||
|
||||
/* Make sure we have enough space in the upload buffer
|
||||
* for the sub-allocation. */
|
||||
if (MAX2(upload->offset, alloc_offset) + alloc_size > upload->size) {
|
||||
@@ -183,8 +190,7 @@ enum pipe_error u_upload_alloc( struct u_upload_mgr *upload,
|
||||
PIPE_TRANSFER_UNSYNCHRONIZED,
|
||||
&upload->transfer);
|
||||
if (!upload->map) {
|
||||
pipe_resource_reference(outbuf, NULL);
|
||||
*ptr = NULL;
|
||||
upload->transfer = NULL;
|
||||
return PIPE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
|
@@ -256,7 +256,7 @@ void u_vbuf_destroy(struct u_vbuf *mgr)
|
||||
FREE(mgr);
|
||||
}
|
||||
|
||||
static void
|
||||
static enum pipe_error
|
||||
u_vbuf_translate_buffers(struct u_vbuf *mgr, struct translate_key *key,
|
||||
unsigned vb_mask, unsigned out_vb,
|
||||
int start_vertex, unsigned num_vertices,
|
||||
@@ -267,7 +267,8 @@ u_vbuf_translate_buffers(struct u_vbuf *mgr, struct translate_key *key,
|
||||
struct pipe_transfer *vb_transfer[PIPE_MAX_ATTRIBS] = {0};
|
||||
struct pipe_resource *out_buffer = NULL;
|
||||
uint8_t *out_map;
|
||||
unsigned i, out_offset;
|
||||
unsigned out_offset, i;
|
||||
enum pipe_error err;
|
||||
|
||||
/* Get a translate object. */
|
||||
tr = translate_cache_find(mgr->translate_cache, key);
|
||||
@@ -311,6 +312,14 @@ u_vbuf_translate_buffers(struct u_vbuf *mgr, struct translate_key *key,
|
||||
|
||||
assert((ib->buffer || ib->user_buffer) && ib->index_size);
|
||||
|
||||
/* Create and map the output buffer. */
|
||||
err = u_upload_alloc(mgr->uploader, 0,
|
||||
key->output_stride * num_indices,
|
||||
&out_offset, &out_buffer,
|
||||
(void**)&out_map);
|
||||
if (err != PIPE_OK)
|
||||
return err;
|
||||
|
||||
if (ib->user_buffer) {
|
||||
map = (uint8_t*)ib->user_buffer + offset;
|
||||
} else {
|
||||
@@ -319,12 +328,6 @@ u_vbuf_translate_buffers(struct u_vbuf *mgr, struct translate_key *key,
|
||||
PIPE_TRANSFER_READ, &transfer);
|
||||
}
|
||||
|
||||
/* Create and map the output buffer. */
|
||||
u_upload_alloc(mgr->uploader, 0,
|
||||
key->output_stride * num_indices,
|
||||
&out_offset, &out_buffer,
|
||||
(void**)&out_map);
|
||||
|
||||
switch (ib->index_size) {
|
||||
case 4:
|
||||
tr->run_elts(tr, (unsigned*)map, num_indices, 0, out_map);
|
||||
@@ -342,11 +345,13 @@ u_vbuf_translate_buffers(struct u_vbuf *mgr, struct translate_key *key,
|
||||
}
|
||||
} else {
|
||||
/* Create and map the output buffer. */
|
||||
u_upload_alloc(mgr->uploader,
|
||||
key->output_stride * start_vertex,
|
||||
key->output_stride * num_vertices,
|
||||
&out_offset, &out_buffer,
|
||||
(void**)&out_map);
|
||||
err = u_upload_alloc(mgr->uploader,
|
||||
key->output_stride * start_vertex,
|
||||
key->output_stride * num_vertices,
|
||||
&out_offset, &out_buffer,
|
||||
(void**)&out_map);
|
||||
if (err != PIPE_OK)
|
||||
return err;
|
||||
|
||||
out_offset -= key->output_stride * start_vertex;
|
||||
|
||||
@@ -368,6 +373,8 @@ u_vbuf_translate_buffers(struct u_vbuf *mgr, struct translate_key *key,
|
||||
pipe_resource_reference(
|
||||
&mgr->real_vertex_buffer[out_vb].buffer, NULL);
|
||||
mgr->real_vertex_buffer[out_vb].buffer = out_buffer;
|
||||
|
||||
return PIPE_OK;
|
||||
}
|
||||
|
||||
static boolean
|
||||
@@ -512,11 +519,14 @@ u_vbuf_translate_begin(struct u_vbuf *mgr,
|
||||
/* Translate buffers. */
|
||||
for (type = 0; type < VB_NUM; type++) {
|
||||
if (key[type].nr_elements) {
|
||||
u_vbuf_translate_buffers(mgr, &key[type], mask[type],
|
||||
mgr->fallback_vbs[type],
|
||||
start[type], num[type],
|
||||
start_index, num_indices, min_index,
|
||||
unroll_indices && type == VB_VERTEX);
|
||||
enum pipe_error err;
|
||||
err = u_vbuf_translate_buffers(mgr, &key[type], mask[type],
|
||||
mgr->fallback_vbs[type],
|
||||
start[type], num[type],
|
||||
start_index, num_indices, min_index,
|
||||
unroll_indices && type == VB_VERTEX);
|
||||
if (err != PIPE_OK)
|
||||
return FALSE;
|
||||
|
||||
/* Fixup the stride for constant attribs. */
|
||||
if (type == VB_CONST) {
|
||||
@@ -775,7 +785,7 @@ void u_vbuf_set_index_buffer(struct u_vbuf *mgr,
|
||||
pipe->set_index_buffer(pipe, ib);
|
||||
}
|
||||
|
||||
static void
|
||||
static enum pipe_error
|
||||
u_vbuf_upload_buffers(struct u_vbuf *mgr,
|
||||
int start_vertex, unsigned num_vertices,
|
||||
int start_instance, unsigned num_instances)
|
||||
@@ -840,6 +850,7 @@ u_vbuf_upload_buffers(struct u_vbuf *mgr,
|
||||
unsigned start, end = end_offset[i];
|
||||
struct pipe_vertex_buffer *real_vb;
|
||||
const uint8_t *ptr;
|
||||
enum pipe_error err;
|
||||
|
||||
if (!end) {
|
||||
continue;
|
||||
@@ -851,11 +862,15 @@ u_vbuf_upload_buffers(struct u_vbuf *mgr,
|
||||
real_vb = &mgr->real_vertex_buffer[i];
|
||||
ptr = mgr->vertex_buffer[i].user_buffer;
|
||||
|
||||
u_upload_data(mgr->uploader, start, end - start, ptr + start,
|
||||
&real_vb->buffer_offset, &real_vb->buffer);
|
||||
err = u_upload_data(mgr->uploader, start, end - start, ptr + start,
|
||||
&real_vb->buffer_offset, &real_vb->buffer);
|
||||
if (err != PIPE_OK)
|
||||
return err;
|
||||
|
||||
real_vb->buffer_offset -= start;
|
||||
}
|
||||
|
||||
return PIPE_OK;
|
||||
}
|
||||
|
||||
static boolean u_vbuf_need_minmax_index(struct u_vbuf *mgr)
|
||||
@@ -1048,11 +1063,13 @@ void u_vbuf_draw_vbo(struct u_vbuf *mgr, const struct pipe_draw_info *info)
|
||||
if (unroll_indices ||
|
||||
mgr->incompatible_vb_mask ||
|
||||
mgr->ve->incompatible_elem_mask) {
|
||||
/* XXX check the return value */
|
||||
u_vbuf_translate_begin(mgr, start_vertex, num_vertices,
|
||||
info->start_instance, info->instance_count,
|
||||
info->start, info->count, min_index,
|
||||
unroll_indices);
|
||||
if (!u_vbuf_translate_begin(mgr, start_vertex, num_vertices,
|
||||
info->start_instance, info->instance_count,
|
||||
info->start, info->count, min_index,
|
||||
unroll_indices)) {
|
||||
debug_warn_once("u_vbuf_translate_begin() failed");
|
||||
return;
|
||||
}
|
||||
|
||||
user_vb_mask &= ~(mgr->incompatible_vb_mask |
|
||||
mgr->ve->incompatible_vb_mask_all);
|
||||
@@ -1060,8 +1077,12 @@ void u_vbuf_draw_vbo(struct u_vbuf *mgr, const struct pipe_draw_info *info)
|
||||
|
||||
/* Upload user buffers. */
|
||||
if (user_vb_mask) {
|
||||
u_vbuf_upload_buffers(mgr, start_vertex, num_vertices,
|
||||
info->start_instance, info->instance_count);
|
||||
if (u_vbuf_upload_buffers(mgr, start_vertex, num_vertices,
|
||||
info->start_instance,
|
||||
info->instance_count) != PIPE_OK) {
|
||||
debug_warn_once("u_vbuf_upload_buffers() failed");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -7,6 +7,8 @@ AM_CPPFLAGS = \
|
||||
$(DEFINES) \
|
||||
$(PIC_FLAGS)
|
||||
|
||||
AM_CFLAGS = $(VISIBILITY_CFLAGS)
|
||||
|
||||
noinst_LIBRARIES =
|
||||
|
||||
SUBDIRS =
|
||||
|
@@ -273,11 +273,17 @@ lp_build_stencil_op(struct lp_build_context *bld,
|
||||
res = lp_build_select(bld, front_facing, res, back_res);
|
||||
}
|
||||
|
||||
/* XXX what about the back-face writemask? */
|
||||
if (stencil[0].writemask != 0xff) {
|
||||
if (stencil[0].writemask != 0xff ||
|
||||
(stencil[1].enabled && front_facing != NULL && stencil[1].writemask != 0xff)) {
|
||||
/* mask &= stencil[0].writemask */
|
||||
LLVMValueRef writemask = lp_build_const_int_vec(bld->gallivm, bld->type,
|
||||
stencil[0].writemask);
|
||||
if (stencil[1].enabled && stencil[1].writemask != stencil[0].writemask && front_facing != NULL) {
|
||||
LLVMValueRef back_writemask = lp_build_const_int_vec(bld->gallivm, bld->type,
|
||||
stencil[1].writemask);
|
||||
writemask = lp_build_select(bld, front_facing, writemask, back_writemask);
|
||||
}
|
||||
|
||||
mask = LLVMBuildAnd(builder, mask, writemask, "");
|
||||
/* res = (res & mask) | (stencilVals & ~mask) */
|
||||
res = lp_build_select_bitwise(bld, mask, res, stencilVals);
|
||||
|
@@ -56,8 +56,7 @@ nv30_miptree_get_handle(struct pipe_screen *pscreen,
|
||||
if (!mt || !mt->base.bo)
|
||||
return FALSE;
|
||||
|
||||
stride = util_format_get_stride(mt->base.base.format,
|
||||
mt->base.base.width0);
|
||||
stride = mt->level[0].pitch;
|
||||
|
||||
return nouveau_screen_bo_get_handle(pscreen, mt->base.bo, stride, handle);
|
||||
}
|
||||
|
@@ -241,6 +241,8 @@ nv30_screen_is_format_supported(struct pipe_screen *pscreen,
|
||||
unsigned sample_count,
|
||||
unsigned bindings)
|
||||
{
|
||||
if (sample_count > 4)
|
||||
return FALSE;
|
||||
if (!(0x00000017 & (1 << sample_count)))
|
||||
return FALSE;
|
||||
|
||||
|
@@ -715,7 +715,9 @@ Instruction::clone(ClonePolicy<Function>& pol, Instruction *i) const
|
||||
{
|
||||
if (!i)
|
||||
i = new_Instruction(pol.context(), op, dType);
|
||||
#ifndef NDEBUG // non-conformant assert, so this is required
|
||||
assert(typeid(*i) == typeid(*this));
|
||||
#endif
|
||||
|
||||
pol.set<Instruction>(this, i);
|
||||
|
||||
|
@@ -1284,6 +1284,9 @@ CodeEmitterNV50::emitLogicOp(const Instruction *i)
|
||||
assert(i->op == OP_AND);
|
||||
break;
|
||||
}
|
||||
if (i->src(0).mod & Modifier(NV50_IR_MOD_NOT))
|
||||
code[0] |= 1 << 22;
|
||||
|
||||
emitForm_IMM(i);
|
||||
} else {
|
||||
switch (i->op) {
|
||||
|
@@ -257,7 +257,7 @@ unsigned int Instruction::srcMask(unsigned int s) const
|
||||
mask &= 0x9;
|
||||
break;
|
||||
case TGSI_TEXTURE_SHADOW1D:
|
||||
mask &= 0x5;
|
||||
mask &= 0xd;
|
||||
break;
|
||||
case TGSI_TEXTURE_1D_ARRAY:
|
||||
case TGSI_TEXTURE_2D:
|
||||
|
@@ -323,6 +323,12 @@ TargetNV50::insnCanLoad(const Instruction *i, int s,
|
||||
ldSize = typeSizeof(ld->dType);
|
||||
}
|
||||
|
||||
if (sf == FILE_IMMEDIATE)
|
||||
return true;
|
||||
|
||||
|
||||
// Check if memory access is encodable:
|
||||
|
||||
if (ldSize < 4 && sf == FILE_SHADER_INPUT) // no < 4-byte aligned a[] access
|
||||
return false;
|
||||
if (ld->getSrc(0)->reg.data.offset > (int32_t)(127 * ldSize))
|
||||
|
@@ -133,8 +133,7 @@ nv50_miptree_get_handle(struct pipe_screen *pscreen,
|
||||
if (!mt || !mt->base.bo)
|
||||
return FALSE;
|
||||
|
||||
stride = util_format_get_stride(mt->base.base.format,
|
||||
mt->base.base.width0);
|
||||
stride = mt->level[0].pitch;
|
||||
|
||||
return nouveau_screen_bo_get_handle(pscreen,
|
||||
mt->base.bo,
|
||||
|
@@ -50,6 +50,8 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
|
||||
unsigned sample_count,
|
||||
unsigned bindings)
|
||||
{
|
||||
if (sample_count > 8)
|
||||
return FALSE;
|
||||
if (!(0x117 & (1 << sample_count))) /* 0, 1, 2, 4 or 8 */
|
||||
return FALSE;
|
||||
if (sample_count == 8 && util_format_get_blocksizebits(format) >= 128)
|
||||
@@ -454,6 +456,18 @@ nv50_screen_init_hwctx(struct nv50_screen *screen)
|
||||
PUSH_DATA (push, (NV50_CB_AUX << 12) | 0xf21);
|
||||
PUSH_DATA (push, (NV50_CB_AUX << 12) | 0xf31);
|
||||
|
||||
/* return { 0.0, 0.0, 0.0, 0.0 } on out-of-bounds vtxbuf access */
|
||||
BEGIN_NV04(push, NV50_3D(CB_ADDR), 1);
|
||||
PUSH_DATA (push, ((1 << 9) << 6) | NV50_CB_AUX);
|
||||
BEGIN_NI04(push, NV50_3D(CB_DATA(0)), 4);
|
||||
PUSH_DATAf(push, 0.0f);
|
||||
PUSH_DATAf(push, 0.0f);
|
||||
PUSH_DATAf(push, 0.0f);
|
||||
PUSH_DATAf(push, 0.0f);
|
||||
BEGIN_NV04(push, NV50_3D(VERTEX_RUNOUT_ADDRESS_HIGH), 2);
|
||||
PUSH_DATAh(push, screen->uniforms->offset + (3 << 16) + (1 << 9));
|
||||
PUSH_DATA (push, screen->uniforms->offset + (3 << 16) + (1 << 9));
|
||||
|
||||
/* max TIC (bits 4:8) & TSC bindings, per program type */
|
||||
for (i = 0; i < 3; ++i) {
|
||||
BEGIN_NV04(push, NV50_3D(TEX_LIMITS(i)), 1);
|
||||
|
@@ -183,6 +183,7 @@ nvc0_create(struct pipe_screen *pscreen, void *priv)
|
||||
BCTX_REFN_bo(nvc0->bufctx_3d, SCREEN, flags, screen->text);
|
||||
BCTX_REFN_bo(nvc0->bufctx_3d, SCREEN, flags, screen->uniform_bo);
|
||||
BCTX_REFN_bo(nvc0->bufctx_3d, SCREEN, flags, screen->txc);
|
||||
BCTX_REFN_bo(nvc0->bufctx_3d, SCREEN, flags, screen->poly_cache);
|
||||
|
||||
flags = NOUVEAU_BO_GART | NOUVEAU_BO_WR;
|
||||
|
||||
|
@@ -39,6 +39,8 @@ nvc0_screen_is_format_supported(struct pipe_screen *pscreen,
|
||||
unsigned sample_count,
|
||||
unsigned bindings)
|
||||
{
|
||||
if (sample_count > 8)
|
||||
return FALSE;
|
||||
if (!(0x117 & (1 << sample_count))) /* 0, 1, 2, 4 or 8 */
|
||||
return FALSE;
|
||||
|
||||
@@ -428,6 +430,7 @@ nvc0_screen_create(struct nouveau_device *dev)
|
||||
chan = screen->base.channel;
|
||||
push = screen->base.pushbuf;
|
||||
push->user_priv = screen;
|
||||
push->rsvd_kick = 5;
|
||||
|
||||
screen->base.vidmem_bindings |= PIPE_BIND_CONSTANT_BUFFER |
|
||||
PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_INDEX_BUFFER;
|
||||
@@ -589,7 +592,7 @@ nvc0_screen_create(struct nouveau_device *dev)
|
||||
|
||||
for (i = 0; i < 5; ++i) {
|
||||
/* TIC and TSC entries for each unit (nve4+ only) */
|
||||
/* auxiliary constants (6 user clip planes, base instance id */
|
||||
/* auxiliary constants (6 user clip planes, base instance id) */
|
||||
BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
|
||||
PUSH_DATA (push, 512);
|
||||
PUSH_DATAh(push, screen->uniform_bo->offset + (5 << 16) + (i << 9));
|
||||
@@ -610,6 +613,21 @@ nvc0_screen_create(struct nouveau_device *dev)
|
||||
BEGIN_NVC0(push, NVC0_3D(LINKED_TSC), 1);
|
||||
PUSH_DATA (push, 0);
|
||||
|
||||
/* return { 0.0, 0.0, 0.0, 0.0 } for out-of-bounds vtxbuf access */
|
||||
BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
|
||||
PUSH_DATA (push, 256);
|
||||
PUSH_DATAh(push, screen->uniform_bo->offset + (5 << 16) + (6 << 9));
|
||||
PUSH_DATA (push, screen->uniform_bo->offset + (5 << 16) + (6 << 9));
|
||||
BEGIN_1IC0(push, NVC0_3D(CB_POS), 5);
|
||||
PUSH_DATA (push, 0);
|
||||
PUSH_DATAf(push, 0.0f);
|
||||
PUSH_DATAf(push, 0.0f);
|
||||
PUSH_DATAf(push, 0.0f);
|
||||
PUSH_DATAf(push, 0.0f);
|
||||
BEGIN_NVC0(push, NVC0_3D(VERTEX_RUNOUT_ADDRESS_HIGH), 2);
|
||||
PUSH_DATAh(push, screen->uniform_bo->offset + (5 << 16) + (6 << 9));
|
||||
PUSH_DATA (push, screen->uniform_bo->offset + (5 << 16) + (6 << 9));
|
||||
|
||||
/* max MPs * max warps per MP (TODO: ask kernel) */
|
||||
if (screen->eng3d->oclass >= NVE4_3D_CLASS)
|
||||
screen->tls_size = 8 * 64;
|
||||
@@ -734,10 +752,6 @@ nvc0_screen_create(struct nouveau_device *dev)
|
||||
|
||||
IMMED_NVC0(push, NVC0_3D(EDGEFLAG), 1);
|
||||
|
||||
BEGIN_NVC0(push, NVC0_3D(VERTEX_RUNOUT_ADDRESS_HIGH), 2);
|
||||
PUSH_DATA (push, 0xab);
|
||||
PUSH_DATA (push, 0x00000000);
|
||||
|
||||
PUSH_KICK (push);
|
||||
|
||||
screen->tic.entries = CALLOC(4096, sizeof(void *));
|
||||
|
@@ -439,6 +439,9 @@ nvc0_push_vbo(struct nvc0_context *nvc0, const struct pipe_draw_info *info)
|
||||
|
||||
nvc0_vertex_configure_translate(nvc0, info->index_bias);
|
||||
|
||||
if (unlikely(ctx.edgeflag.enabled))
|
||||
nvc0_push_map_edgeflag(&ctx, nvc0, info->index_bias);
|
||||
|
||||
ctx.prim_restart = info->primitive_restart;
|
||||
ctx.restart_index = info->restart_index;
|
||||
|
||||
|
@@ -13,6 +13,7 @@ AM_CFLAGS = \
|
||||
-I$(top_srcdir)/src/mesa \
|
||||
-I$(top_srcdir)/src/glsl \
|
||||
-I$(top_srcdir)/src/mapi \
|
||||
$(VISIBILITY_CFLAGS) \
|
||||
$(LLVM_CFLAGS) \
|
||||
$(RADEON_CFLAGS) \
|
||||
$(DEFINES) \
|
||||
|
@@ -41,6 +41,16 @@ struct r300_fragment_shader;
|
||||
struct r300_vertex_shader;
|
||||
struct r300_stencilref_context;
|
||||
|
||||
enum colormask_swizzle {
|
||||
COLORMASK_BGRA,
|
||||
COLORMASK_RGBA,
|
||||
COLORMASK_RRRR,
|
||||
COLORMASK_AAAA,
|
||||
COLORMASK_GRRG,
|
||||
COLORMASK_ARRA,
|
||||
COLORMASK_NUM_SWIZZLES
|
||||
};
|
||||
|
||||
struct r300_atom {
|
||||
/* Name, for debugging. */
|
||||
const char* name;
|
||||
@@ -66,7 +76,7 @@ struct r300_aa_state {
|
||||
struct r300_blend_state {
|
||||
struct pipe_blend_state state;
|
||||
|
||||
uint32_t cb_clamp[8];
|
||||
uint32_t cb_clamp[COLORMASK_NUM_SWIZZLES][8];
|
||||
uint32_t cb_noclamp[8];
|
||||
uint32_t cb_no_readwrite[8];
|
||||
};
|
||||
@@ -320,6 +330,8 @@ struct r300_surface {
|
||||
|
||||
/* Whether the CBZB clear is allowed on the surface. */
|
||||
boolean cbzb_allowed;
|
||||
|
||||
unsigned colormask_swizzle;
|
||||
};
|
||||
|
||||
struct r300_texture_desc {
|
||||
|
@@ -45,10 +45,12 @@ void r300_emit_blend_state(struct r300_context* r300,
|
||||
CS_LOCALS(r300);
|
||||
|
||||
if (fb->nr_cbufs) {
|
||||
if (fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16A16_FLOAT)
|
||||
if (fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16A16_FLOAT) {
|
||||
WRITE_CS_TABLE(blend->cb_noclamp, size);
|
||||
else
|
||||
WRITE_CS_TABLE(blend->cb_clamp, size);
|
||||
} else {
|
||||
unsigned swz = r300_surface(fb->cbufs[0])->colormask_swizzle;
|
||||
WRITE_CS_TABLE(blend->cb_clamp[swz], size);
|
||||
}
|
||||
} else {
|
||||
WRITE_CS_TABLE(blend->cb_no_readwrite, size);
|
||||
}
|
||||
|
@@ -169,15 +169,52 @@ static boolean blend_discard_if_src_alpha_color_1(unsigned srcRGB, unsigned srcA
|
||||
dstA == PIPE_BLENDFACTOR_ONE);
|
||||
}
|
||||
|
||||
/* The hardware colormask is clunky a must be swizzled depending on the format.
|
||||
* This was figured out by trial-and-error. */
|
||||
static unsigned bgra_cmask(unsigned mask)
|
||||
{
|
||||
/* Gallium uses RGBA color ordering while R300 expects BGRA. */
|
||||
|
||||
return ((mask & PIPE_MASK_R) << 2) |
|
||||
((mask & PIPE_MASK_B) >> 2) |
|
||||
(mask & (PIPE_MASK_G | PIPE_MASK_A));
|
||||
}
|
||||
|
||||
static unsigned rgba_cmask(unsigned mask)
|
||||
{
|
||||
return mask & PIPE_MASK_RGBA;
|
||||
}
|
||||
|
||||
static unsigned rrrr_cmask(unsigned mask)
|
||||
{
|
||||
return (mask & PIPE_MASK_R) |
|
||||
((mask & PIPE_MASK_R) << 1) |
|
||||
((mask & PIPE_MASK_R) << 2) |
|
||||
((mask & PIPE_MASK_R) << 3);
|
||||
}
|
||||
|
||||
static unsigned aaaa_cmask(unsigned mask)
|
||||
{
|
||||
return ((mask & PIPE_MASK_A) >> 3) |
|
||||
((mask & PIPE_MASK_A) >> 2) |
|
||||
((mask & PIPE_MASK_A) >> 1) |
|
||||
(mask & PIPE_MASK_A);
|
||||
}
|
||||
|
||||
static unsigned grrg_cmask(unsigned mask)
|
||||
{
|
||||
return ((mask & PIPE_MASK_R) << 1) |
|
||||
((mask & PIPE_MASK_R) << 2) |
|
||||
((mask & PIPE_MASK_G) >> 1) |
|
||||
((mask & PIPE_MASK_G) << 2);
|
||||
}
|
||||
|
||||
static unsigned arra_cmask(unsigned mask)
|
||||
{
|
||||
return ((mask & PIPE_MASK_R) << 1) |
|
||||
((mask & PIPE_MASK_R) << 2) |
|
||||
((mask & PIPE_MASK_A) >> 3) |
|
||||
(mask & PIPE_MASK_A);
|
||||
}
|
||||
|
||||
/* Create a new blend state based on the CSO blend state.
|
||||
*
|
||||
* This encompasses alpha blending, logic/raster ops, and blend dithering. */
|
||||
@@ -190,9 +227,9 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
|
||||
uint32_t blend_control_noclamp = 0; /* R300_RB3D_CBLEND: 0x4e04 */
|
||||
uint32_t alpha_blend_control = 0; /* R300_RB3D_ABLEND: 0x4e08 */
|
||||
uint32_t alpha_blend_control_noclamp = 0; /* R300_RB3D_ABLEND: 0x4e08 */
|
||||
uint32_t color_channel_mask = 0; /* R300_RB3D_COLOR_CHANNEL_MASK: 0x4e0c */
|
||||
uint32_t rop = 0; /* R300_RB3D_ROPCNTL: 0x4e18 */
|
||||
uint32_t dither = 0; /* R300_RB3D_DITHER_CTL: 0x4e50 */
|
||||
int i;
|
||||
CB_LOCALS;
|
||||
|
||||
blend->state = *state;
|
||||
@@ -250,7 +287,11 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
|
||||
dstRGB == PIPE_BLENDFACTOR_ZERO) &&
|
||||
(dstA == PIPE_BLENDFACTOR_SRC_COLOR ||
|
||||
dstA == PIPE_BLENDFACTOR_SRC_ALPHA ||
|
||||
dstA == PIPE_BLENDFACTOR_ZERO)) {
|
||||
dstA == PIPE_BLENDFACTOR_ZERO) &&
|
||||
(srcRGB != PIPE_BLENDFACTOR_DST_COLOR &&
|
||||
srcRGB != PIPE_BLENDFACTOR_DST_ALPHA &&
|
||||
srcRGB != PIPE_BLENDFACTOR_INV_DST_COLOR &&
|
||||
srcRGB != PIPE_BLENDFACTOR_INV_DST_ALPHA)) {
|
||||
blend_control |= R500_SRC_ALPHA_0_NO_READ;
|
||||
}
|
||||
|
||||
@@ -259,7 +300,11 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
|
||||
dstRGB == PIPE_BLENDFACTOR_ZERO) &&
|
||||
(dstA == PIPE_BLENDFACTOR_INV_SRC_COLOR ||
|
||||
dstA == PIPE_BLENDFACTOR_INV_SRC_ALPHA ||
|
||||
dstA == PIPE_BLENDFACTOR_ZERO)) {
|
||||
dstA == PIPE_BLENDFACTOR_ZERO) &&
|
||||
(srcRGB != PIPE_BLENDFACTOR_DST_COLOR &&
|
||||
srcRGB != PIPE_BLENDFACTOR_DST_ALPHA &&
|
||||
srcRGB != PIPE_BLENDFACTOR_INV_DST_COLOR &&
|
||||
srcRGB != PIPE_BLENDFACTOR_INV_DST_ALPHA)) {
|
||||
blend_control |= R500_SRC_ALPHA_1_NO_READ;
|
||||
}
|
||||
}
|
||||
@@ -331,20 +376,6 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
|
||||
(state->logicop_func) << R300_RB3D_ROPCNTL_ROP_SHIFT;
|
||||
}
|
||||
|
||||
/* Color channel masks for all MRTs. */
|
||||
color_channel_mask = bgra_cmask(state->rt[0].colormask);
|
||||
if (r300screen->caps.is_r500 && state->independent_blend_enable) {
|
||||
if (state->rt[1].blend_enable) {
|
||||
color_channel_mask |= bgra_cmask(state->rt[1].colormask) << 4;
|
||||
}
|
||||
if (state->rt[2].blend_enable) {
|
||||
color_channel_mask |= bgra_cmask(state->rt[2].colormask) << 8;
|
||||
}
|
||||
if (state->rt[3].blend_enable) {
|
||||
color_channel_mask |= bgra_cmask(state->rt[3].colormask) << 12;
|
||||
}
|
||||
}
|
||||
|
||||
/* Neither fglrx nor classic r300 ever set this, regardless of dithering
|
||||
* state. Since it's an optional implementation detail, we can leave it
|
||||
* out and never dither.
|
||||
@@ -358,14 +389,27 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
|
||||
*/
|
||||
|
||||
/* Build a command buffer. */
|
||||
BEGIN_CB(blend->cb_clamp, 8);
|
||||
OUT_CB_REG(R300_RB3D_ROPCNTL, rop);
|
||||
OUT_CB_REG_SEQ(R300_RB3D_CBLEND, 3);
|
||||
OUT_CB(blend_control);
|
||||
OUT_CB(alpha_blend_control);
|
||||
OUT_CB(color_channel_mask);
|
||||
OUT_CB_REG(R300_RB3D_DITHER_CTL, dither);
|
||||
END_CB;
|
||||
{
|
||||
unsigned (*func[COLORMASK_NUM_SWIZZLES])(unsigned) = {
|
||||
bgra_cmask,
|
||||
rgba_cmask,
|
||||
rrrr_cmask,
|
||||
aaaa_cmask,
|
||||
grrg_cmask,
|
||||
arra_cmask
|
||||
};
|
||||
|
||||
for (i = 0; i < COLORMASK_NUM_SWIZZLES; i++) {
|
||||
BEGIN_CB(blend->cb_clamp[i], 8);
|
||||
OUT_CB_REG(R300_RB3D_ROPCNTL, rop);
|
||||
OUT_CB_REG_SEQ(R300_RB3D_CBLEND, 3);
|
||||
OUT_CB(blend_control);
|
||||
OUT_CB(alpha_blend_control);
|
||||
OUT_CB(func[i](state->rt[0].colormask));
|
||||
OUT_CB_REG(R300_RB3D_DITHER_CTL, dither);
|
||||
END_CB;
|
||||
}
|
||||
}
|
||||
|
||||
/* Build a command buffer. */
|
||||
BEGIN_CB(blend->cb_noclamp, 8);
|
||||
@@ -373,7 +417,7 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
|
||||
OUT_CB_REG_SEQ(R300_RB3D_CBLEND, 3);
|
||||
OUT_CB(blend_control_noclamp);
|
||||
OUT_CB(alpha_blend_control_noclamp);
|
||||
OUT_CB(color_channel_mask);
|
||||
OUT_CB(rgba_cmask(state->rt[0].colormask));
|
||||
OUT_CB_REG(R300_RB3D_DITHER_CTL, dither);
|
||||
END_CB;
|
||||
|
||||
@@ -423,6 +467,7 @@ static void r300_set_blend_color(struct pipe_context* pipe,
|
||||
(struct r300_blend_color_state*)r300->blend_color_state.state;
|
||||
struct pipe_blend_color c;
|
||||
enum pipe_format format = fb->nr_cbufs ? fb->cbufs[0]->format : 0;
|
||||
float tmp;
|
||||
CB_LOCALS;
|
||||
|
||||
state->state = *color; /* Save it, so that we can reuse it in set_fb_state */
|
||||
@@ -449,6 +494,13 @@ static void r300_set_blend_color(struct pipe_context* pipe,
|
||||
c.color[2] = c.color[3];
|
||||
break;
|
||||
|
||||
case PIPE_FORMAT_R8G8B8A8_UNORM:
|
||||
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
||||
tmp = c.color[0];
|
||||
c.color[0] = c.color[2];
|
||||
c.color[2] = tmp;
|
||||
break;
|
||||
|
||||
default:;
|
||||
}
|
||||
}
|
||||
@@ -859,6 +911,9 @@ r300_set_framebuffer_state(struct pipe_context* pipe,
|
||||
/* Need to reset clamping or colormask. */
|
||||
r300_mark_atom_dirty(r300, &r300->blend_state);
|
||||
|
||||
/* Re-swizzle the blend color. */
|
||||
r300_set_blend_color(pipe, &((struct r300_blend_color_state*)r300->blend_color_state.state)->state);
|
||||
|
||||
/* If zsbuf is set from NULL to non-NULL or vice versa.. */
|
||||
if (!!old_state->zsbuf != !!state->zsbuf) {
|
||||
r300_mark_atom_dirty(r300, &r300->dsa_state);
|
||||
|
@@ -655,6 +655,12 @@ static uint32_t r300_get_border_color(enum pipe_format format,
|
||||
case PIPE_FORMAT_LATC2_UNORM:
|
||||
util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_UNORM, &uc);
|
||||
return uc.ui;
|
||||
case PIPE_FORMAT_DXT1_SRGB:
|
||||
case PIPE_FORMAT_DXT1_SRGBA:
|
||||
case PIPE_FORMAT_DXT3_SRGBA:
|
||||
case PIPE_FORMAT_DXT5_SRGBA:
|
||||
util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_SRGB, &uc);
|
||||
return uc.ui;
|
||||
default:
|
||||
util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_UNORM, &uc);
|
||||
return uc.ui;
|
||||
@@ -685,10 +691,18 @@ static uint32_t r300_get_border_color(enum pipe_format format,
|
||||
|
||||
default:
|
||||
case 8:
|
||||
if (desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED)
|
||||
util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_SNORM, &uc);
|
||||
else
|
||||
util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_UNORM, &uc);
|
||||
if (desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED) {
|
||||
util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_SNORM, &uc);
|
||||
} else if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) {
|
||||
if (desc->nr_channels == 2) {
|
||||
border_swizzled[3] = border_swizzled[1];
|
||||
util_pack_color(border_swizzled, PIPE_FORMAT_L8A8_SRGB, &uc);
|
||||
} else {
|
||||
util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_SRGB, &uc);
|
||||
}
|
||||
} else {
|
||||
util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_UNORM, &uc);
|
||||
}
|
||||
break;
|
||||
|
||||
case 10:
|
||||
|
@@ -704,10 +704,87 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format)
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t r300_translate_colormask_swizzle(enum pipe_format format)
|
||||
{
|
||||
switch (format) {
|
||||
case PIPE_FORMAT_A8_UNORM:
|
||||
case PIPE_FORMAT_A8_SNORM:
|
||||
case PIPE_FORMAT_A16_UNORM:
|
||||
case PIPE_FORMAT_A16_SNORM:
|
||||
case PIPE_FORMAT_A16_FLOAT:
|
||||
case PIPE_FORMAT_A32_FLOAT:
|
||||
return COLORMASK_AAAA;
|
||||
|
||||
case PIPE_FORMAT_I8_UNORM:
|
||||
case PIPE_FORMAT_I8_SNORM:
|
||||
case PIPE_FORMAT_L8_UNORM:
|
||||
case PIPE_FORMAT_L8_SNORM:
|
||||
case PIPE_FORMAT_R8_UNORM:
|
||||
case PIPE_FORMAT_R8_SNORM:
|
||||
case PIPE_FORMAT_R32_FLOAT:
|
||||
case PIPE_FORMAT_L32_FLOAT:
|
||||
case PIPE_FORMAT_I32_FLOAT:
|
||||
return COLORMASK_RRRR;
|
||||
|
||||
case PIPE_FORMAT_L8A8_SNORM:
|
||||
case PIPE_FORMAT_L8A8_UNORM:
|
||||
case PIPE_FORMAT_L16A16_UNORM:
|
||||
case PIPE_FORMAT_L16A16_SNORM:
|
||||
case PIPE_FORMAT_L16A16_FLOAT:
|
||||
case PIPE_FORMAT_L32A32_FLOAT:
|
||||
return COLORMASK_ARRA;
|
||||
|
||||
case PIPE_FORMAT_R8G8_SNORM:
|
||||
case PIPE_FORMAT_R8G8_UNORM:
|
||||
case PIPE_FORMAT_R16G16_UNORM:
|
||||
case PIPE_FORMAT_R16G16_SNORM:
|
||||
case PIPE_FORMAT_R16G16_FLOAT:
|
||||
case PIPE_FORMAT_R32G32_FLOAT:
|
||||
return COLORMASK_GRRG;
|
||||
|
||||
case PIPE_FORMAT_B5G6R5_UNORM:
|
||||
case PIPE_FORMAT_B5G5R5A1_UNORM:
|
||||
case PIPE_FORMAT_B5G5R5X1_UNORM:
|
||||
case PIPE_FORMAT_B4G4R4A4_UNORM:
|
||||
case PIPE_FORMAT_B4G4R4X4_UNORM:
|
||||
case PIPE_FORMAT_B8G8R8A8_UNORM:
|
||||
/*case PIPE_FORMAT_B8G8R8A8_SNORM:*/
|
||||
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
||||
/*case PIPE_FORMAT_B8G8R8X8_SNORM:*/
|
||||
case PIPE_FORMAT_B10G10R10A2_UNORM:
|
||||
return COLORMASK_BGRA;
|
||||
|
||||
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
||||
/*case PIPE_FORMAT_R8G8B8X8_SNORM:*/
|
||||
case PIPE_FORMAT_R8G8B8A8_UNORM:
|
||||
case PIPE_FORMAT_R8G8B8A8_SNORM:
|
||||
case PIPE_FORMAT_R10G10B10A2_UNORM:
|
||||
case PIPE_FORMAT_R10G10B10X2_SNORM:
|
||||
case PIPE_FORMAT_R16_UNORM:
|
||||
case PIPE_FORMAT_R16G16B16A16_UNORM:
|
||||
case PIPE_FORMAT_R16_SNORM:
|
||||
case PIPE_FORMAT_R16G16B16A16_SNORM:
|
||||
case PIPE_FORMAT_R16_FLOAT:
|
||||
case PIPE_FORMAT_R16G16B16A16_FLOAT:
|
||||
case PIPE_FORMAT_R32G32B32A32_FLOAT:
|
||||
case PIPE_FORMAT_L16_UNORM:
|
||||
case PIPE_FORMAT_L16_SNORM:
|
||||
case PIPE_FORMAT_L16_FLOAT:
|
||||
case PIPE_FORMAT_I16_UNORM:
|
||||
case PIPE_FORMAT_I16_SNORM:
|
||||
case PIPE_FORMAT_I16_FLOAT:
|
||||
return COLORMASK_RGBA;
|
||||
|
||||
default:
|
||||
return ~0; /* Unsupported. */
|
||||
}
|
||||
}
|
||||
|
||||
boolean r300_is_colorbuffer_format_supported(enum pipe_format format)
|
||||
{
|
||||
return r300_translate_colorformat(format) != ~0 &&
|
||||
r300_translate_out_fmt(format) != ~0;
|
||||
r300_translate_out_fmt(format) != ~0 &&
|
||||
r300_translate_colormask_swizzle(format) != ~0;
|
||||
}
|
||||
|
||||
boolean r300_is_zs_format_supported(enum pipe_format format)
|
||||
@@ -827,6 +904,8 @@ static void r300_texture_setup_fb_state(struct r300_surface *surf)
|
||||
R300_COLOR_TILE(tex->tex.macrotile[level]) |
|
||||
R300_COLOR_MICROTILE(tex->tex.microtile);
|
||||
surf->format = r300_translate_out_fmt(surf->base.format);
|
||||
surf->colormask_swizzle =
|
||||
r300_translate_colormask_swizzle(surf->base.format);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -121,6 +121,7 @@ int eg_bytecode_cf_build(struct r600_bytecode *bc, struct r600_bytecode_cf *cf)
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_ELSE:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_POP:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_NO_AL:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_DX10:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK:
|
||||
|
@@ -643,13 +643,6 @@ boolean evergreen_is_format_supported(struct pipe_screen *screen,
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* require render-target support for multisample resources */
|
||||
if (util_format_is_depth_or_stencil(format)) {
|
||||
usage |= PIPE_BIND_DEPTH_STENCIL;
|
||||
} else {
|
||||
usage |= PIPE_BIND_RENDER_TARGET;
|
||||
}
|
||||
}
|
||||
|
||||
if ((usage & PIPE_BIND_SAMPLER_VIEW) &&
|
||||
@@ -917,10 +910,12 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx,
|
||||
|
||||
if (rctx->chip_class == CAYMAN) {
|
||||
r600_pipe_state_add_reg(rstate, CM_R_028BE4_PA_SU_VTX_CNTL,
|
||||
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules));
|
||||
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules) |
|
||||
S_028C08_QUANT_MODE(V_028C08_X_1_256TH));
|
||||
} else {
|
||||
r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL,
|
||||
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules));
|
||||
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules) |
|
||||
S_028C08_QUANT_MODE(V_028C08_X_1_256TH));
|
||||
}
|
||||
r600_pipe_state_add_reg(rstate, R_028B7C_PA_SU_POLY_OFFSET_CLAMP, fui(state->offset_clamp));
|
||||
r600_pipe_state_add_reg(rstate, R_028814_PA_SU_SC_MODE_CNTL,
|
||||
@@ -1496,13 +1491,24 @@ static void evergreen_init_depth_surface(struct r600_context *rctx,
|
||||
|
||||
if (rtex->surface.flags & RADEON_SURF_SBUFFER) {
|
||||
uint64_t stencil_offset = rtex->surface.stencil_offset;
|
||||
unsigned stile_split = rtex->surface.stencil_tile_split;
|
||||
unsigned i, stile_split = rtex->surface.stencil_tile_split;
|
||||
|
||||
stile_split = eg_tile_split(stile_split);
|
||||
stencil_offset += r600_resource_va(screen, surf->base.texture);
|
||||
stencil_offset += rtex->surface.level[level].offset / 4;
|
||||
stencil_offset >>= 8;
|
||||
|
||||
/* We're guessing the stencil offset from the depth offset.
|
||||
* Make sure each mipmap level has a unique offset. */
|
||||
for (i = 1; i <= level; i++) {
|
||||
/* If two levels have the same address, add 256
|
||||
* to the offset of the smaller level. */
|
||||
if ((rtex->surface.level[i-1].offset / 4) >> 8 ==
|
||||
(rtex->surface.level[i].offset / 4) >> 8) {
|
||||
stencil_offset++;
|
||||
}
|
||||
}
|
||||
|
||||
surf->db_stencil_base = stencil_offset;
|
||||
surf->db_stencil_info = 1 | S_028044_TILE_SPLIT(stile_split);
|
||||
} else {
|
||||
@@ -1715,6 +1721,8 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx,
|
||||
res = (struct r600_resource*)surf->base.texture;
|
||||
rtex = (struct r600_texture*)res;
|
||||
|
||||
r600_context_add_resource_size(ctx, state->cbufs[i]->texture);
|
||||
|
||||
if (!surf->color_initialized) {
|
||||
evergreen_init_color_surface(rctx, surf);
|
||||
}
|
||||
@@ -1781,6 +1789,8 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx,
|
||||
surf = (struct r600_surface*)state->zsbuf;
|
||||
res = (struct r600_resource*)surf->base.texture;
|
||||
|
||||
r600_context_add_resource_size(ctx, state->zsbuf->texture);
|
||||
|
||||
if (!surf->depth_initialized) {
|
||||
evergreen_init_depth_surface(rctx, surf);
|
||||
}
|
||||
|
@@ -1955,6 +1955,17 @@
|
||||
#define S_028C08_PIX_CENTER_HALF(x) (((x) & 0x1) << 0)
|
||||
#define G_028C08_PIX_CENTER_HALF(x) (((x) >> 0) & 0x1)
|
||||
#define C_028C08_PIX_CENTER_HALF 0xFFFFFFFE
|
||||
#define S_028C08_QUANT_MODE(x) (((x) & 0x7) << 3)
|
||||
#define G_028C08_QUANT_MODE(x) (((x) >> 3) & 0x7)
|
||||
#define C_028C08_QUANT_MODE 0xFFFFFFC7
|
||||
#define V_028C08_X_1_16TH 0x00
|
||||
#define V_028C08_X_1_8TH 0x01
|
||||
#define V_028C08_X_1_4TH 0x02
|
||||
#define V_028C08_X_1_2 0x03
|
||||
#define V_028C08_X_1 0x04
|
||||
#define V_028C08_X_1_256TH 0x05
|
||||
#define V_028C08_X_1_1024TH 0x06
|
||||
#define V_028C08_X_1_4096TH 0x07
|
||||
#define R_028C0C_PA_CL_GB_VERT_CLIP_ADJ 0x00028C0C
|
||||
#define R_028C10_PA_CL_GB_VERT_DISC_ADJ 0x00028C10
|
||||
#define R_028C14_PA_CL_GB_HORZ_CLIP_ADJ 0x00028C14
|
||||
|
@@ -1878,6 +1878,7 @@ static int r600_bytecode_cf_build(struct r600_bytecode *bc, struct r600_bytecode
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_ELSE:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_POP:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_NO_AL:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_DX10:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK:
|
||||
@@ -1952,6 +1953,7 @@ int r600_bytecode_build(struct r600_bytecode *bc)
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_ELSE:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_POP:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_NO_AL:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_DX10:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK:
|
||||
@@ -1986,7 +1988,7 @@ int r600_bytecode_build(struct r600_bytecode *bc)
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_JUMP:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_ELSE:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_POP:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_NO_AL:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_DX10:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK:
|
||||
@@ -2089,6 +2091,7 @@ int r600_bytecode_build(struct r600_bytecode *bc)
|
||||
case EG_V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_MEM_STREAM3_BUF1:
|
||||
case EG_V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_MEM_STREAM3_BUF2:
|
||||
case EG_V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_MEM_STREAM3_BUF3:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_DX10:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_NO_AL:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
|
||||
@@ -2172,6 +2175,7 @@ int r600_bytecode_build(struct r600_bytecode *bc)
|
||||
case V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_MEM_STREAM2:
|
||||
case V_SQ_CF_ALLOC_EXPORT_WORD1_SQ_CF_INST_MEM_STREAM3:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_NO_AL:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_DX10:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK:
|
||||
@@ -2360,6 +2364,7 @@ void r600_bytecode_dump(struct r600_bytecode *bc)
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_ELSE:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_POP:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_NO_AL:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_DX10:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
|
||||
case EG_V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK:
|
||||
@@ -2454,6 +2459,7 @@ void r600_bytecode_dump(struct r600_bytecode *bc)
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_ELSE:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_POP:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_NO_AL:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_DX10:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_END:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_CONTINUE:
|
||||
case V_SQ_CF_WORD1_SQ_CF_INST_LOOP_BREAK:
|
||||
@@ -2752,31 +2758,47 @@ int r600_vertex_elements_build_fetch_shader(struct r600_context *rctx, struct r6
|
||||
unsigned fetch_resource_start = rctx->chip_class >= EVERGREEN ? 0 : 160;
|
||||
unsigned format, num_format, format_comp, endian;
|
||||
uint32_t *bytecode;
|
||||
int i, r;
|
||||
int i, j, r;
|
||||
|
||||
memset(&bc, 0, sizeof(bc));
|
||||
r600_bytecode_init(&bc, rctx->chip_class, rctx->family);
|
||||
|
||||
for (i = 0; i < ve->count; i++) {
|
||||
if (elements[i].instance_divisor > 1) {
|
||||
struct r600_bytecode_alu alu;
|
||||
|
||||
memset(&alu, 0, sizeof(alu));
|
||||
alu.inst = BC_INST(&bc, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MULHI_UINT);
|
||||
alu.src[0].sel = 0;
|
||||
alu.src[0].chan = 3;
|
||||
|
||||
alu.src[1].sel = V_SQ_ALU_SRC_LITERAL;
|
||||
alu.src[1].value = (1ll << 32) / elements[i].instance_divisor + 1;
|
||||
|
||||
alu.dst.sel = i + 1;
|
||||
alu.dst.chan = 3;
|
||||
alu.dst.write = 1;
|
||||
alu.last = 1;
|
||||
|
||||
if ((r = r600_bytecode_add_alu(&bc, &alu))) {
|
||||
r600_bytecode_clear(&bc);
|
||||
return r;
|
||||
if (rctx->chip_class == CAYMAN) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
struct r600_bytecode_alu alu;
|
||||
memset(&alu, 0, sizeof(alu));
|
||||
alu.inst = BC_INST(&bc, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MULHI_UINT);
|
||||
alu.src[0].sel = 0;
|
||||
alu.src[0].chan = 3;
|
||||
alu.src[1].sel = V_SQ_ALU_SRC_LITERAL;
|
||||
alu.src[1].value = (1ll << 32) / elements[i].instance_divisor + 1;
|
||||
alu.dst.sel = i + 1;
|
||||
alu.dst.chan = j;
|
||||
alu.dst.write = j == 3;
|
||||
alu.last = j == 3;
|
||||
if ((r = r600_bytecode_add_alu(&bc, &alu))) {
|
||||
r600_bytecode_clear(&bc);
|
||||
return r;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
struct r600_bytecode_alu alu;
|
||||
memset(&alu, 0, sizeof(alu));
|
||||
alu.inst = BC_INST(&bc, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MULHI_UINT);
|
||||
alu.src[0].sel = 0;
|
||||
alu.src[0].chan = 3;
|
||||
alu.src[1].sel = V_SQ_ALU_SRC_LITERAL;
|
||||
alu.src[1].value = (1ll << 32) / elements[i].instance_divisor + 1;
|
||||
alu.dst.sel = i + 1;
|
||||
alu.dst.chan = 3;
|
||||
alu.dst.write = 1;
|
||||
alu.last = 1;
|
||||
if ((r = r600_bytecode_add_alu(&bc, &alu))) {
|
||||
r600_bytecode_clear(&bc);
|
||||
return r;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -387,6 +387,8 @@ static boolean is_simple_resolve(const struct pipe_resolve_info *info)
|
||||
{
|
||||
unsigned dst_width = u_minify(info->dst.res->width0, info->dst.level);
|
||||
unsigned dst_height = u_minify(info->dst.res->height0, info->dst.level);
|
||||
struct r600_texture *dst = (struct r600_texture*)info->dst.res;
|
||||
unsigned dst_tile_mode = dst->surface.level[info->dst.level].mode;
|
||||
|
||||
return info->dst.res->format == info->src.res->format &&
|
||||
dst_width == info->src.res->width0 &&
|
||||
@@ -398,7 +400,10 @@ static boolean is_simple_resolve(const struct pipe_resolve_info *info)
|
||||
info->src.x0 == 0 &&
|
||||
info->src.y0 == 0 &&
|
||||
info->src.x1 == dst_width &&
|
||||
info->src.y1 == dst_height;
|
||||
info->src.y1 == dst_height &&
|
||||
/* Dst must be tiled. If it's not, we have to use a temporary
|
||||
* resource which is tiled. */
|
||||
dst_tile_mode >= RADEON_SURF_MODE_1D;
|
||||
}
|
||||
|
||||
static void r600_color_resolve(struct pipe_context *ctx,
|
||||
@@ -434,7 +439,7 @@ static void r600_color_resolve(struct pipe_context *ctx,
|
||||
templ.nr_samples = 0;
|
||||
templ.usage = PIPE_USAGE_STATIC;
|
||||
templ.bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW;
|
||||
templ.flags = 0;
|
||||
templ.flags = R600_RESOURCE_FLAG_FORCE_TILING; /* dst must not have a linear layout */
|
||||
|
||||
tmp = screen->resource_create(screen, &templ);
|
||||
|
||||
|
@@ -635,6 +635,16 @@ void r600_need_cs_space(struct r600_context *ctx, unsigned num_dw,
|
||||
{
|
||||
struct r600_atom *state;
|
||||
|
||||
if (!ctx->ws->cs_memory_below_limit(ctx->cs, ctx->vram, ctx->gtt)) {
|
||||
ctx->gtt = 0;
|
||||
ctx->vram = 0;
|
||||
r600_flush(&ctx->context, NULL, RADEON_FLUSH_ASYNC);
|
||||
return;
|
||||
}
|
||||
/* all will be accounted once relocation are emited */
|
||||
ctx->gtt = 0;
|
||||
ctx->vram = 0;
|
||||
|
||||
/* The number of dwords we already used in the CS so far. */
|
||||
num_dw += ctx->cs->cdw;
|
||||
|
||||
@@ -953,6 +963,8 @@ void r600_context_flush(struct r600_context *ctx, unsigned flags)
|
||||
|
||||
ctx->pm4_dirty_cdwords = 0;
|
||||
ctx->flags = 0;
|
||||
ctx->gtt = 0;
|
||||
ctx->vram = 0;
|
||||
|
||||
/* Begin a new CS. */
|
||||
r600_emit_atom(ctx, &ctx->start_cs_cmd.atom);
|
||||
@@ -1080,13 +1092,14 @@ void r600_context_streamout_begin(struct r600_context *ctx)
|
||||
unsigned *stride_in_dw = ctx->vs_shader->so.stride;
|
||||
unsigned buffer_en, i, update_flags = 0;
|
||||
uint64_t va;
|
||||
unsigned num_cs_dw_streamout_end;
|
||||
|
||||
buffer_en = (ctx->num_so_targets >= 1 && t[0] ? 1 : 0) |
|
||||
(ctx->num_so_targets >= 2 && t[1] ? 2 : 0) |
|
||||
(ctx->num_so_targets >= 3 && t[2] ? 4 : 0) |
|
||||
(ctx->num_so_targets >= 4 && t[3] ? 8 : 0);
|
||||
|
||||
ctx->num_cs_dw_streamout_end =
|
||||
num_cs_dw_streamout_end =
|
||||
12 + /* flush_vgt_streamout */
|
||||
util_bitcount(buffer_en) * 8 + /* STRMOUT_BUFFER_UPDATE */
|
||||
3 /* set_streamout_enable(0) */;
|
||||
@@ -1095,11 +1108,15 @@ void r600_context_streamout_begin(struct r600_context *ctx)
|
||||
12 + /* flush_vgt_streamout */
|
||||
6 + /* set_streamout_enable */
|
||||
util_bitcount(buffer_en) * 7 + /* SET_CONTEXT_REG */
|
||||
(ctx->chip_class == R700 ? util_bitcount(buffer_en) * 5 : 0) + /* STRMOUT_BASE_UPDATE */
|
||||
(ctx->family >= CHIP_RS780 &&
|
||||
ctx->family <= CHIP_RV740 ? util_bitcount(buffer_en) * 5 : 0) + /* STRMOUT_BASE_UPDATE */
|
||||
util_bitcount(buffer_en & ctx->streamout_append_bitmask) * 8 + /* STRMOUT_BUFFER_UPDATE */
|
||||
util_bitcount(buffer_en & ~ctx->streamout_append_bitmask) * 6 + /* STRMOUT_BUFFER_UPDATE */
|
||||
(ctx->family > CHIP_R600 && ctx->family < CHIP_RV770 ? 2 : 0) + /* SURFACE_BASE_UPDATE */
|
||||
ctx->num_cs_dw_streamout_end, TRUE);
|
||||
(ctx->family > CHIP_R600 && ctx->family < CHIP_RS780 ? 2 : 0) + /* SURFACE_BASE_UPDATE */
|
||||
num_cs_dw_streamout_end, TRUE);
|
||||
|
||||
/* This must be set after r600_need_cs_space. */
|
||||
ctx->num_cs_dw_streamout_end = num_cs_dw_streamout_end;
|
||||
|
||||
if (ctx->chip_class >= EVERGREEN) {
|
||||
evergreen_flush_vgt_streamout(ctx);
|
||||
@@ -1133,7 +1150,7 @@ void r600_context_streamout_begin(struct r600_context *ctx)
|
||||
|
||||
/* R7xx requires this packet after updating BUFFER_BASE.
|
||||
* Without this, R7xx locks up. */
|
||||
if (ctx->chip_class == R700) {
|
||||
if (ctx->family >= CHIP_RS780 && ctx->family <= CHIP_RV740) {
|
||||
cs->buf[cs->cdw++] = PKT3(PKT3_STRMOUT_BASE_UPDATE, 1, 0);
|
||||
cs->buf[cs->cdw++] = i;
|
||||
cs->buf[cs->cdw++] = va >> 8;
|
||||
@@ -1173,7 +1190,7 @@ void r600_context_streamout_begin(struct r600_context *ctx)
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->family > CHIP_R600 && ctx->family < CHIP_RV770) {
|
||||
if (ctx->family > CHIP_R600 && ctx->family < CHIP_RS780) {
|
||||
cs->buf[cs->cdw++] = PKT3(PKT3_SURFACE_BASE_UPDATE, 0, 0);
|
||||
cs->buf[cs->cdw++] = update_flags;
|
||||
}
|
||||
|
@@ -443,7 +443,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
||||
return rscreen->has_streamout ? 1 : 0;
|
||||
case PIPE_CAP_MAX_STREAM_OUTPUT_SEPARATE_COMPONENTS:
|
||||
case PIPE_CAP_MAX_STREAM_OUTPUT_INTERLEAVED_COMPONENTS:
|
||||
return 16*4;
|
||||
return 32*4;
|
||||
|
||||
/* Texturing. */
|
||||
case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
|
||||
@@ -725,7 +725,7 @@ static boolean r600_fence_signalled(struct pipe_screen *pscreen,
|
||||
struct r600_screen *rscreen = (struct r600_screen *)pscreen;
|
||||
struct r600_fence *rfence = (struct r600_fence*)fence;
|
||||
|
||||
return rscreen->fences.data[rfence->index];
|
||||
return rscreen->fences.data[rfence->index] != 0;
|
||||
}
|
||||
|
||||
static boolean r600_fence_finish(struct pipe_screen *pscreen,
|
||||
@@ -933,13 +933,19 @@ struct pipe_screen *r600_screen_create(struct radeon_winsys *ws)
|
||||
/* Figure out streamout kernel support. */
|
||||
switch (rscreen->chip_class) {
|
||||
case R600:
|
||||
case EVERGREEN:
|
||||
case CAYMAN:
|
||||
rscreen->has_streamout = rscreen->info.drm_minor >= 14;
|
||||
if (rscreen->family < CHIP_RS780) {
|
||||
rscreen->has_streamout = rscreen->info.drm_minor >= 14;
|
||||
} else {
|
||||
rscreen->has_streamout = rscreen->info.drm_minor >= 23;
|
||||
}
|
||||
break;
|
||||
case R700:
|
||||
rscreen->has_streamout = rscreen->info.drm_minor >= 17;
|
||||
break;
|
||||
case EVERGREEN:
|
||||
case CAYMAN:
|
||||
rscreen->has_streamout = rscreen->info.drm_minor >= 14;
|
||||
break;
|
||||
}
|
||||
|
||||
if (r600_init_tiling(rscreen)) {
|
||||
|
@@ -371,6 +371,10 @@ struct r600_context {
|
||||
|
||||
unsigned default_ps_gprs, default_vs_gprs;
|
||||
|
||||
/* current unaccounted memory usage */
|
||||
uint64_t vram;
|
||||
uint64_t gtt;
|
||||
|
||||
/* States based on r600_atom. */
|
||||
struct list_head dirty_states;
|
||||
struct r600_command_buffer start_cs_cmd; /* invariant state mostly */
|
||||
@@ -886,4 +890,28 @@ static INLINE uint64_t r600_resource_va(struct pipe_screen *screen, struct pipe_
|
||||
return rscreen->ws->buffer_get_virtual_address(rresource->cs_buf);
|
||||
}
|
||||
|
||||
static INLINE void r600_context_add_resource_size(struct pipe_context *ctx, struct pipe_resource *r)
|
||||
{
|
||||
struct r600_context *rctx = (struct r600_context *)ctx;
|
||||
struct r600_resource *rr = (struct r600_resource *)r;
|
||||
|
||||
if (r == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* The idea is to compute a gross estimate of memory requirement of
|
||||
* each draw call. After each draw call, memory will be precisely
|
||||
* accounted. So the uncertainty is only on the current draw call.
|
||||
* In practice this gave very good estimate (+/- 10% of the target
|
||||
* memory limit).
|
||||
*/
|
||||
if (rr->domains & RADEON_DOMAIN_GTT) {
|
||||
rctx->gtt += rr->buf->size;
|
||||
}
|
||||
if (rr->domains & RADEON_DOMAIN_VRAM) {
|
||||
rctx->vram += rr->buf->size;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -28,6 +28,7 @@
|
||||
/* flag to indicate a resource is to be used as a transfer so should not be tiled */
|
||||
#define R600_RESOURCE_FLAG_TRANSFER PIPE_RESOURCE_FLAG_DRV_PRIV
|
||||
#define R600_RESOURCE_FLAG_FLUSHED_DEPTH (PIPE_RESOURCE_FLAG_DRV_PRIV << 1)
|
||||
#define R600_RESOURCE_FLAG_FORCE_TILING (PIPE_RESOURCE_FLAG_DRV_PRIV << 2)
|
||||
|
||||
struct r600_transfer {
|
||||
struct pipe_transfer transfer;
|
||||
|
@@ -1878,6 +1878,11 @@ static int cayman_emit_float_instr(struct r600_shader_ctx *ctx)
|
||||
alu.inst = ctx->inst_info->r600_opcode;
|
||||
for (j = 0; j < inst->Instruction.NumSrcRegs; j++) {
|
||||
r600_bytecode_src(&alu.src[j], &ctx->src[j], 0);
|
||||
|
||||
/* RSQ should take the absolute value of src */
|
||||
if (ctx->inst_info->tgsi_opcode == TGSI_OPCODE_RSQ) {
|
||||
r600_bytecode_src_set_abs(&alu.src[j]);
|
||||
}
|
||||
}
|
||||
tgsi_dst(ctx, &inst->Dst[0], i, &alu.dst);
|
||||
alu.dst.write = (inst->Dst[0].Register.WriteMask >> i) & 1;
|
||||
@@ -4007,6 +4012,23 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
|
||||
/* for cube forms of lod and bias we need to route the lod
|
||||
value into Z */
|
||||
if (inst->Instruction.Opcode == TGSI_OPCODE_TXB ||
|
||||
inst->Instruction.Opcode == TGSI_OPCODE_TXL) {
|
||||
memset(&alu, 0, sizeof(struct r600_bytecode_alu));
|
||||
alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV);
|
||||
r600_bytecode_src(&alu.src[0], &ctx->src[0], 3);
|
||||
alu.dst.sel = ctx->temp_reg;
|
||||
alu.dst.chan = 2;
|
||||
alu.last = 1;
|
||||
alu.dst.write = 1;
|
||||
r = r600_bytecode_add_alu(ctx->bc, &alu);
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
|
||||
src_loaded = TRUE;
|
||||
src_gpr = ctx->temp_reg;
|
||||
}
|
||||
@@ -4082,17 +4104,12 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
|
||||
tex.src_rel = ctx->src[0].rel;
|
||||
}
|
||||
|
||||
if (inst->Texture.Texture == TGSI_TEXTURE_CUBE) {
|
||||
if (inst->Texture.Texture == TGSI_TEXTURE_CUBE ||
|
||||
inst->Texture.Texture == TGSI_TEXTURE_SHADOWCUBE) {
|
||||
tex.src_sel_x = 1;
|
||||
tex.src_sel_y = 0;
|
||||
tex.src_sel_z = 3;
|
||||
tex.src_sel_w = 1;
|
||||
}
|
||||
if (inst->Texture.Texture == TGSI_TEXTURE_SHADOWCUBE) {
|
||||
tex.src_sel_x = 1;
|
||||
tex.src_sel_y = 0;
|
||||
tex.src_sel_z = 3;
|
||||
tex.src_sel_w = 2; /* route Z compare value into W */
|
||||
tex.src_sel_w = 2; /* route Z compare or Lod value into W */
|
||||
}
|
||||
|
||||
if (inst->Texture.Texture != TGSI_TEXTURE_RECT &&
|
||||
@@ -4373,10 +4390,8 @@ static int tgsi_exp(struct r600_shader_ctx *ctx)
|
||||
|
||||
alu.dst.sel = ctx->temp_reg;
|
||||
alu.dst.chan = i;
|
||||
if (i == 0)
|
||||
alu.dst.write = 1;
|
||||
if (i == 2)
|
||||
alu.last = 1;
|
||||
alu.dst.write = i == 0;
|
||||
alu.last = i == 2;
|
||||
r = r600_bytecode_add_alu(ctx->bc, &alu);
|
||||
if (r)
|
||||
return r;
|
||||
@@ -5099,7 +5114,9 @@ static int tgsi_endif(struct r600_shader_ctx *ctx)
|
||||
|
||||
static int tgsi_bgnloop(struct r600_shader_ctx *ctx)
|
||||
{
|
||||
r600_bytecode_add_cfinst(ctx->bc, CTX_INST(V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_NO_AL));
|
||||
/* LOOP_START_DX10 ignores the LOOP_CONFIG* registers, so it is not
|
||||
* limited to 4096 iterations, like the other LOOP_* instructions. */
|
||||
r600_bytecode_add_cfinst(ctx->bc, CTX_INST(V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_DX10));
|
||||
|
||||
fc_pushlevel(ctx, FC_LOOP);
|
||||
|
||||
|
@@ -592,6 +592,10 @@ boolean r600_is_format_supported(struct pipe_screen *screen,
|
||||
format == PIPE_FORMAT_R11G11B10_FLOAT)
|
||||
return FALSE;
|
||||
|
||||
/* MSAA integer colorbuffers hang. */
|
||||
if (util_format_is_pure_integer(format))
|
||||
return FALSE;
|
||||
|
||||
switch (sample_count) {
|
||||
case 2:
|
||||
case 4:
|
||||
@@ -600,15 +604,6 @@ boolean r600_is_format_supported(struct pipe_screen *screen,
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* require render-target support for multisample resources */
|
||||
if (util_format_is_depth_or_stencil(format)) {
|
||||
usage |= PIPE_BIND_DEPTH_STENCIL;
|
||||
} else if (util_format_is_pure_integer(format)) {
|
||||
return FALSE; /* no integer textures */
|
||||
} else {
|
||||
usage |= PIPE_BIND_RENDER_TARGET;
|
||||
}
|
||||
}
|
||||
|
||||
if ((usage & PIPE_BIND_SAMPLER_VIEW) &&
|
||||
@@ -948,7 +943,8 @@ static void *r600_create_rs_state(struct pipe_context *ctx,
|
||||
r600_pipe_state_add_reg(rstate, R_028A4C_PA_SC_MODE_CNTL, sc_mode_cntl);
|
||||
|
||||
r600_pipe_state_add_reg(rstate, R_028C08_PA_SU_VTX_CNTL,
|
||||
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules));
|
||||
S_028C08_PIX_CENTER_HALF(state->gl_rasterization_rules) |
|
||||
S_028C08_QUANT_MODE(V_028C08_X_1_256TH));
|
||||
|
||||
r600_pipe_state_add_reg(rstate, R_028DFC_PA_SU_POLY_OFFSET_CLAMP, fui(state->offset_clamp));
|
||||
r600_pipe_state_add_reg(rstate, R_028814_PA_SU_SC_MODE_CNTL,
|
||||
@@ -1619,6 +1615,8 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx,
|
||||
res = (struct r600_resource*)surf->base.texture;
|
||||
rtex = (struct r600_texture*)res;
|
||||
|
||||
r600_context_add_resource_size(ctx, state->cbufs[i]->texture);
|
||||
|
||||
if (!surf->color_initialized || force_cmask_fmask) {
|
||||
r600_init_color_surface(rctx, surf, force_cmask_fmask);
|
||||
if (force_cmask_fmask) {
|
||||
@@ -1677,6 +1675,8 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx,
|
||||
surf = (struct r600_surface*)state->zsbuf;
|
||||
res = (struct r600_resource*)surf->base.texture;
|
||||
|
||||
r600_context_add_resource_size(ctx, state->zsbuf->texture);
|
||||
|
||||
if (!surf->depth_initialized) {
|
||||
r600_init_depth_surface(rctx, surf);
|
||||
}
|
||||
|
@@ -108,7 +108,7 @@ void r600_init_common_atoms(struct r600_context *rctx)
|
||||
{
|
||||
r600_init_atom(&rctx->surface_sync_cmd.atom, r600_emit_surface_sync, 5, EMIT_EARLY);
|
||||
r600_init_atom(&rctx->r6xx_flush_and_inv_cmd, r600_emit_r6xx_flush_and_inv, 2, EMIT_EARLY);
|
||||
r600_init_atom(&rctx->alphatest_state.atom, r600_emit_alphatest_state, 3, 0);
|
||||
r600_init_atom(&rctx->alphatest_state.atom, r600_emit_alphatest_state, 6, 0);
|
||||
r600_atom_dirty(rctx, &rctx->alphatest_state.atom);
|
||||
}
|
||||
|
||||
@@ -504,7 +504,8 @@ void r600_set_index_buffer(struct pipe_context *ctx,
|
||||
|
||||
if (ib) {
|
||||
pipe_resource_reference(&rctx->index_buffer.buffer, ib->buffer);
|
||||
memcpy(&rctx->index_buffer, ib, sizeof(*ib));
|
||||
memcpy(&rctx->index_buffer, ib, sizeof(*ib));
|
||||
r600_context_add_resource_size(ctx, ib->buffer);
|
||||
} else {
|
||||
pipe_resource_reference(&rctx->index_buffer.buffer, NULL);
|
||||
}
|
||||
@@ -549,6 +550,7 @@ void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count,
|
||||
vb[i].buffer_offset = input[i].buffer_offset;
|
||||
pipe_resource_reference(&vb[i].buffer, input[i].buffer);
|
||||
new_buffer_mask |= 1 << i;
|
||||
r600_context_add_resource_size(ctx, input[i].buffer);
|
||||
} else {
|
||||
pipe_resource_reference(&vb[i].buffer, NULL);
|
||||
disable_mask |= 1 << i;
|
||||
@@ -648,6 +650,7 @@ void r600_set_sampler_views(struct pipe_context *pipe,
|
||||
|
||||
pipe_sampler_view_reference((struct pipe_sampler_view **)&dst->views.views[i], views[i]);
|
||||
new_mask |= 1 << i;
|
||||
r600_context_add_resource_size(pipe, views[i]->texture);
|
||||
} else {
|
||||
pipe_sampler_view_reference((struct pipe_sampler_view **)&dst->views.views[i], NULL);
|
||||
disable_mask |= 1 << i;
|
||||
@@ -822,6 +825,8 @@ void r600_bind_ps_shader(struct pipe_context *ctx, void *state)
|
||||
rctx->ps_shader = (struct r600_pipe_shader_selector *)state;
|
||||
r600_context_pipe_state_set(rctx, &rctx->ps_shader->current->rstate);
|
||||
|
||||
r600_context_add_resource_size(ctx, (struct pipe_resource *)rctx->ps_shader->current->bo);
|
||||
|
||||
if (rctx->chip_class <= R700) {
|
||||
bool multiwrite = rctx->ps_shader->current->shader.fs_write_all;
|
||||
|
||||
@@ -848,6 +853,8 @@ void r600_bind_vs_shader(struct pipe_context *ctx, void *state)
|
||||
if (state) {
|
||||
r600_context_pipe_state_set(rctx, &rctx->vs_shader->current->rstate);
|
||||
|
||||
r600_context_add_resource_size(ctx, (struct pipe_resource *)rctx->vs_shader->current->bo);
|
||||
|
||||
if (rctx->chip_class < EVERGREEN && rctx->ps_shader)
|
||||
r600_adjust_gprs(rctx);
|
||||
}
|
||||
@@ -957,10 +964,13 @@ void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index,
|
||||
} else {
|
||||
u_upload_data(rctx->uploader, 0, input->buffer_size, ptr, &cb->buffer_offset, &cb->buffer);
|
||||
}
|
||||
/* account it in gtt */
|
||||
rctx->gtt += input->buffer_size;
|
||||
} else {
|
||||
/* Setup the hw buffer. */
|
||||
cb->buffer_offset = input->buffer_offset;
|
||||
pipe_resource_reference(&cb->buffer, input->buffer);
|
||||
r600_context_add_resource_size(ctx, input->buffer);
|
||||
}
|
||||
|
||||
state->enabled_mask |= 1 << index;
|
||||
@@ -1023,6 +1033,7 @@ void r600_set_so_targets(struct pipe_context *ctx,
|
||||
/* Set the new targets. */
|
||||
for (i = 0; i < num_targets; i++) {
|
||||
pipe_so_target_reference((struct pipe_stream_output_target**)&rctx->so_targets[i], targets[i]);
|
||||
r600_context_add_resource_size(ctx, targets[i]->buffer);
|
||||
}
|
||||
for (; i < rctx->num_so_targets; i++) {
|
||||
pipe_so_target_reference((struct pipe_stream_output_target**)&rctx->so_targets[i], NULL);
|
||||
|
@@ -454,7 +454,9 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
|
||||
int r;
|
||||
|
||||
if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER)) {
|
||||
if (!(templ->bind & PIPE_BIND_SCANOUT) &&
|
||||
if (templ->flags & R600_RESOURCE_FLAG_FORCE_TILING) {
|
||||
array_mode = V_038000_ARRAY_2D_TILED_THIN1;
|
||||
} else if (!(templ->bind & PIPE_BIND_SCANOUT) &&
|
||||
templ->usage != PIPE_USAGE_STAGING &&
|
||||
templ->usage != PIPE_USAGE_STREAM) {
|
||||
array_mode = V_038000_ARRAY_2D_TILED_THIN1;
|
||||
@@ -592,13 +594,6 @@ bool r600_init_flushed_depth_texture(struct pipe_context *ctx,
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Needs adjustment for pixelformat:
|
||||
*/
|
||||
static INLINE unsigned u_box_volume( const struct pipe_box *box )
|
||||
{
|
||||
return box->width * box->depth * box->height;
|
||||
}
|
||||
|
||||
struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
|
||||
struct pipe_resource *texture,
|
||||
unsigned level,
|
||||
@@ -622,9 +617,6 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
|
||||
use_staging_texture = TRUE;
|
||||
}
|
||||
|
||||
if ((usage & PIPE_TRANSFER_READ) && u_box_volume(box) > 1024)
|
||||
use_staging_texture = TRUE;
|
||||
|
||||
/* Use a staging texture for uploads if the underlying BO is busy. */
|
||||
if (!(usage & PIPE_TRANSFER_READ) &&
|
||||
(rctx->ws->cs_is_buffer_referenced(rctx->cs, rtex->resource.cs_buf, RADEON_USAGE_READWRITE) ||
|
||||
|
@@ -2194,6 +2194,15 @@
|
||||
#define S_028C08_PIX_CENTER_HALF(x) (((x) & 0x1) << 0)
|
||||
#define G_028C08_PIX_CENTER_HALF(x) (((x) >> 0) & 0x1)
|
||||
#define C_028C08_PIX_CENTER_HALF 0xFFFFFFFE
|
||||
#define S_028C08_QUANT_MODE(x) (((x) & 0x7) << 3)
|
||||
#define G_028C08_QUANT_MODE(x) (((x) >> 3) & 0x7)
|
||||
#define C_028C08_QUANT_MODE 0xFFFFFFC7
|
||||
#define V_028C08_X_1_16TH 0x00
|
||||
#define V_028C08_X_1_8TH 0x01
|
||||
#define V_028C08_X_1_4TH 0x02
|
||||
#define V_028C08_X_1_2 0x03
|
||||
#define V_028C08_X_1 0x04
|
||||
#define V_028C08_X_1_256TH 0x05
|
||||
#define R_028C1C_PA_SC_AA_SAMPLE_LOCS_MCTX 0x028C1C
|
||||
#define R_028C48_PA_SC_AA_MASK 0x028C48
|
||||
#define R_028810_PA_CL_CLIP_CNTL 0x028810
|
||||
|
@@ -20,8 +20,6 @@ tablegen = $(TBLGEN) -I $(LLVM_INCLUDEDIR) $1 $2 -o $3
|
||||
|
||||
HAVE_LLVM_INTRINSICS = $(shell grep IntrinsicsR600.td $(LLVM_INCLUDEDIR)/llvm/Intrinsics.td)
|
||||
|
||||
gen: $(GENERATED_SOURCES)
|
||||
|
||||
SIRegisterInfo.td: SIGenRegisterInfo.pl
|
||||
$(PERL) $^ > $@
|
||||
|
||||
@@ -38,37 +36,37 @@ endif
|
||||
R600RegisterInfo.td: R600GenRegisterInfo.pl
|
||||
$(PERL) $^ > $@
|
||||
|
||||
AMDGPUGenRegisterInfo.inc: *.td
|
||||
AMDGPUGenRegisterInfo.inc: $(TD_FILES)
|
||||
$(call tablegen, -gen-register-info, AMDGPU.td, $@)
|
||||
|
||||
AMDGPUGenInstrInfo.inc: *.td
|
||||
AMDGPUGenInstrInfo.inc: $(TD_FILES)
|
||||
$(call tablegen, -gen-instr-info, AMDGPU.td, $@)
|
||||
|
||||
AMDGPUGenAsmWriter.inc: *.td
|
||||
AMDGPUGenAsmWriter.inc: $(TD_FILES)
|
||||
$(call tablegen, -gen-asm-writer, AMDGPU.td, $@)
|
||||
|
||||
AMDGPUGenDAGISel.inc: *.td
|
||||
AMDGPUGenDAGISel.inc: $(TD_FILES)
|
||||
$(call tablegen, -gen-dag-isel, AMDGPU.td, $@)
|
||||
|
||||
AMDGPUGenCallingConv.inc: *.td
|
||||
AMDGPUGenCallingConv.inc: $(TD_FILES)
|
||||
$(call tablegen, -gen-callingconv, AMDGPU.td, $@)
|
||||
|
||||
AMDGPUGenSubtargetInfo.inc: *.td
|
||||
AMDGPUGenSubtargetInfo.inc: $(TD_FILES)
|
||||
$(call tablegen, -gen-subtarget, AMDGPU.td, $@)
|
||||
|
||||
AMDGPUGenEDInfo.inc: *.td
|
||||
AMDGPUGenEDInfo.inc: $(TD_FILES)
|
||||
$(call tablegen, -gen-enhanced-disassembly-info, AMDGPU.td, $@)
|
||||
|
||||
AMDGPUGenIntrinsics.inc: *.td
|
||||
AMDGPUGenIntrinsics.inc: $(TD_FILES)
|
||||
$(call tablegen, -gen-tgt-intrinsic, AMDGPU.td, $@)
|
||||
|
||||
AMDGPUGenCodeEmitter.inc: *.td
|
||||
AMDGPUGenCodeEmitter.inc: $(TD_FILES)
|
||||
$(call tablegen, -gen-emitter, AMDGPU.td, $@)
|
||||
|
||||
AMDGPUGenMCCodeEmitter.inc: *.td
|
||||
AMDGPUGenMCCodeEmitter.inc: $(TD_FILES)
|
||||
$(call tablegen, -mc-emitter -gen-emitter, AMDGPU.td, $@)
|
||||
|
||||
AMDGPUGenDFAPacketizer.inc: *.td
|
||||
AMDGPUGenDFAPacketizer.inc: $(TD_FILES)
|
||||
$(call tablegen, -gen-dfa-packetizer, AMDGPU.td, $@)
|
||||
|
||||
LOADER_LIBS=$(shell llvm-config --libs bitreader asmparser)
|
||||
|
@@ -1,4 +1,29 @@
|
||||
|
||||
TD_FILES := \
|
||||
AMDGPU.td \
|
||||
AMDGPUInstrInfo.td \
|
||||
AMDGPUInstructions.td \
|
||||
AMDGPUIntrinsics.td \
|
||||
AMDGPURegisterInfo.td \
|
||||
AMDILBase.td \
|
||||
AMDILInstrInfo.td \
|
||||
AMDILIntrinsics.td \
|
||||
AMDILRegisterInfo.td \
|
||||
Processors.td \
|
||||
R600Instructions.td \
|
||||
R600Intrinsics.td \
|
||||
R600IntrinsicsNoOpenCL.td \
|
||||
R600IntrinsicsOpenCL.td \
|
||||
R600RegisterInfo.td \
|
||||
R600Schedule.td \
|
||||
SIInstrFormats.td \
|
||||
SIInstrInfo.td \
|
||||
SIInstructions.td \
|
||||
SIIntrinsics.td \
|
||||
SIRegisterInfo.td \
|
||||
SISchedule.td
|
||||
|
||||
|
||||
GENERATED_SOURCES := \
|
||||
R600Intrinsics.td \
|
||||
R600RegisterInfo.td \
|
||||
|
@@ -66,14 +66,11 @@ exec_prepare( const struct sp_fragment_shader_variant *var,
|
||||
{
|
||||
/*
|
||||
* Bind tokens/shader to the interpreter's machine state.
|
||||
* Avoid redundant binding.
|
||||
*/
|
||||
if (machine->Tokens != var->tokens) {
|
||||
tgsi_exec_machine_bind_shader( machine,
|
||||
var->tokens,
|
||||
PIPE_MAX_SAMPLERS,
|
||||
samplers );
|
||||
}
|
||||
tgsi_exec_machine_bind_shader(machine,
|
||||
var->tokens,
|
||||
PIPE_MAX_SAMPLERS,
|
||||
samplers);
|
||||
}
|
||||
|
||||
|
||||
@@ -180,8 +177,13 @@ exec_run( const struct sp_fragment_shader_variant *var,
|
||||
|
||||
|
||||
static void
|
||||
exec_delete( struct sp_fragment_shader_variant *var )
|
||||
exec_delete(struct sp_fragment_shader_variant *var,
|
||||
struct tgsi_exec_machine *machine)
|
||||
{
|
||||
if (machine->Tokens == var->tokens) {
|
||||
tgsi_exec_machine_bind_shader(machine, NULL, 0, NULL);
|
||||
}
|
||||
|
||||
FREE( (void *) var->tokens );
|
||||
FREE(var);
|
||||
}
|
||||
|
@@ -148,13 +148,6 @@ shade_quads(struct quad_stage *qs,
|
||||
static void
|
||||
shade_begin(struct quad_stage *qs)
|
||||
{
|
||||
struct softpipe_context *softpipe = qs->softpipe;
|
||||
|
||||
softpipe->fs_variant->prepare( softpipe->fs_variant,
|
||||
softpipe->fs_machine,
|
||||
(struct tgsi_sampler **)
|
||||
softpipe->tgsi.samplers_list[PIPE_SHADER_FRAGMENT] );
|
||||
|
||||
qs->next->begin(qs->next);
|
||||
}
|
||||
|
||||
|
@@ -88,7 +88,8 @@ struct sp_fragment_shader_variant
|
||||
struct quad_header *quad);
|
||||
|
||||
/* Deletes this instance of the object */
|
||||
void (*delete)(struct sp_fragment_shader_variant *shader);
|
||||
void (*delete)(struct sp_fragment_shader_variant *shader,
|
||||
struct tgsi_exec_machine *machine);
|
||||
|
||||
struct sp_fragment_shader_variant *next;
|
||||
};
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user