Compare commits
303 Commits
mesa-13.0.
...
mesa-12.0.
Author | SHA1 | Date | |
---|---|---|---|
|
8b06176f31 | ||
|
ab8938817f | ||
|
88a095962f | ||
|
450f076482 | ||
|
168fdc6a07 | ||
|
5193fe9f4f | ||
|
4a3d510b5b | ||
|
63b7c6ffc8 | ||
|
3276443935 | ||
|
8a700c562c | ||
|
dcc4df858a | ||
|
dbb4c3c7c8 | ||
|
7af5c2834c | ||
|
0e5e20dca0 | ||
|
cc2c350416 | ||
|
66fe2be1f5 | ||
|
568ba49673 | ||
|
134523aa7d | ||
|
9f364ed35e | ||
|
d0e1d6b1c8 | ||
|
7d40db8cdb | ||
|
250e13e585 | ||
|
5469fc9800 | ||
|
951be8a50c | ||
|
b08e5a1940 | ||
|
2ad47d912e | ||
|
bb819a9e21 | ||
|
0076e14f53 | ||
|
930425df1e | ||
|
700c1412e7 | ||
|
1eaba7b5b3 | ||
|
684e555aaa | ||
|
dcc6dde5f9 | ||
|
6d47c3eb4e | ||
|
7f0984ca51 | ||
|
94bfef8a71 | ||
|
2bd400d953 | ||
|
d4ab5bcad5 | ||
|
b82362f52c | ||
|
2fc24cfd8c | ||
|
507d19c44f | ||
|
a6a246e17c | ||
|
a51a9d7ba3 | ||
|
4f784775a7 | ||
|
48fe283158 | ||
|
f41f78cda1 | ||
|
197e2eaea8 | ||
|
eadccf8c67 | ||
|
1fc705366c | ||
|
91de94a119 | ||
|
d7ea3eada7 | ||
|
0af4f5c1ba | ||
|
335193107a | ||
|
32bb867118 | ||
|
60b5ba557e | ||
|
9013f56bb7 | ||
|
133d0f0882 | ||
|
1e8fb90f19 | ||
|
6c1911effb | ||
|
aefcbf41ef | ||
|
892cbc202c | ||
|
7a4641cdbe | ||
|
13d82b7690 | ||
|
94cd7425e8 | ||
|
40a9ffbbca | ||
|
02bf08e124 | ||
|
feaa68e38a | ||
|
72cc8544a8 | ||
|
fcefb53c37 | ||
|
913e9e14f0 | ||
|
a49f97fae3 | ||
|
672872051d | ||
|
667beb92a9 | ||
|
262282c1bf | ||
|
350ae65585 | ||
|
415869c5c9 | ||
|
6a3f08be3a | ||
|
0315650532 | ||
|
9259e0f990 | ||
|
dbc94da586 | ||
|
1dd276aa7c | ||
|
652161bdc8 | ||
|
29b24d75eb | ||
|
8b3333d1df | ||
|
bf59ce8869 | ||
|
0a7671a309 | ||
|
69234ef45e | ||
|
2681454102 | ||
|
e9fd680fde | ||
|
6a6947d89a | ||
|
1673dec65c | ||
|
af12f81147 | ||
|
d9219b5b79 | ||
|
abfed13bf4 | ||
|
8ac0a713f7 | ||
|
f7af3868f7 | ||
|
15d06d4d61 | ||
|
6fd7d618f4 | ||
|
045d6bc023 | ||
|
b2fe134064 | ||
|
2e8129ddf8 | ||
|
5e0b11cb6d | ||
|
6306930c3f | ||
|
76377387c2 | ||
|
6775b169cd | ||
|
a0235eb0f7 | ||
|
09a098bdeb | ||
|
f3c8dde2e4 | ||
|
3fddb9fd46 | ||
|
f614a1f4d8 | ||
|
f4bc7218d5 | ||
|
77f241bd37 | ||
|
deedb368de | ||
|
bac23b13eb | ||
|
b03b256e92 | ||
|
52ae654569 | ||
|
f675339b22 | ||
|
cdbcd315b3 | ||
|
7f1a4dc740 | ||
|
97440cc2ed | ||
|
3265becac3 | ||
|
033279c961 | ||
|
6572273631 | ||
|
dab4a6001b | ||
|
286ed3aff0 | ||
|
baa6ef4ed0 | ||
|
b7e91a0421 | ||
|
05c5ed47d1 | ||
|
a9647850d1 | ||
|
7d41c8aa25 | ||
|
575f9eaa2d | ||
|
792a5ee425 | ||
|
59841f5466 | ||
|
966ee94558 | ||
|
8ed5204182 | ||
|
28294573c7 | ||
|
7bed792ebb | ||
|
7d5cdb7675 | ||
|
465be91421 | ||
|
4a6fecdf69 | ||
|
883a1b3bd2 | ||
|
a71e0fd8cd | ||
|
547b5d2daa | ||
|
7154fa614b | ||
|
2cf78b4851 | ||
|
b9f69df93d | ||
|
eaa8561230 | ||
|
9edc2f1828 | ||
|
5e41ac197f | ||
|
cdeb3e8eb4 | ||
|
0b71ef5e46 | ||
|
c01ebdc83e | ||
|
501e8421f8 | ||
|
3162e2f9fc | ||
|
766f852616 | ||
|
b499d1062d | ||
|
939cd6edac | ||
|
2b6817c91c | ||
|
9a118c79e7 | ||
|
be426c46ab | ||
|
02f381bb17 | ||
|
e84116f364 | ||
|
6c5c1bc1b9 | ||
|
fdcc6a855b | ||
|
c9477e0a80 | ||
|
8d9bf67bba | ||
|
ca009cf8ba | ||
|
7487d5cbdc | ||
|
72dbdf6f89 | ||
|
dd1943f904 | ||
|
6eb0240a32 | ||
|
eb0197ad53 | ||
|
242ac96a24 | ||
|
c03b4444d1 | ||
|
ad684cee3a | ||
|
ea24c9be4a | ||
|
86dbf1ef4b | ||
|
b1f217b5a9 | ||
|
a0be8d3d08 | ||
|
901c78786f | ||
|
986159437d | ||
|
ab75b22029 | ||
|
5cae2ac47e | ||
|
7d515b26bb | ||
|
0e554f54dc | ||
|
201f357c52 | ||
|
bf3d6d9601 | ||
|
f51e99f704 | ||
|
b2afa23a40 | ||
|
6f38259419 | ||
|
bba2299735 | ||
|
49c53a2987 | ||
|
4306e01ece | ||
|
b9920d2bba | ||
|
9bf30be693 | ||
|
05d33806cd | ||
|
507d25f6f1 | ||
|
4daa331e25 | ||
|
fc0a469e4c | ||
|
0ce3dc9a30 | ||
|
89bc5f9a90 | ||
|
09f48203c5 | ||
|
997bcc45ec | ||
|
a0e36438a8 | ||
|
954829ebbb | ||
|
f12a16ec99 | ||
|
ceb9ed0e38 | ||
|
5a63ae9f15 | ||
|
a95560bac5 | ||
|
1adbe2f45c | ||
|
ccc9783a98 | ||
|
c632590996 | ||
|
2830ae638c | ||
|
5ca18b6a4b | ||
|
bb4ff53a71 | ||
|
d5dc87a1ef | ||
|
85579221a4 | ||
|
6eb39fa255 | ||
|
13999dc70d | ||
|
a3fce26907 | ||
|
7ddbe91435 | ||
|
c6ca6f0728 | ||
|
300737042c | ||
|
09b2be7a51 | ||
|
6efd37f30d | ||
|
af2a278dfe | ||
|
07f5e621cf | ||
|
d0dddbf4ee | ||
|
cbb02ebd74 | ||
|
d5528d5f55 | ||
|
0e540b4a15 | ||
|
911eddd37b | ||
|
2185edf699 | ||
|
09f0e97d1c | ||
|
2db670cf3e | ||
|
5000556d5d | ||
|
ab525a637a | ||
|
d130c53ac1 | ||
|
669836e1be | ||
|
1dce03e4c1 | ||
|
a7649abe9f | ||
|
bcfda0a1fe | ||
|
998e503592 | ||
|
5e3e292502 | ||
|
3be5c6a9ec | ||
|
a26ca04fe3 | ||
|
1a5d6a232f | ||
|
702a1121c9 | ||
|
9a21315ea9 | ||
|
94630ce0c7 | ||
|
6ad61d90ea | ||
|
a136b8bfe2 | ||
|
52ba7abe1e | ||
|
28ecf2b90e | ||
|
ead833a395 | ||
|
ee77c4a099 | ||
|
a94be40ecc | ||
|
632d7ef148 | ||
|
5513300f59 | ||
|
33d0016836 | ||
|
169b700dfd | ||
|
33e985f8b9 | ||
|
c9de6190a0 | ||
|
05d88165d9 | ||
|
d1cf18497a | ||
|
5a44d36b46 | ||
|
0e54eebeed | ||
|
0ab1a3957a | ||
|
1398a9510f | ||
|
b265796c79 | ||
|
4a00da1662 | ||
|
e817522728 | ||
|
915cc490d7 | ||
|
683c6940d8 | ||
|
2d483256d5 | ||
|
8c627af1f0 | ||
|
86e367a572 | ||
|
64015c03bb | ||
|
99fcfd985e | ||
|
7bc29c784a | ||
|
b2b7f05da6 | ||
|
eb56a2f250 | ||
|
c1269825cf | ||
|
f651a4bb2e | ||
|
44029d4237 | ||
|
910fa7a824 | ||
|
3b78304025 | ||
|
dd96daa55e | ||
|
a6011c6fc6 | ||
|
2d83aad693 | ||
|
665f57c513 | ||
|
7e62585ee8 | ||
|
4dd70617a1 | ||
|
9ed6965749 | ||
|
aed6230269 | ||
|
f73a68ec37 | ||
|
0c12887764 | ||
|
145705e49c | ||
|
d3c92267e0 | ||
|
36e26f2ee2 | ||
|
9a56e7d25b | ||
|
7ad2cb6f08 | ||
|
a43a368457 |
@@ -1,34 +0,0 @@
|
||||
# To use this config on you editor, follow the instructions at:
|
||||
# http://editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{c,h,cpp,hpp,cc,hh}]
|
||||
indent_style = space
|
||||
indent_size = 3
|
||||
|
||||
[{Makefile*,*.mk}]
|
||||
indent_style = tab
|
||||
|
||||
[{*.py,SCons*}]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.pl]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.m4]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.patch]
|
||||
trim_trailing_whitespace = false
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -49,4 +49,3 @@ Makefile.in
|
||||
.install-mesa-links
|
||||
.install-gallium-links
|
||||
/src/git_sha1.h
|
||||
TAGS
|
||||
|
12
.mailmap
12
.mailmap
@@ -88,11 +88,9 @@ Carl-Philip Hänsch <cphaensch@googlemail.com> Carl-Philip Haensch <s3734770@mai
|
||||
Carl-Philip Hänsch <cphaensch@googlemail.com> Carl-Philip Haensch <carli@carli-laptop.(none)>
|
||||
Carl-Philip Hänsch <cphaensch@googlemail.com> Carl-Philip Haensch <Carl-Philip.Haensch@mailbox.tu-dresden.de>
|
||||
|
||||
Chad Versace <chadversary@chromium.org> <chad@kiwitree.net>
|
||||
Chad Versace <chadversary@chromium.org> <chad@chad-versace.us>
|
||||
Chad Versace <chadversary@chromium.org> <Chad Versace chad@chad-versace.us>
|
||||
Chad Versace <chadversary@chromium.org> <chad.versace@intel.com>
|
||||
Chad Versace <chadversary@chromium.org> <chad.versace@linux.intel.com>
|
||||
Chad Versace <chad.versace@intel.com> <chad@chad-versace.us>
|
||||
Chad Versace <chad.versace@intel.com> <Chad Versace chad@chad-versace.us>
|
||||
Chad Versace <chad.versace@intel.com> <chad.versace@linux.intel.com>
|
||||
|
||||
Chia-I Wu <olvaffe@gmail.com> <olv@lunarg.com>
|
||||
Chia-I Wu <olvaffe@gmail.com> Chia-Wu <olvaffe@gmail.com>
|
||||
@@ -140,8 +138,6 @@ Dmitry Cherkassov <dcherkassov@gmail.com> Dmitry Cherkasov <dcherkassov@gmail.co
|
||||
|
||||
Dylan Baker <dylanx.c.baker@intel.com> <baker.dylan.c@gmail.com>
|
||||
|
||||
Edward O'Callaghan <funfunctor@folklore1984.net> <eocallaghan@alterapraxis.com>
|
||||
|
||||
Emeric Grange <emeric.grange@gmail.com> Emeric <emeric.grange@gmail.com>
|
||||
|
||||
Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@collabora.com>
|
||||
@@ -278,7 +274,7 @@ Marc Dietrich <marvin24@gmx.de> marvin24 <marvin24@gmx.de>
|
||||
|
||||
Marcin Ślusarz <marcin.slusarz@gmail.com> Marcin Slusarz <marcin.slusarz@gmail.com>
|
||||
|
||||
Marek Olšák <maraeo@gmail.com> <marek.olsak@amd.com>
|
||||
Marek Olšák <marek.olsak@amd.com> <maraeo@gmail.com>
|
||||
|
||||
Mario Kleiner <mario.kleiner.de@gmail.com> kleinerm <mario.kleiner@tuebingen.mpg.de>
|
||||
Mario Kleiner <mario.kleiner.de@gmail.com> <mario.kleiner@tuebingen.mpg.de>
|
||||
|
29
.travis.yml
29
.travis.yml
@@ -1,7 +1,6 @@
|
||||
language: c
|
||||
|
||||
sudo: true
|
||||
dist: trusty
|
||||
sudo: false
|
||||
|
||||
cache:
|
||||
directories:
|
||||
@@ -11,15 +10,12 @@ addons:
|
||||
apt:
|
||||
packages:
|
||||
- libdrm-dev
|
||||
- libudev-dev
|
||||
- x11proto-xf86vidmode-dev
|
||||
- libexpat1-dev
|
||||
- libxcb-dri2-0-dev
|
||||
- libx11-xcb-dev
|
||||
- llvm-3.5-dev
|
||||
# llvm-config is not in the dev package?
|
||||
- llvm-3.5
|
||||
# LLVM packaging is broken and misses this dep.
|
||||
- libedit-dev
|
||||
- llvm-3.4-dev
|
||||
- scons
|
||||
|
||||
env:
|
||||
@@ -45,16 +41,6 @@ install:
|
||||
- export PATH="/usr/lib/ccache:$PATH"
|
||||
- pip install --user mako
|
||||
|
||||
# Since libdrm gets updated in configure.ac regularly, try to pick up the
|
||||
# latest version from there.
|
||||
- for line in `grep "^LIBDRM_.*_REQUIRED=" configure.ac`; do
|
||||
old_ver=`echo $LIBDRM_VERSION | sed 's/libdrm-//'`;
|
||||
new_ver=`echo $line | sed 's/.*REQUIRED=//'`;
|
||||
if `echo "$old_ver,$new_ver" | tr ',' '\n' | sort -Vc 2> /dev/null`; then
|
||||
export LIBDRM_VERSION="libdrm-$new_ver";
|
||||
fi;
|
||||
done
|
||||
|
||||
# Install dependencies where we require specific versions (or where
|
||||
# disallowed by Travis CI's package whitelisting).
|
||||
|
||||
@@ -92,19 +78,22 @@ install:
|
||||
|
||||
- wget http://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
|
||||
- tar -jxvf $LIBDRM_VERSION.tar.bz2
|
||||
- (cd $LIBDRM_VERSION && ./configure --prefix=$HOME/prefix --enable-vc4 && make install)
|
||||
- (cd $LIBDRM_VERSION && ./configure --prefix=$HOME/prefix && make install)
|
||||
|
||||
- wget $XORG_RELEASES/lib/$LIBXSHMFENCE_VERSION.tar.bz2
|
||||
- tar -jxvf $LIBXSHMFENCE_VERSION.tar.bz2
|
||||
- (cd $LIBXSHMFENCE_VERSION && ./configure --prefix=$HOME/prefix && make install)
|
||||
|
||||
# Disabled LLVM (and therefore r300 and r600) because the build fails
|
||||
# with "undefined reference to `clock_gettime'" and "undefined
|
||||
# reference to `setupterm'" in llvmpipe.
|
||||
script:
|
||||
- if test "x$BUILD" = xmake; then
|
||||
./autogen.sh --enable-debug
|
||||
--disable-gallium-llvm
|
||||
--with-egl-platforms=x11,drm
|
||||
--with-dri-drivers=i915,i965,radeon,r200,swrast,nouveau
|
||||
--with-gallium-drivers=svga,swrast,vc4,virgl,r300,r600
|
||||
--disable-llvm-shared-libs
|
||||
--with-gallium-drivers=svga,swrast,vc4,virgl
|
||||
;
|
||||
make && make check;
|
||||
elif test x$BUILD = xscons; then
|
||||
|
@@ -34,10 +34,6 @@ MESA_VERSION := $(shell cat $(MESA_TOP)/VERSION)
|
||||
LOCAL_CFLAGS += \
|
||||
-Wno-unused-parameter \
|
||||
-Wno-date-time \
|
||||
-Wno-pointer-arith \
|
||||
-Wno-missing-field-initializers \
|
||||
-Wno-initializer-overrides \
|
||||
-Wno-mismatched-tags \
|
||||
-DPACKAGE_VERSION=\"$(MESA_VERSION)\" \
|
||||
-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\" \
|
||||
-DANDROID_VERSION=0x0$(MESA_ANDROID_MAJOR_VERSION)0$(MESA_ANDROID_MINOR_VERSION)
|
||||
@@ -82,14 +78,6 @@ LOCAL_CFLAGS += \
|
||||
-D__STDC_LIMIT_MACROS
|
||||
endif
|
||||
|
||||
ifneq ($(LOCAL_IS_HOST_MODULE),true)
|
||||
# add libdrm if there are hardware drivers
|
||||
ifneq ($(filter-out swrast,$(MESA_GPU_DRIVERS)),)
|
||||
LOCAL_CFLAGS += -DHAVE_LIBDRM
|
||||
LOCAL_SHARED_LIBRARIES += libdrm
|
||||
endif
|
||||
endif
|
||||
|
||||
LOCAL_CPPFLAGS += \
|
||||
$(if $(filter true,$(MESA_LOLLIPOP_BUILD)),-D_USING_LIBCXX) \
|
||||
-Wno-error=non-virtual-dtor \
|
||||
|
@@ -95,8 +95,8 @@ SUBDIRS := \
|
||||
src/mesa \
|
||||
src/util \
|
||||
src/egl \
|
||||
src/amd \
|
||||
src/intel \
|
||||
src/intel/genxml \
|
||||
src/intel/isl \
|
||||
src/mesa/drivers/dri
|
||||
|
||||
INC_DIRS := $(call all-named-subdir-makefiles,$(SUBDIRS))
|
||||
|
@@ -40,11 +40,11 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
|
||||
--enable-vdpau \
|
||||
--enable-xa \
|
||||
--enable-xvmc \
|
||||
--enable-llvm-shared-libs \
|
||||
--disable-llvm-shared-libs \
|
||||
--with-egl-platforms=x11,wayland,drm,surfaceless \
|
||||
--with-dri-drivers=i915,i965,nouveau,radeon,r200,swrast \
|
||||
--with-gallium-drivers=i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,swr \
|
||||
--with-vulkan-drivers=intel,radeon
|
||||
--with-vulkan-drivers=intel
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
@@ -62,7 +62,6 @@ noinst_HEADERS = \
|
||||
include/c99_math.h \
|
||||
include/c11 \
|
||||
include/D3D9 \
|
||||
include/GL/wglext.h \
|
||||
include/HaikuGL \
|
||||
include/no_extern_c.h \
|
||||
include/pci_ids
|
||||
|
@@ -104,7 +104,3 @@ F: src/egl/drivers/dri2/platform_wayland.c
|
||||
FREEDRENO
|
||||
R: Rob Clark <robclark@freedesktop.org>
|
||||
F: src/gallium/drivers/freedreno/
|
||||
|
||||
GLX
|
||||
R: Adam Jackson <ajax@redhat.com>
|
||||
F: src/glx/
|
||||
|
@@ -37,8 +37,6 @@ cache:
|
||||
- win_flex_bison-2.4.5.zip
|
||||
- llvm-3.3.1-msvc2013-mtd.7z
|
||||
|
||||
os: Visual Studio 2013
|
||||
|
||||
environment:
|
||||
WINFLEXBISON_ARCHIVE: win_flex_bison-2.4.5.zip
|
||||
LLVM_ARCHIVE: llvm-3.3.1-msvc2013-mtd.7z
|
||||
@@ -49,13 +47,11 @@ install:
|
||||
- python -m pip --version
|
||||
# Install Mako
|
||||
- python -m pip install --egg Mako
|
||||
# Install pywin32 extensions, needed by SCons
|
||||
- python -m pip install pypiwin32
|
||||
# Install SCons
|
||||
- python -m pip install --egg scons==2.4.1
|
||||
- scons --version
|
||||
# Install flex/bison
|
||||
- if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://downloads.sourceforge.net/project/winflexbison/old_versions/%WINFLEXBISON_ARCHIVE%"
|
||||
- if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "http://downloads.sourceforge.net/project/winflexbison/%WINFLEXBISON_ARCHIVE%"
|
||||
- 7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul
|
||||
- set Path=%CD%\winflexbison;%Path%
|
||||
- win_flex --version
|
||||
|
@@ -1,21 +1,2 @@
|
||||
# Commit was picked with -x
|
||||
907ace57986733add2aebfa9dd7c83c67efed70e mapi: automake: set VISIBILITY_CFLAGS for shared glapi
|
||||
|
||||
# Commit was reverted shortly after it landed in master
|
||||
a39ad185932eab4f25a0cb2b112c10d8700ef242 configure.ac: honour LLVM_LIBDIR when linking against LLVM
|
||||
|
||||
# Commit fixes an earlier patch which is quite invasive to be considered for stable.
|
||||
157971e450c34ec430c295ff922c2e597294aba3 i965/blit: Fix the src dimension sanity check in miptree_copy
|
||||
|
||||
# Similar to the above - depends on the series which introduce intel_miptree_copy
|
||||
b18cd8ce2c07c2d1a666fbff1f0d92d17dd5b22c i965/miptree: Use intel_miptree_copy for maps
|
||||
|
||||
# The commit is a backport of an identical anv one. The latter is not in stable
|
||||
# and so does this one since they depend on functionality which is not in stable.
|
||||
65cbb993d33976d9ee24eff01ade8ed9013617ca radv: Call nir_lower_constant_initializers.
|
||||
|
||||
# Commit causes regression on i915, and Nicolai requested that we drop it all together.
|
||||
963311b71fd9900351a4a9dd1cd5f5db391f7e1b mesa/main: fix version/extension checks in _mesa_ClampColor
|
||||
|
||||
# Misnominated (only previous commit was meant to be for stable)
|
||||
36b9976e1f99e8070c67cb8a255793939db77d02 egl/wayland: Avoid race conditions when on non-main thread
|
||||
# The offending commit that this patch (part) reverts isn't in 12.0
|
||||
be32a2132785fbc119f17e62070e007ee7d17af7 i965/compiler: Bring back the INTEL_PRECISE_TRIG environment variable
|
||||
|
@@ -1,3 +0,0 @@
|
||||
[*.sh]
|
||||
indent_style = space
|
||||
indent_size = 2
|
@@ -10,28 +10,26 @@
|
||||
# $ bin/get-extra-pick-list.sh | tee picklist
|
||||
|
||||
# Use the last branchpoint as our limit for the search
|
||||
latest_branchpoint=`git merge-base origin/master HEAD`
|
||||
# XXX: there should be a better way for this
|
||||
latest_branchpoint=`git branch | grep \* | cut -c 3-`-branchpoint
|
||||
|
||||
# Grep for commits with "cherry picked from commit" in the commit message.
|
||||
git log --reverse --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
|
||||
grep "cherry picked from commit" |\
|
||||
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
||||
|
||||
# For each cherry-picked commit...
|
||||
cat already_picked | cut -c -8 |\
|
||||
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' |\
|
||||
cut -c -8 |\
|
||||
while read sha
|
||||
do
|
||||
# ... check if it's referenced (fixed by another) patch
|
||||
# Check if the original commit is referenced in master
|
||||
git log -n1 --pretty=oneline --grep=$sha $latest_branchpoint..origin/master |\
|
||||
cut -c -8 |\
|
||||
while read candidate
|
||||
do
|
||||
# And flag up if it hasn't landed in branch yet.
|
||||
if grep -q ^$candidate already_picked ; then
|
||||
continue
|
||||
# Check if the potential fix, hasn't landed in branch yet.
|
||||
found=`git log -n1 --pretty=oneline --reverse --grep=$candidate $latest_branchpoint..HEAD |wc -l`
|
||||
if test $found = 0
|
||||
then
|
||||
echo Commit $candidate might need to be picked, as it references $sha
|
||||
fi
|
||||
echo Commit $candidate references $sha
|
||||
done
|
||||
done
|
||||
|
||||
rm -f already_picked
|
||||
|
@@ -1,61 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script for generating a list of candidates [referenced by a Fixes tag] for
|
||||
# cherry-picking to a stable branch
|
||||
#
|
||||
# Usage examples:
|
||||
#
|
||||
# $ bin/get-fixes-pick-list.sh
|
||||
# $ bin/get-fixes-pick-list.sh > picklist
|
||||
# $ bin/get-fixes-pick-list.sh | tee picklist
|
||||
|
||||
# Use the last branchpoint as our limit for the search
|
||||
latest_branchpoint=`git merge-base origin/master HEAD`
|
||||
|
||||
# List all the commits between day 1 and the branch point...
|
||||
git log --reverse --pretty=%H $latest_branchpoint > already_landed
|
||||
|
||||
# ... and the ones cherry-picked.
|
||||
git log --reverse --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
|
||||
grep "cherry picked from commit" |\
|
||||
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
||||
|
||||
# Grep for commits with Fixes tag
|
||||
git log --reverse --pretty=%H -i --grep="fixes:" $latest_branchpoint..origin/master |\
|
||||
while read sha
|
||||
do
|
||||
# For each one try to extract the tag
|
||||
fixes_count=`git show $sha | grep -i "fixes:" | wc -l`
|
||||
if [ "x$fixes_count" != x1 ] ; then
|
||||
echo WARNING: Commit $sha has nore than one Fixes tag
|
||||
fi
|
||||
fixes=`git show $sha | grep -i "fixes:" | head -n 1`
|
||||
# The following sed/cut combination is borrowed from GregKH
|
||||
id=`echo ${fixes} | sed -e 's/^[ \t]*//' | cut -f 2 -d ':' | sed -e 's/^[ \t]*//' | cut -f 1 -d ' '`
|
||||
|
||||
# Bail out if we cannot find suitable id.
|
||||
# Any specific validation the $id is valid and not some junk, is
|
||||
# implied with the follow up code
|
||||
if [ "x$id" = x ] ; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Check if the offending commit is in branch.
|
||||
|
||||
# Be that cherry-picked ...
|
||||
# ... or landed before the branchpoint.
|
||||
if grep -q ^$id already_picked ||
|
||||
grep -q ^$id already_landed ; then
|
||||
|
||||
# Finally nominate the fix if it hasn't landed yet.
|
||||
if grep -q ^$sha already_picked ; then
|
||||
continue
|
||||
fi
|
||||
|
||||
echo Commit $sha fixes $id
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
rm -f already_picked
|
||||
rm -f already_landed
|
@@ -8,16 +8,13 @@
|
||||
# $ bin/get-pick-list.sh > picklist
|
||||
# $ bin/get-pick-list.sh | tee picklist
|
||||
|
||||
# Use the last branchpoint as our limit for the search
|
||||
latest_branchpoint=`git merge-base origin/master HEAD`
|
||||
|
||||
# Grep for commits with "cherry picked from commit" in the commit message.
|
||||
git log --reverse --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
|
||||
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='^CC:.*13\.0.*mesa-stable' $latest_branchpoint..origin/master |\
|
||||
git log --reverse --pretty=%H -i --grep='^\([[:space:]]*NOTE: .*[Cc]andidate\|CC:.*mesa-stable\)' HEAD..origin/master |\
|
||||
while read sha
|
||||
do
|
||||
# Check to see whether the patch is on the ignore list.
|
||||
|
@@ -1,42 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Script for generating a list of candidates which have typos in the nomination line
|
||||
#
|
||||
# Usage examples:
|
||||
#
|
||||
# $ bin/get-typod-pick-list.sh
|
||||
# $ bin/get-typod-pick-list.sh > picklist
|
||||
# $ bin/get-typod-pick-list.sh | tee picklist
|
||||
|
||||
# NB:
|
||||
# This script intentionally _never_ checks for specific version tag
|
||||
# Should we consider folding it with the original get-pick-list.sh
|
||||
|
||||
# Use the last branchpoint as our limit for the search
|
||||
latest_branchpoint=`git merge-base origin/master HEAD`
|
||||
|
||||
# Grep for commits with "cherry picked from commit" in the commit message.
|
||||
git log --reverse --grep="cherry picked from commit" $latest_branchpoint..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='^CC:.*mesa-dev' $latest_branchpoint..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
|
@@ -86,7 +86,7 @@ def AddOptions(opts):
|
||||
from SCons.Options.EnumOption import EnumOption
|
||||
opts.Add(EnumOption('build', 'build type', 'debug',
|
||||
allowed_values=('debug', 'checked', 'profile',
|
||||
'release', 'opt')))
|
||||
'release')))
|
||||
opts.Add(BoolOption('verbose', 'verbose output', 'no'))
|
||||
opts.Add(EnumOption('machine', 'use machine-specific assembly code',
|
||||
default_machine,
|
||||
|
367
configure.ac
367
configure.ac
@@ -74,11 +74,11 @@ LIBDRM_AMDGPU_REQUIRED=2.4.63
|
||||
LIBDRM_INTEL_REQUIRED=2.4.61
|
||||
LIBDRM_NVVIEUX_REQUIRED=2.4.66
|
||||
LIBDRM_NOUVEAU_REQUIRED=2.4.66
|
||||
LIBDRM_FREEDRENO_REQUIRED=2.4.68
|
||||
LIBDRM_VC4_REQUIRED=2.4.69
|
||||
LIBDRM_FREEDRENO_REQUIRED=2.4.67
|
||||
DRI2PROTO_REQUIRED=2.6
|
||||
DRI3PROTO_REQUIRED=1.0
|
||||
PRESENTPROTO_REQUIRED=1.0
|
||||
LIBUDEV_REQUIRED=151
|
||||
GLPROTO_REQUIRED=1.4.14
|
||||
LIBOMXIL_BELLAGIO_REQUIRED=0.0
|
||||
LIBVA_REQUIRED=0.38.0
|
||||
@@ -89,8 +89,7 @@ XCBDRI2_REQUIRED=1.8
|
||||
XCBGLX_REQUIRED=1.8.1
|
||||
XSHMFENCE_REQUIRED=1.1
|
||||
XVMC_REQUIRED=1.0.6
|
||||
PYTHON_MAKO_REQUIRED=0.8.0
|
||||
LIBSENSORS_REQUIRED=4.0.0
|
||||
PYTHON_MAKO_REQUIRED=0.3.4
|
||||
|
||||
dnl Check for progs
|
||||
AC_PROG_CPP
|
||||
@@ -109,7 +108,6 @@ LT_PREREQ([2.2])
|
||||
LT_INIT([disable-static])
|
||||
|
||||
AC_CHECK_PROG(RM, rm, [rm -f])
|
||||
AC_CHECK_PROG(XXD, xxd, [xxd])
|
||||
|
||||
AX_PROG_BISON([],
|
||||
AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-parse.c"],
|
||||
@@ -227,7 +225,6 @@ AX_GCC_FUNC_ATTRIBUTE([packed])
|
||||
AX_GCC_FUNC_ATTRIBUTE([pure])
|
||||
AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
|
||||
AX_GCC_FUNC_ATTRIBUTE([unused])
|
||||
AX_GCC_FUNC_ATTRIBUTE([visibility])
|
||||
AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
|
||||
AX_GCC_FUNC_ATTRIBUTE([weak])
|
||||
|
||||
@@ -257,12 +254,15 @@ case "$host_os" in
|
||||
*-android)
|
||||
android=yes
|
||||
;;
|
||||
linux*|*-gnu*|gnu*|cygwin*)
|
||||
linux*|*-gnu*|gnu*)
|
||||
DEFINES="$DEFINES -D_GNU_SOURCE"
|
||||
;;
|
||||
solaris*)
|
||||
DEFINES="$DEFINES -DSVR4"
|
||||
;;
|
||||
cygwin*)
|
||||
DEFINES="$DEFINES -D_XOPEN_SOURCE=700"
|
||||
;;
|
||||
esac
|
||||
|
||||
AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes)
|
||||
@@ -301,9 +301,16 @@ if test "x$GCC" = xyes; then
|
||||
# Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
|
||||
CFLAGS=$save_CFLAGS
|
||||
|
||||
# Work around aliasing bugs - developers should comment this out
|
||||
CFLAGS="$CFLAGS -fno-strict-aliasing"
|
||||
|
||||
# We don't want floating-point math functions to set errno or trap
|
||||
CFLAGS="$CFLAGS -fno-math-errno -fno-trapping-math"
|
||||
|
||||
# gcc's builtin memcmp is slower than glibc's
|
||||
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
|
||||
CFLAGS="$CFLAGS -fno-builtin-memcmp"
|
||||
|
||||
# Flags to help ensure that certain portions of the code -- and only those
|
||||
# portions -- can be built with MSVC:
|
||||
# - src/util, src/gallium/auxiliary, rc/gallium/drivers/llvmpipe, and
|
||||
@@ -340,8 +347,12 @@ if test "x$GXX" = xyes; then
|
||||
# Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
|
||||
CXXFLAGS=$save_CXXFLAGS
|
||||
|
||||
# We don't want floating-point math functions to set errno or trap
|
||||
CXXFLAGS="$CXXFLAGS -fno-math-errno -fno-trapping-math"
|
||||
# Work around aliasing bugs - developers should comment this out
|
||||
CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
|
||||
|
||||
# gcc's builtin memcmp is slower than glibc's
|
||||
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
|
||||
CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
|
||||
fi
|
||||
|
||||
AC_SUBST([MSVC2013_COMPAT_CFLAGS])
|
||||
@@ -387,17 +398,6 @@ fi
|
||||
AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
|
||||
AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS)
|
||||
|
||||
dnl Check for new-style atomic builtins
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
||||
int main() {
|
||||
int n;
|
||||
return __atomic_load_n(&n, __ATOMIC_ACQUIRE);
|
||||
}]])], GCC_ATOMIC_BUILTINS_SUPPORTED=1)
|
||||
if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then
|
||||
DEFINES="$DEFINES -DUSE_GCC_ATOMIC_BUILTINS"
|
||||
fi
|
||||
AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPPORTED = x1])
|
||||
|
||||
dnl Check for Endianness
|
||||
AC_C_BIGENDIAN(
|
||||
little_endian=no,
|
||||
@@ -783,7 +783,6 @@ if test "x$enable_asm" = xyes; then
|
||||
esac
|
||||
fi
|
||||
|
||||
AC_HEADER_MAJOR
|
||||
AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
|
||||
AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
|
||||
AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
|
||||
@@ -826,21 +825,9 @@ dnl to -pthread, which causes problems if we need -lpthread to appear in
|
||||
dnl pkgconfig files.
|
||||
test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
|
||||
|
||||
dnl pthread-stubs is mandatory on targets where it exists
|
||||
case "$host_os" in
|
||||
cygwin* )
|
||||
pthread_stubs_possible="no"
|
||||
;;
|
||||
* )
|
||||
pthread_stubs_possible="yes"
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "x$pthread_stubs_possible" = xyes; then
|
||||
PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
|
||||
AC_SUBST(PTHREADSTUBS_CFLAGS)
|
||||
AC_SUBST(PTHREADSTUBS_LIBS)
|
||||
fi
|
||||
PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
|
||||
AC_SUBST(PTHREADSTUBS_CFLAGS)
|
||||
AC_SUBST(PTHREADSTUBS_LIBS)
|
||||
|
||||
dnl SELinux awareness.
|
||||
AC_ARG_ENABLE([selinux],
|
||||
@@ -883,32 +870,6 @@ AC_ARG_ENABLE([dri],
|
||||
[enable_dri="$enableval"],
|
||||
[enable_dri=yes])
|
||||
|
||||
AC_ARG_ENABLE([gallium-extra-hud],
|
||||
[AS_HELP_STRING([--enable-gallium-extra-hud],
|
||||
[enable HUD block/NIC I/O HUD stats support @<:@default=disabled@:>@])],
|
||||
[enable_gallium_extra_hud="$enableval"],
|
||||
[enable_gallium_extra_hud=no])
|
||||
AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes)
|
||||
if test "x$enable_gallium_extra_hud" = xyes ; then
|
||||
DEFINES="${DEFINES} -DHAVE_GALLIUM_EXTRA_HUD=1"
|
||||
fi
|
||||
|
||||
#TODO: no pkgconfig .pc available for libsensors.
|
||||
#PKG_CHECK_MODULES([LIBSENSORS], [libsensors >= $LIBSENSORS_REQUIRED], [enable_lmsensors=yes], [enable_lmsensors=no])
|
||||
AC_ARG_ENABLE([lmsensors],
|
||||
[AS_HELP_STRING([--enable-lmsensors],
|
||||
[enable HUD lmsensor support @<:@default=disabled@:>@])],
|
||||
[enable_lmsensors="$enableval"],
|
||||
[enable_lmsensors=no])
|
||||
AM_CONDITIONAL(HAVE_LIBSENSORS, test "x$enable_lmsensors" = xyes)
|
||||
if test "x$enable_lmsensors" = xyes ; then
|
||||
DEFINES="${DEFINES} -DHAVE_LIBSENSORS=1"
|
||||
LIBSENSORS_LDFLAGS="-lsensors"
|
||||
else
|
||||
LIBSENSORS_LDFLAGS=""
|
||||
fi
|
||||
AC_SUBST(LIBSENSORS_LDFLAGS)
|
||||
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
dri3_default=yes
|
||||
@@ -1140,20 +1101,11 @@ if test "x$have_libdrm" = xyes; then
|
||||
DEFINES="$DEFINES -DHAVE_LIBDRM"
|
||||
fi
|
||||
|
||||
require_libdrm() {
|
||||
if test "x$have_libdrm" != xyes; then
|
||||
AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Select which platform-dependent DRI code gets built
|
||||
case "$host_os" in
|
||||
darwin*)
|
||||
dri_platform='apple' ;;
|
||||
cygwin*)
|
||||
dri_platform='windows' ;;
|
||||
gnu*)
|
||||
gnu*|cygwin*)
|
||||
dri_platform='none' ;;
|
||||
*)
|
||||
dri_platform='drm' ;;
|
||||
@@ -1169,9 +1121,6 @@ AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes )
|
||||
AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
|
||||
AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
|
||||
AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
|
||||
AM_CONDITIONAL(HAVE_LMSENSORS, test "x$enable_lmsensors" = xyes )
|
||||
AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes )
|
||||
AM_CONDITIONAL(HAVE_WINDOWSDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xwindows )
|
||||
|
||||
AC_ARG_ENABLE([shared-glapi],
|
||||
[AS_HELP_STRING([--enable-shared-glapi],
|
||||
@@ -1352,9 +1301,23 @@ if test "x$with_sha1" = "x"; then
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL([ENABLE_SHADER_CACHE], [test x$enable_shader_cache = xyes])
|
||||
if test "x$enable_shader_cache" = "xyes"; then
|
||||
AC_DEFINE([ENABLE_SHADER_CACHE], [1], [Enable shader cache])
|
||||
fi
|
||||
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
need_pci_id=yes ;;
|
||||
*)
|
||||
need_pci_id=no ;;
|
||||
esac
|
||||
|
||||
PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
|
||||
have_libudev=yes, have_libudev=no)
|
||||
|
||||
AC_ARG_ENABLE([sysfs],
|
||||
[AS_HELP_STRING([--enable-sysfs],
|
||||
[enable /sys PCI identification @<:@default=disabled@:>@])],
|
||||
[have_sysfs="$enableval"],
|
||||
[have_sysfs=no]
|
||||
)
|
||||
|
||||
if test "x$enable_dri" = xyes; then
|
||||
if test "$enable_static" = yes; then
|
||||
@@ -1377,9 +1340,6 @@ AC_ARG_ENABLE([driglx-direct],
|
||||
dnl
|
||||
dnl libGL configuration per driver
|
||||
dnl
|
||||
if test "x$enable_glx" != xno; then
|
||||
PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
|
||||
fi
|
||||
case "x$enable_glx" in
|
||||
xxlib | xgallium-xlib)
|
||||
# Xlib-based GLX
|
||||
@@ -1393,6 +1353,7 @@ xxlib | xgallium-xlib)
|
||||
;;
|
||||
xdri)
|
||||
# DRI-based GLX
|
||||
PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
|
||||
|
||||
# find the DRI deps for libGL
|
||||
dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
|
||||
@@ -1400,7 +1361,9 @@ xdri)
|
||||
if test x"$driglx_direct" = xyes; then
|
||||
if test x"$dri_platform" = xdrm ; then
|
||||
DEFINES="$DEFINES -DGLX_USE_DRM"
|
||||
require_libdrm "Direct rendering"
|
||||
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"
|
||||
@@ -1422,9 +1385,6 @@ xdri)
|
||||
if test x"$dri_platform" = xapple ; then
|
||||
DEFINES="$DEFINES -DGLX_USE_APPLEGL"
|
||||
fi
|
||||
if test x"$dri_platform" = xwindows ; then
|
||||
DEFINES="$DEFINES -DGLX_USE_WINDOWSGL"
|
||||
fi
|
||||
fi
|
||||
|
||||
# add xf86vidmode if available
|
||||
@@ -1444,6 +1404,17 @@ xdri)
|
||||
;;
|
||||
esac
|
||||
|
||||
have_pci_id=no
|
||||
if test "$have_libudev" = yes; then
|
||||
DEFINES="$DEFINES -DHAVE_LIBUDEV"
|
||||
have_pci_id=yes
|
||||
fi
|
||||
|
||||
if test "$have_sysfs" = yes; then
|
||||
DEFINES="$DEFINES -DHAVE_SYSFS"
|
||||
have_pci_id=yes
|
||||
fi
|
||||
|
||||
# This is outside the case (above) so that it is invoked even for non-GLX
|
||||
# builds.
|
||||
AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
|
||||
@@ -1552,6 +1523,10 @@ if test "x$enable_dri" = xyes; then
|
||||
DEFINES="$DEFINES -DHAVE_DRI3"
|
||||
fi
|
||||
|
||||
if test "x$have_pci_id" != xyes; then
|
||||
AC_MSG_ERROR([libudev-dev or sysfs required for building DRI])
|
||||
fi
|
||||
|
||||
case "$host_cpu" in
|
||||
powerpc* | sparc*)
|
||||
# Build only the drivers for cards that exist on PowerPC/sparc
|
||||
@@ -1650,7 +1625,7 @@ fi
|
||||
AC_ARG_WITH([vulkan-drivers],
|
||||
[AS_HELP_STRING([--with-vulkan-drivers@<:@=DIRS...@:>@],
|
||||
[comma delimited Vulkan drivers list, e.g.
|
||||
"intel,radeon"
|
||||
"intel"
|
||||
@<:@default=no@:>@])],
|
||||
[with_vulkan_drivers="$withval"],
|
||||
[with_vulkan_drivers="no"])
|
||||
@@ -1664,7 +1639,7 @@ esac
|
||||
|
||||
AC_ARG_WITH([vulkan-icddir],
|
||||
[AS_HELP_STRING([--with-vulkan-icddir=DIR],
|
||||
[directory for the Vulkan driver icd files @<:@${datarootdir}/vulkan/icd.d@:>@])],
|
||||
[directory for the Vulkan driver icd files @<:@${sysconfdir}/vulkan/icd.d@:>@])],
|
||||
[VULKAN_ICD_INSTALL_DIR="$withval"],
|
||||
[VULKAN_ICD_INSTALL_DIR='${datarootdir}/vulkan/icd.d'])
|
||||
AC_SUBST([VULKAN_ICD_INSTALL_DIR])
|
||||
@@ -1683,13 +1658,6 @@ if test -n "$with_vulkan_drivers"; then
|
||||
HAVE_INTEL_VULKAN=yes;
|
||||
|
||||
;;
|
||||
xradeon)
|
||||
PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
|
||||
HAVE_RADEON_VULKAN=yes;
|
||||
if test "x$with_sha1" == "x"; then
|
||||
AC_MSG_ERROR([radv vulkan driver requires SHA1])
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
|
||||
;;
|
||||
@@ -1759,6 +1727,10 @@ if test "x$enable_gbm" = xauto; then
|
||||
esac
|
||||
fi
|
||||
if test "x$enable_gbm" = xyes; then
|
||||
if test "x$need_pci_id$have_pci_id" = xyesno; then
|
||||
AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED or sysfs])
|
||||
fi
|
||||
|
||||
if test "x$enable_dri" = xyes; then
|
||||
if test "x$enable_shared_glapi" = xno; then
|
||||
AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
|
||||
@@ -1773,8 +1745,11 @@ if test "x$enable_gbm" = xyes; then
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
|
||||
# FINISHME: GBM has a number of dependencies which we should add below
|
||||
GBM_PC_REQ_PRIV=""
|
||||
if test "x$need_pci_id$have_libudev" = xyesyes; then
|
||||
GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
|
||||
else
|
||||
GBM_PC_REQ_PRIV=""
|
||||
fi
|
||||
GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
|
||||
AC_SUBST([GBM_PC_REQ_PRIV])
|
||||
AC_SUBST([GBM_PC_LIB_PRIV])
|
||||
@@ -2022,8 +1997,8 @@ if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
|
||||
AC_MSG_ERROR([cannot build egl state tracker without EGL library])
|
||||
fi
|
||||
|
||||
PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
|
||||
WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`,
|
||||
PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland_scanner],
|
||||
WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland_scanner`,
|
||||
WAYLAND_SCANNER='')
|
||||
if test "x$WAYLAND_SCANNER" = x; then
|
||||
AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
|
||||
@@ -2034,6 +2009,8 @@ egl_platforms=`IFS=', '; echo $with_egl_platforms`
|
||||
for plat in $egl_platforms; do
|
||||
case "$plat" in
|
||||
wayland)
|
||||
test "x$have_libdrm" != xyes &&
|
||||
AC_MSG_ERROR([EGL platform wayland requires libdrm >= $LIBDRM_REQUIRED])
|
||||
|
||||
PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
|
||||
|
||||
@@ -2049,9 +2026,13 @@ for plat in $egl_platforms; do
|
||||
drm)
|
||||
test "x$enable_gbm" = "xno" &&
|
||||
AC_MSG_ERROR([EGL platform drm needs gbm])
|
||||
test "x$have_libdrm" != xyes &&
|
||||
AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
|
||||
;;
|
||||
|
||||
surfaceless)
|
||||
test "x$have_libdrm" != xyes &&
|
||||
AC_MSG_ERROR([EGL platform surfaceless requires libdrm >= $LIBDRM_REQUIRED])
|
||||
;;
|
||||
|
||||
android)
|
||||
@@ -2062,11 +2043,10 @@ for plat in $egl_platforms; do
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$plat" in
|
||||
wayland|drm|surfaceless)
|
||||
require_libdrm "Platform $plat"
|
||||
;;
|
||||
esac
|
||||
case "$plat$need_pci_id$have_pci_id" in
|
||||
waylandyesno|drmyesno)
|
||||
AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# libEGL wants to default to the first platform specified in
|
||||
@@ -2161,7 +2141,7 @@ if test "x$enable_gallium_llvm" = xauto; then
|
||||
i*86|x86_64|amd64) enable_gallium_llvm=yes;;
|
||||
esac
|
||||
fi
|
||||
if test "x$enable_gallium_llvm" = xyes || test "x$HAVE_RADEON_VULKAN" = xyes; then
|
||||
if test "x$enable_gallium_llvm" = xyes; then
|
||||
if test -n "$llvm_prefix"; then
|
||||
AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
|
||||
else
|
||||
@@ -2202,12 +2182,8 @@ if test "x$enable_gallium_llvm" = xyes || test "x$HAVE_RADEON_VULKAN" = xyes; th
|
||||
|
||||
LLVM_COMPONENTS="engine bitwriter mcjit mcdisassembler"
|
||||
|
||||
if $LLVM_CONFIG --components | grep -q inteljitevents ; then
|
||||
LLVM_COMPONENTS="${LLVM_COMPONENTS} inteljitevents"
|
||||
fi
|
||||
|
||||
if test "x$enable_opencl" = xyes; then
|
||||
llvm_check_version_for "3" "6" "0" "opencl"
|
||||
llvm_check_version_for "3" "5" "0" "opencl"
|
||||
|
||||
LLVM_COMPONENTS="${LLVM_COMPONENTS} all-targets ipo linker instrumentation"
|
||||
LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader option objcarcopts profiledata"
|
||||
@@ -2286,6 +2262,12 @@ AC_SUBST([D3D_DRIVER_INSTALL_DIR])
|
||||
dnl
|
||||
dnl Gallium helper functions
|
||||
dnl
|
||||
gallium_require_drm() {
|
||||
if test "x$have_libdrm" != xyes; then
|
||||
AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
|
||||
fi
|
||||
}
|
||||
|
||||
gallium_require_llvm() {
|
||||
if test "x$MESA_LLVM" = x0; then
|
||||
case "$host" in *gnux32) return;; esac
|
||||
@@ -2295,6 +2277,12 @@ gallium_require_llvm() {
|
||||
fi
|
||||
}
|
||||
|
||||
gallium_require_drm_loader() {
|
||||
if test "x$need_pci_id$have_pci_id" = xyesno; then
|
||||
AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
|
||||
fi
|
||||
}
|
||||
|
||||
dnl This is for Glamor. Skip this if OpenGL is disabled.
|
||||
require_egl_drm() {
|
||||
if test "x$enable_opengl" = xno; then
|
||||
@@ -2319,7 +2307,10 @@ radeon_llvm_check() {
|
||||
else
|
||||
amdgpu_llvm_target_name='amdgpu'
|
||||
fi
|
||||
llvm_check_version_for $2 $3 $4 $1
|
||||
if test "x$enable_gallium_llvm" != "xyes"; then
|
||||
AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
|
||||
fi
|
||||
llvm_check_version_for "3" "6" "0" $1
|
||||
if test true && $LLVM_CONFIG --targets-built | grep -iqvw $amdgpu_llvm_target_name ; then
|
||||
AC_MSG_ERROR([LLVM $amdgpu_llvm_target_name not enabled in your LLVM build.])
|
||||
fi
|
||||
@@ -2330,13 +2321,6 @@ radeon_llvm_check() {
|
||||
fi
|
||||
}
|
||||
|
||||
radeon_gallium_llvm_check() {
|
||||
if test "x$enable_gallium_llvm" != "xyes"; then
|
||||
AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
|
||||
fi
|
||||
radeon_llvm_check $*
|
||||
}
|
||||
|
||||
swr_llvm_check() {
|
||||
gallium_require_llvm $1
|
||||
if test ${LLVM_VERSION_INT} -lt 306; then
|
||||
@@ -2347,45 +2331,6 @@ swr_llvm_check() {
|
||||
fi
|
||||
}
|
||||
|
||||
swr_require_cxx_feature_flags() {
|
||||
feature_name="$1"
|
||||
preprocessor_test="$2"
|
||||
option_list="$3"
|
||||
output_var="$4"
|
||||
|
||||
AC_MSG_CHECKING([whether $CXX supports $feature_name])
|
||||
AC_LANG_PUSH([C++])
|
||||
save_CXXFLAGS="$CXXFLAGS"
|
||||
save_IFS="$IFS"
|
||||
IFS=","
|
||||
found=0
|
||||
for opts in $option_list
|
||||
do
|
||||
unset IFS
|
||||
CXXFLAGS="$opts $save_CXXFLAGS"
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[ #if !($preprocessor_test)
|
||||
#error
|
||||
#endif
|
||||
])],
|
||||
[found=1; break],
|
||||
[])
|
||||
IFS=","
|
||||
done
|
||||
IFS="$save_IFS"
|
||||
CXXFLAGS="$save_CXXFLAGS"
|
||||
AC_LANG_POP([C++])
|
||||
if test $found -eq 1; then
|
||||
AC_MSG_RESULT([$opts])
|
||||
eval "$output_var=\$opts"
|
||||
return 0
|
||||
fi
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([swr requires $feature_name support])
|
||||
return 1
|
||||
}
|
||||
|
||||
dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
|
||||
if test -n "$with_gallium_drivers"; then
|
||||
gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
|
||||
@@ -2393,30 +2338,35 @@ if test -n "$with_gallium_drivers"; then
|
||||
case "x$driver" in
|
||||
xsvga)
|
||||
HAVE_GALLIUM_SVGA=yes
|
||||
require_libdrm "svga"
|
||||
gallium_require_drm "svga"
|
||||
gallium_require_drm_loader
|
||||
;;
|
||||
xi915)
|
||||
HAVE_GALLIUM_I915=yes
|
||||
PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
|
||||
require_libdrm "Gallium i915"
|
||||
gallium_require_drm "Gallium i915"
|
||||
gallium_require_drm_loader
|
||||
;;
|
||||
xilo)
|
||||
HAVE_GALLIUM_ILO=yes
|
||||
PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
|
||||
require_libdrm "Gallium i965/ilo"
|
||||
gallium_require_drm "Gallium i965/ilo"
|
||||
gallium_require_drm_loader
|
||||
;;
|
||||
xr300)
|
||||
HAVE_GALLIUM_R300=yes
|
||||
PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
|
||||
require_libdrm "Gallium R300"
|
||||
gallium_require_drm "Gallium R300"
|
||||
gallium_require_drm_loader
|
||||
gallium_require_llvm "Gallium R300"
|
||||
;;
|
||||
xr600)
|
||||
HAVE_GALLIUM_R600=yes
|
||||
PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
|
||||
require_libdrm "Gallium R600"
|
||||
gallium_require_drm "Gallium R600"
|
||||
gallium_require_drm_loader
|
||||
if test "x$enable_opencl" = xyes; then
|
||||
radeon_gallium_llvm_check "r600g" "3" "6" "0"
|
||||
radeon_llvm_check "r600g"
|
||||
LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
|
||||
fi
|
||||
;;
|
||||
@@ -2424,19 +2374,22 @@ if test -n "$with_gallium_drivers"; then
|
||||
HAVE_GALLIUM_RADEONSI=yes
|
||||
PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
|
||||
PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
|
||||
require_libdrm "radeonsi"
|
||||
radeon_gallium_llvm_check "radeonsi" "3" "6" "0"
|
||||
gallium_require_drm "radeonsi"
|
||||
gallium_require_drm_loader
|
||||
radeon_llvm_check "radeonsi"
|
||||
require_egl_drm "radeonsi"
|
||||
;;
|
||||
xnouveau)
|
||||
HAVE_GALLIUM_NOUVEAU=yes
|
||||
PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
|
||||
require_libdrm "nouveau"
|
||||
gallium_require_drm "nouveau"
|
||||
gallium_require_drm_loader
|
||||
;;
|
||||
xfreedreno)
|
||||
HAVE_GALLIUM_FREEDRENO=yes
|
||||
PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
|
||||
require_libdrm "freedreno"
|
||||
gallium_require_drm "freedreno"
|
||||
gallium_require_drm_loader
|
||||
;;
|
||||
xswrast)
|
||||
HAVE_GALLIUM_SOFTPIPE=yes
|
||||
@@ -2447,27 +2400,36 @@ if test -n "$with_gallium_drivers"; then
|
||||
xswr)
|
||||
swr_llvm_check "swr"
|
||||
|
||||
swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \
|
||||
",-std=c++11" \
|
||||
SWR_CXX11_CXXFLAGS
|
||||
AC_SUBST([SWR_CXX11_CXXFLAGS])
|
||||
AC_MSG_CHECKING([whether $CXX supports c++11/AVX/AVX2])
|
||||
AVX_CXXFLAGS="-march=core-avx-i"
|
||||
AVX2_CXXFLAGS="-march=core-avx2"
|
||||
|
||||
swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \
|
||||
",-mavx,-march=core-avx" \
|
||||
SWR_AVX_CXXFLAGS
|
||||
AC_SUBST([SWR_AVX_CXXFLAGS])
|
||||
AC_LANG_PUSH([C++])
|
||||
save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="-std=c++11 $CXXFLAGS"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
|
||||
[AC_MSG_ERROR([c++11 compiler support not detected])])
|
||||
CXXFLAGS="$save_CXXFLAGS"
|
||||
|
||||
swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
|
||||
",-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2" \
|
||||
SWR_AVX2_CXXFLAGS
|
||||
AC_SUBST([SWR_AVX2_CXXFLAGS])
|
||||
save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$AVX_CXXFLAGS $CXXFLAGS"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
|
||||
[AC_MSG_ERROR([AVX compiler support not detected])])
|
||||
CXXFLAGS="$save_CXXFLAGS"
|
||||
|
||||
save_CFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$AVX2_CXXFLAGS $CXXFLAGS"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
|
||||
[AC_MSG_ERROR([AVX2 compiler support not detected])])
|
||||
CXXFLAGS="$save_CXXFLAGS"
|
||||
AC_LANG_POP([C++])
|
||||
|
||||
HAVE_GALLIUM_SWR=yes
|
||||
;;
|
||||
xvc4)
|
||||
HAVE_GALLIUM_VC4=yes
|
||||
PKG_CHECK_MODULES([VC4], [libdrm_vc4 >= $LIBDRM_VC4_REQUIRED])
|
||||
require_libdrm "vc4"
|
||||
gallium_require_drm "vc4"
|
||||
gallium_require_drm_loader
|
||||
|
||||
PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
|
||||
[USE_VC4_SIMULATOR=yes;
|
||||
@@ -2476,7 +2438,8 @@ if test -n "$with_gallium_drivers"; then
|
||||
;;
|
||||
xvirgl)
|
||||
HAVE_GALLIUM_VIRGL=yes
|
||||
require_libdrm "virgl"
|
||||
gallium_require_drm "virgl"
|
||||
gallium_require_drm_loader
|
||||
require_egl_drm "virgl"
|
||||
;;
|
||||
*)
|
||||
@@ -2486,10 +2449,6 @@ if test -n "$with_gallium_drivers"; then
|
||||
done
|
||||
fi
|
||||
|
||||
if test "x$HAVE_RADEON_VULKAN" = "xyes"; then
|
||||
radeon_llvm_check "radv" "3" "9" "0"
|
||||
fi
|
||||
|
||||
dnl Set LLVM_LIBS - This is done after the driver configuration so
|
||||
dnl that drivers can add additional components to LLVM_COMPONENTS.
|
||||
dnl Previously, gallium drivers were updating LLVM_LIBS directly
|
||||
@@ -2538,7 +2497,7 @@ if test "x$MESA_LLVM" != x0; then
|
||||
AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
|
||||
dnl We need to link to llvm system libs when using static libs
|
||||
dnl However, only llvm 3.5+ provides --system-libs
|
||||
if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
|
||||
if test $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
|
||||
LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
|
||||
fi
|
||||
fi
|
||||
@@ -2581,13 +2540,8 @@ AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
|
||||
AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
|
||||
AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
|
||||
|
||||
AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes)
|
||||
AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes)
|
||||
|
||||
AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_R600" = xyes -o \
|
||||
"x$HAVE_GALLIUM_RADEONSI" = xyes -o \
|
||||
"x$HAVE_RADEON_VULKAN" = xyes)
|
||||
|
||||
AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
|
||||
"x$HAVE_I965_DRI" = xyes)
|
||||
|
||||
@@ -2606,8 +2560,6 @@ fi
|
||||
AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
|
||||
AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
|
||||
AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
|
||||
AM_CONDITIONAL(HAVE_COMMON_OSMESA, test "x$enable_osmesa" = xyes -o \
|
||||
"x$enable_gallium_osmesa" = xyes)
|
||||
|
||||
AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
|
||||
AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
|
||||
@@ -2626,8 +2578,6 @@ VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
|
||||
AC_SUBST([VA_MAJOR], $VA_MAJOR)
|
||||
AC_SUBST([VA_MINOR], $VA_MINOR)
|
||||
|
||||
AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x")
|
||||
|
||||
AC_SUBST([XVMC_MAJOR], 1)
|
||||
AC_SUBST([XVMC_MINOR], 0)
|
||||
|
||||
@@ -2681,9 +2631,6 @@ CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
|
||||
dnl Substitute the config
|
||||
AC_CONFIG_FILES([Makefile
|
||||
src/Makefile
|
||||
src/amd/Makefile
|
||||
src/amd/common/Makefile
|
||||
src/amd/vulkan/Makefile
|
||||
src/compiler/Makefile
|
||||
src/egl/Makefile
|
||||
src/egl/main/egl.pc
|
||||
@@ -2758,11 +2705,10 @@ AC_CONFIG_FILES([Makefile
|
||||
src/glx/Makefile
|
||||
src/glx/apple/Makefile
|
||||
src/glx/tests/Makefile
|
||||
src/glx/windows/Makefile
|
||||
src/glx/windows/windowsdriproto.pc
|
||||
src/gtest/Makefile
|
||||
src/intel/Makefile
|
||||
src/intel/tools/Makefile
|
||||
src/intel/genxml/Makefile
|
||||
src/intel/isl/Makefile
|
||||
src/intel/vulkan/Makefile
|
||||
src/loader/Makefile
|
||||
src/mapi/Makefile
|
||||
@@ -2786,14 +2732,16 @@ AC_CONFIG_FILES([Makefile
|
||||
src/mesa/drivers/x11/Makefile
|
||||
src/mesa/main/tests/Makefile
|
||||
src/util/Makefile
|
||||
src/util/tests/hash_table/Makefile
|
||||
src/vulkan/wsi/Makefile])
|
||||
src/util/tests/hash_table/Makefile])
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
# Fix up dependencies in *.Plo files, where we changed the extension of a
|
||||
# source file
|
||||
$SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
|
||||
$SED -i -e 's/gen6_blorp.cpp/gen6_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen6_blorp.Plo
|
||||
$SED -i -e 's/gen7_blorp.cpp/gen7_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen7_blorp.Plo
|
||||
$SED -i -e 's/gen8_blorp.cpp/gen8_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen8_blorp.Plo
|
||||
|
||||
|
||||
dnl
|
||||
@@ -2892,19 +2840,6 @@ else
|
||||
echo " Gallium: no"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
if test "x$enable_gallium_extra_hud" != xyes; then
|
||||
echo " HUD extra stats: no"
|
||||
else
|
||||
echo " HUD extra stats: yes"
|
||||
fi
|
||||
|
||||
if test "x$enable_lmsensors" != xyes; then
|
||||
echo " HUD lmsensors: no"
|
||||
else
|
||||
echo " HUD lmsensors: yes"
|
||||
fi
|
||||
|
||||
dnl Shader cache
|
||||
echo ""
|
||||
echo " Shader cache: $enable_shader_cache"
|
||||
|
@@ -107,11 +107,11 @@ GL 3.3, GLSL 3.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, soft
|
||||
GL_ARB_vertex_type_2_10_10_10_rev DONE (swr)
|
||||
|
||||
|
||||
GL 4.0, GLSL 4.00 --- all DONE: i965/gen8+, nvc0, r600, radeonsi
|
||||
GL 4.0, GLSL 4.00 --- all DONE: nvc0, r600, radeonsi
|
||||
|
||||
GL_ARB_draw_buffers_blend DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_draw_indirect DONE (i965/gen7+, llvmpipe, softpipe, swr)
|
||||
GL_ARB_gpu_shader5 DONE (i965/gen7+)
|
||||
GL_ARB_draw_buffers_blend DONE (i965, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_draw_indirect DONE (i965, llvmpipe, softpipe, swr)
|
||||
GL_ARB_gpu_shader5 DONE (i965)
|
||||
- 'precise' qualifier DONE
|
||||
- Dynamically uniform sampler array indices DONE (softpipe)
|
||||
- Dynamically uniform UBO array indices DONE ()
|
||||
@@ -124,214 +124,154 @@ GL 4.0, GLSL 4.00 --- all DONE: i965/gen8+, nvc0, r600, radeonsi
|
||||
- Enhanced per-sample shading DONE ()
|
||||
- Interpolation functions DONE ()
|
||||
- New overload resolution rules DONE
|
||||
GL_ARB_gpu_shader_fp64 DONE (llvmpipe, softpipe)
|
||||
GL_ARB_sample_shading DONE (i965/gen6+, nv50)
|
||||
GL_ARB_shader_subroutine DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_tessellation_shader DONE (i965/gen7+)
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (i965/gen6+, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_cube_map_array DONE (i965/gen6+, nv50, llvmpipe, softpipe)
|
||||
GL_ARB_texture_gather DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_gpu_shader_fp64 DONE (i965/gen8+, llvmpipe, softpipe)
|
||||
GL_ARB_sample_shading DONE (i965, nv50)
|
||||
GL_ARB_shader_subroutine DONE (i965, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_tessellation_shader DONE (i965)
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (i965, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_cube_map_array DONE (i965, nv50, llvmpipe, softpipe)
|
||||
GL_ARB_texture_gather DONE (i965, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_query_lod DONE (i965, nv50, softpipe)
|
||||
GL_ARB_transform_feedback2 DONE (i965/gen7+, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_transform_feedback3 DONE (i965/gen7+, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_transform_feedback2 DONE (i965, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_transform_feedback3 DONE (i965, nv50, llvmpipe, softpipe, swr)
|
||||
|
||||
|
||||
GL 4.1, GLSL 4.10 --- all DONE: i965/gen8+, nvc0, r600, radeonsi
|
||||
GL 4.1, GLSL 4.10 --- all DONE: nvc0, r600, radeonsi
|
||||
|
||||
GL_ARB_ES2_compatibility DONE (i965, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_get_program_binary DONE (0 binary formats)
|
||||
GL_ARB_separate_shader_objects DONE (all drivers)
|
||||
GL_ARB_shader_precision DONE (all drivers that support GLSL 4.10)
|
||||
GL_ARB_vertex_attrib_64bit DONE (llvmpipe, softpipe)
|
||||
GL_ARB_vertex_attrib_64bit DONE (i965/gen8+, llvmpipe, softpipe)
|
||||
GL_ARB_viewport_array DONE (i965, nv50, llvmpipe, softpipe)
|
||||
|
||||
|
||||
GL 4.2, GLSL 4.20 -- all DONE: i965/gen8+, nvc0, radeonsi
|
||||
GL 4.2, GLSL 4.20 -- all DONE: radeonsi
|
||||
|
||||
GL_ARB_texture_compression_bptc DONE (i965, r600)
|
||||
GL_ARB_texture_compression_bptc DONE (i965, nvc0, r600, radeonsi)
|
||||
GL_ARB_compressed_texture_pixel_storage DONE (all drivers)
|
||||
GL_ARB_shader_atomic_counters DONE (i965, softpipe)
|
||||
GL_ARB_shader_atomic_counters DONE (i965, nvc0, radeonsi, softpipe)
|
||||
GL_ARB_texture_storage DONE (all drivers)
|
||||
GL_ARB_transform_feedback_instanced DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_base_instance DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_shader_image_load_store DONE (i965, softpipe)
|
||||
GL_ARB_transform_feedback_instanced DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_base_instance DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_shader_image_load_store DONE (i965, nvc0, radeonsi, softpipe)
|
||||
GL_ARB_conservative_depth DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_shading_language_420pack DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_shading_language_packing DONE (all drivers)
|
||||
GL_ARB_internalformat_query DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_internalformat_query DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_map_buffer_alignment DONE (all drivers)
|
||||
|
||||
|
||||
GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, radeonsi
|
||||
GL 4.3, GLSL 4.30:
|
||||
|
||||
GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_ES3_compatibility DONE (all drivers that support GLSL 3.30)
|
||||
GL_ARB_clear_buffer_object DONE (all drivers)
|
||||
GL_ARB_compute_shader DONE (i965, softpipe)
|
||||
GL_ARB_copy_image DONE (i965, nv50, r600, softpipe, llvmpipe)
|
||||
GL_ARB_compute_shader DONE (i965, nvc0, radeonsi, softpipe)
|
||||
GL_ARB_copy_image DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_KHR_debug DONE (all drivers)
|
||||
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
||||
GL_ARB_fragment_layer_viewport DONE (i965, nv50, r600, llvmpipe, softpipe)
|
||||
GL_ARB_framebuffer_no_attachments DONE (i965, r600, softpipe)
|
||||
GL_ARB_fragment_layer_viewport DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe)
|
||||
GL_ARB_framebuffer_no_attachments DONE (i965, nvc0, r600, radeonsi, softpipe)
|
||||
GL_ARB_internalformat_query2 DONE (all drivers)
|
||||
GL_ARB_invalidate_subdata DONE (all drivers)
|
||||
GL_ARB_multi_draw_indirect DONE (i965, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_multi_draw_indirect DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_program_interface_query DONE (all drivers)
|
||||
GL_ARB_robust_buffer_access_behavior DONE (i965)
|
||||
GL_ARB_shader_image_size DONE (i965, softpipe)
|
||||
GL_ARB_shader_storage_buffer_object DONE (i965, softpipe)
|
||||
GL_ARB_stencil_texturing DONE (i965/hsw+, nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_buffer_range DONE (nv50, i965, r600, llvmpipe)
|
||||
GL_ARB_robust_buffer_access_behavior DONE (i965, nvc0, radeonsi)
|
||||
GL_ARB_shader_image_size DONE (i965, nvc0, radeonsi, softpipe)
|
||||
GL_ARB_shader_storage_buffer_object DONE (i965, nvc0, radeonsi, softpipe)
|
||||
GL_ARB_stencil_texturing DONE (i965/gen8+, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_buffer_range DONE (nv50, nvc0, i965, r600, radeonsi, llvmpipe)
|
||||
GL_ARB_texture_query_levels DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
|
||||
GL_ARB_texture_view DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_view DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_vertex_attrib_binding DONE (all drivers)
|
||||
|
||||
|
||||
GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, radeonsi
|
||||
GL 4.4, GLSL 4.40:
|
||||
|
||||
GL_MAX_VERTEX_ATTRIB_STRIDE DONE (all drivers)
|
||||
GL_ARB_buffer_storage DONE (i965, nv50, r600)
|
||||
GL_ARB_clear_texture DONE (i965, nv50, r600)
|
||||
GL_ARB_enhanced_layouts DONE (i965, nv50, llvmpipe, softpipe)
|
||||
GL_ARB_buffer_storage DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_clear_texture DONE (i965, nv50, nvc0)
|
||||
GL_ARB_enhanced_layouts in progress (Timothy)
|
||||
- compile-time constant expressions DONE
|
||||
- explicit byte offsets for blocks DONE
|
||||
- forced alignment within blocks DONE
|
||||
- specified vec4-slot component numbers DONE (i965, nv50, llvmpipe, softpipe)
|
||||
- specified vec4-slot component numbers in progress
|
||||
- specified transform/feedback layout DONE
|
||||
- input/output block locations DONE
|
||||
GL_ARB_multi_bind DONE (all drivers)
|
||||
GL_ARB_query_buffer_object DONE (i965/hsw+)
|
||||
GL_ARB_texture_mirror_clamp_to_edge DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_stencil8 DONE (i965/hsw+, nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_vertex_type_10f_11f_11f_rev DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_query_buffer_object DONE (i965/hsw+, nvc0)
|
||||
GL_ARB_texture_mirror_clamp_to_edge DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_stencil8 DONE (i965/gen8+, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_vertex_type_10f_11f_11f_rev DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
|
||||
GL 4.5, GLSL 4.50 -- all DONE: nvc0, radeonsi
|
||||
GL 4.5, GLSL 4.50:
|
||||
|
||||
GL_ARB_ES3_1_compatibility DONE (i965/hsw+)
|
||||
GL_ARB_clip_control DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_conditional_render_inverted DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_cull_distance DONE (i965, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_derivative_control DONE (i965, nv50, r600)
|
||||
GL_ARB_ES3_1_compatibility DONE (nvc0, radeonsi)
|
||||
GL_ARB_clip_control DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_conditional_render_inverted DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_cull_distance DONE (i965, nv50, nvc0, llvmpipe, softpipe)
|
||||
GL_ARB_derivative_control DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_direct_state_access DONE (all drivers)
|
||||
GL_ARB_get_texture_sub_image DONE (all drivers)
|
||||
GL_ARB_shader_texture_image_samples DONE (i965, nv50, r600)
|
||||
GL_ARB_texture_barrier DONE (i965, nv50, r600)
|
||||
GL_ARB_shader_texture_image_samples DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_texture_barrier DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_KHR_context_flush_control DONE (all - but needs GLX/EGL extension to be useful)
|
||||
GL_KHR_robustness DONE (i965)
|
||||
GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
|
||||
|
||||
These are the extensions cherry-picked to make GLES 3.1
|
||||
GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, radeonsi
|
||||
|
||||
GLES3.1, GLSL ES 3.1
|
||||
GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_compute_shader DONE (i965/gen7+, softpipe)
|
||||
GL_ARB_draw_indirect DONE (i965/gen7+, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_compute_shader DONE (i965, nvc0, radeonsi, softpipe)
|
||||
GL_ARB_draw_indirect DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
||||
GL_ARB_framebuffer_no_attachments DONE (i965/gen7+, r600, softpipe)
|
||||
GL_ARB_framebuffer_no_attachments DONE (i965, nvc0, r600, radeonsi, softpipe)
|
||||
GL_ARB_program_interface_query DONE (all drivers)
|
||||
GL_ARB_shader_atomic_counters DONE (i965/gen7+, softpipe)
|
||||
GL_ARB_shader_image_load_store DONE (i965/gen7+, softpipe)
|
||||
GL_ARB_shader_image_size DONE (i965/gen7+, softpipe)
|
||||
GL_ARB_shader_storage_buffer_object DONE (i965/gen7+, softpipe)
|
||||
GL_ARB_shader_atomic_counters DONE (i965, nvc0, radeonsi, softpipe)
|
||||
GL_ARB_shader_image_load_store DONE (i965, nvc0, radeonsi, softpipe)
|
||||
GL_ARB_shader_image_size DONE (i965, nvc0, radeonsi, softpipe)
|
||||
GL_ARB_shader_storage_buffer_object DONE (i965, nvc0, radeonsi, softpipe)
|
||||
GL_ARB_shading_language_packing DONE (all drivers)
|
||||
GL_ARB_separate_shader_objects DONE (all drivers)
|
||||
GL_ARB_stencil_texturing DONE (nv50, r600, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_multisample (Multisample textures) DONE (i965/gen7+, nv50, r600, llvmpipe, softpipe)
|
||||
GL_ARB_stencil_texturing DONE (i965/gen8+, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_multisample (Multisample textures) DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
|
||||
GL_ARB_vertex_attrib_binding DONE (all drivers)
|
||||
GS5 Enhanced textureGather DONE (i965/gen7+, r600)
|
||||
GS5 Packing/bitfield/conversion functions DONE (i965/gen6+, r600)
|
||||
GS5 Enhanced textureGather DONE (i965, nvc0, r600, radeonsi)
|
||||
GS5 Packing/bitfield/conversion functions DONE (i965, nvc0, r600, radeonsi)
|
||||
GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
|
||||
|
||||
Additional functionality not covered above:
|
||||
glMemoryBarrierByRegion DONE
|
||||
glGetTexLevelParameter[fi]v - needs updates DONE
|
||||
glGetBooleani_v - restrict to GLES enums
|
||||
gl_HelperInvocation support DONE (i965, r600)
|
||||
|
||||
GLES3.2, GLSL ES 3.2 -- all DONE: i965/gen9+
|
||||
gl_HelperInvocation support DONE (i965, nvc0, r600, radeonsi)
|
||||
|
||||
GLES3.2, GLSL ES 3.2
|
||||
GL_EXT_color_buffer_float DONE (all drivers)
|
||||
GL_KHR_blend_equation_advanced DONE (i965)
|
||||
GL_KHR_blend_equation_advanced not started
|
||||
GL_KHR_debug DONE (all drivers)
|
||||
GL_KHR_robustness DONE (i965, nvc0, radeonsi)
|
||||
GL_KHR_robustness DONE (i965)
|
||||
GL_KHR_texture_compression_astc_ldr DONE (i965/gen9+)
|
||||
GL_OES_copy_image DONE (all drivers)
|
||||
GL_OES_copy_image DONE (i965)
|
||||
GL_OES_draw_buffers_indexed DONE (all drivers that support GL_ARB_draw_buffers_blend)
|
||||
GL_OES_draw_elements_base_vertex DONE (all drivers)
|
||||
GL_OES_geometry_shader DONE (i965/gen8+, nvc0, radeonsi)
|
||||
GL_OES_geometry_shader started (idr)
|
||||
GL_OES_gpu_shader5 DONE (all drivers that support GL_ARB_gpu_shader5)
|
||||
GL_OES_primitive_bounding_box DONE (i965/gen7+, nvc0, radeonsi)
|
||||
GL_OES_primitive_bounding_box not started
|
||||
GL_OES_sample_shading DONE (i965, nvc0, r600, radeonsi)
|
||||
GL_OES_sample_variables DONE (i965, nvc0, r600, radeonsi)
|
||||
GL_OES_shader_image_atomic DONE (all drivers that support GL_ARB_shader_image_load_store)
|
||||
GL_OES_shader_io_blocks DONE (i965/gen8+, nvc0, radeonsi)
|
||||
GL_OES_shader_multisample_interpolation DONE (i965, nvc0, r600, radeonsi)
|
||||
GL_OES_tessellation_shader DONE (all drivers that support GL_ARB_tessellation_shader)
|
||||
GL_OES_tessellation_shader started (Ken)
|
||||
GL_OES_texture_border_clamp DONE (all drivers)
|
||||
GL_OES_texture_buffer DONE (i965, nvc0, radeonsi)
|
||||
GL_OES_texture_cube_map_array DONE (i965/gen8+, nvc0, radeonsi)
|
||||
GL_OES_texture_cube_map_array not started (based on GL_ARB_texture_cube_map_array, which is done for all drivers)
|
||||
GL_OES_texture_stencil8 DONE (all drivers that support GL_ARB_texture_stencil8)
|
||||
GL_OES_texture_storage_multisample_2d_array DONE (all drivers that support GL_ARB_texture_multisample)
|
||||
|
||||
Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES version:
|
||||
|
||||
GL_ARB_bindless_texture started (airlied)
|
||||
GL_ARB_cl_event not started
|
||||
GL_ARB_compute_variable_group_size DONE (nvc0, radeonsi)
|
||||
GL_ARB_ES3_2_compatibility DONE (i965/gen8+)
|
||||
GL_ARB_fragment_shader_interlock not started
|
||||
GL_ARB_gl_spirv not started
|
||||
GL_ARB_gpu_shader_int64 started (airlied for core and Gallium, idr for i965)
|
||||
GL_ARB_indirect_parameters DONE (nvc0, radeonsi)
|
||||
GL_ARB_parallel_shader_compile not started, but Chia-I Wu did some related work in 2014
|
||||
GL_ARB_pipeline_statistics_query DONE (i965, nvc0, radeonsi, softpipe, swr)
|
||||
GL_ARB_post_depth_coverage not started
|
||||
GL_ARB_robustness_isolation not started
|
||||
GL_ARB_sample_locations not started
|
||||
GL_ARB_seamless_cubemap_per_texture DONE (i965, nvc0, radeonsi, r600, softpipe, swr)
|
||||
GL_ARB_shader_atomic_counter_ops DONE (nvc0, radeonsi, softpipe)
|
||||
GL_ARB_shader_ballot not started
|
||||
GL_ARB_shader_clock DONE (i965/gen7+)
|
||||
GL_ARB_shader_draw_parameters DONE (i965, nvc0, radeonsi)
|
||||
GL_ARB_shader_group_vote DONE (nvc0)
|
||||
GL_ARB_shader_stencil_export DONE (i965/gen9+, radeonsi, softpipe, llvmpipe, swr)
|
||||
GL_ARB_shader_viewport_layer_array DONE (i965/gen6+)
|
||||
GL_ARB_sparse_buffer not started
|
||||
GL_ARB_sparse_texture not started
|
||||
GL_ARB_sparse_texture2 not started
|
||||
GL_ARB_sparse_texture_clamp not started
|
||||
GL_ARB_texture_filter_minmax not started
|
||||
GL_ARB_transform_feedback_overflow_query not started
|
||||
GL_KHR_blend_equation_advanced_coherent DONE (i965/gen9+)
|
||||
GL_KHR_no_error not started
|
||||
GL_KHR_texture_compression_astc_hdr DONE (core only)
|
||||
GL_KHR_texture_compression_astc_sliced_3d not started
|
||||
GL_OES_depth_texture_cube_map DONE (all drivers that support GLSL 1.30+)
|
||||
GL_OES_EGL_image DONE (all drivers)
|
||||
GL_OES_EGL_image_external_essl3 not started
|
||||
GL_OES_required_internalformat not started - GLES2 extension based on OpenGL ES 3.0 feature
|
||||
GL_OES_surfaceless_context DONE (all drivers)
|
||||
GL_OES_texture_compression_astc DONE (core only)
|
||||
GL_OES_texture_float DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
|
||||
GL_OES_texture_float_linear DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
|
||||
GL_OES_texture_half_float DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
|
||||
GL_OES_texture_half_float_linear DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
|
||||
GL_OES_texture_view not started - based on GL_ARB_texture_view
|
||||
GL_OES_viewport_array DONE (i965, nvc0, radeonsi)
|
||||
GLX_ARB_context_flush_control not started
|
||||
GLX_ARB_robustness_application_isolation not started
|
||||
GLX_ARB_robustness_share_group_isolation not started
|
||||
|
||||
The following extensions are not part of any OpenGL or OpenGL ES version, and
|
||||
we DO NOT WANT implementations of these extensions for Mesa.
|
||||
|
||||
GL_ARB_geometry_shader4 Superseded by GL 3.2 geometry shaders
|
||||
GL_ARB_matrix_palette Superseded by GL_ARB_vertex_program
|
||||
GL_ARB_shading_language_include Not interesting
|
||||
GL_ARB_shadow_ambient Superseded by GL_ARB_fragment_program
|
||||
GL_ARB_vertex_blend Superseded by GL_ARB_vertex_program
|
||||
|
||||
More info about these features and the work involved can be found at
|
||||
http://dri.freedesktop.org/wiki/MissingFunctionality
|
@@ -38,7 +38,7 @@ including:
|
||||
|
||||
<p>
|
||||
Other companies including
|
||||
<a href="https://01.org/linuxgraphics">Intel</a>
|
||||
<a href="http://www.intellinuxgraphics.org/index.html">Intel</a>
|
||||
and RedHat also actively contribute to the project.
|
||||
Intel has recently contributed the new GLSL compiler in Mesa 7.9.
|
||||
</p>
|
||||
|
@@ -252,14 +252,10 @@ check for regressions.
|
||||
<h3>Mailing Patches</h3>
|
||||
|
||||
<p>
|
||||
Patches should be sent to the mesa-dev mailing list for review:
|
||||
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev">
|
||||
mesa-dev@lists.freedesktop.org<a/>.
|
||||
When submitting a patch make sure to use
|
||||
<a href="https://git-scm.com/docs/git-send-email">git send-email</a>
|
||||
rather than attaching patches to emails. Sending patches as
|
||||
attachments prevents people from being able to provide in-line review
|
||||
comments.
|
||||
Patches should be sent to the Mesa mailing list for review.
|
||||
When submitting a patch make sure to use git send-email rather than attaching
|
||||
patches to emails. Sending patches as attachments prevents people from being
|
||||
able to provide in-line review comments.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -688,11 +684,9 @@ To add a new GL extension to Mesa you have to do at least the following.
|
||||
</li>
|
||||
<li>
|
||||
Add a new entry to the <code>gl_extensions</code> struct in mtypes.h
|
||||
if the extension requires driver capabilities not already exposed by
|
||||
another extension.
|
||||
</li>
|
||||
<li>
|
||||
Add a new entry to the src/mesa/main/extensions_table.h file.
|
||||
Update the <code>extensions.c</code> file.
|
||||
</li>
|
||||
<li>
|
||||
From this point, the best way to proceed is to find another extension,
|
||||
@@ -703,18 +697,12 @@ To add a new GL extension to Mesa you have to do at least the following.
|
||||
If the new extension adds new GL state, the functions in get.c, enable.c
|
||||
and attrib.c will most likely require new code.
|
||||
</li>
|
||||
<li>
|
||||
To determine if the new extension is active in the current context,
|
||||
use the auto-generated _mesa_has_##name_str() function defined in
|
||||
src/mesa/main/extensions.h.
|
||||
</li>
|
||||
<li>
|
||||
The dispatch tests check_table.cpp and dispatch_sanity.cpp
|
||||
should be updated with details about the new extensions functions. These
|
||||
tests are run using 'make check'
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
@@ -50,17 +50,8 @@ sometimes be useful for debugging end-user issues.
|
||||
if the application generates a GL_INVALID_ENUM error, a corresponding error
|
||||
message indicating where the error occurred, and possibly why, will be
|
||||
printed to stderr.<br>
|
||||
|
||||
For release builds, MESA_DEBUG defaults to off (no debug output).
|
||||
|
||||
MESA_DEBUG accepts the following comma-separated list of named
|
||||
flags, which adds extra behaviour to just set MESA_DEBUG=1:
|
||||
<ul>
|
||||
<li>silent - turn off debug messages. Only useful for debug builds.</li>
|
||||
<li>flush - flush after each drawing command</li>
|
||||
<li>incomplete_tex - extra debug messages when a texture is incomplete</li>
|
||||
<li>incomplete_fbo - extra debug messages when a fbo is incomplete</li>
|
||||
</ul>
|
||||
If the value of MESA_DEBUG is 'FP' floating point arithmetic errors will
|
||||
generate exceptions.
|
||||
<li>MESA_LOG_FILE - specifies a file name for logging all errors, warnings,
|
||||
etc., rather than stderr
|
||||
<li>MESA_TEX_PROG - if set, implement conventional texture env modes with
|
||||
@@ -153,10 +144,11 @@ See the <a href="xlibdriver.html">Xlib software driver page</a> for details.
|
||||
<li>bat - emit batch information</li>
|
||||
<li>pix - emit messages about pixel operations</li>
|
||||
<li>buf - emit messages about buffer objects</li>
|
||||
<li>reg - emit messages about regions</li>
|
||||
<li>fbo - emit messages about framebuffers</li>
|
||||
<li>fs - dump shader assembly for fragment shaders</li>
|
||||
<li>gs - dump shader assembly for geometry shaders</li>
|
||||
<li>sync - after sending each batch, emit a message and wait for that batch to finish rendering</li>
|
||||
<li>sync - emit messages about synchronization</li>
|
||||
<li>prim - emit messages about drawing primitives</li>
|
||||
<li>vert - emit messages about vertex assembly</li>
|
||||
<li>dri - emit messages about the DRI interface</li>
|
||||
@@ -171,18 +163,9 @@ See the <a href="xlibdriver.html">Xlib software driver page</a> for details.
|
||||
<li>blorp - emit messages about the blorp operations (blits & clears)</li>
|
||||
<li>nodualobj - suppress generation of dual-object geometry shader code</li>
|
||||
<li>optimizer - dump shader assembly to files at each optimization pass and iteration that make progress</li>
|
||||
<li>ann - annotate IR in assembly dumps</li>
|
||||
<li>no8 - don't generate SIMD8 fragment shader</li>
|
||||
<li>vec4 - force vec4 mode in vertex shader</li>
|
||||
<li>spill_fs - force spilling of all registers in the scalar backend (useful to debug spilling code)</li>
|
||||
<li>spill_vec4 - force spilling of all registers in the vec4 backend (useful to debug spilling code)</li>
|
||||
<li>cs - dump shader assembly for compute shaders</li>
|
||||
<li>hex - print instruction hex dump with the disassembly</li>
|
||||
<li>nocompact - disable instruction compaction</li>
|
||||
<li>tcs - dump shader assembly for tessellation control shaders</li>
|
||||
<li>tes - dump shader assembly for tessellation evaluation shaders</li>
|
||||
<li>l3 - emit messages about the new L3 state during transitions</li>
|
||||
<li>do32 - generate compute shader SIMD32 programs even if workgroup size doesn't exceed the SIMD16 limit</li>
|
||||
<li>norbc - disable single sampled render buffer compression</li>
|
||||
</ul>
|
||||
</ul>
|
||||
@@ -215,10 +198,8 @@ Mesa EGL supports different sets of environment variables. See the
|
||||
<li>GALLIUM_HUD_TOGGLE_SIGNAL - toggle visibility via user specified signal.
|
||||
Especially useful to toggle hud at specific points of application and
|
||||
disable for unencumbered viewing the rest of the time. For example, set
|
||||
GALLIUM_HUD_VISIBLE to false and GALLIUM_HUD_TOGGLE_SIGNAL to 10 (SIGUSR1).
|
||||
GALLIUM_HUD_VISIBLE to false and GALLIUM_HUD_SIGNAL_TOGGLE to 10 (SIGUSR1).
|
||||
Use kill -10 <pid> to toggle the hud as desired.
|
||||
<li>GALLIUM_DRIVER - useful in combination with LIBGL_ALWAYS_SOFTWARE=1 for
|
||||
choosing one of the software renderers "softpipe", "llvmpipe" or "swr".
|
||||
<li>GALLIUM_LOG_FILE - specifies a file for logging all errors, warnings, etc.
|
||||
rather than stderr.
|
||||
<li>GALLIUM_PRINT_OPTIONS - if non-zero, print all the Gallium environment
|
||||
|
@@ -57,7 +57,7 @@ drivers for X.org.
|
||||
<ul>
|
||||
<li>See the <a href="http://dri.freedesktop.org/">DRI website</a>
|
||||
for more information.</li>
|
||||
<li>See <a href="https://01.org/linuxgraphics">01.org</a>
|
||||
<li>See <a href="http://intellinuxgraphics.org">intellinuxgraphics.org</a>
|
||||
for more information about Intel drivers.</li>
|
||||
<li>See <a href="http://nouveau.freedesktop.org">nouveau.freedesktop.org</a>
|
||||
for more information about Nouveau drivers.</li>
|
||||
|
@@ -56,8 +56,8 @@ You can find some further To-do lists here:
|
||||
<b>Common To-Do lists:</b>
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="http://cgit.freedesktop.org/mesa/mesa/tree/docs/features.txt">
|
||||
<b>features.txt</b></a> - Status of OpenGL 3.x / 4.x features in Mesa.</li>
|
||||
<li><a href="http://cgit.freedesktop.org/mesa/mesa/tree/docs/GL3.txt">
|
||||
<b>GL3.txt</b></a> - Status of OpenGL 3.x / 4.x features in Mesa.</li>
|
||||
<li><a href="http://dri.freedesktop.org/wiki/MissingFunctionality">
|
||||
<b>MissingFunctionality</b></a> - Detailed information about missing OpenGL features.</li>
|
||||
</ul>
|
||||
|
@@ -16,31 +16,6 @@
|
||||
|
||||
<h1>News</h1>
|
||||
|
||||
<h2>September 15, 2016</h2>
|
||||
<p>
|
||||
<a href="relnotes/12.0.3.html">Mesa 12.0.3</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>September 2, 2016</h2>
|
||||
<p>
|
||||
<a href="relnotes/12.0.2.html">Mesa 12.0.2</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>July 8, 2016</h2>
|
||||
<p>
|
||||
<a href="relnotes/12.0.1.html">Mesa 12.0.1</a> is released.
|
||||
This is a bug-fix release, resolving build issues in the r600 and
|
||||
radeonsi drivers.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/12.0.0.html">Mesa 12.0.0</a> is released. This is a
|
||||
new development release. See the release notes for more information
|
||||
about the release.
|
||||
</p>
|
||||
|
||||
<h2>May 9, 2016</h2>
|
||||
<p>
|
||||
<a href="relnotes/11.1.4.html">Mesa 11.1.4</a> and
|
||||
|
@@ -173,27 +173,6 @@ of the OpenGL specification is implemented.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Version 12.x features</h2>
|
||||
<p>
|
||||
Version 12.x of Mesa implements the OpenGL 4.3 API, but not all drivers
|
||||
support OpenGL 4.3.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Version 11.x features</h2>
|
||||
<p>
|
||||
Version 11.x of Mesa implements the OpenGL 4.1 API, but not all drivers
|
||||
support OpenGL 4.1.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Version 10.x features</h2>
|
||||
<p>
|
||||
Version 10.x of Mesa implements the OpenGL 3.3 API, but not all drivers
|
||||
support OpenGL 3.3.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Version 9.x features</h2>
|
||||
<p>
|
||||
Version 9.x of Mesa implements the OpenGL 3.1 API.
|
||||
@@ -203,10 +182,6 @@ community contributed features required for OpenGL 3.1. The primary
|
||||
features added since the Mesa 8.0 release are
|
||||
GL_ARB_texture_buffer_object and GL_ARB_uniform_buffer_object.
|
||||
</p>
|
||||
<p>
|
||||
Version 9.0 of Mesa also included the first release of the Clover state
|
||||
tracker for OpenCL.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Version 8.x features</h2>
|
||||
|
@@ -21,10 +21,6 @@ The release notes summarize what's new or changed in each Mesa release.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="relnotes/12.0.3.html">12.0.3 release notes</a>
|
||||
<li><a href="relnotes/12.0.2.html">12.0.2 release notes</a>
|
||||
<li><a href="relnotes/12.0.1.html">12.0.1 release notes</a>
|
||||
<li><a href="relnotes/12.0.0.html">12.0.0 release notes</a>
|
||||
<li><a href="relnotes/11.2.2.html">11.2.2 release notes</a>
|
||||
<li><a href="relnotes/11.1.4.html">11.1.4 release notes</a>
|
||||
<li><a href="relnotes/11.2.1.html">11.2.1 release notes</a>
|
||||
|
@@ -33,8 +33,7 @@ because compatibility contexts are not supported.
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
3b8fa4d86d78f8f6ec86055b92ad1afe869001483593b3dd4531184b8bc4fcfb mesa-12.0.0.tar.gz
|
||||
0090c025219318935124292b482e3439bc43e8c074ad01086449fcad88547dc6 mesa-12.0.0.tar.xz
|
||||
TBD.
|
||||
</pre>
|
||||
|
||||
|
||||
|
@@ -1,65 +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>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 12.0.1 Release Notes / July 8, 2016</h1>
|
||||
|
||||
<p>
|
||||
Mesa 12.0.1 is a bug fix release which fixes bugs found since the 12.0.1 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 12.0.1 implements the OpenGL 4.3 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 4.3. OpenGL
|
||||
4.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
28dff9c045f4305c96a875a487b9f06c7e88d910511cd6016dbddcd1f53ade0d mesa-12.0.1.tar.gz
|
||||
bab24fb79f78c876073527f515ed871fc9c81d816f66c8a0b051d8d653896389 mesa-12.0.1.tar.xz
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96864">Bug 96864</a> - Mesa 12.0 radeon build broken</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Emil Velikov (4):</p>
|
||||
<ul>
|
||||
<li>docs: add sha256 checksums for 12.0.0</li>
|
||||
<li>radeon: reference the correct cdw/max_dw</li>
|
||||
<li>Update version to 12.0.1</li>
|
||||
<li>docs: add release notes for 12.0.1</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -1,403 +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>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 12.0.2 Release Notes / September 2, 2016</h1>
|
||||
|
||||
<p>
|
||||
Mesa 12.0.2 is a bug fix release which fixes bugs found since the 12.0.1 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 12.0.2 implements the OpenGL 4.3 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 4.3. OpenGL
|
||||
4.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
a08565ab1273751ebe2ffa928cbf785056594c803077c9719d0763da780f2918 mesa-12.0.2.tar.gz
|
||||
d957a5cc371dcd7ff2aa0d87492f263aece46f79352f4520039b58b1f32552cb mesa-12.0.2.tar.xz
|
||||
</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=69622">Bug 69622</a> - eglTerminate then eglMakeCurrent crahes</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89599">Bug 89599</a> - symbol 'x86_64_entry_start' is already defined when building with LLVM/clang</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=91342">Bug 91342</a> - Very dark textures on some objects in indoors environments in Postal 2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=92306">Bug 92306</a> - GL Excess demo renders incorrectly on nv43</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=94148">Bug 94148</a> - Framebuffer considered invalid when a draw call is done before glCheckFramebufferStatus</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96274">Bug 96274</a> - [NVC0] Failure when compiling compute shader: Assertion `bb->getFirst()->serial <= bb->getExit()->serial' failed</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96358">Bug 96358</a> - SSO: wrong interface validation between GS and VS (regresion due to latest gles 3.1)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96381">Bug 96381</a> - Texture artifacts with immutable texture storage and mipmaps</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96762">Bug 96762</a> - [radeonsi,apitrace] Firewatch: nothing rendered in scrollable (text) areas</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96835">Bug 96835</a> - "gallium: Force blend color to 16-byte alignment" crash with "-march=native -O3" causes some 32bit games to crash</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96850">Bug 96850</a> - Crucible tests fail for 32bit mesa</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96908">Bug 96908</a> - [radeonsi] MSAA causes graphical artifacts</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96911">Bug 96911</a> - webgl2 conformance2/textures/misc/tex-mipmap-levels.html crashes 12.1 Intel driver</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96971">Bug 96971</a> - invariant qualifier is not valid for shader inputs</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97039">Bug 97039</a> - The Talos Principle and Serious Sam 3 GPU faults</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97207">Bug 97207</a> - [IVY BRIDGE] Fragment shader discard writing to depth</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97214">Bug 97214</a> - X not running with error "Failed to make EGL context current"</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97225">Bug 97225</a> - [i965 on HD4600 Haswell] xcom switch to ingame cinematics cause segmentation fault</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97231">Bug 97231</a> - GL_DEPTH_CLAMP doesn't clamp to the far plane</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97307">Bug 97307</a> - glsl/glcpp/tests/glcpp-test regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97331">Bug 97331</a> - glDrawElementsBaseVertex doesn't work in display list on i915</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97351">Bug 97351</a> - DrawElementsBaseVertex with VBO ignores base vertex on Intel GMA 9xx in some cases</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97426">Bug 97426</a> - glScissor gives vertically inverted result</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97476">Bug 97476</a> - Shader binaries should not be stored in the PipelineCache</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97567">Bug 97567</a> - [SNB, ILK] ctl, piglit regressions in mesa 12.0.2rc1</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Andreas Boll (1):</p>
|
||||
<ul>
|
||||
<li>configure.ac: Use ${datarootdir} for --with-vulkan-icddir help string too</li>
|
||||
</ul>
|
||||
|
||||
<p>Bernard Kilarski (1):</p>
|
||||
<ul>
|
||||
<li>glx: fix error code when there is no context bound</li>
|
||||
</ul>
|
||||
|
||||
<p>Brian Paul (4):</p>
|
||||
<ul>
|
||||
<li>svga: handle mismatched number of samplers, sampler views</li>
|
||||
<li>mesa: use _mesa_clear_texture_image() in clear_texture_fields()</li>
|
||||
<li>swrast: fix incorrectly positioned putImage() in swrast driver</li>
|
||||
<li>mesa: fix format conversion bug in get_tex_rgba_uncompressed()</li>
|
||||
</ul>
|
||||
|
||||
<p>Chad Versace (2):</p>
|
||||
<ul>
|
||||
<li>i965: Fix miptree layout for EGLImage-based renderbuffers</li>
|
||||
<li>i965: Respect miptree offsets in intel_readpixels_tiled_memcpy()</li>
|
||||
</ul>
|
||||
|
||||
<p>Christian König (1):</p>
|
||||
<ul>
|
||||
<li>st/mesa: fix reference counting bug in st_vdpau</li>
|
||||
</ul>
|
||||
|
||||
<p>Chuck Atkins (1):</p>
|
||||
<ul>
|
||||
<li>swr: Refactor checks for compiler feature flags</li>
|
||||
</ul>
|
||||
|
||||
<p>Daniel Scharrer (1):</p>
|
||||
<ul>
|
||||
<li>mesa: Fix fixed function spot lighting on newer hardware (again)</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (2):</p>
|
||||
<ul>
|
||||
<li>anv: fix writemask on blit fragment shader.</li>
|
||||
<li>st/glsl_to_tgsi: fix st_src_reg_for_double constant.</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (15):</p>
|
||||
<ul>
|
||||
<li>docs: add sha256 checksums for 12.0.1</li>
|
||||
<li>mesa: automake: list builddir before srcdir</li>
|
||||
<li>mesa: scons: list builddir before srcdir</li>
|
||||
<li>i965: store reference to the context within struct brw_fence (v2)</li>
|
||||
<li>anv: remove internal 'validate' layer</li>
|
||||
<li>anv: automake: use VISIBILITY_CFLAGS to restrict symbol visibility</li>
|
||||
<li>anv: automake: build with -Bsymbolic</li>
|
||||
<li>anv: do not export the Vulkan API</li>
|
||||
<li>anv: remove dummy VK_DEBUG_MARKER_EXT entry points</li>
|
||||
<li>isl: automake: use VISIBILITY_CFLAGS to restrict symbol visibility</li>
|
||||
<li>cherry-ignore: temporary(?) drop "a4xx: make sure to actually clamp depth"</li>
|
||||
<li>i915: Check return value of screen->image.loader->getBuffers</li>
|
||||
<li>Revert "i965/miptree: Set logical_depth0 == 6 for cube maps"</li>
|
||||
<li>glx/glvnd: list the strcmp arguments in correct order</li>
|
||||
<li>Update version to 12.0.2</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (4):</p>
|
||||
<ul>
|
||||
<li>vc4: Close our screen's fd on screen close.</li>
|
||||
<li>vc4: Disable early Z with computed depth.</li>
|
||||
<li>vc4: Fix a leak of the src[] array of VPM reads in optimization.</li>
|
||||
<li>vc4: Fix leak of the bo_handles table.</li>
|
||||
</ul>
|
||||
|
||||
<p>Francisco Jerez (3):</p>
|
||||
<ul>
|
||||
<li>i965: Emit SKL VF cache invalidation W/A from brw_emit_pipe_control_flush.</li>
|
||||
<li>i965: Make room in the batch epilogue for three more pipe controls.</li>
|
||||
<li>i965: Fix remaining flush vs invalidate race conditions in brw_emit_pipe_control_flush.</li>
|
||||
</ul>
|
||||
|
||||
<p>Haixia Shi (1):</p>
|
||||
<ul>
|
||||
<li>platform_android: prevent deadlock in droid_swap_buffers</li>
|
||||
</ul>
|
||||
|
||||
<p>Ian Romanick (5):</p>
|
||||
<ul>
|
||||
<li>mesa: Strip arrayness from interface block names in some IO validation</li>
|
||||
<li>glsl: Pack integer and double varyings as flat even if interpolation mode is none</li>
|
||||
<li>glcpp: Track the actual version instead of just the version_resolved flag</li>
|
||||
<li>glcpp: Only disallow #undef of pre-defined macros on GLSL ES >= 3.00 shaders</li>
|
||||
<li>glsl: Mark cube map array sampler types as reserved in GLSL ES 3.10</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (16):</p>
|
||||
<ul>
|
||||
<li>mesa: etc2 online compression is unsupported, don't attempt it</li>
|
||||
<li>st/mesa: return appropriate mesa format for ETC texture formats</li>
|
||||
<li>mesa: set _NEW_BUFFERS when updating texture bound to current buffers</li>
|
||||
<li>nv50,nvc0: srgb rendering is only available for rgba/bgra</li>
|
||||
<li>vbo: allow DrawElementsBaseVertex in display lists</li>
|
||||
<li>gallium/util: add helper to compute zmin/zmax for a viewport state</li>
|
||||
<li>nv50,nvc0: fix depth range when halfz is enabled</li>
|
||||
<li>nv50/ir: fix bb positions after exit instructions</li>
|
||||
<li>vbo: add basevertex when looking up elements for vbo splitting</li>
|
||||
<li>a4xx: only disable depth clipping, not all clipping, when requested</li>
|
||||
<li>nv50/ir: make sure cfg iterator always hits all blocks</li>
|
||||
<li>main: add missing EXTRA_END in OES_sample_variables get check</li>
|
||||
<li>nouveau: always enable at least one RC</li>
|
||||
<li>nv30: only bail on color/depth bpp mismatch when surfaces are swizzled</li>
|
||||
<li>a4xx: make sure to actually clamp depth as requested</li>
|
||||
<li>gk110/ir: fix quadop dall emission</li>
|
||||
</ul>
|
||||
|
||||
<p>Jan Ziak (2):</p>
|
||||
<ul>
|
||||
<li>egl/x11: avoid using freed memory if dri2 init fails</li>
|
||||
<li>loader: fix memory leak in loader_dri3_open</li>
|
||||
</ul>
|
||||
|
||||
<p>Jason Ekstrand (31):</p>
|
||||
<ul>
|
||||
<li>nir/spirv: Don't multiply the push constant block size by 4</li>
|
||||
<li>anv: Add a stub for CmdCopyQueryPoolResults on Ivy Bridge</li>
|
||||
<li>glsl/types: Fix function type comparison function</li>
|
||||
<li>glsl/types: Use _mesa_hash_data for hashing function types</li>
|
||||
<li>genxml: Make gen6-7 blending look more like gen8</li>
|
||||
<li>anv/pipeline: Unify blend state setup between gen7 and gen8</li>
|
||||
<li>anv: Enable independentBlend on gen7</li>
|
||||
<li>anv: Add an align_down_npot_u32 helper</li>
|
||||
<li>anv: Handle VK_WHOLE_SIZE properly for buffer views</li>
|
||||
<li>i965/miptree: Enforce that height == 1 for 1-D array textures</li>
|
||||
<li>i965/miptree: Set logical_depth0 == 6 for cube maps</li>
|
||||
<li>nir: Add a nir_deref_foreach_leaf helper</li>
|
||||
<li>nir/inline: Constant-initialize local variables in the callee if needed</li>
|
||||
<li>anv/pipeline: Set up point coord enables</li>
|
||||
<li>i965/miptree: Stop multiplying cube depth by 6 in HiZ calculations</li>
|
||||
<li>i965/vec4: Make opt_vector_float reset at the top of each block</li>
|
||||
<li>anv/blit2d: Add a format parameter to bind_dst and create_iview</li>
|
||||
<li>anv/blit2d: Add support for RGB destinations</li>
|
||||
<li>anv/clear: Make cmd_clear_image take an actual VkClearValue</li>
|
||||
<li>anv/clear: Clear E5B9G9R9 images as R32_UINT</li>
|
||||
<li>anv: Include the pipeline layout in the shader hash</li>
|
||||
<li>isl: Allow multisampled array textures</li>
|
||||
<li>anv/descriptor_set: memset anv_descriptor_set_layout</li>
|
||||
<li>anv/pipeline: Fix bind maps for fragment output arrays</li>
|
||||
<li>anv/allocator: Correctly set the number of buckets</li>
|
||||
<li>anv/pipeline: Properly handle OOM during shader compilation</li>
|
||||
<li>anv: Remove unused fields from anv_pipeline_bind_map</li>
|
||||
<li>anv: Add pipeline_has_stage guards a few places</li>
|
||||
<li>anv: Add a struct for storing a compiled shader</li>
|
||||
<li>anv/pipeline: Add support for caching the push constant map</li>
|
||||
<li>anv: Rework pipeline caching</li>
|
||||
</ul>
|
||||
|
||||
<p>José Fonseca (2):</p>
|
||||
<ul>
|
||||
<li>appveyor: Install pywin32 extensions.</li>
|
||||
<li>appveyor: Force Visual Studio 2013 image.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (21):</p>
|
||||
<ul>
|
||||
<li>genxml: Add CLIPMODE_* prefix to 3DSTATE_CLIP's "Clip Mode" enum values.</li>
|
||||
<li>genxml: Add APIMODE_D3D missing enum values and improve consistency.</li>
|
||||
<li>anv: Fix near plane clipping on Gen7/7.5.</li>
|
||||
<li>anv: Enable early culling on Gen7.</li>
|
||||
<li>anv: Unify 3DSTATE_CLIP code across generations.</li>
|
||||
<li>genxml: Rename "API Rendering Disable" to "Rendering Disable".</li>
|
||||
<li>anv: Properly call gen75_emit_state_base_address on Haswell.</li>
|
||||
<li>i965: Include VUE handles for GS with invocations > 1.</li>
|
||||
<li>nir: Add a base const_index to shared atomic intrinsics.</li>
|
||||
<li>i965: Fix shared atomic intrinsics to pay attention to base.</li>
|
||||
<li>mesa: Add GL_BGRA_EXT to the list of GenerateMipmap internal formats.</li>
|
||||
<li>mesa: Don't call GenerateMipmap if Width or Height == 0.</li>
|
||||
<li>glsl: Delete bogus ir_set_program_inouts assert.</li>
|
||||
<li>glsl: Fix the program resource names of gl_TessLevelOuter/Inner[].</li>
|
||||
<li>glsl: Fix location bias for patch variables.</li>
|
||||
<li>glsl: Fix invariant matching in GLSL 4.30 and GLSL ES 1.00.</li>
|
||||
<li>mesa: Fix uf10_to_f32() scale factor in the E == 0 and M != 0 case.</li>
|
||||
<li>nir/builder: Add bany_inequal and bany helpers.</li>
|
||||
<li>i965: Implement the WaPreventHSTessLevelsInterference workaround.</li>
|
||||
<li>i965: Fix execution size of scalar TCS barrier setup code.</li>
|
||||
<li>i965: Fix barrier count shift in scalar TCS backend.</li>
|
||||
</ul>
|
||||
|
||||
<p>Leo Liu (2):</p>
|
||||
<ul>
|
||||
<li>st/omx/enc: check uninitialized list from task release</li>
|
||||
<li>vl/dri3: fix a memory leak from front buffer</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (7):</p>
|
||||
<ul>
|
||||
<li>glsl_to_tgsi: don't use the negate modifier in integer ops after bitcast</li>
|
||||
<li>radeonsi: add a workaround for a compute VGPR-usage LLVM bug</li>
|
||||
<li>winsys/amdgpu: disallow DCC with mipmaps</li>
|
||||
<li>gallium/util: fix align64</li>
|
||||
<li>radeonsi: only set dual source blending for MRT0</li>
|
||||
<li>radeonsi: fix VM faults due NULL internal const buffers on CIK</li>
|
||||
<li>radeonsi: disable SDMA texture copying on Carrizo</li>
|
||||
</ul>
|
||||
|
||||
<p>Matt Turner (4):</p>
|
||||
<ul>
|
||||
<li>mapi: Massage code to allow clang to compile.</li>
|
||||
<li>i965/vec4: Ignore swizzle of VGRF for use by var_range_end().</li>
|
||||
<li>mesa: Use AC_HEADER_MAJOR to include correct header for major().</li>
|
||||
<li>nir: Walk blocks in source code order in lower_vars_to_ssa.</li>
|
||||
</ul>
|
||||
|
||||
<p>Michel Dänzer (1):</p>
|
||||
<ul>
|
||||
<li>glx: Don't use current context in __glXSendError</li>
|
||||
</ul>
|
||||
|
||||
<p>Miklós Máté (1):</p>
|
||||
<ul>
|
||||
<li>vbo: set draw_id</li>
|
||||
</ul>
|
||||
|
||||
<p>Nanley Chery (5):</p>
|
||||
<ul>
|
||||
<li>anv/descriptor_set: Fix binding partly undefined descriptor sets</li>
|
||||
<li>isl: Fix assert on raw buffer surface state size</li>
|
||||
<li>anv/device: Fix max buffer range limits</li>
|
||||
<li>isl: Fix isl_tiling_is_any_y()</li>
|
||||
<li>anv/gen7_pipeline: Set PixelShaderKillPixel for discards</li>
|
||||
</ul>
|
||||
|
||||
<p>Nicolai Hähnle (7):</p>
|
||||
<ul>
|
||||
<li>radeonsi: explicitly choose center locations for 1xAA on Polaris</li>
|
||||
<li>radeonsi: fix Polaris MSAA regression</li>
|
||||
<li>radeonsi: ensure sample locations are set for line and polygon smoothing</li>
|
||||
<li>st_glsl_to_tgsi: only skip over slots of an input array that are present</li>
|
||||
<li>glsl: fix optimization of discard nested multiple levels</li>
|
||||
<li>radeonsi: flush TC L2 cache for indirect draw data</li>
|
||||
<li>radeonsi: add si_set_rw_buffer to be used for internal descriptors</li>
|
||||
</ul>
|
||||
|
||||
<p>Nicolas Boichat (6):</p>
|
||||
<ul>
|
||||
<li>egl/dri2: dri2_make_current: Set EGL error if bindContext fails</li>
|
||||
<li>egl/wayland: Set disp->DriverData to NULL on error</li>
|
||||
<li>egl/surfaceless: Set disp->DriverData to NULL on error</li>
|
||||
<li>egl/drm: Set disp->DriverData to NULL on error</li>
|
||||
<li>egl/android: Set dpy->DriverData to NULL on error</li>
|
||||
<li>egl/dri2: Add reference count for dri2_egl_display</li>
|
||||
</ul>
|
||||
|
||||
<p>Rob Herring (3):</p>
|
||||
<ul>
|
||||
<li>Android: add missing u_math.h include path for libmesa_isl</li>
|
||||
<li>vc4: fix vc4_resource_from_handle() stride calculation</li>
|
||||
<li>vc4: add hash table look-up for exported dmabufs</li>
|
||||
</ul>
|
||||
|
||||
<p>Samuel Pitoiset (7):</p>
|
||||
<ul>
|
||||
<li>nvc0/ir: fix images indirect access on Fermi</li>
|
||||
<li>nvc0: fix the driver cb size when draw parameters are used</li>
|
||||
<li>gm107/ir: add missing NEG modifier for IADD32I</li>
|
||||
<li>gm107/ir: make use of ADD32I for all immediates</li>
|
||||
<li>nvc0: upload sample locations on GM20x</li>
|
||||
<li>nvc0: invalidate textures/samplers on GK104+</li>
|
||||
<li>nv50/ir: always emit the NDV bit for OP_QUADOP</li>
|
||||
</ul>
|
||||
|
||||
<p>Stefan Dirsch (1):</p>
|
||||
<ul>
|
||||
<li>Avoid overflow in 'last' variable of FindGLXFunction(...)</li>
|
||||
</ul>
|
||||
|
||||
<p>Stencel, Joanna (1):</p>
|
||||
<ul>
|
||||
<li>egl/wayland-egl: Fix for segfault in dri2_wl_destroy_surface.</li>
|
||||
</ul>
|
||||
|
||||
<p>Tim Rowley (2):</p>
|
||||
<ul>
|
||||
<li>Revert "gallium: Force blend color to 16-byte alignment"</li>
|
||||
<li>swr: switch from overriding -march to selecting features</li>
|
||||
</ul>
|
||||
|
||||
<p>Tomasz Figa (8):</p>
|
||||
<ul>
|
||||
<li>gallium/dri: Add shared glapi to LIBADD on Android</li>
|
||||
<li>egl/android: Remove unused variables</li>
|
||||
<li>egl/android: Check return value of dri2_get_dri_config()</li>
|
||||
<li>egl/android: Stop leaking DRI images</li>
|
||||
<li>gallium/winsys/kms: Fix double refcount when importing from prime FD (v2)</li>
|
||||
<li>gallium/winsys/kms: Fully initialize kms_sw_dt at prime import time (v2)</li>
|
||||
<li>gallium/winsys/kms: Move display target handle lookup to separate function</li>
|
||||
<li>gallium/winsys/kms: Look up the GEM handle after importing a prime FD</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -1,71 +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>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 12.0.3 Release Notes / September 15, 2016</h1>
|
||||
|
||||
<p>
|
||||
Mesa 12.0.3 is a bug fix release which fixes bugs found since the 12.0.3 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 12.0.3 implements the OpenGL 4.3 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 4.3. OpenGL
|
||||
4.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
79abcfab3de30dbd416d1582a3cf6b1be308466231488775f1b7bb43be353602 mesa-12.0.3.tar.gz
|
||||
1dc86dd9b51272eee1fad3df65e18cda2e556ef1bc0b6e07cd750b9757f493b1 mesa-12.0.3.tar.xz
|
||||
</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=97781">Bug 97781</a> - [HSW, BYT, IVB] es2-cts.gtf.gl2extensiontests.depth_texture_cube_map.depth_texture_cube_map</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Emil Velikov (3):</p>
|
||||
<ul>
|
||||
<li>docs: add sha256 checksums for 12.0.2</li>
|
||||
<li>Revert "i965/miptree: Stop multiplying cube depth by 6 in HiZ calculations"</li>
|
||||
<li>Update version to 12.0.3</li>
|
||||
</ul>
|
||||
|
||||
<p>José Fonseca (1):</p>
|
||||
<ul>
|
||||
<li>appveyor: Update winflexbison download URL.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -1,311 +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>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 13.0.0 Release Notes / November 1, 2016</h1>
|
||||
|
||||
<p>
|
||||
Mesa 13.0.0 is a new development release.
|
||||
People who are concerned with stability and reliability should stick
|
||||
with a previous release or wait for Mesa 13.0.1.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 13.0.0 implements the OpenGL 4.4 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 4.4. OpenGL
|
||||
4.4 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
4a54d7cdc1a94a8dae05a75ccff48356406d51b0d6a64cbdc641c266e3e008eb mesa-13.0.0.tar.gz
|
||||
94edb4ebff82066a68be79d9c2627f15995e1fe10f67ab3fc63deb842027d727 mesa-13.0.0.tar.xz
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
|
||||
<p>
|
||||
Note: some of the new features are only available with certain drivers.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>OpenGL ES 3.1 on i965/hsw</li>
|
||||
<li>OpenGL ES 3.2 on i965/gen9+ (Skylake and later)</li>
|
||||
<li>GL_ARB_ES3_1_compatibility on i965</li>
|
||||
<li>GL_ARB_ES3_2_compatibility on i965/gen8+</li>
|
||||
<li>GL_ARB_clear_texture on r600, radeonsi</li>
|
||||
<li>GL_ARB_compute_variable_group_size on nvc0, radeonsi</li>
|
||||
<li>GL_ARB_cull_distance on radeonsi</li>
|
||||
<li>GL_ARB_enhanced_layouts on i965, nv50, nvc0, radeonsi, llvmpipe, softpipe</li>
|
||||
<li>GL_ARB_indirect_parameters on radeonsi</li>
|
||||
<li>GL_ARB_query_buffer_object on radeonsi</li>
|
||||
<li>GL_ARB_shader_draw_parameters on radeonsi</li>
|
||||
<li>GL_ARB_shader_group_vote on nvc0</li>
|
||||
<li>GL_ARB_shader_viewport_layer_array on i965/gen6+</li>
|
||||
<li>GL_ARB_stencil_texturing on i965/hsw</li>
|
||||
<li>GL_ARB_texture_stencil8 on i965/hsw</li>
|
||||
<li>GL_EXT_window_rectangles on nv50, nvc0</li>
|
||||
<li>GL_KHR_blend_equation_advanced on i965</li>
|
||||
<li>GL_KHR_robustness on nvc0, radeonsi</li>
|
||||
<li>GL_KHR_texture_compression_astc_sliced_3d on i965</li>
|
||||
<li>GL_OES_copy_image on nv50, nvc0, r600, radeonsi, softpipe, llvmpipe</li>
|
||||
<li>GL_OES_geometry_shader on i965/gen8+, nvc0, radeonsi</li>
|
||||
<li>GL_OES_primitive_bounding_box on i965/gen7+, nvc0, radeonsi</li>
|
||||
<li>GL_OES_texture_cube_map_array on i965/gen8+, nvc0, radeonsi</li>
|
||||
<li>GL_OES_tessellation_shader on i965/gen7+, nvc0, radeonsi</li>
|
||||
<li>GL_OES_viewport_array on nvc0, radeonsi</li>
|
||||
<li>GL_ANDROID_extension_pack_es31a on i965/gen9+</li>
|
||||
</ul>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=61907">Bug 61907</a> - Indirect rendering of multi-texture vertex arrays broken</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=69622">Bug 69622</a> - eglTerminate then eglMakeCurrent crahes</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71759">Bug 71759</a> - Intel driver fails with "intel_do_flush_locked failed: No such file or directory" if buffer imported with EGL_NATIVE_PIXMAP_KHR</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=83036">Bug 83036</a> - [ILK]Piglit spec_ARB_copy_image_arb_copy_image-formats fails</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89599">Bug 89599</a> - symbol 'x86_64_entry_start' is already defined when building with LLVM/clang</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=90513">Bug 90513</a> - Odd gray and red flicker in The Talos Principle on GK104</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=91342">Bug 91342</a> - Very dark textures on some objects in indoors environments in Postal 2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=92306">Bug 92306</a> - GL Excess demo renders incorrectly on nv43</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=94148">Bug 94148</a> - Framebuffer considered invalid when a draw call is done before glCheckFramebufferStatus</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=94354">Bug 94354</a> - R9285 Unigine Valley perf regression since radeonsi: use re-Z</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=94561">Bug 94561</a> - [llvmpipe] PIPE_CAP_VIDEO_MEMORY reports negative value on 32 bits (with 16GB ram)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=94627">Bug 94627</a> - Game Risen on wine black grass</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=94681">Bug 94681</a> - dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.23 takes 25 minutes to compile</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=95000">Bug 95000</a> - deqp: assert in dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed.user_ptr_stride17_components2_quads1</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=95130">Bug 95130</a> - Derivatives of gl_Color wrong when helper pixels used</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=95246">Bug 95246</a> - Segfault in glBindFramebuffer()</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=95419">Bug 95419</a> - [HSW][regression][bisect] RPG Maker game gives "invalid floating point operation" at startup</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=95462">Bug 95462</a> - [BXT,BSW] arb_gpu_shader_fp64 causes gpu hang</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=95529">Bug 95529</a> - [regression, bisected] Image corruption in Chrome</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96235">Bug 96235</a> - st_nir.h:34: error: redefinition of typedef ‘nir_shader’</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96274">Bug 96274</a> - [NVC0] Failure when compiling compute shader: Assertion `bb->getFirst()->serial <= bb->getExit()->serial' failed</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96285">Bug 96285</a> - Mesa build broken</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96299">Bug 96299</a> - [vulkan] 64 regressions due to mesa d5f2f32</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96343">Bug 96343</a> - oom since st/mesa: implement PBO downloads for ReadPixels</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96346">Bug 96346</a> - [SNB,CTS] es2-cts.gtf.gl.atan regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96349">Bug 96349</a> - [CTS,SKL,BSW,BDW,KBL,BXT] es31-cts.arrays_of_arrays.interactionuniformbuffers3</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96351">Bug 96351</a> - [CTS,SKL,KBL,BXT] es2-cts.gtf.gl2extensiontests.egl_image.egl_image</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96358">Bug 96358</a> - SSO: wrong interface validation between GS and VS (regresion due to latest gles 3.1)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96425">Bug 96425</a> - [bisected] occasional dark render in The Talos Principle</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96484">Bug 96484</a> - [vulkan] deqp-vk.glsl.builtin.precision.sin / cos regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96504">Bug 96504</a> - [vulkancts] compute tests crash</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96516">Bug 96516</a> - [bisected: 482526] "clover: Update OpenCL version string to match OpenGL": clover's build fails because of missing git_sha1.h</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96528">Bug 96528</a> - Location qualifier segfaults during shader compilation</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96541">Bug 96541</a> - Tonga Unreal elemental bad rendering since radeonsi: Decompress DCC textures in a render feedback loop</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96565">Bug 96565</a> - Clive Barker's Jericho displays strange,vivid colors when motion blur enabled</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96607">Bug 96607</a> - [bisected] texture misrender / flicker in The Talos Principle on SKL</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96617">Bug 96617</a> - gl_SecondaryFragDataEXT doesn't work for extended blend func</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96629">Bug 96629</a> - dEQP-GLES2.functional.texture.completeness.cube.not_positive_level_0: Assertion `width >= 1' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96639">Bug 96639</a> - st/mesa: transfer_map with too-high level with dEQP-GLES2.functional.texture.completeness.cube.extra_level</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96674">Bug 96674</a> - [SNB, ILK] spec.ext_image_dma_buf_import.ext_image_dma_buf_import-sample_nv1</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96729">Bug 96729</a> - Wrong shader compilation error message</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96762">Bug 96762</a> - [radeonsi,apitrace] Firewatch: nothing rendered in scrollable (text) areas</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96765">Bug 96765</a> - BindFragDataLocationIndexed on array fragment shader output.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96770">Bug 96770</a> - include/GL/mesa_glinterop.h:62: error: redefinition of typedef ‘GLXContext’</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96782">Bug 96782</a> - [regression bisected] R600 fp64 and glsl-4.00 piglit failures</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96791">Bug 96791</a> - Cannot use image from swapchains for sampling</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96825">Bug 96825</a> - anv_device.c:31:27: fatal error: anv_timestamp.h: No such file or directory</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96835">Bug 96835</a> - "gallium: Force blend color to 16-byte alignment" crash with "-march=native -O3" causes some 32bit games to crash</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96850">Bug 96850</a> - Crucible tests fail for 32bit mesa</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96878">Bug 96878</a> - [Bisected: cc2d0e6][HSW] "GPU HANG" msg after autologin to gnome-session</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96908">Bug 96908</a> - [radeonsi] MSAA causes graphical artifacts</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96911">Bug 96911</a> - webgl2 conformance2/textures/misc/tex-mipmap-levels.html crashes 12.1 Intel driver</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96949">Bug 96949</a> - [regression] Piglit numSamples assertion failures with 9a23a177b90</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96950">Bug 96950</a> - Another regression from bc4e0c486: vbo: Use a bitmask to track the active arrays in vbo_exec*.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=96971">Bug 96971</a> - invariant qualifier is not valid for shader inputs</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97019">Bug 97019</a> - [clover] build failure in llvm/codegen/native.cpp:129:52</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97032">Bug 97032</a> - [BDW,SKL] piglit.spec.arb_gpu_shader5.arb_gpu_shader5-interpolateatcentroid-flat</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97033">Bug 97033</a> - [BDW,SKL] piglit.spec.arb_gpu_shader_fp64.varying-packing.simple regressions</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97039">Bug 97039</a> - The Talos Principle and Serious Sam 3 GPU faults</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97083">Bug 97083</a> - [IVB,BYT] GPU hang on deqp-gles31.functional.separate.shader.random</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97140">Bug 97140</a> - dd_draw.c:949:11: error: implicit declaration of function 'fmemopen' is invalid in C99 [-Werror,-Wimplicit-function-declaration]</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97207">Bug 97207</a> - [IVY BRIDGE] Fragment shader discard writing to depth</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97214">Bug 97214</a> - X not running with error "Failed to make EGL context current"</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97225">Bug 97225</a> - [i965 on HD4600 Haswell] xcom switch to ingame cinematics cause segmentation fault</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97231">Bug 97231</a> - GL_DEPTH_CLAMP doesn't clamp to the far plane</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97233">Bug 97233</a> - vkQuake VkSpecializationMapEntry related bug</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97260">Bug 97260</a> - R9 290 low performance in Linux 4.7</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97267">Bug 97267</a> - [BDW] GL45-CTS.texture_cube_map_array.sampling asserts inside brw_fs.cpp</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97278">Bug 97278</a> - [vulkancts,HSW] all vulkancts tests assert on HSW</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97285">Bug 97285</a> - Darkness in Dota 2 after Patch "Make Gallium's BlitFramebuffer follow the GL 4.4 sRGB rules"</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97286">Bug 97286</a> - `make check` fails uniform-initializer-test</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97305">Bug 97305</a> - Gallium: TBOs and images set the offset in elements, not bytes</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97307">Bug 97307</a> - glsl/glcpp/tests/glcpp-test regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97309">Bug 97309</a> - piglit.spec.glsl-1_30.compiler.switch-statement.switch-case-duplicated.vert regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97322">Bug 97322</a> - GenerateMipmap creates wrong mipmap for sRGB texture</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97331">Bug 97331</a> - glDrawElementsBaseVertex doesn't work in display list on i915</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97351">Bug 97351</a> - DrawElementsBaseVertex with VBO ignores base vertex on Intel GMA 9xx in some cases</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97413">Bug 97413</a> - BioShock Infinite crashes on startup with Mesa Git version, R7 370</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97426">Bug 97426</a> - glScissor gives vertically inverted result</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97448">Bug 97448</a> - [HSW] deqp-vk.api_.copy_and_blit.image_to_image_stencil regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97476">Bug 97476</a> - Shader binaries should not be stored in the PipelineCache</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97477">Bug 97477</a> - i915g: gl_FragCoord is always (0.0, max_y)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97513">Bug 97513</a> - clover reports wrong device pointer size</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97549">Bug 97549</a> - [SNB, BXT] up to 40% perf drop from "loader/dri3: Overhaul dri3_update_num_back" commit</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97587">Bug 97587</a> - make check nir/tests/control_flow_tests regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97761">Bug 97761</a> - es2-cts.gtf.gl2extensiontests.egl_image_external.testsimpleunassociated crashes</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97773">Bug 97773</a> - New Mesa master now results in warnings in glrender (and subsurfaces and simple-egl), black screen</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97779">Bug 97779</a> - [regression, bisected][BDW, GPU hang] stuck on render ring, always reproducible</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97790">Bug 97790</a> - Vulkan cts regressions due to 24be63066</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97804">Bug 97804</a> - Later precision statement isn't overriding earlier one</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97808">Bug 97808</a> - "tgsi/scan: don't set interp flags for inputs only used by INTERP instructions" causes glitches in wine with gallium nine</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97887">Bug 97887</a> - llvm segfault in janusvr -render vive</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97894">Bug 97894</a> - Crash in u_transfer_unmap_vtbl when unmapping a buffer mapped in different context</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97952">Bug 97952</a> - /usr/include/string.h:518:12: error: exception specification in declaration does not match previous declaration</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97969">Bug 97969</a> - [radeonsi, bisected: fb827c0] Video decoding shows green artifacts</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97976">Bug 97976</a> - VCE regression BO to small for addr since winsys/amdgpu: enable buffer allocation from slabs</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98005">Bug 98005</a> - VCE dual instance encoding inconsistent since st/va: enable dual instances encode by sync surface</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98025">Bug 98025</a> - [radeonsi] incorrect primitive restart index used</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98128">Bug 98128</a> - nir/tests/control_flow_tests.cpp:79:73: error: ‘nir_loop_first_cf_node’ was not declared in this scope</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98131">Bug 98131</a> - Compiler should reject lowp/mediump qualifiers on atomic_uints</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98133">Bug 98133</a> - GetSynciv should raise an error if bufSize < 0</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98134">Bug 98134</a> - dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.draw_buffers wants a different GL error code</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98135">Bug 98135</a> - dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.transform_feedback_varyings wants a different GL error code</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98167">Bug 98167</a> - [vulkan, radv] missing libgcrypt and openssl devel results in linker error in libvulkan_common</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98172">Bug 98172</a> - Concurrent call to glClientWaitSync results in segfault in one of the waiters.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98244">Bug 98244</a> - dEQP: textureOffset(sampler2DArrayShadow, ...) should not exist.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98264">Bug 98264</a> - Build broken for i965 due to multiple deifnitions of intelFenceExtension</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98307">Bug 98307</a> - "st/glsl_to_tgsi: explicitly track all input and output declaration" broke flightgear colors on rs780</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98326">Bug 98326</a> - [dEQP, EGL] pbuffer depth/stencil tests fail</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98415">Bug 98415</a> - Vulkan Driver JSON file contains incorrect field</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98431">Bug 98431</a> - UnrealEngine v4 demos startup fails to blorp blit assert</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
Mesa no longer depends on libudev.
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -1,188 +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>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 13.0.1 Release Notes / November 14, 2016</h1>
|
||||
|
||||
<p>
|
||||
Mesa 13.0.1 is a bug fix release which fixes bugs found since the 13.0.0 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 13.0.1 implements the OpenGL 4.4 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 4.4. OpenGL
|
||||
4.4 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
7cbb91dead05cde279ee95f86e8321c8e1c8fc9deb88f12e0f587672a10d88c5 mesa-13.0.1.tar.gz
|
||||
71962fb2bf77d33b0ad4a565b490dbbeaf4619099c6d9722f04a73187957a731 mesa-13.0.1.tar.xz
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97715">Bug 97715</a> - [ILK,G45,G965] piglit.spec.arb_separate_shader_objects.misc api error checks</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98012">Bug 98012</a> - [IVB] Segfault when running Dolphin twice with Vulkan</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98512">Bug 98512</a> - radeon r600 vdpau: Invalid command stream: texture bo too small</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Adam Jackson (2):</p>
|
||||
<ul>
|
||||
<li>glx/glvnd: Don't modify the dummy slot in the dispatch table</li>
|
||||
<li>glx/glvnd: Fix dispatch function names and indices</li>
|
||||
</ul>
|
||||
|
||||
<p>Andreas Boll (1):</p>
|
||||
<ul>
|
||||
<li>glx/windows: Add wgl.h to the sources list</li>
|
||||
</ul>
|
||||
|
||||
<p>Anuj Phogat (1):</p>
|
||||
<ul>
|
||||
<li>i965: Fix GPU hang related to multiple render targets and alpha testing</li>
|
||||
</ul>
|
||||
|
||||
<p>Chih-Wei Huang (1):</p>
|
||||
<ul>
|
||||
<li>android: avoid using libdrm with host modules</li>
|
||||
</ul>
|
||||
|
||||
<p>Darren Salt (1):</p>
|
||||
<ul>
|
||||
<li>radv/pipeline: Don't dereference NULL dynamic state pointers</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (8):</p>
|
||||
<ul>
|
||||
<li>radv: expose xlib platform extension</li>
|
||||
<li>radv: fix dual source blending</li>
|
||||
<li>Revert "st/vdpau: use linear layout for output surfaces"</li>
|
||||
<li>radv: emit correct last export when Z/stencil export is enabled</li>
|
||||
<li>ac/nir: add support for discard_if intrinsic (v2)</li>
|
||||
<li>nir: add conditional discard optimisation (v4)</li>
|
||||
<li>radv: enable conditional discard optimisation on radv.</li>
|
||||
<li>radv: fix GetFenceStatus for signaled fences</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (6):</p>
|
||||
<ul>
|
||||
<li>docs: add sha256 checksums for 13.0.0</li>
|
||||
<li>amd/addrlib: limit fastcall/regparm to GCC i386</li>
|
||||
<li>anv: use correct .specVersion for extensions</li>
|
||||
<li>radv: use correct .specVersion for extensions</li>
|
||||
<li>radv: Suffix the radeon_icd file with the host CPU</li>
|
||||
<li>Update version to 13.0.1</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (1):</p>
|
||||
<ul>
|
||||
<li>vc4: Use Newton-Raphson on the 1/W write to fix glmark2 terrain.</li>
|
||||
</ul>
|
||||
|
||||
<p>Francisco Jerez (1):</p>
|
||||
<ul>
|
||||
<li>nir: Flip gl_SamplePosition in nir_lower_wpos_ytransform().</li>
|
||||
</ul>
|
||||
|
||||
<p>Fredrik Höglund (1):</p>
|
||||
<ul>
|
||||
<li>radv: add support for anisotropic filtering on VI+</li>
|
||||
</ul>
|
||||
|
||||
<p>Jason Ekstrand (21):</p>
|
||||
<ul>
|
||||
<li>anv/device: Return DEVICE_LOST if execbuf2 fails</li>
|
||||
<li>vulkan/wsi/x11: Better handle wsi_x11_connection_create failure</li>
|
||||
<li>vulkan/wsi/x11: Clean up connections in finish_wsi</li>
|
||||
<li>anv: Better handle return codes from anv_physical_device_init</li>
|
||||
<li>intel/blorp: Use wm_prog_data instead of hand-rolling our own</li>
|
||||
<li>intel/blorp: Pass a brw_stage_prog_data to upload_shader</li>
|
||||
<li>anv/pipeline: Put actual pointers in anv_shader_bin</li>
|
||||
<li>anv/pipeline: Properly cache prog_data::param</li>
|
||||
<li>intel/blorp: Emit all the binding tables</li>
|
||||
<li>anv/device: Add an execbuf wrapper</li>
|
||||
<li>anv: Add a cmd_buffer_execbuf helper</li>
|
||||
<li>anv: Don't presume to know what address is in a surface relocation</li>
|
||||
<li>anv: Add a new bo_pool_init helper</li>
|
||||
<li>anv/allocator: Simplify anv_scratch_pool</li>
|
||||
<li>anv: Initialize anv_bo::offset to -1</li>
|
||||
<li>anv/batch_chain: Improve write_reloc</li>
|
||||
<li>anv: Add an anv_execbuf helper struct</li>
|
||||
<li>anv/batch: Move last_ss_pool_bo_offset to the command buffer</li>
|
||||
<li>anv: Move relocation handling from EndCommandBuffer to QueueSubmit</li>
|
||||
<li>anv/cmd_buffer: Take a command buffer instead of a batch in two helpers</li>
|
||||
<li>anv/cmd_buffer: Enable a CS stall workaround for Sky Lake gt4</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (2):</p>
|
||||
<ul>
|
||||
<li>glsl: Update deref types when resizing implicitly sized arrays.</li>
|
||||
<li>mesa: Fix pixel shader scratch space allocation on Gen9+ platforms.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kristian Høgsberg (1):</p>
|
||||
<ul>
|
||||
<li>anv: Do relocations in userspace before execbuf ioctl</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (4):</p>
|
||||
<ul>
|
||||
<li>egl: use util/macros.h</li>
|
||||
<li>egl: make interop ABI visible again</li>
|
||||
<li>glx: make interop ABI visible again</li>
|
||||
<li>radeonsi: fix an assertion failure in si_decompress_sampler_color_textures</li>
|
||||
</ul>
|
||||
|
||||
<p>Nicolai Hähnle (4):</p>
|
||||
<ul>
|
||||
<li>radeonsi: fix BFE/BFI lowering for GLSL semantics</li>
|
||||
<li>glsl: fix lowering of UBO references of named blocks</li>
|
||||
<li>st/glsl_to_tgsi: fix dvec[34] loads from SSBO</li>
|
||||
<li>st/mesa: fix the layer of VDPAU surface samplers</li>
|
||||
</ul>
|
||||
|
||||
<p>Steven Toth (3):</p>
|
||||
<ul>
|
||||
<li>gallium/hud: fix a problem where objects are free'd while in use.</li>
|
||||
<li>gallium/hud: close a previously opened handle</li>
|
||||
<li>gallium/hud: protect against and initialization race</li>
|
||||
</ul>
|
||||
|
||||
<p>Timothy Arceri (1):</p>
|
||||
<ul>
|
||||
<li>mesa/glsl: delete previously linked shaders earlier when linking</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -1,189 +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>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 13.0.2 Release Notes / November 28, 2016</h1>
|
||||
|
||||
<p>
|
||||
Mesa 13.0.2 is a bug fix release which fixes bugs found since the 13.0.1 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 13.0.2 implements the OpenGL 4.4 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 4.4. OpenGL
|
||||
4.4 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
6014233a5db6032ab8de4881384871bbe029de684502707794ce7b3e6beec308 mesa-13.0.2.tar.gz
|
||||
a6ed622645f4ed61da418bf65adde5bcc4bb79023c36ba7d6b45b389da4416d5 mesa-13.0.2.tar.xz
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97321">Bug 97321</a> - Query INFO_LOG_LENGTH for empty info log should return 0</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97420">Bug 97420</a> - "#version 0" crashes glsl_compiler</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98632">Bug 98632</a> - Fix build on Hurd without PATH_MAX</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Ben Widawsky (3):</p>
|
||||
<ul>
|
||||
<li>i965: Add some APL and KBL SKU strings</li>
|
||||
<li>i965: Reorder PCI ID list to match release order</li>
|
||||
<li>i965/glk: Add basic Geminilake support</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (14):</p>
|
||||
<ul>
|
||||
<li>radv: fix texturesamples to handle single sample case</li>
|
||||
<li>wsi: fix VK_INCOMPLETE for vkGetSwapchainImagesKHR</li>
|
||||
<li>radv: don't crash on null swapchain destroy.</li>
|
||||
<li>ac/nir/llvm: fix channel in texture gather lowering code.</li>
|
||||
<li>radv: make sure to flush input attachments correctly.</li>
|
||||
<li>radv: fix image view creation for depth and stencil only</li>
|
||||
<li>radv: spir-v allows texture size query with and without lod.</li>
|
||||
<li>vulkan/wsi/x11: handle timeouts properly in next image acquire (v1.1)</li>
|
||||
<li>vulkan/wsi: store present mode in swapchain base class</li>
|
||||
<li>vulkan/wsi/x11: add support for IMMEDIATE present mode</li>
|
||||
<li>radv: fix texel fetch offset with 2d arrays.</li>
|
||||
<li>radv/si: fix optimal micro tile selection</li>
|
||||
<li>radv/ac/llvm: shadow samplers only return one value.</li>
|
||||
<li>radv: fix 3D clears with baseMiplevel</li>
|
||||
</ul>
|
||||
|
||||
<p>Eduardo Lima Mitev (2):</p>
|
||||
<ul>
|
||||
<li>vulkan/wsi/x11: Fix behavior of vkGetPhysicalDeviceSurfaceFormatsKHR</li>
|
||||
<li>vulkan/wsi/x11: Fix behavior of vkGetPhysicalDeviceSurfacePresentModesKHR</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (5):</p>
|
||||
<ul>
|
||||
<li>docs: add sha256 checksums for 13.0.1</li>
|
||||
<li>cherry-ignore: add reverted LLVM_LIBDIR patch</li>
|
||||
<li>anv: fix enumeration of properties</li>
|
||||
<li>radv: honour the number of properties available</li>
|
||||
<li>Update version to 13.0.2</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (3):</p>
|
||||
<ul>
|
||||
<li>vc4: Don't abort when a shader compile fails.</li>
|
||||
<li>vc4: Clamp the shadow comparison value.</li>
|
||||
<li>vc4: Fix register class handling of DDX/DDY arguments.</li>
|
||||
</ul>
|
||||
|
||||
<p>Gwan-gyeong Mun (2):</p>
|
||||
<ul>
|
||||
<li>util/disk_cache: close a previously opened handle in disk_cache_put (v2)</li>
|
||||
<li>anv: Fix unintentional integer overflow in anv_CreateDmaBufImageINTEL</li>
|
||||
</ul>
|
||||
|
||||
<p>Iago Toral Quiroga (1):</p>
|
||||
<ul>
|
||||
<li>anv/format: handle unsupported formats properly</li>
|
||||
</ul>
|
||||
|
||||
<p>Ian Romanick (2):</p>
|
||||
<ul>
|
||||
<li>glcpp: Handle '#version 0' and other invalid values</li>
|
||||
<li>glsl: Parse 0 as a preprocessor INTCONSTANT</li>
|
||||
</ul>
|
||||
|
||||
<p>Jason Ekstrand (15):</p>
|
||||
<ul>
|
||||
<li>anv/gen8: Stall when needed in Cmd(Set|Reset)Event</li>
|
||||
<li>anv/wsi: Set the fence to signaled in AcquireNextImageKHR</li>
|
||||
<li>anv: Rework fences</li>
|
||||
<li>vulkan/wsi/wayland: Include pthread.h</li>
|
||||
<li>vulkan/wsi/wayland: Clean up some error handling paths</li>
|
||||
<li>vulkan/wsi: Report the correct min/maxImageCount</li>
|
||||
<li>i965/gs: Allow primitive id to be a system value</li>
|
||||
<li>anv: Handle null in all destructors</li>
|
||||
<li>anv/fence: Handle ANV_FENCE_CREATE_SIGNALED_BIT</li>
|
||||
<li>nir/spirv: Fix handling of gl_PrimitiveId</li>
|
||||
<li>anv/blorp: Ignore clears for attachments first used as resolve destinations</li>
|
||||
<li>anv: Implement a depth stall restriction on gen7</li>
|
||||
<li>anv/cmd_buffer: Handle running out of binding tables in compute shaders</li>
|
||||
<li>anv/cmd_buffer: Emit a CS stall before setting a CS pipeline</li>
|
||||
<li>vulkan/wsi/x11: Implement FIFO mode.</li>
|
||||
</ul>
|
||||
|
||||
<p>Jordan Justen (2):</p>
|
||||
<ul>
|
||||
<li>isl: Fix height calculation in isl_msaa_interleaved_scale_px_to_sa</li>
|
||||
<li>i965/hsw: Set integer mode in sampling state for stencil texturing</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (4):</p>
|
||||
<ul>
|
||||
<li>intel: Set min_ds_entries on Broxton.</li>
|
||||
<li>i965: Fix compute shader crash.</li>
|
||||
<li>mesa: Drop PATH_MAX usage.</li>
|
||||
<li>i965: Fix GS push inputs with enhanced layouts.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kevin Strasser (1):</p>
|
||||
<ul>
|
||||
<li>vulkan/wsi: Add a thread-safe queue implementation</li>
|
||||
</ul>
|
||||
|
||||
<p>Lionel Landwerlin (1):</p>
|
||||
<ul>
|
||||
<li>anv: fix multi level clears with VK_REMAINING_MIP_LEVELS</li>
|
||||
</ul>
|
||||
|
||||
<p>Lucas Stach (1):</p>
|
||||
<ul>
|
||||
<li>gbm: request correct version of the DRI2_FENCE extension</li>
|
||||
</ul>
|
||||
|
||||
<p>Nicolai Hähnle (2):</p>
|
||||
<ul>
|
||||
<li>radeonsi: store group_size_variable in struct si_compute</li>
|
||||
<li>glsl/lower_output_reads: fix geometry shader output handling with conditional emit</li>
|
||||
</ul>
|
||||
|
||||
<p>Steinar H. Gunderson (1):</p>
|
||||
<ul>
|
||||
<li>Fix races during _mesa_HashWalk().</li>
|
||||
</ul>
|
||||
|
||||
<p>Tapani Pälli (1):</p>
|
||||
<ul>
|
||||
<li>mesa: fix empty program log length</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -1,177 +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>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 13.0.3 Release Notes / January 5, 2017</h1>
|
||||
|
||||
<p>
|
||||
Mesa 13.0.3 is a bug fix release which fixes bugs found since the 13.0.2 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 13.0.3 implements the OpenGL 4.4 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 4.4. OpenGL
|
||||
4.4 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
55b07d056f9b855ba9d7c8b2ddc7d3b220a61c6ab1bdc73cbfc2f607721094c2 mesa-13.0.3.tar.gz
|
||||
d9aa8be5c176d00d0cd503cb2f64a5a403ea471ec819c022581414860d7ba40e mesa-13.0.3.tar.xz
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77662">Bug 77662</a> - Fail to render to different faces of depth-stencil cube map</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=92234">Bug 92234</a> - [BDW] GPU hang in Shogun2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98329">Bug 98329</a> - [dEQP, EGL, SKL, BDW, BSW] dEQP-EGL.functional.image.render_multiple_contexts.gles2_renderbuffer_depth16_depth_buffer</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99038">Bug 99038</a> - [dEQP, EGL, SKL, BDW, BSW] dEQP-EGL.functional.negative_api.create_pixmap_surface crashes</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Chad Versace (2):</p>
|
||||
<ul>
|
||||
<li>i965/mt: Disable aux surfaces after making miptree shareable</li>
|
||||
<li>egl: Fix crashes in eglCreate*Surface()</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (4):</p>
|
||||
<ul>
|
||||
<li>anv: set maxFragmentDualSrcAttachments to 1</li>
|
||||
<li>radv: set maxFragmentDualSrcAttachments to 1</li>
|
||||
<li>radv: fix another regression since shadow fixes.</li>
|
||||
<li>radv: add missing license file to radv_meta_bufimage.</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (5):</p>
|
||||
<ul>
|
||||
<li>docs: add sha256 checksums for 13.0.2</li>
|
||||
<li>anv: don't double-close the same fd</li>
|
||||
<li>anv: don't leak memory if anv_init_wsi() fails</li>
|
||||
<li>radv: don't leak the fd if radv_physical_device_init() succeeds</li>
|
||||
<li>Update version to 13.0.3</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (1):</p>
|
||||
<ul>
|
||||
<li>vc4: In a loop break/continue, jump if everyone has taken the path.</li>
|
||||
</ul>
|
||||
|
||||
<p>Gwan-gyeong Mun (3):</p>
|
||||
<ul>
|
||||
<li>anv: Add missing error-checking to anv_block_pool_init (v2)</li>
|
||||
<li>anv: Update the teardown in reverse order of the anv_CreateDevice</li>
|
||||
<li>vulkan/wsi: Fix resource leak in success path of wsi_queue_init()</li>
|
||||
</ul>
|
||||
|
||||
<p>Haixia Shi (1):</p>
|
||||
<ul>
|
||||
<li>compiler/glsl: fix precision problem of tanh</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (1):</p>
|
||||
<ul>
|
||||
<li>mesa: only verify that enabled arrays have backing buffers</li>
|
||||
</ul>
|
||||
|
||||
<p>Jason Ekstrand (8):</p>
|
||||
<ul>
|
||||
<li>anv/cmd_buffer: Re-emit MEDIA_CURBE_LOAD when CS push constants are dirty</li>
|
||||
<li>anv/image: Rename hiz_surface to aux_surface</li>
|
||||
<li>anv/cmd_buffer: Remove the 1-D case from the HiZ QPitch calculation</li>
|
||||
<li>genxml/gen9: Change the default of MI_SEMAPHORE_WAIT::RegisterPoleMode</li>
|
||||
<li>anv/device: Return the right error for failed maps</li>
|
||||
<li>anv/device: Implicitly unmap memory objects in FreeMemory</li>
|
||||
<li>anv/descriptor_set: Write the state offset in the surface state free list.</li>
|
||||
<li>spirv: Use a simpler and more correct implementaiton of tanh()</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (1):</p>
|
||||
<ul>
|
||||
<li>i965: Allocate at least some URB space even when max_vertices = 0.</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (17):</p>
|
||||
<ul>
|
||||
<li>radeonsi: always set all blend registers</li>
|
||||
<li>radeonsi: set CB_BLEND1_CONTROL.ENABLE for dual source blending</li>
|
||||
<li>radeonsi: disable RB+ blend optimizations for dual source blending</li>
|
||||
<li>radeonsi: consolidate max-work-group-size computation</li>
|
||||
<li>radeonsi: apply a multi-wave workgroup SPI bug workaround to affected CIK chips</li>
|
||||
<li>radeonsi: apply a TC L1 write corruption workaround for SI</li>
|
||||
<li>radeonsi: apply a tessellation bug workaround for SI</li>
|
||||
<li>radeonsi: add a tess+GS hang workaround for VI dGPUs</li>
|
||||
<li>radeonsi: apply the double EVENT_WRITE_EOP workaround to VI as well</li>
|
||||
<li>cso: don't release sampler states that are bound</li>
|
||||
<li>radeonsi: always restore sampler states when unbinding sampler views</li>
|
||||
<li>radeonsi: fix incorrect FMASK checking in bind_sampler_states</li>
|
||||
<li>radeonsi: allow specifying simm16 of emit_waitcnt at call sites</li>
|
||||
<li>radeonsi: wait for outstanding memory instructions in TCS barriers</li>
|
||||
<li>tgsi: fix the src type of TGSI_OPCODE_MEMBAR</li>
|
||||
<li>radeonsi: wait for outstanding LDS instructions in memory barriers if needed</li>
|
||||
<li>radeonsi: disable the constant engine (CE) on Carrizo and Stoney</li>
|
||||
</ul>
|
||||
|
||||
<p>Matt Turner (3):</p>
|
||||
<ul>
|
||||
<li>i965/fs: Rename opt_copy_propagate -> opt_copy_propagation.</li>
|
||||
<li>i965/fs: Add unit tests for copy propagation pass.</li>
|
||||
<li>i965/fs: Reject copy propagation into SEL if not min/max.</li>
|
||||
</ul>
|
||||
|
||||
<p>Nanley Chery (1):</p>
|
||||
<ul>
|
||||
<li>mesa/fbobject: Update CubeMapFace when reusing textures</li>
|
||||
</ul>
|
||||
|
||||
<p>Nicolai Hähnle (4):</p>
|
||||
<ul>
|
||||
<li>radeonsi: fix isolines tess factor writes to control ring</li>
|
||||
<li>radeonsi: update all GSVS ring descriptors for new buffer allocations</li>
|
||||
<li>radeonsi: do not kill GS with memory writes</li>
|
||||
<li>radeonsi: fix an off-by-one error in the bounds check for max_vertices</li>
|
||||
</ul>
|
||||
|
||||
<p>Rhys Kidd (1):</p>
|
||||
<ul>
|
||||
<li>glsl: Add pthread libs to cache_test</li>
|
||||
</ul>
|
||||
|
||||
<p>Timothy Arceri (2):</p>
|
||||
<ul>
|
||||
<li>mesa: fix active subroutine uniforms properly</li>
|
||||
<li>Revert "nir: Turn imov/fmov of undef into undef."</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -1,255 +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>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 13.0.4 Release Notes / February 1, 2017</h1>
|
||||
|
||||
<p>
|
||||
Mesa 13.0.4 is a bug fix release which fixes bugs found since the 13.0.3 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 13.0.4 implements the OpenGL 4.4 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 4.4. OpenGL
|
||||
4.4 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
a78518030b0b7d77a6c426ac3ff40f4b27fb0e2cdb0dfbe685024a46cae59bad mesa-13.0.4.tar.gz
|
||||
a95d7ce8f7bd5f88585e4be3144a341236d8c0fc91f6feaec59bb8ba3120e726 mesa-13.0.4.tar.xz
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=92634">Bug 92634</a> - gallium's vl_mpeg12_decoder does not work with st/va</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=94512">Bug 94512</a> - X segfaults with glx-tls enabled in a x32 environment</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=94900">Bug 94900</a> - HD6950 GPU lockup loop with various steam games (octodad[always], saints row 4[always], dead island[always], grid autosport[sometimes])</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98263">Bug 98263</a> - [radv] The Talos Principle fails to launch with "Fatal error: Cannot set display mode."</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98914">Bug 98914</a> - mesa-vdpau-drivers: breaks vdpau for mpeg2video</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98975">Bug 98975</a> - Wasteland 2 Directors Cut: Hangs. GPU fault</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99030">Bug 99030</a> - [HSW, regression] transform feedback fails on Linux 4.8</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99085">Bug 99085</a> - [EGL] dEQP-EGL.functional.sharing.gles2.multithread intermittent</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99097">Bug 99097</a> - [vulkancts] dEQP-VK.image.store regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99100">Bug 99100</a> - [SKL,BDW,BSW,KBL] dEQP-VK.glsl.return.return_in_dynamic_loop_dynamic_vertex regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99144">Bug 99144</a> - Incorrect rendering using glDrawArraysInstancedBaseInstance and first != 0 on Skylake</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99154">Bug 99154</a> - Link time error when using multiple builtin functions</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99158">Bug 99158</a> - vdpau segfaults and gpu locks with kodi on R9285</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99185">Bug 99185</a> - dEQP-EGL.functional.image.modify.tex_rgb5_a1_tex_subimage_rgba8</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99188">Bug 99188</a> - dEQP-EGL.functional.create_context_ext.robust_gl_30.rgb565_no_depth_no_stencil</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99210">Bug 99210</a> - ES3-CTS.functional.texture.mipmap.cube.generate.rgba5551_*</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99354">Bug 99354</a> - [G71] "Assertion `bkref' failed" reproducible with glmark2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99450">Bug 99450</a> - [amdgpu] Payday 2 visual glitches on some models</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99451">Bug 99451</a> - polygon offset use after free</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Andres Rodriguez (2):</p>
|
||||
<ul>
|
||||
<li>vulkan/wsi: clarify the severity of lack of DRI3 v2</li>
|
||||
<li>radv: fix include order for installed headers v2</li>
|
||||
</ul>
|
||||
|
||||
<p>Arda Coskunses (2):</p>
|
||||
<ul>
|
||||
<li>vulkan/wsi/x11: don't crash on null visual</li>
|
||||
<li>vulkan/wsi/x11: don't crash on null wsi x11 connection</li>
|
||||
</ul>
|
||||
|
||||
<p>Bas Nieuwenhuizen (1):</p>
|
||||
<ul>
|
||||
<li>radv: Support loader interface version 3.</li>
|
||||
</ul>
|
||||
|
||||
<p>Chad Versace (10):</p>
|
||||
<ul>
|
||||
<li>egl: Check config's surface types in eglCreate*Surface()</li>
|
||||
<li>dri: Add __DRI_IMAGE_FORMAT_ARGB1555</li>
|
||||
<li>mesa/texformat: Handle GL_RGBA + GL_UNSIGNED_SHORT_5_5_5_1</li>
|
||||
<li>egl: Emit correct error when robust context creation fails</li>
|
||||
<li>anv: Handle vkGetPhysicalDeviceQueueFamilyProperties with count == 0</li>
|
||||
<li>mesa/shaderobj: Fix races on refcounts</li>
|
||||
<li>meta: Disable dithering during glGenerateMipmap</li>
|
||||
<li>vulkan: Add new cast macros for VkIcd types</li>
|
||||
<li>vulkan: Update vk_icd.h to interface version 3</li>
|
||||
<li>anv: Support loader interface version 3 (patch v2)</li>
|
||||
</ul>
|
||||
|
||||
<p>Christian König (1):</p>
|
||||
<ul>
|
||||
<li>vl/zscan: fix "Fix trivial sign compare warnings"</li>
|
||||
</ul>
|
||||
|
||||
<p>Chuck Atkins (1):</p>
|
||||
<ul>
|
||||
<li>glx: Add missing glproto dependency for gallium-xlib glx</li>
|
||||
</ul>
|
||||
|
||||
<p>Damien Grassart (1):</p>
|
||||
<ul>
|
||||
<li>anv: return count of queue families written</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (1):</p>
|
||||
<ul>
|
||||
<li>radv: flush smem for uniform buffer bit.</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (10):</p>
|
||||
<ul>
|
||||
<li>docs: add sha256 checksums for 13.0.3</li>
|
||||
<li>cherry-ignore: add couple of intel_miptree_copy related patches</li>
|
||||
<li>cherry-ignore: add radv: Call nir_lower_constant_initializers."</li>
|
||||
<li>get-typod-pick-list.sh: add new script</li>
|
||||
<li>cherry-ignore: add "_mesa_ClampColor extension/version fix"</li>
|
||||
<li>cherry-ignore: add wayland race condition fix</li>
|
||||
<li>egl/wayland: use the destroy_window_callback for swrast</li>
|
||||
<li>automake: use shared llvm libs for make distcheck</li>
|
||||
<li>get-pick-list.sh: Require explicit "13.0" for nominating stable patches</li>
|
||||
<li>Update version to 13.0.4</li>
|
||||
</ul>
|
||||
|
||||
<p>Francisco Jerez (1):</p>
|
||||
<ul>
|
||||
<li>anv: Fix uniform and storage buffer offset alignment limits.</li>
|
||||
</ul>
|
||||
|
||||
<p>Fredrik Höglund (2):</p>
|
||||
<ul>
|
||||
<li>radv: fix dual source blending</li>
|
||||
<li>dri3: Fix MakeCurrent without a default framebuffer</li>
|
||||
</ul>
|
||||
|
||||
<p>Grazvydas Ignotas (1):</p>
|
||||
<ul>
|
||||
<li>mapi: update the asm code to support x32</li>
|
||||
</ul>
|
||||
|
||||
<p>Heiko Przybyl (1):</p>
|
||||
<ul>
|
||||
<li>r600/sb: Fix loop optimization related hangs on eg</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (1):</p>
|
||||
<ul>
|
||||
<li>nouveau: take extra push space into account for pushbuf_space calls</li>
|
||||
</ul>
|
||||
|
||||
<p>Jason Ekstrand (4):</p>
|
||||
<ul>
|
||||
<li>i965/generator/tex: Handle an immediate sampler with an indirect texture</li>
|
||||
<li>anv/formats: Use the real format for B4G4R4A4_UNORM_PACK16 on gen8</li>
|
||||
<li>nir/search: Only allow matching SSA values</li>
|
||||
<li>isl: Mark A4B4G4R4_UNORM as supported on gen8</li>
|
||||
</ul>
|
||||
|
||||
<p>Jonas Ådahl (1):</p>
|
||||
<ul>
|
||||
<li>egl/wayland: Cleanup private display connection when init fails</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (7):</p>
|
||||
<ul>
|
||||
<li>i965: Don't bail on vertex element processing if we need draw params.</li>
|
||||
<li>i965: Fix last slot calculations</li>
|
||||
<li>i965: Fix texturing in the vec4 TCS and GS backends.</li>
|
||||
<li>spirv: Move cursor before calling vtn_ssa_value() in phi 2nd pass.</li>
|
||||
<li>i965: Make BLORP disable the NP Z PMA stall fix.</li>
|
||||
<li>glsl: Use ir_var_temporary when generating inline functions.</li>
|
||||
<li>i965: Properly flush in hsw_pause_transform_feedback().</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (4):</p>
|
||||
<ul>
|
||||
<li>vdpau: call texture_get_handle while the mutex is being held</li>
|
||||
<li>va: call texture_get_handle while the mutex is being held</li>
|
||||
<li>radeonsi: for the tess barrier, only use emit_waitcnt on SI and LLVM 3.9+</li>
|
||||
<li>radeonsi: don't forget to add HTILE to the buffer list for texturing</li>
|
||||
</ul>
|
||||
|
||||
<p>Michel Dänzer (1):</p>
|
||||
<ul>
|
||||
<li>cso: Don't restore nr_samplers in cso_restore_fragment_samplers</li>
|
||||
</ul>
|
||||
|
||||
<p>Nanley Chery (3):</p>
|
||||
<ul>
|
||||
<li>anv/cmd_buffer: Fix arrayed depth/stencil attachments</li>
|
||||
<li>anv/cmd_buffer: Fix programmed HiZ qpitch</li>
|
||||
<li>anv/image: Disable HiZ for depth buffer arrays</li>
|
||||
</ul>
|
||||
|
||||
<p>Nayan Deshmukh (1):</p>
|
||||
<ul>
|
||||
<li>st/va: delay calling begin_frame until we have all parameters</li>
|
||||
</ul>
|
||||
|
||||
<p>Rob Clark (1):</p>
|
||||
<ul>
|
||||
<li>freedreno: some fence cleanup</li>
|
||||
</ul>
|
||||
|
||||
<p>Samuel Pitoiset (1):</p>
|
||||
<ul>
|
||||
<li>gallium/hud: add missing break in hud_cpufreq_graph_install()</li>
|
||||
</ul>
|
||||
|
||||
<p>Timothy Arceri (3):</p>
|
||||
<ul>
|
||||
<li>nir: Turn imov/fmov of undef into undef</li>
|
||||
<li>glsl: fix opt_minmax redundancy checks against baserange</li>
|
||||
<li>util: fix list_is_singular()</li>
|
||||
</ul>
|
||||
|
||||
<p>Zachary Michaels (1):</p>
|
||||
<ul>
|
||||
<li>radeonsi: Always leave poly_offset in a valid state</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -1,209 +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>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 13.0.5 Release Notes / February 20, 2017</h1>
|
||||
|
||||
<p>
|
||||
Mesa 13.0.5 is a bug fix release which fixes bugs found since the 13.0.4 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 13.0.5 implements the OpenGL 4.4 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 4.4. OpenGL
|
||||
4.4 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
TBD
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98329">Bug 98329</a> - [dEQP, EGL, SKL, BDW, BSW] dEQP-EGL.functional.image.render_multiple_contexts.gles2_renderbuffer_depth16_depth_buffer</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98421">Bug 98421</a> - src/loader/loader.c:111:40: error: unknown type name ‘drmDevicePtr’</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98526">Bug 98526</a> - glsl/tests/general-ir-test regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99532">Bug 99532</a> - Compute shader doesn't give right result under some circumstances</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99631">Bug 99631</a> - segfault with OSVRTrackerView and openscenegraph git master</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99633">Bug 99633</a> - rasterizer/core/clip.h:279:49: error: ‘const struct API_STATE’ has no member named ‘linkageCount’</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=99692">Bug 99692</a> - [radv] Mostly broken on Hawaii PRO/CIK ASICs</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Bartosz Tomczyk (2):</p>
|
||||
<ul>
|
||||
<li>r600: Fix stack overflow</li>
|
||||
<li>r600/sb: Fix memory leak</li>
|
||||
</ul>
|
||||
|
||||
<p>Bruce Cherniak (1):</p>
|
||||
<ul>
|
||||
<li>swr: [rasterizer core] Remove dead code Clipper::ClipScalar()</li>
|
||||
</ul>
|
||||
|
||||
<p>Chad Versace (1):</p>
|
||||
<ul>
|
||||
<li>i965/mt: Disable HiZ when sharing depth buffer externally (v2)</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (3):</p>
|
||||
<ul>
|
||||
<li>radv: change base aligmment for allocated memory.</li>
|
||||
<li>radv: fix cik macroModeIndex.</li>
|
||||
<li>radv: adopt some init config workarounds from radeonsi.</li>
|
||||
</ul>
|
||||
|
||||
<p>Derek Foreman (1):</p>
|
||||
<ul>
|
||||
<li>egl/dri2: add image_loader_extension back into loader extensions for wayland</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (26):</p>
|
||||
<ul>
|
||||
<li>docs: add sha256 checksums for 13.0.4</li>
|
||||
<li>configure.ac: list radeon in --with-vulkan-drivers help string</li>
|
||||
<li>i965: automake: correctly set MKDIR_GEN</li>
|
||||
<li>freedreno: automake: correctly set MKDIR_GEN</li>
|
||||
<li>i965: automake: include builddir prior to srcdir</li>
|
||||
<li>i915: automake: include builddir prior to srcdir</li>
|
||||
<li>egl: automake: include builddir prior to srcdir</li>
|
||||
<li>clover: automake: include builddir prior to srcdir</li>
|
||||
<li>st/dri: automake: include builddir prior to srcdir</li>
|
||||
<li>d3dadapter9: automake: include builddir prior to srcdir</li>
|
||||
<li>glx: automake: include builddir prior to srcdir</li>
|
||||
<li>glx/apple: automake: include builddir prior to srcdir</li>
|
||||
<li>glx/windows: automake: include builddir prior to srcdir</li>
|
||||
<li>loader: automake: include builddir prior to srcdir</li>
|
||||
<li>mapi: automake: include builddir prior to srcdir</li>
|
||||
<li>radeon, r200: automake: include builddir prior to srcdir</li>
|
||||
<li>dri/swrast: automake: include builddir prior to srcdir</li>
|
||||
<li>dri/osmesa: automake: include builddir prior to srcdir</li>
|
||||
<li>mesa/tests: automake: include builddir prior to srcdir</li>
|
||||
<li>bin/get-extra-pick-list: use git merge-base to get the branchpoint</li>
|
||||
<li>bin/get-extra-pick-list: rework to use already_picked list</li>
|
||||
<li>bin/get-typod-pick-list.sh: limit `git grep ...' to only as needed</li>
|
||||
<li>bin/get-pick-list.sh: limit `git grep ...' only as needed</li>
|
||||
<li>bin/get-pick-list.sh: remove ancient way of nominating patches</li>
|
||||
<li>bin/get-fixes-pick-list.sh: add new script</li>
|
||||
<li>Update version to 13.0.5</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (1):</p>
|
||||
<ul>
|
||||
<li>vc4: Avoid emitting small immediates for UBO indirect load address guards.</li>
|
||||
</ul>
|
||||
|
||||
<p>Hans de Goede (1):</p>
|
||||
<ul>
|
||||
<li>glx/glvnd: Fix GLXdispatchIndex sorting</li>
|
||||
</ul>
|
||||
|
||||
<p>Ian Romanick (11):</p>
|
||||
<ul>
|
||||
<li>linker: Slight code rearrange to prevent duplication in the next commit</li>
|
||||
<li>linker: Accurately track gl_uniform_block::stageref</li>
|
||||
<li>glsl: Split process_block_array into two functions</li>
|
||||
<li>glsl: Fix wonkey indentation left from previous commit</li>
|
||||
<li>glsl: Track the linearized array index for each UBO instance array element</li>
|
||||
<li>glsl: Use simpler visitor to determine which UBO and SSBO blocks are used</li>
|
||||
<li>glsl: Add tracking for elements of an array-of-arrays that have been accessed</li>
|
||||
<li>glsl: Add structures to track accessed elements of a single array</li>
|
||||
<li>glsl: Mark a set of array elements as accessed using a list of array_deref_range</li>
|
||||
<li>glsl: Walk a list of ir_dereference_array to mark array elements as accessed</li>
|
||||
<li>linker: Accurately mark a uniform block instance array element as used in a stage</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (3):</p>
|
||||
<ul>
|
||||
<li>vbo: process buffer binding state changes on draw when recording</li>
|
||||
<li>st/mesa: MAX_VARYING is the max supported number of patch varyings, not min</li>
|
||||
<li>nvc0: disable linked tsc mode in compute launch descriptor</li>
|
||||
</ul>
|
||||
|
||||
<p>Jason Ekstrand (11):</p>
|
||||
<ul>
|
||||
<li>nir/search: Use the correct bit size for integer comparisons</li>
|
||||
<li>i965/blorp: Use the correct ISL format for combined depth/stencil</li>
|
||||
<li>intel/blorp: Handle clearing of A4B4G4R4 on all platforms</li>
|
||||
<li>isl/formats: Only advertise sampling for A4B4G4R4 on Broadwell</li>
|
||||
<li>anv: Flush render cache before STATE_BASE_ADDRESS on gen7</li>
|
||||
<li>anv: Improve flushing around STATE_BASE_ADDRESS</li>
|
||||
<li>vulkan/wsi/wayland: Handle VK_INCOMPLETE for GetFormats</li>
|
||||
<li>vulkan/wsi/wayland: Handle VK_INCOMPLETE for GetPresentModes</li>
|
||||
<li>vulkan/wsi: Lower the maximum image sizes</li>
|
||||
<li>i965/sampler_state: Pass texObj into update_sampler_state</li>
|
||||
<li>i965/sampler_state: Set the "Base Mip Level" field on Sandy Bridge</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (1):</p>
|
||||
<ul>
|
||||
<li>i965: Unbind deleted shaders from brw_context, fixing malloc heisenbug.</li>
|
||||
</ul>
|
||||
|
||||
<p>Lionel Landwerlin (5):</p>
|
||||
<ul>
|
||||
<li>anv: don't require render target isl bit for depth/stencil surfaces</li>
|
||||
<li>anv: set command buffer to NULL when allocations fail</li>
|
||||
<li>anv: fix descriptor pool internal size allocation</li>
|
||||
<li>spirv: handle OpUndef as part of the variable parsing pass</li>
|
||||
<li>spirv: handle undefined components for OpVectorShuffle</li>
|
||||
</ul>
|
||||
|
||||
<p>Marc-André Lureau (1):</p>
|
||||
<ul>
|
||||
<li>tgsi-dump: dump label if instruction has one</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (2):</p>
|
||||
<ul>
|
||||
<li>radeonsi: always set the TCL1_ACTION_ENA when invalidating L2</li>
|
||||
<li>gallium/radeon: fix performance of buffer readbacks</li>
|
||||
</ul>
|
||||
|
||||
<p>Topi Pohjolainen (2):</p>
|
||||
<ul>
|
||||
<li>i965: Make depth clear flushing more explicit</li>
|
||||
<li>i965/gen6: Issue direct depth stall and flush after depth clear</li>
|
||||
</ul>
|
||||
|
||||
<p>Vinson Lee (2):</p>
|
||||
<ul>
|
||||
<li>scons: Require libdrm >= 2.4.66 for DRM.</li>
|
||||
<li>util: Fix Clang trivial destructor check.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -1,120 +0,0 @@
|
||||
Name
|
||||
|
||||
MESA_platform_surfaceless
|
||||
|
||||
Name Strings
|
||||
|
||||
EGL_MESA_platform_surfaceless
|
||||
|
||||
Contributors
|
||||
|
||||
Chad Versace <chadversary@google.com>
|
||||
Haixia Shi <hshi@google.com>
|
||||
Stéphane Marchesin <marcheu@google.com>
|
||||
Zach Reizner <zachr@chromium.org>
|
||||
Gurchetan Singh <gurchetansingh@google.com>
|
||||
|
||||
Contacts
|
||||
|
||||
Chad Versace <chadversary@google.com>
|
||||
|
||||
Status
|
||||
|
||||
DRAFT
|
||||
|
||||
Version
|
||||
|
||||
Version 2, 2016-10-13
|
||||
|
||||
Number
|
||||
|
||||
EGL Extension #TODO
|
||||
|
||||
Extension Type
|
||||
|
||||
EGL client extension
|
||||
|
||||
Dependencies
|
||||
|
||||
Requires EGL 1.5 or later; or EGL 1.4 with EGL_EXT_platform_base.
|
||||
|
||||
This extension is written against the EGL 1.5 Specification (draft
|
||||
20140122).
|
||||
|
||||
This extension interacts with EGL_EXT_platform_base as follows. If the
|
||||
implementation supports EGL_EXT_platform_base, then text regarding
|
||||
eglGetPlatformDisplay applies also to eglGetPlatformDisplayEXT;
|
||||
eglCreatePlatformWindowSurface to eglCreatePlatformWindowSurfaceEXT; and
|
||||
eglCreatePlatformPixmapSurface to eglCreatePlatformPixmapSurfaceEXT.
|
||||
|
||||
Overview
|
||||
|
||||
This extension defines a new EGL platform, the "surfaceless" platform. This
|
||||
platfom's defining property is that it has no native surfaces, and hence
|
||||
neither eglCreatePlatformWindowSurface nor eglCreatePlatformPixmapSurface
|
||||
can be used. The platform is independent of any native window system.
|
||||
|
||||
The platform's intended use case is for enabling OpenGL and OpenGL ES
|
||||
applications on systems where no window system exists. However, the
|
||||
platform's permitted usage is not restricted to this case. Since the
|
||||
platform is independent of any native window system, it may also be used on
|
||||
systems where a window system is present.
|
||||
|
||||
New Types
|
||||
|
||||
None
|
||||
|
||||
New Procedures and Functions
|
||||
|
||||
None
|
||||
|
||||
New Tokens
|
||||
|
||||
Accepted as the <platform> argument of eglGetPlatformDisplay:
|
||||
|
||||
EGL_PLATFORM_SURFACELESS_MESA 0x31DD
|
||||
|
||||
Additions to the EGL Specification
|
||||
|
||||
None.
|
||||
|
||||
New Behavior
|
||||
|
||||
To determine if the EGL implementation supports this extension, clients
|
||||
should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
|
||||
|
||||
To obtain an EGLDisplay on the surfaceless platform, call
|
||||
eglGetPlatformDisplay with <platform> set to EGL_PLATFORM_SURFACELESS_MESA.
|
||||
The <native_display> parameter must be EGL_DEFAULT_DISPLAY.
|
||||
|
||||
eglCreatePlatformWindowSurface fails when called with a <display> that
|
||||
belongs to the surfaceless platform. It returns EGL_NO_SURFACE and
|
||||
generates EGL_BAD_NATIVE_WINDOW. The justification for this unconditional
|
||||
failure is that the surfaceless platform has no native windows, and
|
||||
therefore the <native_window> parameter is always invalid.
|
||||
|
||||
Likewise, eglCreatePlatformPixmapSurface also fails when called with a
|
||||
<display> that belongs to the surfaceless platform. It returns
|
||||
EGL_NO_SURFACE and generates EGL_BAD_NATIVE_PIXMAP.
|
||||
|
||||
The surfaceless platform imposes no platform-specific restrictions on the
|
||||
creation of pbuffers, as eglCreatePbufferSurface has no native surface
|
||||
parameter. Specifically, if the EGLDisplay advertises an EGLConfig whose
|
||||
EGL_SURFACE_TYPE attribute contains EGL_PBUFFER_BIT, then the EGLDisplay
|
||||
permits the creation of pbuffers with that config.
|
||||
|
||||
Issues
|
||||
|
||||
None.
|
||||
|
||||
Revision History
|
||||
|
||||
Version 2, 2016-10-13 (Chad Versace)
|
||||
- Assign enum values
|
||||
- Define interfactions with EGL 1.4 and EGL_EXT_platform_base.
|
||||
- Add Gurchetan as contributor, as he implemented the pbuffer support.
|
||||
|
||||
Version 1, 2016-09-23 (Chad Versace)
|
||||
- Initial version
|
||||
- Posted for review at
|
||||
https://lists.freedesktop.org/archives/mesa-dev/2016-September/129549.html
|
@@ -12,12 +12,11 @@ Contact
|
||||
|
||||
Status
|
||||
|
||||
Superseded by the functionally identical EGL_KHR_no_config_context
|
||||
extension.
|
||||
Proposal
|
||||
|
||||
Version
|
||||
|
||||
Version 2, September 9, 2016
|
||||
Version 1, February 28, 2014
|
||||
|
||||
Number
|
||||
|
||||
@@ -122,8 +121,5 @@ Issues
|
||||
|
||||
Revision History
|
||||
|
||||
Version 2, September 9, 2016
|
||||
Defer to EGL_KHR_no_config_context (Adam Jackson)
|
||||
|
||||
Version 1, February 28, 2014
|
||||
Initial draft (Neil Roberts)
|
||||
|
@@ -1,520 +0,0 @@
|
||||
Name
|
||||
|
||||
MESA_shader_integer_functions
|
||||
|
||||
Name Strings
|
||||
|
||||
GL_MESA_shader_integer_functions
|
||||
|
||||
Contact
|
||||
|
||||
Ian Romanick <ian.d.romanick@intel.com>
|
||||
|
||||
Contributors
|
||||
|
||||
All the contributors of GL_ARB_gpu_shader5
|
||||
|
||||
Status
|
||||
|
||||
Supported by all GLSL 1.30 capable drivers in Mesa 12.1 and later
|
||||
|
||||
Version
|
||||
|
||||
Version 2, July 7, 2016
|
||||
|
||||
Number
|
||||
|
||||
TBD
|
||||
|
||||
Dependencies
|
||||
|
||||
This extension is written against the OpenGL 3.2 (Compatibility Profile)
|
||||
Specification.
|
||||
|
||||
This extension is written against Version 1.50 (Revision 09) of the OpenGL
|
||||
Shading Language Specification.
|
||||
|
||||
GLSL 1.30 is required.
|
||||
|
||||
This extension interacts with ARB_gpu_shader5.
|
||||
|
||||
This extension interacts with ARB_gpu_shader_fp64.
|
||||
|
||||
This extension interacts with NV_gpu_shader5.
|
||||
|
||||
Overview
|
||||
|
||||
GL_ARB_gpu_shader5 extends GLSL in a number of useful ways. Much of this
|
||||
added functionality requires significant hardware support. There are many
|
||||
aspects, however, that can be easily implmented on any GPU with "real"
|
||||
integer support (as opposed to simulating integers using floating point
|
||||
calculations).
|
||||
|
||||
This extension provides a set of new features to the OpenGL Shading
|
||||
Language to support capabilities of these GPUs, extending the capabilities
|
||||
of version 1.30 of the OpenGL Shading Language. Shaders
|
||||
using the new functionality provided by this extension should enable this
|
||||
functionality via the construct
|
||||
|
||||
#extension GL_MESA_shader_integer_functions : require (or enable)
|
||||
|
||||
This extension provides a variety of new features for all shader types,
|
||||
including:
|
||||
|
||||
* support for implicitly converting signed integer types to unsigned
|
||||
types, as well as more general implicit conversion and function
|
||||
overloading infrastructure to support new data types introduced by
|
||||
other extensions;
|
||||
|
||||
* new built-in functions supporting:
|
||||
|
||||
* splitting a floating-point number into a significand and exponent
|
||||
(frexp), or building a floating-point number from a significand and
|
||||
exponent (ldexp);
|
||||
|
||||
* integer bitfield manipulation, including functions to find the
|
||||
position of the most or least significant set bit, count the number
|
||||
of one bits, and bitfield insertion, extraction, and reversal;
|
||||
|
||||
* extended integer precision math, including add with carry, subtract
|
||||
with borrow, and extenended multiplication;
|
||||
|
||||
The resulting extension is a strict subset of GL_ARB_gpu_shader5.
|
||||
|
||||
IP Status
|
||||
|
||||
No known IP claims.
|
||||
|
||||
New Procedures and Functions
|
||||
|
||||
None
|
||||
|
||||
New Tokens
|
||||
|
||||
None
|
||||
|
||||
Additions to Chapter 2 of the OpenGL 3.2 (Compatibility Profile) Specification
|
||||
(OpenGL Operation)
|
||||
|
||||
None.
|
||||
|
||||
Additions to Chapter 3 of the OpenGL 3.2 (Compatibility Profile) Specification
|
||||
(Rasterization)
|
||||
|
||||
None.
|
||||
|
||||
Additions to Chapter 4 of the OpenGL 3.2 (Compatibility Profile) Specification
|
||||
(Per-Fragment Operations and the Frame Buffer)
|
||||
|
||||
None.
|
||||
|
||||
Additions to Chapter 5 of the OpenGL 3.2 (Compatibility Profile) Specification
|
||||
(Special Functions)
|
||||
|
||||
None.
|
||||
|
||||
Additions to Chapter 6 of the OpenGL 3.2 (Compatibility Profile) Specification
|
||||
(State and State Requests)
|
||||
|
||||
None.
|
||||
|
||||
Additions to Appendix A of the OpenGL 3.2 (Compatibility Profile)
|
||||
Specification (Invariance)
|
||||
|
||||
None.
|
||||
|
||||
Additions to the AGL/GLX/WGL Specifications
|
||||
|
||||
None.
|
||||
|
||||
Modifications to The OpenGL Shading Language Specification, Version 1.50
|
||||
(Revision 09)
|
||||
|
||||
Including the following line in a shader can be used to control the
|
||||
language features described in this extension:
|
||||
|
||||
#extension GL_MESA_shader_integer_functions : <behavior>
|
||||
|
||||
where <behavior> is as specified in section 3.3.
|
||||
|
||||
New preprocessor #defines are added to the OpenGL Shading Language:
|
||||
|
||||
#define GL_MESA_shader_integer_functions 1
|
||||
|
||||
|
||||
Modify Section 4.1.10, Implicit Conversions, p. 27
|
||||
|
||||
(modify table of implicit conversions)
|
||||
|
||||
Can be implicitly
|
||||
Type of expression converted to
|
||||
--------------------- -----------------
|
||||
int uint, float
|
||||
ivec2 uvec2, vec2
|
||||
ivec3 uvec3, vec3
|
||||
ivec4 uvec4, vec4
|
||||
|
||||
uint float
|
||||
uvec2 vec2
|
||||
uvec3 vec3
|
||||
uvec4 vec4
|
||||
|
||||
(modify second paragraph of the section) No implicit conversions are
|
||||
provided to convert from unsigned to signed integer types or from
|
||||
floating-point to integer types. There are no implicit array or structure
|
||||
conversions.
|
||||
|
||||
(insert before the final paragraph of the section) When performing
|
||||
implicit conversion for binary operators, there may be multiple data types
|
||||
to which the two operands can be converted. For example, when adding an
|
||||
int value to a uint value, both values can be implicitly converted to uint
|
||||
and float. In such cases, a floating-point type is chosen if either
|
||||
operand has a floating-point type. Otherwise, an unsigned integer type is
|
||||
chosen if either operand has an unsigned integer type. Otherwise, a
|
||||
signed integer type is chosen.
|
||||
|
||||
|
||||
Modify Section 5.9, Expressions, p. 57
|
||||
|
||||
(modify bulleted list as follows, adding support for implicit conversion
|
||||
between signed and unsigned types)
|
||||
|
||||
Expressions in the shading language are built from the following:
|
||||
|
||||
* Constants of type bool, int, int64_t, uint, uint64_t, float, all vector
|
||||
types, and all matrix types.
|
||||
|
||||
...
|
||||
|
||||
* The operator modulus (%) operates on signed or unsigned integer scalars
|
||||
or vectors. If the fundamental types of the operands do not match, the
|
||||
conversions from Section 4.1.10 "Implicit Conversions" are applied to
|
||||
produce matching types. ...
|
||||
|
||||
|
||||
Modify Section 6.1, Function Definitions, p. 63
|
||||
|
||||
(modify description of overloading, beginning at the top of p. 64)
|
||||
|
||||
Function names can be overloaded. The same function name can be used for
|
||||
multiple functions, as long as the parameter types differ. If a function
|
||||
name is declared twice with the same parameter types, then the return
|
||||
types and all qualifiers must also match, and it is the same function
|
||||
being declared. For example,
|
||||
|
||||
vec4 f(in vec4 x, out vec4 y); // (A)
|
||||
vec4 f(in vec4 x, out uvec4 y); // (B) okay, different argument type
|
||||
vec4 f(in ivec4 x, out uvec4 y); // (C) okay, different argument type
|
||||
|
||||
int f(in vec4 x, out ivec4 y); // error, only return type differs
|
||||
vec4 f(in vec4 x, in vec4 y); // error, only qualifier differs
|
||||
vec4 f(const in vec4 x, out vec4 y); // error, only qualifier differs
|
||||
|
||||
When function calls are resolved, an exact type match for all the
|
||||
arguments is sought. If an exact match is found, all other functions are
|
||||
ignored, and the exact match is used. If no exact match is found, then
|
||||
the implicit conversions in Section 4.1.10 (Implicit Conversions) will be
|
||||
applied to find a match. Mismatched types on input parameters (in or
|
||||
inout or default) must have a conversion from the calling argument type
|
||||
to the formal parameter type. Mismatched types on output parameters (out
|
||||
or inout) must have a conversion from the formal parameter type to the
|
||||
calling argument type.
|
||||
|
||||
If implicit conversions can be used to find more than one matching
|
||||
function, a single best-matching function is sought. To determine a best
|
||||
match, the conversions between calling argument and formal parameter
|
||||
types are compared for each function argument and pair of matching
|
||||
functions. After these comparisons are performed, each pair of matching
|
||||
functions are compared. A function definition A is considered a better
|
||||
match than function definition B if:
|
||||
|
||||
* for at least one function argument, the conversion for that argument
|
||||
in A is better than the corresponding conversion in B; and
|
||||
|
||||
* there is no function argument for which the conversion in B is better
|
||||
than the corresponding conversion in A.
|
||||
|
||||
If a single function definition is considered a better match than every
|
||||
other matching function definition, it will be used. Otherwise, a
|
||||
semantic error occurs and the shader will fail to compile.
|
||||
|
||||
To determine whether the conversion for a single argument in one match is
|
||||
better than that for another match, the following rules are applied, in
|
||||
order:
|
||||
|
||||
1. An exact match is better than a match involving any implicit
|
||||
conversion.
|
||||
|
||||
2. A match involving an implicit conversion from float to double is
|
||||
better than a match involving any other implicit conversion.
|
||||
|
||||
3. A match involving an implicit conversion from either int or uint to
|
||||
float is better than a match involving an implicit conversion from
|
||||
either int or uint to double.
|
||||
|
||||
If none of the rules above apply to a particular pair of conversions,
|
||||
neither conversion is considered better than the other.
|
||||
|
||||
For the function prototypes (A), (B), and (C) above, the following
|
||||
examples show how the rules apply to different sets of calling argument
|
||||
types:
|
||||
|
||||
f(vec4, vec4); // exact match of vec4 f(in vec4 x, out vec4 y)
|
||||
f(vec4, uvec4); // exact match of vec4 f(in vec4 x, out ivec4 y)
|
||||
f(vec4, ivec4); // matched to vec4 f(in vec4 x, out vec4 y)
|
||||
// (C) not relevant, can't convert vec4 to
|
||||
// ivec4. (A) better than (B) for 2nd
|
||||
// argument (rule 2), same on first argument.
|
||||
f(ivec4, vec4); // NOT matched. All three match by implicit
|
||||
// conversion. (C) is better than (A) and (B)
|
||||
// on the first argument. (A) is better than
|
||||
// (B) and (C).
|
||||
|
||||
|
||||
Modify Section 8.3, Common Functions, p. 84
|
||||
|
||||
(add support for single-precision frexp and ldexp functions)
|
||||
|
||||
Syntax:
|
||||
|
||||
genType frexp(genType x, out genIType exp);
|
||||
genType ldexp(genType x, in genIType exp);
|
||||
|
||||
The function frexp() splits each single-precision floating-point number in
|
||||
<x> into a binary significand, a floating-point number in the range [0.5,
|
||||
1.0), and an integral exponent of two, such that:
|
||||
|
||||
x = significand * 2 ^ exponent
|
||||
|
||||
The significand is returned by the function; the exponent is returned in
|
||||
the parameter <exp>. For a floating-point value of zero, the significant
|
||||
and exponent are both zero. For a floating-point value that is an
|
||||
infinity or is not a number, the results of frexp() are undefined.
|
||||
|
||||
If the input <x> is a vector, this operation is performed in a
|
||||
component-wise manner; the value returned by the function and the value
|
||||
written to <exp> are vectors with the same number of components as <x>.
|
||||
|
||||
The function ldexp() builds a single-precision floating-point number from
|
||||
each significand component in <x> and the corresponding integral exponent
|
||||
of two in <exp>, returning:
|
||||
|
||||
significand * 2 ^ exponent
|
||||
|
||||
If this product is too large to be represented as a single-precision
|
||||
floating-point value, the result is considered undefined.
|
||||
|
||||
If the input <x> is a vector, this operation is performed in a
|
||||
component-wise manner; the value passed in <exp> and returned by the
|
||||
function are vectors with the same number of components as <x>.
|
||||
|
||||
|
||||
(add support for new integer built-in functions)
|
||||
|
||||
Syntax:
|
||||
|
||||
genIType bitfieldExtract(genIType value, int offset, int bits);
|
||||
genUType bitfieldExtract(genUType value, int offset, int bits);
|
||||
|
||||
genIType bitfieldInsert(genIType base, genIType insert, int offset,
|
||||
int bits);
|
||||
genUType bitfieldInsert(genUType base, genUType insert, int offset,
|
||||
int bits);
|
||||
|
||||
genIType bitfieldReverse(genIType value);
|
||||
genUType bitfieldReverse(genUType value);
|
||||
|
||||
genIType bitCount(genIType value);
|
||||
genIType bitCount(genUType value);
|
||||
|
||||
genIType findLSB(genIType value);
|
||||
genIType findLSB(genUType value);
|
||||
|
||||
genIType findMSB(genIType value);
|
||||
genIType findMSB(genUType value);
|
||||
|
||||
The function bitfieldExtract() extracts bits <offset> through
|
||||
<offset>+<bits>-1 from each component in <value>, returning them in the
|
||||
least significant bits of corresponding component of the result. For
|
||||
unsigned data types, the most significant bits of the result will be set
|
||||
to zero. For signed data types, the most significant bits will be set to
|
||||
the value of bit <offset>+<base>-1. If <bits> is zero, the result will be
|
||||
zero. The result will be undefined if <offset> or <bits> is negative, or
|
||||
if the sum of <offset> and <bits> is greater than the number of bits used
|
||||
to store the operand. Note that for vector versions of bitfieldExtract(),
|
||||
a single pair of <offset> and <bits> values is shared for all components.
|
||||
|
||||
The function bitfieldInsert() inserts the <bits> least significant bits of
|
||||
each component of <insert> into the corresponding component of <base>.
|
||||
The result will have bits numbered <offset> through <offset>+<bits>-1
|
||||
taken from bits 0 through <bits>-1 of <insert>, and all other bits taken
|
||||
directly from the corresponding bits of <base>. If <bits> is zero, the
|
||||
result will simply be <base>. The result will be undefined if <offset> or
|
||||
<bits> is negative, or if the sum of <offset> and <bits> is greater than
|
||||
the number of bits used to store the operand. Note that for vector
|
||||
versions of bitfieldInsert(), a single pair of <offset> and <bits> values
|
||||
is shared for all components.
|
||||
|
||||
The function bitfieldReverse() reverses the bits of <value>. The bit
|
||||
numbered <n> of the result will be taken from bit (<bits>-1)-<n> of
|
||||
<value>, where <bits> is the total number of bits used to represent
|
||||
<value>.
|
||||
|
||||
The function bitCount() returns the number of one bits in the binary
|
||||
representation of <value>.
|
||||
|
||||
The function findLSB() returns the bit number of the least significant one
|
||||
bit in the binary representation of <value>. If <value> is zero, -1 will
|
||||
be returned.
|
||||
|
||||
The function findMSB() returns the bit number of the most significant bit
|
||||
in the binary representation of <value>. For positive integers, the
|
||||
result will be the bit number of the most significant one bit. For
|
||||
negative integers, the result will be the bit number of the most
|
||||
significant zero bit. For a <value> of zero or negative one, -1 will be
|
||||
returned.
|
||||
|
||||
|
||||
(support for unsigned integer add/subtract with carry-out)
|
||||
|
||||
Syntax:
|
||||
|
||||
genUType uaddCarry(genUType x, genUType y, out genUType carry);
|
||||
genUType usubBorrow(genUType x, genUType y, out genUType borrow);
|
||||
|
||||
The function uaddCarry() adds 32-bit unsigned integers or vectors <x> and
|
||||
<y>, returning the sum modulo 2^32. The value <carry> is set to zero if
|
||||
the sum was less than 2^32, or one otherwise.
|
||||
|
||||
The function usubBorrow() subtracts the 32-bit unsigned integer or vector
|
||||
<y> from <x>, returning the difference if non-negative or 2^32 plus the
|
||||
difference, otherwise. The value <borrow> is set to zero if x >= y, or
|
||||
one otherwise.
|
||||
|
||||
|
||||
(support for signed and unsigned multiplies, with 32-bit inputs and a
|
||||
64-bit result spanning two 32-bit outputs)
|
||||
|
||||
Syntax:
|
||||
|
||||
void umulExtended(genUType x, genUType y, out genUType msb,
|
||||
out genUType lsb);
|
||||
void imulExtended(genIType x, genIType y, out genIType msb,
|
||||
out genIType lsb);
|
||||
|
||||
The functions umulExtended() and imulExtended() multiply 32-bit unsigned
|
||||
or signed integers or vectors <x> and <y>, producing a 64-bit result. The
|
||||
32 least significant bits are returned in <lsb>; the 32 most significant
|
||||
bits are returned in <msb>.
|
||||
|
||||
|
||||
GLX Protocol
|
||||
|
||||
None.
|
||||
|
||||
Dependencies on ARB_gpu_shader_fp64
|
||||
|
||||
This extension, ARB_gpu_shader_fp64, and NV_gpu_shader5 all modify the set
|
||||
of implicit conversions supported in the OpenGL Shading Language. If more
|
||||
than one of these extensions is supported, an expression of one type may
|
||||
be converted to another type if that conversion is allowed by any of these
|
||||
specifications.
|
||||
|
||||
If ARB_gpu_shader_fp64 or a similar extension introducing new data types
|
||||
is not supported, the function overloading rule in the GLSL specification
|
||||
preferring promotion an input parameters to smaller type to a larger type
|
||||
is never applicable, as all data types are of the same size. That rule
|
||||
and the example referring to "double" should be removed.
|
||||
|
||||
|
||||
Dependencies on NV_gpu_shader5
|
||||
|
||||
This extension, ARB_gpu_shader_fp64, and NV_gpu_shader5 all modify the set
|
||||
of implicit conversions supported in the OpenGL Shading Language. If more
|
||||
than one of these extensions is supported, an expression of one type may
|
||||
be converted to another type if that conversion is allowed by any of these
|
||||
specifications.
|
||||
|
||||
If NV_gpu_shader5 is supported, integer data types are supported with four
|
||||
different precisions (8-, 16, 32-, and 64-bit) and floating-point data
|
||||
types are supported with three different precisions (16-, 32-, and
|
||||
64-bit). The extension adds the following rule for output parameters,
|
||||
which is similar to the one present in this extension for input
|
||||
parameters:
|
||||
|
||||
5. If the formal parameters in both matches are output parameters, a
|
||||
conversion from a type with a larger number of bits per component is
|
||||
better than a conversion from a type with a smaller number of bits
|
||||
per component. For example, a conversion from an "int16_t" formal
|
||||
parameter type to "int" is better than one from an "int8_t" formal
|
||||
parameter type to "int".
|
||||
|
||||
Such a rule is not provided in this extension because there is no
|
||||
combination of types in this extension and ARB_gpu_shader_fp64 where this
|
||||
rule has any effect.
|
||||
|
||||
|
||||
Errors
|
||||
|
||||
None
|
||||
|
||||
|
||||
New State
|
||||
|
||||
None
|
||||
|
||||
New Implementation Dependent State
|
||||
|
||||
None
|
||||
|
||||
Issues
|
||||
|
||||
(1) What should this extension be called?
|
||||
|
||||
UNRESOLVED. This extension borrows from GL_ARB_gpu_shader5, so creating
|
||||
some sort of a play on that name would be viable. However, nothing in
|
||||
this extension should require SM5 hardware, so such a name would be a
|
||||
little misleading and weird.
|
||||
|
||||
Since the primary purpose is to add integer related functions from
|
||||
GL_ARB_gpu_shader5, call this extension GL_MESA_shader_integer_functions
|
||||
for now.
|
||||
|
||||
(2) Why is some of the formatting in this extension weird?
|
||||
|
||||
RESOLVED: This extension is formatted to minimize the differences (as
|
||||
reported by 'diff --side-by-side -W180') with the GL_ARB_gpu_shader5
|
||||
specification.
|
||||
|
||||
(3) Should ldexp and frexp be included?
|
||||
|
||||
RESOLVED: Yes. Few GPUs have native instructions to implement these
|
||||
functions. These are generally implemented using existing GLSL built-in
|
||||
functions and the other functions provided by this extension.
|
||||
|
||||
(4) Should umulExtended and imulExtended be included?
|
||||
|
||||
RESOLVED: Yes. These functions should be implementable on any GPU that
|
||||
can support the rest of this extension, but the implementation may be
|
||||
complex. The implementation on a GPU that only supports 32bit x 32bit =
|
||||
32bit multiplication would be quite expensive. However, many GPUs
|
||||
(including OpenGL 4.0 GPUs that already support this function) have a
|
||||
32bit x 16bit = 48bit multiplier. The implementation there is only
|
||||
trivially more expensive than regular 32bit multiplication.
|
||||
|
||||
(5) Should the pack and unpack functions be included?
|
||||
|
||||
RESOLVED: No. These functions are already available via
|
||||
GL_ARB_shading_language_packing.
|
||||
|
||||
(6) Should the "BitsTo" functions be included?
|
||||
|
||||
RESOLVED: No. These functions are already available via
|
||||
GL_ARB_shader_bit_encoding.
|
||||
|
||||
Revision History
|
||||
|
||||
Rev. Date Author Changes
|
||||
---- ----------- -------- -----------------------------------------
|
||||
2 7-Jul-2016 idr Fix typo in #extension line
|
||||
1 20-Jun-2016 idr Initial version based on GL_ARB_gpu_shader5.
|
@@ -1,18 +1,10 @@
|
||||
The definitive source for enum values and reserved ranges are the XML files in
|
||||
the Khronos registry:
|
||||
|
||||
https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/egl.xml
|
||||
https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/gl.xml
|
||||
https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/glx.xml
|
||||
https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/wgl.xml
|
||||
See the OpenGL ARB enum registry at http://www.opengl.org/registry/api/enum.spec
|
||||
|
||||
GL blocks allocated to Mesa:
|
||||
Blocks allocated to Mesa:
|
||||
0x8750-0x875F
|
||||
0x8BB0-0x8BBF
|
||||
|
||||
EGL blocks allocated to Mesa:
|
||||
0x31D0-0x31DF
|
||||
0x3290-0x329F
|
||||
|
||||
GL_MESA_packed_depth_stencil
|
||||
GL_DEPTH_STENCIL_MESA 0x8750
|
||||
@@ -21,7 +13,7 @@ GL_MESA_packed_depth_stencil
|
||||
GL_UNSIGNED_SHORT_15_1_MESA 0x8753
|
||||
GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
|
||||
|
||||
GL_MESA_trace:
|
||||
GL_MESA_trace.spec:
|
||||
GL_TRACE_ALL_BITS_MESA 0xFFFF
|
||||
GL_TRACE_OPERATIONS_BIT_MESA 0x0001
|
||||
GL_TRACE_PRIMITIVES_BIT_MESA 0x0002
|
||||
@@ -32,12 +24,12 @@ GL_MESA_trace:
|
||||
GL_TRACE_MASK_MESA 0x8755
|
||||
GL_TRACE_NAME_MESA 0x8756
|
||||
|
||||
GL_MESA_ycbcr_texture:
|
||||
MESA_ycbcr_texture.spec:
|
||||
GL_YCBCR_MESA 0x8757
|
||||
GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */
|
||||
GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */
|
||||
|
||||
GL_MESA_pack_invert:
|
||||
GL_MESA_pack_invert.spec
|
||||
GL_PACK_INVERT_MESA 0x8758
|
||||
|
||||
GL_MESA_shader_debug.spec: (obsolete)
|
||||
@@ -45,7 +37,7 @@ GL_MESA_shader_debug.spec: (obsolete)
|
||||
GL_DEBUG_PRINT_MESA 0x875A
|
||||
GL_DEBUG_ASSERT_MESA 0x875B
|
||||
|
||||
GL_MESA_program_debug: (obsolete)
|
||||
GL_MESA_program_debug.spec: (obsolete)
|
||||
GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x????
|
||||
GL_VERTEX_PROGRAM_CALLBACK_MESA 0x????
|
||||
GL_FRAGMENT_PROGRAM_POSITION_MESA 0x????
|
||||
@@ -63,24 +55,3 @@ GL_MESAX_texture_stack:
|
||||
GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
|
||||
GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
|
||||
|
||||
EGL_MESA_drm_image
|
||||
EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
|
||||
EGL_DRM_BUFFER_USE_MESA 0x31D1
|
||||
EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
|
||||
EGL_DRM_BUFFER_MESA 0x31D3
|
||||
EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
|
||||
|
||||
EGL_MESA_platform_gbm
|
||||
EGL_PLATFORM_GBM_MESA 0x31D7
|
||||
|
||||
EGL_MESA_platform_surfaceless
|
||||
EGL_PLATFORM_SURFACELESS_MESA 0x31DD
|
||||
|
||||
EGL_WL_bind_wayland_display
|
||||
EGL_TEXTURE_FORMAT 0x3080
|
||||
EGL_WAYLAND_BUFFER_WL 0x31D5
|
||||
EGL_WAYLAND_PLANE_WL 0x31D6
|
||||
EGL_TEXTURE_Y_U_V_WL 0x31D7
|
||||
EGL_TEXTURE_Y_UV_WL 0x31D8
|
||||
EGL_TEXTURE_Y_XUXV_WL 0x31D9
|
||||
EGL_WAYLAND_Y_INVERTED_WL 0x31DB
|
||||
|
@@ -199,7 +199,7 @@ This incurs a small performance penalty.
|
||||
|
||||
<h2>Extensions</h2>
|
||||
<p>
|
||||
The following Mesa-specific extensions are implemented in the Xlib driver.
|
||||
The following MESA-specific extensions are implemented in the Xlib driver.
|
||||
</p>
|
||||
|
||||
<h3>GLX_MESA_pixmap_colormap</h3>
|
||||
|
@@ -1,2 +0,0 @@
|
||||
[*.h]
|
||||
indent_style = tab
|
@@ -6,7 +6,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
** Copyright (c) 2013-2014 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
@@ -38,7 +38,7 @@ extern "C" {
|
||||
|
||||
#include <EGL/eglplatform.h>
|
||||
|
||||
#define EGL_EGLEXT_VERSION 20160809
|
||||
#define EGL_EGLEXT_VERSION 20150508
|
||||
|
||||
/* Generated C header for:
|
||||
* API: egl
|
||||
@@ -99,33 +99,6 @@ EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type,
|
||||
#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
|
||||
#endif /* EGL_KHR_create_context_no_error */
|
||||
|
||||
#ifndef EGL_KHR_debug
|
||||
#define EGL_KHR_debug 1
|
||||
typedef void *EGLLabelKHR;
|
||||
typedef void *EGLObjectKHR;
|
||||
typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
|
||||
#define EGL_OBJECT_THREAD_KHR 0x33B0
|
||||
#define EGL_OBJECT_DISPLAY_KHR 0x33B1
|
||||
#define EGL_OBJECT_CONTEXT_KHR 0x33B2
|
||||
#define EGL_OBJECT_SURFACE_KHR 0x33B3
|
||||
#define EGL_OBJECT_IMAGE_KHR 0x33B4
|
||||
#define EGL_OBJECT_SYNC_KHR 0x33B5
|
||||
#define EGL_OBJECT_STREAM_KHR 0x33B6
|
||||
#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
|
||||
#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA
|
||||
#define EGL_DEBUG_MSG_WARN_KHR 0x33BB
|
||||
#define EGL_DEBUG_MSG_INFO_KHR 0x33BC
|
||||
#define EGL_DEBUG_CALLBACK_KHR 0x33B8
|
||||
typedef EGLint (EGLAPIENTRYP PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib *value);
|
||||
typedef EGLint (EGLAPIENTRYP PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLint EGLAPIENTRY eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryDebugKHR (EGLint attribute, EGLAttrib *value);
|
||||
EGLAPI EGLint EGLAPIENTRY eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
|
||||
#endif
|
||||
#endif /* EGL_KHR_debug */
|
||||
|
||||
#ifndef EGL_KHR_fence_sync
|
||||
#define EGL_KHR_fence_sync 1
|
||||
typedef khronos_utime_nanoseconds_t EGLTimeKHR;
|
||||
@@ -250,16 +223,6 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface s
|
||||
#endif
|
||||
#endif /* EGL_KHR_lock_surface3 */
|
||||
|
||||
#ifndef EGL_KHR_mutable_render_buffer
|
||||
#define EGL_KHR_mutable_render_buffer 1
|
||||
#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
|
||||
#endif /* EGL_KHR_mutable_render_buffer */
|
||||
|
||||
#ifndef EGL_KHR_no_config_context
|
||||
#define EGL_KHR_no_config_context 1
|
||||
#define EGL_NO_CONFIG_KHR ((EGLConfig)0)
|
||||
#endif /* EGL_KHR_no_config_context */
|
||||
|
||||
#ifndef EGL_KHR_partial_update
|
||||
#define EGL_KHR_partial_update 1
|
||||
#define EGL_BUFFER_AGE_KHR 0x313D
|
||||
@@ -439,28 +402,11 @@ EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobF
|
||||
#endif
|
||||
#endif /* EGL_ANDROID_blob_cache */
|
||||
|
||||
#ifndef EGL_ANDROID_create_native_client_buffer
|
||||
#define EGL_ANDROID_create_native_client_buffer 1
|
||||
#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
|
||||
#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
|
||||
#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
|
||||
#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
|
||||
typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint *attrib_list);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID (const EGLint *attrib_list);
|
||||
#endif
|
||||
#endif /* EGL_ANDROID_create_native_client_buffer */
|
||||
|
||||
#ifndef EGL_ANDROID_framebuffer_target
|
||||
#define EGL_ANDROID_framebuffer_target 1
|
||||
#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
|
||||
#endif /* EGL_ANDROID_framebuffer_target */
|
||||
|
||||
#ifndef EGL_ANDROID_front_buffer_auto_refresh
|
||||
#define EGL_ANDROID_front_buffer_auto_refresh 1
|
||||
#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
|
||||
#endif /* EGL_ANDROID_front_buffer_auto_refresh */
|
||||
|
||||
#ifndef EGL_ANDROID_image_native_buffer
|
||||
#define EGL_ANDROID_image_native_buffer 1
|
||||
#define EGL_NATIVE_BUFFER_ANDROID 0x3140
|
||||
@@ -478,15 +424,6 @@ EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR
|
||||
#endif
|
||||
#endif /* EGL_ANDROID_native_fence_sync */
|
||||
|
||||
#ifndef EGL_ANDROID_presentation_time
|
||||
#define EGL_ANDROID_presentation_time 1
|
||||
typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
|
||||
#endif
|
||||
#endif /* EGL_ANDROID_presentation_time */
|
||||
|
||||
#ifndef EGL_ANDROID_recordable
|
||||
#define EGL_ANDROID_recordable 1
|
||||
#define EGL_RECORDABLE_ANDROID 0x3142
|
||||
@@ -679,13 +616,9 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy,
|
||||
#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
|
||||
#endif /* EGL_EXT_platform_x11 */
|
||||
|
||||
#ifndef EGL_EXT_protected_content
|
||||
#define EGL_EXT_protected_content 1
|
||||
#define EGL_PROTECTED_CONTENT_EXT 0x32C0
|
||||
#endif /* EGL_EXT_protected_content */
|
||||
|
||||
#ifndef EGL_EXT_protected_surface
|
||||
#define EGL_EXT_protected_surface 1
|
||||
#define EGL_PROTECTED_CONTENT_EXT 0x32C0
|
||||
#endif /* EGL_EXT_protected_surface */
|
||||
|
||||
#ifndef EGL_EXT_stream_consumer_egloutput
|
||||
@@ -764,12 +697,6 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfi
|
||||
#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
|
||||
#endif /* EGL_IMG_context_priority */
|
||||
|
||||
#ifndef EGL_IMG_image_plane_attribs
|
||||
#define EGL_IMG_image_plane_attribs 1
|
||||
#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
|
||||
#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
|
||||
#endif /* EGL_IMG_image_plane_attribs */
|
||||
|
||||
#ifndef EGL_MESA_drm_image
|
||||
#define EGL_MESA_drm_image 1
|
||||
#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
|
||||
@@ -885,48 +812,6 @@ EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface sur
|
||||
#endif
|
||||
#endif /* EGL_NV_post_sub_buffer */
|
||||
|
||||
#ifndef EGL_NV_robustness_video_memory_purge
|
||||
#define EGL_NV_robustness_video_memory_purge 1
|
||||
#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
|
||||
#endif /* EGL_NV_robustness_video_memory_purge */
|
||||
|
||||
#ifndef EGL_NV_stream_consumer_gltexture_yuv
|
||||
#define EGL_NV_stream_consumer_gltexture_yuv 1
|
||||
#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
|
||||
#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
|
||||
#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLAttrib *attrib_list);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, EGLAttrib *attrib_list);
|
||||
#endif
|
||||
#endif /* EGL_NV_stream_consumer_gltexture_yuv */
|
||||
|
||||
#ifndef EGL_NV_stream_metadata
|
||||
#define EGL_NV_stream_metadata 1
|
||||
#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
|
||||
#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
|
||||
#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
|
||||
#define EGL_PRODUCER_METADATA_NV 0x3253
|
||||
#define EGL_CONSUMER_METADATA_NV 0x3254
|
||||
#define EGL_PENDING_METADATA_NV 0x3328
|
||||
#define EGL_METADATA0_SIZE_NV 0x3255
|
||||
#define EGL_METADATA1_SIZE_NV 0x3256
|
||||
#define EGL_METADATA2_SIZE_NV 0x3257
|
||||
#define EGL_METADATA3_SIZE_NV 0x3258
|
||||
#define EGL_METADATA0_TYPE_NV 0x3259
|
||||
#define EGL_METADATA1_TYPE_NV 0x325A
|
||||
#define EGL_METADATA2_TYPE_NV 0x325B
|
||||
#define EGL_METADATA3_TYPE_NV 0x325C
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBNVPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
|
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
|
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
|
||||
#endif
|
||||
#endif /* EGL_NV_stream_metadata */
|
||||
|
||||
#ifndef EGL_NV_stream_sync
|
||||
#define EGL_NV_stream_sync 1
|
||||
#define EGL_SYNC_NEW_FRAME_NV 0x321F
|
||||
|
@@ -84,11 +84,6 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOK) (EGLDisplay dpy, EG
|
||||
#define EGL_NO_CONFIG_MESA ((EGLConfig)0)
|
||||
#endif
|
||||
|
||||
#ifndef EGL_MESA_platform_surfaceless
|
||||
#define EGL_MESA_platform_surfaceless 1
|
||||
#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD
|
||||
#endif /* EGL_MESA_platform_surfaceless */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -33,7 +33,7 @@ extern "C" {
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 33061 $ on $Date: 2016-07-14 20:14:13 -0400 (Thu, 14 Jul 2016) $
|
||||
** Khronos $Revision: 32957 $ on $Date: 2016-06-09 17:03:08 -0400 (Thu, 09 Jun 2016) $
|
||||
*/
|
||||
|
||||
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
||||
@@ -53,7 +53,7 @@ extern "C" {
|
||||
#define GLAPI extern
|
||||
#endif
|
||||
|
||||
#define GL_GLEXT_VERSION 20160714
|
||||
#define GL_GLEXT_VERSION 20160609
|
||||
|
||||
/* Generated C header for:
|
||||
* API: gl
|
||||
@@ -8836,11 +8836,6 @@ GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRG
|
||||
#define GL_INTERLACE_READ_INGR 0x8568
|
||||
#endif /* GL_INGR_interlace_read */
|
||||
|
||||
#ifndef GL_INTEL_conservative_rasterization
|
||||
#define GL_INTEL_conservative_rasterization 1
|
||||
#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
|
||||
#endif /* GL_INTEL_conservative_rasterization */
|
||||
|
||||
#ifndef GL_INTEL_fragment_shader_ordering
|
||||
#define GL_INTEL_fragment_shader_ordering 1
|
||||
#endif /* GL_INTEL_fragment_shader_ordering */
|
||||
|
@@ -6,7 +6,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
** Copyright (c) 2013-2014 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
@@ -33,10 +33,10 @@ extern "C" {
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 32889 $ on $Date: 2016-05-31 07:09:51 -0400 (Tue, 31 May 2016) $
|
||||
** Khronos $Revision: 27684 $ on $Date: 2014-08-11 01:21:35 -0700 (Mon, 11 Aug 2014) $
|
||||
*/
|
||||
|
||||
#define GLX_GLXEXT_VERSION 20160531
|
||||
#define GLX_GLXEXT_VERSION 20140810
|
||||
|
||||
/* Generated C header for:
|
||||
* API: glx
|
||||
@@ -250,26 +250,6 @@ __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *procName);
|
||||
#define GLX_GPU_NUM_SIMD_AMD 0x21A6
|
||||
#define GLX_GPU_NUM_RB_AMD 0x21A7
|
||||
#define GLX_GPU_NUM_SPI_AMD 0x21A8
|
||||
typedef unsigned int ( *PFNGLXGETGPUIDSAMDPROC) (unsigned int maxCount, unsigned int *ids);
|
||||
typedef int ( *PFNGLXGETGPUINFOAMDPROC) (unsigned int id, int property, GLenum dataType, unsigned int size, void *data);
|
||||
typedef unsigned int ( *PFNGLXGETCONTEXTGPUIDAMDPROC) (GLXContext ctx);
|
||||
typedef GLXContext ( *PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC) (unsigned int id, GLXContext share_list);
|
||||
typedef GLXContext ( *PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (unsigned int id, GLXContext share_context, const int *attribList);
|
||||
typedef Bool ( *PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC) (GLXContext ctx);
|
||||
typedef Bool ( *PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (GLXContext ctx);
|
||||
typedef GLXContext ( *PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
|
||||
typedef void ( *PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC) (GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
||||
unsigned int glXGetGPUIDsAMD (unsigned int maxCount, unsigned int *ids);
|
||||
int glXGetGPUInfoAMD (unsigned int id, int property, GLenum dataType, unsigned int size, void *data);
|
||||
unsigned int glXGetContextGPUIDAMD (GLXContext ctx);
|
||||
GLXContext glXCreateAssociatedContextAMD (unsigned int id, GLXContext share_list);
|
||||
GLXContext glXCreateAssociatedContextAttribsAMD (unsigned int id, GLXContext share_context, const int *attribList);
|
||||
Bool glXDeleteAssociatedContextAMD (GLXContext ctx);
|
||||
Bool glXMakeAssociatedContextCurrentAMD (GLXContext ctx);
|
||||
GLXContext glXGetCurrentAssociatedContextAMD (void);
|
||||
void glXBlitContextFramebufferAMD (GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
#endif
|
||||
#endif /* GLX_AMD_gpu_association */
|
||||
|
||||
#ifndef GLX_EXT_buffer_age
|
||||
@@ -317,11 +297,6 @@ void glXFreeContextEXT (Display *dpy, GLXContext context);
|
||||
#endif
|
||||
#endif /* GLX_EXT_import_context */
|
||||
|
||||
#ifndef GLX_EXT_libglvnd
|
||||
#define GLX_EXT_libglvnd 1
|
||||
#define GLX_VENDOR_NAMES_EXT 0x20F6
|
||||
#endif /* GLX_EXT_libglvnd */
|
||||
|
||||
#ifndef GLX_EXT_stereo_tree
|
||||
#define GLX_EXT_stereo_tree 1
|
||||
typedef struct {
|
||||
@@ -548,11 +523,6 @@ int glXBindVideoDeviceNV (Display *dpy, unsigned int video_slot, unsigned int vi
|
||||
#endif
|
||||
#endif /* GLX_NV_present_video */
|
||||
|
||||
#ifndef GLX_NV_robustness_video_memory_purge
|
||||
#define GLX_NV_robustness_video_memory_purge 1
|
||||
#define GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7
|
||||
#endif /* GLX_NV_robustness_video_memory_purge */
|
||||
|
||||
#ifndef GLX_NV_swap_group
|
||||
#define GLX_NV_swap_group 1
|
||||
typedef Bool ( *PFNGLXJOINSWAPGROUPNVPROC) (Display *dpy, GLXDrawable drawable, GLuint group);
|
||||
|
@@ -1094,7 +1094,7 @@ struct __DRIdri2ExtensionRec {
|
||||
* extensions.
|
||||
*/
|
||||
#define __DRI_IMAGE "DRI_IMAGE"
|
||||
#define __DRI_IMAGE_VERSION 13
|
||||
#define __DRI_IMAGE_VERSION 12
|
||||
|
||||
/**
|
||||
* These formats correspond to the similarly named MESA_FORMAT_*
|
||||
@@ -1121,7 +1121,6 @@ struct __DRIdri2ExtensionRec {
|
||||
#define __DRI_IMAGE_FORMAT_XRGB2101010 0x1009
|
||||
#define __DRI_IMAGE_FORMAT_ARGB2101010 0x100a
|
||||
#define __DRI_IMAGE_FORMAT_SARGB8 0x100b
|
||||
#define __DRI_IMAGE_FORMAT_ARGB1555 0x100c
|
||||
|
||||
#define __DRI_IMAGE_USE_SHARE 0x0001
|
||||
#define __DRI_IMAGE_USE_SCANOUT 0x0002
|
||||
@@ -1149,7 +1148,6 @@ struct __DRIdri2ExtensionRec {
|
||||
|
||||
#define __DRI_IMAGE_FOURCC_R8 0x20203852
|
||||
#define __DRI_IMAGE_FOURCC_GR88 0x38385247
|
||||
#define __DRI_IMAGE_FOURCC_ARGB1555 0x35315241
|
||||
#define __DRI_IMAGE_FOURCC_RGB565 0x36314752
|
||||
#define __DRI_IMAGE_FOURCC_ARGB8888 0x34325241
|
||||
#define __DRI_IMAGE_FOURCC_XRGB8888 0x34325258
|
||||
@@ -1210,8 +1208,6 @@ struct __DRIdri2ExtensionRec {
|
||||
#define __DRI_IMAGE_ATTRIB_FOURCC 0x2008 /* available in versions 11 */
|
||||
#define __DRI_IMAGE_ATTRIB_NUM_PLANES 0x2009 /* available in versions 11 */
|
||||
|
||||
#define __DRI_IMAGE_ATTRIB_OFFSET 0x200A /* available in versions 13 */
|
||||
|
||||
enum __DRIYUVColorSpace {
|
||||
__DRI_YUV_COLOR_SPACE_UNDEFINED = 0,
|
||||
__DRI_YUV_COLOR_SPACE_ITU_REC601 = 0x327F,
|
||||
|
@@ -58,8 +58,8 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* Forward declarations to avoid inclusion of GL/glx.h */
|
||||
struct _XDisplay;
|
||||
struct __GLXcontextRec;
|
||||
typedef struct _XDisplay Display;
|
||||
typedef struct __GLXcontextRec *GLXContext;
|
||||
|
||||
/* Forward declarations to avoid inclusion of EGL/egl.h */
|
||||
typedef void *EGLDisplay;
|
||||
@@ -97,7 +97,7 @@ struct mesa_glinterop_device_info {
|
||||
/* The callee will overwrite it if it supports a lower version.
|
||||
*
|
||||
* The caller should check the value and access up-to the version supported
|
||||
* by the callee.
|
||||
* by the the callee.
|
||||
*/
|
||||
/* NOTE: Do not use the MESA_GLINTEROP_DEVICE_INFO_VERSION macro */
|
||||
uint32_t version;
|
||||
@@ -125,7 +125,7 @@ struct mesa_glinterop_export_in {
|
||||
/* The callee will overwrite it if it supports a lower version.
|
||||
*
|
||||
* The caller should check the value and access up-to the version supported
|
||||
* by the callee.
|
||||
* by the the callee.
|
||||
*/
|
||||
/* NOTE: Do not use the MESA_GLINTEROP_EXPORT_IN_VERSION macro */
|
||||
uint32_t version;
|
||||
@@ -190,7 +190,7 @@ struct mesa_glinterop_export_out {
|
||||
/* The callee will overwrite it if it supports a lower version.
|
||||
*
|
||||
* The caller should check the value and access up-to the version supported
|
||||
* by the callee.
|
||||
* by the the callee.
|
||||
*/
|
||||
/* NOTE: Do not use the MESA_GLINTEROP_EXPORT_OUT_VERSION macro */
|
||||
uint32_t version;
|
||||
@@ -246,7 +246,7 @@ struct mesa_glinterop_export_out {
|
||||
* \return MESA_GLINTEROP_SUCCESS or MESA_GLINTEROP_* != 0 on error
|
||||
*/
|
||||
int
|
||||
MesaGLInteropGLXQueryDeviceInfo(struct _XDisplay *dpy, struct __GLXcontextRec *context,
|
||||
MesaGLInteropGLXQueryDeviceInfo(Display *dpy, GLXContext context,
|
||||
struct mesa_glinterop_device_info *out);
|
||||
|
||||
|
||||
@@ -271,7 +271,7 @@ MesaGLInteropEGLQueryDeviceInfo(EGLDisplay dpy, EGLContext context,
|
||||
* \return MESA_GLINTEROP_SUCCESS or MESA_GLINTEROP_* != 0 on error
|
||||
*/
|
||||
int
|
||||
MesaGLInteropGLXExportObject(struct _XDisplay *dpy, struct __GLXcontextRec *context,
|
||||
MesaGLInteropGLXExportObject(Display *dpy, GLXContext context,
|
||||
struct mesa_glinterop_export_in *in,
|
||||
struct mesa_glinterop_export_out *out);
|
||||
|
||||
@@ -286,11 +286,11 @@ MesaGLInteropEGLExportObject(EGLDisplay dpy, EGLContext context,
|
||||
struct mesa_glinterop_export_out *out);
|
||||
|
||||
|
||||
typedef int (PFNMESAGLINTEROPGLXQUERYDEVICEINFOPROC)(struct _XDisplay *dpy, struct __GLXcontextRec *context,
|
||||
typedef int (PFNMESAGLINTEROPGLXQUERYDEVICEINFOPROC)(Display *dpy, GLXContext context,
|
||||
struct mesa_glinterop_device_info *out);
|
||||
typedef int (PFNMESAGLINTEROPEGLQUERYDEVICEINFOPROC)(EGLDisplay dpy, EGLContext context,
|
||||
struct mesa_glinterop_device_info *out);
|
||||
typedef int (PFNMESAGLINTEROPGLXEXPORTOBJECTPROC)(struct _XDisplay *dpy, struct __GLXcontextRec *context,
|
||||
typedef int (PFNMESAGLINTEROPGLXEXPORTOBJECTPROC)(Display *dpy, GLXContext context,
|
||||
struct mesa_glinterop_export_in *in,
|
||||
struct mesa_glinterop_export_out *out);
|
||||
typedef int (PFNMESAGLINTEROPEGLEXPORTOBJECTPROC)(EGLDisplay dpy, EGLContext context,
|
||||
|
@@ -6,7 +6,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
** Copyright (c) 2013-2014 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
@@ -33,7 +33,7 @@ extern "C" {
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 32686 $ on $Date: 2016-04-19 21:08:44 -0400 (Tue, 19 Apr 2016) $
|
||||
** Khronos $Revision: 27684 $ on $Date: 2014-08-11 01:21:35 -0700 (Mon, 11 Aug 2014) $
|
||||
*/
|
||||
|
||||
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
||||
@@ -41,7 +41,7 @@ extern "C" {
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#define WGL_WGLEXT_VERSION 20160419
|
||||
#define WGL_WGLEXT_VERSION 20140810
|
||||
|
||||
/* Generated C header for:
|
||||
* API: wgl
|
||||
|
@@ -6,7 +6,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
** Copyright (c) 2013 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
@@ -33,16 +33,12 @@ extern "C" {
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 32749 $ on $Date: 2016-04-28 09:03:03 -0700 (Thu, 28 Apr 2016) $
|
||||
** Khronos $Revision: 24614 $ on $Date: 2013-12-30 04:44:46 -0800 (Mon, 30 Dec 2013) $
|
||||
*/
|
||||
|
||||
#include <GLES2/gl2platform.h>
|
||||
|
||||
#ifndef GL_APIENTRYP
|
||||
#define GL_APIENTRYP GL_APIENTRY*
|
||||
#endif
|
||||
|
||||
/* Generated on date 20160428 */
|
||||
/* Generated on date 20131230 */
|
||||
|
||||
/* Generated C header for:
|
||||
* API: gles2
|
||||
@@ -378,148 +374,6 @@ typedef khronos_uint8_t GLubyte;
|
||||
#define GL_RENDERBUFFER_BINDING 0x8CA7
|
||||
#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
|
||||
#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
|
||||
typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
|
||||
typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
|
||||
typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
|
||||
typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
|
||||
typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);
|
||||
typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
|
||||
typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
|
||||
typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
|
||||
typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
|
||||
typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
|
||||
typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
|
||||
typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices);
|
||||
typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap);
|
||||
typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
|
||||
typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
|
||||
typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);
|
||||
typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
|
||||
typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
|
||||
typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
|
||||
typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
|
||||
typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
|
||||
typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
|
||||
typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);
|
||||
typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);
|
||||
typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
|
||||
typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
|
||||
typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
|
||||
typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
|
||||
typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
|
||||
typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);
|
||||
GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
|
||||
|
@@ -6,7 +6,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
** Copyright (c) 2013-2015 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
@@ -33,14 +33,14 @@ extern "C" {
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 33080 $ on $Date: 2016-08-05 04:09:22 -0700 (Fri, 05 Aug 2016) $
|
||||
** Khronos $Revision: 32120 $ on $Date: 2015-10-15 04:27:13 -0700 (Thu, 15 Oct 2015) $
|
||||
*/
|
||||
|
||||
#ifndef GL_APIENTRYP
|
||||
#define GL_APIENTRYP GL_APIENTRY*
|
||||
#endif
|
||||
|
||||
/* Generated on date 20160805 */
|
||||
/* Generated on date 20151015 */
|
||||
|
||||
/* Generated C header for:
|
||||
* API: gles2
|
||||
@@ -52,10 +52,6 @@ extern "C" {
|
||||
* Extensions removed: _nomatch_^
|
||||
*/
|
||||
|
||||
#ifndef GL_ARB_sparse_texture2
|
||||
#define GL_ARB_sparse_texture2 1
|
||||
#endif /* GL_ARB_sparse_texture2 */
|
||||
|
||||
#ifndef GL_KHR_blend_equation_advanced
|
||||
#define GL_KHR_blend_equation_advanced 1
|
||||
#define GL_MULTIPLY_KHR 0x9294
|
||||
@@ -756,34 +752,6 @@ GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array);
|
||||
#define GL_INT_10_10_10_2_OES 0x8DF7
|
||||
#endif /* GL_OES_vertex_type_10_10_10_2 */
|
||||
|
||||
#ifndef GL_OES_viewport_array
|
||||
#define GL_OES_viewport_array 1
|
||||
#define GL_MAX_VIEWPORTS_OES 0x825B
|
||||
#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C
|
||||
#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D
|
||||
#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F
|
||||
typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
|
||||
typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v);
|
||||
typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f);
|
||||
typedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v);
|
||||
GL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
|
||||
GL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v);
|
||||
GL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v);
|
||||
GL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v);
|
||||
GL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v);
|
||||
GL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f);
|
||||
GL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data);
|
||||
#endif
|
||||
#endif /* GL_OES_viewport_array */
|
||||
|
||||
#ifndef GL_AMD_compressed_3DC_texture
|
||||
#define GL_AMD_compressed_3DC_texture 1
|
||||
#define GL_3DC_X_AMD 0x87F9
|
||||
@@ -1118,21 +1086,6 @@ GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size,
|
||||
#endif
|
||||
#endif /* GL_EXT_buffer_storage */
|
||||
|
||||
#ifndef GL_EXT_clip_cull_distance
|
||||
#define GL_EXT_clip_cull_distance 1
|
||||
#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32
|
||||
#define GL_MAX_CULL_DISTANCES_EXT 0x82F9
|
||||
#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA
|
||||
#define GL_CLIP_DISTANCE0_EXT 0x3000
|
||||
#define GL_CLIP_DISTANCE1_EXT 0x3001
|
||||
#define GL_CLIP_DISTANCE2_EXT 0x3002
|
||||
#define GL_CLIP_DISTANCE3_EXT 0x3003
|
||||
#define GL_CLIP_DISTANCE4_EXT 0x3004
|
||||
#define GL_CLIP_DISTANCE5_EXT 0x3005
|
||||
#define GL_CLIP_DISTANCE6_EXT 0x3006
|
||||
#define GL_CLIP_DISTANCE7_EXT 0x3007
|
||||
#endif /* GL_EXT_clip_cull_distance */
|
||||
|
||||
#ifndef GL_EXT_color_buffer_float
|
||||
#define GL_EXT_color_buffer_float 1
|
||||
#endif /* GL_EXT_color_buffer_float */
|
||||
@@ -1459,15 +1412,6 @@ GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLi
|
||||
#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A
|
||||
#endif /* GL_EXT_occlusion_query_boolean */
|
||||
|
||||
#ifndef GL_EXT_polygon_offset_clamp
|
||||
#define GL_EXT_polygon_offset_clamp 1
|
||||
#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
|
||||
typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GL_APICALL void GL_APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp);
|
||||
#endif
|
||||
#endif /* GL_EXT_polygon_offset_clamp */
|
||||
|
||||
#ifndef GL_EXT_post_depth_coverage
|
||||
#define GL_EXT_post_depth_coverage 1
|
||||
#endif /* GL_EXT_post_depth_coverage */
|
||||
@@ -1481,12 +1425,6 @@ GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat min
|
||||
#endif
|
||||
#endif /* GL_EXT_primitive_bounding_box */
|
||||
|
||||
#ifndef GL_EXT_protected_textures
|
||||
#define GL_EXT_protected_textures 1
|
||||
#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010
|
||||
#define GL_TEXTURE_PROTECTED_EXT 0x8BFA
|
||||
#endif /* GL_EXT_protected_textures */
|
||||
|
||||
#ifndef GL_EXT_pvrtc_sRGB
|
||||
#define GL_EXT_pvrtc_sRGB 1
|
||||
#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
|
||||
@@ -1666,10 +1604,6 @@ GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLin
|
||||
#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
|
||||
#endif /* GL_EXT_shader_framebuffer_fetch */
|
||||
|
||||
#ifndef GL_EXT_shader_group_vote
|
||||
#define GL_EXT_shader_group_vote 1
|
||||
#endif /* GL_EXT_shader_group_vote */
|
||||
|
||||
#ifndef GL_EXT_shader_implicit_conversions
|
||||
#define GL_EXT_shader_implicit_conversions 1
|
||||
#endif /* GL_EXT_shader_implicit_conversions */
|
||||
@@ -1682,10 +1616,6 @@ GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLin
|
||||
#define GL_EXT_shader_io_blocks 1
|
||||
#endif /* GL_EXT_shader_io_blocks */
|
||||
|
||||
#ifndef GL_EXT_shader_non_constant_global_initializers
|
||||
#define GL_EXT_shader_non_constant_global_initializers 1
|
||||
#endif /* GL_EXT_shader_non_constant_global_initializers */
|
||||
|
||||
#ifndef GL_EXT_shader_pixel_local_storage
|
||||
#define GL_EXT_shader_pixel_local_storage 1
|
||||
#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63
|
||||
@@ -1693,21 +1623,6 @@ GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLin
|
||||
#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64
|
||||
#endif /* GL_EXT_shader_pixel_local_storage */
|
||||
|
||||
#ifndef GL_EXT_shader_pixel_local_storage2
|
||||
#define GL_EXT_shader_pixel_local_storage2 1
|
||||
#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650
|
||||
#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size);
|
||||
typedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size);
|
||||
GL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target);
|
||||
GL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values);
|
||||
#endif
|
||||
#endif /* GL_EXT_shader_pixel_local_storage2 */
|
||||
|
||||
#ifndef GL_EXT_shader_texture_lod
|
||||
#define GL_EXT_shader_texture_lod 1
|
||||
#endif /* GL_EXT_shader_texture_lod */
|
||||
@@ -1973,39 +1888,11 @@ GL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLu
|
||||
#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4
|
||||
#endif /* GL_EXT_unpack_subimage */
|
||||
|
||||
#ifndef GL_EXT_window_rectangles
|
||||
#define GL_EXT_window_rectangles 1
|
||||
#define GL_INCLUSIVE_EXT 0x8F10
|
||||
#define GL_EXCLUSIVE_EXT 0x8F11
|
||||
#define GL_WINDOW_RECTANGLE_EXT 0x8F12
|
||||
#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
|
||||
#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
|
||||
#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
|
||||
typedef void (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box);
|
||||
#endif
|
||||
#endif /* GL_EXT_window_rectangles */
|
||||
|
||||
#ifndef GL_FJ_shader_binary_GCCSO
|
||||
#define GL_FJ_shader_binary_GCCSO 1
|
||||
#define GL_GCCSO_SHADER_BINARY_FJ 0x9260
|
||||
#endif /* GL_FJ_shader_binary_GCCSO */
|
||||
|
||||
#ifndef GL_IMG_framebuffer_downsample
|
||||
#define GL_IMG_framebuffer_downsample 1
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C
|
||||
#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D
|
||||
#define GL_DOWNSAMPLE_SCALES_IMG 0x913E
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
|
||||
GL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
|
||||
#endif
|
||||
#endif /* GL_IMG_framebuffer_downsample */
|
||||
|
||||
#ifndef GL_IMG_multisampled_render_to_texture
|
||||
#define GL_IMG_multisampled_render_to_texture 1
|
||||
#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133
|
||||
@@ -2057,11 +1944,6 @@ GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target,
|
||||
#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B
|
||||
#endif /* GL_IMG_texture_filter_cubic */
|
||||
|
||||
#ifndef GL_INTEL_conservative_rasterization
|
||||
#define GL_INTEL_conservative_rasterization 1
|
||||
#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
|
||||
#endif /* GL_INTEL_conservative_rasterization */
|
||||
|
||||
#ifndef GL_INTEL_framebuffer_CMAA
|
||||
#define GL_INTEL_framebuffer_CMAA 1
|
||||
typedef void (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void);
|
||||
@@ -2238,17 +2120,6 @@ GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybit
|
||||
#endif
|
||||
#endif /* GL_NV_conservative_raster */
|
||||
|
||||
#ifndef GL_NV_conservative_raster_pre_snap_triangles
|
||||
#define GL_NV_conservative_raster_pre_snap_triangles 1
|
||||
#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
|
||||
#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
|
||||
#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
|
||||
typedef void (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param);
|
||||
#endif
|
||||
#endif /* GL_NV_conservative_raster_pre_snap_triangles */
|
||||
|
||||
#ifndef GL_NV_copy_buffer
|
||||
#define GL_NV_copy_buffer 1
|
||||
#define GL_COPY_READ_BUFFER_NV 0x8F36
|
||||
@@ -2436,109 +2307,6 @@ GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, G
|
||||
#define GL_NV_geometry_shader_passthrough 1
|
||||
#endif /* GL_NV_geometry_shader_passthrough */
|
||||
|
||||
#ifndef GL_NV_gpu_shader5
|
||||
#define GL_NV_gpu_shader5 1
|
||||
typedef khronos_int64_t GLint64EXT;
|
||||
typedef khronos_uint64_t GLuint64EXT;
|
||||
#define GL_INT64_NV 0x140E
|
||||
#define GL_UNSIGNED_INT64_NV 0x140F
|
||||
#define GL_INT8_NV 0x8FE0
|
||||
#define GL_INT8_VEC2_NV 0x8FE1
|
||||
#define GL_INT8_VEC3_NV 0x8FE2
|
||||
#define GL_INT8_VEC4_NV 0x8FE3
|
||||
#define GL_INT16_NV 0x8FE4
|
||||
#define GL_INT16_VEC2_NV 0x8FE5
|
||||
#define GL_INT16_VEC3_NV 0x8FE6
|
||||
#define GL_INT16_VEC4_NV 0x8FE7
|
||||
#define GL_INT64_VEC2_NV 0x8FE9
|
||||
#define GL_INT64_VEC3_NV 0x8FEA
|
||||
#define GL_INT64_VEC4_NV 0x8FEB
|
||||
#define GL_UNSIGNED_INT8_NV 0x8FEC
|
||||
#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
|
||||
#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
|
||||
#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
|
||||
#define GL_UNSIGNED_INT16_NV 0x8FF0
|
||||
#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
|
||||
#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
|
||||
#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
|
||||
#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
|
||||
#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
|
||||
#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
|
||||
#define GL_FLOAT16_NV 0x8FF8
|
||||
#define GL_FLOAT16_VEC2_NV 0x8FF9
|
||||
#define GL_FLOAT16_VEC3_NV 0x8FFA
|
||||
#define GL_FLOAT16_VEC4_NV 0x8FFB
|
||||
#define GL_PATCHES 0x000E
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);
|
||||
GL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);
|
||||
GL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
|
||||
GL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
|
||||
GL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);
|
||||
GL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);
|
||||
GL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
|
||||
GL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
|
||||
GL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
GL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
|
||||
#endif
|
||||
#endif /* GL_NV_gpu_shader5 */
|
||||
|
||||
#ifndef GL_NV_image_formats
|
||||
#define GL_NV_image_formats 1
|
||||
#endif /* GL_NV_image_formats */
|
||||
@@ -2945,10 +2713,6 @@ GL_APICALL void GL_APIENTRY glResolveDepthValuesNV (void);
|
||||
#define GL_NV_sample_mask_override_coverage 1
|
||||
#endif /* GL_NV_sample_mask_override_coverage */
|
||||
|
||||
#ifndef GL_NV_shader_atomic_fp16_vector
|
||||
#define GL_NV_shader_atomic_fp16_vector 1
|
||||
#endif /* GL_NV_shader_atomic_fp16_vector */
|
||||
|
||||
#ifndef GL_NV_shader_noperspective_interpolation
|
||||
#define GL_NV_shader_noperspective_interpolation 1
|
||||
#endif /* GL_NV_shader_noperspective_interpolation */
|
||||
@@ -3015,26 +2779,6 @@ GL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index);
|
||||
#define GL_NV_viewport_array2 1
|
||||
#endif /* GL_NV_viewport_array2 */
|
||||
|
||||
#ifndef GL_NV_viewport_swizzle
|
||||
#define GL_NV_viewport_swizzle 1
|
||||
#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
|
||||
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
|
||||
#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
|
||||
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
|
||||
#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
|
||||
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
|
||||
#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
|
||||
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
|
||||
#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358
|
||||
#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
|
||||
#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
|
||||
#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B
|
||||
typedef void (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GL_APICALL void GL_APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
|
||||
#endif
|
||||
#endif /* GL_NV_viewport_swizzle */
|
||||
|
||||
#ifndef GL_OVR_multiview
|
||||
#define GL_OVR_multiview 1
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#ifndef __gl2platform_h_
|
||||
#define __gl2platform_h_
|
||||
|
||||
/* $Revision: 23328 $ on $Date:: 2013-10-02 02:28:28 -0700 #$ */
|
||||
/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */
|
||||
|
||||
/*
|
||||
* This document is licensed under the SGI Free Software B License Version
|
||||
|
@@ -6,7 +6,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
** Copyright (c) 2013 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
@@ -33,21 +33,17 @@ extern "C" {
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 32749 $ on $Date: 2016-04-28 09:03:03 -0700 (Thu, 28 Apr 2016) $
|
||||
** Khronos $Revision: 24614 $ on $Date: 2013-12-30 04:44:46 -0800 (Mon, 30 Dec 2013) $
|
||||
*/
|
||||
|
||||
#include <GLES3/gl3platform.h>
|
||||
|
||||
#ifndef GL_APIENTRYP
|
||||
#define GL_APIENTRYP GL_APIENTRY*
|
||||
#endif
|
||||
|
||||
/* Generated on date 20160428 */
|
||||
/* Generated on date 20131230 */
|
||||
|
||||
/* Generated C header for:
|
||||
* API: gles2
|
||||
* Profile: common
|
||||
* Versions considered: 2\.[0-9]|3\.0
|
||||
* Versions considered: [23]\.[0-9]
|
||||
* Versions emitted: .*
|
||||
* Default extensions included: None
|
||||
* Additional extensions included: _nomatch_^
|
||||
@@ -378,148 +374,6 @@ typedef khronos_uint8_t GLubyte;
|
||||
#define GL_RENDERBUFFER_BINDING 0x8CA7
|
||||
#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
|
||||
#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
|
||||
typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
|
||||
typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
|
||||
typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
|
||||
typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
|
||||
typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);
|
||||
typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
|
||||
typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
|
||||
typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
|
||||
typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
|
||||
typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
|
||||
typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
|
||||
typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices);
|
||||
typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap);
|
||||
typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
|
||||
typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
|
||||
typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);
|
||||
typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
|
||||
typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
|
||||
typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
|
||||
typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
|
||||
typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
|
||||
typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
|
||||
typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);
|
||||
typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);
|
||||
typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
|
||||
typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
|
||||
typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
|
||||
typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
|
||||
typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
|
||||
typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);
|
||||
GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
|
||||
@@ -851,22 +705,6 @@ typedef unsigned short GLhalf;
|
||||
#define GL_COLOR_ATTACHMENT13 0x8CED
|
||||
#define GL_COLOR_ATTACHMENT14 0x8CEE
|
||||
#define GL_COLOR_ATTACHMENT15 0x8CEF
|
||||
#define GL_COLOR_ATTACHMENT16 0x8CF0
|
||||
#define GL_COLOR_ATTACHMENT17 0x8CF1
|
||||
#define GL_COLOR_ATTACHMENT18 0x8CF2
|
||||
#define GL_COLOR_ATTACHMENT19 0x8CF3
|
||||
#define GL_COLOR_ATTACHMENT20 0x8CF4
|
||||
#define GL_COLOR_ATTACHMENT21 0x8CF5
|
||||
#define GL_COLOR_ATTACHMENT22 0x8CF6
|
||||
#define GL_COLOR_ATTACHMENT23 0x8CF7
|
||||
#define GL_COLOR_ATTACHMENT24 0x8CF8
|
||||
#define GL_COLOR_ATTACHMENT25 0x8CF9
|
||||
#define GL_COLOR_ATTACHMENT26 0x8CFA
|
||||
#define GL_COLOR_ATTACHMENT27 0x8CFB
|
||||
#define GL_COLOR_ATTACHMENT28 0x8CFC
|
||||
#define GL_COLOR_ATTACHMENT29 0x8CFD
|
||||
#define GL_COLOR_ATTACHMENT30 0x8CFE
|
||||
#define GL_COLOR_ATTACHMENT31 0x8CFF
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
|
||||
#define GL_MAX_SAMPLES 0x8D57
|
||||
#define GL_HALF_FLOAT 0x140B
|
||||
@@ -988,111 +826,7 @@ typedef unsigned short GLhalf;
|
||||
#define GL_MAX_ELEMENT_INDEX 0x8D6B
|
||||
#define GL_NUM_SAMPLE_COUNTS 0x9380
|
||||
#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
|
||||
typedef void (GL_APIENTRYP PFNGLREADBUFFERPROC) (GLenum src);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISQUERYPROC) (GLuint id);
|
||||
typedef void (GL_APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
|
||||
typedef void (GL_APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
|
||||
typedef void (GL_APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
|
||||
typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
|
||||
typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
|
||||
typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
|
||||
typedef void (GL_APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
|
||||
typedef void (GL_APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
|
||||
typedef void (GL_APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
|
||||
typedef void (GL_APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
|
||||
typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
|
||||
typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
|
||||
typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
|
||||
typedef GLuint (GL_APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
|
||||
typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
|
||||
typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
typedef void (GL_APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
|
||||
typedef void (GL_APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
|
||||
typedef void (GL_APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
|
||||
typedef void (GL_APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
|
||||
typedef void (GL_APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
|
||||
GL_APICALL void GL_APIENTRY glReadBuffer (GLenum src);
|
||||
GL_APICALL void GL_APIENTRY glReadBuffer (GLenum mode);
|
||||
GL_APICALL void GL_APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
|
||||
GL_APICALL void GL_APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
|
||||
GL_APICALL void GL_APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
|
||||
|
@@ -6,7 +6,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
** Copyright (c) 2013-2014 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
@@ -38,16 +38,12 @@ extern "C" {
|
||||
|
||||
#include <GLES3/gl3platform.h>
|
||||
|
||||
#ifndef GL_APIENTRYP
|
||||
#define GL_APIENTRYP GL_APIENTRY*
|
||||
#endif
|
||||
|
||||
/* Generated on date 20160428 */
|
||||
/* Generated on date 20140317 */
|
||||
|
||||
/* Generated C header for:
|
||||
* API: gles2
|
||||
* Profile: common
|
||||
* Versions considered: 2\.[0-9]|3\.[01]
|
||||
* Versions considered: 2.[0-9]|3.[01]
|
||||
* Versions emitted: .*
|
||||
* Default extensions included: None
|
||||
* Additional extensions included: _nomatch_^
|
||||
@@ -378,148 +374,6 @@ typedef khronos_uint8_t GLubyte;
|
||||
#define GL_RENDERBUFFER_BINDING 0x8CA7
|
||||
#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
|
||||
#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
|
||||
typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
|
||||
typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
|
||||
typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
|
||||
typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
|
||||
typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
|
||||
typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);
|
||||
typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
|
||||
typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
|
||||
typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
|
||||
typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
|
||||
typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);
|
||||
typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
|
||||
typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
|
||||
typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
|
||||
typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices);
|
||||
typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap);
|
||||
typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
|
||||
typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
|
||||
typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);
|
||||
typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
|
||||
typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
|
||||
typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
|
||||
typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
|
||||
typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
|
||||
typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
|
||||
typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
|
||||
typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);
|
||||
typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);
|
||||
typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
|
||||
typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
|
||||
typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
|
||||
typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
|
||||
typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
|
||||
typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
|
||||
typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);
|
||||
GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
|
||||
@@ -851,22 +705,6 @@ typedef unsigned short GLhalf;
|
||||
#define GL_COLOR_ATTACHMENT13 0x8CED
|
||||
#define GL_COLOR_ATTACHMENT14 0x8CEE
|
||||
#define GL_COLOR_ATTACHMENT15 0x8CEF
|
||||
#define GL_COLOR_ATTACHMENT16 0x8CF0
|
||||
#define GL_COLOR_ATTACHMENT17 0x8CF1
|
||||
#define GL_COLOR_ATTACHMENT18 0x8CF2
|
||||
#define GL_COLOR_ATTACHMENT19 0x8CF3
|
||||
#define GL_COLOR_ATTACHMENT20 0x8CF4
|
||||
#define GL_COLOR_ATTACHMENT21 0x8CF5
|
||||
#define GL_COLOR_ATTACHMENT22 0x8CF6
|
||||
#define GL_COLOR_ATTACHMENT23 0x8CF7
|
||||
#define GL_COLOR_ATTACHMENT24 0x8CF8
|
||||
#define GL_COLOR_ATTACHMENT25 0x8CF9
|
||||
#define GL_COLOR_ATTACHMENT26 0x8CFA
|
||||
#define GL_COLOR_ATTACHMENT27 0x8CFB
|
||||
#define GL_COLOR_ATTACHMENT28 0x8CFC
|
||||
#define GL_COLOR_ATTACHMENT29 0x8CFD
|
||||
#define GL_COLOR_ATTACHMENT30 0x8CFE
|
||||
#define GL_COLOR_ATTACHMENT31 0x8CFF
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
|
||||
#define GL_MAX_SAMPLES 0x8D57
|
||||
#define GL_HALF_FLOAT 0x140B
|
||||
@@ -988,111 +826,7 @@ typedef unsigned short GLhalf;
|
||||
#define GL_MAX_ELEMENT_INDEX 0x8D6B
|
||||
#define GL_NUM_SAMPLE_COUNTS 0x9380
|
||||
#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
|
||||
typedef void (GL_APIENTRYP PFNGLREADBUFFERPROC) (GLenum src);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
|
||||
typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
|
||||
typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISQUERYPROC) (GLuint id);
|
||||
typedef void (GL_APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
|
||||
typedef void (GL_APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
|
||||
typedef void (GL_APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
|
||||
typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
|
||||
typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
|
||||
typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
|
||||
typedef void (GL_APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
|
||||
typedef void (GL_APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
|
||||
typedef void (GL_APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
|
||||
typedef void (GL_APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
|
||||
typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
|
||||
typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
|
||||
typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
|
||||
typedef void (GL_APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
|
||||
typedef GLuint (GL_APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
|
||||
typedef void (GL_APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
|
||||
typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
|
||||
typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
typedef void (GL_APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
|
||||
typedef void (GL_APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
|
||||
typedef void (GL_APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
|
||||
typedef void (GL_APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
|
||||
typedef void (GL_APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
|
||||
typedef void (GL_APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
|
||||
GL_APICALL void GL_APIENTRY glReadBuffer (GLenum src);
|
||||
GL_APICALL void GL_APIENTRY glReadBuffer (GLenum mode);
|
||||
GL_APICALL void GL_APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
|
||||
GL_APICALL void GL_APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
|
||||
GL_APICALL void GL_APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
|
||||
@@ -1373,74 +1107,6 @@ GL_APICALL void GL_APIENTRY glGetInternalformativ (GLenum target, GLenum interna
|
||||
#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
|
||||
#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
|
||||
#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5
|
||||
typedef void (GL_APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
|
||||
typedef void (GL_APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);
|
||||
typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);
|
||||
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
|
||||
typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
|
||||
typedef GLuint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
|
||||
typedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name);
|
||||
typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
|
||||
typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
|
||||
typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
|
||||
typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);
|
||||
typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
|
||||
typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
|
||||
typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
|
||||
typedef void (GL_APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
|
||||
typedef void (GL_APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
|
||||
typedef void (GL_APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers);
|
||||
typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
|
||||
typedef void (GL_APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
|
||||
typedef void (GL_APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
|
||||
typedef void (GL_APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);
|
||||
typedef void (GL_APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC) (GLenum target, GLint level, GLenum pname, GLfloat *params);
|
||||
typedef void (GL_APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
|
||||
typedef void (GL_APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
|
||||
GL_APICALL void GL_APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
|
||||
GL_APICALL void GL_APIENTRY glDispatchComputeIndirect (GLintptr indirect);
|
||||
GL_APICALL void GL_APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect);
|
||||
|
1817
include/GLES3/gl32.h
1817
include/GLES3/gl32.h
File diff suppressed because it is too large
Load Diff
@@ -1,3 +0,0 @@
|
||||
[*.h]
|
||||
indent_style = space
|
||||
indent_size = 4
|
@@ -184,7 +184,7 @@ mtx_destroy(mtx_t *mtx)
|
||||
* Thus the linker will be happy and things don't clash when building
|
||||
* with -O1 or greater.
|
||||
*/
|
||||
#if defined(HAVE_FUNC_ATTRIBUTE_WEAK) && !defined(__CYGWIN__)
|
||||
#ifdef HAVE_FUNC_ATTRIBUTE_WEAK
|
||||
__attribute__((weak))
|
||||
int pthread_mutexattr_init(pthread_mutexattr_t *attr);
|
||||
|
||||
|
@@ -1,3 +0,0 @@
|
||||
[*.h]
|
||||
indent_style = space
|
||||
indent_size = 4
|
@@ -109,10 +109,6 @@ CHIPSET(0x162A, bdw_gt3, "Intel(R) Iris Pro P6300 (Broadwell GT3e)")
|
||||
CHIPSET(0x162B, bdw_gt3, "Intel(R) Iris 6100 (Broadwell GT3)")
|
||||
CHIPSET(0x162D, bdw_gt3, "Intel(R) Broadwell GT3")
|
||||
CHIPSET(0x162E, bdw_gt3, "Intel(R) Broadwell GT3")
|
||||
CHIPSET(0x22B0, chv, "Intel(R) HD Graphics (Cherrytrail)")
|
||||
CHIPSET(0x22B1, chv, "Intel(R) HD Graphics XXX (Braswell)") /* Overridden in brw_get_renderer_string */
|
||||
CHIPSET(0x22B2, chv, "Intel(R) HD Graphics (Cherryview)")
|
||||
CHIPSET(0x22B3, chv, "Intel(R) HD Graphics (Cherryview)")
|
||||
CHIPSET(0x1902, skl_gt1, "Intel(R) HD Graphics 510 (Skylake GT1)")
|
||||
CHIPSET(0x1906, skl_gt1, "Intel(R) HD Graphics 510 (Skylake GT1)")
|
||||
CHIPSET(0x190A, skl_gt1, "Intel(R) Skylake GT1")
|
||||
@@ -138,30 +134,34 @@ CHIPSET(0x1932, skl_gt4, "Intel(R) Iris Pro Graphics 580 (Skylake GT4e)")
|
||||
CHIPSET(0x193A, skl_gt4, "Intel(R) Iris Pro Graphics P580 (Skylake GT4e)")
|
||||
CHIPSET(0x193B, skl_gt4, "Intel(R) Iris Pro Graphics 580 (Skylake GT4e)")
|
||||
CHIPSET(0x193D, skl_gt4, "Intel(R) Iris Pro Graphics P580 (Skylake GT4e)")
|
||||
CHIPSET(0x0A84, bxt, "Intel(R) HD Graphics (Broxton)")
|
||||
CHIPSET(0x1A84, bxt, "Intel(R) HD Graphics (Broxton)")
|
||||
CHIPSET(0x1A85, bxt_2x6, "Intel(R) HD Graphics (Broxton 2x6)")
|
||||
CHIPSET(0x5A84, bxt, "Intel(R) HD Graphics 505 (Broxton)")
|
||||
CHIPSET(0x5A85, bxt_2x6, "Intel(R) HD Graphics 500 (Broxton 2x6)")
|
||||
CHIPSET(0x5902, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x5906, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x590A, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x5908, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x590B, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x590E, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x5913, kbl_gt1_5, "Intel(R) Kabylake GT1.5")
|
||||
CHIPSET(0x5915, kbl_gt1_5, "Intel(R) Kabylake GT1.5")
|
||||
CHIPSET(0x5917, kbl_gt1_5, "Intel(R) Kabylake GT1.5")
|
||||
CHIPSET(0x5912, kbl_gt2, "Intel(R) Kabylake GT2")
|
||||
CHIPSET(0x5916, kbl_gt2, "Intel(R) HD Graphics 620 (Kabylake GT2)")
|
||||
CHIPSET(0x5916, kbl_gt2, "Intel(R) Kabylake GT2")
|
||||
CHIPSET(0x591A, kbl_gt2, "Intel(R) Kabylake GT2")
|
||||
CHIPSET(0x591B, kbl_gt2, "Intel(R) Kabylake GT2")
|
||||
CHIPSET(0x591D, kbl_gt2, "Intel(R) Kabylake GT2")
|
||||
CHIPSET(0x591E, kbl_gt2, "Intel(R) HD Graphics 615 (Kabylake GT2)")
|
||||
CHIPSET(0x591E, kbl_gt2, "Intel(R) Kabylake GT2")
|
||||
CHIPSET(0x5921, kbl_gt2, "Intel(R) Kabylake GT2F")
|
||||
CHIPSET(0x5923, kbl_gt3, "Intel(R) Kabylake GT3")
|
||||
CHIPSET(0x5926, kbl_gt3, "Intel(R) Kabylake GT3")
|
||||
CHIPSET(0x5927, kbl_gt3, "Intel(R) Kabylake GT3")
|
||||
CHIPSET(0x592A, kbl_gt3, "Intel(R) Kabylake GT3")
|
||||
CHIPSET(0x592B, kbl_gt3, "Intel(R) Kabylake GT3")
|
||||
CHIPSET(0x5932, kbl_gt4, "Intel(R) Kabylake GT4")
|
||||
CHIPSET(0x593A, kbl_gt4, "Intel(R) Kabylake GT4")
|
||||
CHIPSET(0x593B, kbl_gt4, "Intel(R) Kabylake GT4")
|
||||
CHIPSET(0x3184, glk, "Intel(R) HD Graphics (Geminilake)")
|
||||
CHIPSET(0x3185, glk_2x6, "Intel(R) HD Graphics (Geminilake 2x6)")
|
||||
CHIPSET(0x593D, kbl_gt4, "Intel(R) Kabylake GT4")
|
||||
CHIPSET(0x22B0, chv, "Intel(R) HD Graphics (Cherrytrail)")
|
||||
CHIPSET(0x22B1, chv, "Intel(R) HD Graphics XXX (Braswell)") /* Overridden in brw_get_renderer_string */
|
||||
CHIPSET(0x22B2, chv, "Intel(R) HD Graphics (Cherryview)")
|
||||
CHIPSET(0x22B3, chv, "Intel(R) HD Graphics (Cherryview)")
|
||||
CHIPSET(0x0A84, bxt, "Intel(R) HD Graphics (Broxton)")
|
||||
CHIPSET(0x1A84, bxt, "Intel(R) HD Graphics (Broxton)")
|
||||
CHIPSET(0x1A85, bxt_2x6, "Intel(R) HD Graphics (Broxton 2x6)")
|
||||
CHIPSET(0x5A84, bxt, "Intel(R) HD Graphics (Broxton)")
|
||||
CHIPSET(0x5A85, bxt_2x6, "Intel(R) HD Graphics (Broxton 2x6)")
|
||||
|
@@ -1,3 +0,0 @@
|
||||
[*.h]
|
||||
indent_style = space
|
||||
indent_size = 4
|
@@ -1,56 +1,28 @@
|
||||
//
|
||||
// File: vk_icd.h
|
||||
//
|
||||
/*
|
||||
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||
* Copyright (c) 2015-2016 Valve Corporation
|
||||
* Copyright (c) 2015-2016 LunarG, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef VKICD_H
|
||||
#define VKICD_H
|
||||
|
||||
#include "vulkan.h"
|
||||
#include "vk_platform.h"
|
||||
|
||||
/*
|
||||
* Loader-ICD version negotiation API
|
||||
*/
|
||||
#define CURRENT_LOADER_ICD_INTERFACE_VERSION 3
|
||||
#define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion);
|
||||
/*
|
||||
* The ICD must reserve space for a pointer for the loader's dispatch
|
||||
* table, at the start of <each object>.
|
||||
* The ICD must initialize this variable using the SET_LOADER_MAGIC_VALUE macro.
|
||||
*/
|
||||
|
||||
#define ICD_LOADER_MAGIC 0x01CDC0DE
|
||||
#define ICD_LOADER_MAGIC 0x01CDC0DE
|
||||
|
||||
typedef union {
|
||||
uintptr_t loaderMagic;
|
||||
void *loaderData;
|
||||
typedef union _VK_LOADER_DATA {
|
||||
uintptr_t loaderMagic;
|
||||
void *loaderData;
|
||||
} VK_LOADER_DATA;
|
||||
|
||||
static inline void set_loader_magic_value(void *pNewObject) {
|
||||
VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject;
|
||||
static inline void set_loader_magic_value(void* pNewObject) {
|
||||
VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *) pNewObject;
|
||||
loader_info->loaderMagic = ICD_LOADER_MAGIC;
|
||||
}
|
||||
|
||||
static inline bool valid_loader_magic_value(void *pNewObject) {
|
||||
const VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject;
|
||||
static inline bool valid_loader_magic_value(void* pNewObject) {
|
||||
const VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *) pNewObject;
|
||||
return (loader_info->loaderMagic & 0xffffffff) == ICD_LOADER_MAGIC;
|
||||
}
|
||||
|
||||
@@ -58,74 +30,56 @@ static inline bool valid_loader_magic_value(void *pNewObject) {
|
||||
* Windows and Linux ICDs will treat VkSurfaceKHR as a pointer to a struct that
|
||||
* contains the platform-specific connection and surface information.
|
||||
*/
|
||||
typedef enum {
|
||||
typedef enum _VkIcdWsiPlatform {
|
||||
VK_ICD_WSI_PLATFORM_MIR,
|
||||
VK_ICD_WSI_PLATFORM_WAYLAND,
|
||||
VK_ICD_WSI_PLATFORM_WIN32,
|
||||
VK_ICD_WSI_PLATFORM_XCB,
|
||||
VK_ICD_WSI_PLATFORM_XLIB,
|
||||
VK_ICD_WSI_PLATFORM_DISPLAY
|
||||
} VkIcdWsiPlatform;
|
||||
|
||||
typedef struct {
|
||||
VkIcdWsiPlatform platform;
|
||||
typedef struct _VkIcdSurfaceBase {
|
||||
VkIcdWsiPlatform platform;
|
||||
} VkIcdSurfaceBase;
|
||||
|
||||
#ifdef VK_USE_PLATFORM_MIR_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
MirConnection *connection;
|
||||
MirSurface *mirSurface;
|
||||
typedef struct _VkIcdSurfaceMir {
|
||||
VkIcdSurfaceBase base;
|
||||
MirConnection* connection;
|
||||
MirSurface* mirSurface;
|
||||
} VkIcdSurfaceMir;
|
||||
#endif // VK_USE_PLATFORM_MIR_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
struct wl_display *display;
|
||||
struct wl_surface *surface;
|
||||
typedef struct _VkIcdSurfaceWayland {
|
||||
VkIcdSurfaceBase base;
|
||||
struct wl_display* display;
|
||||
struct wl_surface* surface;
|
||||
} VkIcdSurfaceWayland;
|
||||
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
HINSTANCE hinstance;
|
||||
HWND hwnd;
|
||||
typedef struct _VkIcdSurfaceWin32 {
|
||||
VkIcdSurfaceBase base;
|
||||
HINSTANCE hinstance;
|
||||
HWND hwnd;
|
||||
} VkIcdSurfaceWin32;
|
||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
xcb_connection_t *connection;
|
||||
xcb_window_t window;
|
||||
typedef struct _VkIcdSurfaceXcb {
|
||||
VkIcdSurfaceBase base;
|
||||
xcb_connection_t* connection;
|
||||
xcb_window_t window;
|
||||
} VkIcdSurfaceXcb;
|
||||
#endif // VK_USE_PLATFORM_XCB_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
Display *dpy;
|
||||
Window window;
|
||||
typedef struct _VkIcdSurfaceXlib {
|
||||
VkIcdSurfaceBase base;
|
||||
Display* dpy;
|
||||
Window window;
|
||||
} VkIcdSurfaceXlib;
|
||||
#endif // VK_USE_PLATFORM_XLIB_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
typedef struct {
|
||||
ANativeWindow* window;
|
||||
} VkIcdSurfaceAndroid;
|
||||
#endif //VK_USE_PLATFORM_ANDROID_KHR
|
||||
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
VkDisplayModeKHR displayMode;
|
||||
uint32_t planeIndex;
|
||||
uint32_t planeStackIndex;
|
||||
VkSurfaceTransformFlagBitsKHR transform;
|
||||
float globalAlpha;
|
||||
VkDisplayPlaneAlphaFlagBitsKHR alphaMode;
|
||||
VkExtent2D imageExtent;
|
||||
} VkIcdSurfaceDisplay;
|
||||
|
||||
#endif // VKICD_H
|
||||
|
@@ -13,8 +13,8 @@ all-local : .install-gallium-links
|
||||
fi; \
|
||||
$(MKDIR_P) $$link_dir; \
|
||||
file_list="$(dri_LTLIBRARIES:%.la=.libs/%.so)"; \
|
||||
file_list="$$file_list$(egl_LTLIBRARIES:%.la=.libs/%.$(LIB_EXT)*)"; \
|
||||
file_list="$$file_list$(lib_LTLIBRARIES:%.la=.libs/%.$(LIB_EXT)*)"; \
|
||||
file_list+="$(egl_LTLIBRARIES:%.la=.libs/%.$(LIB_EXT)*)"; \
|
||||
file_list+="$(lib_LTLIBRARIES:%.la=.libs/%.$(LIB_EXT)*)"; \
|
||||
for f in $$file_list; do \
|
||||
if test -h .libs/$$f; then \
|
||||
cp -d $$f $$link_dir; \
|
||||
|
72
m4/ax_check_compile_flag.m4
Normal file
72
m4/ax_check_compile_flag.m4
Normal file
@@ -0,0 +1,72 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's compiler
|
||||
# or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
# force the compiler to issue an error when a bad flag is given.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# 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 2
|
||||
|
||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||
[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_COMPILE_FLAGS
|
@@ -103,14 +103,8 @@ def python_scan(node, env, path):
|
||||
# http://www.scons.org/doc/0.98.5/HTML/scons-user/c2781.html#AEN2789
|
||||
# https://docs.python.org/2/library/modulefinder.html
|
||||
contents = node.get_contents()
|
||||
|
||||
# Tell ModuleFinder to search dependencies in the script dir, and the glapi
|
||||
# dirs
|
||||
source_dir = node.get_dir().abspath
|
||||
GLAPI = env.Dir('#src/mapi/glapi/gen').abspath
|
||||
path = [source_dir, GLAPI] + sys.path
|
||||
|
||||
finder = modulefinder.ModuleFinder(path=path)
|
||||
source_dir = node.get_dir()
|
||||
finder = modulefinder.ModuleFinder()
|
||||
finder.run_script(node.abspath)
|
||||
results = []
|
||||
for name, mod in finder.modules.iteritems():
|
||||
|
@@ -256,7 +256,7 @@ def generate(env):
|
||||
if env['build'] == 'profile':
|
||||
env['debug'] = False
|
||||
env['profile'] = True
|
||||
if env['build'] in ('release', 'opt'):
|
||||
if env['build'] == 'release':
|
||||
env['debug'] = False
|
||||
env['profile'] = False
|
||||
|
||||
@@ -301,8 +301,6 @@ def generate(env):
|
||||
cppdefines += ['NDEBUG']
|
||||
if env['build'] == 'profile':
|
||||
cppdefines += ['PROFILE']
|
||||
if env['build'] in ('opt', 'profile'):
|
||||
cppdefines += ['VMX86_STATS']
|
||||
if env['platform'] in ('posix', 'linux', 'freebsd', 'darwin'):
|
||||
cppdefines += [
|
||||
'_POSIX_SOURCE',
|
||||
@@ -452,7 +450,7 @@ def generate(env):
|
||||
ccflags += [
|
||||
'/O2', # optimize for speed
|
||||
]
|
||||
if env['build'] in ('release', 'opt'):
|
||||
if env['build'] == 'release':
|
||||
if not env['clang']:
|
||||
ccflags += [
|
||||
'/GL', # enable whole program optimization
|
||||
@@ -563,7 +561,7 @@ def generate(env):
|
||||
shlinkflags += ['-Wl,--enable-stdcall-fixup']
|
||||
#shlinkflags += ['-Wl,--kill-at']
|
||||
if msvc:
|
||||
if env['build'] in ('release', 'opt') and not env['clang']:
|
||||
if env['build'] == 'release' and not env['clang']:
|
||||
# enable Link-time Code Generation
|
||||
linkflags += ['/LTCG']
|
||||
env.Append(ARFLAGS = ['/LTCG'])
|
||||
@@ -651,7 +649,8 @@ def generate(env):
|
||||
env.PkgCheckModules('X11', ['x11', 'xext', 'xdamage', 'xfixes', 'glproto >= 1.4.13'])
|
||||
env.PkgCheckModules('XCB', ['x11-xcb', 'xcb-glx >= 1.8.1', 'xcb-dri2 >= 1.8'])
|
||||
env.PkgCheckModules('XF86VIDMODE', ['xxf86vm'])
|
||||
env.PkgCheckModules('DRM', ['libdrm >= 2.4.66'])
|
||||
env.PkgCheckModules('DRM', ['libdrm >= 2.4.38'])
|
||||
env.PkgCheckModules('UDEV', ['libudev >= 151'])
|
||||
|
||||
if env['x11']:
|
||||
env.Append(CPPPATH = env['X11_CPPPATH'])
|
||||
|
@@ -865,7 +865,7 @@ sub top_of_mesa_tree {
|
||||
$lk_path .= "/";
|
||||
}
|
||||
if ( (-f "${lk_path}docs/mesa.css")
|
||||
&& (-f "${lk_path}docs/features.txt")
|
||||
&& (-f "${lk_path}docs/GL3.txt")
|
||||
&& (-f "${lk_path}src/mesa/main/version.c")
|
||||
&& (-f "${lk_path}REVIEWERS")
|
||||
&& (-d "${lk_path}scripts")) {
|
||||
|
@@ -47,37 +47,9 @@ CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
SUBDIRS = . gtest util mapi/glapi/gen mapi
|
||||
|
||||
if HAVE_OPENGL
|
||||
gldir = $(includedir)/GL
|
||||
gl_HEADERS = \
|
||||
$(top_srcdir)/include/GL/gl.h \
|
||||
$(top_srcdir)/include/GL/glext.h \
|
||||
$(top_srcdir)/include/GL/glcorearb.h \
|
||||
$(top_srcdir)/include/GL/gl_mangle.h
|
||||
endif
|
||||
|
||||
if HAVE_GLX
|
||||
glxdir = $(includedir)/GL
|
||||
glx_HEADERS = \
|
||||
$(top_srcdir)/include/GL/glx.h \
|
||||
$(top_srcdir)/include/GL/glxext.h \
|
||||
$(top_srcdir)/include/GL/glx_mangle.h
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = mesa/gl.pc
|
||||
endif
|
||||
|
||||
if HAVE_COMMON_OSMESA
|
||||
osmesadir = $(includedir)/GL
|
||||
osmesa_HEADERS = $(top_srcdir)/include/GL/osmesa.h
|
||||
endif
|
||||
|
||||
# include only conditionally ?
|
||||
SUBDIRS += compiler
|
||||
|
||||
if HAVE_AMD_DRIVERS
|
||||
SUBDIRS += amd
|
||||
endif
|
||||
|
||||
if HAVE_INTEL_DRIVERS
|
||||
SUBDIRS += intel
|
||||
endif
|
||||
@@ -111,32 +83,17 @@ if HAVE_EGL
|
||||
SUBDIRS += egl
|
||||
endif
|
||||
|
||||
if HAVE_INTEL_DRIVERS
|
||||
SUBDIRS += intel/tools
|
||||
endif
|
||||
|
||||
if HAVE_VULKAN_COMMON
|
||||
SUBDIRS += vulkan/wsi
|
||||
endif
|
||||
|
||||
## Requires the i965 compiler (part of mesa) and wayland-drm
|
||||
if HAVE_INTEL_VULKAN
|
||||
SUBDIRS += intel/vulkan
|
||||
endif
|
||||
|
||||
# Requires wayland-drm
|
||||
if HAVE_RADEON_VULKAN
|
||||
SUBDIRS += amd/common
|
||||
SUBDIRS += amd/vulkan
|
||||
endif
|
||||
|
||||
if HAVE_GALLIUM
|
||||
SUBDIRS += gallium
|
||||
endif
|
||||
|
||||
EXTRA_DIST = \
|
||||
getopt hgl SConscript \
|
||||
$(top_srcdir)/include/GL/mesa_glinterop.h
|
||||
getopt hgl SConscript
|
||||
|
||||
AM_CFLAGS = $(VISIBILITY_CFLAGS)
|
||||
AM_CXXFLAGS = $(VISIBILITY_CXXFLAGS)
|
||||
@@ -145,15 +102,12 @@ AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/include/ \
|
||||
-I$(top_srcdir)/src/mapi/ \
|
||||
-I$(top_srcdir)/src/mesa/ \
|
||||
-I$(top_srcdir)/src/gallium/include \
|
||||
-I$(top_srcdir)/src/gallium/auxiliary \
|
||||
$(DEFINES)
|
||||
|
||||
noinst_LTLIBRARIES = libglsl_util.la
|
||||
|
||||
libglsl_util_la_SOURCES = \
|
||||
mesa/main/extensions_table.c \
|
||||
mesa/main/imports.c \
|
||||
mesa/program/prog_parameter.c \
|
||||
mesa/program/prog_hash_table.c \
|
||||
mesa/program/symbol_table.c \
|
||||
mesa/program/dummy_errors.c
|
||||
|
@@ -1,9 +1,6 @@
|
||||
import filecmp
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
Import('*')
|
||||
|
||||
|
||||
if env['platform'] == 'windows':
|
||||
SConscript('getopt/SConscript')
|
||||
|
||||
@@ -15,50 +12,6 @@ if env['hostonly']:
|
||||
# compilation
|
||||
Return()
|
||||
|
||||
|
||||
def write_git_sha1_h_file(filename):
|
||||
"""Mesa looks for a git_sha1.h file at compile time in order to display
|
||||
the current git hash id in the GL_VERSION string. This function tries
|
||||
to retrieve the git hashid and write the header file. An empty file
|
||||
will be created if anything goes wrong."""
|
||||
|
||||
args = [ 'git', 'rev-parse', '--short=10', 'HEAD' ]
|
||||
try:
|
||||
(commit, foo) = subprocess.Popen(args, stdout=subprocess.PIPE).communicate()
|
||||
except:
|
||||
print "Warning: exception in write_git_sha1_h_file()"
|
||||
# git log command didn't work
|
||||
if not os.path.exists(filename):
|
||||
dirname = os.path.dirname(filename)
|
||||
if dirname and not os.path.exists(dirname):
|
||||
os.makedirs(dirname)
|
||||
# create an empty file if none already exists
|
||||
f = open(filename, "w")
|
||||
f.close()
|
||||
return
|
||||
|
||||
# note that commit[:-1] removes the trailing newline character
|
||||
commit = '#define MESA_GIT_SHA1 "git-%s"\n' % commit[:-1]
|
||||
tempfile = "git_sha1.h.tmp"
|
||||
f = open(tempfile, "w")
|
||||
f.write(commit)
|
||||
f.close()
|
||||
if not os.path.exists(filename) or not filecmp.cmp(tempfile, filename):
|
||||
# The filename does not exist or it's different from the new file,
|
||||
# so replace old file with new.
|
||||
if os.path.exists(filename):
|
||||
os.remove(filename)
|
||||
os.rename(tempfile, filename)
|
||||
return
|
||||
|
||||
|
||||
# Create the git_sha1.h header file
|
||||
write_git_sha1_h_file("git_sha1.h")
|
||||
# and update CPPPATH so the git_sha1.h header can be found
|
||||
env.Append(CPPPATH = ["#" + env['build_dir']])
|
||||
|
||||
|
||||
|
||||
if env['platform'] != 'windows':
|
||||
SConscript('loader/SConscript')
|
||||
|
||||
|
@@ -1,44 +0,0 @@
|
||||
# Copyright © 2016 Red Hat.
|
||||
# Copyright © 2016 Mauro Rossi <issor.oruam@gmail.com>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
# ---------------------------------------
|
||||
# Build libmesa_amdgpu_addrlib
|
||||
# ---------------------------------------
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := libmesa_amdgpu_addrlib
|
||||
|
||||
LOCAL_SRC_FILES := $(ADDRLIB_FILES)
|
||||
|
||||
LOCAL_CFLAGS := -DBRAHMA_BUILD=1
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src \
|
||||
$(MESA_TOP)/src/amd/common \
|
||||
$(MESA_TOP)/src/amd/addrlib \
|
||||
$(MESA_TOP)/src/amd/addrlib/core \
|
||||
$(MESA_TOP)/src/amd/addrlib/inc/chip/r800 \
|
||||
$(MESA_TOP)/src/amd/addrlib/r800/chip
|
||||
|
||||
include $(MESA_COMMON_MK)
|
||||
include $(BUILD_STATIC_LIBRARY)
|
@@ -1,28 +0,0 @@
|
||||
# Copyright © 2016 Red Hat.
|
||||
# Copyright © 2016 Mauro Rossi <issor.oruam@gmail.com>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
# Import variables
|
||||
include $(LOCAL_PATH)/Makefile.sources
|
||||
|
||||
include $(LOCAL_PATH)/Android.addrlib.mk
|
@@ -1,38 +0,0 @@
|
||||
# Copyright 2016 Red Hat Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
ADDRLIB_LIBS = addrlib/libamdgpu_addrlib.la
|
||||
|
||||
addrlib_libamdgpu_addrlib_la_CPPFLAGS = \
|
||||
-I$(top_srcdir)/src/ \
|
||||
-I$(srcdir)/common \
|
||||
-I$(srcdir)/addrlib \
|
||||
-I$(srcdir)/addrlib/core \
|
||||
-I$(srcdir)/addrlib/inc/chip/r800 \
|
||||
-I$(srcdir)/addrlib/r800/chip \
|
||||
-DBRAHMA_BUILD=1
|
||||
|
||||
addrlib_libamdgpu_addrlib_la_CXXFLAGS = \
|
||||
$(VISIBILITY_CXXFLAGS)
|
||||
|
||||
noinst_LTLIBRARIES += $(ADDRLIB_LIBS)
|
||||
|
||||
addrlib_libamdgpu_addrlib_la_SOURCES = $(ADDRLIB_FILES)
|
@@ -1,27 +0,0 @@
|
||||
# Copyright © 2016 Red Hat.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
include Makefile.sources
|
||||
|
||||
noinst_LTLIBRARIES =
|
||||
|
||||
EXTRA_DIST = $(COMMON_HEADER_FILES)
|
||||
include Makefile.addrlib.am
|
@@ -1,27 +0,0 @@
|
||||
COMMON_HEADER_FILES = \
|
||||
common/sid.h \
|
||||
common/r600d_common.h \
|
||||
common/amd_family.h \
|
||||
common/amd_kernel_code_t.h \
|
||||
common/amdgpu_id.h
|
||||
|
||||
ADDRLIB_FILES = \
|
||||
addrlib/addrinterface.cpp \
|
||||
addrlib/addrinterface.h \
|
||||
addrlib/addrtypes.h \
|
||||
addrlib/core/addrcommon.h \
|
||||
addrlib/core/addrelemlib.cpp \
|
||||
addrlib/core/addrelemlib.h \
|
||||
addrlib/core/addrlib.cpp \
|
||||
addrlib/core/addrlib.h \
|
||||
addrlib/core/addrobject.cpp \
|
||||
addrlib/core/addrobject.h \
|
||||
addrlib/inc/chip/r800/si_gb_reg.h \
|
||||
addrlib/inc/lnx_common_defs.h \
|
||||
addrlib/r800/chip/si_ci_vi_merged_enum.h \
|
||||
addrlib/r800/ciaddrlib.cpp \
|
||||
addrlib/r800/ciaddrlib.h \
|
||||
addrlib/r800/egbaddrlib.cpp \
|
||||
addrlib/r800/egbaddrlib.h \
|
||||
addrlib/r800/siaddrlib.cpp \
|
||||
addrlib/r800/siaddrlib.h
|
@@ -1,51 +0,0 @@
|
||||
# Copyright © 2016 Bas Nieuwenhuizen
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
include Makefile.sources
|
||||
|
||||
# TODO cleanup these
|
||||
AM_CPPFLAGS = \
|
||||
$(VALGRIND_CFLAGS) \
|
||||
$(DEFINES) \
|
||||
-I$(top_srcdir)/include \
|
||||
-I$(top_builddir)/src \
|
||||
-I$(top_srcdir)/src \
|
||||
-I$(top_builddir)/src/compiler \
|
||||
-I$(top_builddir)/src/compiler/nir \
|
||||
-I$(top_srcdir)/src/compiler \
|
||||
-I$(top_srcdir)/src/mapi \
|
||||
-I$(top_srcdir)/src/mesa \
|
||||
-I$(top_srcdir)/src/mesa/drivers/dri/common \
|
||||
-I$(top_srcdir)/src/gallium/auxiliary \
|
||||
-I$(top_srcdir)/src/gallium/include
|
||||
|
||||
AM_CFLAGS = $(VISIBILITY_CFLAGS) \
|
||||
$(PTHREAD_CFLAGS) \
|
||||
$(LLVM_CFLAGS) \
|
||||
$(LIBELF_CFLAGS)
|
||||
|
||||
AM_CXXFLAGS = \
|
||||
$(VISIBILITY_CXXFLAGS) \
|
||||
$(LLVM_CXXFLAGS)
|
||||
|
||||
noinst_LTLIBRARIES = libamd_common.la
|
||||
|
||||
libamd_common_la_SOURCES = $(AMD_COMPILER_SOURCES)
|
@@ -1,29 +0,0 @@
|
||||
# Copyright © 2016 Bas Nieuwenhuizen
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
AMD_COMPILER_SOURCES := \
|
||||
ac_binary.c \
|
||||
ac_binary.h \
|
||||
ac_llvm_helper.cpp \
|
||||
ac_llvm_util.c \
|
||||
ac_llvm_util.h \
|
||||
ac_nir_to_llvm.c \
|
||||
ac_nir_to_llvm.h
|
@@ -1,288 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Advanced Micro Devices, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
* Authors: Tom Stellard <thomas.stellard@amd.com>
|
||||
*
|
||||
* Based on radeon_elf_util.c.
|
||||
*/
|
||||
|
||||
#include "ac_binary.h"
|
||||
|
||||
#include "util/u_math.h"
|
||||
#include "util/u_memory.h"
|
||||
|
||||
#include <gelf.h>
|
||||
#include <libelf.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <sid.h>
|
||||
|
||||
#define SPILLED_SGPRS 0x4
|
||||
#define SPILLED_VGPRS 0x8
|
||||
|
||||
static void parse_symbol_table(Elf_Data *symbol_table_data,
|
||||
const GElf_Shdr *symbol_table_header,
|
||||
struct ac_shader_binary *binary)
|
||||
{
|
||||
GElf_Sym symbol;
|
||||
unsigned i = 0;
|
||||
unsigned symbol_count =
|
||||
symbol_table_header->sh_size / symbol_table_header->sh_entsize;
|
||||
|
||||
/* We are over allocating this list, because symbol_count gives the
|
||||
* total number of symbols, and we will only be filling the list
|
||||
* with offsets of global symbols. The memory savings from
|
||||
* allocating the correct size of this list will be small, and
|
||||
* I don't think it is worth the cost of pre-computing the number
|
||||
* of global symbols.
|
||||
*/
|
||||
binary->global_symbol_offsets = CALLOC(symbol_count, sizeof(uint64_t));
|
||||
|
||||
while (gelf_getsym(symbol_table_data, i++, &symbol)) {
|
||||
unsigned i;
|
||||
if (GELF_ST_BIND(symbol.st_info) != STB_GLOBAL ||
|
||||
symbol.st_shndx == 0 /* Undefined symbol */) {
|
||||
continue;
|
||||
}
|
||||
|
||||
binary->global_symbol_offsets[binary->global_symbol_count] =
|
||||
symbol.st_value;
|
||||
|
||||
/* Sort the list using bubble sort. This list will usually
|
||||
* be small. */
|
||||
for (i = binary->global_symbol_count; i > 0; --i) {
|
||||
uint64_t lhs = binary->global_symbol_offsets[i - 1];
|
||||
uint64_t rhs = binary->global_symbol_offsets[i];
|
||||
if (lhs < rhs) {
|
||||
break;
|
||||
}
|
||||
binary->global_symbol_offsets[i] = lhs;
|
||||
binary->global_symbol_offsets[i - 1] = rhs;
|
||||
}
|
||||
++binary->global_symbol_count;
|
||||
}
|
||||
}
|
||||
|
||||
static void parse_relocs(Elf *elf, Elf_Data *relocs, Elf_Data *symbols,
|
||||
unsigned symbol_sh_link,
|
||||
struct ac_shader_binary *binary)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
if (!relocs || !symbols || !binary->reloc_count) {
|
||||
return;
|
||||
}
|
||||
binary->relocs = CALLOC(binary->reloc_count,
|
||||
sizeof(struct ac_shader_reloc));
|
||||
for (i = 0; i < binary->reloc_count; i++) {
|
||||
GElf_Sym symbol;
|
||||
GElf_Rel rel;
|
||||
char *symbol_name;
|
||||
struct ac_shader_reloc *reloc = &binary->relocs[i];
|
||||
|
||||
gelf_getrel(relocs, i, &rel);
|
||||
gelf_getsym(symbols, GELF_R_SYM(rel.r_info), &symbol);
|
||||
symbol_name = elf_strptr(elf, symbol_sh_link, symbol.st_name);
|
||||
|
||||
reloc->offset = rel.r_offset;
|
||||
strncpy(reloc->name, symbol_name, sizeof(reloc->name)-1);
|
||||
reloc->name[sizeof(reloc->name)-1] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void ac_elf_read(const char *elf_data, unsigned elf_size,
|
||||
struct ac_shader_binary *binary)
|
||||
{
|
||||
char *elf_buffer;
|
||||
Elf *elf;
|
||||
Elf_Scn *section = NULL;
|
||||
Elf_Data *symbols = NULL, *relocs = NULL;
|
||||
size_t section_str_index;
|
||||
unsigned symbol_sh_link = 0;
|
||||
|
||||
/* One of the libelf implementations
|
||||
* (http://www.mr511.de/software/english.htm) requires calling
|
||||
* elf_version() before elf_memory().
|
||||
*/
|
||||
elf_version(EV_CURRENT);
|
||||
elf_buffer = MALLOC(elf_size);
|
||||
memcpy(elf_buffer, elf_data, elf_size);
|
||||
|
||||
elf = elf_memory(elf_buffer, elf_size);
|
||||
|
||||
elf_getshdrstrndx(elf, §ion_str_index);
|
||||
|
||||
while ((section = elf_nextscn(elf, section))) {
|
||||
const char *name;
|
||||
Elf_Data *section_data = NULL;
|
||||
GElf_Shdr section_header;
|
||||
if (gelf_getshdr(section, §ion_header) != §ion_header) {
|
||||
fprintf(stderr, "Failed to read ELF section header\n");
|
||||
return;
|
||||
}
|
||||
name = elf_strptr(elf, section_str_index, section_header.sh_name);
|
||||
if (!strcmp(name, ".text")) {
|
||||
section_data = elf_getdata(section, section_data);
|
||||
binary->code_size = section_data->d_size;
|
||||
binary->code = MALLOC(binary->code_size * sizeof(unsigned char));
|
||||
memcpy(binary->code, section_data->d_buf, binary->code_size);
|
||||
} else if (!strcmp(name, ".AMDGPU.config")) {
|
||||
section_data = elf_getdata(section, section_data);
|
||||
binary->config_size = section_data->d_size;
|
||||
binary->config = MALLOC(binary->config_size * sizeof(unsigned char));
|
||||
memcpy(binary->config, section_data->d_buf, binary->config_size);
|
||||
} else if (!strcmp(name, ".AMDGPU.disasm")) {
|
||||
/* Always read disassembly if it's available. */
|
||||
section_data = elf_getdata(section, section_data);
|
||||
binary->disasm_string = strndup(section_data->d_buf,
|
||||
section_data->d_size);
|
||||
} else if (!strncmp(name, ".rodata", 7)) {
|
||||
section_data = elf_getdata(section, section_data);
|
||||
binary->rodata_size = section_data->d_size;
|
||||
binary->rodata = MALLOC(binary->rodata_size * sizeof(unsigned char));
|
||||
memcpy(binary->rodata, section_data->d_buf, binary->rodata_size);
|
||||
} else if (!strncmp(name, ".symtab", 7)) {
|
||||
symbols = elf_getdata(section, section_data);
|
||||
symbol_sh_link = section_header.sh_link;
|
||||
parse_symbol_table(symbols, §ion_header, binary);
|
||||
} else if (!strcmp(name, ".rel.text")) {
|
||||
relocs = elf_getdata(section, section_data);
|
||||
binary->reloc_count = section_header.sh_size /
|
||||
section_header.sh_entsize;
|
||||
}
|
||||
}
|
||||
|
||||
parse_relocs(elf, relocs, symbols, symbol_sh_link, binary);
|
||||
|
||||
if (elf){
|
||||
elf_end(elf);
|
||||
}
|
||||
FREE(elf_buffer);
|
||||
|
||||
/* Cache the config size per symbol */
|
||||
if (binary->global_symbol_count) {
|
||||
binary->config_size_per_symbol =
|
||||
binary->config_size / binary->global_symbol_count;
|
||||
} else {
|
||||
binary->global_symbol_count = 1;
|
||||
binary->config_size_per_symbol = binary->config_size;
|
||||
}
|
||||
}
|
||||
|
||||
static
|
||||
const unsigned char *ac_shader_binary_config_start(
|
||||
const struct ac_shader_binary *binary,
|
||||
uint64_t symbol_offset)
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 0; i < binary->global_symbol_count; ++i) {
|
||||
if (binary->global_symbol_offsets[i] == symbol_offset) {
|
||||
unsigned offset = i * binary->config_size_per_symbol;
|
||||
return binary->config + offset;
|
||||
}
|
||||
}
|
||||
return binary->config;
|
||||
}
|
||||
|
||||
|
||||
static const char *scratch_rsrc_dword0_symbol =
|
||||
"SCRATCH_RSRC_DWORD0";
|
||||
|
||||
static const char *scratch_rsrc_dword1_symbol =
|
||||
"SCRATCH_RSRC_DWORD1";
|
||||
|
||||
void ac_shader_binary_read_config(struct ac_shader_binary *binary,
|
||||
struct ac_shader_config *conf,
|
||||
unsigned symbol_offset)
|
||||
{
|
||||
unsigned i;
|
||||
const unsigned char *config =
|
||||
ac_shader_binary_config_start(binary, symbol_offset);
|
||||
bool really_needs_scratch = false;
|
||||
|
||||
/* LLVM adds SGPR spills to the scratch size.
|
||||
* Find out if we really need the scratch buffer.
|
||||
*/
|
||||
for (i = 0; i < binary->reloc_count; i++) {
|
||||
const struct ac_shader_reloc *reloc = &binary->relocs[i];
|
||||
|
||||
if (!strcmp(scratch_rsrc_dword0_symbol, reloc->name) ||
|
||||
!strcmp(scratch_rsrc_dword1_symbol, reloc->name)) {
|
||||
really_needs_scratch = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < binary->config_size_per_symbol; i+= 8) {
|
||||
unsigned reg = util_le32_to_cpu(*(uint32_t*)(config + i));
|
||||
unsigned value = util_le32_to_cpu(*(uint32_t*)(config + i + 4));
|
||||
switch (reg) {
|
||||
case R_00B028_SPI_SHADER_PGM_RSRC1_PS:
|
||||
case R_00B128_SPI_SHADER_PGM_RSRC1_VS:
|
||||
case R_00B228_SPI_SHADER_PGM_RSRC1_GS:
|
||||
case R_00B848_COMPUTE_PGM_RSRC1:
|
||||
conf->num_sgprs = MAX2(conf->num_sgprs, (G_00B028_SGPRS(value) + 1) * 8);
|
||||
conf->num_vgprs = MAX2(conf->num_vgprs, (G_00B028_VGPRS(value) + 1) * 4);
|
||||
conf->float_mode = G_00B028_FLOAT_MODE(value);
|
||||
break;
|
||||
case R_00B02C_SPI_SHADER_PGM_RSRC2_PS:
|
||||
conf->lds_size = MAX2(conf->lds_size, G_00B02C_EXTRA_LDS_SIZE(value));
|
||||
break;
|
||||
case R_00B84C_COMPUTE_PGM_RSRC2:
|
||||
conf->lds_size = MAX2(conf->lds_size, G_00B84C_LDS_SIZE(value));
|
||||
break;
|
||||
case R_0286CC_SPI_PS_INPUT_ENA:
|
||||
conf->spi_ps_input_ena = value;
|
||||
break;
|
||||
case R_0286D0_SPI_PS_INPUT_ADDR:
|
||||
conf->spi_ps_input_addr = value;
|
||||
break;
|
||||
case R_0286E8_SPI_TMPRING_SIZE:
|
||||
case R_00B860_COMPUTE_TMPRING_SIZE:
|
||||
/* WAVESIZE is in units of 256 dwords. */
|
||||
if (really_needs_scratch)
|
||||
conf->scratch_bytes_per_wave =
|
||||
G_00B860_WAVESIZE(value) * 256 * 4;
|
||||
break;
|
||||
case SPILLED_SGPRS:
|
||||
conf->spilled_sgprs = value;
|
||||
break;
|
||||
case SPILLED_VGPRS:
|
||||
conf->spilled_vgprs = value;
|
||||
break;
|
||||
default:
|
||||
{
|
||||
static bool printed;
|
||||
|
||||
if (!printed) {
|
||||
fprintf(stderr, "Warning: LLVM emitted unknown "
|
||||
"config register: 0x%x\n", reg);
|
||||
printed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (!conf->spi_ps_input_addr)
|
||||
conf->spi_ps_input_addr = conf->spi_ps_input_ena;
|
||||
}
|
||||
}
|
@@ -1,88 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Advanced Micro Devices, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
* Authors: Tom Stellard <thomas.stellard@amd.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
struct ac_shader_reloc {
|
||||
char name[32];
|
||||
uint64_t offset;
|
||||
};
|
||||
|
||||
struct ac_shader_binary {
|
||||
/** Shader code */
|
||||
unsigned char *code;
|
||||
unsigned code_size;
|
||||
|
||||
/** Config/Context register state that accompanies this shader.
|
||||
* This is a stream of dword pairs. First dword contains the
|
||||
* register address, the second dword contains the value.*/
|
||||
unsigned char *config;
|
||||
unsigned config_size;
|
||||
|
||||
/** The number of bytes of config information for each global symbol.
|
||||
*/
|
||||
unsigned config_size_per_symbol;
|
||||
|
||||
/** Constant data accessed by the shader. This will be uploaded
|
||||
* into a constant buffer. */
|
||||
unsigned char *rodata;
|
||||
unsigned rodata_size;
|
||||
|
||||
/** List of symbol offsets for the shader */
|
||||
uint64_t *global_symbol_offsets;
|
||||
unsigned global_symbol_count;
|
||||
|
||||
struct ac_shader_reloc *relocs;
|
||||
unsigned reloc_count;
|
||||
|
||||
/** Disassembled shader in a string. */
|
||||
char *disasm_string;
|
||||
};
|
||||
|
||||
struct ac_shader_config {
|
||||
unsigned num_sgprs;
|
||||
unsigned num_vgprs;
|
||||
unsigned spilled_sgprs;
|
||||
unsigned spilled_vgprs;
|
||||
unsigned lds_size;
|
||||
unsigned spi_ps_input_ena;
|
||||
unsigned spi_ps_input_addr;
|
||||
unsigned float_mode;
|
||||
unsigned scratch_bytes_per_wave;
|
||||
};
|
||||
|
||||
/*
|
||||
* Parse the elf binary stored in \p elf_data and create a
|
||||
* ac_shader_binary object.
|
||||
*/
|
||||
void ac_elf_read(const char *elf_data, unsigned elf_size,
|
||||
struct ac_shader_binary *binary);
|
||||
|
||||
void ac_shader_binary_read_config(struct ac_shader_binary *binary,
|
||||
struct ac_shader_config *conf,
|
||||
unsigned symbol_offset);
|
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Advanced Micro Devices, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
* USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
*/
|
||||
|
||||
/* based on Marek's patch to lp_bld_misc.cpp */
|
||||
|
||||
// Workaround http://llvm.org/PR23628
|
||||
#if HAVE_LLVM >= 0x0307
|
||||
# pragma push_macro("DEBUG")
|
||||
# undef DEBUG
|
||||
#endif
|
||||
|
||||
#include "ac_nir_to_llvm.h"
|
||||
#include <llvm-c/Core.h>
|
||||
#include <llvm/Target/TargetOptions.h>
|
||||
#include <llvm/ExecutionEngine/ExecutionEngine.h>
|
||||
|
||||
extern "C" void
|
||||
ac_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes)
|
||||
{
|
||||
llvm::Argument *A = llvm::unwrap<llvm::Argument>(val);
|
||||
llvm::AttrBuilder B;
|
||||
B.addDereferenceableAttr(bytes);
|
||||
A->addAttr(llvm::AttributeSet::get(A->getContext(), A->getArgNo() + 1, B));
|
||||
}
|
@@ -1,142 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Advanced Micro Devices, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
* USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
*/
|
||||
/* based on pieces from si_pipe.c and radeon_llvm_emit.c */
|
||||
#include "ac_llvm_util.h"
|
||||
|
||||
#include <llvm-c/Core.h>
|
||||
|
||||
#include "c11/threads.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
||||
static void ac_init_llvm_target()
|
||||
{
|
||||
#if HAVE_LLVM < 0x0307
|
||||
LLVMInitializeR600TargetInfo();
|
||||
LLVMInitializeR600Target();
|
||||
LLVMInitializeR600TargetMC();
|
||||
LLVMInitializeR600AsmPrinter();
|
||||
#else
|
||||
LLVMInitializeAMDGPUTargetInfo();
|
||||
LLVMInitializeAMDGPUTarget();
|
||||
LLVMInitializeAMDGPUTargetMC();
|
||||
LLVMInitializeAMDGPUAsmPrinter();
|
||||
#endif
|
||||
}
|
||||
|
||||
static once_flag ac_init_llvm_target_once_flag = ONCE_FLAG_INIT;
|
||||
|
||||
static LLVMTargetRef ac_get_llvm_target(const char *triple)
|
||||
{
|
||||
LLVMTargetRef target = NULL;
|
||||
char *err_message = NULL;
|
||||
|
||||
call_once(&ac_init_llvm_target_once_flag, ac_init_llvm_target);
|
||||
|
||||
if (LLVMGetTargetFromTriple(triple, &target, &err_message)) {
|
||||
fprintf(stderr, "Cannot find target for triple %s ", triple);
|
||||
if (err_message) {
|
||||
fprintf(stderr, "%s\n", err_message);
|
||||
}
|
||||
LLVMDisposeMessage(err_message);
|
||||
return NULL;
|
||||
}
|
||||
return target;
|
||||
}
|
||||
|
||||
static const char *ac_get_llvm_processor_name(enum radeon_family family)
|
||||
{
|
||||
switch (family) {
|
||||
case CHIP_TAHITI:
|
||||
return "tahiti";
|
||||
case CHIP_PITCAIRN:
|
||||
return "pitcairn";
|
||||
case CHIP_VERDE:
|
||||
return "verde";
|
||||
case CHIP_OLAND:
|
||||
return "oland";
|
||||
case CHIP_HAINAN:
|
||||
return "hainan";
|
||||
case CHIP_BONAIRE:
|
||||
return "bonaire";
|
||||
case CHIP_KABINI:
|
||||
return "kabini";
|
||||
case CHIP_KAVERI:
|
||||
return "kaveri";
|
||||
case CHIP_HAWAII:
|
||||
return "hawaii";
|
||||
case CHIP_MULLINS:
|
||||
return "mullins";
|
||||
case CHIP_TONGA:
|
||||
return "tonga";
|
||||
case CHIP_ICELAND:
|
||||
return "iceland";
|
||||
case CHIP_CARRIZO:
|
||||
return "carrizo";
|
||||
#if HAVE_LLVM <= 0x0307
|
||||
case CHIP_FIJI:
|
||||
return "tonga";
|
||||
case CHIP_STONEY:
|
||||
return "carrizo";
|
||||
#else
|
||||
case CHIP_FIJI:
|
||||
return "fiji";
|
||||
case CHIP_STONEY:
|
||||
return "stoney";
|
||||
#endif
|
||||
#if HAVE_LLVM <= 0x0308
|
||||
case CHIP_POLARIS10:
|
||||
return "tonga";
|
||||
case CHIP_POLARIS11:
|
||||
return "tonga";
|
||||
#else
|
||||
case CHIP_POLARIS10:
|
||||
return "polaris10";
|
||||
case CHIP_POLARIS11:
|
||||
return "polaris11";
|
||||
#endif
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family)
|
||||
{
|
||||
assert(family >= CHIP_TAHITI);
|
||||
|
||||
const char *triple = "amdgcn--";
|
||||
LLVMTargetRef target = ac_get_llvm_target(triple);
|
||||
LLVMTargetMachineRef tm = LLVMCreateTargetMachine(
|
||||
target,
|
||||
triple,
|
||||
ac_get_llvm_processor_name(family),
|
||||
"+DumpCode,+vgpr-spilling",
|
||||
LLVMCodeGenLevelDefault,
|
||||
LLVMRelocDefault,
|
||||
LLVMCodeModelDefault);
|
||||
|
||||
return tm;
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Copyright 2016 Bas Nieuwenhuizen
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
* USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <llvm-c/TargetMachine.h>
|
||||
|
||||
#include "amd_family.h"
|
||||
|
||||
LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family);
|
File diff suppressed because it is too large
Load Diff
@@ -1,119 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2016 Bas Nieuwenhuizen
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "llvm-c/Core.h"
|
||||
#include "llvm-c/TargetMachine.h"
|
||||
#include "amd_family.h"
|
||||
|
||||
struct ac_shader_binary;
|
||||
struct ac_shader_config;
|
||||
struct nir_shader;
|
||||
struct radv_pipeline_layout;
|
||||
|
||||
|
||||
struct ac_vs_variant_key {
|
||||
uint32_t instance_rate_inputs;
|
||||
};
|
||||
|
||||
struct ac_fs_variant_key {
|
||||
uint32_t col_format;
|
||||
uint32_t is_int8;
|
||||
};
|
||||
|
||||
union ac_shader_variant_key {
|
||||
struct ac_vs_variant_key vs;
|
||||
struct ac_fs_variant_key fs;
|
||||
};
|
||||
|
||||
struct ac_nir_compiler_options {
|
||||
struct radv_pipeline_layout *layout;
|
||||
union ac_shader_variant_key key;
|
||||
bool unsafe_math;
|
||||
enum radeon_family family;
|
||||
enum chip_class chip_class;
|
||||
};
|
||||
|
||||
struct ac_shader_variant_info {
|
||||
unsigned num_user_sgprs;
|
||||
unsigned num_input_sgprs;
|
||||
unsigned num_input_vgprs;
|
||||
union {
|
||||
struct {
|
||||
unsigned param_exports;
|
||||
unsigned pos_exports;
|
||||
unsigned vgpr_comp_cnt;
|
||||
uint32_t export_mask;
|
||||
bool writes_pointsize;
|
||||
uint8_t clip_dist_mask;
|
||||
uint8_t cull_dist_mask;
|
||||
} vs;
|
||||
struct {
|
||||
unsigned num_interp;
|
||||
uint32_t input_mask;
|
||||
unsigned output_mask;
|
||||
uint32_t flat_shaded_mask;
|
||||
bool has_pcoord;
|
||||
bool can_discard;
|
||||
bool writes_z;
|
||||
bool writes_stencil;
|
||||
bool early_fragment_test;
|
||||
bool writes_memory;
|
||||
} fs;
|
||||
struct {
|
||||
unsigned block_size[3];
|
||||
} cs;
|
||||
};
|
||||
};
|
||||
|
||||
void ac_compile_nir_shader(LLVMTargetMachineRef tm,
|
||||
struct ac_shader_binary *binary,
|
||||
struct ac_shader_config *config,
|
||||
struct ac_shader_variant_info *shader_info,
|
||||
struct nir_shader *nir,
|
||||
const struct ac_nir_compiler_options *options,
|
||||
bool dump_shader);
|
||||
|
||||
/* SHADER ABI defines */
|
||||
|
||||
/* offset in dwords */
|
||||
#define AC_USERDATA_DESCRIPTOR_SET_0 0
|
||||
#define AC_USERDATA_DESCRIPTOR_SET_1 2
|
||||
#define AC_USERDATA_DESCRIPTOR_SET_2 4
|
||||
#define AC_USERDATA_DESCRIPTOR_SET_3 6
|
||||
#define AC_USERDATA_PUSH_CONST_DYN 8
|
||||
|
||||
#define AC_USERDATA_VS_VERTEX_BUFFERS 10
|
||||
#define AC_USERDATA_VS_BASE_VERTEX 12
|
||||
#define AC_USERDATA_VS_START_INSTANCE 13
|
||||
|
||||
#define AC_USERDATA_PS_SAMPLE_POS 10
|
||||
|
||||
#define AC_USERDATA_CS_GRID_SIZE 10
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
void ac_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes);
|
@@ -1,111 +0,0 @@
|
||||
/*
|
||||
* Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com>
|
||||
* Copyright 2010 Marek Olšák <maraeo@gmail.com>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* on the rights to use, copy, modify, merge, publish, distribute, sub
|
||||
* license, and/or sell copies of the Software, and to permit persons to whom
|
||||
* the Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
* USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
|
||||
#ifndef AMD_FAMILY_H
|
||||
#define AMD_FAMILY_H
|
||||
|
||||
enum radeon_family {
|
||||
CHIP_UNKNOWN = 0,
|
||||
CHIP_R300, /* R3xx-based cores. */
|
||||
CHIP_R350,
|
||||
CHIP_RV350,
|
||||
CHIP_RV370,
|
||||
CHIP_RV380,
|
||||
CHIP_RS400,
|
||||
CHIP_RC410,
|
||||
CHIP_RS480,
|
||||
CHIP_R420, /* R4xx-based cores. */
|
||||
CHIP_R423,
|
||||
CHIP_R430,
|
||||
CHIP_R480,
|
||||
CHIP_R481,
|
||||
CHIP_RV410,
|
||||
CHIP_RS600,
|
||||
CHIP_RS690,
|
||||
CHIP_RS740,
|
||||
CHIP_RV515, /* R5xx-based cores. */
|
||||
CHIP_R520,
|
||||
CHIP_RV530,
|
||||
CHIP_R580,
|
||||
CHIP_RV560,
|
||||
CHIP_RV570,
|
||||
CHIP_R600,
|
||||
CHIP_RV610,
|
||||
CHIP_RV630,
|
||||
CHIP_RV670,
|
||||
CHIP_RV620,
|
||||
CHIP_RV635,
|
||||
CHIP_RS780,
|
||||
CHIP_RS880,
|
||||
CHIP_RV770,
|
||||
CHIP_RV730,
|
||||
CHIP_RV710,
|
||||
CHIP_RV740,
|
||||
CHIP_CEDAR,
|
||||
CHIP_REDWOOD,
|
||||
CHIP_JUNIPER,
|
||||
CHIP_CYPRESS,
|
||||
CHIP_HEMLOCK,
|
||||
CHIP_PALM,
|
||||
CHIP_SUMO,
|
||||
CHIP_SUMO2,
|
||||
CHIP_BARTS,
|
||||
CHIP_TURKS,
|
||||
CHIP_CAICOS,
|
||||
CHIP_CAYMAN,
|
||||
CHIP_ARUBA,
|
||||
CHIP_TAHITI,
|
||||
CHIP_PITCAIRN,
|
||||
CHIP_VERDE,
|
||||
CHIP_OLAND,
|
||||
CHIP_HAINAN,
|
||||
CHIP_BONAIRE,
|
||||
CHIP_KAVERI,
|
||||
CHIP_KABINI,
|
||||
CHIP_HAWAII,
|
||||
CHIP_MULLINS,
|
||||
CHIP_TONGA,
|
||||
CHIP_ICELAND,
|
||||
CHIP_CARRIZO,
|
||||
CHIP_FIJI,
|
||||
CHIP_STONEY,
|
||||
CHIP_POLARIS10,
|
||||
CHIP_POLARIS11,
|
||||
CHIP_LAST,
|
||||
};
|
||||
|
||||
enum chip_class {
|
||||
CLASS_UNKNOWN = 0,
|
||||
R300,
|
||||
R400,
|
||||
R500,
|
||||
R600,
|
||||
R700,
|
||||
EVERGREEN,
|
||||
CAYMAN,
|
||||
SI,
|
||||
CIK,
|
||||
VI,
|
||||
};
|
||||
|
||||
#endif
|
@@ -1,534 +0,0 @@
|
||||
/*
|
||||
* Copyright 2015,2016 Advanced Micro Devices, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* on the rights to use, copy, modify, merge, publish, distribute, sub
|
||||
* license, and/or sell copies of the Software, and to permit persons to whom
|
||||
* the Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
* USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef AMDKERNELCODET_H
|
||||
#define AMDKERNELCODET_H
|
||||
|
||||
//---------------------------------------------------------------------------//
|
||||
// AMD Kernel Code, and its dependencies //
|
||||
//---------------------------------------------------------------------------//
|
||||
|
||||
// Sets val bits for specified mask in specified dst packed instance.
|
||||
#define AMD_HSA_BITS_SET(dst, mask, val) \
|
||||
dst &= (~(1 << mask ## _SHIFT) & ~mask); \
|
||||
dst |= (((val) << mask ## _SHIFT) & mask)
|
||||
|
||||
// Gets bits for specified mask from specified src packed instance.
|
||||
#define AMD_HSA_BITS_GET(src, mask) \
|
||||
((src & mask) >> mask ## _SHIFT) \
|
||||
|
||||
/* Every amd_*_code_t has the following properties, which are composed of
|
||||
* a number of bit fields. Every bit field has a mask (AMD_CODE_PROPERTY_*),
|
||||
* bit width (AMD_CODE_PROPERTY_*_WIDTH, and bit shift amount
|
||||
* (AMD_CODE_PROPERTY_*_SHIFT) for convenient access. Unused bits must be 0.
|
||||
*
|
||||
* (Note that bit fields cannot be used as their layout is
|
||||
* implementation defined in the C standard and so cannot be used to
|
||||
* specify an ABI)
|
||||
*/
|
||||
enum amd_code_property_mask_t {
|
||||
|
||||
/* Enable the setup of the SGPR user data registers
|
||||
* (AMD_CODE_PROPERTY_ENABLE_SGPR_*), see documentation of amd_kernel_code_t
|
||||
* for initial register state.
|
||||
*
|
||||
* The total number of SGPRuser data registers requested must not
|
||||
* exceed 16. Any requests beyond 16 will be ignored.
|
||||
*
|
||||
* Used to set COMPUTE_PGM_RSRC2.USER_SGPR (set to total count of
|
||||
* SGPR user data registers enabled up to 16).
|
||||
*/
|
||||
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_PRIVATE_SEGMENT_BUFFER_SHIFT = 0,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_PRIVATE_SEGMENT_BUFFER_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_PRIVATE_SEGMENT_BUFFER = ((1 << AMD_CODE_PROPERTY_ENABLE_SGPR_PRIVATE_SEGMENT_BUFFER_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_SGPR_PRIVATE_SEGMENT_BUFFER_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_DISPATCH_PTR_SHIFT = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_DISPATCH_PTR_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_DISPATCH_PTR = ((1 << AMD_CODE_PROPERTY_ENABLE_SGPR_DISPATCH_PTR_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_SGPR_DISPATCH_PTR_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_QUEUE_PTR_SHIFT = 2,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_QUEUE_PTR_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_QUEUE_PTR = ((1 << AMD_CODE_PROPERTY_ENABLE_SGPR_QUEUE_PTR_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_SGPR_QUEUE_PTR_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_KERNARG_SEGMENT_PTR_SHIFT = 3,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_KERNARG_SEGMENT_PTR_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_KERNARG_SEGMENT_PTR = ((1 << AMD_CODE_PROPERTY_ENABLE_SGPR_KERNARG_SEGMENT_PTR_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_SGPR_KERNARG_SEGMENT_PTR_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_DISPATCH_ID_SHIFT = 4,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_DISPATCH_ID_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_DISPATCH_ID = ((1 << AMD_CODE_PROPERTY_ENABLE_SGPR_DISPATCH_ID_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_SGPR_DISPATCH_ID_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_FLAT_SCRATCH_INIT_SHIFT = 5,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_FLAT_SCRATCH_INIT_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_FLAT_SCRATCH_INIT = ((1 << AMD_CODE_PROPERTY_ENABLE_SGPR_FLAT_SCRATCH_INIT_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_SGPR_FLAT_SCRATCH_INIT_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_PRIVATE_SEGMENT_SIZE_SHIFT = 6,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_PRIVATE_SEGMENT_SIZE_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_PRIVATE_SEGMENT_SIZE = ((1 << AMD_CODE_PROPERTY_ENABLE_SGPR_PRIVATE_SEGMENT_SIZE_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_SGPR_PRIVATE_SEGMENT_SIZE_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_X_SHIFT = 7,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_X_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_X = ((1 << AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_X_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_X_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_Y_SHIFT = 8,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_Y_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_Y = ((1 << AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_Y_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_Y_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_Z_SHIFT = 9,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_Z_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_Z = ((1 << AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_Z_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_SGPR_GRID_WORKGROUP_COUNT_Z_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_RESERVED1_SHIFT = 10,
|
||||
AMD_CODE_PROPERTY_RESERVED1_WIDTH = 6,
|
||||
AMD_CODE_PROPERTY_RESERVED1 = ((1 << AMD_CODE_PROPERTY_RESERVED1_WIDTH) - 1) << AMD_CODE_PROPERTY_RESERVED1_SHIFT,
|
||||
|
||||
/* Control wave ID base counter for GDS ordered-append. Used to set
|
||||
* COMPUTE_DISPATCH_INITIATOR.ORDERED_APPEND_ENBL. (Not sure if
|
||||
* ORDERED_APPEND_MODE also needs to be settable)
|
||||
*/
|
||||
AMD_CODE_PROPERTY_ENABLE_ORDERED_APPEND_GDS_SHIFT = 16,
|
||||
AMD_CODE_PROPERTY_ENABLE_ORDERED_APPEND_GDS_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_ENABLE_ORDERED_APPEND_GDS = ((1 << AMD_CODE_PROPERTY_ENABLE_ORDERED_APPEND_GDS_WIDTH) - 1) << AMD_CODE_PROPERTY_ENABLE_ORDERED_APPEND_GDS_SHIFT,
|
||||
|
||||
/* The interleave (swizzle) element size in bytes required by the
|
||||
* code for private memory. This must be 2, 4, 8 or 16. This value
|
||||
* is provided to the finalizer when it is invoked and is recorded
|
||||
* here. The hardware will interleave the memory requests of each
|
||||
* lane of a wavefront by this element size to ensure each
|
||||
* work-item gets a distinct memory memory location. Therefore, the
|
||||
* finalizer ensures that all load and store operations done to
|
||||
* private memory do not exceed this size. For example, if the
|
||||
* element size is 4 (32-bits or dword) and a 64-bit value must be
|
||||
* loaded, the finalizer will generate two 32-bit loads. This
|
||||
* ensures that the interleaving will get the work-item
|
||||
* specific dword for both halves of the 64-bit value. If it just
|
||||
* did a 64-bit load then it would get one dword which belonged to
|
||||
* its own work-item, but the second dword would belong to the
|
||||
* adjacent lane work-item since the interleaving is in dwords.
|
||||
*
|
||||
* The value used must match the value that the runtime configures
|
||||
* the GPU flat scratch (SH_STATIC_MEM_CONFIG.ELEMENT_SIZE). This
|
||||
* is generally DWORD.
|
||||
*
|
||||
* USE VALUES FROM THE AMD_ELEMENT_BYTE_SIZE_T ENUM.
|
||||
*/
|
||||
AMD_CODE_PROPERTY_PRIVATE_ELEMENT_SIZE_SHIFT = 17,
|
||||
AMD_CODE_PROPERTY_PRIVATE_ELEMENT_SIZE_WIDTH = 2,
|
||||
AMD_CODE_PROPERTY_PRIVATE_ELEMENT_SIZE = ((1 << AMD_CODE_PROPERTY_PRIVATE_ELEMENT_SIZE_WIDTH) - 1) << AMD_CODE_PROPERTY_PRIVATE_ELEMENT_SIZE_SHIFT,
|
||||
|
||||
/* Are global memory addresses 64 bits. Must match
|
||||
* amd_kernel_code_t.hsail_machine_model ==
|
||||
* HSA_MACHINE_LARGE. Must also match
|
||||
* SH_MEM_CONFIG.PTR32 (GFX6 (SI)/GFX7 (CI)),
|
||||
* SH_MEM_CONFIG.ADDRESS_MODE (GFX8 (VI)+).
|
||||
*/
|
||||
AMD_CODE_PROPERTY_IS_PTR64_SHIFT = 19,
|
||||
AMD_CODE_PROPERTY_IS_PTR64_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_IS_PTR64 = ((1 << AMD_CODE_PROPERTY_IS_PTR64_WIDTH) - 1) << AMD_CODE_PROPERTY_IS_PTR64_SHIFT,
|
||||
|
||||
/* Indicate if the generated ISA is using a dynamically sized call
|
||||
* stack. This can happen if calls are implemented using a call
|
||||
* stack and recursion, alloca or calls to indirect functions are
|
||||
* present. In these cases the Finalizer cannot compute the total
|
||||
* private segment size at compile time. In this case the
|
||||
* workitem_private_segment_byte_size only specifies the statically
|
||||
* know private segment size, and additional space must be added
|
||||
* for the call stack.
|
||||
*/
|
||||
AMD_CODE_PROPERTY_IS_DYNAMIC_CALLSTACK_SHIFT = 20,
|
||||
AMD_CODE_PROPERTY_IS_DYNAMIC_CALLSTACK_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_IS_DYNAMIC_CALLSTACK = ((1 << AMD_CODE_PROPERTY_IS_DYNAMIC_CALLSTACK_WIDTH) - 1) << AMD_CODE_PROPERTY_IS_DYNAMIC_CALLSTACK_SHIFT,
|
||||
|
||||
/* Indicate if code generated has support for debugging. */
|
||||
AMD_CODE_PROPERTY_IS_DEBUG_SUPPORTED_SHIFT = 21,
|
||||
AMD_CODE_PROPERTY_IS_DEBUG_SUPPORTED_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_IS_DEBUG_SUPPORTED = ((1 << AMD_CODE_PROPERTY_IS_DEBUG_SUPPORTED_WIDTH) - 1) << AMD_CODE_PROPERTY_IS_DEBUG_SUPPORTED_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_IS_XNACK_SUPPORTED_SHIFT = 22,
|
||||
AMD_CODE_PROPERTY_IS_XNACK_SUPPORTED_WIDTH = 1,
|
||||
AMD_CODE_PROPERTY_IS_XNACK_SUPPORTED = ((1 << AMD_CODE_PROPERTY_IS_XNACK_SUPPORTED_WIDTH) - 1) << AMD_CODE_PROPERTY_IS_XNACK_SUPPORTED_SHIFT,
|
||||
|
||||
AMD_CODE_PROPERTY_RESERVED2_SHIFT = 23,
|
||||
AMD_CODE_PROPERTY_RESERVED2_WIDTH = 9,
|
||||
AMD_CODE_PROPERTY_RESERVED2 = ((1 << AMD_CODE_PROPERTY_RESERVED2_WIDTH) - 1) << AMD_CODE_PROPERTY_RESERVED2_SHIFT
|
||||
};
|
||||
|
||||
/* AMD Kernel Code Object (amd_kernel_code_t). GPU CP uses the AMD Kernel
|
||||
* Code Object to set up the hardware to execute the kernel dispatch.
|
||||
*
|
||||
* Initial Kernel Register State.
|
||||
*
|
||||
* Initial kernel register state will be set up by CP/SPI prior to the start
|
||||
* of execution of every wavefront. This is limited by the constraints of the
|
||||
* current hardware.
|
||||
*
|
||||
* The order of the SGPR registers is defined, but the Finalizer can specify
|
||||
* which ones are actually setup in the amd_kernel_code_t object using the
|
||||
* enable_sgpr_* bit fields. The register numbers used for enabled registers
|
||||
* are dense starting at SGPR0: the first enabled register is SGPR0, the next
|
||||
* enabled register is SGPR1 etc.; disabled registers do not have an SGPR
|
||||
* number.
|
||||
*
|
||||
* The initial SGPRs comprise up to 16 User SRGPs that are set up by CP and
|
||||
* apply to all waves of the grid. It is possible to specify more than 16 User
|
||||
* SGPRs using the enable_sgpr_* bit fields, in which case only the first 16
|
||||
* are actually initialized. These are then immediately followed by the System
|
||||
* SGPRs that are set up by ADC/SPI and can have different values for each wave
|
||||
* of the grid dispatch.
|
||||
*
|
||||
* SGPR register initial state is defined as follows:
|
||||
*
|
||||
* Private Segment Buffer (enable_sgpr_private_segment_buffer):
|
||||
* Number of User SGPR registers: 4. V# that can be used, together with
|
||||
* Scratch Wave Offset as an offset, to access the Private/Spill/Arg
|
||||
* segments using a segment address. It must be set as follows:
|
||||
* - Base address: of the scratch memory area used by the dispatch. It
|
||||
* does not include the scratch wave offset. It will be the per process
|
||||
* SH_HIDDEN_PRIVATE_BASE_VMID plus any offset from this dispatch (for
|
||||
* example there may be a per pipe offset, or per AQL Queue offset).
|
||||
* - Stride + data_format: Element Size * Index Stride (???)
|
||||
* - Cache swizzle: ???
|
||||
* - Swizzle enable: SH_STATIC_MEM_CONFIG.SWIZZLE_ENABLE (must be 1 for
|
||||
* scratch)
|
||||
* - Num records: Flat Scratch Work Item Size / Element Size (???)
|
||||
* - Dst_sel_*: ???
|
||||
* - Num_format: ???
|
||||
* - Element_size: SH_STATIC_MEM_CONFIG.ELEMENT_SIZE (will be DWORD, must
|
||||
* agree with amd_kernel_code_t.privateElementSize)
|
||||
* - Index_stride: SH_STATIC_MEM_CONFIG.INDEX_STRIDE (will be 64 as must
|
||||
* be number of wavefront lanes for scratch, must agree with
|
||||
* amd_kernel_code_t.wavefrontSize)
|
||||
* - Add tid enable: 1
|
||||
* - ATC: from SH_MEM_CONFIG.PRIVATE_ATC,
|
||||
* - Hash_enable: ???
|
||||
* - Heap: ???
|
||||
* - Mtype: from SH_STATIC_MEM_CONFIG.PRIVATE_MTYPE
|
||||
* - Type: 0 (a buffer) (???)
|
||||
*
|
||||
* Dispatch Ptr (enable_sgpr_dispatch_ptr):
|
||||
* Number of User SGPR registers: 2. 64 bit address of AQL dispatch packet
|
||||
* for kernel actually executing.
|
||||
*
|
||||
* Queue Ptr (enable_sgpr_queue_ptr):
|
||||
* Number of User SGPR registers: 2. 64 bit address of AmdQueue object for
|
||||
* AQL queue on which the dispatch packet was queued.
|
||||
*
|
||||
* Kernarg Segment Ptr (enable_sgpr_kernarg_segment_ptr):
|
||||
* Number of User SGPR registers: 2. 64 bit address of Kernarg segment. This
|
||||
* is directly copied from the kernargPtr in the dispatch packet. Having CP
|
||||
* load it once avoids loading it at the beginning of every wavefront.
|
||||
*
|
||||
* Dispatch Id (enable_sgpr_dispatch_id):
|
||||
* Number of User SGPR registers: 2. 64 bit Dispatch ID of the dispatch
|
||||
* packet being executed.
|
||||
*
|
||||
* Flat Scratch Init (enable_sgpr_flat_scratch_init):
|
||||
* Number of User SGPR registers: 2. This is 2 SGPRs.
|
||||
*
|
||||
* For CI/VI:
|
||||
* The first SGPR is a 32 bit byte offset from SH_MEM_HIDDEN_PRIVATE_BASE
|
||||
* to base of memory for scratch for this dispatch. This is the same offset
|
||||
* used in computing the Scratch Segment Buffer base address. The value of
|
||||
* Scratch Wave Offset must be added by the kernel code and moved to
|
||||
* SGPRn-4 for use as the FLAT SCRATCH BASE in flat memory instructions.
|
||||
*
|
||||
* The second SGPR is 32 bit byte size of a single work-item's scratch
|
||||
* memory usage. This is directly loaded from the dispatch packet Private
|
||||
* Segment Byte Size and rounded up to a multiple of DWORD.
|
||||
*
|
||||
* \todo [Does CP need to round this to >4 byte alignment?]
|
||||
*
|
||||
* The kernel code must move to SGPRn-3 for use as the FLAT SCRATCH SIZE in
|
||||
* flat memory instructions. Having CP load it once avoids loading it at
|
||||
* the beginning of every wavefront.
|
||||
*
|
||||
* Private Segment Size (enable_sgpr_private_segment_size):
|
||||
* Number of User SGPR registers: 1. The 32 bit byte size of a single
|
||||
* work-item's scratch memory allocation. This is the value from the dispatch
|
||||
* packet. Private Segment Byte Size rounded up by CP to a multiple of DWORD.
|
||||
*
|
||||
* \todo [Does CP need to round this to >4 byte alignment?]
|
||||
*
|
||||
* Having CP load it once avoids loading it at the beginning of every
|
||||
* wavefront.
|
||||
*
|
||||
* \todo [This will not be used for CI/VI since it is the same value as
|
||||
* the second SGPR of Flat Scratch Init.
|
||||
*
|
||||
* Grid Work-Group Count X (enable_sgpr_grid_workgroup_count_x):
|
||||
* Number of User SGPR registers: 1. 32 bit count of the number of
|
||||
* work-groups in the X dimension for the grid being executed. Computed from
|
||||
* the fields in the HsaDispatchPacket as
|
||||
* ((gridSize.x+workgroupSize.x-1)/workgroupSize.x).
|
||||
*
|
||||
* Grid Work-Group Count Y (enable_sgpr_grid_workgroup_count_y):
|
||||
* Number of User SGPR registers: 1. 32 bit count of the number of
|
||||
* work-groups in the Y dimension for the grid being executed. Computed from
|
||||
* the fields in the HsaDispatchPacket as
|
||||
* ((gridSize.y+workgroupSize.y-1)/workgroupSize.y).
|
||||
*
|
||||
* Only initialized if <16 previous SGPRs initialized.
|
||||
*
|
||||
* Grid Work-Group Count Z (enable_sgpr_grid_workgroup_count_z):
|
||||
* Number of User SGPR registers: 1. 32 bit count of the number of
|
||||
* work-groups in the Z dimension for the grid being executed. Computed
|
||||
* from the fields in the HsaDispatchPacket as
|
||||
* ((gridSize.z+workgroupSize.z-1)/workgroupSize.z).
|
||||
*
|
||||
* Only initialized if <16 previous SGPRs initialized.
|
||||
*
|
||||
* Work-Group Id X (enable_sgpr_workgroup_id_x):
|
||||
* Number of System SGPR registers: 1. 32 bit work group id in X dimension
|
||||
* of grid for wavefront. Always present.
|
||||
*
|
||||
* Work-Group Id Y (enable_sgpr_workgroup_id_y):
|
||||
* Number of System SGPR registers: 1. 32 bit work group id in Y dimension
|
||||
* of grid for wavefront.
|
||||
*
|
||||
* Work-Group Id Z (enable_sgpr_workgroup_id_z):
|
||||
* Number of System SGPR registers: 1. 32 bit work group id in Z dimension
|
||||
* of grid for wavefront. If present then Work-group Id Y will also be
|
||||
* present
|
||||
*
|
||||
* Work-Group Info (enable_sgpr_workgroup_info):
|
||||
* Number of System SGPR registers: 1. {first_wave, 14'b0000,
|
||||
* ordered_append_term[10:0], threadgroup_size_in_waves[5:0]}
|
||||
*
|
||||
* Private Segment Wave Byte Offset
|
||||
* (enable_sgpr_private_segment_wave_byte_offset):
|
||||
* Number of System SGPR registers: 1. 32 bit byte offset from base of
|
||||
* dispatch scratch base. Must be used as an offset with Private/Spill/Arg
|
||||
* segment address when using Scratch Segment Buffer. It must be added to
|
||||
* Flat Scratch Offset if setting up FLAT SCRATCH for flat addressing.
|
||||
*
|
||||
*
|
||||
* The order of the VGPR registers is defined, but the Finalizer can specify
|
||||
* which ones are actually setup in the amd_kernel_code_t object using the
|
||||
* enableVgpr* bit fields. The register numbers used for enabled registers
|
||||
* are dense starting at VGPR0: the first enabled register is VGPR0, the next
|
||||
* enabled register is VGPR1 etc.; disabled registers do not have an VGPR
|
||||
* number.
|
||||
*
|
||||
* VGPR register initial state is defined as follows:
|
||||
*
|
||||
* Work-Item Id X (always initialized):
|
||||
* Number of registers: 1. 32 bit work item id in X dimension of work-group
|
||||
* for wavefront lane.
|
||||
*
|
||||
* Work-Item Id X (enable_vgpr_workitem_id > 0):
|
||||
* Number of registers: 1. 32 bit work item id in Y dimension of work-group
|
||||
* for wavefront lane.
|
||||
*
|
||||
* Work-Item Id X (enable_vgpr_workitem_id > 0):
|
||||
* Number of registers: 1. 32 bit work item id in Z dimension of work-group
|
||||
* for wavefront lane.
|
||||
*
|
||||
*
|
||||
* The setting of registers is being done by existing GPU hardware as follows:
|
||||
* 1) SGPRs before the Work-Group Ids are set by CP using the 16 User Data
|
||||
* registers.
|
||||
* 2) Work-group Id registers X, Y, Z are set by SPI which supports any
|
||||
* combination including none.
|
||||
* 3) Scratch Wave Offset is also set by SPI which is why its value cannot
|
||||
* be added into the value Flat Scratch Offset which would avoid the
|
||||
* Finalizer generated prolog having to do the add.
|
||||
* 4) The VGPRs are set by SPI which only supports specifying either (X),
|
||||
* (X, Y) or (X, Y, Z).
|
||||
*
|
||||
* Flat Scratch Dispatch Offset and Flat Scratch Size are adjacent SGRRs so
|
||||
* they can be moved as a 64 bit value to the hardware required SGPRn-3 and
|
||||
* SGPRn-4 respectively using the Finalizer ?FLAT_SCRATCH? Register.
|
||||
*
|
||||
* The global segment can be accessed either using flat operations or buffer
|
||||
* operations. If buffer operations are used then the Global Buffer used to
|
||||
* access HSAIL Global/Readonly/Kernarg (which are combine) segments using a
|
||||
* segment address is not passed into the kernel code by CP since its base
|
||||
* address is always 0. Instead the Finalizer generates prolog code to
|
||||
* initialize 4 SGPRs with a V# that has the following properties, and then
|
||||
* uses that in the buffer instructions:
|
||||
* - base address of 0
|
||||
* - no swizzle
|
||||
* - ATC=1
|
||||
* - MTYPE set to support memory coherence specified in
|
||||
* amd_kernel_code_t.globalMemoryCoherence
|
||||
*
|
||||
* When the Global Buffer is used to access the Kernarg segment, must add the
|
||||
* dispatch packet kernArgPtr to a kernarg segment address before using this V#.
|
||||
* Alternatively scalar loads can be used if the kernarg offset is uniform, as
|
||||
* the kernarg segment is constant for the duration of the kernel execution.
|
||||
*/
|
||||
|
||||
typedef struct amd_kernel_code_s {
|
||||
uint32_t amd_kernel_code_version_major;
|
||||
uint32_t amd_kernel_code_version_minor;
|
||||
uint16_t amd_machine_kind;
|
||||
uint16_t amd_machine_version_major;
|
||||
uint16_t amd_machine_version_minor;
|
||||
uint16_t amd_machine_version_stepping;
|
||||
|
||||
/* Byte offset (possibly negative) from start of amd_kernel_code_t
|
||||
* object to kernel's entry point instruction. The actual code for
|
||||
* the kernel is required to be 256 byte aligned to match hardware
|
||||
* requirements (SQ cache line is 16). The code must be position
|
||||
* independent code (PIC) for AMD devices to give runtime the
|
||||
* option of copying code to discrete GPU memory or APU L2
|
||||
* cache. The Finalizer should endeavour to allocate all kernel
|
||||
* machine code in contiguous memory pages so that a device
|
||||
* pre-fetcher will tend to only pre-fetch Kernel Code objects,
|
||||
* improving cache performance.
|
||||
*/
|
||||
int64_t kernel_code_entry_byte_offset;
|
||||
|
||||
/* Range of bytes to consider prefetching expressed as an offset
|
||||
* and size. The offset is from the start (possibly negative) of
|
||||
* amd_kernel_code_t object. Set both to 0 if no prefetch
|
||||
* information is available.
|
||||
*/
|
||||
int64_t kernel_code_prefetch_byte_offset;
|
||||
uint64_t kernel_code_prefetch_byte_size;
|
||||
|
||||
/* Number of bytes of scratch backing memory required for full
|
||||
* occupancy of target chip. This takes into account the number of
|
||||
* bytes of scratch per work-item, the wavefront size, the maximum
|
||||
* number of wavefronts per CU, and the number of CUs. This is an
|
||||
* upper limit on scratch. If the grid being dispatched is small it
|
||||
* may only need less than this. If the kernel uses no scratch, or
|
||||
* the Finalizer has not computed this value, it must be 0.
|
||||
*/
|
||||
uint64_t max_scratch_backing_memory_byte_size;
|
||||
|
||||
/* Shader program settings for CS. Contains COMPUTE_PGM_RSRC1 and
|
||||
* COMPUTE_PGM_RSRC2 registers.
|
||||
*/
|
||||
uint64_t compute_pgm_resource_registers;
|
||||
|
||||
/* Code properties. See amd_code_property_mask_t for a full list of
|
||||
* properties.
|
||||
*/
|
||||
uint32_t code_properties;
|
||||
|
||||
/* The amount of memory required for the combined private, spill
|
||||
* and arg segments for a work-item in bytes. If
|
||||
* is_dynamic_callstack is 1 then additional space must be added to
|
||||
* this value for the call stack.
|
||||
*/
|
||||
uint32_t workitem_private_segment_byte_size;
|
||||
|
||||
/* The amount of group segment memory required by a work-group in
|
||||
* bytes. This does not include any dynamically allocated group
|
||||
* segment memory that may be added when the kernel is
|
||||
* dispatched.
|
||||
*/
|
||||
uint32_t workgroup_group_segment_byte_size;
|
||||
|
||||
/* Number of byte of GDS required by kernel dispatch. Must be 0 if
|
||||
* not using GDS.
|
||||
*/
|
||||
uint32_t gds_segment_byte_size;
|
||||
|
||||
/* The size in bytes of the kernarg segment that holds the values
|
||||
* of the arguments to the kernel. This could be used by CP to
|
||||
* prefetch the kernarg segment pointed to by the dispatch packet.
|
||||
*/
|
||||
uint64_t kernarg_segment_byte_size;
|
||||
|
||||
/* Number of fbarrier's used in the kernel and all functions it
|
||||
* calls. If the implementation uses group memory to allocate the
|
||||
* fbarriers then that amount must already be included in the
|
||||
* workgroup_group_segment_byte_size total.
|
||||
*/
|
||||
uint32_t workgroup_fbarrier_count;
|
||||
|
||||
/* Number of scalar registers used by a wavefront. This includes
|
||||
* the special SGPRs for VCC, Flat Scratch Base, Flat Scratch Size
|
||||
* and XNACK (for GFX8 (VI)). It does not include the 16 SGPR added if a
|
||||
* trap handler is enabled. Used to set COMPUTE_PGM_RSRC1.SGPRS.
|
||||
*/
|
||||
uint16_t wavefront_sgpr_count;
|
||||
|
||||
/* Number of vector registers used by each work-item. Used to set
|
||||
* COMPUTE_PGM_RSRC1.VGPRS.
|
||||
*/
|
||||
uint16_t workitem_vgpr_count;
|
||||
|
||||
/* If reserved_vgpr_count is 0 then must be 0. Otherwise, this is the
|
||||
* first fixed VGPR number reserved.
|
||||
*/
|
||||
uint16_t reserved_vgpr_first;
|
||||
|
||||
/* The number of consecutive VGPRs reserved by the client. If
|
||||
* is_debug_supported then this count includes VGPRs reserved
|
||||
* for debugger use.
|
||||
*/
|
||||
uint16_t reserved_vgpr_count;
|
||||
|
||||
/* If reserved_sgpr_count is 0 then must be 0. Otherwise, this is the
|
||||
* first fixed SGPR number reserved.
|
||||
*/
|
||||
uint16_t reserved_sgpr_first;
|
||||
|
||||
/* The number of consecutive SGPRs reserved by the client. If
|
||||
* is_debug_supported then this count includes SGPRs reserved
|
||||
* for debugger use.
|
||||
*/
|
||||
uint16_t reserved_sgpr_count;
|
||||
|
||||
/* If is_debug_supported is 0 then must be 0. Otherwise, this is the
|
||||
* fixed SGPR number used to hold the wave scratch offset for the
|
||||
* entire kernel execution, or uint16_t(-1) if the register is not
|
||||
* used or not known.
|
||||
*/
|
||||
uint16_t debug_wavefront_private_segment_offset_sgpr;
|
||||
|
||||
/* If is_debug_supported is 0 then must be 0. Otherwise, this is the
|
||||
* fixed SGPR number of the first of 4 SGPRs used to hold the
|
||||
* scratch V# used for the entire kernel execution, or uint16_t(-1)
|
||||
* if the registers are not used or not known.
|
||||
*/
|
||||
uint16_t debug_private_segment_buffer_sgpr;
|
||||
|
||||
/* The maximum byte alignment of variables used by the kernel in
|
||||
* the specified memory segment. Expressed as a power of two. Must
|
||||
* be at least HSA_POWERTWO_16.
|
||||
*/
|
||||
uint8_t kernarg_segment_alignment;
|
||||
uint8_t group_segment_alignment;
|
||||
uint8_t private_segment_alignment;
|
||||
|
||||
/* Wavefront size expressed as a power of two. Must be a power of 2
|
||||
* in range 1..64 inclusive. Used to support runtime query that
|
||||
* obtains wavefront size, which may be used by application to
|
||||
* allocated dynamic group memory and set the dispatch work-group
|
||||
* size.
|
||||
*/
|
||||
uint8_t wavefront_size;
|
||||
|
||||
int32_t call_convention;
|
||||
uint8_t reserved3[12];
|
||||
uint64_t runtime_loader_kernel_symbol;
|
||||
uint64_t control_directives[16];
|
||||
} amd_kernel_code_t;
|
||||
|
||||
#endif // AMDKERNELCODET_H
|
7
src/amd/vulkan/.gitignore
vendored
7
src/amd/vulkan/.gitignore
vendored
@@ -1,7 +0,0 @@
|
||||
# Generated source files
|
||||
/radv_entrypoints.c
|
||||
/radv_entrypoints.h
|
||||
/radv_timestamp.h
|
||||
/dev_icd.json
|
||||
/vk_format_table.c
|
||||
/radeon_icd.*.json
|
@@ -1,172 +0,0 @@
|
||||
# Copyright © 2016 Red Hat
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
include Makefile.sources
|
||||
|
||||
vulkan_includedir = $(includedir)/vulkan
|
||||
|
||||
vulkan_include_HEADERS = \
|
||||
$(top_srcdir)/include/vulkan/vk_platform.h \
|
||||
$(top_srcdir)/include/vulkan/vulkan.h
|
||||
|
||||
lib_LTLIBRARIES = libvulkan_radeon.la
|
||||
|
||||
# The gallium includes are for the util/u_math.h include from main/macros.h
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/include \
|
||||
-I$(top_builddir)/src \
|
||||
-I$(top_srcdir)/src \
|
||||
-I$(top_srcdir)/src/vulkan/wsi \
|
||||
-I$(top_srcdir)/src/amd \
|
||||
-I$(top_srcdir)/src/amd/common \
|
||||
-I$(top_builddir)/src/compiler \
|
||||
-I$(top_builddir)/src/compiler/nir \
|
||||
-I$(top_srcdir)/src/compiler \
|
||||
-I$(top_srcdir)/src/mapi \
|
||||
-I$(top_srcdir)/src/mesa \
|
||||
-I$(top_srcdir)/src/mesa/drivers/dri/common \
|
||||
-I$(top_srcdir)/src/gallium/auxiliary \
|
||||
-I$(top_srcdir)/src/gallium/include \
|
||||
$(AMDGPU_CFLAGS) \
|
||||
$(VALGRIND_CFLAGS) \
|
||||
$(DEFINES)
|
||||
|
||||
AM_CFLAGS = \
|
||||
$(VISIBILITY_CFLAGS) \
|
||||
$(PTHREAD_CFLAGS) \
|
||||
$(LLVM_CFLAGS)
|
||||
|
||||
VULKAN_SOURCES = \
|
||||
$(VULKAN_GENERATED_FILES) \
|
||||
$(VULKAN_FILES)
|
||||
|
||||
VULKAN_LIB_DEPS =
|
||||
|
||||
|
||||
if HAVE_PLATFORM_X11
|
||||
AM_CPPFLAGS += \
|
||||
$(XCB_DRI3_CFLAGS) \
|
||||
-DVK_USE_PLATFORM_XCB_KHR \
|
||||
-DVK_USE_PLATFORM_XLIB_KHR
|
||||
|
||||
VULKAN_SOURCES += $(VULKAN_WSI_X11_FILES)
|
||||
|
||||
# FIXME: Use pkg-config for X11-xcb ldflags.
|
||||
VULKAN_LIB_DEPS += $(XCB_DRI3_LIBS) -lX11-xcb
|
||||
endif
|
||||
|
||||
|
||||
if HAVE_PLATFORM_WAYLAND
|
||||
AM_CPPFLAGS += \
|
||||
-I$(top_builddir)/src/egl/wayland/wayland-drm \
|
||||
-I$(top_srcdir)/src/egl/wayland/wayland-drm \
|
||||
$(WAYLAND_CFLAGS) \
|
||||
-DVK_USE_PLATFORM_WAYLAND_KHR
|
||||
|
||||
VULKAN_SOURCES += $(VULKAN_WSI_WAYLAND_FILES)
|
||||
|
||||
VULKAN_LIB_DEPS += \
|
||||
$(top_builddir)/src/egl/wayland/wayland-drm/libwayland-drm.la \
|
||||
$(WAYLAND_LIBS)
|
||||
endif
|
||||
|
||||
noinst_LTLIBRARIES = libvulkan_common.la
|
||||
libvulkan_common_la_SOURCES = $(VULKAN_SOURCES)
|
||||
|
||||
VULKAN_LIB_DEPS += \
|
||||
libvulkan_common.la \
|
||||
$(top_builddir)/src/vulkan/wsi/libvulkan_wsi.la \
|
||||
$(top_builddir)/src/amd/common/libamd_common.la \
|
||||
$(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la \
|
||||
$(top_builddir)/src/compiler/nir/libnir.la \
|
||||
$(top_builddir)/src/util/libmesautil.la \
|
||||
$(LLVM_LIBS) \
|
||||
$(LIBELF_LIBS) \
|
||||
$(PTHREAD_LIBS) \
|
||||
$(AMDGPU_LIBS) \
|
||||
$(LIBDRM_LIBS) \
|
||||
$(PTHREAD_LIBS) \
|
||||
$(DLOPEN_LIBS) \
|
||||
-lm
|
||||
|
||||
nodist_EXTRA_libvulkan_radeon_la_SOURCES = dummy.cpp
|
||||
libvulkan_radeon_la_SOURCES = $(VULKAN_GEM_FILES)
|
||||
|
||||
radv_entrypoints.h : radv_entrypoints_gen.py $(vulkan_include_HEADERS)
|
||||
$(AM_V_GEN) cat $(vulkan_include_HEADERS) |\
|
||||
$(PYTHON2) $(srcdir)/radv_entrypoints_gen.py header > $@
|
||||
|
||||
radv_entrypoints.c : radv_entrypoints_gen.py $(vulkan_include_HEADERS)
|
||||
$(AM_V_GEN) cat $(vulkan_include_HEADERS) |\
|
||||
$(PYTHON2) $(srcdir)/radv_entrypoints_gen.py code > $@
|
||||
|
||||
.PHONY: radv_timestamp.h
|
||||
|
||||
radv_timestamp.h:
|
||||
@echo "Updating radv_timestamp.h"
|
||||
$(AM_V_GEN) echo "#define RADV_TIMESTAMP \"$(TIMESTAMP_CMD)\"" > $@
|
||||
|
||||
vk_format_table.c: vk_format_table.py \
|
||||
vk_format_parse.py \
|
||||
vk_format_layout.csv
|
||||
$(PYTHON2) $(srcdir)/vk_format_table.py $(srcdir)/vk_format_layout.csv > $@
|
||||
|
||||
BUILT_SOURCES = $(VULKAN_GENERATED_FILES)
|
||||
CLEANFILES = $(BUILT_SOURCES) dev_icd.json radeon_icd.@host_cpu@.json
|
||||
EXTRA_DIST = \
|
||||
$(top_srcdir)/include/vulkan/vk_icd.h \
|
||||
dev_icd.json.in \
|
||||
radeon_icd.json.in \
|
||||
radv_entrypoints_gen.py \
|
||||
vk_format_layout.csv \
|
||||
vk_format_parse.py \
|
||||
vk_format_table.py
|
||||
|
||||
libvulkan_radeon_la_LIBADD = $(VULKAN_LIB_DEPS)
|
||||
|
||||
libvulkan_radeon_la_LDFLAGS = \
|
||||
-shared \
|
||||
-module \
|
||||
-no-undefined \
|
||||
-avoid-version \
|
||||
$(BSYMBOLIC) \
|
||||
$(LLVM_LDFLAGS) \
|
||||
$(GC_SECTIONS) \
|
||||
$(LD_NO_UNDEFINED)
|
||||
|
||||
|
||||
icdconfdir = @VULKAN_ICD_INSTALL_DIR@
|
||||
icdconf_DATA = radeon_icd.@host_cpu@.json
|
||||
# The following is used for development purposes, by setting VK_ICD_FILENAMES.
|
||||
noinst_DATA = dev_icd.json
|
||||
|
||||
dev_icd.json : dev_icd.json.in
|
||||
$(AM_V_GEN) $(SED) \
|
||||
-e "s#@build_libdir@#${abs_top_builddir}/${LIB_DIR}#" \
|
||||
< $(srcdir)/dev_icd.json.in > $@
|
||||
|
||||
radeon_icd.@host_cpu@.json : radeon_icd.json.in
|
||||
$(AM_V_GEN) $(SED) \
|
||||
-e "s#@install_libdir@#${libdir}#" \
|
||||
< $(srcdir)/radeon_icd.json.in > $@
|
||||
|
||||
include $(top_srcdir)/install-lib-links.mk
|
@@ -1,77 +0,0 @@
|
||||
# Copyright © 2016 Red Hat
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
RADV_WS_AMDGPU_FILES := \
|
||||
winsys/amdgpu/radv_amdgpu_bo.c \
|
||||
winsys/amdgpu/radv_amdgpu_bo.h \
|
||||
winsys/amdgpu/radv_amdgpu_cs.c \
|
||||
winsys/amdgpu/radv_amdgpu_cs.h \
|
||||
winsys/amdgpu/radv_amdgpu_surface.c \
|
||||
winsys/amdgpu/radv_amdgpu_surface.h \
|
||||
winsys/amdgpu/radv_amdgpu_winsys.c \
|
||||
winsys/amdgpu/radv_amdgpu_winsys.h \
|
||||
winsys/amdgpu/radv_amdgpu_winsys_public.h
|
||||
|
||||
VULKAN_FILES := \
|
||||
radv_cmd_buffer.c \
|
||||
radv_cs.h \
|
||||
radv_device.c \
|
||||
radv_descriptor_set.c \
|
||||
radv_descriptor_set.h \
|
||||
radv_formats.c \
|
||||
radv_image.c \
|
||||
radv_meta.c \
|
||||
radv_meta.h \
|
||||
radv_meta_blit.c \
|
||||
radv_meta_blit2d.c \
|
||||
radv_meta_buffer.c \
|
||||
radv_meta_bufimage.c \
|
||||
radv_meta_clear.c \
|
||||
radv_meta_copy.c \
|
||||
radv_meta_decompress.c \
|
||||
radv_meta_fast_clear.c \
|
||||
radv_meta_resolve.c \
|
||||
radv_meta_resolve_cs.c \
|
||||
radv_pass.c \
|
||||
radv_pipeline.c \
|
||||
radv_pipeline_cache.c \
|
||||
radv_private.h \
|
||||
radv_radeon_winsys.h \
|
||||
radv_query.c \
|
||||
radv_util.c \
|
||||
radv_util.h \
|
||||
radv_wsi.c \
|
||||
si_cmd_buffer.c \
|
||||
vk_format_table.c \
|
||||
vk_format.h \
|
||||
$(RADV_WS_AMDGPU_FILES)
|
||||
|
||||
VULKAN_WSI_WAYLAND_FILES := \
|
||||
radv_wsi_wayland.c
|
||||
|
||||
VULKAN_WSI_X11_FILES := \
|
||||
radv_wsi_x11.c
|
||||
|
||||
VULKAN_GENERATED_FILES := \
|
||||
radv_entrypoints.c \
|
||||
radv_entrypoints.h \
|
||||
radv_timestamp.h
|
||||
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"file_format_version": "1.0.0",
|
||||
"ICD": {
|
||||
"library_path": "@build_libdir@/libvulkan_radeon.so",
|
||||
"api_version": "1.0.3"
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"file_format_version": "1.0.0",
|
||||
"ICD": {
|
||||
"library_path": "@install_libdir@/libvulkan_radeon.so",
|
||||
"api_version": "1.0.3"
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@@ -1,121 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2016 Red Hat.
|
||||
* Copyright © 2016 Bas Nieuwenhuizen
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef RADV_CS_H
|
||||
#define RADV_CS_H
|
||||
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
#include "r600d_common.h"
|
||||
|
||||
static inline unsigned radeon_check_space(struct radeon_winsys *ws,
|
||||
struct radeon_winsys_cs *cs,
|
||||
unsigned needed)
|
||||
{
|
||||
if (cs->max_dw - cs->cdw < needed)
|
||||
ws->cs_grow(cs, needed);
|
||||
return cs->cdw + needed;
|
||||
}
|
||||
|
||||
static inline void radeon_set_config_reg_seq(struct radeon_winsys_cs *cs, unsigned reg, unsigned num)
|
||||
{
|
||||
assert(reg < R600_CONTEXT_REG_OFFSET);
|
||||
assert(cs->cdw + 2 + num <= cs->max_dw);
|
||||
radeon_emit(cs, PKT3(PKT3_SET_CONFIG_REG, num, 0));
|
||||
radeon_emit(cs, (reg - R600_CONFIG_REG_OFFSET) >> 2);
|
||||
}
|
||||
|
||||
static inline void radeon_set_config_reg(struct radeon_winsys_cs *cs, unsigned reg, unsigned value)
|
||||
{
|
||||
radeon_set_config_reg_seq(cs, reg, 1);
|
||||
radeon_emit(cs, value);
|
||||
}
|
||||
|
||||
static inline void radeon_set_context_reg_seq(struct radeon_winsys_cs *cs, unsigned reg, unsigned num)
|
||||
{
|
||||
assert(reg >= R600_CONTEXT_REG_OFFSET);
|
||||
assert(cs->cdw + 2 + num <= cs->max_dw);
|
||||
radeon_emit(cs, PKT3(PKT3_SET_CONTEXT_REG, num, 0));
|
||||
radeon_emit(cs, (reg - R600_CONTEXT_REG_OFFSET) >> 2);
|
||||
}
|
||||
|
||||
static inline void radeon_set_context_reg(struct radeon_winsys_cs *cs, unsigned reg, unsigned value)
|
||||
{
|
||||
radeon_set_context_reg_seq(cs, reg, 1);
|
||||
radeon_emit(cs, value);
|
||||
}
|
||||
|
||||
|
||||
static inline void radeon_set_context_reg_idx(struct radeon_winsys_cs *cs,
|
||||
unsigned reg, unsigned idx,
|
||||
unsigned value)
|
||||
{
|
||||
assert(reg >= R600_CONTEXT_REG_OFFSET);
|
||||
assert(cs->cdw + 3 <= cs->max_dw);
|
||||
radeon_emit(cs, PKT3(PKT3_SET_CONTEXT_REG, 1, 0));
|
||||
radeon_emit(cs, (reg - R600_CONTEXT_REG_OFFSET) >> 2 | (idx << 28));
|
||||
radeon_emit(cs, value);
|
||||
}
|
||||
|
||||
static inline void radeon_set_sh_reg_seq(struct radeon_winsys_cs *cs, unsigned reg, unsigned num)
|
||||
{
|
||||
assert(reg >= SI_SH_REG_OFFSET && reg < SI_SH_REG_END);
|
||||
assert(cs->cdw + 2 + num <= cs->max_dw);
|
||||
radeon_emit(cs, PKT3(PKT3_SET_SH_REG, num, 0));
|
||||
radeon_emit(cs, (reg - SI_SH_REG_OFFSET) >> 2);
|
||||
}
|
||||
|
||||
static inline void radeon_set_sh_reg(struct radeon_winsys_cs *cs, unsigned reg, unsigned value)
|
||||
{
|
||||
radeon_set_sh_reg_seq(cs, reg, 1);
|
||||
radeon_emit(cs, value);
|
||||
}
|
||||
|
||||
static inline void radeon_set_uconfig_reg_seq(struct radeon_winsys_cs *cs, unsigned reg, unsigned num)
|
||||
{
|
||||
assert(reg >= CIK_UCONFIG_REG_OFFSET && reg < CIK_UCONFIG_REG_END);
|
||||
assert(cs->cdw + 2 + num <= cs->max_dw);
|
||||
radeon_emit(cs, PKT3(PKT3_SET_UCONFIG_REG, num, 0));
|
||||
radeon_emit(cs, (reg - CIK_UCONFIG_REG_OFFSET) >> 2);
|
||||
}
|
||||
|
||||
static inline void radeon_set_uconfig_reg(struct radeon_winsys_cs *cs, unsigned reg, unsigned value)
|
||||
{
|
||||
radeon_set_uconfig_reg_seq(cs, reg, 1);
|
||||
radeon_emit(cs, value);
|
||||
}
|
||||
|
||||
static inline void radeon_set_uconfig_reg_idx(struct radeon_winsys_cs *cs,
|
||||
unsigned reg, unsigned idx,
|
||||
unsigned value)
|
||||
{
|
||||
assert(reg >= CIK_UCONFIG_REG_OFFSET && reg < CIK_UCONFIG_REG_END);
|
||||
assert(cs->cdw + 3 <= cs->max_dw);
|
||||
radeon_emit(cs, PKT3(PKT3_SET_UCONFIG_REG, 1, 0));
|
||||
radeon_emit(cs, (reg - CIK_UCONFIG_REG_OFFSET) >> 2 | (idx << 28));
|
||||
radeon_emit(cs, value);
|
||||
}
|
||||
|
||||
#endif /* RADV_CS_H */
|
@@ -1,717 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2016 Red Hat.
|
||||
* Copyright © 2016 Bas Nieuwenhuizen
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
#include <assert.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include "util/mesa-sha1.h"
|
||||
#include "radv_private.h"
|
||||
#include "sid.h"
|
||||
|
||||
VkResult radv_CreateDescriptorSetLayout(
|
||||
VkDevice _device,
|
||||
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkDescriptorSetLayout* pSetLayout)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_device, device, _device);
|
||||
struct radv_descriptor_set_layout *set_layout;
|
||||
|
||||
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO);
|
||||
|
||||
uint32_t max_binding = 0;
|
||||
uint32_t immutable_sampler_count = 0;
|
||||
for (uint32_t j = 0; j < pCreateInfo->bindingCount; j++) {
|
||||
max_binding = MAX2(max_binding, pCreateInfo->pBindings[j].binding);
|
||||
if (pCreateInfo->pBindings[j].pImmutableSamplers)
|
||||
immutable_sampler_count += pCreateInfo->pBindings[j].descriptorCount;
|
||||
}
|
||||
|
||||
size_t size = sizeof(struct radv_descriptor_set_layout) +
|
||||
(max_binding + 1) * sizeof(set_layout->binding[0]) +
|
||||
immutable_sampler_count * sizeof(struct radv_sampler *);
|
||||
|
||||
set_layout = vk_alloc2(&device->alloc, pAllocator, size, 8,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
if (!set_layout)
|
||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
|
||||
/* We just allocate all the samplers at the end of the struct */
|
||||
struct radv_sampler **samplers =
|
||||
(struct radv_sampler **)&set_layout->binding[max_binding + 1];
|
||||
|
||||
set_layout->binding_count = max_binding + 1;
|
||||
set_layout->shader_stages = 0;
|
||||
set_layout->size = 0;
|
||||
|
||||
memset(set_layout->binding, 0, size - sizeof(struct radv_descriptor_set_layout));
|
||||
|
||||
uint32_t buffer_count = 0;
|
||||
uint32_t dynamic_offset_count = 0;
|
||||
|
||||
for (uint32_t j = 0; j < pCreateInfo->bindingCount; j++) {
|
||||
const VkDescriptorSetLayoutBinding *binding = &pCreateInfo->pBindings[j];
|
||||
uint32_t b = binding->binding;
|
||||
uint32_t alignment;
|
||||
|
||||
switch (binding->descriptorType) {
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
||||
set_layout->binding[b].dynamic_offset_count = 1;
|
||||
set_layout->dynamic_shader_stages |= binding->stageFlags;
|
||||
set_layout->binding[b].size = 0;
|
||||
set_layout->binding[b].buffer_count = 1;
|
||||
alignment = 1;
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
||||
set_layout->binding[b].size = 16;
|
||||
set_layout->binding[b].buffer_count = 1;
|
||||
alignment = 16;
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
||||
/* main descriptor + fmask descriptor */
|
||||
set_layout->binding[b].size = 64;
|
||||
set_layout->binding[b].buffer_count = 1;
|
||||
alignment = 32;
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
||||
/* main descriptor + fmask descriptor + sampler */
|
||||
set_layout->binding[b].size = 96;
|
||||
set_layout->binding[b].buffer_count = 1;
|
||||
alignment = 32;
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
||||
set_layout->binding[b].size = 16;
|
||||
alignment = 16;
|
||||
break;
|
||||
default:
|
||||
unreachable("unknown descriptor type\n");
|
||||
break;
|
||||
}
|
||||
|
||||
set_layout->size = align(set_layout->size, alignment);
|
||||
assert(binding->descriptorCount > 0);
|
||||
set_layout->binding[b].type = binding->descriptorType;
|
||||
set_layout->binding[b].array_size = binding->descriptorCount;
|
||||
set_layout->binding[b].offset = set_layout->size;
|
||||
set_layout->binding[b].buffer_offset = buffer_count;
|
||||
set_layout->binding[b].dynamic_offset_offset = dynamic_offset_count;
|
||||
|
||||
set_layout->size += binding->descriptorCount * set_layout->binding[b].size;
|
||||
buffer_count += binding->descriptorCount * set_layout->binding[b].buffer_count;
|
||||
dynamic_offset_count += binding->descriptorCount *
|
||||
set_layout->binding[b].dynamic_offset_count;
|
||||
|
||||
|
||||
if (binding->pImmutableSamplers) {
|
||||
set_layout->binding[b].immutable_samplers = samplers;
|
||||
samplers += binding->descriptorCount;
|
||||
|
||||
for (uint32_t i = 0; i < binding->descriptorCount; i++)
|
||||
set_layout->binding[b].immutable_samplers[i] =
|
||||
radv_sampler_from_handle(binding->pImmutableSamplers[i]);
|
||||
} else {
|
||||
set_layout->binding[b].immutable_samplers = NULL;
|
||||
}
|
||||
|
||||
set_layout->shader_stages |= binding->stageFlags;
|
||||
}
|
||||
|
||||
set_layout->buffer_count = buffer_count;
|
||||
set_layout->dynamic_offset_count = dynamic_offset_count;
|
||||
|
||||
*pSetLayout = radv_descriptor_set_layout_to_handle(set_layout);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
void radv_DestroyDescriptorSetLayout(
|
||||
VkDevice _device,
|
||||
VkDescriptorSetLayout _set_layout,
|
||||
const VkAllocationCallbacks* pAllocator)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_device, device, _device);
|
||||
RADV_FROM_HANDLE(radv_descriptor_set_layout, set_layout, _set_layout);
|
||||
|
||||
if (!set_layout)
|
||||
return;
|
||||
|
||||
vk_free2(&device->alloc, pAllocator, set_layout);
|
||||
}
|
||||
|
||||
/*
|
||||
* Pipeline layouts. These have nothing to do with the pipeline. They are
|
||||
* just muttiple descriptor set layouts pasted together
|
||||
*/
|
||||
|
||||
VkResult radv_CreatePipelineLayout(
|
||||
VkDevice _device,
|
||||
const VkPipelineLayoutCreateInfo* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkPipelineLayout* pPipelineLayout)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_device, device, _device);
|
||||
struct radv_pipeline_layout *layout;
|
||||
struct mesa_sha1 *ctx;
|
||||
|
||||
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO);
|
||||
|
||||
layout = vk_alloc2(&device->alloc, pAllocator, sizeof(*layout), 8,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
if (layout == NULL)
|
||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
|
||||
layout->num_sets = pCreateInfo->setLayoutCount;
|
||||
|
||||
unsigned dynamic_offset_count = 0;
|
||||
|
||||
|
||||
ctx = _mesa_sha1_init();
|
||||
for (uint32_t set = 0; set < pCreateInfo->setLayoutCount; set++) {
|
||||
RADV_FROM_HANDLE(radv_descriptor_set_layout, set_layout,
|
||||
pCreateInfo->pSetLayouts[set]);
|
||||
layout->set[set].layout = set_layout;
|
||||
|
||||
layout->set[set].dynamic_offset_start = dynamic_offset_count;
|
||||
for (uint32_t b = 0; b < set_layout->binding_count; b++) {
|
||||
dynamic_offset_count += set_layout->binding[b].array_size * set_layout->binding[b].dynamic_offset_count;
|
||||
}
|
||||
_mesa_sha1_update(ctx, set_layout->binding,
|
||||
sizeof(set_layout->binding[0]) * set_layout->binding_count);
|
||||
}
|
||||
|
||||
layout->dynamic_offset_count = dynamic_offset_count;
|
||||
layout->push_constant_size = 0;
|
||||
for (unsigned i = 0; i < pCreateInfo->pushConstantRangeCount; ++i) {
|
||||
const VkPushConstantRange *range = pCreateInfo->pPushConstantRanges + i;
|
||||
layout->push_constant_size = MAX2(layout->push_constant_size,
|
||||
range->offset + range->size);
|
||||
}
|
||||
|
||||
layout->push_constant_size = align(layout->push_constant_size, 16);
|
||||
_mesa_sha1_update(ctx, &layout->push_constant_size,
|
||||
sizeof(layout->push_constant_size));
|
||||
_mesa_sha1_final(ctx, layout->sha1);
|
||||
*pPipelineLayout = radv_pipeline_layout_to_handle(layout);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
void radv_DestroyPipelineLayout(
|
||||
VkDevice _device,
|
||||
VkPipelineLayout _pipelineLayout,
|
||||
const VkAllocationCallbacks* pAllocator)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_device, device, _device);
|
||||
RADV_FROM_HANDLE(radv_pipeline_layout, pipeline_layout, _pipelineLayout);
|
||||
|
||||
if (!pipeline_layout)
|
||||
return;
|
||||
vk_free2(&device->alloc, pAllocator, pipeline_layout);
|
||||
}
|
||||
|
||||
#define EMPTY 1
|
||||
|
||||
static VkResult
|
||||
radv_descriptor_set_create(struct radv_device *device,
|
||||
struct radv_descriptor_pool *pool,
|
||||
struct radv_cmd_buffer *cmd_buffer,
|
||||
const struct radv_descriptor_set_layout *layout,
|
||||
struct radv_descriptor_set **out_set)
|
||||
{
|
||||
struct radv_descriptor_set *set;
|
||||
unsigned mem_size = sizeof(struct radv_descriptor_set) +
|
||||
sizeof(struct radeon_winsys_bo *) * layout->buffer_count;
|
||||
set = vk_alloc2(&device->alloc, NULL, mem_size, 8,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
|
||||
if (!set)
|
||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
|
||||
memset(set, 0, mem_size);
|
||||
|
||||
if (layout->dynamic_offset_count) {
|
||||
unsigned size = sizeof(struct radv_descriptor_range) *
|
||||
layout->dynamic_offset_count;
|
||||
set->dynamic_descriptors = vk_alloc2(&device->alloc, NULL, size, 8,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
|
||||
if (!set->dynamic_descriptors) {
|
||||
vk_free2(&device->alloc, NULL, set);
|
||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
}
|
||||
}
|
||||
|
||||
set->layout = layout;
|
||||
if (layout->size) {
|
||||
uint32_t layout_size = align_u32(layout->size, 32);
|
||||
set->size = layout->size;
|
||||
if (!cmd_buffer) {
|
||||
if (pool->current_offset + layout_size <= pool->size) {
|
||||
set->bo = pool->bo;
|
||||
set->mapped_ptr = (uint32_t*)(pool->mapped_ptr + pool->current_offset);
|
||||
set->va = device->ws->buffer_get_va(set->bo) + pool->current_offset;
|
||||
pool->current_offset += layout_size;
|
||||
|
||||
} else {
|
||||
int entry = pool->free_list, prev_entry = -1;
|
||||
uint32_t offset;
|
||||
while (entry >= 0) {
|
||||
if (pool->free_nodes[entry].size >= layout_size) {
|
||||
if (prev_entry >= 0)
|
||||
pool->free_nodes[prev_entry].next = pool->free_nodes[entry].next;
|
||||
else
|
||||
pool->free_list = pool->free_nodes[entry].next;
|
||||
break;
|
||||
}
|
||||
prev_entry = entry;
|
||||
entry = pool->free_nodes[entry].next;
|
||||
}
|
||||
|
||||
if (entry < 0) {
|
||||
vk_free2(&device->alloc, NULL, set);
|
||||
return vk_error(VK_ERROR_OUT_OF_DEVICE_MEMORY);
|
||||
}
|
||||
offset = pool->free_nodes[entry].offset;
|
||||
pool->free_nodes[entry].next = pool->full_list;
|
||||
pool->full_list = entry;
|
||||
|
||||
set->bo = pool->bo;
|
||||
set->mapped_ptr = (uint32_t*)(pool->mapped_ptr + offset);
|
||||
set->va = device->ws->buffer_get_va(set->bo) + offset;
|
||||
}
|
||||
} else {
|
||||
unsigned bo_offset;
|
||||
if (!radv_cmd_buffer_upload_alloc(cmd_buffer, set->size, 32,
|
||||
&bo_offset,
|
||||
(void**)&set->mapped_ptr)) {
|
||||
vk_free2(&device->alloc, NULL, set->dynamic_descriptors);
|
||||
vk_free2(&device->alloc, NULL, set);
|
||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
}
|
||||
|
||||
set->va = device->ws->buffer_get_va(cmd_buffer->upload.upload_bo);
|
||||
set->va += bo_offset;
|
||||
}
|
||||
}
|
||||
|
||||
if (pool)
|
||||
list_add(&set->descriptor_pool, &pool->descriptor_sets);
|
||||
else
|
||||
list_inithead(&set->descriptor_pool);
|
||||
|
||||
for (unsigned i = 0; i < layout->binding_count; ++i) {
|
||||
if (!layout->binding[i].immutable_samplers)
|
||||
continue;
|
||||
|
||||
unsigned offset = layout->binding[i].offset / 4;
|
||||
if (layout->binding[i].type == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER)
|
||||
offset += 16;
|
||||
|
||||
for (unsigned j = 0; j < layout->binding[i].array_size; ++j) {
|
||||
struct radv_sampler* sampler = layout->binding[i].immutable_samplers[j];
|
||||
|
||||
memcpy(set->mapped_ptr + offset, &sampler->state, 16);
|
||||
offset += layout->binding[i].size / 4;
|
||||
}
|
||||
|
||||
}
|
||||
*out_set = set;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
static void
|
||||
radv_descriptor_set_destroy(struct radv_device *device,
|
||||
struct radv_descriptor_pool *pool,
|
||||
struct radv_descriptor_set *set,
|
||||
bool free_bo)
|
||||
{
|
||||
if (free_bo && set->size) {
|
||||
assert(pool->full_list >= 0);
|
||||
int next = pool->free_nodes[pool->full_list].next;
|
||||
pool->free_nodes[pool->full_list].next = pool->free_list;
|
||||
pool->free_nodes[pool->full_list].offset = (uint8_t*)set->mapped_ptr - pool->mapped_ptr;
|
||||
pool->free_nodes[pool->full_list].size = align_u32(set->size, 32);
|
||||
pool->free_list = pool->full_list;
|
||||
pool->full_list = next;
|
||||
}
|
||||
if (set->dynamic_descriptors)
|
||||
vk_free2(&device->alloc, NULL, set->dynamic_descriptors);
|
||||
if (!list_empty(&set->descriptor_pool))
|
||||
list_del(&set->descriptor_pool);
|
||||
vk_free2(&device->alloc, NULL, set);
|
||||
}
|
||||
|
||||
VkResult
|
||||
radv_temp_descriptor_set_create(struct radv_device *device,
|
||||
struct radv_cmd_buffer *cmd_buffer,
|
||||
VkDescriptorSetLayout _layout,
|
||||
VkDescriptorSet *_set)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_descriptor_set_layout, layout, _layout);
|
||||
struct radv_descriptor_set *set;
|
||||
VkResult ret;
|
||||
|
||||
ret = radv_descriptor_set_create(device, NULL, cmd_buffer, layout, &set);
|
||||
*_set = radv_descriptor_set_to_handle(set);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void
|
||||
radv_temp_descriptor_set_destroy(struct radv_device *device,
|
||||
VkDescriptorSet _set)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_descriptor_set, set, _set);
|
||||
|
||||
radv_descriptor_set_destroy(device, NULL, set, false);
|
||||
}
|
||||
|
||||
VkResult radv_CreateDescriptorPool(
|
||||
VkDevice _device,
|
||||
const VkDescriptorPoolCreateInfo* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkDescriptorPool* pDescriptorPool)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_device, device, _device);
|
||||
struct radv_descriptor_pool *pool;
|
||||
unsigned max_sets = pCreateInfo->maxSets * 2;
|
||||
int size = sizeof(struct radv_descriptor_pool) +
|
||||
max_sets * sizeof(struct radv_descriptor_pool_free_node);
|
||||
uint64_t bo_size = 0;
|
||||
pool = vk_alloc2(&device->alloc, pAllocator, size, 8,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
if (!pool)
|
||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
|
||||
memset(pool, 0, sizeof(*pool));
|
||||
|
||||
pool->free_list = -1;
|
||||
pool->full_list = 0;
|
||||
pool->free_nodes[max_sets - 1].next = -1;
|
||||
pool->max_sets = max_sets;
|
||||
|
||||
for (int i = 0; i + 1 < max_sets; ++i)
|
||||
pool->free_nodes[i].next = i + 1;
|
||||
|
||||
for (unsigned i = 0; i < pCreateInfo->poolSizeCount; ++i) {
|
||||
switch(pCreateInfo->pPoolSizes[i].type) {
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
||||
/* 32 as we may need to align for images */
|
||||
bo_size += 32 * pCreateInfo->pPoolSizes[i].descriptorCount;
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
||||
bo_size += 64 * pCreateInfo->pPoolSizes[i].descriptorCount;
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
||||
bo_size += 96 * pCreateInfo->pPoolSizes[i].descriptorCount;
|
||||
break;
|
||||
default:
|
||||
unreachable("unknown descriptor type\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bo_size) {
|
||||
pool->bo = device->ws->buffer_create(device->ws, bo_size,
|
||||
32, RADEON_DOMAIN_VRAM, 0);
|
||||
pool->mapped_ptr = (uint8_t*)device->ws->buffer_map(pool->bo);
|
||||
}
|
||||
pool->size = bo_size;
|
||||
|
||||
list_inithead(&pool->descriptor_sets);
|
||||
*pDescriptorPool = radv_descriptor_pool_to_handle(pool);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
void radv_DestroyDescriptorPool(
|
||||
VkDevice _device,
|
||||
VkDescriptorPool _pool,
|
||||
const VkAllocationCallbacks* pAllocator)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_device, device, _device);
|
||||
RADV_FROM_HANDLE(radv_descriptor_pool, pool, _pool);
|
||||
|
||||
if (!pool)
|
||||
return;
|
||||
|
||||
list_for_each_entry_safe(struct radv_descriptor_set, set,
|
||||
&pool->descriptor_sets, descriptor_pool) {
|
||||
radv_descriptor_set_destroy(device, pool, set, false);
|
||||
}
|
||||
|
||||
if (pool->bo)
|
||||
device->ws->buffer_destroy(pool->bo);
|
||||
vk_free2(&device->alloc, pAllocator, pool);
|
||||
}
|
||||
|
||||
VkResult radv_ResetDescriptorPool(
|
||||
VkDevice _device,
|
||||
VkDescriptorPool descriptorPool,
|
||||
VkDescriptorPoolResetFlags flags)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_device, device, _device);
|
||||
RADV_FROM_HANDLE(radv_descriptor_pool, pool, descriptorPool);
|
||||
|
||||
list_for_each_entry_safe(struct radv_descriptor_set, set,
|
||||
&pool->descriptor_sets, descriptor_pool) {
|
||||
radv_descriptor_set_destroy(device, pool, set, false);
|
||||
}
|
||||
|
||||
pool->current_offset = 0;
|
||||
pool->free_list = -1;
|
||||
pool->full_list = 0;
|
||||
pool->free_nodes[pool->max_sets - 1].next = -1;
|
||||
|
||||
for (int i = 0; i + 1 < pool->max_sets; ++i)
|
||||
pool->free_nodes[i].next = i + 1;
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VkResult radv_AllocateDescriptorSets(
|
||||
VkDevice _device,
|
||||
const VkDescriptorSetAllocateInfo* pAllocateInfo,
|
||||
VkDescriptorSet* pDescriptorSets)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_device, device, _device);
|
||||
RADV_FROM_HANDLE(radv_descriptor_pool, pool, pAllocateInfo->descriptorPool);
|
||||
|
||||
VkResult result = VK_SUCCESS;
|
||||
uint32_t i;
|
||||
struct radv_descriptor_set *set;
|
||||
|
||||
/* allocate a set of buffers for each shader to contain descriptors */
|
||||
for (i = 0; i < pAllocateInfo->descriptorSetCount; i++) {
|
||||
RADV_FROM_HANDLE(radv_descriptor_set_layout, layout,
|
||||
pAllocateInfo->pSetLayouts[i]);
|
||||
|
||||
result = radv_descriptor_set_create(device, pool, NULL, layout, &set);
|
||||
if (result != VK_SUCCESS)
|
||||
break;
|
||||
|
||||
pDescriptorSets[i] = radv_descriptor_set_to_handle(set);
|
||||
}
|
||||
|
||||
if (result != VK_SUCCESS)
|
||||
radv_FreeDescriptorSets(_device, pAllocateInfo->descriptorPool,
|
||||
i, pDescriptorSets);
|
||||
return result;
|
||||
}
|
||||
|
||||
VkResult radv_FreeDescriptorSets(
|
||||
VkDevice _device,
|
||||
VkDescriptorPool descriptorPool,
|
||||
uint32_t count,
|
||||
const VkDescriptorSet* pDescriptorSets)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_device, device, _device);
|
||||
RADV_FROM_HANDLE(radv_descriptor_pool, pool, descriptorPool);
|
||||
|
||||
for (uint32_t i = 0; i < count; i++) {
|
||||
RADV_FROM_HANDLE(radv_descriptor_set, set, pDescriptorSets[i]);
|
||||
|
||||
if (set)
|
||||
radv_descriptor_set_destroy(device, pool, set, true);
|
||||
}
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
static void write_texel_buffer_descriptor(struct radv_device *device,
|
||||
unsigned *dst,
|
||||
struct radeon_winsys_bo **buffer_list,
|
||||
const VkBufferView _buffer_view)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_buffer_view, buffer_view, _buffer_view);
|
||||
|
||||
memcpy(dst, buffer_view->state, 4 * 4);
|
||||
*buffer_list = buffer_view->bo;
|
||||
}
|
||||
|
||||
static void write_buffer_descriptor(struct radv_device *device,
|
||||
unsigned *dst,
|
||||
struct radeon_winsys_bo **buffer_list,
|
||||
const VkDescriptorBufferInfo *buffer_info)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_buffer, buffer, buffer_info->buffer);
|
||||
uint64_t va = device->ws->buffer_get_va(buffer->bo);
|
||||
uint32_t range = buffer_info->range;
|
||||
|
||||
if (buffer_info->range == VK_WHOLE_SIZE)
|
||||
range = buffer->size - buffer_info->offset;
|
||||
|
||||
va += buffer_info->offset + buffer->offset;
|
||||
dst[0] = va;
|
||||
dst[1] = S_008F04_BASE_ADDRESS_HI(va >> 32);
|
||||
dst[2] = range;
|
||||
dst[3] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) |
|
||||
S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
||||
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) |
|
||||
S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W) |
|
||||
S_008F0C_NUM_FORMAT(V_008F0C_BUF_NUM_FORMAT_FLOAT) |
|
||||
S_008F0C_DATA_FORMAT(V_008F0C_BUF_DATA_FORMAT_32);
|
||||
|
||||
*buffer_list = buffer->bo;
|
||||
}
|
||||
|
||||
static void write_dynamic_buffer_descriptor(struct radv_device *device,
|
||||
struct radv_descriptor_range *range,
|
||||
struct radeon_winsys_bo **buffer_list,
|
||||
const VkDescriptorBufferInfo *buffer_info)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_buffer, buffer, buffer_info->buffer);
|
||||
uint64_t va = device->ws->buffer_get_va(buffer->bo);
|
||||
unsigned size = buffer_info->range;
|
||||
|
||||
if (buffer_info->range == VK_WHOLE_SIZE)
|
||||
size = buffer->size - buffer_info->offset;
|
||||
|
||||
va += buffer_info->offset + buffer->offset;
|
||||
range->va = va;
|
||||
range->size = size;
|
||||
|
||||
*buffer_list = buffer->bo;
|
||||
}
|
||||
|
||||
static void
|
||||
write_image_descriptor(struct radv_device *device,
|
||||
unsigned *dst,
|
||||
struct radeon_winsys_bo **buffer_list,
|
||||
const VkDescriptorImageInfo *image_info)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_image_view, iview, image_info->imageView);
|
||||
memcpy(dst, iview->descriptor, 8 * 4);
|
||||
memcpy(dst + 8, iview->fmask_descriptor, 8 * 4);
|
||||
*buffer_list = iview->bo;
|
||||
}
|
||||
|
||||
static void
|
||||
write_combined_image_sampler_descriptor(struct radv_device *device,
|
||||
unsigned *dst,
|
||||
struct radeon_winsys_bo **buffer_list,
|
||||
const VkDescriptorImageInfo *image_info,
|
||||
bool has_sampler)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_sampler, sampler, image_info->sampler);
|
||||
|
||||
write_image_descriptor(device, dst, buffer_list, image_info);
|
||||
/* copy over sampler state */
|
||||
if (has_sampler)
|
||||
memcpy(dst + 16, sampler->state, 16);
|
||||
}
|
||||
|
||||
static void
|
||||
write_sampler_descriptor(struct radv_device *device,
|
||||
unsigned *dst,
|
||||
const VkDescriptorImageInfo *image_info)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_sampler, sampler, image_info->sampler);
|
||||
|
||||
memcpy(dst, sampler->state, 16);
|
||||
}
|
||||
|
||||
void radv_UpdateDescriptorSets(
|
||||
VkDevice _device,
|
||||
uint32_t descriptorWriteCount,
|
||||
const VkWriteDescriptorSet* pDescriptorWrites,
|
||||
uint32_t descriptorCopyCount,
|
||||
const VkCopyDescriptorSet* pDescriptorCopies)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_device, device, _device);
|
||||
uint32_t i, j;
|
||||
for (i = 0; i < descriptorWriteCount; i++) {
|
||||
const VkWriteDescriptorSet *writeset = &pDescriptorWrites[i];
|
||||
RADV_FROM_HANDLE(radv_descriptor_set, set, writeset->dstSet);
|
||||
const struct radv_descriptor_set_binding_layout *binding_layout =
|
||||
set->layout->binding + writeset->dstBinding;
|
||||
uint32_t *ptr = set->mapped_ptr;
|
||||
struct radeon_winsys_bo **buffer_list = set->descriptors;
|
||||
|
||||
ptr += binding_layout->offset / 4;
|
||||
ptr += binding_layout->size * writeset->dstArrayElement / 4;
|
||||
buffer_list += binding_layout->buffer_offset;
|
||||
buffer_list += binding_layout->buffer_count * writeset->dstArrayElement;
|
||||
for (j = 0; j < writeset->descriptorCount; ++j) {
|
||||
switch(writeset->descriptorType) {
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: {
|
||||
unsigned idx = writeset->dstArrayElement + j;
|
||||
idx += binding_layout->dynamic_offset_offset;
|
||||
write_dynamic_buffer_descriptor(device, set->dynamic_descriptors + idx,
|
||||
buffer_list, writeset->pBufferInfo + j);
|
||||
break;
|
||||
}
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
||||
write_buffer_descriptor(device, ptr, buffer_list,
|
||||
writeset->pBufferInfo + j);
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
||||
write_texel_buffer_descriptor(device, ptr, buffer_list,
|
||||
writeset->pTexelBufferView[j]);
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
||||
write_image_descriptor(device, ptr, buffer_list,
|
||||
writeset->pImageInfo + j);
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
||||
write_combined_image_sampler_descriptor(device, ptr, buffer_list,
|
||||
writeset->pImageInfo + j,
|
||||
!binding_layout->immutable_samplers);
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
||||
assert(!binding_layout->immutable_samplers);
|
||||
write_sampler_descriptor(device, ptr,
|
||||
writeset->pImageInfo + j);
|
||||
break;
|
||||
default:
|
||||
unreachable("unimplemented descriptor type");
|
||||
break;
|
||||
}
|
||||
ptr += binding_layout->size / 4;
|
||||
buffer_list += binding_layout->buffer_count;
|
||||
}
|
||||
|
||||
}
|
||||
if (descriptorCopyCount)
|
||||
radv_finishme("copy descriptors");
|
||||
}
|
@@ -1,85 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2016 Bas Nieuwenhuizen
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef RADV_DESCRIPTOR_SET_H
|
||||
#define RADV_DESCRIPTOR_SET_H
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#define MAX_SETS 8
|
||||
|
||||
struct radv_descriptor_set_binding_layout {
|
||||
VkDescriptorType type;
|
||||
|
||||
/* Number of array elements in this binding */
|
||||
uint16_t array_size;
|
||||
|
||||
uint16_t offset;
|
||||
uint16_t buffer_offset;
|
||||
uint16_t dynamic_offset_offset;
|
||||
|
||||
/* redundant with the type, each for a single array element */
|
||||
uint16_t size;
|
||||
uint16_t buffer_count;
|
||||
uint16_t dynamic_offset_count;
|
||||
|
||||
/* Immutable samplers (or NULL if no immutable samplers) */
|
||||
struct radv_sampler **immutable_samplers;
|
||||
};
|
||||
|
||||
struct radv_descriptor_set_layout {
|
||||
/* Number of bindings in this descriptor set */
|
||||
uint16_t binding_count;
|
||||
|
||||
/* Total size of the descriptor set with room for all array entries */
|
||||
uint16_t size;
|
||||
|
||||
/* Shader stages affected by this descriptor set */
|
||||
uint16_t shader_stages;
|
||||
uint16_t dynamic_shader_stages;
|
||||
|
||||
/* Number of buffers in this descriptor set */
|
||||
uint16_t buffer_count;
|
||||
|
||||
/* Number of dynamic offsets used by this descriptor set */
|
||||
uint16_t dynamic_offset_count;
|
||||
|
||||
/* Bindings in this descriptor set */
|
||||
struct radv_descriptor_set_binding_layout binding[0];
|
||||
};
|
||||
|
||||
struct radv_pipeline_layout {
|
||||
struct {
|
||||
struct radv_descriptor_set_layout *layout;
|
||||
uint32_t size;
|
||||
uint32_t dynamic_offset_start;
|
||||
} set[MAX_SETS];
|
||||
|
||||
uint32_t num_sets;
|
||||
uint32_t push_constant_size;
|
||||
uint32_t dynamic_offset_count;
|
||||
|
||||
unsigned char sha1[20];
|
||||
};
|
||||
|
||||
#endif /* RADV_DESCRIPTOR_SET_H */
|
File diff suppressed because it is too large
Load Diff
@@ -1,293 +0,0 @@
|
||||
# coding=utf-8
|
||||
#
|
||||
# Copyright © 2015 Intel Corporation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
import fileinput, re, sys
|
||||
|
||||
# Each function typedef in the vulkan.h header is all on one line and matches
|
||||
# this regepx. We hope that won't change.
|
||||
|
||||
p = re.compile('typedef ([^ ]*) *\((?:VKAPI_PTR)? *\*PFN_vk([^(]*)\)(.*);')
|
||||
|
||||
entrypoints = []
|
||||
|
||||
# We generate a static hash table for entry point lookup
|
||||
# (vkGetProcAddress). We use a linear congruential generator for our hash
|
||||
# function and a power-of-two size table. The prime numbers are determined
|
||||
# experimentally.
|
||||
|
||||
none = 0xffff
|
||||
hash_size = 256
|
||||
u32_mask = 2**32 - 1
|
||||
hash_mask = hash_size - 1
|
||||
|
||||
prime_factor = 5024183
|
||||
prime_step = 19
|
||||
|
||||
def hash(name):
|
||||
h = 0;
|
||||
for c in name:
|
||||
h = (h * prime_factor + ord(c)) & u32_mask
|
||||
|
||||
return h
|
||||
|
||||
def get_platform_guard_macro(name):
|
||||
if "Xlib" in name:
|
||||
return "VK_USE_PLATFORM_XLIB_KHR"
|
||||
elif "Xcb" in name:
|
||||
return "VK_USE_PLATFORM_XCB_KHR"
|
||||
elif "Wayland" in name:
|
||||
return "VK_USE_PLATFORM_WAYLAND_KHR"
|
||||
elif "Mir" in name:
|
||||
return "VK_USE_PLATFORM_MIR_KHR"
|
||||
elif "Android" in name:
|
||||
return "VK_USE_PLATFORM_ANDROID_KHR"
|
||||
elif "Win32" in name:
|
||||
return "VK_USE_PLATFORM_WIN32_KHR"
|
||||
else:
|
||||
return None
|
||||
|
||||
def print_guard_start(name):
|
||||
guard = get_platform_guard_macro(name)
|
||||
if guard is not None:
|
||||
print "#ifdef {0}".format(guard)
|
||||
|
||||
def print_guard_end(name):
|
||||
guard = get_platform_guard_macro(name)
|
||||
if guard is not None:
|
||||
print "#endif // {0}".format(guard)
|
||||
|
||||
opt_header = False
|
||||
opt_code = False
|
||||
|
||||
if (sys.argv[1] == "header"):
|
||||
opt_header = True
|
||||
sys.argv.pop()
|
||||
elif (sys.argv[1] == "code"):
|
||||
opt_code = True
|
||||
sys.argv.pop()
|
||||
|
||||
# Parse the entry points in the header
|
||||
|
||||
i = 0
|
||||
for line in fileinput.input():
|
||||
m = p.match(line)
|
||||
if (m):
|
||||
if m.group(2) == 'VoidFunction':
|
||||
continue
|
||||
fullname = "vk" + m.group(2)
|
||||
h = hash(fullname)
|
||||
entrypoints.append((m.group(1), m.group(2), m.group(3), i, h))
|
||||
i = i + 1
|
||||
|
||||
# For outputting entrypoints.h we generate a radv_EntryPoint() prototype
|
||||
# per entry point.
|
||||
|
||||
if opt_header:
|
||||
print "/* This file generated from vk_gen.py, don't edit directly. */\n"
|
||||
|
||||
print "struct radv_dispatch_table {"
|
||||
print " union {"
|
||||
print " void *entrypoints[%d];" % len(entrypoints)
|
||||
print " struct {"
|
||||
|
||||
for type, name, args, num, h in entrypoints:
|
||||
guard = get_platform_guard_macro(name)
|
||||
if guard is not None:
|
||||
print "#ifdef {0}".format(guard)
|
||||
print " PFN_vk{0} {0};".format(name)
|
||||
print "#else"
|
||||
print " void *{0};".format(name)
|
||||
print "#endif"
|
||||
else:
|
||||
print " PFN_vk{0} {0};".format(name)
|
||||
print " };\n"
|
||||
print " };\n"
|
||||
print "};\n"
|
||||
|
||||
for type, name, args, num, h in entrypoints:
|
||||
print_guard_start(name)
|
||||
print "%s radv_%s%s;" % (type, name, args)
|
||||
print_guard_end(name)
|
||||
exit()
|
||||
|
||||
|
||||
|
||||
print """/*
|
||||
* Copyright © 2015 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* DO NOT EDIT! This is a generated file. */
|
||||
|
||||
#include "radv_private.h"
|
||||
|
||||
struct radv_entrypoint {
|
||||
uint32_t name;
|
||||
uint32_t hash;
|
||||
};
|
||||
|
||||
/* We use a big string constant to avoid lots of reloctions from the entry
|
||||
* point table to lots of little strings. The entries in the entry point table
|
||||
* store the index into this big string.
|
||||
*/
|
||||
|
||||
static const char strings[] ="""
|
||||
|
||||
offsets = []
|
||||
i = 0;
|
||||
for type, name, args, num, h in entrypoints:
|
||||
print " \"vk%s\\0\"" % name
|
||||
offsets.append(i)
|
||||
i += 2 + len(name) + 1
|
||||
print " ;"
|
||||
|
||||
# Now generate the table of all entry points
|
||||
|
||||
print "\nstatic const struct radv_entrypoint entrypoints[] = {"
|
||||
for type, name, args, num, h in entrypoints:
|
||||
print " { %5d, 0x%08x }," % (offsets[num], h)
|
||||
print "};\n"
|
||||
|
||||
print """
|
||||
|
||||
/* Weak aliases for all potential implementations. These will resolve to
|
||||
* NULL if they're not defined, which lets the resolve_entrypoint() function
|
||||
* either pick the correct entry point.
|
||||
*/
|
||||
"""
|
||||
|
||||
for layer in [ "radv" ]:
|
||||
for type, name, args, num, h in entrypoints:
|
||||
print_guard_start(name)
|
||||
print "%s %s_%s%s __attribute__ ((weak));" % (type, layer, name, args)
|
||||
print_guard_end(name)
|
||||
print "\nconst struct radv_dispatch_table %s_layer = {" % layer
|
||||
for type, name, args, num, h in entrypoints:
|
||||
print_guard_start(name)
|
||||
print " .%s = %s_%s," % (name, layer, name)
|
||||
print_guard_end(name)
|
||||
print "};\n"
|
||||
|
||||
print """
|
||||
|
||||
void * __attribute__ ((noinline))
|
||||
radv_resolve_entrypoint(uint32_t index)
|
||||
{
|
||||
return radv_layer.entrypoints[index];
|
||||
}
|
||||
"""
|
||||
|
||||
# Now generate the hash table used for entry point look up. This is a
|
||||
# uint16_t table of entry point indices. We use 0xffff to indicate an entry
|
||||
# in the hash table is empty.
|
||||
|
||||
map = [none for f in xrange(hash_size)]
|
||||
collisions = [0 for f in xrange(10)]
|
||||
for type, name, args, num, h in entrypoints:
|
||||
level = 0
|
||||
while map[h & hash_mask] != none:
|
||||
h = h + prime_step
|
||||
level = level + 1
|
||||
if level > 9:
|
||||
collisions[9] += 1
|
||||
else:
|
||||
collisions[level] += 1
|
||||
map[h & hash_mask] = num
|
||||
|
||||
print "/* Hash table stats:"
|
||||
print " * size %d entries" % hash_size
|
||||
print " * collisions entries"
|
||||
for i in xrange(10):
|
||||
if (i == 9):
|
||||
plus = "+"
|
||||
else:
|
||||
plus = " "
|
||||
|
||||
print " * %2d%s %4d" % (i, plus, collisions[i])
|
||||
print " */\n"
|
||||
|
||||
print "#define none 0x%04x\n" % none
|
||||
|
||||
print "static const uint16_t map[] = {"
|
||||
for i in xrange(0, hash_size, 8):
|
||||
print " ",
|
||||
for j in xrange(i, i + 8):
|
||||
if map[j] & 0xffff == 0xffff:
|
||||
print " none,",
|
||||
else:
|
||||
print "0x%04x," % (map[j] & 0xffff),
|
||||
print
|
||||
|
||||
print "};"
|
||||
|
||||
# Finally we generate the hash table lookup function. The hash function and
|
||||
# linear probing algorithm matches the hash table generated above.
|
||||
|
||||
print """
|
||||
void *
|
||||
radv_lookup_entrypoint(const char *name)
|
||||
{
|
||||
static const uint32_t prime_factor = %d;
|
||||
static const uint32_t prime_step = %d;
|
||||
const struct radv_entrypoint *e;
|
||||
uint32_t hash, h, i;
|
||||
const char *p;
|
||||
|
||||
hash = 0;
|
||||
for (p = name; *p; p++)
|
||||
hash = hash * prime_factor + *p;
|
||||
|
||||
h = hash;
|
||||
do {
|
||||
i = map[h & %d];
|
||||
if (i == none)
|
||||
return NULL;
|
||||
e = &entrypoints[i];
|
||||
h += prime_step;
|
||||
} while (e->hash != hash);
|
||||
|
||||
if (strcmp(name, strings + e->name) != 0)
|
||||
return NULL;
|
||||
|
||||
return radv_resolve_entrypoint(i);
|
||||
}
|
||||
""" % (prime_factor, prime_step, hash_mask)
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,388 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2016 Red Hat
|
||||
* based on intel anv code:
|
||||
* Copyright © 2015 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "radv_meta.h"
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
#include <pwd.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
void
|
||||
radv_meta_save(struct radv_meta_saved_state *state,
|
||||
const struct radv_cmd_buffer *cmd_buffer,
|
||||
uint32_t dynamic_mask)
|
||||
{
|
||||
state->old_pipeline = cmd_buffer->state.pipeline;
|
||||
state->old_descriptor_set0 = cmd_buffer->state.descriptors[0];
|
||||
memcpy(state->old_vertex_bindings, cmd_buffer->state.vertex_bindings,
|
||||
sizeof(state->old_vertex_bindings));
|
||||
|
||||
state->dynamic_mask = dynamic_mask;
|
||||
radv_dynamic_state_copy(&state->dynamic, &cmd_buffer->state.dynamic,
|
||||
dynamic_mask);
|
||||
|
||||
memcpy(state->push_constants, cmd_buffer->push_constants, MAX_PUSH_CONSTANTS_SIZE);
|
||||
}
|
||||
|
||||
void
|
||||
radv_meta_restore(const struct radv_meta_saved_state *state,
|
||||
struct radv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
cmd_buffer->state.pipeline = state->old_pipeline;
|
||||
radv_bind_descriptor_set(cmd_buffer, state->old_descriptor_set0, 0);
|
||||
memcpy(cmd_buffer->state.vertex_bindings, state->old_vertex_bindings,
|
||||
sizeof(state->old_vertex_bindings));
|
||||
|
||||
cmd_buffer->state.vb_dirty |= (1 << RADV_META_VERTEX_BINDING_COUNT) - 1;
|
||||
cmd_buffer->state.dirty |= RADV_CMD_DIRTY_PIPELINE;
|
||||
|
||||
radv_dynamic_state_copy(&cmd_buffer->state.dynamic, &state->dynamic,
|
||||
state->dynamic_mask);
|
||||
cmd_buffer->state.dirty |= state->dynamic_mask;
|
||||
|
||||
memcpy(cmd_buffer->push_constants, state->push_constants, MAX_PUSH_CONSTANTS_SIZE);
|
||||
cmd_buffer->push_constant_stages |= VK_SHADER_STAGE_ALL_GRAPHICS | VK_SHADER_STAGE_COMPUTE_BIT;
|
||||
}
|
||||
|
||||
void
|
||||
radv_meta_save_pass(struct radv_meta_saved_pass_state *state,
|
||||
const struct radv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
state->pass = cmd_buffer->state.pass;
|
||||
state->subpass = cmd_buffer->state.subpass;
|
||||
state->framebuffer = cmd_buffer->state.framebuffer;
|
||||
state->attachments = cmd_buffer->state.attachments;
|
||||
state->render_area = cmd_buffer->state.render_area;
|
||||
}
|
||||
|
||||
void
|
||||
radv_meta_restore_pass(const struct radv_meta_saved_pass_state *state,
|
||||
struct radv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
cmd_buffer->state.pass = state->pass;
|
||||
cmd_buffer->state.subpass = state->subpass;
|
||||
cmd_buffer->state.framebuffer = state->framebuffer;
|
||||
cmd_buffer->state.attachments = state->attachments;
|
||||
cmd_buffer->state.render_area = state->render_area;
|
||||
if (state->subpass)
|
||||
radv_emit_framebuffer_state(cmd_buffer);
|
||||
}
|
||||
|
||||
void
|
||||
radv_meta_save_compute(struct radv_meta_saved_compute_state *state,
|
||||
const struct radv_cmd_buffer *cmd_buffer,
|
||||
unsigned push_constant_size)
|
||||
{
|
||||
state->old_pipeline = cmd_buffer->state.compute_pipeline;
|
||||
state->old_descriptor_set0 = cmd_buffer->state.descriptors[0];
|
||||
|
||||
if (push_constant_size)
|
||||
memcpy(state->push_constants, cmd_buffer->push_constants, push_constant_size);
|
||||
}
|
||||
|
||||
void
|
||||
radv_meta_restore_compute(const struct radv_meta_saved_compute_state *state,
|
||||
struct radv_cmd_buffer *cmd_buffer,
|
||||
unsigned push_constant_size)
|
||||
{
|
||||
radv_CmdBindPipeline(radv_cmd_buffer_to_handle(cmd_buffer), VK_PIPELINE_BIND_POINT_COMPUTE,
|
||||
radv_pipeline_to_handle(state->old_pipeline));
|
||||
radv_bind_descriptor_set(cmd_buffer, state->old_descriptor_set0, 0);
|
||||
|
||||
if (push_constant_size) {
|
||||
memcpy(cmd_buffer->push_constants, state->push_constants, push_constant_size);
|
||||
cmd_buffer->push_constant_stages |= VK_SHADER_STAGE_COMPUTE_BIT;
|
||||
}
|
||||
}
|
||||
|
||||
VkImageViewType
|
||||
radv_meta_get_view_type(const struct radv_image *image)
|
||||
{
|
||||
switch (image->type) {
|
||||
case VK_IMAGE_TYPE_1D: return VK_IMAGE_VIEW_TYPE_1D;
|
||||
case VK_IMAGE_TYPE_2D: return VK_IMAGE_VIEW_TYPE_2D;
|
||||
case VK_IMAGE_TYPE_3D: return VK_IMAGE_VIEW_TYPE_3D;
|
||||
default:
|
||||
unreachable("bad VkImageViewType");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* When creating a destination VkImageView, this function provides the needed
|
||||
* VkImageViewCreateInfo::subresourceRange::baseArrayLayer.
|
||||
*/
|
||||
uint32_t
|
||||
radv_meta_get_iview_layer(const struct radv_image *dest_image,
|
||||
const VkImageSubresourceLayers *dest_subresource,
|
||||
const VkOffset3D *dest_offset)
|
||||
{
|
||||
switch (dest_image->type) {
|
||||
case VK_IMAGE_TYPE_1D:
|
||||
case VK_IMAGE_TYPE_2D:
|
||||
return dest_subresource->baseArrayLayer;
|
||||
case VK_IMAGE_TYPE_3D:
|
||||
/* HACK: Vulkan does not allow attaching a 3D image to a framebuffer,
|
||||
* but meta does it anyway. When doing so, we translate the
|
||||
* destination's z offset into an array offset.
|
||||
*/
|
||||
return dest_offset->z;
|
||||
default:
|
||||
assert(!"bad VkImageType");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void *
|
||||
meta_alloc(void* _device, size_t size, size_t alignment,
|
||||
VkSystemAllocationScope allocationScope)
|
||||
{
|
||||
struct radv_device *device = _device;
|
||||
return device->alloc.pfnAllocation(device->alloc.pUserData, size, alignment,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
|
||||
}
|
||||
|
||||
static void *
|
||||
meta_realloc(void* _device, void *original, size_t size, size_t alignment,
|
||||
VkSystemAllocationScope allocationScope)
|
||||
{
|
||||
struct radv_device *device = _device;
|
||||
return device->alloc.pfnReallocation(device->alloc.pUserData, original,
|
||||
size, alignment,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_free(void* _device, void *data)
|
||||
{
|
||||
struct radv_device *device = _device;
|
||||
return device->alloc.pfnFree(device->alloc.pUserData, data);
|
||||
}
|
||||
|
||||
static bool
|
||||
radv_builtin_cache_path(char *path)
|
||||
{
|
||||
char *xdg_cache_home = getenv("XDG_CACHE_HOME");
|
||||
const char *suffix = "/radv_builtin_shaders";
|
||||
const char *suffix2 = "/.cache/radv_builtin_shaders";
|
||||
struct passwd pwd, *result;
|
||||
char path2[PATH_MAX + 1]; /* PATH_MAX is not a real max,but suffices here. */
|
||||
|
||||
if (xdg_cache_home) {
|
||||
|
||||
if (strlen(xdg_cache_home) + strlen(suffix) > PATH_MAX)
|
||||
return false;
|
||||
|
||||
strcpy(path, xdg_cache_home);
|
||||
strcat(path, suffix);
|
||||
return true;
|
||||
}
|
||||
|
||||
getpwuid_r(getuid(), &pwd, path2, PATH_MAX - strlen(suffix2), &result);
|
||||
if (!result)
|
||||
return false;
|
||||
|
||||
strcpy(path, pwd.pw_dir);
|
||||
strcat(path, "/.cache");
|
||||
mkdir(path, 0755);
|
||||
|
||||
strcat(path, suffix);
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
radv_load_meta_pipeline(struct radv_device *device)
|
||||
{
|
||||
char path[PATH_MAX + 1];
|
||||
struct stat st;
|
||||
void *data = NULL;
|
||||
|
||||
if (!radv_builtin_cache_path(path))
|
||||
return;
|
||||
|
||||
int fd = open(path, O_RDONLY);
|
||||
if (fd < 0)
|
||||
return;
|
||||
if (fstat(fd, &st))
|
||||
goto fail;
|
||||
data = malloc(st.st_size);
|
||||
if (!data)
|
||||
goto fail;
|
||||
if(read(fd, data, st.st_size) == -1)
|
||||
goto fail;
|
||||
|
||||
radv_pipeline_cache_load(&device->meta_state.cache, data, st.st_size);
|
||||
fail:
|
||||
free(data);
|
||||
close(fd);
|
||||
}
|
||||
|
||||
static void
|
||||
radv_store_meta_pipeline(struct radv_device *device)
|
||||
{
|
||||
char path[PATH_MAX + 1], path2[PATH_MAX + 7];
|
||||
size_t size;
|
||||
void *data = NULL;
|
||||
|
||||
if (!device->meta_state.cache.modified)
|
||||
return;
|
||||
|
||||
if (radv_GetPipelineCacheData(radv_device_to_handle(device),
|
||||
radv_pipeline_cache_to_handle(&device->meta_state.cache),
|
||||
&size, NULL))
|
||||
return;
|
||||
|
||||
if (!radv_builtin_cache_path(path))
|
||||
return;
|
||||
|
||||
strcpy(path2, path);
|
||||
strcat(path2, "XXXXXX");
|
||||
int fd = mkstemp(path2);//open(path, O_WRONLY | O_CREAT, 0600);
|
||||
if (fd < 0)
|
||||
return;
|
||||
data = malloc(size);
|
||||
if (!data)
|
||||
goto fail;
|
||||
|
||||
if (radv_GetPipelineCacheData(radv_device_to_handle(device),
|
||||
radv_pipeline_cache_to_handle(&device->meta_state.cache),
|
||||
&size, data))
|
||||
goto fail;
|
||||
if(write(fd, data, size) == -1)
|
||||
goto fail;
|
||||
|
||||
rename(path2, path);
|
||||
fail:
|
||||
free(data);
|
||||
close(fd);
|
||||
unlink(path2);
|
||||
}
|
||||
|
||||
VkResult
|
||||
radv_device_init_meta(struct radv_device *device)
|
||||
{
|
||||
VkResult result;
|
||||
|
||||
device->meta_state.alloc = (VkAllocationCallbacks) {
|
||||
.pUserData = device,
|
||||
.pfnAllocation = meta_alloc,
|
||||
.pfnReallocation = meta_realloc,
|
||||
.pfnFree = meta_free,
|
||||
};
|
||||
|
||||
device->meta_state.cache.alloc = device->meta_state.alloc;
|
||||
radv_pipeline_cache_init(&device->meta_state.cache, device);
|
||||
radv_load_meta_pipeline(device);
|
||||
|
||||
result = radv_device_init_meta_clear_state(device);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_clear;
|
||||
|
||||
result = radv_device_init_meta_resolve_state(device);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_resolve;
|
||||
|
||||
result = radv_device_init_meta_blit_state(device);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_blit;
|
||||
|
||||
result = radv_device_init_meta_blit2d_state(device);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_blit2d;
|
||||
|
||||
result = radv_device_init_meta_bufimage_state(device);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_bufimage;
|
||||
|
||||
result = radv_device_init_meta_depth_decomp_state(device);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_depth_decomp;
|
||||
|
||||
result = radv_device_init_meta_buffer_state(device);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_buffer;
|
||||
|
||||
result = radv_device_init_meta_fast_clear_flush_state(device);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_fast_clear;
|
||||
|
||||
result = radv_device_init_meta_resolve_compute_state(device);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_resolve_compute;
|
||||
return VK_SUCCESS;
|
||||
|
||||
fail_resolve_compute:
|
||||
radv_device_finish_meta_fast_clear_flush_state(device);
|
||||
fail_fast_clear:
|
||||
radv_device_finish_meta_buffer_state(device);
|
||||
fail_buffer:
|
||||
radv_device_finish_meta_depth_decomp_state(device);
|
||||
fail_depth_decomp:
|
||||
radv_device_finish_meta_bufimage_state(device);
|
||||
fail_bufimage:
|
||||
radv_device_finish_meta_blit2d_state(device);
|
||||
fail_blit2d:
|
||||
radv_device_finish_meta_blit_state(device);
|
||||
fail_blit:
|
||||
radv_device_finish_meta_resolve_state(device);
|
||||
fail_resolve:
|
||||
radv_device_finish_meta_clear_state(device);
|
||||
fail_clear:
|
||||
radv_pipeline_cache_finish(&device->meta_state.cache);
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
radv_device_finish_meta(struct radv_device *device)
|
||||
{
|
||||
radv_device_finish_meta_clear_state(device);
|
||||
radv_device_finish_meta_resolve_state(device);
|
||||
radv_device_finish_meta_blit_state(device);
|
||||
radv_device_finish_meta_blit2d_state(device);
|
||||
radv_device_finish_meta_bufimage_state(device);
|
||||
radv_device_finish_meta_depth_decomp_state(device);
|
||||
radv_device_finish_meta_buffer_state(device);
|
||||
radv_device_finish_meta_fast_clear_flush_state(device);
|
||||
radv_device_finish_meta_resolve_compute_state(device);
|
||||
|
||||
radv_store_meta_pipeline(device);
|
||||
radv_pipeline_cache_finish(&device->meta_state.cache);
|
||||
}
|
||||
|
||||
/*
|
||||
* The most common meta operations all want to have the viewport
|
||||
* reset and any scissors disabled. The rest of the dynamic state
|
||||
* should have no effect.
|
||||
*/
|
||||
void
|
||||
radv_meta_save_graphics_reset_vport_scissor(struct radv_meta_saved_state *saved_state,
|
||||
struct radv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
uint32_t dirty_state = (1 << VK_DYNAMIC_STATE_VIEWPORT) | (1 << VK_DYNAMIC_STATE_SCISSOR);
|
||||
radv_meta_save(saved_state, cmd_buffer, dirty_state);
|
||||
cmd_buffer->state.dynamic.viewport.count = 0;
|
||||
cmd_buffer->state.dynamic.scissor.count = 0;
|
||||
cmd_buffer->state.dirty |= dirty_state;
|
||||
}
|
@@ -1,193 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2016 Red Hat
|
||||
* based on intel anv code:
|
||||
* Copyright © 2015 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef RADV_META_H
|
||||
#define RADV_META_H
|
||||
|
||||
#include "radv_private.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define RADV_META_VERTEX_BINDING_COUNT 2
|
||||
|
||||
struct radv_meta_saved_state {
|
||||
struct radv_vertex_binding old_vertex_bindings[RADV_META_VERTEX_BINDING_COUNT];
|
||||
struct radv_descriptor_set *old_descriptor_set0;
|
||||
struct radv_pipeline *old_pipeline;
|
||||
|
||||
/**
|
||||
* Bitmask of (1 << VK_DYNAMIC_STATE_*). Defines the set of saved dynamic
|
||||
* state.
|
||||
*/
|
||||
uint32_t dynamic_mask;
|
||||
struct radv_dynamic_state dynamic;
|
||||
|
||||
char push_constants[128];
|
||||
};
|
||||
|
||||
struct radv_meta_saved_pass_state {
|
||||
struct radv_render_pass *pass;
|
||||
const struct radv_subpass *subpass;
|
||||
struct radv_attachment_state *attachments;
|
||||
struct radv_framebuffer *framebuffer;
|
||||
VkRect2D render_area;
|
||||
};
|
||||
|
||||
struct radv_meta_saved_compute_state {
|
||||
struct radv_descriptor_set *old_descriptor_set0;
|
||||
struct radv_pipeline *old_pipeline;
|
||||
|
||||
char push_constants[128];
|
||||
};
|
||||
|
||||
VkResult radv_device_init_meta_clear_state(struct radv_device *device);
|
||||
void radv_device_finish_meta_clear_state(struct radv_device *device);
|
||||
|
||||
VkResult radv_device_init_meta_resolve_state(struct radv_device *device);
|
||||
void radv_device_finish_meta_resolve_state(struct radv_device *device);
|
||||
|
||||
VkResult radv_device_init_meta_depth_decomp_state(struct radv_device *device);
|
||||
void radv_device_finish_meta_depth_decomp_state(struct radv_device *device);
|
||||
|
||||
VkResult radv_device_init_meta_fast_clear_flush_state(struct radv_device *device);
|
||||
void radv_device_finish_meta_fast_clear_flush_state(struct radv_device *device);
|
||||
|
||||
VkResult radv_device_init_meta_blit_state(struct radv_device *device);
|
||||
void radv_device_finish_meta_blit_state(struct radv_device *device);
|
||||
|
||||
VkResult radv_device_init_meta_blit2d_state(struct radv_device *device);
|
||||
void radv_device_finish_meta_blit2d_state(struct radv_device *device);
|
||||
|
||||
VkResult radv_device_init_meta_buffer_state(struct radv_device *device);
|
||||
void radv_device_finish_meta_buffer_state(struct radv_device *device);
|
||||
|
||||
VkResult radv_device_init_meta_resolve_compute_state(struct radv_device *device);
|
||||
void radv_device_finish_meta_resolve_compute_state(struct radv_device *device);
|
||||
void radv_meta_save(struct radv_meta_saved_state *state,
|
||||
const struct radv_cmd_buffer *cmd_buffer,
|
||||
uint32_t dynamic_mask);
|
||||
|
||||
void radv_meta_restore(const struct radv_meta_saved_state *state,
|
||||
struct radv_cmd_buffer *cmd_buffer);
|
||||
|
||||
void radv_meta_save_pass(struct radv_meta_saved_pass_state *state,
|
||||
const struct radv_cmd_buffer *cmd_buffer);
|
||||
|
||||
void radv_meta_restore_pass(const struct radv_meta_saved_pass_state *state,
|
||||
struct radv_cmd_buffer *cmd_buffer);
|
||||
|
||||
void radv_meta_save_compute(struct radv_meta_saved_compute_state *state,
|
||||
const struct radv_cmd_buffer *cmd_buffer,
|
||||
unsigned push_constant_size);
|
||||
|
||||
void radv_meta_restore_compute(const struct radv_meta_saved_compute_state *state,
|
||||
struct radv_cmd_buffer *cmd_buffer,
|
||||
unsigned push_constant_size);
|
||||
|
||||
VkImageViewType radv_meta_get_view_type(const struct radv_image *image);
|
||||
|
||||
uint32_t radv_meta_get_iview_layer(const struct radv_image *dest_image,
|
||||
const VkImageSubresourceLayers *dest_subresource,
|
||||
const VkOffset3D *dest_offset);
|
||||
|
||||
struct radv_meta_blit2d_surf {
|
||||
/** The size of an element in bytes. */
|
||||
uint8_t bs;
|
||||
VkFormat format;
|
||||
|
||||
struct radv_image *image;
|
||||
unsigned level;
|
||||
unsigned layer;
|
||||
VkImageAspectFlags aspect_mask;
|
||||
};
|
||||
|
||||
struct radv_meta_blit2d_buffer {
|
||||
struct radv_buffer *buffer;
|
||||
uint32_t offset;
|
||||
uint32_t pitch;
|
||||
uint8_t bs;
|
||||
VkFormat format;
|
||||
};
|
||||
|
||||
struct radv_meta_blit2d_rect {
|
||||
uint32_t src_x, src_y;
|
||||
uint32_t dst_x, dst_y;
|
||||
uint32_t width, height;
|
||||
};
|
||||
|
||||
void radv_meta_begin_blit2d(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_meta_saved_state *save);
|
||||
|
||||
void radv_meta_blit2d(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_meta_blit2d_surf *src_img,
|
||||
struct radv_meta_blit2d_buffer *src_buf,
|
||||
struct radv_meta_blit2d_surf *dst,
|
||||
unsigned num_rects,
|
||||
struct radv_meta_blit2d_rect *rects);
|
||||
|
||||
void radv_meta_end_blit2d(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_meta_saved_state *save);
|
||||
|
||||
|
||||
VkResult radv_device_init_meta_bufimage_state(struct radv_device *device);
|
||||
void radv_device_finish_meta_bufimage_state(struct radv_device *device);
|
||||
void radv_meta_begin_bufimage(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_meta_saved_compute_state *save);
|
||||
void radv_meta_end_bufimage(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_meta_saved_compute_state *save);
|
||||
|
||||
void radv_meta_image_to_buffer(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_meta_blit2d_surf *src,
|
||||
struct radv_meta_blit2d_buffer *dst,
|
||||
unsigned num_rects,
|
||||
struct radv_meta_blit2d_rect *rects);
|
||||
|
||||
void radv_decompress_depth_image_inplace(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_image *image,
|
||||
VkImageSubresourceRange *subresourceRange);
|
||||
void radv_resummarize_depth_image_inplace(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_image *image,
|
||||
VkImageSubresourceRange *subresourceRange);
|
||||
void radv_fast_clear_flush_image_inplace(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_image *image);
|
||||
|
||||
void radv_meta_save_graphics_reset_vport_scissor(struct radv_meta_saved_state *saved_state,
|
||||
struct radv_cmd_buffer *cmd_buffer);
|
||||
|
||||
void radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_image *src_image,
|
||||
VkImageLayout src_image_layout,
|
||||
struct radv_image *dest_image,
|
||||
VkImageLayout dest_image_layout,
|
||||
uint32_t region_count,
|
||||
const VkImageResolve *regions);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* RADV_META_H */
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user