Compare commits
	
		
			3 Commits
		
	
	
		
			mesa-18.1.
			...
			18.0-branc
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | a9db8ac935 | ||
|  | 41e48eac87 | ||
|  | 90002ba41e | 
							
								
								
									
										2
									
								
								.mailmap
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								.mailmap
									
									
									
									
									
								
							| @@ -148,8 +148,6 @@ Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@collabora.com> | ||||
|  | ||||
| Eric Anholt <eric@anholt.net> Eric Anholt <anholt@FreeBSD.org> | ||||
|  | ||||
| Eric Engestrom <eric@engestrom.ch> <eric.engestrom@imgtec.com> | ||||
|  | ||||
| Eugeni Dodonov <eugeni.dodonov@intel.com> <eugeni@mandriva.com> | ||||
|  | ||||
| Fabian Bieler <der.fabe@gmx.net> <fabianbieler@fastmail.fm> | ||||
|   | ||||
							
								
								
									
										230
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										230
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -17,11 +17,11 @@ env: | ||||
|     - DRI2PROTO_VERSION=dri2proto-2.8 | ||||
|     - LIBPCIACCESS_VERSION=libpciaccess-0.13.4 | ||||
|     - LIBDRM_VERSION=libdrm-2.4.74 | ||||
|     - XCBPROTO_VERSION=xcb-proto-1.13 | ||||
|     - LIBXCB_VERSION=libxcb-1.13 | ||||
|     - XCBPROTO_VERSION=xcb-proto-1.11 | ||||
|     - LIBXCB_VERSION=libxcb-1.11 | ||||
|     - LIBXSHMFENCE_VERSION=libxshmfence-1.2 | ||||
|     - LIBVDPAU_VERSION=libvdpau-1.1 | ||||
|     - LIBVA_VERSION=libva-1.7.0 | ||||
|     - LIBVA_VERSION=libva-1.6.2 | ||||
|     - LIBWAYLAND_VERSION=wayland-1.11.1 | ||||
|     - WAYLAND_PROTOCOLS_VERSION=wayland-protocols-1.8 | ||||
|     - PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig:$HOME/prefix/share/pkgconfig | ||||
| @@ -34,17 +34,15 @@ matrix: | ||||
|         - LABEL="meson Vulkan" | ||||
|         - BUILD=meson | ||||
|         - MESON_OPTIONS="-Ddri-drivers= -Dgallium-drivers=" | ||||
|         - LLVM_VERSION=4.0 | ||||
|         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}" | ||||
|       addons: | ||||
|         apt: | ||||
|           sources: | ||||
|             - llvm-toolchain-trusty-4.0 | ||||
|             - llvm-toolchain-trusty-3.9 | ||||
|           packages: | ||||
|             # LLVM packaging is broken and misses these dependencies | ||||
|             - libedit-dev | ||||
|             # From sources above | ||||
|             - llvm-4.0-dev | ||||
|             - llvm-3.9-dev | ||||
|             # Common | ||||
|             - xz-utils | ||||
|             - libexpat1-dev | ||||
| @@ -92,10 +90,12 @@ matrix: | ||||
|         - BUILD=make | ||||
|         - MAKEFLAGS="-j4" | ||||
|         - MAKE_CHECK_COMMAND="true" | ||||
|         - LLVM_VERSION=4.0 | ||||
|         - LLVM_VERSION=3.9 | ||||
|         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}" | ||||
|         - OVERRIDE_CC="gcc-4.8" | ||||
|         - OVERRIDE_CXX="g++-4.8" | ||||
|         # New binutils linker is required for llvm-3.9 | ||||
|         - OVERRIDE_PATH=/usr/lib/binutils-2.26/bin | ||||
|         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl" | ||||
|         - DRI_DRIVERS="" | ||||
|         - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa" | ||||
| @@ -105,41 +105,13 @@ matrix: | ||||
|       addons: | ||||
|         apt: | ||||
|           sources: | ||||
|             - llvm-toolchain-trusty-4.0 | ||||
|             - llvm-toolchain-trusty-3.9 | ||||
|           packages: | ||||
|             - binutils-2.26 | ||||
|             # LLVM packaging is broken and misses these dependencies | ||||
|             - libedit-dev | ||||
|             # From sources above | ||||
|             - llvm-4.0-dev | ||||
|             # Common | ||||
|             - xz-utils | ||||
|             - x11proto-xf86vidmode-dev | ||||
|             - libexpat1-dev | ||||
|             - libx11-xcb-dev | ||||
|             - libelf-dev | ||||
|             - libunwind8-dev | ||||
|     - env: | ||||
|         - LABEL="make Gallium Drivers RadeonSI" | ||||
|         - BUILD=make | ||||
|         - MAKEFLAGS="-j4" | ||||
|         - MAKE_CHECK_COMMAND="true" | ||||
|         - LLVM_VERSION=4.0 | ||||
|         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}" | ||||
|         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl" | ||||
|         - DRI_DRIVERS="" | ||||
|         - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa" | ||||
|         - GALLIUM_DRIVERS="radeonsi" | ||||
|         - VULKAN_DRIVERS="" | ||||
|         - LIBUNWIND_FLAGS="--enable-libunwind" | ||||
|       addons: | ||||
|         apt: | ||||
|           sources: | ||||
|             - llvm-toolchain-trusty-4.0 | ||||
|           packages: | ||||
|             # LLVM packaging is broken and misses these dependencies | ||||
|             - libedit-dev | ||||
|             # From sources above | ||||
|             - llvm-4.0-dev | ||||
|             - llvm-3.9-dev | ||||
|             # Common | ||||
|             - xz-utils | ||||
|             - x11proto-xf86vidmode-dev | ||||
| @@ -159,7 +131,7 @@ matrix: | ||||
|         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl" | ||||
|         - DRI_DRIVERS="" | ||||
|         - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa" | ||||
|         - GALLIUM_DRIVERS="i915,nouveau,pl111,r300,r600,freedreno,svga,swrast,vc4,virgl,etnaviv,imx" | ||||
|         - GALLIUM_DRIVERS="i915,nouveau,pl111,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx" | ||||
|         - VULKAN_DRIVERS="" | ||||
|         - LIBUNWIND_FLAGS="--enable-libunwind" | ||||
|       addons: | ||||
| @@ -194,7 +166,7 @@ matrix: | ||||
|         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl" | ||||
|         - DRI_DRIVERS="" | ||||
|         - GALLIUM_ST="--disable-dri --enable-opencl --enable-opencl-icd --enable-llvm --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa" | ||||
|         - GALLIUM_DRIVERS="r600" | ||||
|         - GALLIUM_DRIVERS="r600,radeonsi" | ||||
|         - VULKAN_DRIVERS="" | ||||
|         - LIBUNWIND_FLAGS="--enable-libunwind" | ||||
|       addons: | ||||
| @@ -331,8 +303,10 @@ matrix: | ||||
|         - BUILD=make | ||||
|         - MAKEFLAGS="-j4" | ||||
|         - MAKE_CHECK_COMMAND="make -C src/gtest check && make -C src/intel check" | ||||
|         - LLVM_VERSION=4.0 | ||||
|         - LLVM_VERSION=3.9 | ||||
|         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}" | ||||
|         # New binutils linker is required for llvm-3.9 | ||||
|         - OVERRIDE_PATH=/usr/lib/binutils-2.26/bin | ||||
|         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl --with-platforms=x11,wayland" | ||||
|         - DRI_DRIVERS="" | ||||
|         - GALLIUM_ST="--enable-dri --enable-dri3 --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa" | ||||
| @@ -342,12 +316,13 @@ matrix: | ||||
|       addons: | ||||
|         apt: | ||||
|           sources: | ||||
|             - llvm-toolchain-trusty-4.0 | ||||
|             - llvm-toolchain-trusty-3.9 | ||||
|           packages: | ||||
|             - binutils-2.26 | ||||
|             # LLVM packaging is broken and misses these dependencies | ||||
|             - libedit-dev | ||||
|             # From sources above | ||||
|             - llvm-4.0-dev | ||||
|             - llvm-3.9-dev | ||||
|             # Common | ||||
|             - xz-utils | ||||
|             - x11proto-xf86vidmode-dev | ||||
| @@ -399,7 +374,7 @@ matrix: | ||||
|         - BUILD=scons | ||||
|         - SCONSFLAGS="-j4" | ||||
|         - SCONS_TARGET="swr=1" | ||||
|         - LLVM_VERSION=4.0 | ||||
|         - LLVM_VERSION=3.9 | ||||
|         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}" | ||||
|         # Keep it symmetrical to the make build. There's no actual SWR, yet. | ||||
|         - SCONS_CHECK_COMMAND="true" | ||||
| @@ -408,63 +383,27 @@ matrix: | ||||
|       addons: | ||||
|         apt: | ||||
|           sources: | ||||
|             - llvm-toolchain-trusty-4.0 | ||||
|             - llvm-toolchain-trusty-3.9 | ||||
|           packages: | ||||
|             - scons | ||||
|             # LLVM packaging is broken and misses these dependencies | ||||
|             - libedit-dev | ||||
|             # From sources above | ||||
|             - llvm-4.0-dev | ||||
|             - llvm-3.9-dev | ||||
|             # Common | ||||
|             - xz-utils | ||||
|             - x11proto-xf86vidmode-dev | ||||
|             - libexpat1-dev | ||||
|             - libx11-xcb-dev | ||||
|             - libelf-dev | ||||
|     - env: | ||||
|         - LABEL="macOS make" | ||||
|         - BUILD=make | ||||
|         - MAKEFLAGS="-j4" | ||||
|         - MAKE_CHECK_COMMAND="make check" | ||||
|         - DRI_LOADERS="--with-platforms=x11 --disable-egl" | ||||
|       os: osx | ||||
|     - env: | ||||
|         - LABEL="macOS meson" | ||||
|         - BUILD=meson | ||||
|         - MESON_OPTIONS="-Degl=false" | ||||
|       os: osx | ||||
|  | ||||
| before_install: | ||||
|   - | | ||||
|     if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then | ||||
|       HOMEBREW_NO_AUTO_UPDATE=1 brew install python3 ninja expat gettext | ||||
|       # Set PATH for homebrew pip3 installs | ||||
|       PATH="$HOME/Library/Python/3.6/bin:${PATH}" | ||||
|       # Set PKG_CONFIG_PATH for keg-only expat | ||||
|       PKG_CONFIG_PATH="/usr/local/opt/expat/lib/pkgconfig:${PKG_CONFIG_PATH}" | ||||
|       # Set PATH for keg-only gettext | ||||
|       PATH="/usr/local/opt/gettext/bin:${PATH}" | ||||
|  | ||||
|       # Install xquartz for prereqs ... | ||||
|       XQUARTZ_VERSION="2.7.11" | ||||
|       wget -nv https://dl.bintray.com/xquartz/downloads/XQuartz-${XQUARTZ_VERSION}.dmg | ||||
|       hdiutil attach XQuartz-${XQUARTZ_VERSION}.dmg | ||||
|       sudo installer -pkg /Volumes/XQuartz-${XQUARTZ_VERSION}/XQuartz.pkg -target / | ||||
|       hdiutil detach /Volumes/XQuartz-${XQUARTZ_VERSION} | ||||
|       # ... and set paths | ||||
|       PATH="/opt/X11/bin:${PATH}" | ||||
|       PKG_CONFIG_PATH="/opt/X11/share/pkgconfig:/opt/X11/lib/pkgconfig:${PKG_CONFIG_PATH}" | ||||
|       ACLOCAL="aclocal -I /opt/X11/share/aclocal -I /usr/local/share/aclocal" | ||||
|     fi | ||||
|  | ||||
| install: | ||||
|   - pip2 install --user mako | ||||
|   - pip install --user mako | ||||
|  | ||||
|   # Install a more modern meson from pip, since the version in the | ||||
|   # ubuntu repos is often quite old. Avoid >=0.45.0 as it needs python | ||||
|   # 3.5+ | ||||
|   # Install the latest meson from pip, since the version in the ubuntu repos is | ||||
|   # often quite old. | ||||
|   - if test "x$BUILD" = xmeson; then | ||||
|       pip3 install --user "meson<0.45.0"; | ||||
|       pip3 install --user meson; | ||||
|     fi | ||||
|  | ||||
|   # Since libdrm gets updated in configure.ac regularly, try to pick up the | ||||
| @@ -480,64 +419,62 @@ install: | ||||
|   # Install dependencies where we require specific versions (or where | ||||
|   # disallowed by Travis CI's package whitelisting). | ||||
|  | ||||
|   - | | ||||
|     if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then | ||||
|       wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2 | ||||
|       tar -jxvf $XORGMACROS_VERSION.tar.bz2 | ||||
|       (cd $XORGMACROS_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|   - wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2 | ||||
|   - tar -jxvf $XORGMACROS_VERSION.tar.bz2 | ||||
|   - (cd $XORGMACROS_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|  | ||||
|       wget $XORG_RELEASES/proto/$GLPROTO_VERSION.tar.bz2 | ||||
|       tar -jxvf $GLPROTO_VERSION.tar.bz2 | ||||
|       (cd $GLPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|   - wget $XORG_RELEASES/proto/$GLPROTO_VERSION.tar.bz2 | ||||
|   - tar -jxvf $GLPROTO_VERSION.tar.bz2 | ||||
|   - (cd $GLPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|  | ||||
|       wget $XORG_RELEASES/proto/$DRI2PROTO_VERSION.tar.bz2 | ||||
|       tar -jxvf $DRI2PROTO_VERSION.tar.bz2 | ||||
|       (cd $DRI2PROTO_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|   - wget $XORG_RELEASES/proto/$DRI2PROTO_VERSION.tar.bz2 | ||||
|   - tar -jxvf $DRI2PROTO_VERSION.tar.bz2 | ||||
|   - (cd $DRI2PROTO_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|  | ||||
|       wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2 | ||||
|       tar -jxvf $XCBPROTO_VERSION.tar.bz2 | ||||
|       (cd $XCBPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|   - wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2 | ||||
|   - tar -jxvf $XCBPROTO_VERSION.tar.bz2 | ||||
|   - (cd $XCBPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|  | ||||
|       wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2 | ||||
|       tar -jxvf $LIBXCB_VERSION.tar.bz2 | ||||
|       (cd $LIBXCB_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|   - wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2 | ||||
|   - tar -jxvf $LIBXCB_VERSION.tar.bz2 | ||||
|   - (cd $LIBXCB_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|  | ||||
|       wget $XORG_RELEASES/lib/$LIBPCIACCESS_VERSION.tar.bz2 | ||||
|       tar -jxvf $LIBPCIACCESS_VERSION.tar.bz2 | ||||
|       (cd $LIBPCIACCESS_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|   - wget $XORG_RELEASES/lib/$LIBPCIACCESS_VERSION.tar.bz2 | ||||
|   - tar -jxvf $LIBPCIACCESS_VERSION.tar.bz2 | ||||
|   - (cd $LIBPCIACCESS_VERSION && ./configure --prefix=$HOME/prefix && make 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 --enable-freedreno --enable-etnaviv-experimental-api && make 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 --enable-freedreno --enable-etnaviv-experimental-api && 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) | ||||
|   - wget $XORG_RELEASES/lib/$LIBXSHMFENCE_VERSION.tar.bz2 | ||||
|   - tar -jxvf $LIBXSHMFENCE_VERSION.tar.bz2 | ||||
|   - (cd $LIBXSHMFENCE_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|  | ||||
|       wget http://people.freedesktop.org/~aplattner/vdpau/$LIBVDPAU_VERSION.tar.bz2 | ||||
|       tar -jxvf $LIBVDPAU_VERSION.tar.bz2 | ||||
|       (cd $LIBVDPAU_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|   - wget http://people.freedesktop.org/~aplattner/vdpau/$LIBVDPAU_VERSION.tar.bz2 | ||||
|   - tar -jxvf $LIBVDPAU_VERSION.tar.bz2 | ||||
|   - (cd $LIBVDPAU_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|  | ||||
|       wget http://www.freedesktop.org/software/vaapi/releases/libva/$LIBVA_VERSION.tar.bz2 | ||||
|       tar -jxvf $LIBVA_VERSION.tar.bz2 | ||||
|       (cd $LIBVA_VERSION && ./configure --prefix=$HOME/prefix --disable-wayland --disable-dummy-driver && make install) | ||||
|   - wget http://www.freedesktop.org/software/vaapi/releases/libva/$LIBVA_VERSION.tar.bz2 | ||||
|   - tar -jxvf $LIBVA_VERSION.tar.bz2 | ||||
|   - (cd $LIBVA_VERSION && ./configure --prefix=$HOME/prefix --disable-wayland --disable-dummy-driver && make install) | ||||
|  | ||||
|       wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz | ||||
|       tar -axvf $LIBWAYLAND_VERSION.tar.xz | ||||
|       (cd $LIBWAYLAND_VERSION && ./configure --prefix=$HOME/prefix --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation && make install) | ||||
|   - wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz | ||||
|   - tar -axvf $LIBWAYLAND_VERSION.tar.xz | ||||
|   - (cd $LIBWAYLAND_VERSION && ./configure --prefix=$HOME/prefix --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation && make install) | ||||
|  | ||||
|       wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz | ||||
|       tar -axvf $WAYLAND_PROTOCOLS_VERSION.tar.xz | ||||
|       (cd $WAYLAND_PROTOCOLS_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|   - wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz | ||||
|   - tar -axvf $WAYLAND_PROTOCOLS_VERSION.tar.xz | ||||
|   - (cd $WAYLAND_PROTOCOLS_VERSION && ./configure --prefix=$HOME/prefix && make install) | ||||
|  | ||||
|       # Meson requires ninja >= 1.6, but trusty has 1.3.x | ||||
|       wget https://github.com/ninja-build/ninja/releases/download/v1.6.0/ninja-linux.zip | ||||
|       unzip ninja-linux.zip | ||||
|       mv ninja $HOME/prefix/bin/ | ||||
|   # Meson requires ninja >= 1.6, but trusty has 1.3.x | ||||
|   - wget https://github.com/ninja-build/ninja/releases/download/v1.6.0/ninja-linux.zip; | ||||
|   - unzip ninja-linux.zip | ||||
|   - mv ninja $HOME/prefix/bin/ | ||||
|  | ||||
|       # Generate this header since one is missing on the Travis instance | ||||
|       mkdir -p linux | ||||
|       printf "%s\n" \ | ||||
|   # Generate the header since one is missing on the Travis instance | ||||
|   - mkdir -p linux | ||||
|   - printf "%s\n" \ | ||||
|            "#ifndef _LINUX_MEMFD_H" \ | ||||
|            "#define _LINUX_MEMFD_H" \ | ||||
|            "" \ | ||||
| @@ -548,7 +485,6 @@ install: | ||||
|            "#define MFD_ALLOW_SEALING       0x0002U" \ | ||||
|            "" \ | ||||
|            "#endif /* _LINUX_MEMFD_H */" > linux/memfd.h | ||||
|     fi | ||||
|  | ||||
| script: | ||||
|   - if test "x$BUILD" = xmake; then | ||||
| @@ -576,28 +512,8 @@ script: | ||||
|       scons $SCONS_TARGET && eval $SCONS_CHECK_COMMAND; | ||||
|     fi | ||||
|  | ||||
|   - | | ||||
|     if test "x$BUILD" = xmeson; then | ||||
|  | ||||
|       # Travis CI has moved to LLVM 5.0, and meson is detecting | ||||
|       # automatically the available version in /usr/local/bin based on | ||||
|       # the PATH env variable order preference. | ||||
|       # | ||||
|       # As for 0.44.x, Meson cannot receive the path to the | ||||
|       # llvm-config binary as a configuration parameter. See | ||||
|       # https://github.com/mesonbuild/meson/issues/2887 and | ||||
|       # https://github.com/dcbaker/meson/commit/7c8b6ee3fa42f43c9ac7dcacc61a77eca3f1bcef | ||||
|       # | ||||
|       # We want to use the custom (APT) installed version. Therefore, | ||||
|       # let's make Meson find our wanted version sooner than the one | ||||
|       # at /usr/local/bin | ||||
|       # | ||||
|       # Once this is corrected, we would still need a patch similar | ||||
|       # to: | ||||
|       # https://lists.freedesktop.org/archives/mesa-dev/2017-December/180217.html | ||||
|       test -f /usr/bin/$LLVM_CONFIG && ln -s /usr/bin/$LLVM_CONFIG $HOME/prefix/bin/llvm-config | ||||
|  | ||||
|       export CFLAGS="$CFLAGS -isystem`pwd`" | ||||
|       meson _build $MESON_OPTIONS | ||||
|       ninja -C _build | ||||
|   - if test "x$BUILD" = xmeson; then | ||||
|       export CFLAGS="$CFLAGS -isystem`pwd`"; | ||||
|       meson _build $MESON_OPTIONS; | ||||
|       ninja -C _build; | ||||
|     fi | ||||
|   | ||||
| @@ -70,7 +70,6 @@ LOCAL_CFLAGS += \ | ||||
| 	-DHAVE_DLADDR \ | ||||
| 	-DHAVE_DL_ITERATE_PHDR \ | ||||
| 	-DHAVE_LINUX_FUTEX_H \ | ||||
| 	-DHAVE_ENDIAN_H \ | ||||
| 	-DHAVE_ZLIB \ | ||||
| 	-DMAJOR_IN_SYSMACROS \ | ||||
| 	-fvisibility=hidden \ | ||||
|   | ||||
| @@ -45,7 +45,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \ | ||||
| 	--enable-libunwind \ | ||||
| 	--with-platforms=x11,wayland,drm,surfaceless \ | ||||
| 	--with-dri-drivers=i915,i965,nouveau,radeon,r200,swrast \ | ||||
| 	--with-gallium-drivers=i915,nouveau,r300,pl111,r600,radeonsi,freedreno,svga,swrast,vc4,tegra,virgl,swr,etnaviv,imx \ | ||||
| 	--with-gallium-drivers=i915,nouveau,r300,pl111,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,swr,etnaviv,imx \ | ||||
| 	--with-vulkan-drivers=intel,radeon | ||||
|  | ||||
| ACLOCAL_AMFLAGS = -I m4 | ||||
| @@ -64,8 +64,7 @@ EXTRA_DIST = \ | ||||
| 	meson_options.txt \ | ||||
| 	bin/meson.build \ | ||||
| 	include/meson.build \ | ||||
| 	bin/install_megadrivers.py \ | ||||
| 	bin/meson_get_version.py | ||||
| 	bin/install_megadrivers.py | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	include/c99_alloca.h \ | ||||
| @@ -76,14 +75,12 @@ noinst_HEADERS = \ | ||||
| 	include/drm-uapi/drm_fourcc.h \ | ||||
| 	include/drm-uapi/drm_mode.h \ | ||||
| 	include/drm-uapi/i915_drm.h \ | ||||
| 	include/drm-uapi/tegra_drm.h \ | ||||
| 	include/drm-uapi/vc4_drm.h \ | ||||
| 	include/D3D9 \ | ||||
| 	include/GL/wglext.h \ | ||||
| 	include/HaikuGL \ | ||||
| 	include/no_extern_c.h \ | ||||
| 	include/pci_ids \ | ||||
| 	include/vulkan | ||||
| 	include/pci_ids | ||||
|  | ||||
| # We list some directories in EXTRA_DIST, but don't actually want to include | ||||
| # the .gitignore files in the tarball. | ||||
|   | ||||
							
								
								
									
										10
									
								
								appveyor.yml
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								appveyor.yml
									
									
									
									
									
								
							| @@ -35,13 +35,13 @@ clone_depth: 100 | ||||
|  | ||||
| cache: | ||||
| - win_flex_bison-2.5.9.zip | ||||
| - llvm-3.3.1-msvc2015-mtd.7z | ||||
| - llvm-3.3.1-msvc2013-mtd.7z | ||||
|  | ||||
| os: Visual Studio 2015 | ||||
| os: Visual Studio 2013 | ||||
|  | ||||
| environment: | ||||
|   WINFLEXBISON_ARCHIVE: win_flex_bison-2.5.9.zip | ||||
|   LLVM_ARCHIVE: llvm-3.3.1-msvc2015-mtd.7z | ||||
|   LLVM_ARCHIVE: llvm-3.3.1-msvc2013-mtd.7z | ||||
|  | ||||
| install: | ||||
| # Check pip | ||||
| @@ -69,10 +69,10 @@ install: | ||||
| - set LLVM=%CD%\llvm | ||||
|  | ||||
| build_script: | ||||
| - scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.0 llvm=1 | ||||
| - scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=12.0 llvm=1 | ||||
|  | ||||
| after_build: | ||||
| - scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.0 llvm=1 check | ||||
| - scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=12.0 llvm=1 check | ||||
|  | ||||
|  | ||||
| # It's possible to setup notification here, as described in | ||||
|   | ||||
| @@ -16,7 +16,7 @@ latest_branchpoint=`git merge-base origin/master HEAD` | ||||
| git log --reverse --pretty=%H $latest_branchpoint > already_landed | ||||
|  | ||||
| # ... and the ones cherry-picked. | ||||
| git log --reverse --pretty=medium --grep="cherry picked from commit" $latest_branchpoint..HEAD |\ | ||||
| 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 | ||||
|  | ||||
| @@ -38,7 +38,7 @@ do | ||||
|  | ||||
| 	# Place every "fixes:" tag on its own line and join with the next word | ||||
| 	# on its line or a later one. | ||||
| 	fixes=`git show --pretty=medium -s $sha | tr -d "\n" | sed -e 's/fixes:[[:space:]]*/\nfixes:/Ig' | grep "fixes:" | sed -e 's/\(fixes:[a-zA-Z0-9]*\).*$/\1/'` | ||||
| 	fixes=`git show -s $sha | tr -d "\n" | sed -e 's/fixes:[[:space:]]*/\nfixes:/Ig' | grep "fixes:" | sed -e 's/\(fixes:[a-zA-Z0-9]*\).*$/\1/'` | ||||
|  | ||||
| 	# For each one try to extract the tag | ||||
| 	fixes_count=`echo "$fixes" | wc -l` | ||||
|   | ||||
| @@ -12,7 +12,7 @@ | ||||
| latest_branchpoint=`git merge-base origin/master HEAD` | ||||
|  | ||||
| # Grep for commits with "cherry picked from commit" in the commit message. | ||||
| git log --reverse --pretty=medium --grep="cherry picked from commit" $latest_branchpoint..HEAD |\ | ||||
| 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 | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/usr/bin/env python | ||||
| # encoding=utf-8 | ||||
| # Copyright © 2017-2018 Intel Corporation | ||||
| # Copyright © 2017 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 | ||||
| @@ -35,11 +35,7 @@ def main(): | ||||
|     parser.add_argument('drivers', nargs='+') | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     if os.path.isabs(args.libdir): | ||||
|         to = os.path.join(os.environ.get('DESTDIR', '/'), args.libdir[1:]) | ||||
|     else: | ||||
|         to = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], args.libdir) | ||||
|  | ||||
|     to = os.path.join(os.environ.get('MESON_INSTALL_DESTDIR_PREFIX'), args.libdir) | ||||
|     master = os.path.join(to, os.path.basename(args.megadriver)) | ||||
|  | ||||
|     if not os.path.exists(to): | ||||
| @@ -62,7 +58,7 @@ def main(): | ||||
|             while ext != '.so': | ||||
|                 if os.path.exists(name): | ||||
|                     os.unlink(name) | ||||
|                 os.symlink(each, name) | ||||
|                 os.symlink(driver, name) | ||||
|                 name, ext = os.path.splitext(name) | ||||
|         finally: | ||||
|             os.chdir(ret) | ||||
|   | ||||
							
								
								
									
										166
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										166
									
								
								configure.ac
									
									
									
									
									
								
							| @@ -74,27 +74,24 @@ AC_SUBST([OPENCL_VERSION]) | ||||
| # in the first entry. | ||||
| LIBDRM_REQUIRED=2.4.75 | ||||
| LIBDRM_RADEON_REQUIRED=2.4.71 | ||||
| LIBDRM_AMDGPU_REQUIRED=2.4.91 | ||||
| LIBDRM_AMDGPU_REQUIRED=2.4.89 | ||||
| LIBDRM_INTEL_REQUIRED=2.4.75 | ||||
| LIBDRM_NVVIEUX_REQUIRED=2.4.66 | ||||
| LIBDRM_NOUVEAU_REQUIRED=2.4.66 | ||||
| LIBDRM_FREEDRENO_REQUIRED=2.4.91 | ||||
| LIBDRM_ETNAVIV_REQUIRED=2.4.89 | ||||
| LIBDRM_FREEDRENO_REQUIRED=2.4.89 | ||||
| LIBDRM_ETNAVIV_REQUIRED=2.4.82 | ||||
|  | ||||
| dnl Versions for external dependencies | ||||
| DRI2PROTO_REQUIRED=2.8 | ||||
| GLPROTO_REQUIRED=1.4.14 | ||||
| LIBOMXIL_BELLAGIO_REQUIRED=0.0 | ||||
| LIBOMXIL_TIZONIA_REQUIRED=0.10.0 | ||||
| LIBVA_REQUIRED=0.39.0 | ||||
| LIBVA_REQUIRED=0.38.0 | ||||
| VDPAU_REQUIRED=1.1 | ||||
| WAYLAND_REQUIRED=1.11 | ||||
| WAYLAND_PROTOCOLS_REQUIRED=1.8 | ||||
| XCB_REQUIRED=1.9.3 | ||||
| XCBDRI2_REQUIRED=1.8 | ||||
| XCBDRI3_MODIFIERS_REQUIRED=1.13 | ||||
| XCBGLX_REQUIRED=1.8.1 | ||||
| XCBPRESENT_MODIFIERS_REQUIRED=1.13 | ||||
| XDAMAGE_REQUIRED=1.1 | ||||
| XSHMFENCE_REQUIRED=1.1 | ||||
| XVMC_REQUIRED=1.0.6 | ||||
| @@ -106,9 +103,9 @@ dnl LLVM versions | ||||
| LLVM_REQUIRED_GALLIUM=3.3.0 | ||||
| LLVM_REQUIRED_OPENCL=3.9.0 | ||||
| LLVM_REQUIRED_R600=3.9.0 | ||||
| LLVM_REQUIRED_RADEONSI=4.0.0 | ||||
| LLVM_REQUIRED_RADV=4.0.0 | ||||
| LLVM_REQUIRED_SWR=4.0.0 | ||||
| LLVM_REQUIRED_RADEONSI=3.9.0 | ||||
| LLVM_REQUIRED_RADV=3.9.0 | ||||
| LLVM_REQUIRED_SWR=3.9.0 | ||||
|  | ||||
| dnl Check for progs | ||||
| AC_PROG_CPP | ||||
| @@ -119,7 +116,6 @@ dnl other CC/CXX flags related help | ||||
| AC_ARG_VAR([CXX11_CXXFLAGS], [Compiler flag to enable C++11 support (only needed if not | ||||
|                               enabled by default and different  from -std=c++11)]) | ||||
| AM_PROG_CC_C_O | ||||
| AC_PROG_NM | ||||
| AM_PROG_AS | ||||
| AX_CHECK_GNU_MAKE | ||||
| AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python]) | ||||
| @@ -454,6 +450,7 @@ if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then | ||||
|         LIBATOMIC_LIBS="-latomic" | ||||
|     fi | ||||
| fi | ||||
| AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPPORTED = x1]) | ||||
| AC_SUBST([LIBATOMIC_LIBS]) | ||||
|  | ||||
| dnl Check if host supports 64-bit atomics | ||||
| @@ -688,19 +685,6 @@ AC_LINK_IFELSE( | ||||
| LDFLAGS=$save_LDFLAGS | ||||
| AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes") | ||||
|  | ||||
| dnl | ||||
| dnl OSX linker does not support build-id | ||||
| dnl | ||||
| case "$host_os" in | ||||
| darwin*) | ||||
|     LD_BUILD_ID="" | ||||
|     ;; | ||||
| *) | ||||
|     LD_BUILD_ID="-Wl,--build-id=sha1" | ||||
|     ;; | ||||
| esac | ||||
| AC_SUBST([LD_BUILD_ID]) | ||||
|  | ||||
| dnl | ||||
| dnl compatibility symlinks | ||||
| dnl | ||||
| @@ -865,7 +849,6 @@ 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_HEADERS([endian.h]) | ||||
| AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"]) | ||||
| AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"]) | ||||
| AC_CHECK_FUNC([timespec_get], [DEFINES="$DEFINES -DHAVE_TIMESPEC_GET"]) | ||||
| @@ -943,10 +926,10 @@ dnl In practise that should be sufficient for all platforms, since any | ||||
| dnl platforms build with GCC and Clang support the flag. | ||||
| PTHREAD_LIBS="$PTHREAD_LIBS -pthread" | ||||
|  | ||||
| dnl pthread-stubs is mandatory on some BSD platforms, due to the nature of the | ||||
| dnl pthread-stubs is mandatory on BSD platforms, due to the nature of the | ||||
| dnl project. Even then there's a notable issue as described in the project README | ||||
| case "$host_os" in | ||||
| linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu* | openbsd*) | ||||
| linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu*) | ||||
|     pthread_stubs_possible="no" | ||||
|     ;; | ||||
| * ) | ||||
| @@ -1287,10 +1270,10 @@ AC_ARG_ENABLE([xa], | ||||
|     [enable_xa=no]) | ||||
| AC_ARG_ENABLE([gbm], | ||||
|    [AS_HELP_STRING([--enable-gbm], | ||||
|          [enable gbm library @<:@default=yes except cygwin and macOS@:>@])], | ||||
|          [enable gbm library @<:@default=yes except cygwin@:>@])], | ||||
|    [enable_gbm="$enableval"], | ||||
|    [case "$host_os" in | ||||
|        cygwin* | darwin*) | ||||
|        cygwin*) | ||||
|           enable_gbm=no | ||||
|           ;; | ||||
|        *) | ||||
| @@ -1315,19 +1298,14 @@ AC_ARG_ENABLE([vdpau], | ||||
|    [enable_vdpau=auto]) | ||||
| AC_ARG_ENABLE([omx], | ||||
|    [AS_HELP_STRING([--enable-omx], | ||||
|          [DEPRECATED: Use --enable-omx-bellagio or --enable-omx-tizonia instead @<:@default=auto@:>@])], | ||||
|    [AC_MSG_ERROR([--enable-omx is deprecated. Use --enable-omx-bellagio or --enable-omx-tizonia instead.])], | ||||
|          [DEPRECATED: Use --enable-omx-bellagio instead @<:@default=auto@:>@])], | ||||
|    [AC_MSG_ERROR([--enable-omx is deprecated. Use --enable-omx-bellagio instead.])], | ||||
|    []) | ||||
| AC_ARG_ENABLE([omx-bellagio], | ||||
|    [AS_HELP_STRING([--enable-omx-bellagio], | ||||
|          [enable OpenMAX Bellagio library @<:@default=disabled@:>@])], | ||||
|    [enable_omx_bellagio="$enableval"], | ||||
|    [enable_omx_bellagio=no]) | ||||
| AC_ARG_ENABLE([omx-tizonia], | ||||
|    [AS_HELP_STRING([--enable-omx-tizonia], | ||||
|          [enable OpenMAX Tizonia library @<:@default=disabled@:>@])], | ||||
|    [enable_omx_tizonia="$enableval"], | ||||
|    [enable_omx_tizonia=no]) | ||||
| AC_ARG_ENABLE([va], | ||||
|    [AS_HELP_STRING([--enable-va], | ||||
|          [enable va library @<:@default=auto@:>@])], | ||||
| @@ -1359,7 +1337,7 @@ GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast" | ||||
| AC_ARG_WITH([gallium-drivers], | ||||
|     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@], | ||||
|         [comma delimited Gallium drivers list, e.g. | ||||
|         "i915,nouveau,r300,r600,radeonsi,freedreno,pl111,svga,swrast,swr,tegra,vc4,vc5,virgl,etnaviv,imx" | ||||
|         "i915,nouveau,r300,r600,radeonsi,freedreno,pl111,svga,swrast,swr,vc4,vc5,virgl,etnaviv,imx" | ||||
|         @<:@default=r300,r600,svga,swrast@:>@])], | ||||
|     [with_gallium_drivers="$withval"], | ||||
|     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"]) | ||||
| @@ -1379,17 +1357,11 @@ if test "x$enable_opengl" = xno -a \ | ||||
|         "x$enable_xvmc" = xno -a \ | ||||
|         "x$enable_vdpau" = xno -a \ | ||||
|         "x$enable_omx_bellagio" = xno -a \ | ||||
|         "x$enable_omx_tizonia" = xno -a \ | ||||
|         "x$enable_va" = xno -a \ | ||||
|         "x$enable_opencl" = xno; then | ||||
|     AC_MSG_ERROR([at least one API should be enabled]) | ||||
| fi | ||||
|  | ||||
| if test "x$enable_omx_bellagio" = xyes -a \ | ||||
|         "x$enable_omx_tizonia" = xyes; then | ||||
|    AC_MSG_ERROR([Can't enable both bellagio and tizonia at same time]) | ||||
| fi | ||||
|  | ||||
| # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x | ||||
| if test "x$enable_opengl" = xno -a \ | ||||
|         "x$enable_gles1" = xyes; then | ||||
| @@ -1626,7 +1598,7 @@ fi | ||||
| AC_ARG_ENABLE([driglx-direct], | ||||
|     [AS_HELP_STRING([--disable-driglx-direct], | ||||
|         [disable direct rendering in GLX and EGL for DRI \ | ||||
|             @<:@default=enabled@:>@])], | ||||
|             @<:@default=auto@:>@])], | ||||
|     [driglx_direct="$enableval"], | ||||
|     [driglx_direct="yes"]) | ||||
|  | ||||
| @@ -1785,6 +1757,19 @@ if test "x$with_platforms" = xauto; then | ||||
|     with_platforms=$with_egl_platforms | ||||
| fi | ||||
|  | ||||
| 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], [:]) | ||||
| fi | ||||
|  | ||||
| PKG_CHECK_EXISTS([wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED], [have_wayland_protocols=yes], [have_wayland_protocols=no]) | ||||
| if test "x$have_wayland_protocols" = xyes; then | ||||
|     ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols` | ||||
| fi | ||||
| AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir) | ||||
|  | ||||
| # Do per platform setups and checks | ||||
| platforms=`IFS=', '; echo $with_platforms` | ||||
| for plat in $platforms; do | ||||
| @@ -1793,19 +1778,13 @@ for plat in $platforms; do | ||||
|  | ||||
|         PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= $WAYLAND_REQUIRED]) | ||||
|         PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= $WAYLAND_REQUIRED]) | ||||
|         PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED]) | ||||
|         WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols` | ||||
|  | ||||
|         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], [:]) | ||||
|         fi | ||||
|  | ||||
|         if test "x$WAYLAND_SCANNER" = "x:"; then | ||||
|                 AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform]) | ||||
|         fi | ||||
|         if test "x$have_wayland_protocols" = xno; then | ||||
|                 AC_MSG_ERROR([wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED is needed to compile the wayland platform]) | ||||
|         fi | ||||
|         DEFINES="$DEFINES -DHAVE_WAYLAND_PLATFORM -DWL_HIDE_DEPRECATED" | ||||
|         ;; | ||||
|  | ||||
| @@ -1840,7 +1819,6 @@ for plat in $platforms; do | ||||
|         ;; | ||||
|     esac | ||||
| done | ||||
| AC_SUBST([WAYLAND_PROTOCOLS_DATADIR]) | ||||
|  | ||||
| if test "x$enable_glx" != xno; then | ||||
|     if ! echo "$platforms" | grep -q 'x11'; then | ||||
| @@ -1853,12 +1831,6 @@ if test x"$enable_dri3" = xyes; then | ||||
|  | ||||
|     dri3_modules="x11-xcb xcb >= $XCB_REQUIRED xcb-dri3 xcb-xfixes xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED" | ||||
|     PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules]) | ||||
|     dri3_modifier_modules="xcb-dri3 >= $XCBDRI3_MODIFIERS_REQUIRED xcb-present >= $XCBPRESENT_MODIFIERS_REQUIRED" | ||||
|     PKG_CHECK_MODULES([XCB_DRI3_MODIFIERS], [$dri3_modifier_modules], [have_dri3_modifiers=yes], [have_dri3_modifiers=no]) | ||||
|  | ||||
|     if test "x$have_dri3_modifiers" == xyes; then | ||||
|         DEFINES="$DEFINES -DHAVE_DRI3_MODIFIERS" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$platforms" | grep -q 'x11') | ||||
| @@ -2230,10 +2202,6 @@ if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then | ||||
|         PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx_bellagio=yes], [enable_omx_bellagio=no]) | ||||
|     fi | ||||
|  | ||||
|     if test "x$enable_omx_tizonia" = xauto -a "x$have_omx_platform" = xyes; then | ||||
|        PKG_CHECK_EXISTS([libtizonia >= $LIBOMXIL_TIZONIA_REQUIRED], [enable_omx_tizonia=yes], [enable_omx_tizonia=no]) | ||||
|     fi | ||||
|  | ||||
|     if test "x$enable_va" = xauto -a "x$have_va_platform" = xyes; then | ||||
|         PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no]) | ||||
|     fi | ||||
| @@ -2243,7 +2211,6 @@ if test "x$enable_dri" = xyes -o \ | ||||
|         "x$enable_xvmc" = xyes -o \ | ||||
|         "x$enable_vdpau" = xyes -o \ | ||||
|         "x$enable_omx_bellagio" = xyes -o \ | ||||
|         "x$enable_omx_tizonia" = xyes -o \ | ||||
|         "x$enable_va" = xyes; then | ||||
|     need_gallium_vl=yes | ||||
| fi | ||||
| @@ -2252,7 +2219,6 @@ AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes) | ||||
| if test "x$enable_xvmc" = xyes -o \ | ||||
|         "x$enable_vdpau" = xyes -o \ | ||||
|         "x$enable_omx_bellagio" = xyes -o \ | ||||
|         "x$enable_omx_tizonia" = xyes -o \ | ||||
|         "x$enable_va" = xyes; then | ||||
|     if echo $platforms | grep -q "x11"; then | ||||
|         PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED]) | ||||
| @@ -2286,27 +2252,9 @@ if test "x$enable_omx_bellagio" = xyes; then | ||||
|     fi | ||||
|     PKG_CHECK_MODULES([OMX_BELLAGIO], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED]) | ||||
|     gallium_st="$gallium_st omx_bellagio" | ||||
|     AC_DEFINE([ENABLE_ST_OMX_BELLAGIO], 1, [Use Bellagio for OMX IL]) | ||||
| else | ||||
|     AC_DEFINE([ENABLE_ST_OMX_BELLAGIO], 0) | ||||
| fi | ||||
| AM_CONDITIONAL(HAVE_ST_OMX_BELLAGIO, test "x$enable_omx_bellagio" = xyes) | ||||
|  | ||||
| if test "x$enable_omx_tizonia" = xyes; then | ||||
|     if test "x$have_omx_platform" != xyes; then | ||||
|         AC_MSG_ERROR([OMX requires at least one of the x11 or drm platforms]) | ||||
|     fi | ||||
|     PKG_CHECK_MODULES([OMX_TIZONIA], | ||||
|                       [libtizonia >= $LIBOMXIL_TIZONIA_REQUIRED | ||||
|                        tizilheaders >= $LIBOMXIL_TIZONIA_REQUIRED | ||||
|                        libtizplatform >= $LIBOMXIL_TIZONIA_REQUIRED]) | ||||
|     gallium_st="$gallium_st omx_tizonia" | ||||
|     AC_DEFINE([ENABLE_ST_OMX_TIZONIA], 1, [Use Tizoina for OMX IL]) | ||||
| else | ||||
|     AC_DEFINE([ENABLE_ST_OMX_TIZONIA], 0) | ||||
| fi | ||||
| AM_CONDITIONAL(HAVE_ST_OMX_TIZONIA, test "x$enable_omx_tizonia" = xyes) | ||||
|  | ||||
| if test "x$enable_va" = xyes; then | ||||
|     if test "x$have_va_platform" != xyes; then | ||||
|         AC_MSG_ERROR([VA requires at least one of the x11 drm or wayland platforms]) | ||||
| @@ -2480,15 +2428,6 @@ AC_ARG_WITH([omx-bellagio-libdir], | ||||
|                                    $PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`]) | ||||
| AC_SUBST([OMX_BELLAGIO_LIB_INSTALL_DIR]) | ||||
|  | ||||
| dnl Directory for OMX_TIZONIA libs | ||||
|  | ||||
| AC_ARG_WITH([omx-tizonia-libdir], | ||||
|     [AS_HELP_STRING([--with-omx-tizonia-libdir=DIR], | ||||
|         [directory for the OMX_TIZONIA libraries])], | ||||
|     [OMX_TIZONIA_LIB_INSTALL_DIR="$withval"], | ||||
|     [OMX_TIZONIA_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libtizcore`]) | ||||
| AC_SUBST([OMX_TIZONIA_LIB_INSTALL_DIR]) | ||||
|  | ||||
| dnl Directory for VA libs | ||||
|  | ||||
| AC_ARG_WITH([va-libdir], | ||||
| @@ -2643,10 +2582,6 @@ if test -n "$with_gallium_drivers"; then | ||||
|        ximx) | ||||
|             HAVE_GALLIUM_IMX=yes | ||||
|             ;; | ||||
|         xtegra) | ||||
|             HAVE_GALLIUM_TEGRA=yes | ||||
|             require_libdrm "tegra" | ||||
|             ;; | ||||
|         xswrast) | ||||
|             HAVE_GALLIUM_SOFTPIPE=yes | ||||
|             if test "x$enable_llvm" = xyes; then | ||||
| @@ -2747,8 +2682,8 @@ if test -n "$with_gallium_drivers"; then | ||||
| fi | ||||
|  | ||||
| # XXX: Keep in sync with LLVM_REQUIRED_SWR | ||||
| AM_CONDITIONAL(SWR_INVALID_LLVM_VERSION, test "x$LLVM_VERSION" != x4.0.0 -a \ | ||||
|                                               "x$LLVM_VERSION" != x4.0.1) | ||||
| AM_CONDITIONAL(SWR_INVALID_LLVM_VERSION, test "x$LLVM_VERSION" != x3.9.0 -a \ | ||||
|                                               "x$LLVM_VERSION" != x3.9.1) | ||||
|  | ||||
| if test "x$enable_llvm" = "xyes" -a "$with_gallium_drivers"; then | ||||
|     llvm_require_version $LLVM_REQUIRED_GALLIUM "gallium" | ||||
| @@ -2771,9 +2706,6 @@ if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_PL111" = xyes  ; then | ||||
|     AC_MSG_ERROR([Building with pl111 requires vc4]) | ||||
| fi | ||||
|  | ||||
| if test "x$HAVE_GALLIUM_NOUVEAU" != xyes -a "x$HAVE_GALLIUM_TEGRA" = xyes; then | ||||
|     AC_MSG_ERROR([Building with tegra requires nouveau]) | ||||
| fi | ||||
|  | ||||
| detect_old_buggy_llvm() { | ||||
|     dnl llvm-config may not give the right answer when llvm is a built as a | ||||
| @@ -2848,18 +2780,6 @@ if test "x$enable_llvm" = xyes; then | ||||
|             fi | ||||
|         fi | ||||
|     fi | ||||
|  | ||||
|     dnl The gallium-xlib GLX and gallium OSMesa targets directly embed the | ||||
|     dnl swr/llvmpipe driver into the final binary.  Adding LLVM_LIBS results in  | ||||
|     dnl the LLVM library propagated in the Libs.private of the respective .pc | ||||
|     dnl file which ensures complete dependency information when statically | ||||
|     dnl linking. | ||||
|     if test "x$enable_glx" == xgallium-xlib; then | ||||
|         GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $LLVM_LIBS" | ||||
|     fi | ||||
|     if test "x$enable_gallium_osmesa" = xyes; then | ||||
|         OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV $LLVM_LIBS" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes) | ||||
| @@ -2868,11 +2788,11 @@ AM_CONDITIONAL(HAVE_GALLIUM_PL111, test "x$HAVE_GALLIUM_PL111" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_RADEONSI" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_IMX, test "x$HAVE_GALLIUM_IMX" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_TEGRA, test "x$HAVE_GALLIUM_TEGRA" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes) | ||||
| AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes) | ||||
| @@ -3011,17 +2931,21 @@ AC_CONFIG_FILES([Makefile | ||||
|                  src/gallium/auxiliary/Makefile | ||||
|                  src/gallium/auxiliary/pipe-loader/Makefile | ||||
|                  src/gallium/drivers/freedreno/Makefile | ||||
|                  src/gallium/drivers/ddebug/Makefile | ||||
|                  src/gallium/drivers/i915/Makefile | ||||
|                  src/gallium/drivers/llvmpipe/Makefile | ||||
|                  src/gallium/drivers/noop/Makefile | ||||
|                  src/gallium/drivers/nouveau/Makefile | ||||
|                  src/gallium/drivers/pl111/Makefile | ||||
|                  src/gallium/drivers/r300/Makefile | ||||
|                  src/gallium/drivers/r600/Makefile | ||||
|                  src/gallium/drivers/radeon/Makefile | ||||
|                  src/gallium/drivers/radeonsi/Makefile | ||||
|                  src/gallium/drivers/rbug/Makefile | ||||
|                  src/gallium/drivers/softpipe/Makefile | ||||
|                  src/gallium/drivers/svga/Makefile | ||||
|                  src/gallium/drivers/swr/Makefile | ||||
|                  src/gallium/drivers/tegra/Makefile | ||||
|                  src/gallium/drivers/trace/Makefile | ||||
|                  src/gallium/drivers/etnaviv/Makefile | ||||
|                  src/gallium/drivers/imx/Makefile | ||||
|                  src/gallium/drivers/vc4/Makefile | ||||
| @@ -3031,9 +2955,7 @@ AC_CONFIG_FILES([Makefile | ||||
|                  src/gallium/state_trackers/dri/Makefile | ||||
|                  src/gallium/state_trackers/glx/xlib/Makefile | ||||
|                  src/gallium/state_trackers/nine/Makefile | ||||
|                  src/gallium/state_trackers/omx/Makefile | ||||
|                  src/gallium/state_trackers/omx/bellagio/Makefile | ||||
|                  src/gallium/state_trackers/omx/tizonia/Makefile | ||||
|                  src/gallium/state_trackers/omx_bellagio/Makefile | ||||
|                  src/gallium/state_trackers/osmesa/Makefile | ||||
|                  src/gallium/state_trackers/va/Makefile | ||||
|                  src/gallium/state_trackers/vdpau/Makefile | ||||
| @@ -3044,7 +2966,7 @@ AC_CONFIG_FILES([Makefile | ||||
|                  src/gallium/targets/d3dadapter9/d3d.pc | ||||
|                  src/gallium/targets/dri/Makefile | ||||
|                  src/gallium/targets/libgl-xlib/Makefile | ||||
|                  src/gallium/targets/omx/Makefile | ||||
|                  src/gallium/targets/omx-bellagio/Makefile | ||||
|                  src/gallium/targets/opencl/Makefile | ||||
|                  src/gallium/targets/opencl/mesa.icd | ||||
|                  src/gallium/targets/osmesa/Makefile | ||||
| @@ -3071,7 +2993,6 @@ AC_CONFIG_FILES([Makefile | ||||
|                  src/gallium/winsys/sw/null/Makefile | ||||
|                  src/gallium/winsys/sw/wrapper/Makefile | ||||
|                  src/gallium/winsys/sw/xlib/Makefile | ||||
|                  src/gallium/winsys/tegra/drm/Makefile | ||||
|                  src/gallium/winsys/vc4/drm/Makefile | ||||
|                  src/gallium/winsys/vc5/drm/Makefile | ||||
|                  src/gallium/winsys/virgl/drm/Makefile | ||||
| @@ -3121,9 +3042,6 @@ $SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_bl | ||||
| rm -f src/compiler/spirv/spirv_info.lo | ||||
| echo "# dummy" > src/compiler/spirv/.deps/spirv_info.Plo | ||||
|  | ||||
| rm -f src/compiler/nir/.deps/nir_intrinsics.Plo | ||||
| echo "# dummy" > src/compiler/nir/.deps/nir_intrinsics.Plo | ||||
|  | ||||
| dnl | ||||
| dnl Output some configuration info for the user | ||||
| dnl | ||||
|   | ||||
| @@ -88,40 +88,22 @@ This is a work-around for that. | ||||
| <li>MESA_GL_VERSION_OVERRIDE - changes the value returned by | ||||
| glGetString(GL_VERSION) and possibly the GL API type. | ||||
| <ul> | ||||
|   <li>The format should be MAJOR.MINOR[FC|COMPAT] | ||||
|   <li>FC is an optional suffix that indicates a forward compatible | ||||
|       context. This is only valid for versions >= 3.0. | ||||
|   <li>COMPAT is an optional suffix that indicates a compatibility | ||||
|       context or GL_ARB_compatibility support. This is only valid for | ||||
|       versions >= 3.1. | ||||
|   <li>GL versions <= 3.0 are set to a compatibility (non-Core) | ||||
|       profile | ||||
|   <li>GL versions = 3.1, depending on the driver, it may or may not | ||||
|       have the ARB_compatibility extension enabled. | ||||
|   <li>GL versions >= 3.2 are set to a Core profile | ||||
|   <li>Examples: 2.1, 3.0, 3.0FC, 3.1, 3.1FC, 3.1COMPAT, X.Y, X.YFC, | ||||
|       X.YCOMPAT. | ||||
|   <ul> | ||||
|     <li>2.1 - select a compatibility (non-Core) profile with GL | ||||
|         version 2.1. | ||||
|     <li>3.0 - select a compatibility (non-Core) profile with GL | ||||
|         version 3.0. | ||||
|     <li>3.0FC - select a Core+Forward Compatible profile with GL | ||||
|         version 3.0. | ||||
|     <li>3.1 - select GL version 3.1 with GL_ARB_compatibility enabled | ||||
|         per the driver default. | ||||
|     <li>3.1FC - select GL version 3.1 with forward compatibility and | ||||
|         GL_ARB_compatibility disabled. | ||||
|     <li>3.1COMPAT - select GL version 3.1 with GL_ARB_compatibility | ||||
|         enabled. | ||||
|     <li>X.Y - override GL version to X.Y without changing the profile. | ||||
|     <li>X.YFC - select a Core+Forward Compatible profile with GL | ||||
|         version X.Y. | ||||
|     <li>X.YCOMPAT - select a Compatibility profile with GL version | ||||
|         X.Y. | ||||
|   </ul> | ||||
|   <li>Mesa may not really implement all the features of the given | ||||
|       version. (for developers only) | ||||
| <li> The format should be MAJOR.MINOR[FC] | ||||
| <li> FC is an optional suffix that indicates a forward compatible context. | ||||
| This is only valid for versions >= 3.0. | ||||
| <li> GL versions < 3.0 are set to a compatibility (non-Core) profile | ||||
| <li> GL versions = 3.0, see below | ||||
| <li> GL versions > 3.0 are set to a Core profile | ||||
| <li> Examples: 2.1, 3.0, 3.0FC, 3.1, 3.1FC | ||||
| <ul> | ||||
| <li> 2.1 - select a compatibility (non-Core) profile with GL version 2.1 | ||||
| <li> 3.0 - select a compatibility (non-Core) profile with GL version 3.0 | ||||
| <li> 3.0FC - select a Core+Forward Compatible profile with GL version 3.0 | ||||
| <li> 3.1 - select a Core profile with GL version 3.1 | ||||
| <li> 3.1FC - select a Core+Forward Compatible profile with GL version 3.1 | ||||
| </ul> | ||||
| <li> Mesa may not really implement all the features of the given version. | ||||
| (for developers only) | ||||
| </ul> | ||||
| <li>MESA_GLES_VERSION_OVERRIDE - changes the value returned by | ||||
| glGetString(GL_VERSION) for OpenGL ES. | ||||
| @@ -153,16 +135,6 @@ home directory. | ||||
| <li>MESA_NO_MINMAX_CACHE - when set, the minmax index cache is globally disabled. | ||||
| <li>MESA_SHADER_CAPTURE_PATH - see <a href="shading.html#capture">Capturing Shaders</a></li> | ||||
| <li>MESA_SHADER_DUMP_PATH and MESA_SHADER_READ_PATH - see <a href="shading.html#replacement">Experimenting with Shader Replacements</a></li> | ||||
| <li>MESA_VK_VERSION_OVERRIDE - changes the Vulkan physical device version | ||||
|     as returned in VkPhysicalDeviceProperties::apiVersion. | ||||
|   <ul> | ||||
|     <li>The format should be MAJOR.MINOR[.PATCH]</li> | ||||
|     <li>This will not let you force a version higher than the driver's | ||||
|         instance versionas advertised by vkEnumerateInstanceVersion</li> | ||||
|     <li>This can be very useful for debugging but some features may not be | ||||
|         implemented correctly. (For developers only)</li> | ||||
|   </ul> | ||||
| </li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| @@ -269,7 +241,7 @@ Mesa EGL supports different sets of environment variables.  See the | ||||
|     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). | ||||
|     Use kill -10 <pid> to toggle the hud as desired. | ||||
|     Use kill -10 <pid> to toggle the hud as desired. | ||||
| <li>GALLIUM_HUD_DUMP_DIR - specifies a directory for writing the displayed | ||||
|     hud values into files. | ||||
| <li>GALLIUM_DRIVER - useful in combination with LIBGL_ALWAYS_SOFTWARE=true for | ||||
| @@ -341,12 +313,6 @@ such as the OpenGL program's name and command line arguments. | ||||
| <li>See the driver code for other, lesser-used variables. | ||||
| </ul> | ||||
|  | ||||
| <h3>WGL environment variables</h3> | ||||
| <ul> | ||||
| <li>WGL_SWAP_INTERVAL - to set a swap interval, equivalent to calling | ||||
| wglSwapIntervalEXT() in an application.  If this environment variable | ||||
| is set, application calls to wglSwapIntervalEXT() will have no effect. | ||||
| </ul> | ||||
|  | ||||
| <h3>VA-API state tracker environment variables</h3> | ||||
| <ul> | ||||
|   | ||||
| @@ -24,13 +24,10 @@ not started | ||||
|  | ||||
| # OpenGL Core and Compatibility context support | ||||
|  | ||||
| Some drivers do not support the Compatibility profile or the | ||||
| ARB_compatibility extensions.  If an application does not request a | ||||
| specific version without the forward-compatiblity flag, such drivers | ||||
| will be limited to OpenGL 3.0.  If an application requests OpenGL 3.1, | ||||
| it will get a context that may or may not have the ARB_compatibility | ||||
| extension enabled.  Some of the later GL features are exposed in the 3.0 | ||||
| context as extensions. | ||||
| OpenGL 3.1 and later versions are only supported with the Core profile. | ||||
| There are no plans to support GL_ARB_compatibility. The last supported OpenGL | ||||
| version with all deprecated features is 3.0. Some of the later GL features | ||||
| are exposed in the 3.0 context as extensions. | ||||
|  | ||||
|  | ||||
| Feature                                                 Status | ||||
| @@ -191,12 +188,12 @@ GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, r600, radeonsi | ||||
|   GL_ARB_vertex_attrib_binding                          DONE (all drivers) | ||||
|  | ||||
|  | ||||
| GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, r600, radeonsi | ||||
| GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, radeonsi | ||||
|  | ||||
|   GL_MAX_VERTEX_ATTRIB_STRIDE                           DONE (all drivers) | ||||
|   GL_ARB_buffer_storage                                 DONE (freedreno, i965, nv50, llvmpipe, swr) | ||||
|   GL_ARB_clear_texture                                  DONE (i965, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_enhanced_layouts                               DONE (i965, nv50, llvmpipe, softpipe) | ||||
|   GL_ARB_buffer_storage                                 DONE (freedreno, i965, nv50, r600, llvmpipe, swr) | ||||
|   GL_ARB_clear_texture                                  DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_enhanced_layouts                               DONE (i965, nv50, r600, llvmpipe, softpipe) | ||||
|   - compile-time constant expressions                   DONE | ||||
|   - explicit byte offsets for blocks                    DONE | ||||
|   - forced alignment within blocks                      DONE | ||||
| @@ -205,9 +202,9 @@ GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, r600, radeonsi | ||||
|   - 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, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_stencil8                               DONE (freedreno, i965/hsw+, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_vertex_type_10f_11f_11f_rev                    DONE (i965, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_mirror_clamp_to_edge                   DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_stencil8                               DONE (freedreno, i965/hsw+, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_vertex_type_10f_11f_11f_rev                    DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|  | ||||
| GL 4.5, GLSL 4.50 -- all DONE: nvc0, radeonsi | ||||
|  | ||||
| @@ -235,7 +232,7 @@ GL 4.6, GLSL 4.60 | ||||
|   GL_ARB_shader_group_vote                              DONE (i965, nvc0, radeonsi) | ||||
|   GL_ARB_spirv_extensions                               in progress (Nicolai Hähnle, Ian Romanick) | ||||
|   GL_ARB_texture_filter_anisotropic                     DONE (freedreno, i965, nv50, nvc0, r600, radeonsi, softpipe (*), llvmpipe (*)) | ||||
|   GL_ARB_transform_feedback_overflow_query              DONE (i965/gen6+, nvc0, radeonsi, llvmpipe, softpipe) | ||||
|   GL_ARB_transform_feedback_overflow_query              DONE (i965/gen6+, radeonsi, llvmpipe, softpipe) | ||||
|   GL_KHR_no_error                                       DONE (all drivers) | ||||
|  | ||||
| (*) softpipe and llvmpipe advertise 16x anisotropy but simply ignore the setting | ||||
| @@ -272,7 +269,7 @@ GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, r600, radeonsi | ||||
| GLES3.2, GLSL ES 3.2 -- all DONE: i965/gen9+ | ||||
|  | ||||
|   GL_EXT_color_buffer_float                             DONE (all drivers) | ||||
|   GL_KHR_blend_equation_advanced                        DONE (i965, nvc0, radeonsi) | ||||
|   GL_KHR_blend_equation_advanced                        DONE (i965, nvc0) | ||||
|   GL_KHR_debug                                          DONE (all drivers) | ||||
|   GL_KHR_robustness                                     DONE (i965, nvc0, radeonsi) | ||||
|   GL_KHR_texture_compression_astc_ldr                   DONE (freedreno, i965/gen9+) | ||||
| @@ -319,8 +316,8 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve | ||||
|   GL_EXT_memory_object                                  DONE (radeonsi) | ||||
|   GL_EXT_memory_object_fd                               DONE (radeonsi) | ||||
|   GL_EXT_memory_object_win32                            not started | ||||
|   GL_EXT_semaphore                                      DONE (radeonsi) | ||||
|   GL_EXT_semaphore_fd                                   DONE (radeonsi) | ||||
|   GL_EXT_semaphore                                      not started | ||||
|   GL_EXT_semaphore_fd                                   not started | ||||
|   GL_EXT_semaphore_win32                                not started | ||||
|   GL_KHR_blend_equation_advanced_coherent               DONE (i965/gen9+) | ||||
|   GL_KHR_texture_compression_astc_hdr                   DONE (i965/bxt) | ||||
|   | ||||
| @@ -16,59 +16,6 @@ | ||||
|  | ||||
| <h1>News</h1> | ||||
|  | ||||
| <h2>April 18, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/18.0.1.html">Mesa 18.0.1</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>April 18, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.9.html">Mesa 17.3.9</a> is released. | ||||
| This is a bug-fix release. | ||||
| <br> | ||||
| NOTE: It is anticipated that 17.3.9 will be the final release in the | ||||
| 17.3 series. Users of 17.3 are encouraged to migrate to the 18.0 | ||||
| series in order to obtain future fixes. | ||||
| </p> | ||||
|  | ||||
| <h2>April 03, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.8.html">Mesa 17.3.8</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>March 27, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/18.0.0.html">Mesa 18.0.0</a> is released.  This is a | ||||
| new development release.  See the release notes for more information | ||||
| about the release. | ||||
| </p> | ||||
|  | ||||
| <h2>March 21, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.7.html">Mesa 17.3.7</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>February 26, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.6.html">Mesa 17.3.6</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>February 19, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.5.html">Mesa 17.3.5</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>February 15, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.4.html">Mesa 17.3.4</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>January 18, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.3.html">Mesa 17.3.3</a> is released. | ||||
|   | ||||
| @@ -18,20 +18,11 @@ | ||||
|  | ||||
| <h2 id="basic">1. Basic Usage</h2> | ||||
|  | ||||
| <p><strong>The Meson build system is generally considered stable and ready | ||||
| for production</strong></p> | ||||
| <p><strong>The Meson build system for Mesa is still under active development, | ||||
| and should not be used in production environments.</strong></p> | ||||
|  | ||||
| <p>The meson build is tested on on Linux, macOS, Cygwin and Haiku, it should | ||||
| work on FreeBSD, DragonflyBSD, NetBSD, and OpenBSD.</p> | ||||
|  | ||||
| <p><strong>Mesa requires Meson >= 0.42.0 to build in general.</strong> | ||||
|  | ||||
| Additionaly, to build the Clover OpenCL state tracker or the OpenSWR driver | ||||
| meson 0.44.0 or greater is required. | ||||
|  | ||||
| Some older versions of meson do not check that they are too old and will error | ||||
| out in odd ways. | ||||
| </p> | ||||
| <p>The meson build is currently only tested on linux, and is known to not work | ||||
| on macOS, Windows, and haiku. This will be fixed.</p> | ||||
|  | ||||
| <p> | ||||
| The meson program is used to configure the source directory and generates | ||||
| @@ -120,7 +111,6 @@ change compiler in a configured build directory. | ||||
| </dd> | ||||
|  | ||||
|  | ||||
| <dl> | ||||
| <dt><code>LLVM</code></dt> | ||||
| <dd><p>Meson includes upstream logic to wrap llvm-config using it's standard | ||||
| dependncy interface. It will search $PATH (or %PATH% on windows) for | ||||
| @@ -129,15 +119,15 @@ llvm-config, so using an LLVM from a non-standard path is as easy as | ||||
| </p></dd> | ||||
| </dl> | ||||
|  | ||||
| <dl> | ||||
| <dt><code>PKG_CONFIG_PATH</code></dt> | ||||
| <dd><p>The | ||||
| <code>pkg-config</code> utility is a hard requirement for configuring and | ||||
| building Mesa on Unix-like systems. It is used to search for external libraries | ||||
| on the system. This environment variable is used to control the search path for | ||||
| <code>pkg-config</code>. For instance, setting | ||||
| <code>PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig</code> will search for package | ||||
| metadata in <code>/usr/X11R6</code> before the standard directories.</p> | ||||
| building Mesa on Linux and *BSD. It is used to search for external libraries | ||||
| on the system. This environment variable is used to control the search | ||||
| path for <code>pkg-config</code>. For instance, setting | ||||
| <code>PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig</code> will search for | ||||
| package metadata in <code>/usr/X11R6</code> before the standard | ||||
| directories.</p> | ||||
| </dd> | ||||
| </dl> | ||||
|  | ||||
| @@ -161,9 +151,9 @@ may interfer with debbugging as some code and validation will be optimized | ||||
| away. | ||||
| </p> | ||||
|  | ||||
| <p> For those wishing to pass their own optimization flags, use the "plain" | ||||
| buildtype, which causes meson to inject no additional compiler arguments, only | ||||
| those in the C/CXXFLAGS and those that mesa itself defines.</p> | ||||
| <p> For those wishing to pass their own -O option, use the "plain" buildtype, | ||||
| which cuases meson to inject no additional compiler arguments, only those in | ||||
| the C/CXXFLAGS and those that mesa itself defines.</p> | ||||
| </dd> | ||||
| </dl> | ||||
|  | ||||
|   | ||||
| @@ -27,5 +27,5 @@ ARB_texture_float: | ||||
|     enable this extension. | ||||
|  | ||||
|  | ||||
| [1] https://patents.google.com/patent/US6650327B1 | ||||
| [1] https://www.google.com/patents/about?id=mIIOAAAAEBAJ&dq=6650327 | ||||
| [2] https://www.opengl.org/registry/specs/ARB/texture_float.txt | ||||
|   | ||||
| @@ -37,99 +37,69 @@ if you'd like to nominate a patch in the next stable release. | ||||
| <th>Release</th> | ||||
| <th>Release manager</th> | ||||
| <th>Notes</th> | ||||
| </tr> | ||||
| <tr> | ||||
| <td rowspan="3">18.0</td> | ||||
| <td>2018-04-20</td> | ||||
| <td rowspan="3">17.3</td> | ||||
| <td>2018-01-26</td> | ||||
| <td>17.3.4</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-02-09</td> | ||||
| <td>17.3.5</td> | ||||
| <td>Juan A. Suarez Romero</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-02-23</td> | ||||
| <td>17.3.6</td> | ||||
| <td>Juan A. Suarez Romero</td> | ||||
| <td>Final planned release for the 17.3 series</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td rowspan="7">18.0</td> | ||||
| <td>2018-01-19</td> | ||||
| <td>18.0.0-rc1</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-01-26</td> | ||||
| <td>18.0.0-rc2</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-02-02</td> | ||||
| <td>18.0.0-rc3</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-02-09</td> | ||||
| <td>18.0.0-rc4</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td>May be promoted to 18.0.0 final</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-02-23</td> | ||||
| <td>18.0.1</td> | ||||
| <td>Andres Gomez</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-03-09</td> | ||||
| <td>18.0.2</td> | ||||
| <td>Juan A. Suarez Romero</td> | ||||
| <td>Andres Gomez</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-05-04</td> | ||||
| <td>2018-03-23</td> | ||||
| <td>18.0.3</td> | ||||
| <td>Juan A. Suarez Romero</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-05-18</td> | ||||
| <td>18.0.4</td> | ||||
| <td>Juan A. Suarez Romero</td> | ||||
| <td>Last planned 18.0.x release</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td rowspan="8">18.1</td> | ||||
| <td>2018-04-20</td> | ||||
| <td>18.1.0rc1</td> | ||||
| <td>Dylan Baker</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-04-27</td> | ||||
| <td>18.1.0rc2</td> | ||||
| <td>Dylan Baker</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-05-04</td> | ||||
| <td>18.1.0rc3</td> | ||||
| <td>Dylan Baker</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-05-11</td> | ||||
| <td>18.1.0rc4</td> | ||||
| <td>Dylan Baker</td> | ||||
| <td>Last planned RC/Final release</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>TBD</td> | ||||
| <td>18.1.1</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>TBD</td> | ||||
| <td>18.1.2</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>TBD</td> | ||||
| <td>18.1.3</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>TBD</td> | ||||
| <td>18.1.4</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td>Last planned RC/Final release</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td rowspan="4">18.2</td> | ||||
| <td>2018-07-20</td> | ||||
| <td>18.2.0rc1</td> | ||||
| <td>Andres Gomez</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-07-27</td> | ||||
| <td>18.2.0rc2</td> | ||||
| <td>Andres Gomez</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-08-03</td> | ||||
| <td>18.2.0rc3</td> | ||||
| <td>Andres Gomez</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-08-10</td> | ||||
| <td>18.2.0rc4</td> | ||||
| <td>Andres Gomez</td> | ||||
| <td>Last planned RC/Final release</td> | ||||
| </tr> | ||||
| </table> | ||||
|  | ||||
| </div> | ||||
|   | ||||
| @@ -21,15 +21,7 @@ The release notes summarize what's new or changed in each Mesa release. | ||||
| </p> | ||||
|  | ||||
| <ul> | ||||
| <li><a href="relnotes/18.0.1.html">18.0.1 release notes</a> | ||||
| <li><a href="relnotes/17.3.9.html">17.3.9 release notes</a> | ||||
| <li><a href="relnotes/17.3.8.html">17.3.8 release notes</a> | ||||
| <li><a href="relnotes/18.0.0.html">18.0.0 release notes</a> | ||||
| <li><a href="relnotes/17.3.7.html">17.3.7 release notes</a> | ||||
| <li><a href="relnotes/17.3.6.html">17.3.6 release notes</a> | ||||
| <li><a href="relnotes/17.3.5.html">17.3.5 release notes</a> | ||||
| <li><a href="relnotes/17.3.4.html">17.3.4 release notes</a> | ||||
| <li><a href="relnotes/17.3.3.html">17.3.3 release notes</a> | ||||
| <li><a href="relnotes/17.3.2.html">17.3.3 release notes</a> | ||||
| <li><a href="relnotes/17.3.2.html">17.3.2 release notes</a> | ||||
| <li><a href="relnotes/17.2.8.html">17.2.8 release notes</a> | ||||
| <li><a href="relnotes/17.3.1.html">17.3.1 release notes</a> | ||||
|   | ||||
| @@ -1,275 +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 17.3.4 Release Notes / January 15, 2018</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.3.4 is a bug fix release which fixes bugs found since the 17.3.3 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.3.4 implements the OpenGL 4.5 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.5.  OpenGL | ||||
| 4.5 is <strong>only</strong> available if requested at context creation | ||||
| because compatibility contexts are not supported. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h2>SHA256 checksums</h2> | ||||
| <pre> | ||||
| 2d3a4c3cbc995b3e192361dce710d8c749e046e7575aa1b7d8fc9e6b4df28f84  mesa-17.3.4.tar.gz | ||||
| 71f995e233bc5df1a0dd46c980d1720106e7f82f02d61c1ca50854b5e02590d0  mesa-17.3.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=90311">Bug 90311</a> - Fail to build libglx with clang at linking stage</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101442">Bug 101442</a> - Piglit shaders@ssa@fs-if-def-else-break fails with sb but passes with R600_DEBUG=nosb</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102435">Bug 102435</a> - [skl,kbl] [drm] GPU HANG: ecode 9:0:0x86df7cf9, in csgo_linux64 [4947], reason: Hang on rcs, action: reset</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103006">Bug 103006</a> - [OpenGL CTS] [HSW] KHR-GL45.vertex_attrib_binding.basic-inputL-case1</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103626">Bug 103626</a> - [SNB] ES3-CTS.functional.shaders.precision</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104163">Bug 104163</a> - [GEN9+] 2-3% perf drop in GfxBench Manhattan 3.1 from "i965: Disable regular fast-clears (CCS_D) on gen9+"</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104383">Bug 104383</a> - [KBL] Intel GPU hang with firefox</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104411">Bug 104411</a> - [CCS] lemonbar-xft GPU hang</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104487">Bug 104487</a> - [KBL] portal2_linux GPU hang</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104711">Bug 104711</a> - [skl CCS] Oxenfree (unity engine game) hangs GPU</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104741">Bug 104741</a> - Graphic corruption for Android apps Telegram and KineMaster</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104745">Bug 104745</a> - HEVC VDPAU decoding broken on RX 460 with UVD Firmware v1.130</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104818">Bug 104818</a> - mesa fails to build on ia64</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Andres Gomez (1):</p> | ||||
| <ul> | ||||
|   <li>i965: perform 2 uploads with dual slot *64*PASSTHRU formats on gen<8</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (10):</p> | ||||
| <ul> | ||||
|   <li>radv: Fix ordering issue in meta memory allocation failure path.</li> | ||||
|   <li>radv: Fix memory allocation failure path in compute resolve init.</li> | ||||
|   <li>radv: Fix freeing meta state if the device pipeline cache fails to allocate.</li> | ||||
|   <li>radv: Fix fragment resolve init memory allocation failure paths.</li> | ||||
|   <li>radv: Fix bufimage failure deallocation.</li> | ||||
|   <li>radv: Init variant entry with memset.</li> | ||||
|   <li>radv: Don't allow 3d or 1d depth/stencil textures.</li> | ||||
|   <li>ac/nir: Use instance_rate_inputs per attribute, not per variable.</li> | ||||
|   <li>ac/nir: Use correct 32-bit component writemask for 64-bit SSBO stores.</li> | ||||
|   <li>ac/nir: Fix vector extraction if source vector has >4 elements.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Boyuan Zhang (2):</p> | ||||
| <ul> | ||||
|   <li>radeon/vcn: add and manage render picture list</li> | ||||
|   <li>radeon/uvd: add and manage render picture list</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Chuck Atkins (1):</p> | ||||
| <ul> | ||||
|   <li>configure.ac: add missing llvm dependencies to .pc files</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dave Airlie (10):</p> | ||||
| <ul> | ||||
|   <li>r600/sb: fix a bug emitting ar load from a constant.</li> | ||||
|   <li>ac/nir: account for view index in the user sgpr allocation.</li> | ||||
|   <li>radv: add fs_key meta format support to resolve passes.</li> | ||||
|   <li>radv: don't use hw resolve for integer image formats</li> | ||||
|   <li>radv: don't use hw resolves for r16g16 norm formats.</li> | ||||
|   <li>radv: move spi_baryc_cntl to pipeline</li> | ||||
|   <li>r600/sb: insert the else clause when we might depart from a loop</li> | ||||
|   <li>radv: don't enable tc compat for d32s8 + 4/8 samples (v1.1)</li> | ||||
|   <li>radv/gfx9: fix block compression texture views. (v2)</li> | ||||
|   <li>virgl: also remove dimension on indirect.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eleni Maria Stea (1):</p> | ||||
| <ul> | ||||
|   <li>mesa: Fix function pointers initialization in status tracker</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (18):</p> | ||||
| <ul> | ||||
|   <li>cherry-ignore: i965: Accept CONTEXT_ATTRIB_PRIORITY for brwCreateContext</li> | ||||
|   <li>cherry-ignore: swr: refactor swr_create_screen to allow for proper cleanup on error</li> | ||||
|   <li>cherry-ignore: anv: add explicit 18.0 only nominations</li> | ||||
|   <li>cherry-ignore: radv: fix sample_mask_in loading. (v3.1)</li> | ||||
|   <li>cherry-ignore: meson: multiple fixes</li> | ||||
|   <li>cherry-ignore: swr/rast: support llvm 3.9 type declarations</li> | ||||
|   <li>Revert "cherry-ignore: intel/fs: Use the original destination region for int MUL lowering"</li> | ||||
|   <li>cherry-ignore: ac/nir: set amdgpu.uniform and invariant.load for UBOs</li> | ||||
|   <li>cherry-ignore: add gen10 fixes</li> | ||||
|   <li>cherry-ignore: add r600/amdgpu 18.0 nominations</li> | ||||
|   <li>cherry-ignore: add i965 shader cache fixes</li> | ||||
|   <li>cherry-ignore: nir: mark unused space in packed_tex_data</li> | ||||
|   <li>radv: Stop advertising VK_KHX_multiview</li> | ||||
|   <li>cherry-ignore: radv: Don't expose VK_KHX_multiview on android.</li> | ||||
|   <li>configure.ac: correct driglx-direct help text</li> | ||||
|   <li>cherry-ignore: add meson fix</li> | ||||
|   <li>cherry-ignore: add a few more meson fixes</li> | ||||
|   <li>Update version to 17.3.4</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Engestrom (1):</p> | ||||
| <ul> | ||||
|   <li>radeon: remove left over dead code</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Gert Wollny (1):</p> | ||||
| <ul> | ||||
|   <li>r600/shader: Initialize max_driver_temp_used correctly for the first time</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Grazvydas Ignotas (2):</p> | ||||
| <ul> | ||||
|   <li>st/va: release held locks in error paths</li> | ||||
|   <li>st/vdpau: release held lock in error path</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Igor Gnatenko (1):</p> | ||||
| <ul> | ||||
|   <li>link mesautil with pthreads</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Indrajit Das (4):</p> | ||||
| <ul> | ||||
|   <li>st/omx_bellagio: Update default intra matrix per MPEG2 spec</li> | ||||
|   <li>radeon/uvd: update quantiser matrices only when requested</li> | ||||
|   <li>radeon/vcn: update quantiser matrices only when requested</li> | ||||
|   <li>st/va: clear pointers for mpeg2 quantiser matrices</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (19):</p> | ||||
| <ul> | ||||
|   <li>i965: Call brw_cache_flush_for_render in predraw_resolve_framebuffer</li> | ||||
|   <li>i965: Add more precise cache tracking helpers</li> | ||||
|   <li>i965/blorp: Add more destination flushing</li> | ||||
|   <li>i965: Track the depth and render caches separately</li> | ||||
|   <li>i965: Track format and aux usage in the render cache</li> | ||||
|   <li>Re-enable regular fast-clears (CCS_D) on gen9+</li> | ||||
|   <li>i965/miptree: Refactor CCS_E and CCS_D cases in render_aux_usage</li> | ||||
|   <li>i965/miptree: Add an explicit tiling parameter to create_for_bo</li> | ||||
|   <li>i965/miptree: Use the tiling from the modifier instead of the BO</li> | ||||
|   <li>i965/bufmgr: Add a create_from_prime_tiled function</li> | ||||
|   <li>i965: Set tiling on BOs imported with modifiers</li> | ||||
|   <li>i965/miptree: Take an aux_usage in prepare/finish_render</li> | ||||
|   <li>i965/miptree: Add an aux_disabled parameter to render_aux_usage</li> | ||||
|   <li>i965/surface_state: Drop brw_aux_surface_disabled</li> | ||||
|   <li>intel/fs: Use the original destination region for int MUL lowering</li> | ||||
|   <li>anv/pipeline: Don't look at blend state unless we have an attachment</li> | ||||
|   <li>anv/cmd_buffer: Re-emit the pipeline at every subpass</li> | ||||
|   <li>anv: Stop advertising VK_KHX_multiview</li> | ||||
|   <li>i965: Call prepare_external after implicit window-system MSAA resolves</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jon Turney (3):</p> | ||||
| <ul> | ||||
|   <li>configure: Default to gbm=no on osx</li> | ||||
|   <li>glx/apple: include util/debug.h for env_var_as_boolean prototype</li> | ||||
|   <li>glx/apple: locate dispatch table functions to wrap by name</li> | ||||
| </ul> | ||||
|  | ||||
| <p>José Fonseca (1):</p> | ||||
| <ul> | ||||
|   <li>svga: Prevent use after free.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Juan A. Suarez Romero (1):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.3.3</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Kenneth Graunke (2):</p> | ||||
| <ul> | ||||
|   <li>i965: Bind null render targets for shadow sampling + color.</li> | ||||
|   <li>i965: Bump official kernel requirement to Linux v3.9.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Lucas Stach (2):</p> | ||||
| <ul> | ||||
|   <li>etnaviv: dirty TS state when framebuffer has changed</li> | ||||
|   <li>renderonly: fix dumb BO allocation for non 32bpp formats</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Marek Olšák (1):</p> | ||||
| <ul> | ||||
|   <li>radeonsi: don't ignore pitch for imported textures</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Matthew Nicholls (2):</p> | ||||
| <ul> | ||||
|   <li>radv: restore previous stencil reference after depth-stencil clear</li> | ||||
|   <li>radv: remove predication on cache flushes</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Maxin B. John (1):</p> | ||||
| <ul> | ||||
|   <li>anv_icd.py: improve reproducible builds</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Michel Dänzer (1):</p> | ||||
| <ul> | ||||
|   <li>winsys/radeon: Compute is_displayable in surf_drm_to_winsys</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Roland Scheidegger (1):</p> | ||||
| <ul> | ||||
|   <li>r600: don't do stack workarounds for hemlock</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Samuel Pitoiset (1):</p> | ||||
| <ul> | ||||
|   <li>radv: create pipeline layout objects for all meta operations</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Samuel Thibault (1):</p> | ||||
| <ul> | ||||
|   <li>glx: fix non-dri build</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Timothy Arceri (2):</p> | ||||
| <ul> | ||||
|   <li>ac: fix buffer overflow bug in 64bit SSBO loads</li> | ||||
|   <li>ac: fix visit_ssa_undef() for doubles</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,66 +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 17.3.5 Release Notes / February 19, 2018</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.3.5 is a bug fix release which fixes bugs found since the 17.3.4 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.3.5 implements the OpenGL 4.5 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.5.  OpenGL | ||||
| 4.5 is <strong>only</strong> available if requested at context creation | ||||
| because compatibility contexts are not supported. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h2>SHA256 checksums</h2> | ||||
| <pre> | ||||
| bc1ee20366aae2affc37c89228f871f438136f70252005e9f842169bde976788  mesa-17.3.5.tar.gz | ||||
| eb9228fc8aaa71e0205c1481c5b157752ebaec9b646b030d27478e25a6d7936a  mesa-17.3.5.tar.xz | ||||
| </pre> | ||||
|  | ||||
|  | ||||
| <h2>New features</h2> | ||||
| <p>None</p> | ||||
|  | ||||
|  | ||||
| <h2>Bug fixes</h2> | ||||
|  | ||||
| <ul> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Emil Velikov (2):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.3.4</li> | ||||
|   <li>Update version to 17.3.5</li> | ||||
| </ul> | ||||
|  | ||||
| <p>James Legg (1):</p> | ||||
| <ul> | ||||
|   <li>ac/nir: Fix conflict resolution typo in handle_vs_input_decl</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,85 +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 17.3.6 Release Notes / February 27, 2018</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.3.6 is a bug fix release which fixes bugs found since the 17.3.5 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.3.6 implements the OpenGL 4.5 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.5.  OpenGL | ||||
| 4.5 is <strong>only</strong> available if requested at context creation | ||||
| because compatibility contexts are not supported. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h2>SHA256 checksums</h2> | ||||
| <pre> | ||||
| d5e10ea3f0d11b06d2b0b235bba372a04278c39bc0e712090bda1f61842db188  mesa-17.3.6.tar.gz | ||||
| e5915680d44ac9d05defdec529db7459ac9edd441c9845266eff2e2d3e57fbf8  mesa-17.3.6.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=104383">Bug 104383</a> - [KBL] Intel GPU hang with firefox</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104411">Bug 104411</a> - [CCS] lemonbar-xft GPU hang</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104546">Bug 104546</a> - Crash happens when running compute pipeline after calling glxMakeCurrent two times</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Emil Velikov (2):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.3.5</li> | ||||
|   <li>Update version to 17.3.6</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (4):</p> | ||||
| <ul> | ||||
|   <li>i965/draw: Do resolves properly for textures used by TXF</li> | ||||
|   <li>i965: Replace draw_aux_buffer_disabled with draw_aux_usage</li> | ||||
|   <li>i965/draw: Set NEW_AUX_STATE when draw aux changes</li> | ||||
|   <li>i965: Stop disabling aux during texture preparation</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Kenneth Graunke (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Don't disable CCS for RT dependencies when dispatching compute.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Topi Pohjolainen (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Don't try to disable render aux buffers for compute</li> | ||||
| </ul> | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
|  | ||||
| @@ -1,312 +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 17.3.7 Release Notes / March 21, 2018</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.3.7 is a bug fix release which fixes bugs found since the 17.3.7 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.3.7 implements the OpenGL 4.5 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.5.  OpenGL | ||||
| 4.5 is <strong>only</strong> available if requested at context creation | ||||
| because compatibility contexts are not supported. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h2>SHA256 checksums</h2> | ||||
| <pre> | ||||
| f08de6d0ccb3dbca04b44790d85c3ff9e7b1cc4189d1b7c7167e5ba7d98736c0  mesa-17.3.7.tar.gz | ||||
| 0595904a8fba65a8fe853a84ad3c940205503b94af41e8ceed245fada777ac1e  mesa-17.3.7.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=103007">Bug 103007</a> - [OpenGL CTS] [HSW] KHR-GL45.gpu_shader_fp64.fp64.max_uniform_components fails</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103988">Bug 103988</a> - Intermittent piglit failures with shader cache enabled</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104302">Bug 104302</a> - Wolfenstein 2 (2017) under wine graphical artifacting on RADV</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104381">Bug 104381</a> - swr fails to build since llvm-svn r321257</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104625">Bug 104625</a> - semicolon after if</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104642">Bug 104642</a> - Android: NULL pointer dereference with i965 mesa-dev, seems build_id_length related</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104654">Bug 104654</a> - r600/sb: Alien Isolation GPU lock</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104905">Bug 104905</a> - SpvOpFOrdEqual doesn't return correct results for NaNs</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104915">Bug 104915</a> - Indexed SHADING_LANGUAGE_VERSION query not supported</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104923">Bug 104923</a> - anv: Dota2 rendering corruption</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105013">Bug 105013</a> - [regression] GLX+VA-API+clutter-gst video playback is corrupt with Mesa 17.3 (but is fine with 17.2)</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105029">Bug 105029</a> - simdlib_512_avx512.inl:371:57: error: could not convert ‘_mm512_mask_blend_epi32((__mmask16)(ImmT), a, b)’ from ‘__m512i’ {aka ‘__vector(8) long long int’} to ‘SIMDImpl::SIMD512Impl::Float’</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105098">Bug 105098</a> - [RADV] GPU freeze with simple Vulkan App</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105103">Bug 105103</a> - Wayland master causes Mesa to fail to compile</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105224">Bug 105224</a> - Webgl Pointclouds flickers</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105255">Bug 105255</a> - Waiting for fences without waitAll is not implemented</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105271">Bug 105271</a> - WebGL2 shader crashes i965_dri.so 17.3.3</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105436">Bug 105436</a> - Blinking textures in UT2004 [bisected]</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Alex Smith (1):</p> | ||||
| <ul> | ||||
|   <li>radv: Fix CmdCopyImage between uncompressed and compressed images</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Andriy Khulap (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Fix RELOC_WRITE typo in brw_store_data_imm64()</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Anuj Phogat (1):</p> | ||||
| <ul> | ||||
|   <li>isl: Don't use surface format R32_FLOAT for typed atomic integer operations</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (6):</p> | ||||
| <ul> | ||||
|   <li>radv: Always lower indirect derefs after nir_lower_global_vars_to_local.</li> | ||||
|   <li>radeonsi: Export signalled sync file instead of -1.</li> | ||||
|   <li>radv: Implement WaitForFences with !waitAll.</li> | ||||
|   <li>radv: Implement waiting on non-submitted fences.</li> | ||||
|   <li>radv: Fix copying from 3D images starting at non-zero depth.</li> | ||||
|   <li>radv: Increase the number of dynamic uniform buffers.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Brian Paul (1):</p> | ||||
| <ul> | ||||
|   <li>mesa: add missing switch case for EXTRA_VERSION_40 in check_extra()</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Chuck Atkins (1):</p> | ||||
| <ul> | ||||
|   <li>glx: Properly handle cases where screen creation fails</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Daniel Stone (3):</p> | ||||
| <ul> | ||||
|   <li>i965: Fix bugs in intel_from_planar</li> | ||||
|   <li>egl/wayland: Fix ARGB/XRGB transposition in config map</li> | ||||
|   <li>egl/wayland: Always use in-tree wayland-egl-backend.h</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dave Airlie (9):</p> | ||||
| <ul> | ||||
|   <li>r600: fix cubemap arrays</li> | ||||
|   <li>r600/sb/cayman: fix indirect ubo access on cayman</li> | ||||
|   <li>r600: fix xfb stream check.</li> | ||||
|   <li>ac/nir: to integer the args to bcsel.</li> | ||||
|   <li>r600/cayman: fix fragcood loading recip generation.</li> | ||||
|   <li>radv: don't support tc-compat on multisample d32s8 at all.</li> | ||||
|   <li>virgl: remap query types to hw support.</li> | ||||
|   <li>ac/nir: don't apply slice rounding on txf_ms</li> | ||||
|   <li>r600: implement callstack workaround for evergreen.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dylan Baker (2):</p> | ||||
| <ul> | ||||
|   <li>glapi/check_table: Remove 'extern "C"' block</li> | ||||
|   <li>glapi: remove APPLE extensions from test</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (1):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.3.6</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Anholt (4):</p> | ||||
| <ul> | ||||
|   <li>mesa: Drop incorrect A4B4G4R4 _mesa_format_matches_format_and_type() cases.</li> | ||||
|   <li>ac/nir: Fix compiler warning about uninitialized dw_addr.</li> | ||||
|   <li>glsl/tests: Fix strict aliasing warning about int64/double.</li> | ||||
|   <li>glsl/tests: Fix a compiler warning about signed/unsigned loop comparison.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Francisco Jerez (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Fix KHR_blend_equation_advanced with some render targets.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Frank Binns (1):</p> | ||||
| <ul> | ||||
|   <li>egl/dri2: fix segfault when display initialisation fails</li> | ||||
| </ul> | ||||
|  | ||||
| <p>George Kyriazis (1):</p> | ||||
| <ul> | ||||
|   <li>swr/rast: blend_epi32() should return Integer, not Float</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Gert Wollny (1):</p> | ||||
| <ul> | ||||
|   <li>r600: Take ALU_EXTENDED into account when evaluating jump offsets</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Gurchetan Singh (1):</p> | ||||
| <ul> | ||||
|   <li>mesa: don't clamp just based on ARB_viewport_array extension</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Iago Toral Quiroga (2):</p> | ||||
| <ul> | ||||
|   <li>i965/sbe: fix number of inputs for active components</li> | ||||
|   <li>i965/vec4: use a temp register to compute offsets for pull loads</li> | ||||
| </ul> | ||||
|  | ||||
| <p>James Legg (1):</p> | ||||
| <ul> | ||||
|   <li>radv: Really use correct HTILE expanded words.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (3):</p> | ||||
| <ul> | ||||
|   <li>intel/isl: Add an isl_color_value_is_zero helper</li> | ||||
|   <li>vulkan/wsi/x11: Set OUT_OF_DATE if wait_for_special_event fails</li> | ||||
|   <li>intel/fs: Set up sampler message headers in the visitor on gen7+</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jonathan Gray (1):</p> | ||||
| <ul> | ||||
|   <li>configure.ac: pthread-stubs not present on OpenBSD</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jordan Justen (3):</p> | ||||
| <ul> | ||||
|   <li>i965: Create new program cache bo when clearing the program cache</li> | ||||
|   <li>program: Don't reset SamplersValidated when restoring from shader cache</li> | ||||
|   <li>intel/vulkan: Hard code CS scratch_ids_per_subslice for Cherryview</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Juan A. Suarez Romero (14):</p> | ||||
| <ul> | ||||
|   <li>cherry-ignore: Explicit 18.0 only nominations</li> | ||||
|   <li>cherry-ignore: r600/compute: only mark buffer/image state dirty for fragment shaders</li> | ||||
|   <li>cherry-ignore: anv: Move setting current_pipeline to cmd_state_init</li> | ||||
|   <li>cherry-ignore: anv: Be more careful about fast-clear colors</li> | ||||
|   <li>cherry-ignore: Add patches that has a specific version for 17.3</li> | ||||
|   <li>cherry-ignore: r600: Take ALU_EXTENDED into account when evaluating jump offsets</li> | ||||
|   <li>cherry-ignore: intel/compiler: Memory fence commit must always be enabled for gen10+</li> | ||||
|   <li>cherry-ignore: i965: Avoid problems from referencing orphaned BOs after growing.</li> | ||||
|   <li>cherry-ignore: include all Meson related fixes</li> | ||||
|   <li>cherry-ignore: ac/shader: fix vertex input with components.</li> | ||||
|   <li>cherry-ignore: i965: Use absolute addressing for constant buffer 0 on Kernel 4.16+.</li> | ||||
|   <li>cherry-ignore: anv/image: Separate modifiers from legacy scanout</li> | ||||
|   <li>cherry-ignore: glsl: Fix memory leak with known glsl_type instances</li> | ||||
|   <li>Update version to 17.3.7</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Karol Herbst (1):</p> | ||||
| <ul> | ||||
|   <li>nvir/nvc0: fix legalizing of ld unlock c0[0x10000]</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Kenneth Graunke (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Emit CS stall before MEDIA_VFE_STATE.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Lionel Landwerlin (1):</p> | ||||
| <ul> | ||||
|   <li>i965: perf: ensure reading config IDs from sysfs isn't interrupted</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Marek Olšák (2):</p> | ||||
| <ul> | ||||
|   <li>radeonsi: align command buffer starting address to fix some Raven hangs</li> | ||||
|   <li>configure.ac: blacklist libdrm 2.4.90</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Michal Navratil (1):</p> | ||||
| <ul> | ||||
|   <li>winsys/amdgpu: allow non page-aligned size bo creation from pointer</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Samuel Iglesias Gonsálvez (1):</p> | ||||
| <ul> | ||||
|   <li>glsl/linker: fix bug when checking precision qualifier</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Samuel Pitoiset (2):</p> | ||||
| <ul> | ||||
|   <li>ac/nir: use ordered float comparisons except for not equal</li> | ||||
|   <li>Revert "mesa: do not trigger _NEW_TEXTURE_STATE in glActiveTexture()"</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Stephan Gerhold (1):</p> | ||||
| <ul> | ||||
|   <li>util/build-id: Fix address comparison for binaries with LOAD vaddr > 0</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Thomas Hellstrom (2):</p> | ||||
| <ul> | ||||
|   <li>svga: Fix a leftover debug hack</li> | ||||
|   <li>loader_dri3/glx/egl: Reinstate the loader_dri3_vtable get_dri_screen callback</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Tim Rowley (1):</p> | ||||
| <ul> | ||||
|   <li>swr/rast: fix MemoryBuffer build break for llvm-6</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Timothy Arceri (1):</p> | ||||
| <ul> | ||||
|   <li>nir: fix interger divide by zero crash during constant folding</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Tobias Droste (1):</p> | ||||
| <ul> | ||||
|   <li>gallivm: Use new LLVM fast-math-flags API</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Vadym Shovkoplias (1):</p> | ||||
| <ul> | ||||
|   <li>mesa: add glsl version query (v4)</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Vinson Lee (1):</p> | ||||
| <ul> | ||||
|   <li>swr/rast: Fix macOS macro.</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
|  | ||||
| @@ -1,147 +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 17.3.8 Release Notes / April 03, 2018</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.3.8 is a bug fix release which fixes bugs found since the 17.3.7 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.3.8 implements the OpenGL 4.5 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.5.  OpenGL | ||||
| 4.5 is <strong>only</strong> available if requested at context creation | ||||
| because compatibility contexts are not supported. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h2>SHA256 checksums</h2> | ||||
| <pre> | ||||
| 175d2ca9be2af3a8db6cd603986096d75da70f59699528d7b6675d542a305e23  mesa-17.3.8.tar.gz | ||||
| 8f9d9bf281c48e4a8f5228816577263b4c655248dc7666e75034ab422951a6b1  mesa-17.3.8.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=102542">Bug 102542</a> - mesa-17.2.0/src/gallium/state_trackers/nine/nine_ff.c:1938: bad assignment ?</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103746">Bug 103746</a> - [BDW BSW SKL KBL] dEQP-GLES31.functional.copy_image regressions</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104636">Bug 104636</a> - [BSW/HD400] Aztec Ruins GL version GPU hangs</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105290">Bug 105290</a> - [BSW/HD400] SynMark OglCSDof GPU hangs when shaders come from cache</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105464">Bug 105464</a> - Reading per-patch outputs in Tessellation Control Shader returns undefined values</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105670">Bug 105670</a> - [regression][hang] Trine1EE hangs GPU after loading screen on Mesa3D-17.3 and later</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105704">Bug 105704</a> - compiler assertion hit</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105717">Bug 105717</a> - [bisected] Mesa build tests fails: BIGENDIAN_CPU or LITTLEENDIAN_CPU must be defined</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Axel Davy (3):</p> | ||||
| <ul> | ||||
|   <li>st/nine: Fix bad tracking of vs textures for NINESBT_ALL</li> | ||||
|   <li>st/nine: Fixes warning about implicit conversion</li> | ||||
|   <li>st/nine: Fix non inversible matrix check</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Caio Marcelo de Oliveira Filho (1):</p> | ||||
| <ul> | ||||
|   <li>anv/pipeline: fail if TCS/TES compile fail</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dave Airlie (1):</p> | ||||
| <ul> | ||||
|   <li>radv: get correct offset into LDS for indexed vars.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Derek Foreman (1):</p> | ||||
| <ul> | ||||
|   <li>egl/wayland: Make swrast display_sync the correct queue</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Engestrom (1):</p> | ||||
| <ul> | ||||
|   <li>meson/configure: detect endian.h instead of trying to guess when it's available</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Ian Romanick (2):</p> | ||||
| <ul> | ||||
|   <li>mesa: Don't write to user buffer in glGetTexParameterIuiv on error</li> | ||||
|   <li>i965/vec4: Fix null destination register in 3-source instructions</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Emit texture cache invalidates around blorp_copy</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jordan Justen (2):</p> | ||||
| <ul> | ||||
|   <li>i965: Calculate thread_count in brw_alloc_stage_scratch</li> | ||||
|   <li>i965: Hard code CS scratch_ids_per_subslice for Cherryview</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Juan A. Suarez Romero (6):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.3.7</li> | ||||
|   <li>cherry-ignore: ac/nir: pass the nir variable through tcs loading.</li> | ||||
|   <li>cherry-ignore: radv: handle exporting view index to fragment shader. (v1.1)</li> | ||||
|   <li>cherry-ignore: omx: always define ENABLE_ST_OMX_{BELLAGIO,TIZONIA}</li> | ||||
|   <li>cherry-ignore: docs: fix 18.0 release note version</li> | ||||
|   <li>Update version to 17.3.8</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Leo Liu (1):</p> | ||||
| <ul> | ||||
|   <li>radeon/vce: move feedback command inside of destroy function</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Marek Olšák (1):</p> | ||||
| <ul> | ||||
|   <li>st/dri: fix OpenGL-OpenCL interop for GL_TEXTURE_BUFFER</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Rob Clark (1):</p> | ||||
| <ul> | ||||
|   <li>nir: fix per_vertex_output intrinsic</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Timothy Arceri (2):</p> | ||||
| <ul> | ||||
|   <li>glsl: fix infinite loop caused by bug in loop unrolling pass</li> | ||||
|   <li>nir: fix crash in loop unroll corner case</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
|  | ||||
| @@ -1,162 +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 17.3.9 Release Notes / April 18, 2018</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.3.9 is a bug fix release which fixes bugs found since the 17.3.8 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.3.9 implements the OpenGL 4.5 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.5.  OpenGL | ||||
| 4.5 is <strong>only</strong> available if requested at context creation | ||||
| because compatibility contexts are not supported. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h2>SHA256 checksums</h2> | ||||
| <pre> | ||||
| 4d625f65a1ff4cd8cfeb39e38f047507c6dea047502a0d53113c96f54588f340  mesa-17.3.9.tar.gz | ||||
| c5beb5fc05f0e0c294fefe1a393ee118cb67e27a4dca417d77c297f7d4b6e479  mesa-17.3.9.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=98281">Bug 98281</a> - 'message's in ctx->Debug.LogMessages[] seem to leak.</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101408">Bug 101408</a> - [Gen8+] Xonotic fails to render one of the weapons</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102342">Bug 102342</a> - mesa-17.1.7/src/gallium/auxiliary/pipebuffer/pb_cache.c:169]: (style) Suspicious condition</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105317">Bug 105317</a> - The GPU Vega 56 was hang while try to pass #GraphicsFuzz shader15 test</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105440">Bug 105440</a> - GEN7: rendering issue on citra</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105442">Bug 105442</a> - Hang when running nine ff lighting shader with radeonsi</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105994">Bug 105994</a> - surface state leak when creating and destroying image views with aspectMask depth and stencil</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Andres Gomez (2):</p> | ||||
| <ul> | ||||
|   <li>dri_util: when overriding, always reset the core version</li> | ||||
|   <li>mesa: adds some comments regarding MESA_GLES_VERSION_OVERRIDE usage</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Axel Davy (2):</p> | ||||
| <ul> | ||||
|   <li>st/nine: Declare lighting consts for ff shaders</li> | ||||
|   <li>st/nine: Do not use scratch for face register</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (1):</p> | ||||
| <ul> | ||||
|   <li>ac/nir: Add workaround for GFX9 buffer views.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Daniel Stone (1):</p> | ||||
| <ul> | ||||
|   <li>st/dri: Initialise modifier to INVALID for DRI2</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (1):</p> | ||||
| <ul> | ||||
|   <li>glsl: remove unreachable assert()</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Engestrom (1):</p> | ||||
| <ul> | ||||
|   <li>gbm: remove never-implemented function</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Henri Verbeet (1):</p> | ||||
| <ul> | ||||
|   <li>mesa: Inherit texture view multi-sample information from the original texture images.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Iago Toral Quiroga (1):</p> | ||||
| <ul> | ||||
|   <li>compiler/spirv: set is_shadow for depth comparitor sampling opcodes</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (4):</p> | ||||
| <ul> | ||||
|   <li>nir/vars_to_ssa: Remove copies from the correct set</li> | ||||
|   <li>nir/lower_indirect_derefs: Support interp_var_at intrinsics</li> | ||||
|   <li>intel/vec4: Set channel_sizes for MOV_INDIRECT sources</li> | ||||
|   <li>nir/lower_vec_to_movs: Only coalesce if the vec had a SSA destination</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Juan A. Suarez Romero (3):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.3.8</li> | ||||
|   <li>cherry-ignore: Explicit 18.0 only nominations</li> | ||||
|   <li>Update version to 17.3.9</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Lionel Landwerlin (1):</p> | ||||
| <ul> | ||||
|   <li>anv: fix number of planes for depth & stencil</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Marek Olšák (1):</p> | ||||
| <ul> | ||||
|   <li>mesa: simplify MESA_GL_VERSION_OVERRIDE behavior of API override</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Samuel Pitoiset (1):</p> | ||||
| <ul> | ||||
|   <li>radv: fix picking the method for resolve subpass</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Sergii Romantsov (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Extend the negative 32-bit deltas to 64-bits</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Timothy Arceri (6):</p> | ||||
| <ul> | ||||
|   <li>gallium/pipebuffer: fix parenthesis location</li> | ||||
|   <li>glsl: always call do_lower_jumps() after loop unrolling</li> | ||||
|   <li>ac: add if/loop build helpers</li> | ||||
|   <li>radeonsi: make use of if/loop build helpers in ac</li> | ||||
|   <li>ac: make use of if/loop build helpers</li> | ||||
|   <li>mesa: free debug messages when destroying the debug state</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Xiong, James (1):</p> | ||||
| <ul> | ||||
|   <li>i965: return the fourcc saved in __DRIimage when possible</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
|  | ||||
							
								
								
									
										73
									
								
								docs/relnotes/17.4.0.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								docs/relnotes/17.4.0.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | ||||
| <!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 17.4.0 Release Notes / TBD</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.4.0 is a new development release. | ||||
| People who are concerned with stability and reliability should stick | ||||
| with a previous release or wait for Mesa 17.4.1. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.4.0 implements the OpenGL 4.5 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.5.  OpenGL | ||||
| 4.5 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> | ||||
| Note: some of the new features are only available with certain drivers. | ||||
| </p> | ||||
|  | ||||
| <ul> | ||||
| <li>Disk shader cache support for i965 when MESA_GLSL_CACHE_DISABLE environment variable is set to "0" or "false"</li> | ||||
| <li>GL_ARB_shader_atomic_counters and GL_ARB_shader_atomic_counter_ops on r600/evergreen+</li> | ||||
| <li>GL_ARB_shader_image_load_store and GL_ARB_shader_image_size on r600/evergreen+</li> | ||||
| <li>GL_ARB_shader_storage_buffer_object on r600/evergreen+<li> | ||||
| <li>GL_ARB_compute_shader on r600/evergreen+<li> | ||||
| <li>GL_ARB_cull_distance on r600/evergreen+</li> | ||||
| <li>GL_ARB_enhanced_layouts on r600/evergreen+</li> | ||||
| <li>GL_ARB_bindless_texture on nvc0/kepler</li> | ||||
| <li>OpenGL 4.3 on r600/evergreen with hw fp64 support</li> | ||||
| <li>Support 1 binary format for GL_ARB_get_program_binary on i965</li> | ||||
| </ul> | ||||
|  | ||||
| <h2>Bug fixes</h2> | ||||
|  | ||||
| <ul> | ||||
| TBD | ||||
| </ul> | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <ul> | ||||
| <li>Remove incomplete GLX_MESA_set_3dfx_mode from the Xlib libGL</li> | ||||
| </ul> | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,321 +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 18.0.0 Release Notes / March 27 2018</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 18.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 18.0.1. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 18.0.0 implements the OpenGL 4.5 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.5.  OpenGL | ||||
| 4.5 is <strong>only</strong> available if requested at context creation | ||||
| because compatibility contexts are not supported. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h2>SHA256 checksums</h2> | ||||
| <pre> | ||||
| 93c2d3504b2871ac2146603fb1270f341d36a39695e2950a469c5eac74f98457  mesa-18.0.0.tar.gz | ||||
| 694e5c3d37717d23258c1f88bc134223c5d1aac70518d2f9134d6df3ee791eea  mesa-18.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>Disk shader cache support for i965 when MESA_GLSL_CACHE_DISABLE environment variable is set to "0" or "false"</li> | ||||
| <li>GL_ARB_shader_atomic_counters and GL_ARB_shader_atomic_counter_ops on r600/evergreen+</li> | ||||
| <li>GL_ARB_shader_image_load_store and GL_ARB_shader_image_size on r600/evergreen+</li> | ||||
| <li>GL_ARB_shader_storage_buffer_object on r600/evergreen+<li> | ||||
| <li>GL_ARB_compute_shader on r600/evergreen+<li> | ||||
| <li>GL_ARB_cull_distance on r600/evergreen+</li> | ||||
| <li>GL_ARB_enhanced_layouts on r600/evergreen+</li> | ||||
| <li>GL_ARB_bindless_texture on nvc0/kepler</li> | ||||
| <li>OpenGL 4.3 on r600/evergreen with hw fp64 support</li> | ||||
| <li>Support 1 binary format for GL_ARB_get_program_binary on i965. | ||||
|     (For the 18.0 release, 0 formats continue to be supported in | ||||
|     compatibility profiles.)</li> | ||||
| <li>Cannonlake support on i965 and anv</li> | ||||
| </ul> | ||||
|  | ||||
| <h2>Bug fixes</h2> | ||||
|  | ||||
| <ul> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=85564">Bug 85564</a> - Dead Island rendering issues</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=90311">Bug 90311</a> - Fail to build libglx with clang at linking stage</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=92363">Bug 92363</a> - [BSW/BDW] ogles1conform Gets test fails</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=94739">Bug 94739</a> - Mesa 11.1.2 implementation error: bad format MESA_FORMAT_Z_FLOAT32 in _mesa_unpack_uint_24_8_depth_stencil_row</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97532">Bug 97532</a> - Regression: GLB 2.7 & Glmark-2 GLES versions segfault due to linker precision error (259fc505) on dead variable</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97852">Bug 97852</a> - Unreal Engine corrupted preview viewport</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=100438">Bug 100438</a> - glsl/ir.cpp:1376: ir_dereference_variable::ir_dereference_variable(ir_variable*): Assertion `var != NULL' failed.</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101378">Bug 101378</a> - interpolateAtSample check for input parameter is too strict</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101442">Bug 101442</a> - Piglit shaders@ssa@fs-if-def-else-break fails with sb but passes with R600_DEBUG=nosb</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101560">Bug 101560</a> - SPIR-V OpSwitch with int64 not supported even though shaderInt64 is true</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101691">Bug 101691</a> - gfx corruption on windowed 3d-apps running on dGPU</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102177">Bug 102177</a> - [SKL] ES31-CTS.core.sepshaderobjs.StateInteraction fails sporadically</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102264">Bug 102264</a> - Missing MESA_FORMAT_{B8G8R8A8,B8G8R8X8}_SRGB formats</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102354">Bug 102354</a> - Mesa 17.2 no longer can give SRGB-capable framebuffer on i965, even though Mesa 17.1.x does.</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102358">Bug 102358</a> - WarThunder freezes at start, with activated vsync (vblank_mode=2)</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102435">Bug 102435</a> - [skl,kbl] [drm] GPU hang in Valve games based on Source 1</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102503">Bug 102503</a> - Report SRGB framebuffer to SuperTuxKart to workaround SuperTuxKart crash</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102665">Bug 102665</a> - test_glsl_to_tgsi_lifetime.cpp:53:67: error: ‘>>’ should be ‘> >’ within a nested template argument list</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102677">Bug 102677</a> - [OpenGL CTS] KHR-GL45.CommonBugs.CommonBug_PerVertexValidation fails</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102680">Bug 102680</a> - [OpenGL CTS] KHR-GL45.shader_ballot_tests.ShaderBallotBitmasks fails</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102710">Bug 102710</a> - vkCmdBlitImage with arrayLayers > 1 fails</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102774">Bug 102774</a> - [BDW] [Bisected] Absolute constant buffers break VAAPI in mpv</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102809">Bug 102809</a> - Rust shadows(?) flash random colours</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102897">Bug 102897</a> - Separate bind points are not implemented correctly</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102955">Bug 102955</a> - HyperZ related rendering issue in ARK: Survival Evolved</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103006">Bug 103006</a> - [OpenGL CTS] [HSW] KHR-GL45.vertex_attrib_binding.basic-inputL-case1</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103007">Bug 103007</a> - [OpenGL CTS] [HSW] KHR-GL45.gpu_shader_fp64.fp64.max_uniform_components fails</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103085">Bug 103085</a> - [ivb byt hsw] piglit.spec.arb_indirect_parameters.tf-count-arrays</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103098">Bug 103098</a> - [OpenGL CTS] KHR-GL45.enhanced_layouts.varying_structure_locations fails</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103101">Bug 103101</a> - [SKL][bisected] DiRT Rally GPU hang</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103115">Bug 103115</a> - [BSW BXT GLK] dEQP-VK.spirv_assembly.instruction.compute.sconvert.int32_to_int64</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103128">Bug 103128</a> - [softpipe] piglit fs-ldexp regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103142">Bug 103142</a> - R600g+sb: optimizer apparently stuck in an endless loop</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103227">Bug 103227</a> - [G965 G45 ILK] ES2-CTS.gtf.GL2ExtensionTests.texture_float.texture_float regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103283">Bug 103283</a> - drm_get_device_name_for_fd is broken on FreeBSD</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103388">Bug 103388</a> - Linking libcltgsi.la (llvm/codegen/libclllvm_la-common.lo) fails with "error: no match for 'operator-'" with GCC-7, Mesa from Git and current LLVM revisions</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103393">Bug 103393</a> - glDispatchComputeGroupSizeARB : gl_GlobalInvocationID.x != gl_WorkGroupID.x * gl_LocalGroupSizeARB.x + gl_LocalInvocationID.x</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103412">Bug 103412</a> - gallium/wgl: Another fix to context creation without prior SetPixelFormat()</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103496">Bug 103496</a> - svga_screen.c:26:46: error: git_sha1.h: No such file or directory</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103513">Bug 103513</a> - [build failure] radv_shader.c:683:2: error: format not a string literal and no format arguments [-Werror=format-security]</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103519">Bug 103519</a> - wayland egl apps crash on start with mesa 17.2</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103529">Bug 103529</a> - [GM45] GPU hang with mpv fullscreen (bisected)</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103537">Bug 103537</a> - i965: Shadow of Mordor broken since commit 379b24a40d3d34ffdaaeb1b328f50e28ecb01468 on Haswell</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103544">Bug 103544</a> - Graphical glitches r600 in game this war of mine linux native</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103579">Bug 103579</a> - Vertex shader causes compiler to crash in SPIRV-to-NIR</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103616">Bug 103616</a> - Increased difference from reference image in shaders</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103626">Bug 103626</a> - [SNB] ES3-CTS.functional.shaders.precision</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103628">Bug 103628</a> - [BXT, GLK, BSW] KHR-GL46.shader_ballot_tests.ShaderBallotBitmasks</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103653">Bug 103653</a> - Unreal segfault since gallium/u_threaded: avoid syncs for get_query_result</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103658">Bug 103658</a> - addrlib/gfx9/gfx9addrlib.cpp:727:50: error: expected expression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103674">Bug 103674</a> - u_queue.c:173:7: error: implicit declaration of function 'timespec_get' is invalid in C99</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103746">Bug 103746</a> - [BDW BSW SKL KBL] dEQP-GLES31.functional.copy_image regressions</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103759">Bug 103759</a> - plasma desktop corrupted rendering</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103784">Bug 103784</a> - [bisected] Egl changes breaks all of EGL</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103787">Bug 103787</a> - [BDW,BSW] gpu hang on spec.arb_pipeline_statistics_query.arb_pipeline_statistics_query-comp</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103801">Bug 103801</a> - [i965] >Observer_ issue</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103808">Bug 103808</a> - [radeonsi, bisected] World of Warcraft scribbling all over screen</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103902">Bug 103902</a> - Portal 2 game  hangs at startup   with latest mesa dev</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103904">Bug 103904</a> - Source engine-based games won't hang at start without R600_DEBUG=vs</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103909">Bug 103909</a> - anv_allocator.c:113:1: error: static declaration of ‘memfd_create’ follows non-static declaration</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103942">Bug 103942</a> - KHR-GL46.enhanced_layouts.varying* regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103955">Bug 103955</a> - Using array in structure results in wrong GLSL compilation output</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103966">Bug 103966</a> - Mesa 17.2.5 implementation error: bad format MESA_FORMAT_Z_FLOAT32 in _mesa_unpack_uint_24_8_depth_stencil_row</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103988">Bug 103988</a> - Intermittent piglit failures with shader cache enabled</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104005">Bug 104005</a> - [sklgt4e] GPU hangs in Car_Chase</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104119">Bug 104119</a> - radv: OpBitFieldInsert produces 0 with a loop counter for Insert</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104141">Bug 104141</a> - include/c11/threads_posix.h:96: undefined reference to `pthread_once'</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104143">Bug 104143</a> - r600/sb: clobbers gl_Position -> gl_FragCoord</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104163">Bug 104163</a> - [GEN9+] 2-3% perf drop in GfxBench Manhattan 3.1 from "i965: Disable regular fast-clears (CCS_D) on gen9+"</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104183">Bug 104183</a> - mesa-17.3.0/src/broadcom/qpu/qpu_pack.c:171]: (error) Invalid memcmp() argument</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104199">Bug 104199</a> - [i965 bisected] BIO and EM Vision in >Observer_ is broken since commit af2c320190f3c73180f1610c8df955a7fa2a4d09</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104213">Bug 104213</a> - NULL pointer access crashes on compiling Vulkan compute shaders after "anv: Add support for the variablePointers feature"</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104214">Bug 104214</a> - Dota crashes when switching from game to desktop</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104226">Bug 104226</a> - [bisected] Anvil accesses uninitialized memory while compiling shaders</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104231">Bug 104231</a> - DispatchSanity_test.GL30 regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104246">Bug 104246</a> - Talos Principle Vulkan version crash: spirv_to_nir() returns NULL entry_point</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104271">Bug 104271</a> - i965: Timeout in dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.5</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104288">Bug 104288</a> - Steamroll needs allow_glsl_cross_stage_interpolation_mismatch=true</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104302">Bug 104302</a> - Wolfenstein 2 (2017) under wine graphical artifacting on RADV</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104331">Bug 104331</a> - [r600g] Ogre demo "TutorialUAV01" crash at r600_decompress_color_images</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104338">Bug 104338</a> - NULL pointer access crash on Sacha Willems' Vulkan raytracing demo after "spirv: Add basic type validation for OpLoad, OpStore, and OpCopyMemory"</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104359">Bug 104359</a> - Mesa freezes in "vtn_cfg_walk_blocks" with Sacha Willems' hdr, parallaxmapping and specializationconstants Vulkan demos</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104381">Bug 104381</a> - swr fails to build since llvm-svn r321257</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104383">Bug 104383</a> - [KBL] Intel GPU hang with firefox</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104411">Bug 104411</a> - [CCS] lemonbar-xft GPU hang</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104424">Bug 104424</a> - DOOM 2016 broken by spirv OpStore validation</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104487">Bug 104487</a> - [KBL] portal2_linux GPU hang</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104490">Bug 104490</a> - [radeonsi/290x] Dota2 fails to start (can't create opengl context)</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104492">Bug 104492</a> - Compute Shader: Wrong alignment when assigning struct value to structured SSBO</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104546">Bug 104546</a> - Crash happens when running compute pipeline after calling glxMakeCurrent two times</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104551">Bug 104551</a> - Check if Mako templates for Python are installed</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104625">Bug 104625</a> - semicolon after if</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104636">Bug 104636</a> - [BSW/HD400] Aztec Ruins GL version GPU hangs</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104642">Bug 104642</a> - Android: NULL pointer dereference with i965 mesa-dev, seems build_id_length related</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104654">Bug 104654</a> - r600/sb: Alien Isolation GPU lock</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104668">Bug 104668</a> - dEQP-GLES31.functional.shaders.linkage.uniform.block.differing_precision regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104677">Bug 104677</a> - radv_generate_graphics_pipeline_key reads input rate from incorrect binding</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104690">Bug 104690</a> - [G33] regression: piglit.spec.!opengl 1_4.draw-batch and gl-1_4-dlist-multidrawarrays</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104711">Bug 104711</a> - [skl CCS] Oxenfree (unity engine game) hangs GPU</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104741">Bug 104741</a> - Graphic corruption for Android apps Telegram and KineMaster</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104742">Bug 104742</a> - [swrast] piglit gl-1.4-dlist-multidrawarrays regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104746">Bug 104746</a> - [swrast] piglit attribs regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104749">Bug 104749</a> - rasterizer/jitter/JitManager.cpp:252:91: error: no matching function for call to ‘llvm::DIBuilder::createBasicType(const char [8], int, llvm::dwarf::TypeKind)’</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104762">Bug 104762</a> - Various segfaults/problems in qt/plasma</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104777">Bug 104777</a> - Attaching multiple shader objects for the same stage to a GLSL program triggers a linker error</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104884">Bug 104884</a> - memory leak with intel i965 mesa when running android container in Ubuntu</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104905">Bug 104905</a> - SpvOpFOrdEqual doesn't return correct results for NaNs</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104915">Bug 104915</a> - Indexed SHADING_LANGUAGE_VERSION query not supported</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104923">Bug 104923</a> - anv: Dota2 rendering corruption</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105013">Bug 105013</a> - [regression] GLX+VA-API+clutter-gst video playback is corrupt with Mesa 17.3 (but is fine with 17.2)</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105029">Bug 105029</a> - simdlib_512_avx512.inl:371:57: error: could not convert ‘_mm512_mask_blend_epi32((__mmask16)(ImmT), a, b)’ from ‘__m512i’ {aka ‘__vector(8) long long int’} to ‘SIMDImpl::SIMD512Impl::Float’</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105065">Bug 105065</a> - Qt Programs occasionally fail to render with new Mesa (glGetProgramBinary)</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105098">Bug 105098</a> - [RADV] GPU freeze with simple Vulkan App</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105103">Bug 105103</a> - Wayland master causes Mesa to fail to compile</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105120">Bug 105120</a> - meson build broken</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105224">Bug 105224</a> - Webgl Pointclouds flickers</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105255">Bug 105255</a> - Waiting for fences without waitAll is not implemented</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105271">Bug 105271</a> - WebGL2 shader crashes i965_dri.so 17.3.3</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105290">Bug 105290</a> - [BSW/HD400] SynMark OglCSDof GPU hangs when shaders come from cache</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105292">Bug 105292</a> - vkGetQueryPoolResults returns incorrect query status for large query buffers (bisected)</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105436">Bug 105436</a> - Blinking textures in UT2004 [bisected]</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105464">Bug 105464</a> - Reading per-patch outputs in Tessellation Control Shader returns undefined values</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <ul> | ||||
| <li>Remove incomplete GLX_MESA_set_3dfx_mode from the Xlib libGL</li> | ||||
| </ul> | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,225 +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 18.0.1 Release Notes / April 18, 2018</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 18.0.1 is a bug fix release which fixes bugs found since the 18.0.0 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 18.0.1 implements the OpenGL 4.5 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.5.  OpenGL | ||||
| 4.5 is <strong>only</strong> available if requested at context creation | ||||
| because compatibility contexts are not supported. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h2>SHA256 checksums</h2> | ||||
| <pre> | ||||
| 0c93ba892c0610f5dd87f2e2673b9445187995c395b3ddb33fd4260bfb291e89  mesa-18.0.1.tar.gz | ||||
| b2d2f5b5dbaab13e15cb0dcb5ec81887467f55ebc9625945b303a3647cd87954  mesa-18.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=101408">Bug 101408</a> - [Gen8+] Xonotic fails to render one of the weapons</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102342">Bug 102342</a> - mesa-17.1.7/src/gallium/auxiliary/pipebuffer/pb_cache.c:169]: (style) Suspicious condition</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102542">Bug 102542</a> - mesa-17.2.0/src/gallium/state_trackers/nine/nine_ff.c:1938: bad assignment ?</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105317">Bug 105317</a> - The GPU Vega 56 was hang while try to pass #GraphicsFuzz shader15 test</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105440">Bug 105440</a> - GEN7: rendering issue on citra</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105442">Bug 105442</a> - Hang when running nine ff lighting shader with radeonsi</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105567">Bug 105567</a> - meson/ninja: 1. mesa/vdpau incorrect symlinks in DESTDIR and 2. Ddri-drivers-path Dvdpau-libs-path overrides DESTDIR</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105670">Bug 105670</a> - [regression][hang] Trine1EE hangs GPU after loading screen on Mesa3D-17.3 and later</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105704">Bug 105704</a> - compiler assertion hit</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105717">Bug 105717</a> - [bisected] Mesa build tests fails: BIGENDIAN_CPU or LITTLEENDIAN_CPU must be defined</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105942">Bug 105942</a> - Graphical artefacts after update to mesa 18.0.0-2</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Andres Gomez (2):</p> | ||||
| <ul> | ||||
|   <li>dri_util: when overriding, always reset the core version</li> | ||||
|   <li>mesa: adds some comments regarding MESA_GLES_VERSION_OVERRIDE usage</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Axel Davy (5):</p> | ||||
| <ul> | ||||
|   <li>st/nine: Fix bad tracking of vs textures for NINESBT_ALL</li> | ||||
|   <li>st/nine: Fixes warning about implicit conversion</li> | ||||
|   <li>st/nine: Fix non inversible matrix check</li> | ||||
|   <li>st/nine: Declare lighting consts for ff shaders</li> | ||||
|   <li>st/nine: Do not use scratch for face register</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (3):</p> | ||||
| <ul> | ||||
|   <li>ac/nir: Add workaround for GFX9 buffer views.</li> | ||||
|   <li>radv: Don't set instance count using predication.</li> | ||||
|   <li>radv: Always reset draw user SGPRs after secondary command buffer.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Caio Marcelo de Oliveira Filho (1):</p> | ||||
| <ul> | ||||
|   <li>anv/pipeline: fail if TCS/TES compile fail</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Daniel Stone (1):</p> | ||||
| <ul> | ||||
|   <li>st/dri: Initialise modifier to INVALID for DRI2</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Derek Foreman (1):</p> | ||||
| <ul> | ||||
|   <li>egl/wayland: Make swrast display_sync the correct queue</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dylan Baker (4):</p> | ||||
| <ul> | ||||
|   <li>meson: don't use compiler.has_header</li> | ||||
|   <li>autotools: include meson_get_version</li> | ||||
|   <li>meson: Set .so version for xa like autotools does</li> | ||||
|   <li>meson: fix megadriver symlinking</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (1):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 18.0.0</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Engestrom (3):</p> | ||||
| <ul> | ||||
|   <li>meson/configure: detect endian.h instead of trying to guess when it's available</li> | ||||
|   <li>docs: fix 18.0 release note version</li> | ||||
|   <li>gbm: remove never-implemented function</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Henri Verbeet (1):</p> | ||||
| <ul> | ||||
|   <li>mesa: Inherit texture view multi-sample information from the original texture images.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Iago Toral Quiroga (1):</p> | ||||
| <ul> | ||||
|   <li>compiler/spirv: set is_shadow for depth comparitor sampling opcodes</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Ian Romanick (1):</p> | ||||
| <ul> | ||||
|   <li>i965/vec4: Fix null destination register in 3-source instructions</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (4):</p> | ||||
| <ul> | ||||
|   <li>nir/vars_to_ssa: Remove copies from the correct set</li> | ||||
|   <li>nir/lower_indirect_derefs: Support interp_var_at intrinsics</li> | ||||
|   <li>intel/vec4: Set channel_sizes for MOV_INDIRECT sources</li> | ||||
|   <li>nir/lower_vec_to_movs: Only coalesce if the vec had a SSA destination</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Juan A. Suarez Romero (5):</p> | ||||
| <ul> | ||||
|   <li>cherry-ignore anv: Be more careful about fast-clear colors</li> | ||||
|   <li>cherry-ignore: ac/shader: fix vertex input with components.</li> | ||||
|   <li>cherry-ignore: radv: handle exporting view index to fragment shader. (v1.1)</li> | ||||
|   <li>cherry-ignore: omx: always define ENABLE_ST_OMX_{BELLAGIO,TIZONIA}</li> | ||||
|   <li>Update version to 18.0.1</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Leo Liu (1):</p> | ||||
| <ul> | ||||
|   <li>radeon/vce: move feedback command inside of destroy function</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Lionel Landwerlin (1):</p> | ||||
| <ul> | ||||
|   <li>i965/perf: fix config registration when uploading to kernel</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Marc Dietrich (1):</p> | ||||
| <ul> | ||||
|   <li>meson: fix HAVE_LLVM version define in meson build</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Marek Olšák (1):</p> | ||||
| <ul> | ||||
|   <li>mesa: simplify MESA_GL_VERSION_OVERRIDE behavior of API override</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Mark Thompson (1):</p> | ||||
| <ul> | ||||
|   <li>st/va: Enable vaExportSurfaceHandle()</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Rob Clark (3):</p> | ||||
| <ul> | ||||
|   <li>nir: fix per_vertex_output intrinsic</li> | ||||
|   <li>freedreno/a5xx: fix page faults on last level</li> | ||||
|   <li>freedreno/a5xx: don't align height for PIPE_BUFFER</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Samuel Pitoiset (2):</p> | ||||
| <ul> | ||||
|   <li>radv: fix picking the method for resolve subpass</li> | ||||
|   <li>radv: fix radv_layout_dcc_compressed() when image doesn't have DCC</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Sergii Romantsov (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Extend the negative 32-bit deltas to 64-bits</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Timothy Arceri (7):</p> | ||||
| <ul> | ||||
|   <li>ac: add if/loop build helpers</li> | ||||
|   <li>radeonsi: make use of if/loop build helpers in ac</li> | ||||
|   <li>ac: make use of if/loop build helpers</li> | ||||
|   <li>glsl: fix infinite loop caused by bug in loop unrolling pass</li> | ||||
|   <li>nir: fix crash in loop unroll corner case</li> | ||||
|   <li>gallium/pipebuffer: fix parenthesis location</li> | ||||
|   <li>glsl: always call do_lower_jumps() after loop unrolling</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Xiong, James (1):</p> | ||||
| <ul> | ||||
|   <li>i965: return the fourcc saved in __DRIimage when possible</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,73 +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 18.1.0 Release Notes / TBD</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 18.1.0 is a new development release. People who are concerned | ||||
| with stability and reliability should stick with a previous release or | ||||
| wait for Mesa 18.1.1. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 18.1.0 implements the OpenGL 4.5 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.5.  OpenGL | ||||
| 4.5 is <strong>only</strong> available if requested at context creation. | ||||
| Compatibility contexts may report a lower version depending on each driver. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h2>SHA256 checksums</h2> | ||||
| <pre> | ||||
| TBD. | ||||
| </pre> | ||||
|  | ||||
|  | ||||
| <h2>New features</h2> | ||||
|  | ||||
| <p> | ||||
| Note: some of the new features are only available with certain drivers. | ||||
| </p> | ||||
|  | ||||
| <ul> | ||||
| <li>OpenGL 3.1 with ARB_compatibility on nv50, nvc0, r600, radeonsi, softpipe, llvmpipe, svga</li> | ||||
| <li>GL_ARB_bindless_texture on nvc0/maxwell+</li> | ||||
| <li>GL_ARB_transform_feedback_overflow_query on nvc0</li> | ||||
| <li>GL_EXT_semaphore on radeonsi</li> | ||||
| <li>GL_EXT_semaphore_fd on radeonsi</li> | ||||
| <li>GL_EXT_shader_framebuffer_fetch on i965 on desktop GL (GLES was already supported)</li> | ||||
| <li>GL_EXT_shader_framebuffer_fetch_non_coherent on i965</li> | ||||
| <li>GL_KHR_blend_equation_advanced on radeonsi</li> | ||||
| <li>Disk shader cache support for i965 enabled by default</li> | ||||
| </ul> | ||||
|  | ||||
| <h2>Bug fixes</h2> | ||||
|  | ||||
| <ul> | ||||
| TBD | ||||
| </ul> | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <ul> | ||||
| <li>Remove incomplete GLX_SGIX_swap_barrier stubs from the Xlib libGL</li> | ||||
| <li>Remove incomplete GLX_SGIX_swap_group stubs from the Xlib libGL</li> | ||||
| </ul> | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -246,10 +246,6 @@ release. | ||||
| Note: resending patch identical to one on mesa-dev@ or one that differs only | ||||
| by the extra mesa-stable@ tag is <strong>not</strong> recommended. | ||||
| </p> | ||||
| <p> | ||||
| If you are not the author of the original patch, please Cc: them in your | ||||
| nomination request. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h3 id="thetag">The stable tag</h3> | ||||
|   | ||||
| @@ -933,7 +933,6 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfi | ||||
| #define EGL_DRM_BUFFER_STRIDE_MESA        0x31D4 | ||||
| #define EGL_DRM_BUFFER_USE_SCANOUT_MESA   0x00000001 | ||||
| #define EGL_DRM_BUFFER_USE_SHARE_MESA     0x00000002 | ||||
| #define EGL_DRM_BUFFER_USE_CURSOR_MESA    0x00000004 | ||||
| typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list); | ||||
| typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); | ||||
| #ifdef EGL_EGLEXT_PROTOTYPES | ||||
|   | ||||
| @@ -34,6 +34,13 @@ extern "C" { | ||||
|  | ||||
| #include <EGL/eglplatform.h> | ||||
|  | ||||
| #ifdef EGL_MESA_drm_image | ||||
| /* Mesa's extension to EGL_MESA_drm_image... */ | ||||
| #ifndef EGL_DRM_BUFFER_USE_CURSOR_MESA | ||||
| #define EGL_DRM_BUFFER_USE_CURSOR_MESA		0x0004 | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| #ifndef EGL_WL_bind_wayland_display | ||||
| #define EGL_WL_bind_wayland_display 1 | ||||
|  | ||||
|   | ||||
| @@ -104,12 +104,6 @@ typedef struct ANativeWindow*           EGLNativeWindowType; | ||||
| typedef struct egl_native_pixmap_t*     EGLNativePixmapType; | ||||
| typedef void*                           EGLNativeDisplayType; | ||||
|  | ||||
| #elif defined(USE_OZONE) | ||||
|  | ||||
| typedef intptr_t EGLNativeDisplayType; | ||||
| typedef intptr_t EGLNativeWindowType; | ||||
| typedef intptr_t EGLNativePixmapType; | ||||
|  | ||||
| #elif defined(__unix__) || defined(__APPLE__) | ||||
|  | ||||
| #if defined(MESA_EGL_NO_X11_HEADERS) | ||||
| @@ -130,13 +124,11 @@ typedef Window   EGLNativeWindowType; | ||||
|  | ||||
| #endif /* MESA_EGL_NO_X11_HEADERS */ | ||||
|  | ||||
| #elif defined(__HAIKU__) | ||||
|  | ||||
| #elif __HAIKU__ | ||||
| #include <kernel/image.h> | ||||
|  | ||||
| typedef void              *EGLNativeDisplayType; | ||||
| typedef khronos_uintptr_t  EGLNativePixmapType; | ||||
| typedef khronos_uintptr_t  EGLNativeWindowType; | ||||
| typedef void				*EGLNativeDisplayType; | ||||
| typedef khronos_uintptr_t	 EGLNativePixmapType; | ||||
| typedef khronos_uintptr_t	 EGLNativeWindowType; | ||||
|  | ||||
| #else | ||||
| #error "Platform not recognized" | ||||
|   | ||||
| @@ -47,9 +47,9 @@ | ||||
| #    define GLAPI __declspec(dllimport) | ||||
| #  else /* for use with static link lib build of Win32 edition only */ | ||||
| #    define GLAPI extern | ||||
| #  endif | ||||
| #  endif /* _STATIC_MESA support */ | ||||
| #  if defined(__MINGW32__) && defined(GL_NO_STDCALL) || defined(UNDER_CE)  /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */ | ||||
| #    define GLAPIENTRY | ||||
| #    define GLAPIENTRY  | ||||
| #  else | ||||
| #    define GLAPIENTRY __stdcall | ||||
| #  endif | ||||
|   | ||||
| @@ -82,7 +82,7 @@ typedef struct __DRI2flushExtensionRec	__DRI2flushExtension; | ||||
| typedef struct __DRI2throttleExtensionRec	__DRI2throttleExtension; | ||||
| typedef struct __DRI2fenceExtensionRec          __DRI2fenceExtension; | ||||
| typedef struct __DRI2interopExtensionRec	__DRI2interopExtension; | ||||
| typedef struct __DRI2blobExtensionRec           __DRI2blobExtension; | ||||
|  | ||||
|  | ||||
| typedef struct __DRIimageLoaderExtensionRec     __DRIimageLoaderExtension; | ||||
| typedef struct __DRIimageDriverExtensionRec     __DRIimageDriverExtension; | ||||
| @@ -336,30 +336,6 @@ struct __DRI2throttleExtensionRec { | ||||
| 		    enum __DRI2throttleReason reason); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Extension for EGL_ANDROID_blob_cache | ||||
|  */ | ||||
|  | ||||
| #define __DRI2_BLOB "DRI2_Blob" | ||||
| #define __DRI2_BLOB_VERSION 1 | ||||
|  | ||||
| typedef void | ||||
| (*__DRIblobCacheSet) (const void *key, signed long keySize, | ||||
|                       const void *value, signed long valueSize); | ||||
|  | ||||
| typedef signed long | ||||
| (*__DRIblobCacheGet) (const void *key, signed long keySize, | ||||
|                       void *value, signed long valueSize); | ||||
|  | ||||
| struct __DRI2blobExtensionRec { | ||||
|    __DRIextension base; | ||||
|  | ||||
|    /** | ||||
|     * Set cache functions for setting and getting cache entries. | ||||
|     */ | ||||
|    void (*set_cache_funcs) (__DRIscreen *screen, | ||||
|                             __DRIblobCacheSet set, __DRIblobCacheGet get); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Extension for fences / synchronization objects. | ||||
| @@ -1251,8 +1227,6 @@ struct __DRIdri2ExtensionRec { | ||||
| #define __DRI_IMAGE_FORMAT_R16          0x100d | ||||
| #define __DRI_IMAGE_FORMAT_GR1616       0x100e | ||||
| #define __DRI_IMAGE_FORMAT_YUYV         0x100f | ||||
| #define __DRI_IMAGE_FORMAT_XBGR2101010  0x1010 | ||||
| #define __DRI_IMAGE_FORMAT_ABGR2101010  0x1011 | ||||
|  | ||||
| #define __DRI_IMAGE_USE_SHARE		0x0001 | ||||
| #define __DRI_IMAGE_USE_SCANOUT		0x0002 | ||||
|   | ||||
| @@ -13,9 +13,9 @@ $ make headers_install INSTALL_HDR_PATH=/path/to/install | ||||
|  | ||||
| The last update was done at the following kernel commit : | ||||
|  | ||||
| commit 78230c46ec0a91dd4256c9e54934b3c7095a7ee3 | ||||
| Merge: b65bd4031156 037f03155b7d | ||||
| commit ca797d29cd63e7b71b4eea29aff3b1cefd1ecb59 | ||||
| Merge: 2c1c55cb75a9 010d118c2061 | ||||
| Author: Dave Airlie <airlied@redhat.com> | ||||
| Date:   Wed Mar 21 14:07:03 2018 +1000 | ||||
| Date:   Mon Dec 4 09:40:35 2017 +1000 | ||||
|  | ||||
|     Merge tag 'omapdrm-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux into drm-next | ||||
|     Merge tag 'drm-intel-next-2017-11-17-1' of git://anongit.freedesktop.org/drm/drm-intel into drm-next | ||||
|   | ||||
| @@ -178,7 +178,7 @@ extern "C" { | ||||
| #define DRM_FORMAT_MOD_VENDOR_NONE    0 | ||||
| #define DRM_FORMAT_MOD_VENDOR_INTEL   0x01 | ||||
| #define DRM_FORMAT_MOD_VENDOR_AMD     0x02 | ||||
| #define DRM_FORMAT_MOD_VENDOR_NVIDIA  0x03 | ||||
| #define DRM_FORMAT_MOD_VENDOR_NV      0x03 | ||||
| #define DRM_FORMAT_MOD_VENDOR_SAMSUNG 0x04 | ||||
| #define DRM_FORMAT_MOD_VENDOR_QCOM    0x05 | ||||
| #define DRM_FORMAT_MOD_VENDOR_VIVANTE 0x06 | ||||
| @@ -188,7 +188,7 @@ extern "C" { | ||||
| #define DRM_FORMAT_RESERVED	      ((1ULL << 56) - 1) | ||||
|  | ||||
| #define fourcc_mod_code(vendor, val) \ | ||||
| 	((((__u64)DRM_FORMAT_MOD_VENDOR_## vendor) << 56) | ((val) & 0x00ffffffffffffffULL)) | ||||
| 	((((__u64)DRM_FORMAT_MOD_VENDOR_## vendor) << 56) | (val & 0x00ffffffffffffffULL)) | ||||
|  | ||||
| /* | ||||
|  * Format Modifier tokens: | ||||
| @@ -338,17 +338,29 @@ extern "C" { | ||||
|  */ | ||||
| #define DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED fourcc_mod_code(VIVANTE, 4) | ||||
|  | ||||
| /* NVIDIA frame buffer modifiers */ | ||||
| /* NVIDIA Tegra frame buffer modifiers */ | ||||
|  | ||||
| /* | ||||
|  * Some modifiers take parameters, for example the number of vertical GOBs in | ||||
|  * a block. Reserve the lower 32 bits for parameters | ||||
|  */ | ||||
| #define __fourcc_mod_tegra_mode_shift 32 | ||||
| #define fourcc_mod_tegra_code(val, params) \ | ||||
| 	fourcc_mod_code(NV, ((((__u64)val) << __fourcc_mod_tegra_mode_shift) | params)) | ||||
| #define fourcc_mod_tegra_mod(m) \ | ||||
| 	(m & ~((1ULL << __fourcc_mod_tegra_mode_shift) - 1)) | ||||
| #define fourcc_mod_tegra_param(m) \ | ||||
| 	(m & ((1ULL << __fourcc_mod_tegra_mode_shift) - 1)) | ||||
|  | ||||
| /* | ||||
|  * Tegra Tiled Layout, used by Tegra 2, 3 and 4. | ||||
|  * | ||||
|  * Pixels are arranged in simple tiles of 16 x 16 bytes. | ||||
|  */ | ||||
| #define DRM_FORMAT_MOD_NVIDIA_TEGRA_TILED fourcc_mod_code(NVIDIA, 1) | ||||
| #define NV_FORMAT_MOD_TEGRA_TILED fourcc_mod_tegra_code(1, 0) | ||||
|  | ||||
| /* | ||||
|  * 16Bx2 Block Linear layout, used by desktop GPUs, and Tegra K1 and later | ||||
|  * Tegra 16Bx2 Block Linear layout, used by TK1/TX1 | ||||
|  * | ||||
|  * Pixels are arranged in 64x8 Groups Of Bytes (GOBs). GOBs are then stacked | ||||
|  * vertically by a power of 2 (1 to 32 GOBs) to form a block. | ||||
| @@ -368,21 +380,7 @@ extern "C" { | ||||
|  * Chapter 20 "Pixel Memory Formats" of the Tegra X1 TRM describes this format | ||||
|  * in full detail. | ||||
|  */ | ||||
| #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(v) \ | ||||
| 	fourcc_mod_code(NVIDIA, 0x10 | ((v) & 0xf)) | ||||
|  | ||||
| #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_ONE_GOB \ | ||||
| 	fourcc_mod_code(NVIDIA, 0x10) | ||||
| #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_TWO_GOB \ | ||||
| 	fourcc_mod_code(NVIDIA, 0x11) | ||||
| #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_FOUR_GOB \ | ||||
| 	fourcc_mod_code(NVIDIA, 0x12) | ||||
| #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_EIGHT_GOB \ | ||||
| 	fourcc_mod_code(NVIDIA, 0x13) | ||||
| #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_SIXTEEN_GOB \ | ||||
| 	fourcc_mod_code(NVIDIA, 0x14) | ||||
| #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_THIRTYTWO_GOB \ | ||||
| 	fourcc_mod_code(NVIDIA, 0x15) | ||||
| #define NV_FORMAT_MOD_TEGRA_16BX2_BLOCK(v) fourcc_mod_tegra_code(2, v) | ||||
|  | ||||
| /* | ||||
|  * Broadcom VC4 "T" format | ||||
|   | ||||
| @@ -38,18 +38,14 @@ extern "C" { | ||||
| #define DRM_DISPLAY_MODE_LEN	32 | ||||
| #define DRM_PROP_NAME_LEN	32 | ||||
|  | ||||
| #define DRM_MODE_TYPE_BUILTIN	(1<<0) /* deprecated */ | ||||
| #define DRM_MODE_TYPE_CLOCK_C	((1<<1) | DRM_MODE_TYPE_BUILTIN) /* deprecated */ | ||||
| #define DRM_MODE_TYPE_CRTC_C	((1<<2) | DRM_MODE_TYPE_BUILTIN) /* deprecated */ | ||||
| #define DRM_MODE_TYPE_BUILTIN	(1<<0) | ||||
| #define DRM_MODE_TYPE_CLOCK_C	((1<<1) | DRM_MODE_TYPE_BUILTIN) | ||||
| #define DRM_MODE_TYPE_CRTC_C	((1<<2) | DRM_MODE_TYPE_BUILTIN) | ||||
| #define DRM_MODE_TYPE_PREFERRED	(1<<3) | ||||
| #define DRM_MODE_TYPE_DEFAULT	(1<<4) /* deprecated */ | ||||
| #define DRM_MODE_TYPE_DEFAULT	(1<<4) | ||||
| #define DRM_MODE_TYPE_USERDEF	(1<<5) | ||||
| #define DRM_MODE_TYPE_DRIVER	(1<<6) | ||||
|  | ||||
| #define DRM_MODE_TYPE_ALL	(DRM_MODE_TYPE_PREFERRED |	\ | ||||
| 				 DRM_MODE_TYPE_USERDEF |	\ | ||||
| 				 DRM_MODE_TYPE_DRIVER) | ||||
|  | ||||
| /* Video mode flags */ | ||||
| /* bit compatible with the xrandr RR_ definitions (bits 0-13) | ||||
|  * | ||||
| @@ -70,8 +66,8 @@ extern "C" { | ||||
| #define DRM_MODE_FLAG_PCSYNC			(1<<7) | ||||
| #define DRM_MODE_FLAG_NCSYNC			(1<<8) | ||||
| #define DRM_MODE_FLAG_HSKEW			(1<<9) /* hskew provided */ | ||||
| #define DRM_MODE_FLAG_BCAST			(1<<10) /* deprecated */ | ||||
| #define DRM_MODE_FLAG_PIXMUX			(1<<11) /* deprecated */ | ||||
| #define DRM_MODE_FLAG_BCAST			(1<<10) | ||||
| #define DRM_MODE_FLAG_PIXMUX			(1<<11) | ||||
| #define DRM_MODE_FLAG_DBLCLK			(1<<12) | ||||
| #define DRM_MODE_FLAG_CLKDIV2			(1<<13) | ||||
|  /* | ||||
| @@ -103,20 +99,6 @@ extern "C" { | ||||
| #define  DRM_MODE_FLAG_PIC_AR_16_9 \ | ||||
| 			(DRM_MODE_PICTURE_ASPECT_16_9<<19) | ||||
|  | ||||
| #define  DRM_MODE_FLAG_ALL	(DRM_MODE_FLAG_PHSYNC |		\ | ||||
| 				 DRM_MODE_FLAG_NHSYNC |		\ | ||||
| 				 DRM_MODE_FLAG_PVSYNC |		\ | ||||
| 				 DRM_MODE_FLAG_NVSYNC |		\ | ||||
| 				 DRM_MODE_FLAG_INTERLACE |	\ | ||||
| 				 DRM_MODE_FLAG_DBLSCAN |	\ | ||||
| 				 DRM_MODE_FLAG_CSYNC |		\ | ||||
| 				 DRM_MODE_FLAG_PCSYNC |		\ | ||||
| 				 DRM_MODE_FLAG_NCSYNC |		\ | ||||
| 				 DRM_MODE_FLAG_HSKEW |		\ | ||||
| 				 DRM_MODE_FLAG_DBLCLK |		\ | ||||
| 				 DRM_MODE_FLAG_CLKDIV2 |	\ | ||||
| 				 DRM_MODE_FLAG_3D_MASK) | ||||
|  | ||||
| /* DPMS flags */ | ||||
| /* bit compatible with the xorg definitions. */ | ||||
| #define DRM_MODE_DPMS_ON	0 | ||||
| @@ -191,10 +173,6 @@ extern "C" { | ||||
| 		DRM_MODE_REFLECT_X | \ | ||||
| 		DRM_MODE_REFLECT_Y) | ||||
|  | ||||
| /* Content Protection Flags */ | ||||
| #define DRM_MODE_CONTENT_PROTECTION_UNDESIRED	0 | ||||
| #define DRM_MODE_CONTENT_PROTECTION_DESIRED     1 | ||||
| #define DRM_MODE_CONTENT_PROTECTION_ENABLED     2 | ||||
|  | ||||
| struct drm_mode_modeinfo { | ||||
| 	__u32 clock; | ||||
| @@ -363,7 +341,7 @@ struct drm_mode_get_connector { | ||||
| 	__u32 pad; | ||||
| }; | ||||
|  | ||||
| #define DRM_MODE_PROP_PENDING	(1<<0) /* deprecated, do not use */ | ||||
| #define DRM_MODE_PROP_PENDING	(1<<0) | ||||
| #define DRM_MODE_PROP_RANGE	(1<<1) | ||||
| #define DRM_MODE_PROP_IMMUTABLE	(1<<2) | ||||
| #define DRM_MODE_PROP_ENUM	(1<<3) /* enumerated type with text strings */ | ||||
| @@ -598,11 +576,8 @@ struct drm_mode_crtc_lut { | ||||
| }; | ||||
|  | ||||
| struct drm_color_ctm { | ||||
| 	/* | ||||
| 	 * Conversion matrix in S31.32 sign-magnitude | ||||
| 	 * (not two's complement!) format. | ||||
| 	 */ | ||||
| 	__u64 matrix[9]; | ||||
| 	/* Conversion matrix in S31.32 format. */ | ||||
| 	__s64 matrix[9]; | ||||
| }; | ||||
|  | ||||
| struct drm_color_lut { | ||||
|   | ||||
| @@ -102,46 +102,6 @@ enum drm_i915_gem_engine_class { | ||||
| 	I915_ENGINE_CLASS_INVALID	= -1 | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * DOC: perf_events exposed by i915 through /sys/bus/event_sources/drivers/i915 | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| enum drm_i915_pmu_engine_sample { | ||||
| 	I915_SAMPLE_BUSY = 0, | ||||
| 	I915_SAMPLE_WAIT = 1, | ||||
| 	I915_SAMPLE_SEMA = 2 | ||||
| }; | ||||
|  | ||||
| #define I915_PMU_SAMPLE_BITS (4) | ||||
| #define I915_PMU_SAMPLE_MASK (0xf) | ||||
| #define I915_PMU_SAMPLE_INSTANCE_BITS (8) | ||||
| #define I915_PMU_CLASS_SHIFT \ | ||||
| 	(I915_PMU_SAMPLE_BITS + I915_PMU_SAMPLE_INSTANCE_BITS) | ||||
|  | ||||
| #define __I915_PMU_ENGINE(class, instance, sample) \ | ||||
| 	((class) << I915_PMU_CLASS_SHIFT | \ | ||||
| 	(instance) << I915_PMU_SAMPLE_BITS | \ | ||||
| 	(sample)) | ||||
|  | ||||
| #define I915_PMU_ENGINE_BUSY(class, instance) \ | ||||
| 	__I915_PMU_ENGINE(class, instance, I915_SAMPLE_BUSY) | ||||
|  | ||||
| #define I915_PMU_ENGINE_WAIT(class, instance) \ | ||||
| 	__I915_PMU_ENGINE(class, instance, I915_SAMPLE_WAIT) | ||||
|  | ||||
| #define I915_PMU_ENGINE_SEMA(class, instance) \ | ||||
| 	__I915_PMU_ENGINE(class, instance, I915_SAMPLE_SEMA) | ||||
|  | ||||
| #define __I915_PMU_OTHER(x) (__I915_PMU_ENGINE(0xff, 0xff, 0xf) + 1 + (x)) | ||||
|  | ||||
| #define I915_PMU_ACTUAL_FREQUENCY	__I915_PMU_OTHER(0) | ||||
| #define I915_PMU_REQUESTED_FREQUENCY	__I915_PMU_OTHER(1) | ||||
| #define I915_PMU_INTERRUPTS		__I915_PMU_OTHER(2) | ||||
| #define I915_PMU_RC6_RESIDENCY		__I915_PMU_OTHER(3) | ||||
|  | ||||
| #define I915_PMU_LAST I915_PMU_RC6_RESIDENCY | ||||
|  | ||||
| /* Each region is a minimum of 16k, and there are at most 255 of them. | ||||
|  */ | ||||
| #define I915_NR_TEX_REGIONS 255	/* table size 2k - maximum due to use | ||||
| @@ -318,7 +278,6 @@ typedef struct _drm_i915_sarea { | ||||
| #define DRM_I915_PERF_OPEN		0x36 | ||||
| #define DRM_I915_PERF_ADD_CONFIG	0x37 | ||||
| #define DRM_I915_PERF_REMOVE_CONFIG	0x38 | ||||
| #define DRM_I915_QUERY			0x39 | ||||
|  | ||||
| #define DRM_IOCTL_I915_INIT		DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) | ||||
| #define DRM_IOCTL_I915_FLUSH		DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) | ||||
| @@ -376,7 +335,6 @@ typedef struct _drm_i915_sarea { | ||||
| #define DRM_IOCTL_I915_PERF_OPEN	DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param) | ||||
| #define DRM_IOCTL_I915_PERF_ADD_CONFIG	DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_ADD_CONFIG, struct drm_i915_perf_oa_config) | ||||
| #define DRM_IOCTL_I915_PERF_REMOVE_CONFIG	DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_REMOVE_CONFIG, __u64) | ||||
| #define DRM_IOCTL_I915_QUERY			DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_QUERY, struct drm_i915_query) | ||||
|  | ||||
| /* Allow drivers to submit batchbuffers directly to hardware, relying | ||||
|  * on the security mechanisms provided by hardware. | ||||
| @@ -1360,9 +1318,7 @@ struct drm_intel_overlay_attrs { | ||||
|  * active on a given plane. | ||||
|  */ | ||||
|  | ||||
| #define I915_SET_COLORKEY_NONE		(1<<0) /* Deprecated. Instead set | ||||
| 						* flags==0 to disable colorkeying. | ||||
| 						*/ | ||||
| #define I915_SET_COLORKEY_NONE		(1<<0) /* disable color key matching */ | ||||
| #define I915_SET_COLORKEY_DESTINATION	(1<<1) | ||||
| #define I915_SET_COLORKEY_SOURCE	(1<<2) | ||||
| struct drm_intel_sprite_colorkey { | ||||
| @@ -1608,115 +1564,15 @@ struct drm_i915_perf_oa_config { | ||||
| 	__u32 n_flex_regs; | ||||
|  | ||||
| 	/* | ||||
| 	 * These fields are pointers to tuples of u32 values (register address, | ||||
| 	 * value). For example the expected length of the buffer pointed by | ||||
| 	 * mux_regs_ptr is (2 * sizeof(u32) * n_mux_regs). | ||||
| 	 * These fields are pointers to tuples of u32 values (register | ||||
| 	 * address, value). For example the expected length of the buffer | ||||
| 	 * pointed by mux_regs_ptr is (2 * sizeof(u32) * n_mux_regs). | ||||
| 	 */ | ||||
| 	__u64 mux_regs_ptr; | ||||
| 	__u64 boolean_regs_ptr; | ||||
| 	__u64 flex_regs_ptr; | ||||
| }; | ||||
|  | ||||
| struct drm_i915_query_item { | ||||
| 	__u64 query_id; | ||||
| #define DRM_I915_QUERY_TOPOLOGY_INFO    1 | ||||
|  | ||||
| 	/* | ||||
| 	 * When set to zero by userspace, this is filled with the size of the | ||||
| 	 * data to be written at the data_ptr pointer. The kernel sets this | ||||
| 	 * value to a negative value to signal an error on a particular query | ||||
| 	 * item. | ||||
| 	 */ | ||||
| 	__s32 length; | ||||
|  | ||||
| 	/* | ||||
| 	 * Unused for now. Must be cleared to zero. | ||||
| 	 */ | ||||
| 	__u32 flags; | ||||
|  | ||||
| 	/* | ||||
| 	 * Data will be written at the location pointed by data_ptr when the | ||||
| 	 * value of length matches the length of the data to be written by the | ||||
| 	 * kernel. | ||||
| 	 */ | ||||
| 	__u64 data_ptr; | ||||
| }; | ||||
|  | ||||
| struct drm_i915_query { | ||||
| 	__u32 num_items; | ||||
|  | ||||
| 	/* | ||||
| 	 * Unused for now. Must be cleared to zero. | ||||
| 	 */ | ||||
| 	__u32 flags; | ||||
|  | ||||
| 	/* | ||||
| 	 * This points to an array of num_items drm_i915_query_item structures. | ||||
| 	 */ | ||||
| 	__u64 items_ptr; | ||||
| }; | ||||
|  | ||||
| /* | ||||
|  * Data written by the kernel with query DRM_I915_QUERY_TOPOLOGY_INFO : | ||||
|  * | ||||
|  * data: contains the 3 pieces of information : | ||||
|  * | ||||
|  * - the slice mask with one bit per slice telling whether a slice is | ||||
|  *   available. The availability of slice X can be queried with the following | ||||
|  *   formula : | ||||
|  * | ||||
|  *           (data[X / 8] >> (X % 8)) & 1 | ||||
|  * | ||||
|  * - the subslice mask for each slice with one bit per subslice telling | ||||
|  *   whether a subslice is available. The availability of subslice Y in slice | ||||
|  *   X can be queried with the following formula : | ||||
|  * | ||||
|  *           (data[subslice_offset + | ||||
|  *                 X * subslice_stride + | ||||
|  *                 Y / 8] >> (Y % 8)) & 1 | ||||
|  * | ||||
|  * - the EU mask for each subslice in each slice with one bit per EU telling | ||||
|  *   whether an EU is available. The availability of EU Z in subslice Y in | ||||
|  *   slice X can be queried with the following formula : | ||||
|  * | ||||
|  *           (data[eu_offset + | ||||
|  *                 (X * max_subslices + Y) * eu_stride + | ||||
|  *                 Z / 8] >> (Z % 8)) & 1 | ||||
|  */ | ||||
| struct drm_i915_query_topology_info { | ||||
| 	/* | ||||
| 	 * Unused for now. Must be cleared to zero. | ||||
| 	 */ | ||||
| 	__u16 flags; | ||||
|  | ||||
| 	__u16 max_slices; | ||||
| 	__u16 max_subslices; | ||||
| 	__u16 max_eus_per_subslice; | ||||
|  | ||||
| 	/* | ||||
| 	 * Offset in data[] at which the subslice masks are stored. | ||||
| 	 */ | ||||
| 	__u16 subslice_offset; | ||||
|  | ||||
| 	/* | ||||
| 	 * Stride at which each of the subslice masks for each slice are | ||||
| 	 * stored. | ||||
| 	 */ | ||||
| 	__u16 subslice_stride; | ||||
|  | ||||
| 	/* | ||||
| 	 * Offset in data[] at which the EU masks are stored. | ||||
| 	 */ | ||||
| 	__u16 eu_offset; | ||||
|  | ||||
| 	/* | ||||
| 	 * Stride at which each of the EU masks for each subslice are stored. | ||||
| 	 */ | ||||
| 	__u16 eu_stride; | ||||
|  | ||||
| 	__u8 data[]; | ||||
| }; | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -1,209 +0,0 @@ | ||||
| /* | ||||
|  * Copyright (c) 2012-2013, NVIDIA CORPORATION.  All rights reserved. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a | ||||
|  * copy of this software and associated documentation files (the "Software"), | ||||
|  * to deal in the Software without restriction, including without limitation | ||||
|  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||
|  * and/or sell copies of the Software, and to permit persons to whom the | ||||
|  * Software is furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 _TEGRA_DRM_H_ | ||||
| #define _TEGRA_DRM_H_ | ||||
|  | ||||
| #include "drm.h" | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #define DRM_TEGRA_GEM_CREATE_TILED     (1 << 0) | ||||
| #define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1) | ||||
|  | ||||
| struct drm_tegra_gem_create { | ||||
| 	__u64 size; | ||||
| 	__u32 flags; | ||||
| 	__u32 handle; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_gem_mmap { | ||||
| 	__u32 handle; | ||||
| 	__u32 pad; | ||||
| 	__u64 offset; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_syncpt_read { | ||||
| 	__u32 id; | ||||
| 	__u32 value; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_syncpt_incr { | ||||
| 	__u32 id; | ||||
| 	__u32 pad; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_syncpt_wait { | ||||
| 	__u32 id; | ||||
| 	__u32 thresh; | ||||
| 	__u32 timeout; | ||||
| 	__u32 value; | ||||
| }; | ||||
|  | ||||
| #define DRM_TEGRA_NO_TIMEOUT	(0xffffffff) | ||||
|  | ||||
| struct drm_tegra_open_channel { | ||||
| 	__u32 client; | ||||
| 	__u32 pad; | ||||
| 	__u64 context; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_close_channel { | ||||
| 	__u64 context; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_get_syncpt { | ||||
| 	__u64 context; | ||||
| 	__u32 index; | ||||
| 	__u32 id; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_get_syncpt_base { | ||||
| 	__u64 context; | ||||
| 	__u32 syncpt; | ||||
| 	__u32 id; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_syncpt { | ||||
| 	__u32 id; | ||||
| 	__u32 incrs; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_cmdbuf { | ||||
| 	__u32 handle; | ||||
| 	__u32 offset; | ||||
| 	__u32 words; | ||||
| 	__u32 pad; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_reloc { | ||||
| 	struct { | ||||
| 		__u32 handle; | ||||
| 		__u32 offset; | ||||
| 	} cmdbuf; | ||||
| 	struct { | ||||
| 		__u32 handle; | ||||
| 		__u32 offset; | ||||
| 	} target; | ||||
| 	__u32 shift; | ||||
| 	__u32 pad; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_waitchk { | ||||
| 	__u32 handle; | ||||
| 	__u32 offset; | ||||
| 	__u32 syncpt; | ||||
| 	__u32 thresh; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_submit { | ||||
| 	__u64 context; | ||||
| 	__u32 num_syncpts; | ||||
| 	__u32 num_cmdbufs; | ||||
| 	__u32 num_relocs; | ||||
| 	__u32 num_waitchks; | ||||
| 	__u32 waitchk_mask; | ||||
| 	__u32 timeout; | ||||
| 	__u64 syncpts; | ||||
| 	__u64 cmdbufs; | ||||
| 	__u64 relocs; | ||||
| 	__u64 waitchks; | ||||
| 	__u32 fence;		/* Return value */ | ||||
|  | ||||
| 	__u32 reserved[5];	/* future expansion */ | ||||
| }; | ||||
|  | ||||
| #define DRM_TEGRA_GEM_TILING_MODE_PITCH 0 | ||||
| #define DRM_TEGRA_GEM_TILING_MODE_TILED 1 | ||||
| #define DRM_TEGRA_GEM_TILING_MODE_BLOCK 2 | ||||
|  | ||||
| struct drm_tegra_gem_set_tiling { | ||||
| 	/* input */ | ||||
| 	__u32 handle; | ||||
| 	__u32 mode; | ||||
| 	__u32 value; | ||||
| 	__u32 pad; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_gem_get_tiling { | ||||
| 	/* input */ | ||||
| 	__u32 handle; | ||||
| 	/* output */ | ||||
| 	__u32 mode; | ||||
| 	__u32 value; | ||||
| 	__u32 pad; | ||||
| }; | ||||
|  | ||||
| #define DRM_TEGRA_GEM_BOTTOM_UP		(1 << 0) | ||||
| #define DRM_TEGRA_GEM_FLAGS		(DRM_TEGRA_GEM_BOTTOM_UP) | ||||
|  | ||||
| struct drm_tegra_gem_set_flags { | ||||
| 	/* input */ | ||||
| 	__u32 handle; | ||||
| 	/* output */ | ||||
| 	__u32 flags; | ||||
| }; | ||||
|  | ||||
| struct drm_tegra_gem_get_flags { | ||||
| 	/* input */ | ||||
| 	__u32 handle; | ||||
| 	/* output */ | ||||
| 	__u32 flags; | ||||
| }; | ||||
|  | ||||
| #define DRM_TEGRA_GEM_CREATE		0x00 | ||||
| #define DRM_TEGRA_GEM_MMAP		0x01 | ||||
| #define DRM_TEGRA_SYNCPT_READ		0x02 | ||||
| #define DRM_TEGRA_SYNCPT_INCR		0x03 | ||||
| #define DRM_TEGRA_SYNCPT_WAIT		0x04 | ||||
| #define DRM_TEGRA_OPEN_CHANNEL		0x05 | ||||
| #define DRM_TEGRA_CLOSE_CHANNEL		0x06 | ||||
| #define DRM_TEGRA_GET_SYNCPT		0x07 | ||||
| #define DRM_TEGRA_SUBMIT		0x08 | ||||
| #define DRM_TEGRA_GET_SYNCPT_BASE	0x09 | ||||
| #define DRM_TEGRA_GEM_SET_TILING	0x0a | ||||
| #define DRM_TEGRA_GEM_GET_TILING	0x0b | ||||
| #define DRM_TEGRA_GEM_SET_FLAGS		0x0c | ||||
| #define DRM_TEGRA_GEM_GET_FLAGS		0x0d | ||||
|  | ||||
| #define DRM_IOCTL_TEGRA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_CREATE, struct drm_tegra_gem_create) | ||||
| #define DRM_IOCTL_TEGRA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_MMAP, struct drm_tegra_gem_mmap) | ||||
| #define DRM_IOCTL_TEGRA_SYNCPT_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_READ, struct drm_tegra_syncpt_read) | ||||
| #define DRM_IOCTL_TEGRA_SYNCPT_INCR DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_INCR, struct drm_tegra_syncpt_incr) | ||||
| #define DRM_IOCTL_TEGRA_SYNCPT_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_WAIT, struct drm_tegra_syncpt_wait) | ||||
| #define DRM_IOCTL_TEGRA_OPEN_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_OPEN_CHANNEL, struct drm_tegra_open_channel) | ||||
| #define DRM_IOCTL_TEGRA_CLOSE_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_CLOSE_CHANNEL, struct drm_tegra_open_channel) | ||||
| #define DRM_IOCTL_TEGRA_GET_SYNCPT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT, struct drm_tegra_get_syncpt) | ||||
| #define DRM_IOCTL_TEGRA_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SUBMIT, struct drm_tegra_submit) | ||||
| #define DRM_IOCTL_TEGRA_GET_SYNCPT_BASE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT_BASE, struct drm_tegra_get_syncpt_base) | ||||
| #define DRM_IOCTL_TEGRA_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_TILING, struct drm_tegra_gem_set_tiling) | ||||
| #define DRM_IOCTL_TEGRA_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_TILING, struct drm_tegra_gem_get_tiling) | ||||
| #define DRM_IOCTL_TEGRA_GEM_SET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_FLAGS, struct drm_tegra_gem_set_flags) | ||||
| #define DRM_IOCTL_TEGRA_GEM_GET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_FLAGS, struct drm_tegra_gem_get_flags) | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -42,9 +42,6 @@ extern "C" { | ||||
| #define DRM_VC4_GET_TILING                        0x09 | ||||
| #define DRM_VC4_LABEL_BO                          0x0a | ||||
| #define DRM_VC4_GEM_MADVISE                       0x0b | ||||
| #define DRM_VC4_PERFMON_CREATE                    0x0c | ||||
| #define DRM_VC4_PERFMON_DESTROY                   0x0d | ||||
| #define DRM_VC4_PERFMON_GET_VALUES                0x0e | ||||
|  | ||||
| #define DRM_IOCTL_VC4_SUBMIT_CL           DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SUBMIT_CL, struct drm_vc4_submit_cl) | ||||
| #define DRM_IOCTL_VC4_WAIT_SEQNO          DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_SEQNO, struct drm_vc4_wait_seqno) | ||||
| @@ -58,9 +55,6 @@ extern "C" { | ||||
| #define DRM_IOCTL_VC4_GET_TILING          DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_TILING, struct drm_vc4_get_tiling) | ||||
| #define DRM_IOCTL_VC4_LABEL_BO            DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_LABEL_BO, struct drm_vc4_label_bo) | ||||
| #define DRM_IOCTL_VC4_GEM_MADVISE         DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GEM_MADVISE, struct drm_vc4_gem_madvise) | ||||
| #define DRM_IOCTL_VC4_PERFMON_CREATE      DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_CREATE, struct drm_vc4_perfmon_create) | ||||
| #define DRM_IOCTL_VC4_PERFMON_DESTROY     DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_DESTROY, struct drm_vc4_perfmon_destroy) | ||||
| #define DRM_IOCTL_VC4_PERFMON_GET_VALUES  DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_GET_VALUES, struct drm_vc4_perfmon_get_values) | ||||
|  | ||||
| struct drm_vc4_submit_rcl_surface { | ||||
| 	__u32 hindex; /* Handle index, or ~0 if not present. */ | ||||
| @@ -179,15 +173,6 @@ struct drm_vc4_submit_cl { | ||||
| 	 * wait ioctl). | ||||
| 	 */ | ||||
| 	__u64 seqno; | ||||
|  | ||||
| 	/* ID of the perfmon to attach to this job. 0 means no perfmon. */ | ||||
| 	__u32 perfmonid; | ||||
|  | ||||
| 	/* Unused field to align this struct on 64 bits. Must be set to 0. | ||||
| 	 * If one ever needs to add an u32 field to this struct, this field | ||||
| 	 * can be used. | ||||
| 	 */ | ||||
| 	__u32 pad2; | ||||
| }; | ||||
|  | ||||
| /** | ||||
| @@ -323,7 +308,6 @@ struct drm_vc4_get_hang_state { | ||||
| #define DRM_VC4_PARAM_SUPPORTS_THREADED_FS	5 | ||||
| #define DRM_VC4_PARAM_SUPPORTS_FIXED_RCL_ORDER	6 | ||||
| #define DRM_VC4_PARAM_SUPPORTS_MADVISE		7 | ||||
| #define DRM_VC4_PARAM_SUPPORTS_PERFMON		8 | ||||
|  | ||||
| struct drm_vc4_get_param { | ||||
| 	__u32 param; | ||||
| @@ -368,66 +352,6 @@ struct drm_vc4_gem_madvise { | ||||
| 	__u32 pad; | ||||
| }; | ||||
|  | ||||
| enum { | ||||
| 	VC4_PERFCNT_FEP_VALID_PRIMS_NO_RENDER, | ||||
| 	VC4_PERFCNT_FEP_VALID_PRIMS_RENDER, | ||||
| 	VC4_PERFCNT_FEP_CLIPPED_QUADS, | ||||
| 	VC4_PERFCNT_FEP_VALID_QUADS, | ||||
| 	VC4_PERFCNT_TLB_QUADS_NOT_PASSING_STENCIL, | ||||
| 	VC4_PERFCNT_TLB_QUADS_NOT_PASSING_Z_AND_STENCIL, | ||||
| 	VC4_PERFCNT_TLB_QUADS_PASSING_Z_AND_STENCIL, | ||||
| 	VC4_PERFCNT_TLB_QUADS_ZERO_COVERAGE, | ||||
| 	VC4_PERFCNT_TLB_QUADS_NON_ZERO_COVERAGE, | ||||
| 	VC4_PERFCNT_TLB_QUADS_WRITTEN_TO_COLOR_BUF, | ||||
| 	VC4_PERFCNT_PLB_PRIMS_OUTSIDE_VIEWPORT, | ||||
| 	VC4_PERFCNT_PLB_PRIMS_NEED_CLIPPING, | ||||
| 	VC4_PERFCNT_PSE_PRIMS_REVERSED, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_IDLE_CYCLES, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_VERTEX_COORD_SHADING, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_FRAGMENT_SHADING, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_EXEC_VALID_INST, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_TMUS, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_SCOREBOARD, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_VARYINGS, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_INST_CACHE_HIT, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_INST_CACHE_MISS, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_UNIFORM_CACHE_HIT, | ||||
| 	VC4_PERFCNT_QPU_TOTAL_UNIFORM_CACHE_MISS, | ||||
| 	VC4_PERFCNT_TMU_TOTAL_TEXT_QUADS_PROCESSED, | ||||
| 	VC4_PERFCNT_TMU_TOTAL_TEXT_CACHE_MISS, | ||||
| 	VC4_PERFCNT_VPM_TOTAL_CLK_CYCLES_VDW_STALLED, | ||||
| 	VC4_PERFCNT_VPM_TOTAL_CLK_CYCLES_VCD_STALLED, | ||||
| 	VC4_PERFCNT_L2C_TOTAL_L2_CACHE_HIT, | ||||
| 	VC4_PERFCNT_L2C_TOTAL_L2_CACHE_MISS, | ||||
| 	VC4_PERFCNT_NUM_EVENTS, | ||||
| }; | ||||
|  | ||||
| #define DRM_VC4_MAX_PERF_COUNTERS	16 | ||||
|  | ||||
| struct drm_vc4_perfmon_create { | ||||
| 	__u32 id; | ||||
| 	__u32 ncounters; | ||||
| 	__u8 events[DRM_VC4_MAX_PERF_COUNTERS]; | ||||
| }; | ||||
|  | ||||
| struct drm_vc4_perfmon_destroy { | ||||
| 	__u32 id; | ||||
| }; | ||||
|  | ||||
| /* | ||||
|  * Returns the values of the performance counters tracked by this | ||||
|  * perfmon (as an array of ncounters u64 values). | ||||
|  * | ||||
|  * No implicit synchronization is performed, so the user has to | ||||
|  * guarantee that any jobs using this perfmon have already been | ||||
|  * completed  (probably by blocking on the seqno returned by the | ||||
|  * last exec that used the perfmon). | ||||
|  */ | ||||
| struct drm_vc4_perfmon_get_values { | ||||
| 	__u32 id; | ||||
| 	__u64 values_ptr; | ||||
| }; | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -22,7 +22,6 @@ inc_drm_uapi = include_directories('drm-uapi') | ||||
| inc_vulkan = include_directories('vulkan') | ||||
| inc_d3d9 = include_directories('D3D9') | ||||
| inc_gl_internal = include_directories('GL/internal') | ||||
| inc_haikugl = include_directories('HaikuGL') | ||||
|  | ||||
| if with_gles1 | ||||
|   install_headers( | ||||
| @@ -81,13 +80,6 @@ if with_gallium_st_nine | ||||
|   ) | ||||
| endif | ||||
|  | ||||
| if with_platform_haiku | ||||
|   install_headers( | ||||
|     'HaikuGL/GLRenderer.h', 'HaikuGL/GLView.h', 'HaikuGL/OpenGLKit.h', | ||||
|     subdir : 'opengl', | ||||
|   ) | ||||
| endif | ||||
|  | ||||
| # Only install the headers if we are building a stand alone implementation and | ||||
| # not an ICD enabled implementation | ||||
| if with_gallium_opencl and not with_opencl_icd | ||||
| @@ -106,7 +98,3 @@ if with_gallium_opencl and not with_opencl_icd | ||||
|     subdir: 'CL' | ||||
|   ) | ||||
| endif | ||||
|  | ||||
| if with_intel_vk | ||||
|   install_headers('vulkan/vulkan_intel.h', subdir : 'vulkan') | ||||
| endif | ||||
|   | ||||
| @@ -165,16 +165,16 @@ CHIPSET(0x5927, kbl_gt3, "Intel(R) Iris Plus Graphics 650 (Kaby Lake GT3e)") | ||||
| CHIPSET(0x593B, kbl_gt4, "Intel(R) Kabylake GT4") | ||||
| CHIPSET(0x3184, glk,     "Intel(R) UHD Graphics 605 (Geminilake)") | ||||
| CHIPSET(0x3185, glk_2x6, "Intel(R) UHD Graphics 600 (Geminilake 2x6)") | ||||
| CHIPSET(0x3E90, cfl_gt1, "Intel(R) UHD Graphics 610 (Coffeelake 2x6 GT1)") | ||||
| CHIPSET(0x3E93, cfl_gt1, "Intel(R) UHD Graphics 610 (Coffeelake 2x6 GT1)") | ||||
| CHIPSET(0x3E90, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") | ||||
| CHIPSET(0x3E93, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") | ||||
| CHIPSET(0x3E99, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") | ||||
| CHIPSET(0x3EA1, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") | ||||
| CHIPSET(0x3EA4, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") | ||||
| CHIPSET(0x3E91, cfl_gt2, "Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3E92, cfl_gt2, "Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3E91, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3E92, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3E96, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3E9A, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3E9B, cfl_gt2, "Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3E9B, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3E94, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3EA0, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3EA3, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") | ||||
| @@ -196,11 +196,3 @@ CHIPSET(0x5A50, cnl_5x8, "Intel(R) HD Graphics (Cannonlake 5x8 GT2)") | ||||
| CHIPSET(0x5A51, cnl_5x8, "Intel(R) HD Graphics (Cannonlake 5x8 GT2)") | ||||
| CHIPSET(0x5A52, cnl_5x8, "Intel(R) HD Graphics (Cannonlake 5x8 GT2)") | ||||
| CHIPSET(0x5A54, cnl_5x8, "Intel(R) HD Graphics (Cannonlake 5x8 GT2)") | ||||
| CHIPSET(0x8A50, icl_8x8, "Intel(R) HD Graphics (Ice Lake 8x8 GT2)") | ||||
| CHIPSET(0x8A51, icl_8x8, "Intel(R) HD Graphics (Ice Lake 8x8 GT2)") | ||||
| CHIPSET(0x8A52, icl_8x8, "Intel(R) HD Graphics (Ice Lake 8x8 GT2)") | ||||
| CHIPSET(0x8A5A, icl_6x8, "Intel(R) HD Graphics (Ice Lake 6x8 GT1.5)") | ||||
| CHIPSET(0x8A5B, icl_4x8, "Intel(R) HD Graphics (Ice Lake 4x8 GT1)") | ||||
| CHIPSET(0x8A5C, icl_6x8, "Intel(R) HD Graphics (Ice Lake 6x8 GT1.5)") | ||||
| CHIPSET(0x8A5D, icl_4x8, "Intel(R) HD Graphics (Ice Lake 4x8 GT1)") | ||||
| CHIPSET(0x8A71, icl_1x8, "Intel(R) HD Graphics (Ice Lake 1x8 GT0.5)") | ||||
|   | ||||
| @@ -216,9 +216,6 @@ CHIPSET(0x6995, POLARIS12) | ||||
| CHIPSET(0x6997, POLARIS12) | ||||
| CHIPSET(0x699F, POLARIS12) | ||||
|  | ||||
| CHIPSET(0x694C, VEGAM) | ||||
| CHIPSET(0x694E, VEGAM) | ||||
|  | ||||
| CHIPSET(0x6860, VEGA10) | ||||
| CHIPSET(0x6861, VEGA10) | ||||
| CHIPSET(0x6862, VEGA10) | ||||
| @@ -229,10 +226,4 @@ CHIPSET(0x6868, VEGA10) | ||||
| CHIPSET(0x687F, VEGA10) | ||||
| CHIPSET(0x686C, VEGA10) | ||||
|  | ||||
| CHIPSET(0x69A0, VEGA12) | ||||
| CHIPSET(0x69A1, VEGA12) | ||||
| CHIPSET(0x69A2, VEGA12) | ||||
| CHIPSET(0x69A3, VEGA12) | ||||
| CHIPSET(0x69AF, VEGA12) | ||||
|  | ||||
| CHIPSET(0x15DD, RAVEN) | ||||
|   | ||||
| @@ -89,4 +89,32 @@ extern "C" | ||||
| } // extern "C" | ||||
| #endif // __cplusplus | ||||
|  | ||||
| // Platform-specific headers required by platform window system extensions. | ||||
| // These are enabled prior to #including "vulkan.h". The same enable then | ||||
| // controls inclusion of the extension interfaces in vulkan.h. | ||||
|  | ||||
| #ifdef VK_USE_PLATFORM_ANDROID_KHR | ||||
| #include <android/native_window.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef VK_USE_PLATFORM_MIR_KHR | ||||
| #include <mir_toolkit/client_types.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef VK_USE_PLATFORM_WAYLAND_KHR | ||||
| #include <wayland-client.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef VK_USE_PLATFORM_WIN32_KHR | ||||
| #include <windows.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef VK_USE_PLATFORM_XLIB_KHR | ||||
| #include <X11/Xlib.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef VK_USE_PLATFORM_XCB_KHR | ||||
| #include <xcb/xcb.h> | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,126 +0,0 @@ | ||||
| #ifndef VULKAN_ANDROID_H_ | ||||
| #define VULKAN_ANDROID_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2018 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_KHR_android_surface 1 | ||||
| struct ANativeWindow; | ||||
|  | ||||
| #define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6 | ||||
| #define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface" | ||||
|  | ||||
| typedef VkFlags VkAndroidSurfaceCreateFlagsKHR; | ||||
|  | ||||
| typedef struct VkAndroidSurfaceCreateInfoKHR { | ||||
|     VkStructureType                   sType; | ||||
|     const void*                       pNext; | ||||
|     VkAndroidSurfaceCreateFlagsKHR    flags; | ||||
|     struct ANativeWindow*             window; | ||||
| } VkAndroidSurfaceCreateInfoKHR; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR( | ||||
|     VkInstance                                  instance, | ||||
|     const VkAndroidSurfaceCreateInfoKHR*        pCreateInfo, | ||||
|     const VkAllocationCallbacks*                pAllocator, | ||||
|     VkSurfaceKHR*                               pSurface); | ||||
| #endif | ||||
|  | ||||
| #define VK_ANDROID_external_memory_android_hardware_buffer 1 | ||||
| struct AHardwareBuffer; | ||||
|  | ||||
| #define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 3 | ||||
| #define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer" | ||||
|  | ||||
| typedef struct VkAndroidHardwareBufferUsageANDROID { | ||||
|     VkStructureType    sType; | ||||
|     void*              pNext; | ||||
|     uint64_t           androidHardwareBufferUsage; | ||||
| } VkAndroidHardwareBufferUsageANDROID; | ||||
|  | ||||
| typedef struct VkAndroidHardwareBufferPropertiesANDROID { | ||||
|     VkStructureType    sType; | ||||
|     void*              pNext; | ||||
|     VkDeviceSize       allocationSize; | ||||
|     uint32_t           memoryTypeBits; | ||||
| } VkAndroidHardwareBufferPropertiesANDROID; | ||||
|  | ||||
| typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID { | ||||
|     VkStructureType                  sType; | ||||
|     void*                            pNext; | ||||
|     VkFormat                         format; | ||||
|     uint64_t                         externalFormat; | ||||
|     VkFormatFeatureFlags             formatFeatures; | ||||
|     VkComponentMapping               samplerYcbcrConversionComponents; | ||||
|     VkSamplerYcbcrModelConversion    suggestedYcbcrModel; | ||||
|     VkSamplerYcbcrRange              suggestedYcbcrRange; | ||||
|     VkChromaLocation                 suggestedXChromaOffset; | ||||
|     VkChromaLocation                 suggestedYChromaOffset; | ||||
| } VkAndroidHardwareBufferFormatPropertiesANDROID; | ||||
|  | ||||
| typedef struct VkImportAndroidHardwareBufferInfoANDROID { | ||||
|     VkStructureType            sType; | ||||
|     const void*                pNext; | ||||
|     struct AHardwareBuffer*    buffer; | ||||
| } VkImportAndroidHardwareBufferInfoANDROID; | ||||
|  | ||||
| typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID { | ||||
|     VkStructureType    sType; | ||||
|     const void*        pNext; | ||||
|     VkDeviceMemory     memory; | ||||
| } VkMemoryGetAndroidHardwareBufferInfoANDROID; | ||||
|  | ||||
| typedef struct VkExternalFormatANDROID { | ||||
|     VkStructureType    sType; | ||||
|     void*              pNext; | ||||
|     uint64_t           externalFormat; | ||||
| } VkExternalFormatANDROID; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties); | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID( | ||||
|     VkDevice                                    device, | ||||
|     const struct AHardwareBuffer*               buffer, | ||||
|     VkAndroidHardwareBufferPropertiesANDROID*   pProperties); | ||||
|  | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID( | ||||
|     VkDevice                                    device, | ||||
|     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, | ||||
|     struct AHardwareBuffer**                    pBuffer); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,58 +0,0 @@ | ||||
| #ifndef VULKAN_IOS_H_ | ||||
| #define VULKAN_IOS_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2018 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_MVK_ios_surface 1 | ||||
| #define VK_MVK_IOS_SURFACE_SPEC_VERSION   2 | ||||
| #define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface" | ||||
|  | ||||
| typedef VkFlags VkIOSSurfaceCreateFlagsMVK; | ||||
|  | ||||
| typedef struct VkIOSSurfaceCreateInfoMVK { | ||||
|     VkStructureType               sType; | ||||
|     const void*                   pNext; | ||||
|     VkIOSSurfaceCreateFlagsMVK    flags; | ||||
|     const void*                   pView; | ||||
| } VkIOSSurfaceCreateInfoMVK; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK( | ||||
|     VkInstance                                  instance, | ||||
|     const VkIOSSurfaceCreateInfoMVK*            pCreateInfo, | ||||
|     const VkAllocationCallbacks*                pAllocator, | ||||
|     VkSurfaceKHR*                               pSurface); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,58 +0,0 @@ | ||||
| #ifndef VULKAN_MACOS_H_ | ||||
| #define VULKAN_MACOS_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2018 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_MVK_macos_surface 1 | ||||
| #define VK_MVK_MACOS_SURFACE_SPEC_VERSION 2 | ||||
| #define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface" | ||||
|  | ||||
| typedef VkFlags VkMacOSSurfaceCreateFlagsMVK; | ||||
|  | ||||
| typedef struct VkMacOSSurfaceCreateInfoMVK { | ||||
|     VkStructureType                 sType; | ||||
|     const void*                     pNext; | ||||
|     VkMacOSSurfaceCreateFlagsMVK    flags; | ||||
|     const void*                     pView; | ||||
| } VkMacOSSurfaceCreateInfoMVK; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK( | ||||
|     VkInstance                                  instance, | ||||
|     const VkMacOSSurfaceCreateInfoMVK*          pCreateInfo, | ||||
|     const VkAllocationCallbacks*                pAllocator, | ||||
|     VkSurfaceKHR*                               pSurface); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,65 +0,0 @@ | ||||
| #ifndef VULKAN_MIR_H_ | ||||
| #define VULKAN_MIR_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2018 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_KHR_mir_surface 1 | ||||
| #define VK_KHR_MIR_SURFACE_SPEC_VERSION   4 | ||||
| #define VK_KHR_MIR_SURFACE_EXTENSION_NAME "VK_KHR_mir_surface" | ||||
|  | ||||
| typedef VkFlags VkMirSurfaceCreateFlagsKHR; | ||||
|  | ||||
| typedef struct VkMirSurfaceCreateInfoKHR { | ||||
|     VkStructureType               sType; | ||||
|     const void*                   pNext; | ||||
|     VkMirSurfaceCreateFlagsKHR    flags; | ||||
|     MirConnection*                connection; | ||||
|     MirSurface*                   mirSurface; | ||||
| } VkMirSurfaceCreateInfoKHR; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); | ||||
| typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR( | ||||
|     VkInstance                                  instance, | ||||
|     const VkMirSurfaceCreateInfoKHR*            pCreateInfo, | ||||
|     const VkAllocationCallbacks*                pAllocator, | ||||
|     VkSurfaceKHR*                               pSurface); | ||||
|  | ||||
| VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR( | ||||
|     VkPhysicalDevice                            physicalDevice, | ||||
|     uint32_t                                    queueFamilyIndex, | ||||
|     MirConnection*                              connection); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,58 +0,0 @@ | ||||
| #ifndef VULKAN_VI_H_ | ||||
| #define VULKAN_VI_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2018 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_NN_vi_surface 1 | ||||
| #define VK_NN_VI_SURFACE_SPEC_VERSION     1 | ||||
| #define VK_NN_VI_SURFACE_EXTENSION_NAME   "VK_NN_vi_surface" | ||||
|  | ||||
| typedef VkFlags VkViSurfaceCreateFlagsNN; | ||||
|  | ||||
| typedef struct VkViSurfaceCreateInfoNN { | ||||
|     VkStructureType             sType; | ||||
|     const void*                 pNext; | ||||
|     VkViSurfaceCreateFlagsNN    flags; | ||||
|     void*                       window; | ||||
| } VkViSurfaceCreateInfoNN; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN( | ||||
|     VkInstance                                  instance, | ||||
|     const VkViSurfaceCreateInfoNN*              pCreateInfo, | ||||
|     const VkAllocationCallbacks*                pAllocator, | ||||
|     VkSurfaceKHR*                               pSurface); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,65 +0,0 @@ | ||||
| #ifndef VULKAN_WAYLAND_H_ | ||||
| #define VULKAN_WAYLAND_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2018 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_KHR_wayland_surface 1 | ||||
| #define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6 | ||||
| #define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface" | ||||
|  | ||||
| typedef VkFlags VkWaylandSurfaceCreateFlagsKHR; | ||||
|  | ||||
| typedef struct VkWaylandSurfaceCreateInfoKHR { | ||||
|     VkStructureType                   sType; | ||||
|     const void*                       pNext; | ||||
|     VkWaylandSurfaceCreateFlagsKHR    flags; | ||||
|     struct wl_display*                display; | ||||
|     struct wl_surface*                surface; | ||||
| } VkWaylandSurfaceCreateInfoKHR; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); | ||||
| typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR( | ||||
|     VkInstance                                  instance, | ||||
|     const VkWaylandSurfaceCreateInfoKHR*        pCreateInfo, | ||||
|     const VkAllocationCallbacks*                pAllocator, | ||||
|     VkSurfaceKHR*                               pSurface); | ||||
|  | ||||
| VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR( | ||||
|     VkPhysicalDevice                            physicalDevice, | ||||
|     uint32_t                                    queueFamilyIndex, | ||||
|     struct wl_display*                          display); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,276 +0,0 @@ | ||||
| #ifndef VULKAN_WIN32_H_ | ||||
| #define VULKAN_WIN32_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2018 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_KHR_win32_surface 1 | ||||
| #define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6 | ||||
| #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface" | ||||
|  | ||||
| typedef VkFlags VkWin32SurfaceCreateFlagsKHR; | ||||
|  | ||||
| typedef struct VkWin32SurfaceCreateInfoKHR { | ||||
|     VkStructureType                 sType; | ||||
|     const void*                     pNext; | ||||
|     VkWin32SurfaceCreateFlagsKHR    flags; | ||||
|     HINSTANCE                       hinstance; | ||||
|     HWND                            hwnd; | ||||
| } VkWin32SurfaceCreateInfoKHR; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); | ||||
| typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR( | ||||
|     VkInstance                                  instance, | ||||
|     const VkWin32SurfaceCreateInfoKHR*          pCreateInfo, | ||||
|     const VkAllocationCallbacks*                pAllocator, | ||||
|     VkSurfaceKHR*                               pSurface); | ||||
|  | ||||
| VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR( | ||||
|     VkPhysicalDevice                            physicalDevice, | ||||
|     uint32_t                                    queueFamilyIndex); | ||||
| #endif | ||||
|  | ||||
| #define VK_KHR_external_memory_win32 1 | ||||
| #define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 | ||||
| #define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32" | ||||
|  | ||||
| typedef struct VkImportMemoryWin32HandleInfoKHR { | ||||
|     VkStructureType                       sType; | ||||
|     const void*                           pNext; | ||||
|     VkExternalMemoryHandleTypeFlagBits    handleType; | ||||
|     HANDLE                                handle; | ||||
|     LPCWSTR                               name; | ||||
| } VkImportMemoryWin32HandleInfoKHR; | ||||
|  | ||||
| typedef struct VkExportMemoryWin32HandleInfoKHR { | ||||
|     VkStructureType               sType; | ||||
|     const void*                   pNext; | ||||
|     const SECURITY_ATTRIBUTES*    pAttributes; | ||||
|     DWORD                         dwAccess; | ||||
|     LPCWSTR                       name; | ||||
| } VkExportMemoryWin32HandleInfoKHR; | ||||
|  | ||||
| typedef struct VkMemoryWin32HandlePropertiesKHR { | ||||
|     VkStructureType    sType; | ||||
|     void*              pNext; | ||||
|     uint32_t           memoryTypeBits; | ||||
| } VkMemoryWin32HandlePropertiesKHR; | ||||
|  | ||||
| typedef struct VkMemoryGetWin32HandleInfoKHR { | ||||
|     VkStructureType                       sType; | ||||
|     const void*                           pNext; | ||||
|     VkDeviceMemory                        memory; | ||||
|     VkExternalMemoryHandleTypeFlagBits    handleType; | ||||
| } VkMemoryGetWin32HandleInfoKHR; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR( | ||||
|     VkDevice                                    device, | ||||
|     const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo, | ||||
|     HANDLE*                                     pHandle); | ||||
|  | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR( | ||||
|     VkDevice                                    device, | ||||
|     VkExternalMemoryHandleTypeFlagBits          handleType, | ||||
|     HANDLE                                      handle, | ||||
|     VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties); | ||||
| #endif | ||||
|  | ||||
| #define VK_KHR_win32_keyed_mutex 1 | ||||
| #define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1 | ||||
| #define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex" | ||||
|  | ||||
| typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR { | ||||
|     VkStructureType          sType; | ||||
|     const void*              pNext; | ||||
|     uint32_t                 acquireCount; | ||||
|     const VkDeviceMemory*    pAcquireSyncs; | ||||
|     const uint64_t*          pAcquireKeys; | ||||
|     const uint32_t*          pAcquireTimeouts; | ||||
|     uint32_t                 releaseCount; | ||||
|     const VkDeviceMemory*    pReleaseSyncs; | ||||
|     const uint64_t*          pReleaseKeys; | ||||
| } VkWin32KeyedMutexAcquireReleaseInfoKHR; | ||||
|  | ||||
|  | ||||
|  | ||||
| #define VK_KHR_external_semaphore_win32 1 | ||||
| #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1 | ||||
| #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32" | ||||
|  | ||||
| typedef struct VkImportSemaphoreWin32HandleInfoKHR { | ||||
|     VkStructureType                          sType; | ||||
|     const void*                              pNext; | ||||
|     VkSemaphore                              semaphore; | ||||
|     VkSemaphoreImportFlags                   flags; | ||||
|     VkExternalSemaphoreHandleTypeFlagBits    handleType; | ||||
|     HANDLE                                   handle; | ||||
|     LPCWSTR                                  name; | ||||
| } VkImportSemaphoreWin32HandleInfoKHR; | ||||
|  | ||||
| typedef struct VkExportSemaphoreWin32HandleInfoKHR { | ||||
|     VkStructureType               sType; | ||||
|     const void*                   pNext; | ||||
|     const SECURITY_ATTRIBUTES*    pAttributes; | ||||
|     DWORD                         dwAccess; | ||||
|     LPCWSTR                       name; | ||||
| } VkExportSemaphoreWin32HandleInfoKHR; | ||||
|  | ||||
| typedef struct VkD3D12FenceSubmitInfoKHR { | ||||
|     VkStructureType    sType; | ||||
|     const void*        pNext; | ||||
|     uint32_t           waitSemaphoreValuesCount; | ||||
|     const uint64_t*    pWaitSemaphoreValues; | ||||
|     uint32_t           signalSemaphoreValuesCount; | ||||
|     const uint64_t*    pSignalSemaphoreValues; | ||||
| } VkD3D12FenceSubmitInfoKHR; | ||||
|  | ||||
| typedef struct VkSemaphoreGetWin32HandleInfoKHR { | ||||
|     VkStructureType                          sType; | ||||
|     const void*                              pNext; | ||||
|     VkSemaphore                              semaphore; | ||||
|     VkExternalSemaphoreHandleTypeFlagBits    handleType; | ||||
| } VkSemaphoreGetWin32HandleInfoKHR; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo); | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR( | ||||
|     VkDevice                                    device, | ||||
|     const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo); | ||||
|  | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR( | ||||
|     VkDevice                                    device, | ||||
|     const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo, | ||||
|     HANDLE*                                     pHandle); | ||||
| #endif | ||||
|  | ||||
| #define VK_KHR_external_fence_win32 1 | ||||
| #define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1 | ||||
| #define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32" | ||||
|  | ||||
| typedef struct VkImportFenceWin32HandleInfoKHR { | ||||
|     VkStructureType                      sType; | ||||
|     const void*                          pNext; | ||||
|     VkFence                              fence; | ||||
|     VkFenceImportFlags                   flags; | ||||
|     VkExternalFenceHandleTypeFlagBits    handleType; | ||||
|     HANDLE                               handle; | ||||
|     LPCWSTR                              name; | ||||
| } VkImportFenceWin32HandleInfoKHR; | ||||
|  | ||||
| typedef struct VkExportFenceWin32HandleInfoKHR { | ||||
|     VkStructureType               sType; | ||||
|     const void*                   pNext; | ||||
|     const SECURITY_ATTRIBUTES*    pAttributes; | ||||
|     DWORD                         dwAccess; | ||||
|     LPCWSTR                       name; | ||||
| } VkExportFenceWin32HandleInfoKHR; | ||||
|  | ||||
| typedef struct VkFenceGetWin32HandleInfoKHR { | ||||
|     VkStructureType                      sType; | ||||
|     const void*                          pNext; | ||||
|     VkFence                              fence; | ||||
|     VkExternalFenceHandleTypeFlagBits    handleType; | ||||
| } VkFenceGetWin32HandleInfoKHR; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo); | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR( | ||||
|     VkDevice                                    device, | ||||
|     const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo); | ||||
|  | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR( | ||||
|     VkDevice                                    device, | ||||
|     const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo, | ||||
|     HANDLE*                                     pHandle); | ||||
| #endif | ||||
|  | ||||
| #define VK_NV_external_memory_win32 1 | ||||
| #define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 | ||||
| #define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32" | ||||
|  | ||||
| typedef struct VkImportMemoryWin32HandleInfoNV { | ||||
|     VkStructureType                      sType; | ||||
|     const void*                          pNext; | ||||
|     VkExternalMemoryHandleTypeFlagsNV    handleType; | ||||
|     HANDLE                               handle; | ||||
| } VkImportMemoryWin32HandleInfoNV; | ||||
|  | ||||
| typedef struct VkExportMemoryWin32HandleInfoNV { | ||||
|     VkStructureType               sType; | ||||
|     const void*                   pNext; | ||||
|     const SECURITY_ATTRIBUTES*    pAttributes; | ||||
|     DWORD                         dwAccess; | ||||
| } VkExportMemoryWin32HandleInfoNV; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV( | ||||
|     VkDevice                                    device, | ||||
|     VkDeviceMemory                              memory, | ||||
|     VkExternalMemoryHandleTypeFlagsNV           handleType, | ||||
|     HANDLE*                                     pHandle); | ||||
| #endif | ||||
|  | ||||
| #define VK_NV_win32_keyed_mutex 1 | ||||
| #define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1 | ||||
| #define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex" | ||||
|  | ||||
| typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV { | ||||
|     VkStructureType          sType; | ||||
|     const void*              pNext; | ||||
|     uint32_t                 acquireCount; | ||||
|     const VkDeviceMemory*    pAcquireSyncs; | ||||
|     const uint64_t*          pAcquireKeys; | ||||
|     const uint32_t*          pAcquireTimeoutMilliseconds; | ||||
|     uint32_t                 releaseCount; | ||||
|     const VkDeviceMemory*    pReleaseSyncs; | ||||
|     const uint64_t*          pReleaseKeys; | ||||
| } VkWin32KeyedMutexAcquireReleaseInfoNV; | ||||
|  | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,66 +0,0 @@ | ||||
| #ifndef VULKAN_XCB_H_ | ||||
| #define VULKAN_XCB_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2018 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_KHR_xcb_surface 1 | ||||
| #define VK_KHR_XCB_SURFACE_SPEC_VERSION   6 | ||||
| #define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface" | ||||
|  | ||||
| typedef VkFlags VkXcbSurfaceCreateFlagsKHR; | ||||
|  | ||||
| typedef struct VkXcbSurfaceCreateInfoKHR { | ||||
|     VkStructureType               sType; | ||||
|     const void*                   pNext; | ||||
|     VkXcbSurfaceCreateFlagsKHR    flags; | ||||
|     xcb_connection_t*             connection; | ||||
|     xcb_window_t                  window; | ||||
| } VkXcbSurfaceCreateInfoKHR; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); | ||||
| typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR( | ||||
|     VkInstance                                  instance, | ||||
|     const VkXcbSurfaceCreateInfoKHR*            pCreateInfo, | ||||
|     const VkAllocationCallbacks*                pAllocator, | ||||
|     VkSurfaceKHR*                               pSurface); | ||||
|  | ||||
| VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR( | ||||
|     VkPhysicalDevice                            physicalDevice, | ||||
|     uint32_t                                    queueFamilyIndex, | ||||
|     xcb_connection_t*                           connection, | ||||
|     xcb_visualid_t                              visual_id); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,66 +0,0 @@ | ||||
| #ifndef VULKAN_XLIB_H_ | ||||
| #define VULKAN_XLIB_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2018 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_KHR_xlib_surface 1 | ||||
| #define VK_KHR_XLIB_SURFACE_SPEC_VERSION  6 | ||||
| #define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface" | ||||
|  | ||||
| typedef VkFlags VkXlibSurfaceCreateFlagsKHR; | ||||
|  | ||||
| typedef struct VkXlibSurfaceCreateInfoKHR { | ||||
|     VkStructureType                sType; | ||||
|     const void*                    pNext; | ||||
|     VkXlibSurfaceCreateFlagsKHR    flags; | ||||
|     Display*                       dpy; | ||||
|     Window                         window; | ||||
| } VkXlibSurfaceCreateInfoKHR; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); | ||||
| typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR( | ||||
|     VkInstance                                  instance, | ||||
|     const VkXlibSurfaceCreateInfoKHR*           pCreateInfo, | ||||
|     const VkAllocationCallbacks*                pAllocator, | ||||
|     VkSurfaceKHR*                               pSurface); | ||||
|  | ||||
| VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR( | ||||
|     VkPhysicalDevice                            physicalDevice, | ||||
|     uint32_t                                    queueFamilyIndex, | ||||
|     Display*                                    dpy, | ||||
|     VisualID                                    visualID); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,54 +0,0 @@ | ||||
| #ifndef VULKAN_XLIB_RANDR_H_ | ||||
| #define VULKAN_XLIB_RANDR_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2017 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_EXT_acquire_xlib_display 1 | ||||
| #define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1 | ||||
| #define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display" | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display); | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT( | ||||
|     VkPhysicalDevice                            physicalDevice, | ||||
|     Display*                                    dpy, | ||||
|     VkDisplayKHR                                display); | ||||
|  | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT( | ||||
|     VkPhysicalDevice                            physicalDevice, | ||||
|     Display*                                    dpy, | ||||
|     RROutput                                    rrOutput, | ||||
|     VkDisplayKHR*                               pDisplay); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,54 +0,0 @@ | ||||
| #ifndef VULKAN_XLIB_XRANDR_H_ | ||||
| #define VULKAN_XLIB_XRANDR_H_ 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| ** Copyright (c) 2015-2018 The Khronos Group 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. | ||||
| */ | ||||
|  | ||||
| /* | ||||
| ** This header is generated from the Khronos Vulkan XML API Registry. | ||||
| ** | ||||
| */ | ||||
|  | ||||
|  | ||||
| #define VK_EXT_acquire_xlib_display 1 | ||||
| #define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1 | ||||
| #define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display" | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display); | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT( | ||||
|     VkPhysicalDevice                            physicalDevice, | ||||
|     Display*                                    dpy, | ||||
|     VkDisplayKHR                                display); | ||||
|  | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT( | ||||
|     VkPhysicalDevice                            physicalDevice, | ||||
|     Display*                                    dpy, | ||||
|     RROutput                                    rrOutput, | ||||
|     VkDisplayKHR*                               pDisplay); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										619
									
								
								meson.build
									
									
									
									
									
								
							
							
						
						
									
										619
									
								
								meson.build
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -41,13 +41,7 @@ option( | ||||
|   'dri-drivers-path', | ||||
|   type : 'string', | ||||
|   value : '', | ||||
|   description : 'Location to install dri drivers. Default: $libdir/dri.' | ||||
| ) | ||||
| option( | ||||
|   'dri-search-path', | ||||
|   type : 'string', | ||||
|   value : '', | ||||
|   description : 'Locations to search for dri drivers, passed as colon separated list. Default: dri-drivers-path.' | ||||
|   description : 'Location of dri drivers. Default: $libdir/dri.' | ||||
| ) | ||||
| option( | ||||
|   'gallium-drivers', | ||||
| @@ -91,8 +85,8 @@ option( | ||||
|   'gallium-omx', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'disabled', 'bellagio', 'tizonia'], | ||||
|   description : 'enable gallium omx state tracker.', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   description : 'enable gallium omx bellagio state tracker.', | ||||
| ) | ||||
| option( | ||||
|   'omx-libs-path', | ||||
| @@ -280,9 +274,3 @@ option( | ||||
|   value : 'avx,avx2', | ||||
|   description : 'Comma delemited swr architectures. choices : avx,avx2,knl,skx' | ||||
| ) | ||||
| option( | ||||
|   'tools', | ||||
|   type : 'string', | ||||
|   value : '', | ||||
|   description : 'Comma delimited list of tools to build. choices : freedreno,glsl,intel,nir,nouveau or all' | ||||
| ) | ||||
|   | ||||
| @@ -134,9 +134,7 @@ def check_cc(env, cc, expr, cpp_opt = '-E'): | ||||
|     source.write('#if !(%s)\n#error\n#endif\n' % expr) | ||||
|     source.close() | ||||
|  | ||||
|     # sys.stderr.write('%r %s %s\n' % (env['CC'], cpp_opt, source.name)); | ||||
|  | ||||
|     pipe = SCons.Action._subproc(env, env.Split(env['CC']) + [cpp_opt, source.name], | ||||
|     pipe = SCons.Action._subproc(env, [env['CC'], cpp_opt, source.name], | ||||
|                                  stdin = 'devnull', | ||||
|                                  stderr = 'devnull', | ||||
|                                  stdout = 'devnull') | ||||
| @@ -354,9 +352,6 @@ def generate(env): | ||||
|         if check_header(env, 'xlocale.h'): | ||||
|             cppdefines += ['HAVE_XLOCALE_H'] | ||||
|  | ||||
|         if check_header(env, 'endian.h'): | ||||
|             cppdefines += ['HAVE_ENDIAN_H'] | ||||
|  | ||||
|         if check_functions(env, ['strtod_l', 'strtof_l']): | ||||
|             cppdefines += ['HAVE_STRTOD_L'] | ||||
|  | ||||
|   | ||||
| @@ -67,6 +67,7 @@ SUBDIRS += vulkan | ||||
| endif | ||||
|  | ||||
| EXTRA_DIST += vulkan/registry/vk.xml | ||||
| EXTRA_DIST += vulkan/registry/vk_android_native_buffer.xml | ||||
|  | ||||
| if HAVE_AMD_DRIVERS | ||||
| SUBDIRS += amd | ||||
|   | ||||
| @@ -45,6 +45,8 @@ AMD_COMPILER_FILES = \ | ||||
| 	common/ac_llvm_util.c \ | ||||
| 	common/ac_llvm_util.h \ | ||||
| 	common/ac_shader_abi.h \ | ||||
| 	common/ac_shader_info.c \ | ||||
| 	common/ac_shader_info.h \ | ||||
| 	common/ac_shader_util.c \ | ||||
| 	common/ac_shader_util.h | ||||
|  | ||||
|   | ||||
| @@ -1054,7 +1054,7 @@ ADDR_E_RETURNCODE ADDR_API AddrComputePrtInfo( | ||||
| */ | ||||
| ADDR_E_RETURNCODE ADDR_API AddrGetMaxAlignments( | ||||
|     ADDR_HANDLE                     hLib, ///< address lib handle | ||||
|     ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut) ///< [out] output structure | ||||
|     ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) ///< [out] output structure | ||||
| { | ||||
|     Addr::Lib* pLib = Lib::GetLib(hLib); | ||||
|  | ||||
| @@ -1072,36 +1072,6 @@ ADDR_E_RETURNCODE ADDR_API AddrGetMaxAlignments( | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   AddrGetMaxMetaAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Convert maximum alignments for metadata | ||||
| * | ||||
| *   @return | ||||
| *       ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| ADDR_E_RETURNCODE ADDR_API AddrGetMaxMetaAlignments( | ||||
|     ADDR_HANDLE                     hLib, ///< address lib handle | ||||
|     ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut) ///< [out] output structure | ||||
| { | ||||
|     Addr::Lib* pLib = Lib::GetLib(hLib); | ||||
|  | ||||
|     ADDR_E_RETURNCODE returnCode = ADDR_OK; | ||||
|  | ||||
|     if (pLib != NULL) | ||||
|     { | ||||
|         returnCode = pLib->GetMaxMetaAlignments(pOut); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         returnCode = ADDR_ERROR; | ||||
|     } | ||||
|  | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
|   | ||||
| @@ -528,8 +528,7 @@ typedef union _ADDR_SURFACE_FLAGS | ||||
|         UINT_32 preferEquation       : 1; ///< Return equation index without adjusting tile mode | ||||
|         UINT_32 matchStencilTileCfg  : 1; ///< Select tile index of stencil as well as depth surface | ||||
|                                           ///  to make sure they share same tile config parameters | ||||
|         UINT_32 disallowLargeThickDegrade   : 1;    ///< Disallow large thick tile degrade | ||||
|         UINT_32 reserved             : 1; ///< Reserved bits | ||||
|         UINT_32 reserved             : 2; ///< Reserved bits | ||||
|     }; | ||||
|  | ||||
|     UINT_32 value; | ||||
| @@ -2274,7 +2273,7 @@ typedef struct _ADDR_COMPUTE_DCCINFO_INPUT | ||||
| typedef struct _ADDR_COMPUTE_DCCINFO_OUTPUT | ||||
| { | ||||
|     UINT_32 size;                 ///< Size of this structure in bytes | ||||
|     UINT_32 dccRamBaseAlign;      ///< Base alignment of dcc key | ||||
|     UINT_64 dccRamBaseAlign;      ///< Base alignment of dcc key | ||||
|     UINT_64 dccRamSize;           ///< Size of dcc key | ||||
|     UINT_64 dccFastClearSize;     ///< Size of dcc key portion that can be fast cleared | ||||
|     BOOL_32 subLvlCompressible;   ///< Whether sub resource is compressiable | ||||
| @@ -2299,17 +2298,17 @@ ADDR_E_RETURNCODE ADDR_API AddrComputeDccInfo( | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   ADDR_GET_MAX_ALINGMENTS_OUTPUT | ||||
| *   ADDR_GET_MAX_ALIGNMENTS_OUTPUT | ||||
| * | ||||
| *   @brief | ||||
| *       Output structure of AddrGetMaxAlignments | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| typedef struct _ADDR_GET_MAX_ALINGMENTS_OUTPUT | ||||
| typedef struct _ADDR_GET_MAX_ALIGNMENTS_OUTPUT | ||||
| { | ||||
|     UINT_32 size;                   ///< Size of this structure in bytes | ||||
|     UINT_32 baseAlign;              ///< Maximum base alignment in bytes | ||||
| } ADDR_GET_MAX_ALINGMENTS_OUTPUT; | ||||
|     UINT_64 baseAlign;              ///< Maximum base alignment in bytes | ||||
| } ADDR_GET_MAX_ALIGNMENTS_OUTPUT; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| @@ -2321,19 +2320,9 @@ typedef struct _ADDR_GET_MAX_ALINGMENTS_OUTPUT | ||||
| */ | ||||
| ADDR_E_RETURNCODE ADDR_API AddrGetMaxAlignments( | ||||
|     ADDR_HANDLE                     hLib, | ||||
|     ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut); | ||||
|     ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut); | ||||
|  | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   AddrGetMaxMetaAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Gets maximnum alignments for metadata | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| ADDR_E_RETURNCODE ADDR_API AddrGetMaxMetaAlignments( | ||||
|     ADDR_HANDLE                     hLib, | ||||
|     ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut); | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| @@ -2377,25 +2366,22 @@ typedef union _ADDR2_SURFACE_FLAGS | ||||
| { | ||||
|     struct | ||||
|     { | ||||
|         UINT_32 color             :  1; ///< This resource is a color buffer, can be used with RTV | ||||
|         UINT_32 depth             :  1; ///< Thie resource is a depth buffer, can be used with DSV | ||||
|         UINT_32 stencil           :  1; ///< Thie resource is a stencil buffer, can be used with DSV | ||||
|         UINT_32 fmask             :  1; ///< This is an fmask surface | ||||
|         UINT_32 overlay           :  1; ///< This is an overlay surface | ||||
|         UINT_32 display           :  1; ///< This resource is displable, can be used with DRV | ||||
|         UINT_32 prt               :  1; ///< This is a partially resident texture | ||||
|         UINT_32 qbStereo          :  1; ///< This is a quad buffer stereo surface | ||||
|         UINT_32 interleaved       :  1; ///< Special flag for interleaved YUV surface padding | ||||
|         UINT_32 texture           :  1; ///< This resource can be used with SRV | ||||
|         UINT_32 unordered         :  1; ///< This resource can be used with UAV | ||||
|         UINT_32 rotated           :  1; ///< This resource is rotated and displable | ||||
|         UINT_32 needEquation      :  1; ///< This resource needs equation to be generated if possible | ||||
|         UINT_32 opt4space         :  1; ///< This resource should be optimized for space | ||||
|         UINT_32 minimizeAlign     :  1; ///< This resource should use minimum alignment | ||||
|         UINT_32 noMetadata        :  1; ///< This resource has no metadata | ||||
|         UINT_32 metaRbUnaligned   :  1; ///< This resource has rb unaligned metadata | ||||
|         UINT_32 metaPipeUnaligned :  1; ///< This resource has pipe unaligned metadata | ||||
|         UINT_32 reserved          : 14; ///< Reserved bits | ||||
|         UINT_32 color         :  1; ///< This resource is a color buffer, can be used with RTV | ||||
|         UINT_32 depth         :  1; ///< Thie resource is a depth buffer, can be used with DSV | ||||
|         UINT_32 stencil       :  1; ///< Thie resource is a stencil buffer, can be used with DSV | ||||
|         UINT_32 fmask         :  1; ///< This is an fmask surface | ||||
|         UINT_32 overlay       :  1; ///< This is an overlay surface | ||||
|         UINT_32 display       :  1; ///< This resource is displable, can be used with DRV | ||||
|         UINT_32 prt           :  1; ///< This is a partially resident texture | ||||
|         UINT_32 qbStereo      :  1; ///< This is a quad buffer stereo surface | ||||
|         UINT_32 interleaved   :  1; ///< Special flag for interleaved YUV surface padding | ||||
|         UINT_32 texture       :  1; ///< This resource can be used with SRV | ||||
|         UINT_32 unordered     :  1; ///< This resource can be used with UAV | ||||
|         UINT_32 rotated       :  1; ///< This resource is rotated and displable | ||||
|         UINT_32 needEquation  :  1; ///< This resource needs equation to be generated if possible | ||||
|         UINT_32 opt4space     :  1; ///< This resource should be optimized for space | ||||
|         UINT_32 minimizeAlign :  1; ///< This resource should use minimum alignment | ||||
|         UINT_32 reserved      : 17; ///< Reserved bits | ||||
|     }; | ||||
|  | ||||
|     UINT_32 value; | ||||
|   | ||||
| @@ -76,7 +76,7 @@ typedef int            INT; | ||||
|  | ||||
| #ifndef ADDR_STDCALL | ||||
|     #if defined(__GNUC__) | ||||
|         #if defined(__amd64__) || defined(__x86_64__) | ||||
|         #if defined(__AMD64__) | ||||
|             #define ADDR_STDCALL | ||||
|         #else | ||||
|             #define ADDR_STDCALL __attribute__((stdcall)) | ||||
| @@ -87,9 +87,7 @@ typedef int            INT; | ||||
| #endif | ||||
|  | ||||
| #ifndef ADDR_FASTCALL | ||||
|     #if defined(BRAHMA_ARM) | ||||
|         #define ADDR_FASTCALL | ||||
|     #elif defined(__GNUC__) | ||||
|     #if defined(__GNUC__) | ||||
|         #if defined(__i386__) | ||||
|             #define ADDR_FASTCALL __attribute__((regparm(0))) | ||||
|         #else | ||||
|   | ||||
| @@ -79,14 +79,12 @@ | ||||
| #define AMDGPU_POLARIS10_RANGE  0x50, 0x5A | ||||
| #define AMDGPU_POLARIS11_RANGE  0x5A, 0x64 | ||||
| #define AMDGPU_POLARIS12_RANGE  0x64, 0x6E | ||||
| #define AMDGPU_VEGAM_RANGE      0x6E, 0xFF | ||||
|  | ||||
| #define AMDGPU_CARRIZO_RANGE    0x01, 0x21 | ||||
| #define AMDGPU_BRISTOL_RANGE    0x10, 0x21 | ||||
| #define AMDGPU_STONEY_RANGE     0x61, 0xFF | ||||
|  | ||||
| #define AMDGPU_VEGA10_RANGE     0x01, 0x14 | ||||
| #define AMDGPU_VEGA12_RANGE     0x14, 0x28 | ||||
|  | ||||
| #define AMDGPU_RAVEN_RANGE      0x01, 0x81 | ||||
|  | ||||
| @@ -118,7 +116,6 @@ | ||||
| #define ASICREV_IS_POLARIS10_P(r)      ASICREV_IS(r, POLARIS10) | ||||
| #define ASICREV_IS_POLARIS11_M(r)      ASICREV_IS(r, POLARIS11) | ||||
| #define ASICREV_IS_POLARIS12_V(r)      ASICREV_IS(r, POLARIS12) | ||||
| #define ASICREV_IS_VEGAM_P(r)          ASICREV_IS(r, VEGAM) | ||||
|  | ||||
| #define ASICREV_IS_CARRIZO(r)          ASICREV_IS(r, CARRIZO) | ||||
| #define ASICREV_IS_CARRIZO_BRISTOL(r)  ASICREV_IS(r, BRISTOL) | ||||
| @@ -126,8 +123,6 @@ | ||||
|  | ||||
| #define ASICREV_IS_VEGA10_M(r)         ASICREV_IS(r, VEGA10) | ||||
| #define ASICREV_IS_VEGA10_P(r)         ASICREV_IS(r, VEGA10) | ||||
| #define ASICREV_IS_VEGA12_P(r)         ASICREV_IS(r, VEGA12) | ||||
| #define ASICREV_IS_VEGA12_p(r)         ASICREV_IS(r, VEGA12) | ||||
|  | ||||
| #define ASICREV_IS_RAVEN(r)            ASICREV_IS(r, RAVEN) | ||||
|  | ||||
|   | ||||
| @@ -285,12 +285,10 @@ ADDR_E_RETURNCODE Lib::Create( | ||||
|     { | ||||
|         pCreateOut->numEquations = | ||||
|             pLib->HwlGetEquationTableInfo(&pCreateOut->pEquationTable); | ||||
|  | ||||
|         pLib->SetMaxAlignments(); | ||||
|  | ||||
|     } | ||||
|     else if ((pLib == NULL) && | ||||
|              (returnCode == ADDR_OK)) | ||||
|  | ||||
|     if ((pLib == NULL) && | ||||
|         (returnCode == ADDR_OK)) | ||||
|     { | ||||
|         // Unknown failures, we return the general error code | ||||
|         returnCode = ADDR_ERROR; | ||||
| @@ -338,23 +336,6 @@ VOID Lib::SetMinPitchAlignPixels( | ||||
|     m_minPitchAlignPixels = (minPitchAlignPixels == 0) ? 1 : minPitchAlignPixels; | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   Lib::SetMaxAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Set max alignments | ||||
| * | ||||
| *   @return | ||||
| *      N/A | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| VOID Lib::SetMaxAlignments() | ||||
| { | ||||
|     m_maxBaseAlign     = HwlComputeMaxBaseAlignments(); | ||||
|     m_maxMetaBaseAlign = HwlComputeMaxMetaBaseAlignments(); | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   Lib::GetLib | ||||
| @@ -377,21 +358,21 @@ Lib* Lib::GetLib( | ||||
| *   Lib::GetMaxAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Gets maximum alignments for data surface (include FMask) | ||||
| *       Gets maximum alignments | ||||
| * | ||||
| *   @return | ||||
| *       ADDR_E_RETURNCODE | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| ADDR_E_RETURNCODE Lib::GetMaxAlignments( | ||||
|     ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut    ///< [out] output structure | ||||
|     ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     ADDR_E_RETURNCODE returnCode = ADDR_OK; | ||||
|  | ||||
|     if (GetFillSizeFieldsFlags() == TRUE) | ||||
|     { | ||||
|         if (pOut->size != sizeof(ADDR_GET_MAX_ALINGMENTS_OUTPUT)) | ||||
|         if (pOut->size != sizeof(ADDR_GET_MAX_ALIGNMENTS_OUTPUT)) | ||||
|         { | ||||
|             returnCode = ADDR_PARAMSIZEMISMATCH; | ||||
|         } | ||||
| @@ -399,54 +380,7 @@ ADDR_E_RETURNCODE Lib::GetMaxAlignments( | ||||
|  | ||||
|     if (returnCode == ADDR_OK) | ||||
|     { | ||||
|         if (m_maxBaseAlign != 0) | ||||
|         { | ||||
|             pOut->baseAlign = m_maxBaseAlign; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             returnCode = ADDR_NOTIMPLEMENTED; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   Lib::GetMaxMetaAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Gets maximum alignments for metadata (CMask, DCC and HTile) | ||||
| * | ||||
| *   @return | ||||
| *       ADDR_E_RETURNCODE | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| ADDR_E_RETURNCODE Lib::GetMaxMetaAlignments( | ||||
|     ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     ADDR_E_RETURNCODE returnCode = ADDR_OK; | ||||
|  | ||||
|     if (GetFillSizeFieldsFlags() == TRUE) | ||||
|     { | ||||
|         if (pOut->size != sizeof(ADDR_GET_MAX_ALINGMENTS_OUTPUT)) | ||||
|         { | ||||
|             returnCode = ADDR_PARAMSIZEMISMATCH; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (returnCode == ADDR_OK) | ||||
|     { | ||||
|         if (m_maxMetaBaseAlign != 0) | ||||
|         { | ||||
|             pOut->baseAlign = m_maxMetaBaseAlign; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             returnCode = ADDR_NOTIMPLEMENTED; | ||||
|         } | ||||
|         returnCode = HwlGetMaxAlignments(pOut); | ||||
|     } | ||||
|  | ||||
|     return returnCode; | ||||
|   | ||||
| @@ -282,38 +282,14 @@ public: | ||||
|  | ||||
|     BOOL_32 GetExportNorm(const ELEM_GETEXPORTNORM_INPUT* pIn) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE GetMaxAlignments(ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE GetMaxMetaAlignments(ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut) const; | ||||
|     ADDR_E_RETURNCODE GetMaxAlignments(ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) const; | ||||
|  | ||||
| protected: | ||||
|     Lib();  // Constructor is protected | ||||
|     Lib(const Client* pClient); | ||||
|  | ||||
|     /// Pure virtual function to get max base alignments | ||||
|     virtual UINT_32 HwlComputeMaxBaseAlignments() const = 0; | ||||
|  | ||||
|     /// Gets maximum alignements for metadata | ||||
|     virtual UINT_32 HwlComputeMaxMetaBaseAlignments() const | ||||
|     { | ||||
|         ADDR_NOT_IMPLEMENTED(); | ||||
|  | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     VOID ValidBaseAlignments(UINT_32 alignment) const | ||||
|     { | ||||
| #if DEBUG | ||||
|         ADDR_ASSERT(alignment <= m_maxBaseAlign); | ||||
| #endif | ||||
|     } | ||||
|  | ||||
|     VOID ValidMetaBaseAlignments(UINT_32 metaAlignment) const | ||||
|     { | ||||
| #if DEBUG | ||||
|         ADDR_ASSERT(metaAlignment <= m_maxMetaBaseAlign); | ||||
| #endif | ||||
|     } | ||||
|     /// Pure virtual function to get max alignments | ||||
|     virtual ADDR_E_RETURNCODE HwlGetMaxAlignments(ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) const = 0; | ||||
|  | ||||
|     // | ||||
|     // Initialization | ||||
| @@ -365,8 +341,6 @@ private: | ||||
|  | ||||
|     VOID SetMinPitchAlignPixels(UINT_32 minPitchAlignPixels); | ||||
|  | ||||
|     VOID SetMaxAlignments(); | ||||
|  | ||||
| protected: | ||||
|     LibClass    m_class;        ///< Store class type (HWL type) | ||||
|  | ||||
| @@ -396,10 +370,6 @@ protected: | ||||
|  | ||||
|     UINT_32     m_minPitchAlignPixels;  ///< Minimum pitch alignment in pixels | ||||
|     UINT_32     m_maxSamples;           ///< Max numSamples | ||||
|  | ||||
|     UINT_32     m_maxBaseAlign;         ///< Max base alignment for data surface | ||||
|     UINT_32     m_maxMetaBaseAlign;     ///< Max base alignment for metadata | ||||
|  | ||||
| private: | ||||
|     ElemLib*    m_pElemLib;             ///< Element Lib pointer | ||||
| }; | ||||
|   | ||||
| @@ -428,8 +428,6 @@ ADDR_E_RETURNCODE Lib::ComputeSurfaceInfo( | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     ValidBaseAlignments(pOut->baseAlign); | ||||
|  | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| @@ -897,8 +895,6 @@ ADDR_E_RETURNCODE Lib::ComputeFmaskInfo( | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     ValidBaseAlignments(pOut->baseAlign); | ||||
|  | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| @@ -1337,8 +1333,6 @@ ADDR_E_RETURNCODE Lib::ComputeHtileInfo( | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     ValidMetaBaseAlignments(pOut->baseAlign); | ||||
|  | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| @@ -1405,8 +1399,6 @@ ADDR_E_RETURNCODE Lib::ComputeCmaskInfo( | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     ValidMetaBaseAlignments(pOut->baseAlign); | ||||
|  | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| @@ -1451,11 +1443,9 @@ ADDR_E_RETURNCODE Lib::ComputeDccInfo( | ||||
|             pIn = &input; | ||||
|         } | ||||
|  | ||||
|         if (ret == ADDR_OK) | ||||
|         if (ADDR_OK == ret) | ||||
|         { | ||||
|             ret = HwlComputeDccInfo(pIn, pOut); | ||||
|  | ||||
|             ValidMetaBaseAlignments(pOut->dccRamBaseAlign); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -3662,7 +3652,7 @@ VOID Lib::OptimizeTileMode( | ||||
|                         tileMode = (thickness == 1) ? | ||||
|                                    ADDR_TM_1D_TILED_THIN1 : ADDR_TM_1D_TILED_THICK; | ||||
|                     } | ||||
|                     else if ((thickness > 1) && (pInOut->flags.disallowLargeThickDegrade == 0)) | ||||
|                     else if (thickness > 1) | ||||
|                     { | ||||
|                         // As in the following HwlComputeSurfaceInfo, thick modes may be degraded to | ||||
|                         // thinner modes, we should re-evaluate whether the corresponding | ||||
|   | ||||
| @@ -295,8 +295,6 @@ ADDR_E_RETURNCODE Lib::ComputeSurfaceInfo( | ||||
|  | ||||
|     ADDR_ASSERT(pOut->surfSize != 0); | ||||
|  | ||||
|     ValidBaseAlignments(pOut->baseAlign); | ||||
|  | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| @@ -449,8 +447,6 @@ ADDR_E_RETURNCODE Lib::ComputeHtileInfo( | ||||
|     else | ||||
|     { | ||||
|         returnCode = HwlComputeHtileInfo(pIn, pOut); | ||||
|  | ||||
|         ValidMetaBaseAlignments(pOut->baseAlign); | ||||
|     } | ||||
|  | ||||
|     return returnCode; | ||||
| @@ -549,8 +545,6 @@ ADDR_E_RETURNCODE Lib::ComputeCmaskInfo( | ||||
|     else | ||||
|     { | ||||
|         returnCode = HwlComputeCmaskInfo(pIn, pOut); | ||||
|  | ||||
|         ValidMetaBaseAlignments(pOut->baseAlign); | ||||
|     } | ||||
|  | ||||
|     return returnCode; | ||||
| @@ -694,8 +688,6 @@ ADDR_E_RETURNCODE Lib::ComputeFmaskInfo( | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     ValidBaseAlignments(pOut->baseAlign); | ||||
|  | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| @@ -772,8 +764,6 @@ ADDR_E_RETURNCODE Lib::ComputeDccInfo( | ||||
|     else | ||||
|     { | ||||
|         returnCode = HwlComputeDccInfo(pIn, pOut); | ||||
|  | ||||
|         ValidMetaBaseAlignments(pOut->dccRamBaseAlign); | ||||
|     } | ||||
|  | ||||
|     return returnCode; | ||||
|   | ||||
| @@ -480,6 +480,12 @@ protected: | ||||
|         return HwlGetEquationIndex(pIn, pOut); | ||||
|     } | ||||
|  | ||||
|     virtual UINT_32 HwlComputeSurfaceBaseAlign(AddrSwizzleMode swizzleMode) const | ||||
|     { | ||||
|         ADDR_NOT_IMPLEMENTED(); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputePipeBankXor( | ||||
|         const ADDR2_COMPUTE_PIPEBANKXOR_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_PIPEBANKXOR_OUTPUT*      pOut) const | ||||
|   | ||||
| @@ -189,10 +189,10 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeHtileInfo( | ||||
|  | ||||
|     numCompressBlkPerMetaBlk = 1 << numCompressBlkPerMetaBlkLog2; | ||||
|  | ||||
|     Dim3d   metaBlkDim   = {8, 8, 1}; | ||||
|     Dim3d metaBlkDim = {8, 8, 1}; | ||||
|     UINT_32 totalAmpBits = numCompressBlkPerMetaBlkLog2; | ||||
|     UINT_32 widthAmp     = (pIn->numMipLevels > 1) ? (totalAmpBits >> 1) : RoundHalf(totalAmpBits); | ||||
|     UINT_32 heightAmp    = totalAmpBits - widthAmp; | ||||
|     UINT_32 widthAmp = (pIn->numMipLevels > 1) ? (totalAmpBits >> 1) : RoundHalf(totalAmpBits); | ||||
|     UINT_32 heightAmp = totalAmpBits - widthAmp; | ||||
|     metaBlkDim.w <<= widthAmp; | ||||
|     metaBlkDim.h <<= heightAmp; | ||||
|  | ||||
| @@ -221,42 +221,39 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeHtileInfo( | ||||
|                    pIn->unalignedWidth, pIn->unalignedHeight, pIn->numSlices, | ||||
|                    &numMetaBlkX, &numMetaBlkY, &numMetaBlkZ); | ||||
|  | ||||
|     const UINT_32 metaBlkSize = numCompressBlkPerMetaBlk << 2; | ||||
|     UINT_32       align       = numPipeTotal * numRbTotal * m_pipeInterleaveBytes; | ||||
|  | ||||
|     if ((IsXor(pIn->swizzleMode) == FALSE) && (numPipeTotal > 2)) | ||||
|     { | ||||
|         align *= (numPipeTotal >> 1); | ||||
|     } | ||||
|  | ||||
|     align = Max(align, metaBlkSize); | ||||
|  | ||||
|     if (m_settings.metaBaseAlignFix) | ||||
|     { | ||||
|         align = Max(align, GetBlockSize(pIn->swizzleMode)); | ||||
|     } | ||||
|     UINT_32 sizeAlign = numPipeTotal * numRbTotal * m_pipeInterleaveBytes; | ||||
|  | ||||
|     if (m_settings.htileAlignFix) | ||||
|     { | ||||
|         const INT_32 metaBlkSizeLog2        = numCompressBlkPerMetaBlkLog2 + 2; | ||||
|         const INT_32 htileCachelineSizeLog2 = 11; | ||||
|         const INT_32 maxNumOfRbMaskBits     = 1 + Log2(numPipeTotal) + Log2(numRbTotal); | ||||
|  | ||||
|         INT_32 rbMaskPadding = Max(0, htileCachelineSizeLog2 - (metaBlkSizeLog2 - maxNumOfRbMaskBits)); | ||||
|  | ||||
|         align <<= rbMaskPadding; | ||||
|         sizeAlign <<= 1; | ||||
|     } | ||||
|  | ||||
|     pOut->pitch      = numMetaBlkX * metaBlkDim.w; | ||||
|     pOut->height     = numMetaBlkY * metaBlkDim.h; | ||||
|     pOut->sliceSize  = numMetaBlkX * numMetaBlkY * metaBlkSize; | ||||
|     pOut->sliceSize  = numMetaBlkX * numMetaBlkY * numCompressBlkPerMetaBlk * 4; | ||||
|  | ||||
|     pOut->metaBlkWidth       = metaBlkDim.w; | ||||
|     pOut->metaBlkHeight      = metaBlkDim.h; | ||||
|     pOut->metaBlkWidth = metaBlkDim.w; | ||||
|     pOut->metaBlkHeight = metaBlkDim.h; | ||||
|     pOut->metaBlkNumPerSlice = numMetaBlkX * numMetaBlkY; | ||||
|  | ||||
|     pOut->baseAlign  = align; | ||||
|     pOut->htileBytes = PowTwoAlign(pOut->sliceSize * numMetaBlkZ, align); | ||||
|     pOut->baseAlign = Max(numCompressBlkPerMetaBlk * 4, sizeAlign); | ||||
|  | ||||
|     if (m_settings.metaBaseAlignFix) | ||||
|     { | ||||
|         pOut->baseAlign = Max(pOut->baseAlign, GetBlockSize(pIn->swizzleMode)); | ||||
|     } | ||||
|  | ||||
|     if ((IsXor(pIn->swizzleMode) == FALSE) && (numPipeTotal > 2)) | ||||
|     { | ||||
|         UINT_32 additionalAlign = numPipeTotal * numCompressBlkPerMetaBlk * 2; | ||||
|  | ||||
|         if (additionalAlign > sizeAlign) | ||||
|         { | ||||
|             sizeAlign = additionalAlign; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     pOut->htileBytes = PowTwoAlign(pOut->sliceSize * numMetaBlkZ, sizeAlign); | ||||
|  | ||||
|     return ADDR_OK; | ||||
| } | ||||
| @@ -336,17 +333,17 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeCmaskInfo( | ||||
|  | ||||
|     UINT_32 sizeAlign = numPipeTotal * numRbTotal * m_pipeInterleaveBytes; | ||||
|  | ||||
|     if (m_settings.metaBaseAlignFix) | ||||
|     { | ||||
|         sizeAlign = Max(sizeAlign, GetBlockSize(pIn->swizzleMode)); | ||||
|     } | ||||
|  | ||||
|     pOut->pitch      = numMetaBlkX * metaBlkDim.w; | ||||
|     pOut->height     = numMetaBlkY * metaBlkDim.h; | ||||
|     pOut->sliceSize  = (numMetaBlkX * numMetaBlkY * numCompressBlkPerMetaBlk) >> 1; | ||||
|     pOut->cmaskBytes = PowTwoAlign(pOut->sliceSize * numMetaBlkZ, sizeAlign); | ||||
|     pOut->baseAlign  = Max(numCompressBlkPerMetaBlk >> 1, sizeAlign); | ||||
|  | ||||
|     if (m_settings.metaBaseAlignFix) | ||||
|     { | ||||
|         pOut->baseAlign = Max(pOut->baseAlign, GetBlockSize(pIn->swizzleMode)); | ||||
|     } | ||||
|  | ||||
|     pOut->metaBlkWidth = metaBlkDim.w; | ||||
|     pOut->metaBlkHeight = metaBlkDim.h; | ||||
|  | ||||
| @@ -641,16 +638,16 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeDccInfo( | ||||
|             sizeAlign *= (numFrags / m_maxCompFrag); | ||||
|         } | ||||
|  | ||||
|         if (m_settings.metaBaseAlignFix) | ||||
|         { | ||||
|             sizeAlign = Max(sizeAlign, GetBlockSize(pIn->swizzleMode)); | ||||
|         } | ||||
|  | ||||
|         pOut->dccRamSize = numMetaBlkX * numMetaBlkY * numMetaBlkZ * | ||||
|                            numCompressBlkPerMetaBlk * numFrags; | ||||
|         pOut->dccRamSize = PowTwoAlign(pOut->dccRamSize, sizeAlign); | ||||
|         pOut->dccRamBaseAlign = Max(numCompressBlkPerMetaBlk, sizeAlign); | ||||
|  | ||||
|         if (m_settings.metaBaseAlignFix) | ||||
|         { | ||||
|             pOut->dccRamBaseAlign = Max(pOut->dccRamBaseAlign, GetBlockSize(pIn->swizzleMode)); | ||||
|         } | ||||
|  | ||||
|         pOut->pitch = numMetaBlkX * metaBlkDim.w; | ||||
|         pOut->height = numMetaBlkY * metaBlkDim.h; | ||||
|         pOut->depth = numMetaBlkZ * metaBlkDim.d; | ||||
| @@ -673,78 +670,21 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeDccInfo( | ||||
|  | ||||
| /** | ||||
| ************************************************************************************************************************ | ||||
| *   Gfx9Lib::HwlComputeMaxBaseAlignments | ||||
| *   Gfx9Lib::HwlGetMaxAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Gets maximum alignments | ||||
| *   @return | ||||
| *       maximum alignments | ||||
| *       ADDR_E_RETURNCODE | ||||
| ************************************************************************************************************************ | ||||
| */ | ||||
| UINT_32 Gfx9Lib::HwlComputeMaxBaseAlignments() const | ||||
| ADDR_E_RETURNCODE Gfx9Lib::HwlGetMaxAlignments( | ||||
|     ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     return ComputeSurfaceBaseAlignTiled(ADDR_SW_64KB); | ||||
| } | ||||
|     pOut->baseAlign = HwlComputeSurfaceBaseAlign(ADDR_SW_64KB); | ||||
|  | ||||
| /** | ||||
| ************************************************************************************************************************ | ||||
| *   Gfx9Lib::HwlComputeMaxMetaBaseAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Gets maximum alignments for metadata | ||||
| *   @return | ||||
| *       maximum alignments for metadata | ||||
| ************************************************************************************************************************ | ||||
| */ | ||||
| UINT_32 Gfx9Lib::HwlComputeMaxMetaBaseAlignments() const | ||||
| { | ||||
|     // Max base alignment for Htile | ||||
|     const UINT_32 maxNumPipeTotal = GetPipeNumForMetaAddressing(TRUE, ADDR_SW_64KB_Z); | ||||
|     const UINT_32 maxNumRbTotal   = m_se * m_rbPerSe; | ||||
|  | ||||
|     // If applyAliasFix was set, the extra bits should be MAX(10u, m_pipeInterleaveLog2), | ||||
|     // but we never saw any ASIC whose m_pipeInterleaveLog2 != 8, so just put an assertion and simply the logic. | ||||
|     ADDR_ASSERT((m_settings.applyAliasFix == FALSE) || (m_pipeInterleaveLog2 <= 10u)); | ||||
|     const UINT_32 maxNumCompressBlkPerMetaBlk = 1u << (m_seLog2 + m_rbPerSeLog2 + 10u); | ||||
|  | ||||
|     UINT_32 maxBaseAlignHtile = maxNumPipeTotal * maxNumRbTotal * m_pipeInterleaveBytes; | ||||
|  | ||||
|     if (maxNumPipeTotal > 2) | ||||
|     { | ||||
|         maxBaseAlignHtile *= (maxNumPipeTotal >> 1); | ||||
|     } | ||||
|  | ||||
|     maxBaseAlignHtile = Max(maxNumCompressBlkPerMetaBlk << 2, maxBaseAlignHtile); | ||||
|  | ||||
|     if (m_settings.metaBaseAlignFix) | ||||
|     { | ||||
|         maxBaseAlignHtile = Max(maxBaseAlignHtile, GetBlockSize(ADDR_SW_64KB)); | ||||
|     } | ||||
|  | ||||
|     if (m_settings.htileAlignFix) | ||||
|     { | ||||
|         maxBaseAlignHtile *= maxNumPipeTotal; | ||||
|     } | ||||
|  | ||||
|     // Max base alignment for Cmask will not be larger than that for Htile, no need to calculate | ||||
|  | ||||
|     // Max base alignment for 2D Dcc will not be larger than that for 3D, no need to calculate | ||||
|     UINT_32 maxBaseAlignDcc3D = 65536; | ||||
|  | ||||
|     if ((maxNumPipeTotal > 1) || (maxNumRbTotal > 1)) | ||||
|     { | ||||
|         maxBaseAlignDcc3D = Min(m_se * m_rbPerSe * 262144, 65536 * 128u); | ||||
|     } | ||||
|  | ||||
|     // Max base alignment for Msaa Dcc | ||||
|     UINT_32 maxBaseAlignDccMsaa = maxNumPipeTotal * maxNumRbTotal * m_pipeInterleaveBytes * (8 / m_maxCompFrag); | ||||
|  | ||||
|     if (m_settings.metaBaseAlignFix) | ||||
|     { | ||||
|         maxBaseAlignDccMsaa = Max(maxBaseAlignDccMsaa, GetBlockSize(ADDR_SW_64KB)); | ||||
|     } | ||||
|  | ||||
|     return Max(maxBaseAlignHtile, Max(maxBaseAlignDccMsaa, maxBaseAlignDcc3D)); | ||||
|     return ADDR_OK; | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -784,11 +724,9 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeCmaskAddrFromCoord( | ||||
|         UINT_32 metaBlkWidthLog2      = Log2(output.metaBlkWidth); | ||||
|         UINT_32 metaBlkHeightLog2     = Log2(output.metaBlkHeight); | ||||
|  | ||||
|         MetaEqParams metaEqParams = {0, fmaskElementBytesLog2, 0, pIn->cMaskFlags, | ||||
|                                      Gfx9DataFmask, pIn->swizzleMode, pIn->resourceType, | ||||
|                                      metaBlkWidthLog2, metaBlkHeightLog2, 0, 3, 3, 0}; | ||||
|  | ||||
|         const CoordEq* pMetaEq = GetMetaEquation(metaEqParams); | ||||
|         const CoordEq* pMetaEq = GetMetaEquation({0, fmaskElementBytesLog2, 0, pIn->cMaskFlags, | ||||
|                                                   Gfx9DataFmask, pIn->swizzleMode, pIn->resourceType, | ||||
|                                                   metaBlkWidthLog2, metaBlkHeightLog2, 0, 3, 3, 0}); | ||||
|  | ||||
|         UINT_32 xb = pIn->x / output.metaBlkWidth; | ||||
|         UINT_32 yb = pIn->y / output.metaBlkHeight; | ||||
| @@ -860,11 +798,9 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeHtileAddrFromCoord( | ||||
|             UINT_32 metaBlkHeightLog2 = Log2(output.metaBlkHeight); | ||||
|             UINT_32 numSamplesLog2    = Log2(pIn->numSamples); | ||||
|  | ||||
|             MetaEqParams metaEqParams = {0, elementBytesLog2, numSamplesLog2, pIn->hTileFlags, | ||||
|                                          Gfx9DataDepthStencil, pIn->swizzleMode, ADDR_RSRC_TEX_2D, | ||||
|                                          metaBlkWidthLog2, metaBlkHeightLog2, 0, 3, 3, 0}; | ||||
|  | ||||
|             const CoordEq* pMetaEq = GetMetaEquation(metaEqParams); | ||||
|             const CoordEq* pMetaEq = GetMetaEquation({0, elementBytesLog2, numSamplesLog2, pIn->hTileFlags, | ||||
|                                                       Gfx9DataDepthStencil, pIn->swizzleMode, ADDR_RSRC_TEX_2D, | ||||
|                                                       metaBlkWidthLog2, metaBlkHeightLog2, 0, 3, 3, 0}); | ||||
|  | ||||
|             UINT_32 xb = pIn->x / output.metaBlkWidth; | ||||
|             UINT_32 yb = pIn->y / output.metaBlkHeight; | ||||
| @@ -934,11 +870,9 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeHtileCoordFromAddr( | ||||
|             UINT_32 metaBlkHeightLog2 = Log2(output.metaBlkHeight); | ||||
|             UINT_32 numSamplesLog2    = Log2(pIn->numSamples); | ||||
|  | ||||
|             MetaEqParams metaEqParams = {0, elementBytesLog2, numSamplesLog2, pIn->hTileFlags, | ||||
|                                          Gfx9DataDepthStencil, pIn->swizzleMode, ADDR_RSRC_TEX_2D, | ||||
|                                          metaBlkWidthLog2, metaBlkHeightLog2, 0, 3, 3, 0}; | ||||
|  | ||||
|             const CoordEq* pMetaEq = GetMetaEquation(metaEqParams); | ||||
|             const CoordEq* pMetaEq = GetMetaEquation({0, elementBytesLog2, numSamplesLog2, pIn->hTileFlags, | ||||
|                                                       Gfx9DataDepthStencil, pIn->swizzleMode, ADDR_RSRC_TEX_2D, | ||||
|                                                       metaBlkWidthLog2, metaBlkHeightLog2, 0, 3, 3, 0}); | ||||
|  | ||||
|             UINT_32 numPipeBits = GetPipeLog2ForMetaAddressing(pIn->hTileFlags.pipeAligned, | ||||
|                                                                pIn->swizzleMode); | ||||
| @@ -1014,12 +948,10 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeDccAddrFromCoord( | ||||
|             UINT_32 compBlkHeightLog2 = Log2(output.compressBlkHeight); | ||||
|             UINT_32 compBlkDepthLog2  = Log2(output.compressBlkDepth); | ||||
|  | ||||
|             MetaEqParams metaEqParams = {pIn->mipId, elementBytesLog2, numSamplesLog2, pIn->dccKeyFlags, | ||||
|                                          Gfx9DataColor, pIn->swizzleMode, pIn->resourceType, | ||||
|                                          metaBlkWidthLog2, metaBlkHeightLog2, metaBlkDepthLog2, | ||||
|                                          compBlkWidthLog2, compBlkHeightLog2, compBlkDepthLog2}; | ||||
|  | ||||
|             const CoordEq* pMetaEq = GetMetaEquation(metaEqParams); | ||||
|             const CoordEq* pMetaEq = GetMetaEquation({pIn->mipId, elementBytesLog2, numSamplesLog2, pIn->dccKeyFlags, | ||||
|                                                       Gfx9DataColor, pIn->swizzleMode, pIn->resourceType, | ||||
|                                                       metaBlkWidthLog2, metaBlkHeightLog2, metaBlkDepthLog2, | ||||
|                                                       compBlkWidthLog2, compBlkHeightLog2, compBlkDepthLog2}); | ||||
|  | ||||
|             UINT_32 xb = pIn->x / output.metaBlkWidth; | ||||
|             UINT_32 yb = pIn->y / output.metaBlkHeight; | ||||
| @@ -1123,10 +1055,6 @@ BOOL_32 Gfx9Lib::HwlInitGlobalParams( | ||||
|                 break; | ||||
|         } | ||||
|  | ||||
|         // Addr::V2::Lib::ComputePipeBankXor()/ComputeSlicePipeBankXor() requires pipe interleave to be exactly 8 bits, | ||||
|         // and any larger value requires a post-process (left shift) on the output pipeBankXor bits. | ||||
|         ADDR_ASSERT(m_pipeInterleaveBytes == ADDR_PIPEINTERLEAVE_256B); | ||||
|  | ||||
|         switch (gbAddrConfig.bits.NUM_BANKS) | ||||
|         { | ||||
|             case ADDR_CONFIG_1_BANK: | ||||
| @@ -1223,19 +1151,6 @@ BOOL_32 Gfx9Lib::HwlInitGlobalParams( | ||||
|         ADDR_ASSERT((m_blockVarSizeLog2 == 0) || | ||||
|                     ((m_blockVarSizeLog2 >= 17u) && (m_blockVarSizeLog2 <= 20u))); | ||||
|         m_blockVarSizeLog2 = Min(Max(17u, m_blockVarSizeLog2), 20u); | ||||
|  | ||||
|         if ((m_rbPerSeLog2 == 1) && | ||||
|             (((m_pipesLog2 == 1) && ((m_seLog2 == 2) || (m_seLog2 == 3))) || | ||||
|              ((m_pipesLog2 == 2) && ((m_seLog2 == 1) || (m_seLog2 == 2))))) | ||||
|         { | ||||
|             ADDR_ASSERT(m_settings.isVega10 == FALSE); | ||||
|             ADDR_ASSERT(m_settings.isRaven == FALSE); | ||||
|  | ||||
|             if (m_settings.isVega12) | ||||
|             { | ||||
|                 m_settings.htileCacheRbConflict = 1; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     else | ||||
|     { | ||||
| @@ -1272,7 +1187,6 @@ ChipFamily Gfx9Lib::HwlConvertChipFamily( | ||||
|         case FAMILY_AI: | ||||
|             m_settings.isArcticIsland = 1; | ||||
|             m_settings.isVega10    = ASICREV_IS_VEGA10_P(uChipRevision); | ||||
|             m_settings.isVega12    = ASICREV_IS_VEGA12_P(uChipRevision); | ||||
|  | ||||
|             m_settings.isDce12 = 1; | ||||
|  | ||||
| @@ -3365,11 +3279,10 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlGetPreferredSurfaceSetting( | ||||
|             addrPreferredSwSet.value = AddrSwSetZ; | ||||
|             addrValidSwSet.value     = AddrSwSetZ; | ||||
|  | ||||
|             if (pIn->flags.noMetadata == FALSE) | ||||
|             if (pIn->flags.depth && pIn->flags.texture) | ||||
|             { | ||||
|                 if (pIn->flags.depth && | ||||
|                     pIn->flags.texture && | ||||
|                     (((bpp == 16) && (numFrags >= 4)) || ((bpp == 32) && (numFrags >= 2)))) | ||||
|                 if (((bpp == 16) && (numFrags >= 4)) || | ||||
|                     ((bpp == 32) && (numFrags >= 2))) | ||||
|                 { | ||||
|                     // When _X/_T swizzle mode was used for MSAA depth texture, TC will get zplane | ||||
|                     // equation from wrong address within memory range a tile covered and use the | ||||
| @@ -3377,16 +3290,6 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlGetPreferredSurfaceSetting( | ||||
|                     pOut->canXor = FALSE; | ||||
|                     prtXor       = FALSE; | ||||
|                 } | ||||
|  | ||||
|                 if (m_settings.htileCacheRbConflict && | ||||
|                     (pIn->flags.depth || pIn->flags.stencil) && | ||||
|                     (slice > 1) && | ||||
|                     (pIn->flags.metaRbUnaligned == FALSE) && | ||||
|                     (pIn->flags.metaPipeUnaligned == FALSE)) | ||||
|                 { | ||||
|                     // Z_X 2D array with Rb/Pipe aligned HTile won't have metadata cache coherency | ||||
|                     pOut->canXor = FALSE; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         else if (ElemLib::IsBlockCompressed(pIn->format)) | ||||
| @@ -3499,12 +3402,12 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlGetPreferredSurfaceSetting( | ||||
|                         if (pIn->bpp == 64) | ||||
|                         { | ||||
|                             addrPreferredSwSet.value = AddrSwSetD; | ||||
|                             addrValidSwSet.value     = AddrSwSetS | AddrSwSetD; | ||||
|                             addrValidSwSet.value     = AddrSwSetD; | ||||
|                         } | ||||
|                         else | ||||
|                         { | ||||
|                             addrPreferredSwSet.value = AddrSwSetS; | ||||
|                             addrValidSwSet.value     = AddrSwSetS; | ||||
|                             addrValidSwSet.value     = AddrSwSetS | AddrSwSetD; | ||||
|                         } | ||||
|  | ||||
|                         blockSet.micro = FALSE; | ||||
| @@ -4134,7 +4037,7 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeSurfaceInfoTiled( | ||||
|             pOut->sliceSize = static_cast<UINT_64>(pOut->mipChainPitch) * pOut->mipChainHeight * | ||||
|                               (pIn->bpp >> 3) * pIn->numFrags; | ||||
|             pOut->surfSize  = pOut->sliceSize * pOut->mipChainSlice; | ||||
|             pOut->baseAlign = ComputeSurfaceBaseAlignTiled(pIn->swizzleMode); | ||||
|             pOut->baseAlign = HwlComputeSurfaceBaseAlign(pIn->swizzleMode); | ||||
|  | ||||
|             if (pIn->flags.prt) | ||||
|             { | ||||
| @@ -4859,12 +4762,15 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeSurfaceAddrFromCoordTiled( | ||||
|             UINT_32 pitchInMacroBlock = localOut.mipChainPitch / localOut.blockWidth; | ||||
|             UINT_32 paddedHeightInMacroBlock = localOut.mipChainHeight / localOut.blockHeight; | ||||
|             UINT_32 sliceSizeInMacroBlock = pitchInMacroBlock * paddedHeightInMacroBlock; | ||||
|             UINT_64 macroBlockIndex = | ||||
|             UINT_32 macroBlockIndex = | ||||
|                 (pIn->slice + mipStartPos.d) * sliceSizeInMacroBlock + | ||||
|                 ((pIn->y / localOut.blockHeight) + mipStartPos.h) * pitchInMacroBlock + | ||||
|                 ((pIn->x / localOut.blockWidth) + mipStartPos.w); | ||||
|  | ||||
|             pOut->addr = blockOffset | (macroBlockIndex << log2blkSize); | ||||
|             UINT_64 macroBlockOffset = (static_cast<UINT_64>(macroBlockIndex) << | ||||
|                                        GetBlockSizeLog2(pIn->swizzleMode)); | ||||
|  | ||||
|             pOut->addr = blockOffset | macroBlockOffset; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
| @@ -4929,7 +4835,7 @@ ADDR_E_RETURNCODE Gfx9Lib::HwlComputeSurfaceAddrFromCoordTiled( | ||||
|             UINT_32 pitchInBlock = localOut.mipChainPitch / localOut.blockWidth; | ||||
|             UINT_32 sliceSizeInBlock = | ||||
|                 (localOut.mipChainHeight / localOut.blockHeight) * pitchInBlock; | ||||
|             UINT_64 blockIndex = zb * sliceSizeInBlock + yb * pitchInBlock + xb; | ||||
|             UINT_32 blockIndex = zb * sliceSizeInBlock + yb * pitchInBlock + xb; | ||||
|  | ||||
|             pOut->addr = blockOffset | (blockIndex << log2blkSize); | ||||
|         } | ||||
|   | ||||
| @@ -55,19 +55,19 @@ struct Gfx9ChipSettings | ||||
|         UINT_32 isArcticIsland      : 1; | ||||
|         UINT_32 isVega10            : 1; | ||||
|         UINT_32 isRaven             : 1; | ||||
|         UINT_32 isVega12            : 1; | ||||
|         UINT_32 reserved0           : 29; | ||||
|  | ||||
|         // Display engine IP version name | ||||
|         UINT_32 isDce12             : 1; | ||||
|         UINT_32 isDcn1              : 1; | ||||
|         UINT_32 reserved1           : 29; | ||||
|  | ||||
|         // Misc configuration bits | ||||
|         UINT_32 metaBaseAlignFix    : 1; | ||||
|         UINT_32 depthPipeXorDisable : 1; | ||||
|         UINT_32 htileAlignFix       : 1; | ||||
|         UINT_32 applyAliasFix       : 1; | ||||
|         UINT_32 htileCacheRbConflict: 1; | ||||
|         UINT_32 reserved2           : 27; | ||||
|         UINT_32 reserved2           : 28; | ||||
|     }; | ||||
| }; | ||||
|  | ||||
| @@ -121,6 +121,9 @@ public: | ||||
|         return (pMem != NULL) ? new (pMem) Gfx9Lib(pClient) : NULL; | ||||
|     } | ||||
|  | ||||
|     virtual BOOL_32 IsValidDisplaySwizzleMode( | ||||
|         const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn) const; | ||||
|  | ||||
| protected: | ||||
|     Gfx9Lib(const Client* pClient); | ||||
|     virtual ~Gfx9Lib(); | ||||
| @@ -221,7 +224,7 @@ protected: | ||||
|         AddrSwizzleMode swMode, | ||||
|         UINT_32 elementBytesLog2) const; | ||||
|  | ||||
|     UINT_32 ComputeSurfaceBaseAlignTiled(AddrSwizzleMode swizzleMode) const | ||||
|     virtual UINT_32 HwlComputeSurfaceBaseAlign(AddrSwizzleMode swizzleMode) const | ||||
|     { | ||||
|         UINT_32 baseAlign; | ||||
|  | ||||
| @@ -397,11 +400,11 @@ protected: | ||||
|     static const UINT_32    MaxCachedMetaEq = 2; | ||||
|  | ||||
| private: | ||||
|     virtual UINT_32 HwlComputeMaxBaseAlignments() const; | ||||
|     virtual ADDR_E_RETURNCODE HwlGetMaxAlignments( | ||||
|         ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) const; | ||||
|  | ||||
|     virtual UINT_32 HwlComputeMaxMetaBaseAlignments() const; | ||||
|  | ||||
|     virtual BOOL_32 HwlInitGlobalParams(const ADDR_CREATE_INPUT* pCreateIn); | ||||
|     virtual BOOL_32 HwlInitGlobalParams( | ||||
|         const ADDR_CREATE_INPUT* pCreateIn); | ||||
|  | ||||
|     VOID GetRbEquation(CoordEq* pRbEq, UINT_32 rbPerSeLog2, UINT_32 seLog2) const; | ||||
|  | ||||
| @@ -431,8 +434,6 @@ private: | ||||
|                         UINT_32 mip0Width, UINT_32 mip0Height, UINT_32 mip0Depth, | ||||
|                         UINT_32* pNumMetaBlkX, UINT_32* pNumMetaBlkY, UINT_32* pNumMetaBlkZ) const; | ||||
|  | ||||
|     BOOL_32 IsValidDisplaySwizzleMode(const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeSurfaceLinearPadding( | ||||
|         const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
|         UINT_32*                                pMipmap0PaddedWidth, | ||||
|   | ||||
| @@ -401,7 +401,6 @@ ChipFamily CiLib::HwlConvertChipFamily( | ||||
|             m_settings.isPolaris10       = ASICREV_IS_POLARIS10_P(uChipRevision); | ||||
|             m_settings.isPolaris11       = ASICREV_IS_POLARIS11_M(uChipRevision); | ||||
|             m_settings.isPolaris12       = ASICREV_IS_POLARIS12_V(uChipRevision); | ||||
|             m_settings.isVegaM           = ASICREV_IS_VEGAM_P(uChipRevision); | ||||
|             family = ADDR_CHIP_FAMILY_VI; | ||||
|             break; | ||||
|         case FAMILY_CZ: | ||||
| @@ -471,10 +470,6 @@ BOOL_32 CiLib::HwlInitGlobalParams( | ||||
|     { | ||||
|         m_pipes = 4; | ||||
|     } | ||||
|     else if (m_settings.isVegaM) | ||||
|     { | ||||
|         m_pipes = 16; | ||||
|     } | ||||
|  | ||||
|     if (valid) | ||||
|     { | ||||
| @@ -741,7 +736,7 @@ ADDR_E_RETURNCODE CiLib::HwlComputeSurfaceInfo( | ||||
|  | ||||
|                 SiLib::HwlComputeSurfaceInfo(&localIn, pOut); | ||||
|  | ||||
|                 ADDR_ASSERT((MinDepth2DThinIndex <= pOut->tileIndex) && (MaxDepth2DThinIndex >= pOut->tileIndex)); | ||||
|                 ADDR_ASSERT(((MinDepth2DThinIndex <= pOut->tileIndex) && (MaxDepth2DThinIndex >= pOut->tileIndex)) || pOut->tileIndex == Depth1DThinIndex); | ||||
|  | ||||
|                 depthStencil2DTileConfigMatch = DepthStencilTileCfgMatch(pIn, pOut); | ||||
|             } | ||||
| @@ -2162,27 +2157,29 @@ VOID CiLib::HwlPadDimensions( | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   CiLib::HwlComputeMaxBaseAlignments | ||||
| *   CiLib::HwlGetMaxAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Gets maximum alignments | ||||
| *   @return | ||||
| *       maximum alignments | ||||
| *       ADDR_E_RETURNCODE | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| UINT_32 CiLib::HwlComputeMaxBaseAlignments() const | ||||
| ADDR_E_RETURNCODE CiLib::HwlGetMaxAlignments( | ||||
|     ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     const UINT_32 pipes = HwlGetPipes(&m_tileTable[0].info); | ||||
|  | ||||
|     // Initial size is 64 KiB for PRT. | ||||
|     UINT_32 maxBaseAlign = 64 * 1024; | ||||
|     UINT_64 maxBaseAlign = 64 * 1024; | ||||
|  | ||||
|     for (UINT_32 i = 0; i < m_noOfMacroEntries; i++) | ||||
|     { | ||||
|         // The maximum tile size is 16 byte-per-pixel and either 8-sample or 8-slice. | ||||
|         UINT_32 tileSize = m_macroTileTable[i].tileSplitBytes; | ||||
|  | ||||
|         UINT_32 baseAlign = tileSize * pipes * m_macroTileTable[i].banks * | ||||
|         UINT_64 baseAlign = tileSize * pipes * m_macroTileTable[i].banks * | ||||
|                             m_macroTileTable[i].bankWidth * m_macroTileTable[i].bankHeight; | ||||
|  | ||||
|         if (baseAlign > maxBaseAlign) | ||||
| @@ -2191,32 +2188,12 @@ UINT_32 CiLib::HwlComputeMaxBaseAlignments() const | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return maxBaseAlign; | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   CiLib::HwlComputeMaxMetaBaseAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Gets maximum alignments for metadata | ||||
| *   @return | ||||
| *       maximum alignments for metadata | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| UINT_32 CiLib::HwlComputeMaxMetaBaseAlignments() const | ||||
| { | ||||
|     UINT_32 maxBank = 1; | ||||
|  | ||||
|     for (UINT_32 i = 0; i < m_noOfMacroEntries; i++) | ||||
|     if (pOut != NULL) | ||||
|     { | ||||
|         if ((m_settings.isVolcanicIslands) && IsMacroTiled(m_tileTable[i].mode)) | ||||
|         { | ||||
|             maxBank = Max(maxBank, m_macroTileTable[i].banks); | ||||
|         } | ||||
|         pOut->baseAlign = maxBaseAlign; | ||||
|     } | ||||
|  | ||||
|     return SiLib::HwlComputeMaxMetaBaseAlignments() * maxBank; | ||||
|     return ADDR_OK; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -137,9 +137,7 @@ protected: | ||||
|         const ADDR_COMPUTE_HTILE_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT*       pOut) const; | ||||
|  | ||||
|     virtual UINT_32 HwlComputeMaxBaseAlignments() const; | ||||
|  | ||||
|     virtual UINT_32 HwlComputeMaxMetaBaseAlignments() const; | ||||
|     virtual ADDR_E_RETURNCODE HwlGetMaxAlignments(ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) const; | ||||
|  | ||||
|     virtual VOID HwlPadDimensions( | ||||
|         AddrTileMode tileMode, UINT_32 bpp, ADDR_SURFACE_FLAGS flags, | ||||
|   | ||||
| @@ -100,13 +100,11 @@ BOOL_32 EgBasedLib::DispatchComputeSurfaceInfo( | ||||
|  | ||||
|     ADDR_TILEINFO       tileInfoDef   = {0}; | ||||
|     ADDR_TILEINFO*      pTileInfo     = &tileInfoDef; | ||||
|     UINT_32             padDims       = 0; | ||||
|  | ||||
|     UINT_32             padDims = 0; | ||||
|     BOOL_32             valid; | ||||
|  | ||||
|     if (pIn->flags.disallowLargeThickDegrade == 0) | ||||
|     { | ||||
|         tileMode = DegradeLargeThickTile(tileMode, bpp); | ||||
|     } | ||||
|     tileMode = DegradeLargeThickTile(tileMode, bpp); | ||||
|  | ||||
|     // Only override numSamples for NI above | ||||
|     if (m_chipFamily >= ADDR_CHIP_FAMILY_NI) | ||||
|   | ||||
| @@ -611,29 +611,6 @@ ADDR_E_RETURNCODE SiLib::ComputePipeEquation( | ||||
|             break; | ||||
|     } | ||||
|  | ||||
|     if (m_settings.isVegaM && (pEquation->numBits == 4)) | ||||
|     { | ||||
|         ADDR_CHANNEL_SETTING addeMsb = pAddr[0]; | ||||
|         ADDR_CHANNEL_SETTING xor1Msb = pXor1[0]; | ||||
|         ADDR_CHANNEL_SETTING xor2Msb = pXor2[0]; | ||||
|  | ||||
|         pAddr[0] = pAddr[1]; | ||||
|         pXor1[0] = pXor1[1]; | ||||
|         pXor2[0] = pXor2[1]; | ||||
|  | ||||
|         pAddr[1] = pAddr[2]; | ||||
|         pXor1[1] = pXor1[2]; | ||||
|         pXor2[1] = pXor2[2]; | ||||
|  | ||||
|         pAddr[2] = pAddr[3]; | ||||
|         pXor1[2] = pXor1[3]; | ||||
|         pXor2[2] = pXor2[3]; | ||||
|  | ||||
|         pAddr[3] = addeMsb; | ||||
|         pXor1[3] = xor1Msb; | ||||
|         pXor2[3] = xor2Msb; | ||||
|     } | ||||
|  | ||||
|     for (UINT_32 i = 0; i < pEquation->numBits; i++) | ||||
|     { | ||||
|         if (pAddr[i].value == 0) | ||||
| @@ -777,16 +754,6 @@ UINT_32 SiLib::ComputePipeFromCoord( | ||||
|             ADDR_UNHANDLED_CASE(); | ||||
|             break; | ||||
|     } | ||||
|  | ||||
|     if (m_settings.isVegaM && (numPipes == 16)) | ||||
|     { | ||||
|         UINT_32 pipeMsb = pipeBit0; | ||||
|         pipeBit0 = pipeBit1; | ||||
|         pipeBit1 = pipeBit2; | ||||
|         pipeBit2 = pipeBit3; | ||||
|         pipeBit3 = pipeMsb; | ||||
|     } | ||||
|  | ||||
|     pipe = pipeBit0 | (pipeBit1 << 1) | (pipeBit2 << 2) | (pipeBit3 << 3); | ||||
|  | ||||
|     UINT_32 microTileThickness = Thickness(tileMode); | ||||
| @@ -3501,20 +3468,22 @@ VOID SiLib::HwlSelectTileMode( | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   SiLib::HwlComputeMaxBaseAlignments | ||||
| *   SiLib::HwlGetMaxAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Gets maximum alignments | ||||
| *   @return | ||||
| *       maximum alignments | ||||
| *       ADDR_E_RETURNCODE | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| UINT_32 SiLib::HwlComputeMaxBaseAlignments() const | ||||
| ADDR_E_RETURNCODE SiLib::HwlGetMaxAlignments( | ||||
|     ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     const UINT_32 pipes = HwlGetPipes(&m_tileTable[0].info); | ||||
|  | ||||
|     // Initial size is 64 KiB for PRT. | ||||
|     UINT_32 maxBaseAlign = 64 * 1024; | ||||
|     UINT_64 maxBaseAlign = 64 * 1024; | ||||
|  | ||||
|     for (UINT_32 i = 0; i < m_noOfEntries; i++) | ||||
|     { | ||||
| @@ -3525,7 +3494,7 @@ UINT_32 SiLib::HwlComputeMaxBaseAlignments() const | ||||
|             UINT_32 tileSize = Min(m_tileTable[i].info.tileSplitBytes, | ||||
|                                    MicroTilePixels * 8 * 16); | ||||
|  | ||||
|             UINT_32 baseAlign = tileSize * pipes * m_tileTable[i].info.banks * | ||||
|             UINT_64 baseAlign = tileSize * pipes * m_tileTable[i].info.banks * | ||||
|                                 m_tileTable[i].info.bankWidth * m_tileTable[i].info.bankHeight; | ||||
|  | ||||
|             if (baseAlign > maxBaseAlign) | ||||
| @@ -3535,29 +3504,12 @@ UINT_32 SiLib::HwlComputeMaxBaseAlignments() const | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return maxBaseAlign; | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   SiLib::HwlComputeMaxMetaBaseAlignments | ||||
| * | ||||
| *   @brief | ||||
| *       Gets maximum alignments for metadata | ||||
| *   @return | ||||
| *       maximum alignments for metadata | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| UINT_32 SiLib::HwlComputeMaxMetaBaseAlignments() const | ||||
| { | ||||
|     UINT_32 maxPipe = 1; | ||||
|  | ||||
|     for (UINT_32 i = 0; i < m_noOfEntries; i++) | ||||
|     if (pOut != NULL) | ||||
|     { | ||||
|         maxPipe = Max(maxPipe, HwlGetPipes(&m_tileTable[i].info)); | ||||
|         pOut->baseAlign = maxBaseAlign; | ||||
|     } | ||||
|  | ||||
|     return m_pipeInterleaveBytes * maxPipe; | ||||
|     return ADDR_OK; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -87,7 +87,6 @@ struct SiChipSettings | ||||
|     UINT_32 isPolaris10       : 1; | ||||
|     UINT_32 isPolaris11       : 1; | ||||
|     UINT_32 isPolaris12       : 1; | ||||
|     UINT_32 isVegaM           : 1; | ||||
|     // VI fusion | ||||
|     UINT_32 isCarrizo         : 1; | ||||
| }; | ||||
| @@ -264,9 +263,7 @@ protected: | ||||
|         return TRUE; | ||||
|     } | ||||
|  | ||||
|     virtual UINT_32 HwlComputeMaxBaseAlignments() const; | ||||
|  | ||||
|     virtual UINT_32 HwlComputeMaxMetaBaseAlignments() const; | ||||
|     virtual ADDR_E_RETURNCODE HwlGetMaxAlignments(ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) const; | ||||
|  | ||||
|     virtual VOID HwlComputeSurfaceAlignmentsMacroTiled( | ||||
|         AddrTileMode tileMode, UINT_32 bpp, ADDR_SURFACE_FLAGS flags, | ||||
|   | ||||
| @@ -761,7 +761,7 @@ unsigned ac_get_wave_info(struct ac_wave_info waves[AC_MAX_WAVES_PER_CHIP]) | ||||
| 	char line[2000]; | ||||
| 	unsigned num_waves = 0; | ||||
|  | ||||
| 	FILE *p = popen("umr -O halt_waves -wa", "r"); | ||||
| 	FILE *p = popen("umr -wa", "r"); | ||||
| 	if (!p) | ||||
| 		return 0; | ||||
|  | ||||
|   | ||||
| @@ -98,10 +98,7 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| { | ||||
| 	struct amdgpu_buffer_size_alignments alignment_info = {}; | ||||
| 	struct amdgpu_heap_info vram, vram_vis, gtt; | ||||
| 	struct drm_amdgpu_info_hw_ip dma = {}, compute = {}, uvd = {}; | ||||
| 	struct drm_amdgpu_info_hw_ip uvd_enc = {}, vce = {}, vcn_dec = {}; | ||||
| 	struct drm_amdgpu_info_hw_ip vcn_enc = {}, gfx = {}; | ||||
| 	struct amdgpu_gds_resource_info gds = {}; | ||||
| 	struct drm_amdgpu_info_hw_ip dma = {}, compute = {}, uvd = {}, vce = {}, vcn_dec = {}, vcn_enc = {}; | ||||
| 	uint32_t vce_version = 0, vce_feature = 0, uvd_version = 0, uvd_feature = 0; | ||||
| 	int r, i, j; | ||||
| 	drmDevicePtr devinfo; | ||||
| @@ -157,12 +154,6 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	r = amdgpu_query_hw_ip_info(dev, AMDGPU_HW_IP_GFX, 0, &gfx); | ||||
| 	if (r) { | ||||
| 		fprintf(stderr, "amdgpu: amdgpu_query_hw_ip_info(gfx) failed.\n"); | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	r = amdgpu_query_hw_ip_info(dev, AMDGPU_HW_IP_COMPUTE, 0, &compute); | ||||
| 	if (r) { | ||||
| 		fprintf(stderr, "amdgpu: amdgpu_query_hw_ip_info(compute) failed.\n"); | ||||
| @@ -175,14 +166,6 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	if (info->drm_major == 3 && info->drm_minor >= 17) { | ||||
| 		r = amdgpu_query_hw_ip_info(dev, AMDGPU_HW_IP_UVD_ENC, 0, &uvd_enc); | ||||
| 		if (r) { | ||||
| 			fprintf(stderr, "amdgpu: amdgpu_query_hw_ip_info(uvd_enc) failed.\n"); | ||||
| 			return false; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if (info->drm_major == 3 && info->drm_minor >= 17) { | ||||
| 		r = amdgpu_query_hw_ip_info(dev, AMDGPU_HW_IP_VCN_DEC, 0, &vcn_dec); | ||||
| 		if (r) { | ||||
| @@ -243,18 +226,6 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	r = amdgpu_query_sw_info(dev, amdgpu_sw_info_address32_hi, &info->address32_hi); | ||||
| 	if (r) { | ||||
| 		fprintf(stderr, "amdgpu: amdgpu_query_sw_info(address32_hi) failed.\n"); | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	r = amdgpu_query_gds_info(dev, &gds); | ||||
| 	if (r) { | ||||
| 		fprintf(stderr, "amdgpu: amdgpu_query_gds_info failed.\n"); | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	/* Set chip identification. */ | ||||
| 	info->pci_id = amdinfo->asic_id; /* TODO: is this correct? */ | ||||
| 	info->vce_harvest_config = amdinfo->vce_harvest_config; | ||||
| @@ -290,8 +261,6 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 	info->gart_size = gtt.heap_size; | ||||
| 	info->vram_size = vram.heap_size; | ||||
| 	info->vram_vis_size = vram_vis.heap_size; | ||||
| 	info->gds_size = gds.gds_total_size; | ||||
| 	info->gds_gfx_partition_size = gds.gds_gfx_partition_size; | ||||
| 	/* The kernel can split large buffers in VRAM but not in GTT, so large | ||||
| 	 * allocations can fail or cause buffer movement failures in the kernel. | ||||
| 	 */ | ||||
| @@ -306,16 +275,11 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 		uvd.available_rings ? uvd_version : 0; | ||||
| 	info->vce_fw_version = | ||||
| 		vce.available_rings ? vce_version : 0; | ||||
| 	info->uvd_enc_supported = | ||||
| 		uvd_enc.available_rings ? true : false; | ||||
| 	info->has_userptr = true; | ||||
| 	info->has_syncobj = has_syncobj(fd); | ||||
| 	info->has_syncobj_wait_for_submit = info->has_syncobj && info->drm_minor >= 20; | ||||
| 	info->has_fence_to_handle = info->has_syncobj && info->drm_minor >= 21; | ||||
| 	info->has_ctx_priority = info->drm_minor >= 22; | ||||
| 	/* TODO: Enable this once the kernel handles it efficiently. */ | ||||
| 	info->has_local_buffers = info->drm_minor >= 20 && | ||||
| 				  !info->has_dedicated_vram; | ||||
| 	info->num_render_backends = amdinfo->rb_pipes; | ||||
| 	info->clock_crystal_freq = amdinfo->gpu_counter_freq; | ||||
| 	if (!info->clock_crystal_freq) { | ||||
| @@ -323,7 +287,6 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 		info->clock_crystal_freq = 1; | ||||
| 	} | ||||
| 	info->tcc_cache_line_size = 64; /* TC L2 line size on GCN */ | ||||
| 	info->gb_addr_config = amdinfo->gb_addr_cfg; | ||||
| 	if (info->chip_class == GFX9) { | ||||
| 		info->num_tile_pipes = 1 << G_0098F8_NUM_PIPES(amdinfo->gb_addr_cfg); | ||||
| 		info->pipe_interleave_bytes = | ||||
| @@ -333,10 +296,10 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 		info->pipe_interleave_bytes = | ||||
| 			256 << G_0098F8_PIPE_INTERLEAVE_SIZE_GFX6(amdinfo->gb_addr_cfg); | ||||
| 	} | ||||
| 	info->r600_has_virtual_memory = true; | ||||
| 	info->has_virtual_memory = true; | ||||
|  | ||||
| 	assert(util_is_power_of_two_or_zero(dma.available_rings + 1)); | ||||
| 	assert(util_is_power_of_two_or_zero(compute.available_rings + 1)); | ||||
| 	assert(util_is_power_of_two(dma.available_rings + 1)); | ||||
| 	assert(util_is_power_of_two(compute.available_rings + 1)); | ||||
|  | ||||
| 	info->num_sdma_rings = util_bitcount(dma.available_rings); | ||||
| 	info->num_compute_rings = util_bitcount(compute.available_rings); | ||||
| @@ -361,18 +324,6 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 	if (info->chip_class == SI) | ||||
| 		info->gfx_ib_pad_with_type2 = TRUE; | ||||
|  | ||||
| 	unsigned ib_align = 0; | ||||
| 	ib_align = MAX2(ib_align, gfx.ib_start_alignment); | ||||
| 	ib_align = MAX2(ib_align, compute.ib_start_alignment); | ||||
| 	ib_align = MAX2(ib_align, dma.ib_start_alignment); | ||||
| 	ib_align = MAX2(ib_align, uvd.ib_start_alignment); | ||||
| 	ib_align = MAX2(ib_align, uvd_enc.ib_start_alignment); | ||||
| 	ib_align = MAX2(ib_align, vce.ib_start_alignment); | ||||
| 	ib_align = MAX2(ib_align, vcn_dec.ib_start_alignment); | ||||
| 	ib_align = MAX2(ib_align, vcn_enc.ib_start_alignment); | ||||
|        assert(ib_align); | ||||
| 	info->ib_start_alignment = ib_align; | ||||
|  | ||||
| 	return true; | ||||
| } | ||||
|  | ||||
| @@ -406,118 +357,55 @@ void ac_compute_device_uuid(struct radeon_info *info, char *uuid, size_t size) | ||||
|  | ||||
| void ac_print_gpu_info(struct radeon_info *info) | ||||
| { | ||||
| 	printf("Device info:\n"); | ||||
| 	printf("    pci (domain:bus:dev.func): %04x:%02x:%02x.%x\n", | ||||
| 	printf("pci (domain:bus:dev.func): %04x:%02x:%02x.%x\n", | ||||
| 	       info->pci_domain, info->pci_bus, | ||||
| 	       info->pci_dev, info->pci_func); | ||||
| 	printf("    pci_id = 0x%x\n", info->pci_id); | ||||
| 	printf("    family = %i\n", info->family); | ||||
| 	printf("    chip_class = %i\n", info->chip_class); | ||||
| 	printf("    num_compute_rings = %u\n", info->num_compute_rings); | ||||
| 	printf("    num_sdma_rings = %i\n", info->num_sdma_rings); | ||||
| 	printf("    clock_crystal_freq = %i\n", info->clock_crystal_freq); | ||||
| 	printf("    tcc_cache_line_size = %u\n", info->tcc_cache_line_size); | ||||
|  | ||||
| 	printf("Memory info:\n"); | ||||
| 	printf("    pte_fragment_size = %u\n", info->pte_fragment_size); | ||||
| 	printf("    gart_page_size = %u\n", info->gart_page_size); | ||||
| 	printf("    gart_size = %i MB\n", (int)DIV_ROUND_UP(info->gart_size, 1024*1024)); | ||||
| 	printf("    vram_size = %i MB\n", (int)DIV_ROUND_UP(info->vram_size, 1024*1024)); | ||||
| 	printf("    vram_vis_size = %i MB\n", (int)DIV_ROUND_UP(info->vram_vis_size, 1024*1024)); | ||||
| 	printf("    gds_size = %u kB\n", info->gds_size / 1024); | ||||
| 	printf("    gds_gfx_partition_size = %u kB\n", info->gds_gfx_partition_size / 1024); | ||||
| 	printf("    max_alloc_size = %i MB\n", | ||||
| 	printf("pci_id = 0x%x\n", info->pci_id); | ||||
| 	printf("family = %i\n", info->family); | ||||
| 	printf("chip_class = %i\n", info->chip_class); | ||||
| 	printf("pte_fragment_size = %u\n", info->pte_fragment_size); | ||||
| 	printf("gart_page_size = %u\n", info->gart_page_size); | ||||
| 	printf("gart_size = %i MB\n", (int)DIV_ROUND_UP(info->gart_size, 1024*1024)); | ||||
| 	printf("vram_size = %i MB\n", (int)DIV_ROUND_UP(info->vram_size, 1024*1024)); | ||||
| 	printf("vram_vis_size = %i MB\n", (int)DIV_ROUND_UP(info->vram_vis_size, 1024*1024)); | ||||
| 	printf("max_alloc_size = %i MB\n", | ||||
| 	       (int)DIV_ROUND_UP(info->max_alloc_size, 1024*1024)); | ||||
| 	printf("    min_alloc_size = %u\n", info->min_alloc_size); | ||||
| 	printf("    address32_hi = %u\n", info->address32_hi); | ||||
| 	printf("    has_dedicated_vram = %u\n", info->has_dedicated_vram); | ||||
|  | ||||
| 	printf("CP info:\n"); | ||||
| 	printf("    gfx_ib_pad_with_type2 = %i\n", info->gfx_ib_pad_with_type2); | ||||
| 	printf("    ib_start_alignment = %u\n", info->ib_start_alignment); | ||||
| 	printf("    me_fw_version = %i\n", info->me_fw_version); | ||||
| 	printf("    me_fw_feature = %i\n", info->me_fw_feature); | ||||
| 	printf("    pfp_fw_version = %i\n", info->pfp_fw_version); | ||||
| 	printf("    pfp_fw_feature = %i\n", info->pfp_fw_feature); | ||||
| 	printf("    ce_fw_version = %i\n", info->ce_fw_version); | ||||
| 	printf("    ce_fw_feature = %i\n", info->ce_fw_feature); | ||||
|  | ||||
| 	printf("Multimedia info:\n"); | ||||
| 	printf("    has_hw_decode = %u\n", info->has_hw_decode); | ||||
| 	printf("    uvd_enc_supported = %u\n", info->uvd_enc_supported); | ||||
| 	printf("    uvd_fw_version = %u\n", info->uvd_fw_version); | ||||
| 	printf("    vce_fw_version = %u\n", info->vce_fw_version); | ||||
| 	printf("    vce_harvest_config = %i\n", info->vce_harvest_config); | ||||
|  | ||||
| 	printf("Kernel info:\n"); | ||||
| 	printf("    drm = %i.%i.%i\n", info->drm_major, | ||||
| 	printf("min_alloc_size = %u\n", info->min_alloc_size); | ||||
| 	printf("has_dedicated_vram = %u\n", info->has_dedicated_vram); | ||||
| 	printf("has_virtual_memory = %i\n", info->has_virtual_memory); | ||||
| 	printf("gfx_ib_pad_with_type2 = %i\n", info->gfx_ib_pad_with_type2); | ||||
| 	printf("has_hw_decode = %u\n", info->has_hw_decode); | ||||
| 	printf("num_sdma_rings = %i\n", info->num_sdma_rings); | ||||
| 	printf("num_compute_rings = %u\n", info->num_compute_rings); | ||||
| 	printf("uvd_fw_version = %u\n", info->uvd_fw_version); | ||||
| 	printf("vce_fw_version = %u\n", info->vce_fw_version); | ||||
| 	printf("me_fw_version = %i\n", info->me_fw_version); | ||||
| 	printf("me_fw_feature = %i\n", info->me_fw_feature); | ||||
| 	printf("pfp_fw_version = %i\n", info->pfp_fw_version); | ||||
| 	printf("pfp_fw_feature = %i\n", info->pfp_fw_feature); | ||||
| 	printf("ce_fw_version = %i\n", info->ce_fw_version); | ||||
| 	printf("ce_fw_feature = %i\n", info->ce_fw_feature); | ||||
| 	printf("vce_harvest_config = %i\n", info->vce_harvest_config); | ||||
| 	printf("clock_crystal_freq = %i\n", info->clock_crystal_freq); | ||||
| 	printf("tcc_cache_line_size = %u\n", info->tcc_cache_line_size); | ||||
| 	printf("drm = %i.%i.%i\n", info->drm_major, | ||||
| 	       info->drm_minor, info->drm_patchlevel); | ||||
| 	printf("    has_userptr = %i\n", info->has_userptr); | ||||
| 	printf("    has_syncobj = %u\n", info->has_syncobj); | ||||
| 	printf("    has_syncobj_wait_for_submit = %u\n", info->has_syncobj_wait_for_submit); | ||||
| 	printf("    has_fence_to_handle = %u\n", info->has_fence_to_handle); | ||||
| 	printf("    has_ctx_priority = %u\n", info->has_ctx_priority); | ||||
| 	printf("    has_local_buffers = %u\n", info->has_local_buffers); | ||||
| 	printf("has_userptr = %i\n", info->has_userptr); | ||||
| 	printf("has_syncobj = %u\n", info->has_syncobj); | ||||
| 	printf("has_fence_to_handle = %u\n", info->has_fence_to_handle); | ||||
|  | ||||
| 	printf("Shader core info:\n"); | ||||
| 	printf("    max_shader_clock = %i\n", info->max_shader_clock); | ||||
| 	printf("    num_good_compute_units = %i\n", info->num_good_compute_units); | ||||
| 	printf("    max_se = %i\n", info->max_se); | ||||
| 	printf("    max_sh_per_se = %i\n", info->max_sh_per_se); | ||||
| 	printf("r600_max_quad_pipes = %i\n", info->r600_max_quad_pipes); | ||||
| 	printf("max_shader_clock = %i\n", info->max_shader_clock); | ||||
| 	printf("num_good_compute_units = %i\n", info->num_good_compute_units); | ||||
| 	printf("max_se = %i\n", info->max_se); | ||||
| 	printf("max_sh_per_se = %i\n", info->max_sh_per_se); | ||||
|  | ||||
| 	printf("Render backend info:\n"); | ||||
| 	printf("    num_render_backends = %i\n", info->num_render_backends); | ||||
| 	printf("    num_tile_pipes = %i\n", info->num_tile_pipes); | ||||
| 	printf("    pipe_interleave_bytes = %i\n", info->pipe_interleave_bytes); | ||||
| 	printf("    enabled_rb_mask = 0x%x\n", info->enabled_rb_mask); | ||||
| 	printf("    max_alignment = %u\n", (unsigned)info->max_alignment); | ||||
|  | ||||
| 	printf("GB_ADDR_CONFIG:\n"); | ||||
| 	if (info->chip_class >= GFX9) { | ||||
| 		printf("    num_pipes = %u\n", | ||||
| 		       1 << G_0098F8_NUM_PIPES(info->gb_addr_config)); | ||||
| 		printf("    pipe_interleave_size = %u\n", | ||||
| 		       256 << G_0098F8_PIPE_INTERLEAVE_SIZE_GFX9(info->gb_addr_config)); | ||||
| 		printf("    max_compressed_frags = %u\n", | ||||
| 		       1 << G_0098F8_MAX_COMPRESSED_FRAGS(info->gb_addr_config)); | ||||
| 		printf("    bank_interleave_size = %u\n", | ||||
| 		       1 << G_0098F8_BANK_INTERLEAVE_SIZE(info->gb_addr_config)); | ||||
| 		printf("    num_banks = %u\n", | ||||
| 		       1 << G_0098F8_NUM_BANKS(info->gb_addr_config)); | ||||
| 		printf("    shader_engine_tile_size = %u\n", | ||||
| 		       16 << G_0098F8_SHADER_ENGINE_TILE_SIZE(info->gb_addr_config)); | ||||
| 		printf("    num_shader_engines = %u\n", | ||||
| 		       1 << G_0098F8_NUM_SHADER_ENGINES_GFX9(info->gb_addr_config)); | ||||
| 		printf("    num_gpus = %u (raw)\n", | ||||
| 		       G_0098F8_NUM_GPUS_GFX9(info->gb_addr_config)); | ||||
| 		printf("    multi_gpu_tile_size = %u (raw)\n", | ||||
| 		       G_0098F8_MULTI_GPU_TILE_SIZE(info->gb_addr_config)); | ||||
| 		printf("    num_rb_per_se = %u\n", | ||||
| 		       1 << G_0098F8_NUM_RB_PER_SE(info->gb_addr_config)); | ||||
| 		printf("    row_size = %u\n", | ||||
| 		       1024 << G_0098F8_ROW_SIZE(info->gb_addr_config)); | ||||
| 		printf("    num_lower_pipes = %u (raw)\n", | ||||
| 		       G_0098F8_NUM_LOWER_PIPES(info->gb_addr_config)); | ||||
| 		printf("    se_enable = %u (raw)\n", | ||||
| 		       G_0098F8_SE_ENABLE(info->gb_addr_config)); | ||||
| 	} else { | ||||
| 		printf("    num_pipes = %u\n", | ||||
| 		       1 << G_0098F8_NUM_PIPES(info->gb_addr_config)); | ||||
| 		printf("    pipe_interleave_size = %u\n", | ||||
| 		       256 << G_0098F8_PIPE_INTERLEAVE_SIZE_GFX6(info->gb_addr_config)); | ||||
| 		printf("    bank_interleave_size = %u\n", | ||||
| 		       1 << G_0098F8_BANK_INTERLEAVE_SIZE(info->gb_addr_config)); | ||||
| 		printf("    num_shader_engines = %u\n", | ||||
| 		       1 << G_0098F8_NUM_SHADER_ENGINES_GFX6(info->gb_addr_config)); | ||||
| 		printf("    shader_engine_tile_size = %u\n", | ||||
| 		       16 << G_0098F8_SHADER_ENGINE_TILE_SIZE(info->gb_addr_config)); | ||||
| 		printf("    num_gpus = %u (raw)\n", | ||||
| 		       G_0098F8_NUM_GPUS_GFX6(info->gb_addr_config)); | ||||
| 		printf("    multi_gpu_tile_size = %u (raw)\n", | ||||
| 		       G_0098F8_MULTI_GPU_TILE_SIZE(info->gb_addr_config)); | ||||
| 		printf("    row_size = %u\n", | ||||
| 		       1024 << G_0098F8_ROW_SIZE(info->gb_addr_config)); | ||||
| 		printf("    num_lower_pipes = %u (raw)\n", | ||||
| 		       G_0098F8_NUM_LOWER_PIPES(info->gb_addr_config)); | ||||
| 	} | ||||
| 	printf("r600_gb_backend_map = %i\n", info->r600_gb_backend_map); | ||||
| 	printf("r600_gb_backend_map_valid = %i\n", info->r600_gb_backend_map_valid); | ||||
| 	printf("r600_num_banks = %i\n", info->r600_num_banks); | ||||
| 	printf("num_render_backends = %i\n", info->num_render_backends); | ||||
| 	printf("num_tile_pipes = %i\n", info->num_tile_pipes); | ||||
| 	printf("pipe_interleave_bytes = %i\n", info->pipe_interleave_bytes); | ||||
| 	printf("enabled_rb_mask = 0x%x\n", info->enabled_rb_mask); | ||||
| 	printf("max_alignment = %u\n", (unsigned)info->max_alignment); | ||||
| } | ||||
|   | ||||
| @@ -50,41 +50,30 @@ struct radeon_info { | ||||
| 	uint32_t                    pci_id; | ||||
| 	enum radeon_family          family; | ||||
| 	enum chip_class             chip_class; | ||||
| 	uint32_t                    num_compute_rings; | ||||
| 	uint32_t                    num_sdma_rings; | ||||
| 	uint32_t                    clock_crystal_freq; | ||||
| 	uint32_t                    tcc_cache_line_size; | ||||
|  | ||||
| 	/* Memory info. */ | ||||
| 	uint32_t                    pte_fragment_size; | ||||
| 	uint32_t                    gart_page_size; | ||||
| 	uint64_t                    gart_size; | ||||
| 	uint64_t                    vram_size; | ||||
| 	uint64_t                    vram_vis_size; | ||||
| 	unsigned                    gds_size; | ||||
| 	unsigned                    gds_gfx_partition_size; | ||||
| 	uint64_t                    max_alloc_size; | ||||
| 	uint32_t                    min_alloc_size; | ||||
| 	uint32_t                    address32_hi; | ||||
| 	bool                        has_dedicated_vram; | ||||
| 	bool                        r600_has_virtual_memory; | ||||
|  | ||||
| 	/* CP info. */ | ||||
| 	bool                        has_virtual_memory; | ||||
| 	bool                        gfx_ib_pad_with_type2; | ||||
| 	unsigned                    ib_start_alignment; | ||||
| 	bool                        has_hw_decode; | ||||
| 	uint32_t                    num_sdma_rings; | ||||
| 	uint32_t                    num_compute_rings; | ||||
| 	uint32_t                    uvd_fw_version; | ||||
| 	uint32_t                    vce_fw_version; | ||||
| 	uint32_t                    me_fw_version; | ||||
| 	uint32_t                    me_fw_feature; | ||||
| 	uint32_t                    pfp_fw_version; | ||||
| 	uint32_t                    pfp_fw_feature; | ||||
| 	uint32_t                    ce_fw_version; | ||||
| 	uint32_t                    ce_fw_feature; | ||||
|  | ||||
| 	/* Multimedia info. */ | ||||
| 	bool                        has_hw_decode; | ||||
| 	bool                        uvd_enc_supported; | ||||
| 	uint32_t                    uvd_fw_version; | ||||
| 	uint32_t                    vce_fw_version; | ||||
| 	uint32_t                    vce_harvest_config; | ||||
| 	uint32_t                    clock_crystal_freq; | ||||
| 	uint32_t                    tcc_cache_line_size; | ||||
|  | ||||
| 	/* Kernel info. */ | ||||
| 	uint32_t                    drm_major; /* version */ | ||||
| @@ -95,7 +84,6 @@ struct radeon_info { | ||||
| 	bool                        has_syncobj_wait_for_submit; | ||||
| 	bool                        has_fence_to_handle; | ||||
| 	bool                        has_ctx_priority; | ||||
| 	bool                        has_local_buffers; | ||||
|  | ||||
| 	/* Shader cores. */ | ||||
| 	uint32_t                    r600_max_quad_pipes; /* wave size / 16 */ | ||||
| @@ -110,13 +98,12 @@ struct radeon_info { | ||||
| 	uint32_t                    r600_gb_backend_map; /* R600 harvest config */ | ||||
| 	bool                        r600_gb_backend_map_valid; | ||||
| 	uint32_t                    r600_num_banks; | ||||
| 	uint32_t                    gb_addr_config; | ||||
| 	uint32_t                    num_render_backends; | ||||
| 	uint32_t                    num_tile_pipes; /* pipe count from PIPE_CONFIG */ | ||||
| 	uint32_t                    pipe_interleave_bytes; | ||||
| 	uint32_t                    enabled_rb_mask; /* GCN harvest config */ | ||||
| 	uint64_t                    max_alignment; /* from addrlib */ | ||||
|  | ||||
| 	uint64_t                    max_alignment; /* from addrlib */ | ||||
| 	/* Tile modes. */ | ||||
| 	uint32_t                    si_tile_mode_array[32]; | ||||
| 	uint32_t                    cik_macrotile_mode_array[16]; | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -27,24 +27,17 @@ | ||||
|  | ||||
| #include <stdbool.h> | ||||
| #include <llvm-c/TargetMachine.h> | ||||
| #include "compiler/nir/nir.h" | ||||
|  | ||||
| #include "amd_family.h" | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #define HAVE_32BIT_POINTERS (HAVE_LLVM >= 0x0700) | ||||
|  | ||||
| enum { | ||||
| 	/* CONST is the only address space that selects SMEM loads */ | ||||
| 	AC_CONST_ADDR_SPACE = HAVE_LLVM >= 0x700 ? 4 : 2, | ||||
| 	AC_LOCAL_ADDR_SPACE = 3, | ||||
| 	AC_CONST_32BIT_ADDR_SPACE = 6, /* same as CONST, but the pointer type has 32 bits */ | ||||
| }; | ||||
|  | ||||
| struct ac_llvm_flow; | ||||
|  | ||||
| struct ac_llvm_context { | ||||
| 	LLVMContextRef context; | ||||
| 	LLVMModuleRef module; | ||||
| @@ -56,11 +49,9 @@ struct ac_llvm_context { | ||||
| 	LLVMTypeRef i16; | ||||
| 	LLVMTypeRef i32; | ||||
| 	LLVMTypeRef i64; | ||||
| 	LLVMTypeRef intptr; | ||||
| 	LLVMTypeRef f16; | ||||
| 	LLVMTypeRef f32; | ||||
| 	LLVMTypeRef f64; | ||||
| 	LLVMTypeRef v2i16; | ||||
| 	LLVMTypeRef v2i32; | ||||
| 	LLVMTypeRef v3i32; | ||||
| 	LLVMTypeRef v4i32; | ||||
| @@ -79,10 +70,6 @@ struct ac_llvm_context { | ||||
| 	LLVMValueRef i1true; | ||||
| 	LLVMValueRef i1false; | ||||
|  | ||||
| 	struct ac_llvm_flow *flow; | ||||
| 	unsigned flow_depth; | ||||
| 	unsigned flow_depth_max; | ||||
|  | ||||
| 	unsigned range_md_kind; | ||||
| 	unsigned invariant_load_md_kind; | ||||
| 	unsigned uniform_md_kind; | ||||
| @@ -100,15 +87,9 @@ void | ||||
| ac_llvm_context_init(struct ac_llvm_context *ctx, LLVMContextRef context, | ||||
| 		     enum chip_class chip_class, enum radeon_family family); | ||||
|  | ||||
| void | ||||
| ac_llvm_context_dispose(struct ac_llvm_context *ctx); | ||||
|  | ||||
| int | ||||
| ac_get_llvm_num_components(LLVMValueRef value); | ||||
|  | ||||
| int | ||||
| ac_get_elem_bits(struct ac_llvm_context *ctx, LLVMTypeRef type); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_llvm_extract_elem(struct ac_llvm_context *ac, | ||||
| 		     LLVMValueRef value, | ||||
| @@ -136,8 +117,6 @@ ac_build_phi(struct ac_llvm_context *ctx, LLVMTypeRef type, | ||||
| void ac_build_optimization_barrier(struct ac_llvm_context *ctx, | ||||
| 				   LLVMValueRef *pvgpr); | ||||
|  | ||||
| LLVMValueRef ac_build_shader_clock(struct ac_llvm_context *ctx); | ||||
|  | ||||
| LLVMValueRef ac_build_ballot(struct ac_llvm_context *ctx, LLVMValueRef value); | ||||
|  | ||||
| LLVMValueRef ac_build_vote_all(struct ac_llvm_context *ctx, LLVMValueRef value); | ||||
| @@ -161,9 +140,6 @@ LLVMValueRef | ||||
| ac_build_gather_values(struct ac_llvm_context *ctx, | ||||
| 		       LLVMValueRef *values, | ||||
| 		       unsigned value_count); | ||||
| LLVMValueRef ac_build_expand_to_vec4(struct ac_llvm_context *ctx, | ||||
| 				     LLVMValueRef value, | ||||
| 				     unsigned num_channels); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_fdiv(struct ac_llvm_context *ctx, | ||||
| @@ -238,20 +214,8 @@ LLVMValueRef ac_build_buffer_load_format(struct ac_llvm_context *ctx, | ||||
| 					 LLVMValueRef rsrc, | ||||
| 					 LLVMValueRef vindex, | ||||
| 					 LLVMValueRef voffset, | ||||
| 					 unsigned num_channels, | ||||
| 					 bool glc, | ||||
| 					 bool can_speculate); | ||||
|  | ||||
| /* load_format that handles the stride & element count better if idxen is | ||||
|  * disabled by LLVM. */ | ||||
| LLVMValueRef ac_build_buffer_load_format_gfx9_safe(struct ac_llvm_context *ctx, | ||||
|                                                   LLVMValueRef rsrc, | ||||
|                                                   LLVMValueRef vindex, | ||||
|                                                   LLVMValueRef voffset, | ||||
|                                                   unsigned num_channels, | ||||
|                                                   bool glc, | ||||
|                                                   bool can_speculate); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_get_thread_id(struct ac_llvm_context *ctx); | ||||
|  | ||||
| @@ -288,10 +252,6 @@ LLVMValueRef ac_build_fmin(struct ac_llvm_context *ctx, LLVMValueRef a, | ||||
| 			   LLVMValueRef b); | ||||
| LLVMValueRef ac_build_fmax(struct ac_llvm_context *ctx, LLVMValueRef a, | ||||
| 			   LLVMValueRef b); | ||||
| LLVMValueRef ac_build_imin(struct ac_llvm_context *ctx, LLVMValueRef a, | ||||
| 			   LLVMValueRef b); | ||||
| LLVMValueRef ac_build_imax(struct ac_llvm_context *ctx, LLVMValueRef a, | ||||
| 			   LLVMValueRef b); | ||||
| LLVMValueRef ac_build_umin(struct ac_llvm_context *ctx, LLVMValueRef a, LLVMValueRef b); | ||||
| LLVMValueRef ac_build_clamp(struct ac_llvm_context *ctx, LLVMValueRef value); | ||||
|  | ||||
| @@ -306,84 +266,36 @@ struct ac_export_args { | ||||
|  | ||||
| void ac_build_export(struct ac_llvm_context *ctx, struct ac_export_args *a); | ||||
|  | ||||
| void ac_build_export_null(struct ac_llvm_context *ctx); | ||||
|  | ||||
| enum ac_image_opcode { | ||||
| 	ac_image_sample, | ||||
| 	ac_image_gather4, | ||||
| 	ac_image_load, | ||||
| 	ac_image_load_mip, | ||||
| 	ac_image_store, | ||||
| 	ac_image_store_mip, | ||||
| 	ac_image_get_lod, | ||||
| 	ac_image_get_resinfo, | ||||
| 	ac_image_atomic, | ||||
| 	ac_image_atomic_cmpswap, | ||||
| }; | ||||
|  | ||||
| enum ac_atomic_op { | ||||
| 	ac_atomic_swap, | ||||
| 	ac_atomic_add, | ||||
| 	ac_atomic_sub, | ||||
| 	ac_atomic_smin, | ||||
| 	ac_atomic_umin, | ||||
| 	ac_atomic_smax, | ||||
| 	ac_atomic_umax, | ||||
| 	ac_atomic_and, | ||||
| 	ac_atomic_or, | ||||
| 	ac_atomic_xor, | ||||
| }; | ||||
|  | ||||
| enum ac_image_dim { | ||||
| 	ac_image_1d, | ||||
| 	ac_image_2d, | ||||
| 	ac_image_3d, | ||||
| 	ac_image_cube, // includes cube arrays | ||||
| 	ac_image_1darray, | ||||
| 	ac_image_2darray, | ||||
| 	ac_image_2dmsaa, | ||||
| 	ac_image_2darraymsaa, | ||||
| }; | ||||
|  | ||||
| /* These cache policy bits match the definitions used by the LLVM intrinsics. */ | ||||
| enum ac_image_cache_policy { | ||||
| 	ac_glc = 1 << 0, | ||||
| 	ac_slc = 1 << 1, | ||||
| }; | ||||
|  | ||||
| struct ac_image_args { | ||||
| 	enum ac_image_opcode opcode : 4; | ||||
| 	enum ac_atomic_op atomic : 4; /* for the ac_image_atomic opcode */ | ||||
| 	enum ac_image_dim dim : 3; | ||||
| 	unsigned dmask : 4; | ||||
| 	unsigned cache_policy : 2; | ||||
| 	bool unorm : 1; | ||||
| 	bool level_zero : 1; | ||||
| 	unsigned attributes; /* additional call-site specific AC_FUNC_ATTRs */ | ||||
| 	enum ac_image_opcode opcode; | ||||
| 	bool level_zero; | ||||
| 	bool bias; | ||||
| 	bool lod; | ||||
| 	bool deriv; | ||||
| 	bool compare; | ||||
| 	bool offset; | ||||
|  | ||||
| 	LLVMValueRef resource; | ||||
| 	LLVMValueRef sampler; | ||||
| 	LLVMValueRef data[2]; /* data[0] is source data (vector); data[1] is cmp for cmpswap */ | ||||
| 	LLVMValueRef offset; | ||||
| 	LLVMValueRef bias; | ||||
| 	LLVMValueRef compare; | ||||
| 	LLVMValueRef derivs[6]; | ||||
| 	LLVMValueRef coords[4]; | ||||
| 	LLVMValueRef lod; // also used by ac_image_get_resinfo | ||||
| 	LLVMValueRef addr; | ||||
| 	unsigned dmask; | ||||
| 	bool unorm; | ||||
| 	bool da; | ||||
| }; | ||||
|  | ||||
| LLVMValueRef ac_build_image_opcode(struct ac_llvm_context *ctx, | ||||
| 				   struct ac_image_args *a); | ||||
| LLVMValueRef ac_build_cvt_pkrtz_f16(struct ac_llvm_context *ctx, | ||||
| 				    LLVMValueRef args[2]); | ||||
| LLVMValueRef ac_build_cvt_pknorm_i16(struct ac_llvm_context *ctx, | ||||
| 				     LLVMValueRef args[2]); | ||||
| LLVMValueRef ac_build_cvt_pknorm_u16(struct ac_llvm_context *ctx, | ||||
| 				     LLVMValueRef args[2]); | ||||
| LLVMValueRef ac_build_cvt_pk_i16(struct ac_llvm_context *ctx, | ||||
| 				 LLVMValueRef args[2], unsigned bits, bool hi); | ||||
| LLVMValueRef ac_build_cvt_pk_u16(struct ac_llvm_context *ctx, | ||||
| 				 LLVMValueRef args[2], unsigned bits, bool hi); | ||||
| LLVMValueRef ac_build_wqm_vote(struct ac_llvm_context *ctx, LLVMValueRef i1); | ||||
| void ac_build_kill_if_false(struct ac_llvm_context *ctx, LLVMValueRef i1); | ||||
| LLVMValueRef ac_build_bfe(struct ac_llvm_context *ctx, LLVMValueRef input, | ||||
| @@ -392,14 +304,11 @@ LLVMValueRef ac_build_bfe(struct ac_llvm_context *ctx, LLVMValueRef input, | ||||
|  | ||||
| void ac_build_waitcnt(struct ac_llvm_context *ctx, unsigned simm16); | ||||
|  | ||||
| LLVMValueRef ac_build_fract(struct ac_llvm_context *ctx, LLVMValueRef src0, | ||||
| 			   unsigned bitsize); | ||||
|  | ||||
| LLVMValueRef ac_build_isign(struct ac_llvm_context *ctx, LLVMValueRef src0, | ||||
| 			    unsigned bitsize); | ||||
|  | ||||
| LLVMValueRef ac_build_fsign(struct ac_llvm_context *ctx, LLVMValueRef src0, | ||||
| 			    unsigned bitsize); | ||||
| void ac_get_image_intr_name(const char *base_name, | ||||
| 			    LLVMTypeRef data_type, | ||||
| 			    LLVMTypeRef coords_type, | ||||
| 			    LLVMTypeRef rsrc_type, | ||||
| 			    char *out_name, unsigned out_len); | ||||
|  | ||||
| void ac_optimize_vs_outputs(struct ac_llvm_context *ac, | ||||
| 			    LLVMValueRef main_fn, | ||||
| @@ -417,66 +326,6 @@ void ac_lds_store(struct ac_llvm_context *ctx, | ||||
| LLVMValueRef ac_find_lsb(struct ac_llvm_context *ctx, | ||||
| 			 LLVMTypeRef dst_type, | ||||
| 			 LLVMValueRef src0); | ||||
|  | ||||
| LLVMTypeRef ac_array_in_const_addr_space(LLVMTypeRef elem_type); | ||||
| LLVMTypeRef ac_array_in_const32_addr_space(LLVMTypeRef elem_type); | ||||
|  | ||||
| void ac_build_bgnloop(struct ac_llvm_context *ctx, int lable_id); | ||||
| void ac_build_break(struct ac_llvm_context *ctx); | ||||
| void ac_build_continue(struct ac_llvm_context *ctx); | ||||
| void ac_build_else(struct ac_llvm_context *ctx, int lable_id); | ||||
| void ac_build_endif(struct ac_llvm_context *ctx, int lable_id); | ||||
| void ac_build_endloop(struct ac_llvm_context *ctx, int lable_id); | ||||
| void ac_build_if(struct ac_llvm_context *ctx, LLVMValueRef value, | ||||
| 		 int lable_id); | ||||
| void ac_build_uif(struct ac_llvm_context *ctx, LLVMValueRef value, | ||||
| 		  int lable_id); | ||||
|  | ||||
| LLVMValueRef ac_build_alloca(struct ac_llvm_context *ac, LLVMTypeRef type, | ||||
| 			     const char *name); | ||||
| LLVMValueRef ac_build_alloca_undef(struct ac_llvm_context *ac, LLVMTypeRef type, | ||||
| 				   const char *name); | ||||
|  | ||||
| LLVMValueRef ac_cast_ptr(struct ac_llvm_context *ctx, LLVMValueRef ptr, | ||||
| 			 LLVMTypeRef type); | ||||
|  | ||||
| LLVMValueRef ac_trim_vector(struct ac_llvm_context *ctx, LLVMValueRef value, | ||||
| 			    unsigned count); | ||||
|  | ||||
| LLVMValueRef ac_unpack_param(struct ac_llvm_context *ctx, LLVMValueRef param, | ||||
| 			     unsigned rshift, unsigned bitwidth); | ||||
|  | ||||
| void ac_apply_fmask_to_sample(struct ac_llvm_context *ac, LLVMValueRef fmask, | ||||
| 			      LLVMValueRef *addr, bool is_array_tex); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_ds_swizzle(struct ac_llvm_context *ctx, LLVMValueRef src, unsigned mask); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_readlane(struct ac_llvm_context *ctx, LLVMValueRef src, LLVMValueRef lane); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_writelane(struct ac_llvm_context *ctx, LLVMValueRef src, LLVMValueRef value, LLVMValueRef lane); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_mbcnt(struct ac_llvm_context *ctx, LLVMValueRef mask); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_inclusive_scan(struct ac_llvm_context *ctx, LLVMValueRef src, nir_op op); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_exclusive_scan(struct ac_llvm_context *ctx, LLVMValueRef src, nir_op op); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_reduce(struct ac_llvm_context *ctx, LLVMValueRef src, nir_op op, unsigned cluster_size); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_quad_swizzle(struct ac_llvm_context *ctx, LLVMValueRef src, | ||||
| 		unsigned lane0, unsigned lane1, unsigned lane2, unsigned lane3); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_shuffle(struct ac_llvm_context *ctx, LLVMValueRef src, LLVMValueRef index); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -60,17 +60,26 @@ bool ac_is_sgpr_param(LLVMValueRef arg) | ||||
| 	llvm::Argument *A = llvm::unwrap<llvm::Argument>(arg); | ||||
| 	llvm::AttributeList AS = A->getParent()->getAttributes(); | ||||
| 	unsigned ArgNo = A->getArgNo(); | ||||
| 	return AS.hasAttribute(ArgNo + 1, llvm::Attribute::InReg); | ||||
| 	return AS.hasAttribute(ArgNo + 1, llvm::Attribute::ByVal) || | ||||
| 	       AS.hasAttribute(ArgNo + 1, llvm::Attribute::InReg); | ||||
| } | ||||
|  | ||||
| LLVMValueRef ac_llvm_get_called_value(LLVMValueRef call) | ||||
| { | ||||
| #if HAVE_LLVM >= 0x0309 | ||||
| 	return LLVMGetCalledValue(call); | ||||
| #else | ||||
| 	return llvm::wrap(llvm::CallSite(llvm::unwrap<llvm::Instruction>(call)).getCalledValue()); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| bool ac_llvm_is_function(LLVMValueRef v) | ||||
| { | ||||
| #if HAVE_LLVM >= 0x0309 | ||||
| 	return LLVMGetValueKind(v) == LLVMFunctionValueKind; | ||||
| #else | ||||
| 	return llvm::isa<llvm::Function>(llvm::unwrap(v)); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| LLVMBuilderRef ac_create_builder(LLVMContextRef ctx, | ||||
| @@ -78,6 +87,7 @@ LLVMBuilderRef ac_create_builder(LLVMContextRef ctx, | ||||
| { | ||||
| 	LLVMBuilderRef builder = LLVMCreateBuilderInContext(ctx); | ||||
|  | ||||
| #if HAVE_LLVM >= 0x0308 | ||||
| 	llvm::FastMathFlags flags; | ||||
|  | ||||
| 	switch (float_mode) { | ||||
| @@ -96,6 +106,7 @@ LLVMBuilderRef ac_create_builder(LLVMContextRef ctx, | ||||
| 		llvm::unwrap(builder)->setFastMathFlags(flags); | ||||
| 		break; | ||||
| 	} | ||||
| #endif | ||||
|  | ||||
| 	return builder; | ||||
| } | ||||
|   | ||||
| @@ -24,12 +24,10 @@ | ||||
|  */ | ||||
| /* based on pieces from si_pipe.c and radeon_llvm_emit.c */ | ||||
| #include "ac_llvm_util.h" | ||||
| #include "ac_llvm_build.h" | ||||
| #include "util/bitscan.h" | ||||
| #include <llvm-c/Core.h> | ||||
| #include <llvm-c/Support.h> | ||||
| #include "c11/threads.h" | ||||
| #include "util/u_math.h" | ||||
|  | ||||
| #include <assert.h> | ||||
| #include <stdio.h> | ||||
| @@ -48,11 +46,12 @@ static void ac_init_llvm_target() | ||||
| 	/* Workaround for bug in llvm 4.0 that causes image intrinsics | ||||
| 	 * to disappear. | ||||
| 	 * https://reviews.llvm.org/D26348 | ||||
| 	 * | ||||
| 	 * "mesa" is the prefix for error messages. | ||||
| 	 */ | ||||
| 	const char *argv[2] = { "mesa", "-simplifycfg-sink-common=false" }; | ||||
| 	LLVMParseCommandLineOptions(2, argv, NULL); | ||||
| 	if (HAVE_LLVM >= 0x0400) { | ||||
| 		/* "mesa" is the prefix for error messages */ | ||||
| 		const char *argv[2] = { "mesa", "-simplifycfg-sink-common=false" }; | ||||
| 		LLVMParseCommandLineOptions(2, argv, NULL); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static once_flag ac_init_llvm_target_once_flag = ONCE_FLAG_INIT; | ||||
| @@ -112,10 +111,8 @@ const char *ac_get_llvm_processor_name(enum radeon_family family) | ||||
| 		return "polaris10"; | ||||
| 	case CHIP_POLARIS11: | ||||
| 	case CHIP_POLARIS12: | ||||
| 	case CHIP_VEGAM: | ||||
| 		return "polaris11"; | ||||
| 	case CHIP_VEGA10: | ||||
| 	case CHIP_VEGA12: | ||||
| 	case CHIP_RAVEN: | ||||
| 		return "gfx900"; | ||||
| 	default: | ||||
| @@ -149,10 +146,31 @@ LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, enum ac | ||||
| 	return tm; | ||||
| } | ||||
|  | ||||
|  | ||||
| #if HAVE_LLVM < 0x0400 | ||||
| static LLVMAttribute ac_attr_to_llvm_attr(enum ac_func_attr attr) | ||||
| { | ||||
|    switch (attr) { | ||||
|    case AC_FUNC_ATTR_ALWAYSINLINE: return LLVMAlwaysInlineAttribute; | ||||
|    case AC_FUNC_ATTR_BYVAL: return LLVMByValAttribute; | ||||
|    case AC_FUNC_ATTR_INREG: return LLVMInRegAttribute; | ||||
|    case AC_FUNC_ATTR_NOALIAS: return LLVMNoAliasAttribute; | ||||
|    case AC_FUNC_ATTR_NOUNWIND: return LLVMNoUnwindAttribute; | ||||
|    case AC_FUNC_ATTR_READNONE: return LLVMReadNoneAttribute; | ||||
|    case AC_FUNC_ATTR_READONLY: return LLVMReadOnlyAttribute; | ||||
|    default: | ||||
| 	   fprintf(stderr, "Unhandled function attribute: %x\n", attr); | ||||
| 	   return 0; | ||||
|    } | ||||
| } | ||||
|  | ||||
| #else | ||||
|  | ||||
| static const char *attr_to_str(enum ac_func_attr attr) | ||||
| { | ||||
|    switch (attr) { | ||||
|    case AC_FUNC_ATTR_ALWAYSINLINE: return "alwaysinline"; | ||||
|    case AC_FUNC_ATTR_BYVAL: return "byval"; | ||||
|    case AC_FUNC_ATTR_INREG: return "inreg"; | ||||
|    case AC_FUNC_ATTR_NOALIAS: return "noalias"; | ||||
|    case AC_FUNC_ATTR_NOUNWIND: return "nounwind"; | ||||
| @@ -167,10 +185,20 @@ static const char *attr_to_str(enum ac_func_attr attr) | ||||
|    } | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
| void | ||||
| ac_add_function_attr(LLVMContextRef ctx, LLVMValueRef function, | ||||
|                      int attr_idx, enum ac_func_attr attr) | ||||
| { | ||||
| #if HAVE_LLVM < 0x0400 | ||||
|    LLVMAttribute llvm_attr = ac_attr_to_llvm_attr(attr); | ||||
|    if (attr_idx == -1) { | ||||
|       LLVMAddFunctionAttr(function, llvm_attr); | ||||
|    } else { | ||||
|       LLVMAddAttribute(LLVMGetParam(function, attr_idx - 1), llvm_attr); | ||||
|    } | ||||
| #else | ||||
|    const char *attr_name = attr_to_str(attr); | ||||
|    unsigned kind_id = LLVMGetEnumAttributeKindForName(attr_name, | ||||
|                                                       strlen(attr_name)); | ||||
| @@ -180,6 +208,7 @@ ac_add_function_attr(LLVMContextRef ctx, LLVMValueRef function, | ||||
|       LLVMAddAttributeAtIndex(function, attr_idx, llvm_attr); | ||||
|    else | ||||
|       LLVMAddCallSiteAttribute(function, attr_idx, llvm_attr); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| void ac_add_func_attributes(LLVMContextRef ctx, LLVMValueRef function, | ||||
| @@ -204,39 +233,10 @@ ac_dump_module(LLVMModuleRef module) | ||||
|  | ||||
| void | ||||
| ac_llvm_add_target_dep_function_attr(LLVMValueRef F, | ||||
| 				     const char *name, unsigned value) | ||||
| 				     const char *name, int value) | ||||
| { | ||||
| 	char str[16]; | ||||
|  | ||||
| 	snprintf(str, sizeof(str), "0x%x", value); | ||||
| 	snprintf(str, sizeof(str), "%i", value); | ||||
| 	LLVMAddTargetDependentFunctionAttr(F, name, str); | ||||
| } | ||||
|  | ||||
| unsigned | ||||
| ac_count_scratch_private_memory(LLVMValueRef function) | ||||
| { | ||||
| 	unsigned private_mem_vgprs = 0; | ||||
|  | ||||
| 	/* Process all LLVM instructions. */ | ||||
| 	LLVMBasicBlockRef bb = LLVMGetFirstBasicBlock(function); | ||||
| 	while (bb) { | ||||
| 		LLVMValueRef next = LLVMGetFirstInstruction(bb); | ||||
|  | ||||
| 		while (next) { | ||||
| 			LLVMValueRef inst = next; | ||||
| 			next = LLVMGetNextInstruction(next); | ||||
|  | ||||
| 			if (LLVMGetInstructionOpcode(inst) != LLVMAlloca) | ||||
| 				continue; | ||||
|  | ||||
| 			LLVMTypeRef type = LLVMGetElementType(LLVMTypeOf(inst)); | ||||
| 			/* No idea why LLVM aligns allocas to 4 elements. */ | ||||
| 			unsigned alignment = LLVMGetAlignment(inst); | ||||
| 			unsigned dw_size = align(ac_get_type_size(type) / 4, alignment); | ||||
| 			private_mem_vgprs += dw_size; | ||||
| 		} | ||||
| 		bb = LLVMGetNextBasicBlock(bb); | ||||
| 	} | ||||
|  | ||||
| 	return private_mem_vgprs; | ||||
| } | ||||
|   | ||||
| @@ -37,14 +37,15 @@ extern "C" { | ||||
|  | ||||
| enum ac_func_attr { | ||||
| 	AC_FUNC_ATTR_ALWAYSINLINE = (1 << 0), | ||||
| 	AC_FUNC_ATTR_BYVAL        = (1 << 1), | ||||
| 	AC_FUNC_ATTR_INREG        = (1 << 2), | ||||
| 	AC_FUNC_ATTR_NOALIAS      = (1 << 3), | ||||
| 	AC_FUNC_ATTR_NOUNWIND     = (1 << 4), | ||||
| 	AC_FUNC_ATTR_READNONE     = (1 << 5), | ||||
| 	AC_FUNC_ATTR_READONLY     = (1 << 6), | ||||
| 	AC_FUNC_ATTR_WRITEONLY    = (1 << 7), | ||||
| 	AC_FUNC_ATTR_INACCESSIBLE_MEM_ONLY = (1 << 8), | ||||
| 	AC_FUNC_ATTR_CONVERGENT = (1 << 9), | ||||
| 	AC_FUNC_ATTR_WRITEONLY    = HAVE_LLVM >= 0x0400 ? (1 << 7) : 0, | ||||
| 	AC_FUNC_ATTR_INACCESSIBLE_MEM_ONLY = HAVE_LLVM >= 0x0400 ? (1 << 8) : 0, | ||||
| 	AC_FUNC_ATTR_CONVERGENT = HAVE_LLVM >= 0x0400 ? (1 << 9) : 0, | ||||
|  | ||||
| 	/* Legacy intrinsic that needs attributes on function declarations | ||||
| 	 * and they must match the internal LLVM definition exactly, otherwise | ||||
| @@ -87,27 +88,26 @@ LLVMBuilderRef ac_create_builder(LLVMContextRef ctx, | ||||
|  | ||||
| void | ||||
| ac_llvm_add_target_dep_function_attr(LLVMValueRef F, | ||||
| 				     const char *name, unsigned value); | ||||
| 				     const char *name, int value); | ||||
|  | ||||
| static inline unsigned | ||||
| ac_get_load_intr_attribs(bool can_speculate) | ||||
| { | ||||
| 	/* READNONE means writes can't affect it, while READONLY means that | ||||
| 	 * writes can affect it. */ | ||||
| 	return can_speculate ? AC_FUNC_ATTR_READNONE : | ||||
| 			       AC_FUNC_ATTR_READONLY; | ||||
| 	return can_speculate && HAVE_LLVM >= 0x0400 ? | ||||
| 				 AC_FUNC_ATTR_READNONE : | ||||
| 				 AC_FUNC_ATTR_READONLY; | ||||
| } | ||||
|  | ||||
| static inline unsigned | ||||
| ac_get_store_intr_attribs(bool writeonly_memory) | ||||
| { | ||||
| 	return writeonly_memory ? AC_FUNC_ATTR_INACCESSIBLE_MEM_ONLY : | ||||
| 	return writeonly_memory && HAVE_LLVM >= 0x0400 ? | ||||
| 				  AC_FUNC_ATTR_INACCESSIBLE_MEM_ONLY : | ||||
| 				  AC_FUNC_ATTR_WRITEONLY; | ||||
| } | ||||
|  | ||||
| unsigned | ||||
| ac_count_scratch_private_memory(LLVMValueRef function); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -28,35 +28,210 @@ | ||||
| #include "llvm-c/Core.h" | ||||
| #include "llvm-c/TargetMachine.h" | ||||
| #include "amd_family.h" | ||||
| #include "../vulkan/radv_descriptor_set.h" | ||||
| #include "ac_shader_info.h" | ||||
| #include "compiler/shader_enums.h" | ||||
|  | ||||
| struct ac_shader_binary; | ||||
| struct ac_shader_config; | ||||
| struct nir_shader; | ||||
| struct nir_variable; | ||||
| struct radv_pipeline_layout; | ||||
|  | ||||
| struct ac_llvm_context; | ||||
| struct ac_shader_abi; | ||||
|  | ||||
| /* Interpolation locations */ | ||||
| #define INTERP_CENTER 0 | ||||
| #define INTERP_CENTROID 1 | ||||
| #define INTERP_SAMPLE 2 | ||||
| struct ac_vs_variant_key { | ||||
| 	uint32_t instance_rate_inputs; | ||||
| 	uint32_t as_es:1; | ||||
| 	uint32_t as_ls:1; | ||||
| 	uint32_t export_prim_id:1; | ||||
| }; | ||||
|  | ||||
| static inline unsigned ac_llvm_reg_index_soa(unsigned index, unsigned chan) | ||||
| { | ||||
| 	return (index * 4) + chan; | ||||
| } | ||||
| struct ac_tes_variant_key { | ||||
| 	uint32_t as_es:1; | ||||
| 	uint32_t export_prim_id:1; | ||||
| }; | ||||
|  | ||||
| void ac_lower_indirect_derefs(struct nir_shader *nir, enum chip_class); | ||||
| struct ac_tcs_variant_key { | ||||
| 	struct ac_vs_variant_key vs_key; | ||||
| 	unsigned primitive_mode; | ||||
| 	unsigned input_vertices; | ||||
| 	uint32_t tes_reads_tess_factors:1; | ||||
| }; | ||||
|  | ||||
| struct ac_fs_variant_key { | ||||
| 	uint32_t col_format; | ||||
| 	uint32_t is_int8; | ||||
| 	uint32_t is_int10; | ||||
| 	uint32_t multisample : 1; | ||||
| }; | ||||
|  | ||||
| struct ac_shader_variant_key { | ||||
| 	union { | ||||
| 		struct ac_vs_variant_key vs; | ||||
| 		struct ac_fs_variant_key fs; | ||||
| 		struct ac_tes_variant_key tes; | ||||
| 		struct ac_tcs_variant_key tcs; | ||||
| 	}; | ||||
| 	bool has_multiview_view_index; | ||||
| }; | ||||
|  | ||||
| struct ac_nir_compiler_options { | ||||
| 	struct radv_pipeline_layout *layout; | ||||
| 	struct ac_shader_variant_key key; | ||||
| 	bool unsafe_math; | ||||
| 	bool supports_spill; | ||||
| 	bool clamp_shadow_reference; | ||||
| 	bool dump_preoptir; | ||||
| 	enum radeon_family family; | ||||
| 	enum chip_class chip_class; | ||||
| }; | ||||
|  | ||||
| struct ac_userdata_info { | ||||
| 	int8_t sgpr_idx; | ||||
| 	uint8_t num_sgprs; | ||||
| 	bool indirect; | ||||
| 	uint32_t indirect_offset; | ||||
| }; | ||||
|  | ||||
| enum ac_ud_index { | ||||
| 	AC_UD_SCRATCH_RING_OFFSETS = 0, | ||||
| 	AC_UD_PUSH_CONSTANTS = 1, | ||||
| 	AC_UD_INDIRECT_DESCRIPTOR_SETS = 2, | ||||
| 	AC_UD_VIEW_INDEX = 3, | ||||
| 	AC_UD_SHADER_START = 4, | ||||
| 	AC_UD_VS_VERTEX_BUFFERS = AC_UD_SHADER_START, | ||||
| 	AC_UD_VS_BASE_VERTEX_START_INSTANCE, | ||||
| 	AC_UD_VS_LS_TCS_IN_LAYOUT, | ||||
| 	AC_UD_VS_MAX_UD, | ||||
| 	AC_UD_PS_SAMPLE_POS_OFFSET = AC_UD_SHADER_START, | ||||
| 	AC_UD_PS_MAX_UD, | ||||
| 	AC_UD_CS_GRID_SIZE = AC_UD_SHADER_START, | ||||
| 	AC_UD_CS_MAX_UD, | ||||
| 	AC_UD_GS_VS_RING_STRIDE_ENTRIES = AC_UD_VS_MAX_UD, | ||||
| 	AC_UD_GS_MAX_UD, | ||||
| 	AC_UD_TCS_OFFCHIP_LAYOUT = AC_UD_VS_MAX_UD, | ||||
| 	AC_UD_TCS_MAX_UD, | ||||
| 	AC_UD_TES_OFFCHIP_LAYOUT = AC_UD_SHADER_START, | ||||
| 	AC_UD_TES_MAX_UD, | ||||
| 	AC_UD_MAX_UD = AC_UD_TCS_MAX_UD, | ||||
| }; | ||||
|  | ||||
| /* descriptor index into scratch ring offsets */ | ||||
| #define RING_SCRATCH 0 | ||||
| #define RING_ESGS_VS 1 | ||||
| #define RING_ESGS_GS 2 | ||||
| #define RING_GSVS_VS 3 | ||||
| #define RING_GSVS_GS 4 | ||||
| #define RING_HS_TESS_FACTOR 5 | ||||
| #define RING_HS_TESS_OFFCHIP 6 | ||||
| #define RING_PS_SAMPLE_POSITIONS 7 | ||||
|  | ||||
| // Match MAX_SETS from radv_descriptor_set.h | ||||
| #define AC_UD_MAX_SETS MAX_SETS | ||||
|  | ||||
| struct ac_userdata_locations { | ||||
| 	struct ac_userdata_info descriptor_sets[AC_UD_MAX_SETS]; | ||||
| 	struct ac_userdata_info shader_data[AC_UD_MAX_UD]; | ||||
| }; | ||||
|  | ||||
| struct ac_vs_output_info { | ||||
| 	uint8_t	vs_output_param_offset[VARYING_SLOT_MAX]; | ||||
| 	uint8_t clip_dist_mask; | ||||
| 	uint8_t cull_dist_mask; | ||||
| 	uint8_t param_exports; | ||||
| 	bool writes_pointsize; | ||||
| 	bool writes_layer; | ||||
| 	bool writes_viewport_index; | ||||
| 	bool export_prim_id; | ||||
| 	uint32_t export_mask; | ||||
| 	unsigned pos_exports; | ||||
| }; | ||||
|  | ||||
| struct ac_es_output_info { | ||||
| 	uint32_t esgs_itemsize; | ||||
| }; | ||||
|  | ||||
| struct ac_shader_variant_info { | ||||
| 	struct ac_userdata_locations user_sgprs_locs; | ||||
| 	struct ac_shader_info info; | ||||
| 	unsigned num_user_sgprs; | ||||
| 	unsigned num_input_sgprs; | ||||
| 	unsigned num_input_vgprs; | ||||
| 	bool need_indirect_descriptor_sets; | ||||
| 	struct { | ||||
| 		struct { | ||||
| 			struct ac_vs_output_info outinfo; | ||||
| 			struct ac_es_output_info es_info; | ||||
| 			unsigned vgpr_comp_cnt; | ||||
| 			bool as_es; | ||||
| 			bool as_ls; | ||||
| 			uint64_t outputs_written; | ||||
| 		} vs; | ||||
| 		struct { | ||||
| 			unsigned num_interp; | ||||
| 			uint32_t input_mask; | ||||
| 			uint32_t flat_shaded_mask; | ||||
| 			bool has_pcoord; | ||||
| 			bool can_discard; | ||||
| 			bool writes_z; | ||||
| 			bool writes_stencil; | ||||
| 			bool writes_sample_mask; | ||||
| 			bool early_fragment_test; | ||||
| 			bool writes_memory; | ||||
| 			bool prim_id_input; | ||||
| 			bool layer_input; | ||||
| 		} fs; | ||||
| 		struct { | ||||
| 			unsigned block_size[3]; | ||||
| 		} cs; | ||||
| 		struct { | ||||
| 			unsigned vertices_in; | ||||
| 			unsigned vertices_out; | ||||
| 			unsigned output_prim; | ||||
| 			unsigned invocations; | ||||
| 			unsigned gsvs_vertex_size; | ||||
| 			unsigned max_gsvs_emit_size; | ||||
| 			unsigned es_type; /* GFX9: VS or TES */ | ||||
| 		} gs; | ||||
| 		struct { | ||||
| 			unsigned tcs_vertices_out; | ||||
| 			/* Which outputs are actually written */ | ||||
| 			uint64_t outputs_written; | ||||
| 			/* Which patch outputs are actually written */ | ||||
| 			uint32_t patch_outputs_written; | ||||
|  | ||||
| 		} tcs; | ||||
| 		struct { | ||||
| 			struct ac_vs_output_info outinfo; | ||||
| 			struct ac_es_output_info es_info; | ||||
| 			bool as_es; | ||||
| 			unsigned primitive_mode; | ||||
| 			enum gl_tess_spacing spacing; | ||||
| 			bool ccw; | ||||
| 			bool point_mode; | ||||
| 		} tes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 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 *const *nir, | ||||
|                            int nir_count, | ||||
|                            const struct ac_nir_compiler_options *options, | ||||
| 			   bool dump_shader); | ||||
|  | ||||
| void ac_create_gs_copy_shader(LLVMTargetMachineRef tm, | ||||
| 			      struct nir_shader *geom_shader, | ||||
| 			      struct ac_shader_binary *binary, | ||||
| 			      struct ac_shader_config *config, | ||||
| 			      struct ac_shader_variant_info *shader_info, | ||||
| 			      const struct ac_nir_compiler_options *options, | ||||
| 			      bool dump_shader); | ||||
|  | ||||
| struct nir_to_llvm_context; | ||||
| void ac_nir_translate(struct ac_llvm_context *ac, struct ac_shader_abi *abi, | ||||
| 		      struct nir_shader *nir); | ||||
|  | ||||
| void | ||||
| ac_handle_shader_output_decl(struct ac_llvm_context *ctx, | ||||
| 			     struct ac_shader_abi *abi, | ||||
| 			     struct nir_shader *nir, | ||||
| 			     struct nir_variable *variable, | ||||
| 			     gl_shader_stage stage); | ||||
|  | ||||
| void ac_emit_barrier(struct ac_llvm_context *ac, gl_shader_stage stage); | ||||
| 		      struct nir_shader *nir, struct nir_to_llvm_context *nctx); | ||||
|  | ||||
| #endif /* AC_NIR_TO_LLVM_H */ | ||||
|   | ||||
| @@ -26,12 +26,6 @@ | ||||
|  | ||||
| #include <llvm-c/Core.h> | ||||
|  | ||||
| #include "compiler/shader_enums.h" | ||||
|  | ||||
| struct nir_variable; | ||||
|  | ||||
| #define AC_LLVM_MAX_OUTPUTS (VARYING_SLOT_VAR31 + 1) | ||||
|  | ||||
| enum ac_descriptor_type { | ||||
| 	AC_DESC_IMAGE, | ||||
| 	AC_DESC_FMASK, | ||||
| @@ -57,18 +51,6 @@ struct ac_shader_abi { | ||||
| 	LLVMValueRef front_face; | ||||
| 	LLVMValueRef ancillary; | ||||
| 	LLVMValueRef sample_coverage; | ||||
| 	LLVMValueRef prim_mask; | ||||
| 	/* CS */ | ||||
| 	LLVMValueRef local_invocation_ids; | ||||
| 	LLVMValueRef num_work_groups; | ||||
| 	LLVMValueRef workgroup_ids[3]; | ||||
| 	LLVMValueRef tg_size; | ||||
|  | ||||
| 	/* Vulkan only */ | ||||
| 	LLVMValueRef push_constants; | ||||
| 	LLVMValueRef view_index; | ||||
|  | ||||
| 	LLVMValueRef outputs[AC_LLVM_MAX_OUTPUTS * 4]; | ||||
|  | ||||
| 	/* For VS and PS: pre-loaded shader inputs. | ||||
| 	 * | ||||
| @@ -88,8 +70,6 @@ struct ac_shader_abi { | ||||
| 	void (*emit_primitive)(struct ac_shader_abi *abi, | ||||
| 			       unsigned stream); | ||||
|  | ||||
| 	void (*emit_kill)(struct ac_shader_abi *abi, LLVMValueRef visible); | ||||
|  | ||||
| 	LLVMValueRef (*load_inputs)(struct ac_shader_abi *abi, | ||||
| 				    unsigned location, | ||||
| 				    unsigned driver_location, | ||||
| @@ -100,7 +80,6 @@ struct ac_shader_abi { | ||||
| 				    LLVMTypeRef type); | ||||
|  | ||||
| 	LLVMValueRef (*load_tess_varyings)(struct ac_shader_abi *abi, | ||||
| 					   LLVMTypeRef type, | ||||
| 					   LLVMValueRef vertex_index, | ||||
| 					   LLVMValueRef param_index, | ||||
| 					   unsigned const_index, | ||||
| @@ -113,14 +92,20 @@ struct ac_shader_abi { | ||||
| 					   bool load_inputs); | ||||
|  | ||||
| 	void (*store_tcs_outputs)(struct ac_shader_abi *abi, | ||||
| 				  const struct nir_variable *var, | ||||
| 				  LLVMValueRef vertex_index, | ||||
| 				  LLVMValueRef param_index, | ||||
| 				  unsigned const_index, | ||||
| 				  unsigned location, | ||||
| 				  unsigned driver_location, | ||||
| 				  LLVMValueRef src, | ||||
| 				  unsigned component, | ||||
| 				  bool is_patch, | ||||
| 				  bool is_compact, | ||||
| 				  unsigned writemask); | ||||
|  | ||||
| 	LLVMValueRef (*load_tess_coord)(struct ac_shader_abi *abi); | ||||
| 	LLVMValueRef (*load_tess_coord)(struct ac_shader_abi *abi, | ||||
| 					LLVMTypeRef type, | ||||
| 					unsigned num_components); | ||||
|  | ||||
| 	LLVMValueRef (*load_patch_vertices_in)(struct ac_shader_abi *abi); | ||||
|  | ||||
| @@ -157,41 +142,11 @@ struct ac_shader_abi { | ||||
| 					  unsigned constant_index, | ||||
| 					  LLVMValueRef index, | ||||
| 					  enum ac_descriptor_type desc_type, | ||||
| 					  bool image, bool write, | ||||
| 					  bool bindless); | ||||
|  | ||||
| 	/** | ||||
| 	 * Load a Vulkan-specific resource. | ||||
| 	 * | ||||
| 	 * \param index resource index | ||||
| 	 * \param desc_set descriptor set | ||||
| 	 * \param binding descriptor set binding | ||||
| 	 */ | ||||
| 	LLVMValueRef (*load_resource)(struct ac_shader_abi *abi, | ||||
| 				      LLVMValueRef index, | ||||
| 				      unsigned desc_set, | ||||
| 				      unsigned binding); | ||||
|  | ||||
| 	LLVMValueRef (*lookup_interp_param)(struct ac_shader_abi *abi, | ||||
| 					    enum glsl_interp_mode interp, | ||||
| 					    unsigned location); | ||||
|  | ||||
| 	LLVMValueRef (*load_sample_position)(struct ac_shader_abi *abi, | ||||
| 					     LLVMValueRef sample_id); | ||||
|  | ||||
| 	LLVMValueRef (*load_local_group_size)(struct ac_shader_abi *abi); | ||||
|  | ||||
| 	LLVMValueRef (*load_sample_mask_in)(struct ac_shader_abi *abi); | ||||
|  | ||||
| 	LLVMValueRef (*load_base_vertex)(struct ac_shader_abi *abi); | ||||
| 					  bool image, bool write); | ||||
|  | ||||
| 	/* Whether to clamp the shadow reference value to [0,1]on VI. Radeonsi currently | ||||
| 	 * uses it due to promoting D16 to D32, but radv needs it off. */ | ||||
| 	bool clamp_shadow_reference; | ||||
|  | ||||
| 	/* Whether to workaround GFX9 ignoring the stride for the buffer size if IDXEN=0 | ||||
| 	* and LLVM optimizes an indexed load with constant index to IDXEN=0. */ | ||||
| 	bool gfx9_stride_size_workaround; | ||||
| }; | ||||
|  | ||||
| #endif /* AC_SHADER_ABI_H */ | ||||
|   | ||||
							
								
								
									
										170
									
								
								src/amd/common/ac_shader_info.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								src/amd/common/ac_shader_info.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,170 @@ | ||||
| /* | ||||
|  * Copyright © 2017 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 "nir/nir.h" | ||||
| #include "ac_shader_info.h" | ||||
| #include "ac_nir_to_llvm.h" | ||||
|  | ||||
| static void mark_sampler_desc(const nir_variable *var, | ||||
| 			      struct ac_shader_info *info) | ||||
| { | ||||
| 	info->desc_set_used_mask = (1 << var->data.descriptor_set); | ||||
| } | ||||
|  | ||||
| static void | ||||
| gather_intrinsic_info(const nir_intrinsic_instr *instr, | ||||
| 		      struct ac_shader_info *info) | ||||
| { | ||||
| 	switch (instr->intrinsic) { | ||||
| 	case nir_intrinsic_interp_var_at_sample: | ||||
| 		info->ps.needs_sample_positions = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_draw_id: | ||||
| 		info->vs.needs_draw_id = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_instance_id: | ||||
| 		info->vs.needs_instance_id = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_num_work_groups: | ||||
| 		info->cs.uses_grid_size = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_local_invocation_id: | ||||
| 	case nir_intrinsic_load_work_group_id: { | ||||
| 		unsigned mask = nir_ssa_def_components_read(&instr->dest.ssa); | ||||
| 		while (mask) { | ||||
| 			unsigned i = u_bit_scan(&mask); | ||||
|  | ||||
| 			if (instr->intrinsic == nir_intrinsic_load_work_group_id) | ||||
| 				info->cs.uses_block_id[i] = true; | ||||
| 			else | ||||
| 				info->cs.uses_thread_id[i] = true; | ||||
| 		} | ||||
| 		break; | ||||
| 	} | ||||
| 	case nir_intrinsic_load_local_invocation_index: | ||||
| 		info->cs.uses_local_invocation_idx = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_sample_id: | ||||
| 		info->ps.force_persample = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_sample_pos: | ||||
| 		info->ps.force_persample = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_view_index: | ||||
| 		info->needs_multiview_view_index = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_invocation_id: | ||||
| 		info->uses_invocation_id = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_primitive_id: | ||||
| 		info->uses_prim_id = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_push_constant: | ||||
| 		info->loads_push_constants = true; | ||||
| 		break; | ||||
| 	case nir_intrinsic_vulkan_resource_index: | ||||
| 		info->desc_set_used_mask |= (1 << nir_intrinsic_desc_set(instr)); | ||||
| 		break; | ||||
| 	case nir_intrinsic_image_load: | ||||
| 	case nir_intrinsic_image_store: | ||||
| 	case nir_intrinsic_image_atomic_add: | ||||
| 	case nir_intrinsic_image_atomic_min: | ||||
| 	case nir_intrinsic_image_atomic_max: | ||||
| 	case nir_intrinsic_image_atomic_and: | ||||
| 	case nir_intrinsic_image_atomic_or: | ||||
| 	case nir_intrinsic_image_atomic_xor: | ||||
| 	case nir_intrinsic_image_atomic_exchange: | ||||
| 	case nir_intrinsic_image_atomic_comp_swap: | ||||
| 	case nir_intrinsic_image_size: { | ||||
| 		const struct glsl_type *type = instr->variables[0]->var->type; | ||||
| 		if(instr->variables[0]->deref.child) | ||||
| 			type = instr->variables[0]->deref.child->type; | ||||
|  | ||||
| 		enum glsl_sampler_dim dim = glsl_get_sampler_dim(type); | ||||
| 		if (dim == GLSL_SAMPLER_DIM_SUBPASS || | ||||
| 		    dim == GLSL_SAMPLER_DIM_SUBPASS_MS) | ||||
| 			info->ps.uses_input_attachments = true; | ||||
| 		mark_sampler_desc(instr->variables[0]->var, info); | ||||
| 		break; | ||||
| 	} | ||||
| 	default: | ||||
| 		break; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static void | ||||
| gather_tex_info(const nir_tex_instr *instr, struct ac_shader_info *info) | ||||
| { | ||||
| 	if (instr->sampler) | ||||
| 		mark_sampler_desc(instr->sampler->var, info); | ||||
| 	if (instr->texture) | ||||
| 		mark_sampler_desc(instr->texture->var, info); | ||||
| } | ||||
|  | ||||
| static void | ||||
| gather_info_block(const nir_block *block, struct ac_shader_info *info) | ||||
| { | ||||
| 	nir_foreach_instr(instr, block) { | ||||
| 		switch (instr->type) { | ||||
| 		case nir_instr_type_intrinsic: | ||||
| 			gather_intrinsic_info(nir_instr_as_intrinsic(instr), info); | ||||
| 			break; | ||||
| 		case nir_instr_type_tex: | ||||
| 			gather_tex_info(nir_instr_as_tex(instr), info); | ||||
| 			break; | ||||
| 		default: | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static void | ||||
| gather_info_input_decl(const nir_shader *nir, const nir_variable *var, | ||||
| 		       struct ac_shader_info *info) | ||||
| { | ||||
| 	switch (nir->info.stage) { | ||||
| 	case MESA_SHADER_VERTEX: | ||||
| 		info->vs.has_vertex_buffers = true; | ||||
| 		break; | ||||
| 	default: | ||||
| 		break; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void | ||||
| ac_nir_shader_info_pass(const struct nir_shader *nir, | ||||
| 			const struct ac_nir_compiler_options *options, | ||||
| 			struct ac_shader_info *info) | ||||
| { | ||||
| 	struct nir_function *func = | ||||
| 		(struct nir_function *)exec_list_get_head_const(&nir->functions); | ||||
|  | ||||
| 	if (options->layout->dynamic_offset_count) | ||||
| 		info->loads_push_constants = true; | ||||
|  | ||||
| 	nir_foreach_variable(variable, &nir->inputs) | ||||
| 		gather_info_input_decl(nir, variable, info); | ||||
|  | ||||
| 	nir_foreach_block(block, func->impl) { | ||||
| 		gather_info_block(block, info); | ||||
| 	} | ||||
| } | ||||
| @@ -1,5 +1,5 @@ | ||||
| /*
 | ||||
|  * Copyright © 2014-2018 NVIDIA Corporation | ||||
|  * Copyright © 2017 Red Hat | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a | ||||
|  * copy of this software and associated documentation files (the "Software"), | ||||
| @@ -21,29 +21,42 @@ | ||||
|  * IN THE SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #include <fcntl.h> | ||||
| #ifndef AC_SHADER_INFO_H | ||||
| #define AC_SHADER_INFO_H | ||||
| 
 | ||||
| #include "util/u_debug.h" | ||||
| struct nir_shader; | ||||
| struct ac_nir_compiler_options; | ||||
| 
 | ||||
| #include "tegra/tegra_screen.h" | ||||
| struct ac_shader_info { | ||||
| 	bool loads_push_constants; | ||||
| 	uint32_t desc_set_used_mask; | ||||
| 	bool needs_multiview_view_index; | ||||
| 	bool uses_invocation_id; | ||||
| 	bool uses_prim_id; | ||||
| 	struct { | ||||
| 		bool has_vertex_buffers; /* needs vertex buffers and base/start */ | ||||
| 		bool needs_draw_id; | ||||
| 		bool needs_instance_id; | ||||
| 	} vs; | ||||
| 	struct { | ||||
| 		bool force_persample; | ||||
| 		bool needs_sample_positions; | ||||
| 		bool uses_input_attachments; | ||||
| 	} ps; | ||||
| 	struct { | ||||
| 		bool uses_grid_size; | ||||
| 		bool uses_block_id[3]; | ||||
| 		bool uses_thread_id[3]; | ||||
| 		bool uses_local_invocation_idx; | ||||
| 	} cs; | ||||
| }; | ||||
| 
 | ||||
| struct pipe_screen *tegra_drm_screen_create(int fd); | ||||
| /* A NIR pass to gather all the info needed to optimise the allocation patterns
 | ||||
|  * for the RADV user sgprs | ||||
|  */ | ||||
| void | ||||
| ac_nir_shader_info_pass(const struct nir_shader *nir, | ||||
| 			const struct ac_nir_compiler_options *options, | ||||
| 			struct ac_shader_info *info); | ||||
| 
 | ||||
| struct pipe_screen *tegra_drm_screen_create(int fd) | ||||
| { | ||||
|    struct pipe_screen *screen; | ||||
| 
 | ||||
|    /*
 | ||||
|     * NOTE: There are reportedly issues with reusing the file descriptor | ||||
|     * as-is related to Xinerama. Duplicate it to side-step any issues. | ||||
|     */ | ||||
|    fd = fcntl(fd, F_DUPFD_CLOEXEC, 0); | ||||
|    if (fd < 0) | ||||
|       return NULL; | ||||
| 
 | ||||
|    screen = tegra_screen_create(fd); | ||||
|    if (!screen) | ||||
|       close(fd); | ||||
| 
 | ||||
|    return screen; | ||||
| } | ||||
| #endif | ||||
| @@ -131,18 +131,10 @@ static void addrlib_family_rev_id(enum radeon_family family, | ||||
| 		*addrlib_family = FAMILY_VI; | ||||
| 		*addrlib_revid = get_first(AMDGPU_POLARIS12_RANGE); | ||||
| 		break; | ||||
| 	case CHIP_VEGAM: | ||||
| 		*addrlib_family = FAMILY_VI; | ||||
| 		*addrlib_revid = get_first(AMDGPU_VEGAM_RANGE); | ||||
| 		break; | ||||
| 	case CHIP_VEGA10: | ||||
| 		*addrlib_family = FAMILY_AI; | ||||
| 		*addrlib_revid = get_first(AMDGPU_VEGA10_RANGE); | ||||
| 		break; | ||||
| 	case CHIP_VEGA12: | ||||
| 		*addrlib_family = FAMILY_AI; | ||||
| 		*addrlib_revid = get_first(AMDGPU_VEGA12_RANGE); | ||||
| 		break; | ||||
| 	case CHIP_RAVEN: | ||||
| 		*addrlib_family = FAMILY_RV; | ||||
| 		*addrlib_revid = get_first(AMDGPU_RAVEN_RANGE); | ||||
| @@ -171,7 +163,7 @@ ADDR_HANDLE amdgpu_addr_create(const struct radeon_info *info, | ||||
| 	ADDR_CREATE_OUTPUT addrCreateOutput = {0}; | ||||
| 	ADDR_REGISTER_VALUE regValue = {0}; | ||||
| 	ADDR_CREATE_FLAGS createFlags = {{0}}; | ||||
| 	ADDR_GET_MAX_ALINGMENTS_OUTPUT addrGetMaxAlignmentsOutput = {0}; | ||||
| 	ADDR_GET_MAX_ALIGNMENTS_OUTPUT addrGetMaxAlignmentsOutput = {0}; | ||||
| 	ADDR_E_RETURNCODE addrRet; | ||||
|  | ||||
| 	addrCreateInput.size = sizeof(ADDR_CREATE_INPUT); | ||||
| @@ -279,7 +271,7 @@ static int gfx6_compute_level(ADDR_HANDLE addrlib, | ||||
| 	    AddrSurfInfoIn->bpp) { | ||||
| 		unsigned alignment = 256 / (AddrSurfInfoIn->bpp / 8); | ||||
|  | ||||
| 		assert(util_is_power_of_two_or_zero(AddrSurfInfoIn->bpp)); | ||||
| 		assert(util_is_power_of_two(AddrSurfInfoIn->bpp)); | ||||
| 		AddrSurfInfoIn->width = align(AddrSurfInfoIn->width, alignment); | ||||
| 	} | ||||
|  | ||||
| @@ -419,31 +411,6 @@ static unsigned cik_get_macro_tile_index(struct radeon_surf *surf) | ||||
| 	return index; | ||||
| } | ||||
|  | ||||
| static bool get_display_flag(const struct ac_surf_config *config, | ||||
| 			     const struct radeon_surf *surf) | ||||
| { | ||||
| 	unsigned num_channels = config->info.num_channels; | ||||
| 	unsigned bpe = surf->bpe; | ||||
|  | ||||
| 	if (surf->flags & RADEON_SURF_SCANOUT && | ||||
| 	    !(surf->flags & RADEON_SURF_FMASK) && | ||||
| 	    config->info.samples <= 1 && | ||||
| 	    surf->blk_w <= 2 && surf->blk_h == 1) { | ||||
| 		/* subsampled */ | ||||
| 		if (surf->blk_w == 2 && surf->blk_h == 1) | ||||
| 			return true; | ||||
|  | ||||
| 		if  (/* RGBA8 or RGBA16F */ | ||||
| 		     (bpe >= 4 && bpe <= 8 && num_channels == 4) || | ||||
| 		     /* R5G6B5 or R5G5B5A1 */ | ||||
| 		     (bpe == 2 && num_channels >= 3) || | ||||
| 		     /* C8 palette */ | ||||
| 		     (bpe == 1 && num_channels == 1)) | ||||
| 			return true; | ||||
| 	} | ||||
| 	return false; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * This must be called after the first level is computed. | ||||
|  * | ||||
| @@ -478,7 +445,7 @@ static int gfx6_surface_settings(ADDR_HANDLE addrlib, | ||||
| 	    config->info.surf_index && | ||||
| 	    surf->u.legacy.level[0].mode == RADEON_SURF_MODE_2D && | ||||
| 	    !(surf->flags & (RADEON_SURF_Z_OR_SBUFFER | RADEON_SURF_SHAREABLE)) && | ||||
| 	    !get_display_flag(config, surf)) { | ||||
| 	    (config->info.samples > 1 || !(surf->flags & RADEON_SURF_SCANOUT))) { | ||||
| 		ADDR_COMPUTE_BASE_SWIZZLE_INPUT AddrBaseSwizzleIn = {0}; | ||||
| 		ADDR_COMPUTE_BASE_SWIZZLE_OUTPUT AddrBaseSwizzleOut = {0}; | ||||
|  | ||||
| @@ -597,7 +564,7 @@ static int gfx6_compute_surface(ADDR_HANDLE addrlib, | ||||
| 	AddrSurfInfoIn.flags.depth = (surf->flags & RADEON_SURF_ZBUFFER) != 0; | ||||
| 	AddrSurfInfoIn.flags.cube = config->is_cube; | ||||
| 	AddrSurfInfoIn.flags.fmask = (surf->flags & RADEON_SURF_FMASK) != 0; | ||||
| 	AddrSurfInfoIn.flags.display = get_display_flag(config, surf); | ||||
| 	AddrSurfInfoIn.flags.display = (surf->flags & RADEON_SURF_SCANOUT) != 0; | ||||
| 	AddrSurfInfoIn.flags.pow2Pad = config->info.levels > 1; | ||||
| 	AddrSurfInfoIn.flags.tcCompatible = (surf->flags & RADEON_SURF_TC_COMPATIBLE_HTILE) != 0; | ||||
|  | ||||
| @@ -843,8 +810,7 @@ static int gfx6_compute_surface(ADDR_HANDLE addrlib, | ||||
| static int | ||||
| gfx9_get_preferred_swizzle_mode(ADDR_HANDLE addrlib, | ||||
| 				ADDR2_COMPUTE_SURFACE_INFO_INPUT *in, | ||||
| 				bool is_fmask, unsigned flags, | ||||
| 				AddrSwizzleMode *swizzle_mode) | ||||
| 				bool is_fmask, AddrSwizzleMode *swizzle_mode) | ||||
| { | ||||
| 	ADDR_E_RETURNCODE ret; | ||||
| 	ADDR2_GET_PREFERRED_SURF_SETTING_INPUT sin = {0}; | ||||
| @@ -869,18 +835,7 @@ gfx9_get_preferred_swizzle_mode(ADDR_HANDLE addrlib, | ||||
| 	sin.numSamples = in->numSamples; | ||||
| 	sin.numFrags = in->numFrags; | ||||
|  | ||||
| 	if (flags & RADEON_SURF_SCANOUT) { | ||||
| 		sin.preferredSwSet.sw_D = 1; | ||||
| 		/* Raven only allows S for displayable surfaces with < 64 bpp, so | ||||
| 		 * allow it as fallback */ | ||||
| 		sin.preferredSwSet.sw_S = 1; | ||||
| 	} else if (in->flags.depth || in->flags.stencil || is_fmask) | ||||
| 		sin.preferredSwSet.sw_Z = 1; | ||||
| 	else | ||||
| 		sin.preferredSwSet.sw_S = 1; | ||||
|  | ||||
| 	if (is_fmask) { | ||||
| 		sin.flags.display = 0; | ||||
| 		sin.flags.color = 0; | ||||
| 		sin.flags.fmask = 1; | ||||
| 	} | ||||
| @@ -894,7 +849,6 @@ gfx9_get_preferred_swizzle_mode(ADDR_HANDLE addrlib, | ||||
| } | ||||
|  | ||||
| static int gfx9_compute_miptree(ADDR_HANDLE addrlib, | ||||
| 				const struct ac_surf_config *config, | ||||
| 				struct radeon_surf *surf, bool compressed, | ||||
| 				ADDR2_COMPUTE_SURFACE_INFO_INPUT *in) | ||||
| { | ||||
| @@ -950,8 +904,8 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib, | ||||
| 		hin.size = sizeof(ADDR2_COMPUTE_HTILE_INFO_INPUT); | ||||
| 		hout.size = sizeof(ADDR2_COMPUTE_HTILE_INFO_OUTPUT); | ||||
|  | ||||
| 		hin.hTileFlags.pipeAligned = !in->flags.metaPipeUnaligned; | ||||
| 		hin.hTileFlags.rbAligned = !in->flags.metaRbUnaligned; | ||||
| 		hin.hTileFlags.pipeAligned = 1; | ||||
| 		hin.hTileFlags.rbAligned = 1; | ||||
| 		hin.depthFlags = in->flags; | ||||
| 		hin.swizzleMode = in->swizzleMode; | ||||
| 		hin.unalignedWidth = in->width; | ||||
| @@ -969,37 +923,6 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib, | ||||
| 		surf->htile_slice_size = hout.sliceSize; | ||||
| 		surf->htile_alignment = hout.baseAlign; | ||||
| 	} else { | ||||
| 		/* Compute tile swizzle for the color surface. | ||||
| 		 * All *_X and *_T modes can use the swizzle. | ||||
| 		 */ | ||||
| 		if (config->info.surf_index && | ||||
| 		    in->swizzleMode >= ADDR_SW_64KB_Z_T && | ||||
| 		    !out.mipChainInTail && | ||||
| 		    !(surf->flags & RADEON_SURF_SHAREABLE) && | ||||
| 		    !in->flags.display) { | ||||
| 			ADDR2_COMPUTE_PIPEBANKXOR_INPUT xin = {0}; | ||||
| 			ADDR2_COMPUTE_PIPEBANKXOR_OUTPUT xout = {0}; | ||||
|  | ||||
| 			xin.size = sizeof(ADDR2_COMPUTE_PIPEBANKXOR_INPUT); | ||||
| 			xout.size = sizeof(ADDR2_COMPUTE_PIPEBANKXOR_OUTPUT); | ||||
|  | ||||
| 			xin.surfIndex = p_atomic_inc_return(config->info.surf_index) - 1; | ||||
| 			xin.flags = in->flags; | ||||
| 			xin.swizzleMode = in->swizzleMode; | ||||
| 			xin.resourceType = in->resourceType; | ||||
| 			xin.format = in->format; | ||||
| 			xin.numSamples = in->numSamples; | ||||
| 			xin.numFrags = in->numFrags; | ||||
|  | ||||
| 			ret = Addr2ComputePipeBankXor(addrlib, &xin, &xout); | ||||
| 			if (ret != ADDR_OK) | ||||
| 				return ret; | ||||
|  | ||||
| 			assert(xout.pipeBankXor <= | ||||
| 			       u_bit_consecutive(0, sizeof(surf->tile_swizzle) * 8)); | ||||
| 			surf->tile_swizzle = xout.pipeBankXor; | ||||
| 		} | ||||
|  | ||||
| 		/* DCC */ | ||||
| 		if (!(surf->flags & RADEON_SURF_DISABLE_DCC) && | ||||
| 		    !compressed && | ||||
| @@ -1012,8 +935,8 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib, | ||||
| 			dout.size = sizeof(ADDR2_COMPUTE_DCCINFO_OUTPUT); | ||||
| 			dout.pMipInfo = meta_mip_info; | ||||
|  | ||||
| 			din.dccKeyFlags.pipeAligned = !in->flags.metaPipeUnaligned; | ||||
| 			din.dccKeyFlags.rbAligned = !in->flags.metaRbUnaligned; | ||||
| 			din.dccKeyFlags.pipeAligned = 1; | ||||
| 			din.dccKeyFlags.rbAligned = 1; | ||||
| 			din.colorFlags = in->flags; | ||||
| 			din.resourceType = in->resourceType; | ||||
| 			din.swizzleMode = in->swizzleMode; | ||||
| @@ -1077,9 +1000,7 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib, | ||||
| 			fin.size = sizeof(ADDR2_COMPUTE_FMASK_INFO_INPUT); | ||||
| 			fout.size = sizeof(ADDR2_COMPUTE_FMASK_INFO_OUTPUT); | ||||
|  | ||||
| 			ret = gfx9_get_preferred_swizzle_mode(addrlib, in, | ||||
| 							      true, surf->flags, | ||||
| 							      &fin.swizzleMode); | ||||
| 			ret = gfx9_get_preferred_swizzle_mode(addrlib, in, true, &fin.swizzleMode); | ||||
| 			if (ret != ADDR_OK) | ||||
| 				return ret; | ||||
|  | ||||
| @@ -1097,34 +1018,6 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib, | ||||
| 			surf->u.gfx9.fmask.epitch = fout.pitch - 1; | ||||
| 			surf->u.gfx9.fmask_size = fout.fmaskBytes; | ||||
| 			surf->u.gfx9.fmask_alignment = fout.baseAlign; | ||||
|  | ||||
| 			/* Compute tile swizzle for the FMASK surface. */ | ||||
| 			if (config->info.fmask_surf_index && | ||||
| 			    fin.swizzleMode >= ADDR_SW_64KB_Z_T && | ||||
| 			    !(surf->flags & RADEON_SURF_SHAREABLE)) { | ||||
| 				ADDR2_COMPUTE_PIPEBANKXOR_INPUT xin = {0}; | ||||
| 				ADDR2_COMPUTE_PIPEBANKXOR_OUTPUT xout = {0}; | ||||
|  | ||||
| 				xin.size = sizeof(ADDR2_COMPUTE_PIPEBANKXOR_INPUT); | ||||
| 				xout.size = sizeof(ADDR2_COMPUTE_PIPEBANKXOR_OUTPUT); | ||||
|  | ||||
| 				/* This counter starts from 1 instead of 0. */ | ||||
| 				xin.surfIndex = p_atomic_inc_return(config->info.fmask_surf_index); | ||||
| 				xin.flags = in->flags; | ||||
| 				xin.swizzleMode = in->swizzleMode; | ||||
| 				xin.resourceType = in->resourceType; | ||||
| 				xin.format = in->format; | ||||
| 				xin.numSamples = in->numSamples; | ||||
| 				xin.numFrags = in->numFrags; | ||||
|  | ||||
| 				ret = Addr2ComputePipeBankXor(addrlib, &xin, &xout); | ||||
| 				if (ret != ADDR_OK) | ||||
| 					return ret; | ||||
|  | ||||
| 				assert(xout.pipeBankXor <= | ||||
| 				       u_bit_consecutive(0, sizeof(surf->u.gfx9.fmask_tile_swizzle) * 8)); | ||||
| 				surf->u.gfx9.fmask_tile_swizzle = xout.pipeBankXor; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		/* CMASK */ | ||||
| @@ -1135,14 +1028,8 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib, | ||||
| 			cin.size = sizeof(ADDR2_COMPUTE_CMASK_INFO_INPUT); | ||||
| 			cout.size = sizeof(ADDR2_COMPUTE_CMASK_INFO_OUTPUT); | ||||
|  | ||||
| 			if (in->numSamples) { | ||||
| 				/* FMASK is always aligned. */ | ||||
| 				cin.cMaskFlags.pipeAligned = 1; | ||||
| 				cin.cMaskFlags.rbAligned = 1; | ||||
| 			} else { | ||||
| 				cin.cMaskFlags.pipeAligned = !in->flags.metaPipeUnaligned; | ||||
| 				cin.cMaskFlags.rbAligned = !in->flags.metaRbUnaligned; | ||||
| 			} | ||||
| 			cin.cMaskFlags.pipeAligned = 1; | ||||
| 			cin.cMaskFlags.rbAligned = 1; | ||||
| 			cin.colorFlags = in->flags; | ||||
| 			cin.resourceType = in->resourceType; | ||||
| 			cin.unalignedWidth = in->width; | ||||
| @@ -1169,7 +1056,6 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib, | ||||
| } | ||||
|  | ||||
| static int gfx9_compute_surface(ADDR_HANDLE addrlib, | ||||
| 				const struct radeon_info *info, | ||||
| 				const struct ac_surf_config *config, | ||||
| 				enum radeon_surf_mode mode, | ||||
| 				struct radeon_surf *surf) | ||||
| @@ -1198,38 +1084,12 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib, | ||||
| 			assert(0); | ||||
| 		} | ||||
| 	} else { | ||||
| 		switch (surf->bpe) { | ||||
| 		case 1: | ||||
| 			assert(!(surf->flags & RADEON_SURF_ZBUFFER)); | ||||
| 			AddrSurfInfoIn.format = ADDR_FMT_8; | ||||
| 			break; | ||||
| 		case 2: | ||||
| 			assert(surf->flags & RADEON_SURF_ZBUFFER || | ||||
| 			       !(surf->flags & RADEON_SURF_SBUFFER)); | ||||
| 			AddrSurfInfoIn.format = ADDR_FMT_16; | ||||
| 			break; | ||||
| 		case 4: | ||||
| 			assert(surf->flags & RADEON_SURF_ZBUFFER || | ||||
| 			       !(surf->flags & RADEON_SURF_SBUFFER)); | ||||
| 			AddrSurfInfoIn.format = ADDR_FMT_32; | ||||
| 			break; | ||||
| 		case 8: | ||||
| 			assert(!(surf->flags & RADEON_SURF_Z_OR_SBUFFER)); | ||||
| 			AddrSurfInfoIn.format = ADDR_FMT_32_32; | ||||
| 			break; | ||||
| 		case 16: | ||||
| 			assert(!(surf->flags & RADEON_SURF_Z_OR_SBUFFER)); | ||||
| 			AddrSurfInfoIn.format = ADDR_FMT_32_32_32_32; | ||||
| 			break; | ||||
| 		default: | ||||
| 			assert(0); | ||||
| 		} | ||||
| 		AddrSurfInfoIn.bpp = surf->bpe * 8; | ||||
| 	} | ||||
|  | ||||
| 	AddrSurfInfoIn.flags.color = !(surf->flags & RADEON_SURF_Z_OR_SBUFFER); | ||||
| 	AddrSurfInfoIn.flags.depth = (surf->flags & RADEON_SURF_ZBUFFER) != 0; | ||||
| 	AddrSurfInfoIn.flags.display = get_display_flag(config, surf); | ||||
| 	AddrSurfInfoIn.flags.display = (surf->flags & RADEON_SURF_SCANOUT) != 0; | ||||
| 	/* flags.texture currently refers to TC-compatible HTILE */ | ||||
| 	AddrSurfInfoIn.flags.texture = AddrSurfInfoIn.flags.color || | ||||
| 				       surf->flags & RADEON_SURF_TC_COMPATIBLE_HTILE; | ||||
| @@ -1257,10 +1117,6 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib, | ||||
| 	else | ||||
| 		AddrSurfInfoIn.numSlices = config->info.array_size; | ||||
|  | ||||
| 	/* This is propagated to HTILE/DCC/CMASK. */ | ||||
| 	AddrSurfInfoIn.flags.metaPipeUnaligned = 0; | ||||
| 	AddrSurfInfoIn.flags.metaRbUnaligned = 0; | ||||
|  | ||||
| 	switch (mode) { | ||||
| 	case RADEON_SURF_MODE_LINEAR_ALIGNED: | ||||
| 		assert(config->info.samples <= 1); | ||||
| @@ -1275,8 +1131,7 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib, | ||||
| 			break; | ||||
| 		} | ||||
|  | ||||
| 		r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn, | ||||
| 						    false, surf->flags, | ||||
| 		r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn, false, | ||||
| 						    &AddrSurfInfoIn.swizzleMode); | ||||
| 		if (r) | ||||
| 			return r; | ||||
| @@ -1300,8 +1155,7 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib, | ||||
| 	surf->u.gfx9.cmask_size = 0; | ||||
|  | ||||
| 	/* Calculate texture layout information. */ | ||||
| 	r = gfx9_compute_miptree(addrlib, config, surf, compressed, | ||||
| 				 &AddrSurfInfoIn); | ||||
| 	r = gfx9_compute_miptree(addrlib, surf, compressed, &AddrSurfInfoIn); | ||||
| 	if (r) | ||||
| 		return r; | ||||
|  | ||||
| @@ -1309,19 +1163,16 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib, | ||||
| 	if (surf->flags & RADEON_SURF_SBUFFER) { | ||||
| 		AddrSurfInfoIn.flags.stencil = 1; | ||||
| 		AddrSurfInfoIn.bpp = 8; | ||||
| 		AddrSurfInfoIn.format = ADDR_FMT_8; | ||||
|  | ||||
| 		if (!AddrSurfInfoIn.flags.depth) { | ||||
| 			r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn, | ||||
| 							    false, surf->flags, | ||||
| 			r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn, false, | ||||
| 							    &AddrSurfInfoIn.swizzleMode); | ||||
| 			if (r) | ||||
| 				return r; | ||||
| 		} else | ||||
| 			AddrSurfInfoIn.flags.depth = 0; | ||||
|  | ||||
| 		r = gfx9_compute_miptree(addrlib, config, surf, compressed, | ||||
| 					 &AddrSurfInfoIn); | ||||
| 		r = gfx9_compute_miptree(addrlib, surf, compressed, &AddrSurfInfoIn); | ||||
| 		if (r) | ||||
| 			return r; | ||||
| 	} | ||||
| @@ -1389,10 +1240,6 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib, | ||||
| 			assert(0); | ||||
| 	} | ||||
|  | ||||
| 	/* Temporary workaround to prevent VM faults and hangs. */ | ||||
| 	if (info->family == CHIP_VEGA12) | ||||
| 		surf->u.gfx9.fmask_size *= 8; | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| @@ -1408,7 +1255,7 @@ int ac_compute_surface(ADDR_HANDLE addrlib, const struct radeon_info *info, | ||||
| 		return r; | ||||
|  | ||||
| 	if (info->chip_class >= GFX9) | ||||
| 		return gfx9_compute_surface(addrlib, info, config, mode, surf); | ||||
| 		return gfx9_compute_surface(addrlib, config, mode, surf); | ||||
| 	else | ||||
| 		return gfx6_compute_surface(addrlib, info, config, mode, surf); | ||||
| } | ||||
|   | ||||
| @@ -147,8 +147,6 @@ struct gfx9_surf_layout { | ||||
|  | ||||
|     uint32_t                    fmask_alignment; | ||||
|     uint32_t                    cmask_alignment; | ||||
|  | ||||
|     uint8_t                     fmask_tile_swizzle; | ||||
| }; | ||||
|  | ||||
| struct radeon_surf { | ||||
| @@ -177,8 +175,7 @@ struct radeon_surf { | ||||
|     /* Tile swizzle can be OR'd with low bits of the BASE_256B address. | ||||
|      * The value is the same for all mipmap levels. Supported tile modes: | ||||
|      * - GFX6: Only macro tiling. | ||||
|      * - GFX9: Only *_X and *_T swizzle modes. Level 0 must not be in the mip | ||||
|      *   tail. | ||||
|      * - GFX9: Only *_X swizzle modes. Level 0 must not be in the mip tail. | ||||
|      * | ||||
|      * Only these surfaces are allowed to set it: | ||||
|      * - color (if it doesn't have to be displayable) | ||||
| @@ -219,10 +216,8 @@ struct ac_surf_info { | ||||
| 	uint32_t depth; | ||||
| 	uint8_t samples; | ||||
| 	uint8_t levels; | ||||
| 	uint8_t num_channels; /* heuristic for displayability */ | ||||
| 	uint16_t array_size; | ||||
| 	uint32_t *surf_index; /* Set a monotonic counter for tile swizzling. */ | ||||
| 	uint32_t *fmask_surf_index; /* GFX9+ */ | ||||
| }; | ||||
|  | ||||
| struct ac_surf_config { | ||||
|   | ||||
| @@ -92,9 +92,7 @@ enum radeon_family { | ||||
|     CHIP_POLARIS10, | ||||
|     CHIP_POLARIS11, | ||||
|     CHIP_POLARIS12, | ||||
|     CHIP_VEGAM, | ||||
|     CHIP_VEGA10, | ||||
|     CHIP_VEGA12, | ||||
|     CHIP_RAVEN, | ||||
|     CHIP_LAST, | ||||
| }; | ||||
|   | ||||
| @@ -36,6 +36,8 @@ amd_common_files = files( | ||||
|   'ac_llvm_util.c', | ||||
|   'ac_llvm_util.h', | ||||
|   'ac_shader_abi.h', | ||||
|   'ac_shader_info.c', | ||||
|   'ac_shader_info.h', | ||||
|   'ac_shader_util.c', | ||||
|   'ac_shader_util.h', | ||||
|   'ac_nir_to_llvm.c', | ||||
|   | ||||
| @@ -23,10 +23,6 @@ include Makefile.sources | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	$(top_srcdir)/include/vulkan/vk_platform.h \ | ||||
| 	$(top_srcdir)/include/vulkan/vulkan_core.h \ | ||||
| 	$(top_srcdir)/include/vulkan/vulkan_wayland.h \ | ||||
| 	$(top_srcdir)/include/vulkan/vulkan_xcb.h \ | ||||
| 	$(top_srcdir)/include/vulkan/vulkan_xlib.h \ | ||||
| 	$(top_srcdir)/include/vulkan/vulkan.h | ||||
|  | ||||
| lib_LTLIBRARIES = libvulkan_radeon.la | ||||
| @@ -117,11 +113,13 @@ nodist_EXTRA_libvulkan_radeon_la_SOURCES = dummy.cpp | ||||
| libvulkan_radeon_la_SOURCES = $(VULKAN_GEM_FILES) | ||||
|  | ||||
| vulkan_api_xml = $(top_srcdir)/src/vulkan/registry/vk.xml | ||||
| vk_android_native_buffer_xml = $(top_srcdir)/src/vulkan/registry/vk_android_native_buffer.xml | ||||
|  | ||||
| radv_entrypoints.c: radv_entrypoints_gen.py radv_extensions.py $(vulkan_api_xml) | ||||
| 	$(MKDIR_GEN) | ||||
| 	$(AM_V_GEN)$(PYTHON2) $(srcdir)/radv_entrypoints_gen.py \ | ||||
| 		--xml $(vulkan_api_xml) \ | ||||
| 		--xml $(vk_android_native_buffer_xml) \ | ||||
| 		--outdir $(builddir) | ||||
| radv_entrypoints.h: radv_entrypoints.c | ||||
|  | ||||
| @@ -130,9 +128,8 @@ radv_extensions.c: radv_extensions.py \ | ||||
| 	$(MKDIR_GEN) | ||||
| 	$(AM_V_GEN)$(PYTHON2) $(srcdir)/radv_extensions.py \ | ||||
| 		--xml $(vulkan_api_xml) \ | ||||
| 		--out-c radv_extensions.c \ | ||||
| 		--out-h radv_extensions.h | ||||
| radv_extensions.h: radv_extensions.c | ||||
| 		--xml $(vk_android_native_buffer_xml) \ | ||||
| 		--out $@ | ||||
|  | ||||
| vk_format_table.c: vk_format_table.py \ | ||||
| 		   vk_format_parse.py \ | ||||
| @@ -143,9 +140,10 @@ 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 \ | ||||
| 	radv_extensions.py \ | ||||
| 	radv_icd.py \ | ||||
| 	vk_format_layout.csv \ | ||||
| 	vk_format_parse.py \ | ||||
| 	vk_format_table.py \ | ||||
| @@ -169,12 +167,14 @@ 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 : radv_extensions.py radv_icd.py | ||||
| 	$(AM_V_GEN)$(PYTHON2) $(srcdir)/radv_icd.py \ | ||||
| 		--lib-path="${abs_top_builddir}/${LIB_DIR}" --out $@ | ||||
| dev_icd.json : dev_icd.json.in | ||||
| 	$(AM_V_GEN) $(SED) \ | ||||
| 		-e "s#@libvulkan_radeon_path@#${abs_top_builddir}/${LIB_DIR}/libvulkan_radeon.so#" \ | ||||
| 		< $(srcdir)/dev_icd.json.in > $@ | ||||
|  | ||||
| radeon_icd.@host_cpu@.json : radv_extensions.py radv_icd.py | ||||
| 	$(AM_V_GEN)$(PYTHON2) $(srcdir)/radv_icd.py \ | ||||
| 		--lib-path="${libdir}" --out $@ | ||||
| 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 | ||||
|   | ||||
| @@ -53,14 +53,12 @@ VULKAN_FILES := \ | ||||
| 	radv_meta_resolve.c \ | ||||
| 	radv_meta_resolve_cs.c \ | ||||
| 	radv_meta_resolve_fs.c \ | ||||
| 	radv_nir_to_llvm.c \ | ||||
| 	radv_pass.c \ | ||||
| 	radv_pipeline.c \ | ||||
| 	radv_pipeline_cache.c \ | ||||
| 	radv_private.h \ | ||||
| 	radv_radeon_winsys.h \ | ||||
| 	radv_shader.c \ | ||||
| 	radv_shader_info.c \ | ||||
| 	radv_shader.h \ | ||||
| 	radv_query.c \ | ||||
| 	radv_util.c \ | ||||
| @@ -83,6 +81,5 @@ VULKAN_WSI_X11_FILES := \ | ||||
| VULKAN_GENERATED_FILES := \ | ||||
| 	radv_entrypoints.c \ | ||||
| 	radv_entrypoints.h \ | ||||
| 	radv_extensions.c \ | ||||
| 	radv_extensions.h | ||||
| 	radv_extensions.c | ||||
|  | ||||
|   | ||||
							
								
								
									
										7
									
								
								src/amd/vulkan/dev_icd.json.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/amd/vulkan/dev_icd.json.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| { | ||||
|     "file_format_version": "1.0.0", | ||||
|     "ICD": { | ||||
|         "library_path": "@libvulkan_radeon_path@", | ||||
|         "api_version": "1.0.3" | ||||
|     } | ||||
| } | ||||
| @@ -31,11 +31,10 @@ radv_entrypoints = custom_target( | ||||
|  | ||||
| radv_extensions_c = custom_target( | ||||
|   'radv_extensions.c', | ||||
|   input : ['radv_extensions.py', vk_api_xml], | ||||
|   output : ['radv_extensions.c', 'radv_extensions.h'], | ||||
|   input : ['radv_extensions.py', vk_api_xml, vk_android_native_buffer_xml], | ||||
|   output : ['radv_extensions.c'], | ||||
|   command : [ | ||||
|     prog_python2, '@INPUT0@', '--xml', '@INPUT1@', '--out-c', '@OUTPUT0@', | ||||
|     '--out-h', '@OUTPUT1@' | ||||
|     prog_python2, '@INPUT0@', '--xml', '@INPUT1@', '--xml', '@INPUT2@', '--out', '@OUTPUT@', | ||||
|   ], | ||||
| ) | ||||
|  | ||||
| @@ -80,7 +79,6 @@ libradv_files = files( | ||||
|   'radv_meta_resolve.c', | ||||
|   'radv_meta_resolve_cs.c', | ||||
|   'radv_meta_resolve_fs.c', | ||||
|   'radv_nir_to_llvm.c', | ||||
|   'radv_pass.c', | ||||
|   'radv_pipeline.c', | ||||
|   'radv_pipeline_cache.c', | ||||
| @@ -88,7 +86,6 @@ libradv_files = files( | ||||
|   'radv_radeon_winsys.h', | ||||
|   'radv_shader.c', | ||||
|   'radv_shader.h', | ||||
|   'radv_shader_info.c', | ||||
|   'radv_query.c', | ||||
|   'radv_util.c', | ||||
|   'radv_util.h', | ||||
| @@ -136,30 +133,18 @@ libvulkan_radeon = shared_library( | ||||
|   install : true, | ||||
| ) | ||||
|  | ||||
| radeon_icd = custom_target( | ||||
|   'radeon_icd', | ||||
|   input : 'radv_icd.py', | ||||
|   output : 'radeon_icd.@0@.json'.format(host_machine.cpu()), | ||||
|   command : [ | ||||
|     prog_python2, '@INPUT@', | ||||
|     '--lib-path', join_paths(get_option('prefix'), get_option('libdir')), | ||||
|     '--out', '@OUTPUT@', | ||||
|   ], | ||||
|   depend_files : files('radv_extensions.py'), | ||||
|   build_by_default : true, | ||||
|   install_dir : with_vulkan_icd_dir, | ||||
|   install : true, | ||||
| ) | ||||
| radv_data = configuration_data() | ||||
| radv_data.set('install_libdir', join_paths(get_option('prefix'), get_option('libdir'))) | ||||
| radv_data.set('libvulkan_radeon_path', libvulkan_radeon.full_path()) | ||||
|  | ||||
| radv_dev_icd = custom_target( | ||||
|   'radv_dev_icd', | ||||
|   input : 'radv_icd.py', | ||||
|   output : 'dev_icd.json', | ||||
|   command : [ | ||||
|     prog_python2, '@INPUT@', '--lib-path', meson.current_build_dir(), | ||||
|     '--out', '@OUTPUT@' | ||||
|   ], | ||||
|   depend_files : files('radv_extensions.py'), | ||||
|   build_by_default : true, | ||||
|   install : false, | ||||
| configure_file( | ||||
|   configuration : radv_data, | ||||
|   input : 'radeon_icd.json.in', | ||||
|   output : 'radeon_icd.@0@.json'.format(host_machine.cpu()), | ||||
|   install_dir : with_vulkan_icd_dir, | ||||
| ) | ||||
| configure_file( | ||||
|   configuration : radv_data, | ||||
|   input : 'dev_icd.json.in', | ||||
|   output : 'dev_icd.json' | ||||
| ) | ||||
|   | ||||
							
								
								
									
										7
									
								
								src/amd/vulkan/radeon_icd.json.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/amd/vulkan/radeon_icd.json.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| { | ||||
|     "file_format_version": "1.0.0", | ||||
|     "ICD": { | ||||
|         "library_path": "@install_libdir@/libvulkan_radeon.so", | ||||
|         "api_version": "1.0.3" | ||||
|     } | ||||
| } | ||||
| @@ -230,11 +230,11 @@ VkResult radv_GetSwapchainGrallocUsageANDROID( | ||||
| 	}; | ||||
|  | ||||
| 	/* Check that requested format and usage are supported. */ | ||||
| 	result = radv_GetPhysicalDeviceImageFormatProperties2(phys_dev_h, | ||||
| 	                                                      &image_format_info, &image_format_props); | ||||
| 	result = radv_GetPhysicalDeviceImageFormatProperties2KHR(phys_dev_h, | ||||
| 	                                                         &image_format_info, &image_format_props); | ||||
| 	if (result != VK_SUCCESS) { | ||||
| 		return vk_errorf(result, | ||||
| 		                 "radv_GetPhysicalDeviceImageFormatProperties2 failed " | ||||
| 		                 "radv_GetPhysicalDeviceImageFormatProperties2KHR failed " | ||||
| 		                 "inside %s", __func__); | ||||
| 	} | ||||
|  | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user