Compare commits
	
		
			180 Commits
		
	
	
		
			mesa-18.0.
			...
			chadv/wip/
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 3302281f00 | ||
|  | 54f07a7ebc | ||
|  | bf85c6b160 | ||
|  | 272fd36b24 | ||
|  | 2aaeab9fdd | ||
|  | 0d7eae5847 | ||
|  | 3e8d93e1ff | ||
|  | b239996965 | ||
|  | b16fbdb135 | ||
|  | c9bda01108 | ||
|  | 68ceff0712 | ||
|  | d7681cc943 | ||
|  | a0f76c6a3b | ||
|  | 7c5b8d163f | ||
|  | 667a7dfd55 | ||
|  | d9619b2fba | ||
|  | 26796ca5ca | ||
|  | f45c9bb5d6 | ||
|  | 9b34b2cee4 | ||
|  | 96f37fa7e0 | ||
|  | 730d7edbd7 | ||
|  | 64278fcd0c | ||
|  | c8541b9630 | ||
|  | 7f3baaf5c7 | ||
|  | 5c32cb2c08 | ||
|  | fd1aa710bc | ||
|  | 7d019c72d8 | ||
|  | 6613048d9a | ||
|  | 037026e90f | ||
|  | ec23d1a68a | ||
|  | 68a7077012 | ||
|  | 3519cdfcfa | ||
|  | a058539d21 | ||
|  | 6efb3d854f | ||
|  | d78b9b2232 | ||
|  | dafe2a86ab | ||
|  | 7152fe4723 | ||
|  | 838e746fc9 | ||
|  | d1d6bf7605 | ||
|  | 14c7f4783a | ||
|  | 69fae1186f | ||
|  | 26ae9a5650 | ||
|  | 00898cd71d | ||
|  | 4e763cb3c1 | ||
|  | ed61e74c4d | ||
|  | 8142ac25cc | ||
|  | 794d5bbee5 | ||
|  | 6d25795e51 | ||
|  | 0647d5800f | ||
|  | e07a838408 | ||
|  | b17ff37e6a | ||
|  | 42c96d393b | ||
|  | 1171bddb74 | ||
|  | a10faeae28 | ||
|  | 5ec83db3fc | ||
|  | 0a04b702a8 | ||
|  | dab369a824 | ||
|  | e96314b6cf | ||
|  | d226caef7a | ||
|  | 4bcb10cacc | ||
|  | 403ab71152 | ||
|  | b178753c0a | ||
|  | 8940a624ae | ||
|  | 7cc5c96a9a | ||
|  | d1e6cf4639 | ||
|  | 7bc213a644 | ||
|  | 093ae29b3c | ||
|  | d2d5439412 | ||
|  | b3bc46f1c7 | ||
|  | bf0c7200bd | ||
|  | d38e92b6e9 | ||
|  | 55c4921326 | ||
|  | 78a7e2a2d4 | ||
|  | 3be7bb6741 | ||
|  | f539ea0e8b | ||
|  | e4f186d3ae | ||
|  | 8269b7ec4b | ||
|  | 577af89bd1 | ||
|  | 040c0df11d | ||
|  | 699ff16e54 | ||
|  | c2d020336c | ||
|  | 8ed01c0a57 | ||
|  | 957c66de1c | ||
|  | c798200543 | ||
|  | f3caa303cf | ||
|  | fdd99c97ec | ||
|  | a9bc277482 | ||
|  | 3bcc13539b | ||
|  | 9180ce3784 | ||
|  | adef4109a0 | ||
|  | 55bc1d0a19 | ||
|  | a240fd6d13 | ||
|  | 5743c83893 | ||
|  | c9c818ad5e | ||
|  | ce1a2a25d3 | ||
|  | cb9d207ff3 | ||
|  | 0d11c8abfe | ||
|  | 8b2c15a60f | ||
|  | e2036d7b38 | ||
|  | 58d0ad6ff8 | ||
|  | ee939e7327 | ||
|  | 7e04e574c7 | ||
|  | b9713c9d98 | ||
|  | 40c905f3c2 | ||
|  | 7da8440504 | ||
|  | 797dbe4efa | ||
|  | 2567e1de88 | ||
|  | 3111ec7bdb | ||
|  | 15ec317be8 | ||
|  | 53667c7f2e | ||
|  | add373f7dd | ||
|  | 1f145df1c3 | ||
|  | 34ac137d3f | ||
|  | 26835cf6e3 | ||
|  | 4cf6b9e7ed | ||
|  | b4cc8b9b12 | ||
|  | c40cf117ee | ||
|  | 1b206e3b58 | ||
|  | 9e1698b17b | ||
|  | 2c6986c3b5 | ||
|  | 844b437034 | ||
|  | e759beb906 | ||
|  | bd5db7af2a | ||
|  | b9ddb51c19 | ||
|  | d1060ba31f | ||
|  | 7db7159536 | ||
|  | a44f33f740 | ||
|  | 5cd286710e | ||
|  | e012ec8775 | ||
|  | b0b9db69d8 | ||
|  | 9db1478039 | ||
|  | 2b741baf84 | ||
|  | 2eff2c8768 | ||
|  | 19b62847e0 | ||
|  | d5cc7e47a8 | ||
|  | 9b44ef94b4 | ||
|  | a12ca3b231 | ||
|  | 9710fbbcdf | ||
|  | b4bf9f6a41 | ||
|  | 2516c3217d | ||
|  | 383b360348 | ||
|  | 71571aab14 | ||
|  | 13bfb83b31 | ||
|  | 4c82f2c3a9 | ||
|  | 14c40ebd0f | ||
|  | 77839e9ba8 | ||
|  | 7826bc9538 | ||
|  | f0951a6aa9 | ||
|  | 3eb187f376 | ||
|  | 0c20849f9c | ||
|  | fb09360ea5 | ||
|  | 1664322838 | ||
|  | c7e625df69 | ||
|  | 5addf041ef | ||
|  | f4b6883ebc | ||
|  | 70ee0a4525 | ||
|  | 17d988bfaa | ||
|  | 03cf1953ad | ||
|  | 4fb6b83968 | ||
|  | 26b44eadac | ||
|  | e22cf6e9b4 | ||
|  | 7df1b901b9 | ||
|  | cbb8aec81c | ||
|  | ff8c152640 | ||
|  | 0fef0c7deb | ||
|  | 66603bff6f | ||
|  | b0082632eb | ||
|  | 3da6dd8003 | ||
|  | 2e33d68046 | ||
|  | 3b699fdd19 | ||
|  | a2123968fa | ||
|  | 1ce3fbeb91 | ||
|  | 8f2bc19856 | ||
|  | b6f0c16a89 | ||
|  | 5c8eb88553 | ||
|  | afdb9da492 | ||
|  | b8f10fdf34 | ||
|  | ea132f9265 | ||
|  | 08b41e70dd | ||
|  | ae720e2873 | 
							
								
								
									
										64
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -30,38 +30,6 @@ env: | ||||
|  | ||||
| matrix: | ||||
|   include: | ||||
|     - env: | ||||
|         - LABEL="meson Vulkan" | ||||
|         - BUILD=meson | ||||
|         - MESON_OPTIONS="-Ddri-drivers= -Dgallium-drivers=" | ||||
|       addons: | ||||
|         apt: | ||||
|           sources: | ||||
|             - llvm-toolchain-trusty-3.9 | ||||
|           packages: | ||||
|             # LLVM packaging is broken and misses these dependencies | ||||
|             - libedit-dev | ||||
|             # From sources above | ||||
|             - llvm-3.9-dev | ||||
|             # Common | ||||
|             - xz-utils | ||||
|             - libexpat1-dev | ||||
|             - libelf-dev | ||||
|             - python3-pip | ||||
|     - env: | ||||
|         - LABEL="meson loaders/classic DRI" | ||||
|         - BUILD=meson | ||||
|         - MESON_OPTIONS="-Dvulkan-drivers= -Dgallium-drivers=" | ||||
|       addons: | ||||
|         apt: | ||||
|           packages: | ||||
|             - xz-utils | ||||
|             - x11proto-xf86vidmode-dev | ||||
|             - libexpat1-dev | ||||
|             - libx11-xcb-dev | ||||
|             - libxdamage-dev | ||||
|             - libxfixes-dev | ||||
|             - python3-pip | ||||
|     - env: | ||||
|         - LABEL="make loaders/classic DRI" | ||||
|         - BUILD=make | ||||
| @@ -396,6 +364,38 @@ matrix: | ||||
|             - libexpat1-dev | ||||
|             - libx11-xcb-dev | ||||
|             - libelf-dev | ||||
|     - env: | ||||
|         - LABEL="meson Vulkan" | ||||
|         - BUILD=meson | ||||
|         - MESON_OPTIONS="-Ddri-drivers= -Dgallium-drivers=" | ||||
|       addons: | ||||
|         apt: | ||||
|           sources: | ||||
|             - llvm-toolchain-trusty-3.9 | ||||
|           packages: | ||||
|             # LLVM packaging is broken and misses these dependencies | ||||
|             - libedit-dev | ||||
|             # From sources above | ||||
|             - llvm-3.9-dev | ||||
|             # Common | ||||
|             - xz-utils | ||||
|             - libexpat1-dev | ||||
|             - libelf-dev | ||||
|             - python3-pip | ||||
|     - env: | ||||
|         - LABEL="meson loaders/classic DRI" | ||||
|         - BUILD=meson | ||||
|         - MESON_OPTIONS="-Dvulkan-drivers= -Dgallium-drivers=" | ||||
|       addons: | ||||
|         apt: | ||||
|           packages: | ||||
|             - xz-utils | ||||
|             - x11proto-xf86vidmode-dev | ||||
|             - libexpat1-dev | ||||
|             - libx11-xcb-dev | ||||
|             - libxdamage-dev | ||||
|             - libxfixes-dev | ||||
|             - python3-pip | ||||
|  | ||||
| install: | ||||
|   - pip install --user mako | ||||
|   | ||||
| @@ -31,7 +31,6 @@ LOCAL_C_INCLUDES += \ | ||||
|  | ||||
| MESA_VERSION := $(shell cat $(MESA_TOP)/VERSION) | ||||
| LOCAL_CFLAGS += \ | ||||
| 	-Wno-error \ | ||||
| 	-Wno-unused-parameter \ | ||||
| 	-Wno-pointer-arith \ | ||||
| 	-Wno-missing-field-initializers \ | ||||
| @@ -57,9 +56,6 @@ LOCAL_CFLAGS += \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_FORMAT \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_PACKED \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_ALIAS \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_NORETURN \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT \ | ||||
| 	-DHAVE___BUILTIN_CTZ \ | ||||
| 	-DHAVE___BUILTIN_POPCOUNT \ | ||||
| 	-DHAVE___BUILTIN_POPCOUNTLL \ | ||||
| @@ -69,8 +65,6 @@ LOCAL_CFLAGS += \ | ||||
| 	-DHAVE_PTHREAD=1 \ | ||||
| 	-DHAVE_DLADDR \ | ||||
| 	-DHAVE_DL_ITERATE_PHDR \ | ||||
| 	-DHAVE_LINUX_FUTEX_H \ | ||||
| 	-DHAVE_ZLIB \ | ||||
| 	-DMAJOR_IN_SYSMACROS \ | ||||
| 	-fvisibility=hidden \ | ||||
| 	-Wno-sign-compare | ||||
|   | ||||
| @@ -39,7 +39,6 @@ endif | ||||
| MESA_DRI_MODULE_REL_PATH := dri | ||||
| MESA_DRI_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/$(MESA_DRI_MODULE_REL_PATH) | ||||
| MESA_DRI_MODULE_UNSTRIPPED_PATH := $(TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED)/$(MESA_DRI_MODULE_REL_PATH) | ||||
| MESA_DRI_LDFLAGS := -Wl,--build-id=sha1 | ||||
|  | ||||
| MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk | ||||
| MESA_PYTHON2 := python | ||||
|   | ||||
| @@ -35,7 +35,6 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \ | ||||
| 	--enable-glx-tls \ | ||||
| 	--enable-nine \ | ||||
| 	--enable-opencl \ | ||||
| 	--enable-opencl-icd \ | ||||
| 	--enable-opengl \ | ||||
| 	--enable-va \ | ||||
| 	--enable-vdpau \ | ||||
| @@ -59,12 +58,7 @@ EXTRA_DIST = \ | ||||
| 	scons \ | ||||
| 	SConstruct \ | ||||
| 	build-support/conftest.dyn \ | ||||
| 	build-support/conftest.map \ | ||||
| 	meson.build \ | ||||
| 	meson_options.txt \ | ||||
| 	bin/meson.build \ | ||||
| 	include/meson.build \ | ||||
| 	bin/install_megadrivers.py | ||||
| 	build-support/conftest.map | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	include/c99_alloca.h \ | ||||
|   | ||||
							
								
								
									
										10
									
								
								PRESUBMIT.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								PRESUBMIT.cfg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| # This sample config file disables all of the ChromiumOS source style checks. | ||||
| # Comment out the disable-flags for any checks you want to leave enabled. | ||||
|  | ||||
| [Hook Overrides] | ||||
| stray_whitespace_check: false | ||||
| long_line_check: false | ||||
| cros_license_check: false | ||||
| tab_check: false | ||||
| bug_field_check: false | ||||
| test_field_check: false | ||||
| @@ -74,15 +74,6 @@ EGL | ||||
| R: Eric Engestrom <eric@engestrom.ch> | ||||
| F: src/egl/ | ||||
|  | ||||
| HAIKU | ||||
| R: Alexander von Gluck IV <kallisti5@unixzen.com> | ||||
| F: include/HaikuGL/ | ||||
| F: src/egl/drivers/haiku/ | ||||
| F: src/gallium/state_trackers/hgl/ | ||||
| F: src/gallium/targets/haiku-softpipe/ | ||||
| F: src/gallium/winsys/sw/hgl/ | ||||
| F: src/hgl/ | ||||
|  | ||||
| GALLIUM LOADER | ||||
| R: Emil Velikov <emil.l.velikov@gmail.com> | ||||
| F: src/gallium/auxiliary/pipe-loader/ | ||||
|   | ||||
| @@ -6,7 +6,6 @@ The output of this script goes to stdout. | ||||
| """ | ||||
|  | ||||
|  | ||||
| import argparse | ||||
| import os | ||||
| import os.path | ||||
| import subprocess | ||||
| @@ -28,22 +27,10 @@ def get_git_sha1(): | ||||
|         git_sha1 = '' | ||||
|     return git_sha1 | ||||
|  | ||||
| parser = argparse.ArgumentParser() | ||||
| parser.add_argument('--output', help='File to write the #define in', | ||||
|         required=True) | ||||
| args = parser.parse_args() | ||||
|  | ||||
| git_sha1 = os.environ.get('MESA_GIT_SHA1_OVERRIDE', get_git_sha1())[:10] | ||||
| if git_sha1: | ||||
|     git_sha1_h_in_path = os.path.join(os.path.dirname(sys.argv[0]), | ||||
|             '..', 'src', 'git_sha1.h.in') | ||||
|     with open(git_sha1_h_in_path , 'r') as git_sha1_h_in: | ||||
|         new_sha1 = git_sha1_h_in.read().replace('@VCS_TAG@', git_sha1) | ||||
|         if os.path.isfile(args.output): | ||||
|             with open(args.output, 'r') as git_sha1_h: | ||||
|                 if git_sha1_h.read() == new_sha1: | ||||
|                     quit() | ||||
|         with open(args.output, 'w') as git_sha1_h: | ||||
|             git_sha1_h.write(new_sha1) | ||||
| else: | ||||
|     open(args.output, 'w').close() | ||||
|         sys.stdout.write(git_sha1_h_in.read().replace('@VCS_TAG@', git_sha1)) | ||||
|   | ||||
| @@ -44,24 +44,10 @@ def main(): | ||||
|  | ||||
|     for each in args.drivers: | ||||
|         driver = os.path.join(to, each) | ||||
|  | ||||
|         if os.path.exists(driver): | ||||
|             os.unlink(driver) | ||||
|         print('installing {} to {}'.format(args.megadriver, driver)) | ||||
|         print('installing {} to {}'.format(args.megadriver, to)) | ||||
|         os.link(master, driver) | ||||
|  | ||||
|         try: | ||||
|             ret = os.getcwd() | ||||
|             os.chdir(to) | ||||
|  | ||||
|             name, ext = os.path.splitext(each) | ||||
|             while ext != '.so': | ||||
|                 if os.path.exists(name): | ||||
|                     os.unlink(name) | ||||
|                 os.symlink(driver, name) | ||||
|                 name, ext = os.path.splitext(name) | ||||
|         finally: | ||||
|             os.chdir(ret) | ||||
|     os.unlink(master) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,21 +0,0 @@ | ||||
| # Copyright © 2017 Eric Engestrom | ||||
|  | ||||
| # 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 | ||||
| # 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. | ||||
|  | ||||
| git_sha1_gen_py = files('git_sha1_gen.py') | ||||
| @@ -1,35 +0,0 @@ | ||||
| #!/usr/bin/env python | ||||
| # encoding=utf-8 | ||||
| # 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 | ||||
| # 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 | ||||
| # 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. | ||||
|  | ||||
| from __future__ import print_function | ||||
| import os | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     filename = os.path.join(os.environ['MESON_SOURCE_ROOT'], 'VERSION') | ||||
|     with open(filename) as f: | ||||
|         version = f.read().strip() | ||||
|     print(version, end='') | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
							
								
								
									
										132
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										132
									
								
								configure.ac
									
									
									
									
									
								
							| @@ -74,11 +74,11 @@ AC_SUBST([OPENCL_VERSION]) | ||||
| # in the first entry. | ||||
| LIBDRM_REQUIRED=2.4.75 | ||||
| LIBDRM_RADEON_REQUIRED=2.4.71 | ||||
| LIBDRM_AMDGPU_REQUIRED=2.4.89 | ||||
| LIBDRM_AMDGPU_REQUIRED=2.4.85 | ||||
| LIBDRM_INTEL_REQUIRED=2.4.75 | ||||
| LIBDRM_NVVIEUX_REQUIRED=2.4.66 | ||||
| LIBDRM_NOUVEAU_REQUIRED=2.4.66 | ||||
| LIBDRM_FREEDRENO_REQUIRED=2.4.89 | ||||
| LIBDRM_FREEDRENO_REQUIRED=2.4.74 | ||||
| LIBDRM_ETNAVIV_REQUIRED=2.4.82 | ||||
|  | ||||
| dnl Versions for external dependencies | ||||
| @@ -111,10 +111,6 @@ dnl Check for progs | ||||
| AC_PROG_CPP | ||||
| AC_PROG_CC | ||||
| AC_PROG_CXX | ||||
| dnl add this here, so the help for this environmnet variable is close to | ||||
| 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 | ||||
| AM_PROG_AS | ||||
| AX_CHECK_GNU_MAKE | ||||
| @@ -124,7 +120,6 @@ AC_PROG_MKDIR_P | ||||
|  | ||||
| AC_SYS_LARGEFILE | ||||
|  | ||||
|  | ||||
| LT_PREREQ([2.2]) | ||||
| LT_INIT([disable-static]) | ||||
|  | ||||
| @@ -250,7 +245,6 @@ AX_GCC_FUNC_ATTRIBUTE([visibility]) | ||||
| AX_GCC_FUNC_ATTRIBUTE([warn_unused_result]) | ||||
| AX_GCC_FUNC_ATTRIBUTE([weak]) | ||||
| AX_GCC_FUNC_ATTRIBUTE([alias]) | ||||
| AX_GCC_FUNC_ATTRIBUTE([noreturn]) | ||||
|  | ||||
| AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes) | ||||
|  | ||||
| @@ -315,11 +309,11 @@ AC_LANG_POP([C++]) | ||||
| # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which | ||||
| #   supports most of C99) | ||||
| # - the rest has no compiler compiler restrictions | ||||
| AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith],                 [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=pointer-arith"]) | ||||
| AX_CHECK_COMPILE_FLAG([-Werror=vla],                           [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla"]) | ||||
| AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith],                 [MSVC2013_COMPAT_CFLAGS="-Werror=pointer-arith"]) | ||||
| AX_CHECK_COMPILE_FLAG([-Werror=vla],                           [MSVC2013_COMPAT_CFLAGS="-Werror=vla"]) | ||||
| AC_LANG_PUSH([C++]) | ||||
| AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith],                 [MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=pointer-arith"]) | ||||
| AX_CHECK_COMPILE_FLAG([-Werror=vla],                           [MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla"]) | ||||
| AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith],                 [MSVC2013_COMPAT_CXXFLAGS="-Werror=pointer-arith"]) | ||||
| AX_CHECK_COMPILE_FLAG([-Werror=vla],                           [MSVC2013_COMPAT_CXXFLAGS="-Werror=vla"]) | ||||
| AC_LANG_POP([C++]) | ||||
|  | ||||
| AC_SUBST([MSVC2013_COMPAT_CFLAGS]) | ||||
| @@ -333,56 +327,6 @@ if test "x$GCC" = xyes; then | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| dnl | ||||
| dnl Check whether C++11 is supported, if the environment variable | ||||
| dnl CXX11_CXXFLAGS is set it takes precedence. | ||||
| dnl | ||||
|  | ||||
| AC_LANG_PUSH([C++]) | ||||
|  | ||||
| check_cxx11_available() { | ||||
|     output_support=$1 | ||||
|     AC_COMPILE_IFELSE( | ||||
|         [AC_LANG_PROGRAM([ | ||||
|              #if !(__cplusplus >= 201103L) | ||||
|              #error | ||||
|              #endif | ||||
|              #include <tuple> | ||||
|         ]) | ||||
|     ], [ | ||||
|          AC_MSG_RESULT(yes) | ||||
|          cxx11_support=yes | ||||
|     ], AC_MSG_RESULT(no)) | ||||
|     eval "$output_support=\$cxx11_support" | ||||
| } | ||||
|  | ||||
| HAVE_CXX11=no | ||||
| save_CXXFLAGS="$CXXFLAGS" | ||||
|  | ||||
| dnl If the user provides a flag to enable c++11, then we test only this | ||||
| if test "x$CXX11_CXXFLAGS" != "x"; then | ||||
|    CXXFLAGS="$CXXFLAGS $CXX11_CXXFLAGS" | ||||
|    AC_MSG_CHECKING(whether c++11 is enabled by via $CXX11_CXXFLAGS) | ||||
|    check_cxx11_available HAVE_CXX11 | ||||
| else | ||||
|    dnl test whether c++11 is enabled by default | ||||
|    AC_MSG_CHECKING(whether c++11 is enabled by default) | ||||
|    check_cxx11_available HAVE_CXX11 | ||||
|  | ||||
|    dnl C++11 not enabled by default, test whether -std=c++11 does the job | ||||
|    if test "x$HAVE_CXX11" != "xyes"; then | ||||
|        CXX11_CXXFLAGS=-std=c++11 | ||||
|        CXXFLAGS="$CXXFLAGS $CXX11_CXXFLAGS" | ||||
|        AC_MSG_CHECKING(whether c++11 is enabled by via $CXX11_CXXFLAGS) | ||||
|        check_cxx11_available HAVE_CXX11 | ||||
|    fi | ||||
| fi | ||||
|  | ||||
| CXXFLAGS="$save_CXXFLAGS" | ||||
| AM_CONDITIONAL(HAVE_STD_CXX11, test "x$HAVE_CXX11" = "xyes") | ||||
| AC_SUBST(CXX11_CXXFLAGS) | ||||
| AC_LANG_POP([C++]) | ||||
|  | ||||
| dnl even if the compiler appears to support it, using visibility attributes isn't | ||||
| dnl going to do anything useful currently on cygwin apart from emit lots of warnings | ||||
| case "$host_os" in | ||||
| @@ -395,10 +339,8 @@ esac | ||||
| AC_SUBST([VISIBILITY_CFLAGS]) | ||||
| AC_SUBST([VISIBILITY_CXXFLAGS]) | ||||
|  | ||||
| dnl For some reason, the test for -Wno-foo always succeeds with gcc, even if the | ||||
| dnl option is not supported. Hence, check for -Wfoo instead. | ||||
| AX_CHECK_COMPILE_FLAG([-Woverride-init],                    [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-override-init"])         # gcc | ||||
| AX_CHECK_COMPILE_FLAG([-Winitializer-overrides],            [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-initializer-overrides"]) # clang | ||||
| AX_CHECK_COMPILE_FLAG([-Wno-override-init],                    [WNO_OVERRIDE_INIT="-Wno-override-init"])         # gcc | ||||
| AX_CHECK_COMPILE_FLAG([-Wno-initializer-overrides],            [WNO_OVERRIDE_INIT="-Wno-initializer-overrides"]) # clang | ||||
| AC_SUBST([WNO_OVERRIDE_INIT]) | ||||
|  | ||||
| dnl | ||||
| @@ -441,9 +383,11 @@ if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then | ||||
|     AC_MSG_CHECKING(whether -latomic is needed) | ||||
|     AC_LINK_IFELSE([AC_LANG_SOURCE([[ | ||||
|     #include <stdint.h> | ||||
|     uint64_t v; | ||||
|     struct { | ||||
|         uint64_t* v; | ||||
|     } x; | ||||
|     int main() { | ||||
|         return (int)__atomic_load_n(&v, __ATOMIC_ACQUIRE); | ||||
|         return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE); | ||||
|     }]])], GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=no, GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=yes) | ||||
|     AC_MSG_RESULT($GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC) | ||||
|     if test "x$GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC" = xyes; then | ||||
| @@ -851,8 +795,6 @@ AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"]) | ||||
| AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"]) | ||||
| AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"]) | ||||
| AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"]) | ||||
| AC_CHECK_FUNC([timespec_get], [DEFINES="$DEFINES -DHAVE_TIMESPEC_GET"]) | ||||
| AC_CHECK_FUNC([memfd_create], [DEFINES="$DEFINES -DHAVE_MEMFD_CREATE"]) | ||||
|  | ||||
| AC_MSG_CHECKING([whether strtod has locale support]) | ||||
| AC_LINK_IFELSE([AC_LANG_SOURCE([[ | ||||
| @@ -906,7 +848,6 @@ AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"]) | ||||
|  | ||||
| dnl Check for zlib | ||||
| PKG_CHECK_MODULES([ZLIB], [zlib >= $ZLIB_REQUIRED]) | ||||
| DEFINES="$DEFINES -DHAVE_ZLIB" | ||||
|  | ||||
| dnl Check for pthreads | ||||
| AX_PTHREAD | ||||
| @@ -941,9 +882,6 @@ if test "x$pthread_stubs_possible" = xyes; then | ||||
|     PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4) | ||||
| fi | ||||
|  | ||||
| dnl Check for futex for fast inline simple_mtx_t. | ||||
| AC_CHECK_HEADER([linux/futex.h], [DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"]) | ||||
|  | ||||
| dnl SELinux awareness. | ||||
| AC_ARG_ENABLE([selinux], | ||||
|     [AS_HELP_STRING([--enable-selinux], | ||||
| @@ -1319,9 +1257,9 @@ AC_ARG_ENABLE([opencl], | ||||
| AC_ARG_ENABLE([opencl_icd], | ||||
|    [AS_HELP_STRING([--enable-opencl-icd], | ||||
|           [Build an OpenCL ICD library to be loaded by an ICD implementation | ||||
|            @<:@default=enabled@:>@])], | ||||
|            @<:@default=disabled@:>@])], | ||||
|     [enable_opencl_icd="$enableval"], | ||||
|     [enable_opencl_icd=yes]) | ||||
|     [enable_opencl_icd=no]) | ||||
|  | ||||
| AC_ARG_ENABLE([gallium-tests], | ||||
|     [AS_HELP_STRING([--enable-gallium-tests], | ||||
| @@ -2303,8 +2241,8 @@ if test "x$enable_opencl" = xyes; then | ||||
|         AC_MSG_ERROR([cannot enable OpenCL without Gallium]) | ||||
|     fi | ||||
|  | ||||
|     if test "x$HAVE_CXX11" != "xyes"; then | ||||
|        AC_MSG_ERROR([clover requires c++11 support]) | ||||
|     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then | ||||
|         AC_MSG_ERROR([gcc >= 4.7 is required to build clover]) | ||||
|     fi | ||||
|  | ||||
|     if test "x$have_libclc" = xno; then | ||||
| @@ -2591,9 +2529,10 @@ if test -n "$with_gallium_drivers"; then | ||||
|         xswr) | ||||
|             llvm_require_version $LLVM_REQUIRED_SWR "swr" | ||||
|  | ||||
|             if test "x$HAVE_CXX11" != "xyes"; then | ||||
|                 AC_MSG_ERROR([swr requires c++11 support]) | ||||
|             fi | ||||
|             swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \ | ||||
|                 ",-std=c++11" \ | ||||
|                 SWR_CXX11_CXXFLAGS | ||||
|             AC_SUBST([SWR_CXX11_CXXFLAGS]) | ||||
|  | ||||
|             swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \ | ||||
|                 ",-target-cpu=sandybridge,-mavx,-march=core-avx,-tp=sandybridge" \ | ||||
| @@ -2640,11 +2579,6 @@ if test -n "$with_gallium_drivers"; then | ||||
|                AC_MSG_ERROR([swr enabled but no swr architectures selected]) | ||||
|             fi | ||||
|  | ||||
|             # test if more than one swr arch configured | ||||
|             if test `echo $swr_archs | wc -w` -eq 1; then | ||||
|                 HAVE_SWR_BUILTIN=yes | ||||
|             fi | ||||
|  | ||||
|             HAVE_GALLIUM_SWR=yes | ||||
|             ;; | ||||
|         xvc4) | ||||
| @@ -2694,7 +2628,6 @@ AM_CONDITIONAL(HAVE_SWR_AVX, test "x$HAVE_SWR_AVX" = xyes) | ||||
| AM_CONDITIONAL(HAVE_SWR_AVX2, test "x$HAVE_SWR_AVX2" = xyes) | ||||
| AM_CONDITIONAL(HAVE_SWR_KNL, test "x$HAVE_SWR_KNL" = xyes) | ||||
| AM_CONDITIONAL(HAVE_SWR_SKX, test "x$HAVE_SWR_SKX" = xyes) | ||||
| AM_CONDITIONAL(HAVE_SWR_BUILTIN, test "x$HAVE_SWR_BUILTIN" = xyes) | ||||
|  | ||||
| dnl We need to validate some needed dependencies for renderonly drivers. | ||||
|  | ||||
| @@ -2857,8 +2790,8 @@ AM_CONDITIONAL(HAVE_ARM_ASM, test "x$asm_arch" = xarm) | ||||
|  | ||||
| AC_SUBST([NINE_MAJOR], 1) | ||||
| AC_SUBST([NINE_MINOR], 0) | ||||
| AC_SUBST([NINE_PATCH], 0) | ||||
| AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_PATCH") | ||||
| AC_SUBST([NINE_TINY], 0) | ||||
| AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY") | ||||
|  | ||||
| AC_SUBST([VDPAU_MAJOR], 1) | ||||
| AC_SUBST([VDPAU_MINOR], 0) | ||||
| @@ -2875,10 +2808,15 @@ AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x") | ||||
| AC_SUBST([XVMC_MAJOR], 1) | ||||
| AC_SUBST([XVMC_MINOR], 0) | ||||
|  | ||||
| AC_SUBST([XA_MAJOR], 2) | ||||
| AC_SUBST([XA_MINOR], 3) | ||||
| AC_SUBST([XA_PATCH], 0) | ||||
| AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_PATCH") | ||||
| XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h" | ||||
| XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'` | ||||
| XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'` | ||||
| XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'` | ||||
|  | ||||
| AC_SUBST([XA_MAJOR], $XA_MAJOR) | ||||
| AC_SUBST([XA_MINOR], $XA_MINOR) | ||||
| AC_SUBST([XA_TINY], $XA_TINY) | ||||
| AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY") | ||||
|  | ||||
| AC_ARG_ENABLE(valgrind, | ||||
|               [AS_HELP_STRING([--enable-valgrind], | ||||
| @@ -2960,7 +2898,6 @@ AC_CONFIG_FILES([Makefile | ||||
|                  src/gallium/state_trackers/va/Makefile | ||||
|                  src/gallium/state_trackers/vdpau/Makefile | ||||
|                  src/gallium/state_trackers/xa/Makefile | ||||
|                  src/gallium/state_trackers/xa/xa_tracker.h | ||||
|                  src/gallium/state_trackers/xvmc/Makefile | ||||
|                  src/gallium/targets/d3dadapter9/Makefile | ||||
|                  src/gallium/targets/d3dadapter9/d3d.pc | ||||
| @@ -3159,11 +3096,7 @@ fi | ||||
|  | ||||
| echo "" | ||||
| if test "x$HAVE_GALLIUM_SWR" != x; then | ||||
|     if test "x$HAVE_SWR_BUILTIN" = xyes; then | ||||
|         echo "        SWR archs:       $swr_archs (builtin)" | ||||
|     else | ||||
|         echo "        SWR archs:       $swr_archs" | ||||
|     fi | ||||
|     echo "        SWR archs:       $swr_archs" | ||||
| fi | ||||
|  | ||||
| dnl Libraries | ||||
| @@ -3183,7 +3116,6 @@ defines=`echo $DEFINES | $SED 's/^ *//;s/  */ /;s/ *$//'` | ||||
| echo "" | ||||
| echo "        CFLAGS:          $cflags" | ||||
| echo "        CXXFLAGS:        $cxxflags" | ||||
| echo "        CXX11_CXXFLAGS:  $CXX11_CXXFLAGS" | ||||
| echo "        LDFLAGS:         $ldflags" | ||||
| echo "        Macros:          $defines" | ||||
| echo "" | ||||
|   | ||||
| @@ -43,7 +43,6 @@ | ||||
| <li><a href="install.html" target="_parent">Compiling / Installing</a> | ||||
|   <ul> | ||||
|     <li><a href="autoconf.html" target="_parent">Autoconf</a></li> | ||||
|     <li><a href="meson.html" target="_parent">Meson</a></li> | ||||
|   </ul> | ||||
| </li> | ||||
| <li><a href="precompiled.html" target="_parent">Precompiled Libraries</a> | ||||
|   | ||||
| @@ -23,7 +23,7 @@ The specifications follow. | ||||
|  | ||||
|  | ||||
| <ul> | ||||
| <li><a href="specs/OLD/MESA_agp_offset.spec">MESA_agp_offset.spec</a> | ||||
| <li><a href="specs/MESA_agp_offset.spec">MESA_agp_offset.spec</a> | ||||
| <li><a href="specs/MESA_copy_sub_buffer.spec">MESA_copy_sub_buffer.spec</a> | ||||
| <li><a href="specs/MESA_drm_image.spec">MESA_drm_image.spec</a> | ||||
| <li><a href="specs/MESA_multithread_makecurrent.spec">MESA_multithread_makecurrent.spec</a> | ||||
| @@ -33,7 +33,7 @@ The specifications follow. | ||||
| <li><a href="specs/OLD/MESA_program_debug.spec">MESA_program_debug.spec</a> (obsolete) | ||||
| <li><a href="specs/MESA_release_buffers.spec">MESA_release_buffers.spec</a> | ||||
| <li><a href="specs/OLD/MESA_resize_buffers.spec">MESA_resize_buffers.spec</a> (obsolete) | ||||
| <li><a href="specs/OLD/MESA_set_3dfx_mode.spec">MESA_set_3dfx_mode.spec</a> | ||||
| <li><a href="specs/MESA_set_3dfx_mode.spec">MESA_set_3dfx_mode.spec</a> | ||||
| <li><a href="specs/MESA_shader_debug.spec">MESA_shader_debug.spec</a> | ||||
| <li><a href="specs/OLD/MESA_sprite_point.spec">MESA_sprite_point.spec</a> (obsolete) | ||||
| <li><a href="specs/MESA_swap_control.spec">MESA_swap_control.spec</a> | ||||
|   | ||||
| @@ -102,7 +102,7 @@ GL 3.3, GLSL 3.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, soft | ||||
|   GL_ARB_shader_bit_encoding                            DONE (freedreno, swr) | ||||
|   GL_ARB_texture_rgb10_a2ui                             DONE (freedreno, swr) | ||||
|   GL_ARB_texture_swizzle                                DONE (freedreno, swr) | ||||
|   GL_ARB_timer_query                                    DONE (freedreno, swr) | ||||
|   GL_ARB_timer_query                                    DONE (swr) | ||||
|   GL_ARB_instanced_arrays                               DONE (freedreno, swr) | ||||
|   GL_ARB_vertex_type_2_10_10_10_rev                     DONE (freedreno, swr) | ||||
|  | ||||
| @@ -110,7 +110,7 @@ GL 3.3, GLSL 3.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, soft | ||||
| GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi | ||||
|  | ||||
|   GL_ARB_draw_buffers_blend                             DONE (freedreno, i965/gen6+, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_draw_indirect                                  DONE (freedreno, i965/gen7+, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_draw_indirect                                  DONE (i965/gen7+, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_gpu_shader5                                    DONE (i965/gen7+) | ||||
|   - 'precise' qualifier                                 DONE | ||||
|   - Dynamically uniform sampler array indices           DONE (softpipe) | ||||
| @@ -126,97 +126,97 @@ GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi | ||||
|   - New overload resolution rules                       DONE | ||||
|   GL_ARB_gpu_shader_fp64                                DONE (i965/gen7+, llvmpipe, softpipe) | ||||
|   GL_ARB_sample_shading                                 DONE (i965/gen6+, nv50) | ||||
|   GL_ARB_shader_subroutine                              DONE (freedreno, i965/gen6+, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_shader_subroutine                              DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_tessellation_shader                            DONE (i965/gen7+) | ||||
|   GL_ARB_texture_buffer_object_rgb32                    DONE (freedreno, i965/gen6+, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_buffer_object_rgb32                    DONE (i965/gen6+, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_cube_map_array                         DONE (i965/gen6+, nv50, llvmpipe, softpipe) | ||||
|   GL_ARB_texture_gather                                 DONE (freedreno, i965/gen6+, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_query_lod                              DONE (freedreno, i965, nv50, llvmpipe, softpipe) | ||||
|   GL_ARB_texture_gather                                 DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_query_lod                              DONE (i965, nv50, llvmpipe, softpipe) | ||||
|   GL_ARB_transform_feedback2                            DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_transform_feedback3                            DONE (i965/gen7+, llvmpipe, softpipe, swr) | ||||
|  | ||||
|  | ||||
| GL 4.1, GLSL 4.10 --- all DONE: i965/gen7+, nvc0, r600, radeonsi | ||||
|  | ||||
|   GL_ARB_ES2_compatibility                              DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_get_program_binary                             DONE (0 or 1 binary formats) | ||||
|   GL_ARB_ES2_compatibility                              DONE (i965, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_get_program_binary                             DONE (0 binary formats) | ||||
|   GL_ARB_separate_shader_objects                        DONE (all drivers) | ||||
|   GL_ARB_shader_precision                               DONE (i965/gen7+, all drivers that support GLSL 4.10) | ||||
|   GL_ARB_vertex_attrib_64bit                            DONE (i965/gen7+, llvmpipe, softpipe) | ||||
|   GL_ARB_viewport_array                                 DONE (i965, nv50, llvmpipe, softpipe) | ||||
|  | ||||
|  | ||||
| GL 4.2, GLSL 4.20 -- all DONE: i965/gen7+, nvc0, r600, radeonsi | ||||
| GL 4.2, GLSL 4.20 -- all DONE: i965/gen7+, nvc0, radeonsi | ||||
|  | ||||
|   GL_ARB_texture_compression_bptc                       DONE (freedreno, i965) | ||||
|   GL_ARB_texture_compression_bptc                       DONE (i965, r600) | ||||
|   GL_ARB_compressed_texture_pixel_storage               DONE (all drivers) | ||||
|   GL_ARB_shader_atomic_counters                         DONE (freedreno/a5xx, i965, softpipe) | ||||
|   GL_ARB_shader_atomic_counters                         DONE (i965, softpipe) | ||||
|   GL_ARB_texture_storage                                DONE (all drivers) | ||||
|   GL_ARB_transform_feedback_instanced                   DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_base_instance                                  DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_shader_image_load_store                        DONE (freedreno/a5xx, i965, softpipe) | ||||
|   GL_ARB_transform_feedback_instanced                   DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_base_instance                                  DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_shader_image_load_store                        DONE (i965, softpipe) | ||||
|   GL_ARB_conservative_depth                             DONE (all drivers that support GLSL 1.30) | ||||
|   GL_ARB_shading_language_420pack                       DONE (all drivers that support GLSL 1.30) | ||||
|   GL_ARB_shading_language_packing                       DONE (all drivers) | ||||
|   GL_ARB_internalformat_query                           DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_internalformat_query                           DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_map_buffer_alignment                           DONE (all drivers) | ||||
|  | ||||
|  | ||||
| GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, r600, radeonsi | ||||
| GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, radeonsi | ||||
|  | ||||
|   GL_ARB_arrays_of_arrays                               DONE (all drivers that support GLSL 1.30) | ||||
|   GL_ARB_ES3_compatibility                              DONE (all drivers that support GLSL 3.30) | ||||
|   GL_ARB_clear_buffer_object                            DONE (all drivers) | ||||
|   GL_ARB_compute_shader                                 DONE (freedreno/a5xx, i965, softpipe) | ||||
|   GL_ARB_copy_image                                     DONE (i965, nv50, softpipe, llvmpipe) | ||||
|   GL_ARB_compute_shader                                 DONE (i965, softpipe) | ||||
|   GL_ARB_copy_image                                     DONE (i965, nv50, r600, softpipe, llvmpipe) | ||||
|   GL_KHR_debug                                          DONE (all drivers) | ||||
|   GL_ARB_explicit_uniform_location                      DONE (all drivers that support GLSL) | ||||
|   GL_ARB_fragment_layer_viewport                        DONE (i965, nv50, llvmpipe, softpipe) | ||||
|   GL_ARB_framebuffer_no_attachments                     DONE (freedreno, i965, softpipe) | ||||
|   GL_ARB_fragment_layer_viewport                        DONE (i965, nv50, r600, llvmpipe, softpipe) | ||||
|   GL_ARB_framebuffer_no_attachments                     DONE (i965, r600, softpipe) | ||||
|   GL_ARB_internalformat_query2                          DONE (all drivers) | ||||
|   GL_ARB_invalidate_subdata                             DONE (all drivers) | ||||
|   GL_ARB_multi_draw_indirect                            DONE (freedreno, i965, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_multi_draw_indirect                            DONE (i965, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_program_interface_query                        DONE (all drivers) | ||||
|   GL_ARB_robust_buffer_access_behavior                  DONE (i965) | ||||
|   GL_ARB_shader_image_size                              DONE (freedreno/a5xx, i965, softpipe) | ||||
|   GL_ARB_shader_storage_buffer_object                   DONE (freedreno/a5xx, i965, softpipe) | ||||
|   GL_ARB_stencil_texturing                              DONE (freedreno, i965/hsw+, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_buffer_range                           DONE (freedreno, nv50, i965, llvmpipe) | ||||
|   GL_ARB_shader_image_size                              DONE (i965, softpipe) | ||||
|   GL_ARB_shader_storage_buffer_object                   DONE (i965, softpipe) | ||||
|   GL_ARB_stencil_texturing                              DONE (i965/hsw+, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_buffer_range                           DONE (nv50, i965, r600, llvmpipe) | ||||
|   GL_ARB_texture_query_levels                           DONE (all drivers that support GLSL 1.30) | ||||
|   GL_ARB_texture_storage_multisample                    DONE (all drivers that support GL_ARB_texture_multisample) | ||||
|   GL_ARB_texture_view                                   DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_view                                   DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_vertex_attrib_binding                          DONE (all drivers) | ||||
|  | ||||
|  | ||||
| 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, r600, llvmpipe, swr) | ||||
|   GL_ARB_buffer_storage                                 DONE (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) | ||||
|   GL_ARB_enhanced_layouts                               DONE (i965, nv50, llvmpipe, softpipe) | ||||
|   - compile-time constant expressions                   DONE | ||||
|   - explicit byte offsets for blocks                    DONE | ||||
|   - forced alignment within blocks                      DONE | ||||
|   - specified vec4-slot component numbers               DONE | ||||
|   - specified vec4-slot component numbers               DONE (i965, nv50, llvmpipe, softpipe) | ||||
|   - specified transform/feedback layout                 DONE | ||||
|   - input/output block locations                        DONE | ||||
|   GL_ARB_multi_bind                                     DONE (all drivers) | ||||
|   GL_ARB_query_buffer_object                            DONE (i965/hsw+) | ||||
|   GL_ARB_texture_mirror_clamp_to_edge                   DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_stencil8                               DONE (freedreno, i965/hsw+, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_stencil8                               DONE (i965/hsw+, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_vertex_type_10f_11f_11f_rev                    DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|  | ||||
| GL 4.5, GLSL 4.50 -- all DONE: nvc0, radeonsi | ||||
|  | ||||
|   GL_ARB_ES3_1_compatibility                            DONE (i965/hsw+, r600) | ||||
|   GL_ARB_clip_control                                   DONE (freedreno, i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_conditional_render_inverted                    DONE (freedreno, i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_cull_distance                                  DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_ES3_1_compatibility                            DONE (i965/hsw+) | ||||
|   GL_ARB_clip_control                                   DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_conditional_render_inverted                    DONE (i965, nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_cull_distance                                  DONE (i965, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_derivative_control                             DONE (i965, nv50, r600) | ||||
|   GL_ARB_direct_state_access                            DONE (all drivers) | ||||
|   GL_ARB_get_texture_sub_image                          DONE (all drivers) | ||||
|   GL_ARB_shader_texture_image_samples                   DONE (i965, nv50, r600) | ||||
|   GL_ARB_texture_barrier                                DONE (freedreno, i965, nv50, r600) | ||||
|   GL_ARB_texture_barrier                                DONE (i965, nv50, r600) | ||||
|   GL_KHR_context_flush_control                          DONE (all - but needs GLX/EGL extension to be useful) | ||||
|   GL_KHR_robustness                                     DONE (i965) | ||||
|   GL_EXT_shader_integer_mix                             DONE (all drivers that support GLSL) | ||||
| @@ -225,39 +225,39 @@ GL 4.6, GLSL 4.60 | ||||
|  | ||||
|   GL_ARB_gl_spirv                                       in progress (Nicolai Hähnle, Ian Romanick) | ||||
|   GL_ARB_indirect_parameters                            DONE (i965/gen7+, nvc0, radeonsi) | ||||
|   GL_ARB_pipeline_statistics_query                      DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_polygon_offset_clamp                           DONE (freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, swr) | ||||
|   GL_ARB_shader_atomic_counter_ops                      DONE (freedreno/a5xx, i965/gen7+, nvc0, r600, radeonsi, softpipe) | ||||
|   GL_ARB_pipeline_statistics_query                      DONE (i965, nvc0, radeonsi, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_polygon_offset_clamp                           DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, swr) | ||||
|   GL_ARB_shader_atomic_counter_ops                      DONE (i965/gen7+, nvc0, radeonsi, softpipe) | ||||
|   GL_ARB_shader_draw_parameters                         DONE (i965, nvc0, radeonsi) | ||||
|   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_texture_filter_anisotropic                     DONE (i965, nv50, nvc0, r600, radeonsi, softpipe (*), llvmpipe (*)) | ||||
|   GL_ARB_transform_feedback_overflow_query              DONE (i965/gen6+, radeonsi, llvmpipe, softpipe) | ||||
|   GL_KHR_no_error                                       DONE (all drivers) | ||||
|   GL_KHR_no_error                                       started (Timothy Arceri) | ||||
|  | ||||
| (*) softpipe and llvmpipe advertise 16x anisotropy but simply ignore the setting | ||||
|  | ||||
| These are the extensions cherry-picked to make GLES 3.1 | ||||
| GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, r600, radeonsi | ||||
| GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, radeonsi | ||||
|  | ||||
|   GL_ARB_arrays_of_arrays                               DONE (all drivers that support GLSL 1.30) | ||||
|   GL_ARB_compute_shader                                 DONE (freedreno/a5xx, i965/gen7+, softpipe) | ||||
|   GL_ARB_draw_indirect                                  DONE (freedreno, i965/gen7+, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_compute_shader                                 DONE (i965/gen7+, softpipe) | ||||
|   GL_ARB_draw_indirect                                  DONE (i965/gen7+, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_explicit_uniform_location                      DONE (all drivers that support GLSL) | ||||
|   GL_ARB_framebuffer_no_attachments                     DONE (freedreno, i965/gen7+, softpipe) | ||||
|   GL_ARB_framebuffer_no_attachments                     DONE (i965/gen7+, r600, softpipe) | ||||
|   GL_ARB_program_interface_query                        DONE (all drivers) | ||||
|   GL_ARB_shader_atomic_counters                         DONE (freedreno/a5xx, i965/gen7+, softpipe) | ||||
|   GL_ARB_shader_image_load_store                        DONE (freedreno/a5xx, i965/gen7+, softpipe) | ||||
|   GL_ARB_shader_image_size                              DONE (freedreno/a5xx, i965/gen7+, softpipe) | ||||
|   GL_ARB_shader_storage_buffer_object                   DONE (freedreno/a5xx, i965/gen7+, softpipe) | ||||
|   GL_ARB_shader_atomic_counters                         DONE (i965/gen7+, softpipe) | ||||
|   GL_ARB_shader_image_load_store                        DONE (i965/gen7+, softpipe) | ||||
|   GL_ARB_shader_image_size                              DONE (i965/gen7+, softpipe) | ||||
|   GL_ARB_shader_storage_buffer_object                   DONE (i965/gen7+, softpipe) | ||||
|   GL_ARB_shading_language_packing                       DONE (all drivers) | ||||
|   GL_ARB_separate_shader_objects                        DONE (all drivers) | ||||
|   GL_ARB_stencil_texturing                              DONE (freedreno, nv50, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_multisample (Multisample textures)     DONE (i965/gen7+, nv50, llvmpipe, softpipe) | ||||
|   GL_ARB_stencil_texturing                              DONE (nv50, r600, llvmpipe, softpipe, swr) | ||||
|   GL_ARB_texture_multisample (Multisample textures)     DONE (i965/gen7+, nv50, r600, llvmpipe, softpipe) | ||||
|   GL_ARB_texture_storage_multisample                    DONE (all drivers that support GL_ARB_texture_multisample) | ||||
|   GL_ARB_vertex_attrib_binding                          DONE (all drivers) | ||||
|   GS5 Enhanced textureGather                            DONE (freedreno, i965/gen7+,) | ||||
|   GS5 Packing/bitfield/conversion functions             DONE (i965/gen6+) | ||||
|   GS5 Enhanced textureGather                            DONE (i965/gen7+, r600) | ||||
|   GS5 Packing/bitfield/conversion functions             DONE (i965/gen6+, r600) | ||||
|   GL_EXT_shader_integer_mix                             DONE (all drivers that support GLSL) | ||||
|  | ||||
|   Additional functionality not covered above: | ||||
| @@ -272,7 +272,7 @@ GLES3.2, GLSL ES 3.2 -- all DONE: i965/gen9+ | ||||
|   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+) | ||||
|   GL_KHR_texture_compression_astc_ldr                   DONE (i965/gen9+) | ||||
|   GL_OES_copy_image                                     DONE (all drivers) | ||||
|   GL_OES_draw_buffers_indexed                           DONE (all drivers that support GL_ARB_draw_buffers_blend) | ||||
|   GL_OES_draw_elements_base_vertex                      DONE (all drivers) | ||||
| @@ -293,7 +293,7 @@ GLES3.2, GLSL ES 3.2 -- all DONE: i965/gen9+ | ||||
|  | ||||
| Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES version: | ||||
|  | ||||
|   GL_ARB_bindless_texture                               DONE (nvc0, radeonsi) | ||||
|   GL_ARB_bindless_texture                               DONE (radeonsi) | ||||
|   GL_ARB_cl_event                                       not started | ||||
|   GL_ARB_compute_variable_group_size                    DONE (nvc0, radeonsi) | ||||
|   GL_ARB_ES3_2_compatibility                            DONE (i965/gen8+) | ||||
| @@ -305,8 +305,8 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve | ||||
|   GL_ARB_sample_locations                               not started | ||||
|   GL_ARB_seamless_cubemap_per_texture                   DONE (i965, nvc0, radeonsi, r600, softpipe, swr) | ||||
|   GL_ARB_shader_ballot                                  DONE (i965/gen8+, nvc0, radeonsi) | ||||
|   GL_ARB_shader_clock                                   DONE (i965/gen7+, nv50, nvc0, r600, radeonsi) | ||||
|   GL_ARB_shader_stencil_export                          DONE (i965/gen9+, r600, radeonsi, softpipe, llvmpipe, swr) | ||||
|   GL_ARB_shader_clock                                   DONE (i965/gen7+, nv50, nvc0, radeonsi) | ||||
|   GL_ARB_shader_stencil_export                          DONE (i965/gen9+, radeonsi, softpipe, llvmpipe, swr) | ||||
|   GL_ARB_shader_viewport_layer_array                    DONE (i965/gen6+, nvc0, radeonsi) | ||||
|   GL_ARB_sparse_buffer                                  DONE (radeonsi/CIK+) | ||||
|   GL_ARB_sparse_texture                                 not started | ||||
| @@ -328,10 +328,10 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve | ||||
|   GL_OES_required_internalformat                        DONE (all drivers) | ||||
|   GL_OES_surfaceless_context                            DONE (all drivers) | ||||
|   GL_OES_texture_compression_astc                       DONE (core only) | ||||
|   GL_OES_texture_float                                  DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe) | ||||
|   GL_OES_texture_float_linear                           DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe) | ||||
|   GL_OES_texture_half_float                             DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe) | ||||
|   GL_OES_texture_half_float_linear                      DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe) | ||||
|   GL_OES_texture_float                                  DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe) | ||||
|   GL_OES_texture_float_linear                           DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe) | ||||
|   GL_OES_texture_half_float                             DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe) | ||||
|   GL_OES_texture_half_float_linear                      DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe) | ||||
|   GL_OES_texture_view                                   not started - based on GL_ARB_texture_view | ||||
|   GL_OES_viewport_array                                 DONE (i965, nvc0, radeonsi) | ||||
|   GLX_ARB_context_flush_control                         not started | ||||
|   | ||||
| @@ -16,65 +16,6 @@ | ||||
|  | ||||
| <h1>News</h1> | ||||
|  | ||||
| <h2>January 18, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.3.html">Mesa 17.3.3</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>January 8, 2018</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.2.html">Mesa 17.3.2</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>December 22, 2017</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.2.8.html">Mesa 17.2.8</a> is released. | ||||
| This is a bug-fix release. | ||||
| <br> | ||||
| NOTE: It is anticipated that 17.2.8 will be the final release in the | ||||
| 17.2 series. Users of 17.2 are encouraged to migrate to the 17.3 | ||||
| series in order to obtain future fixes. | ||||
| </p> | ||||
|  | ||||
| <h2>December 21, 2017</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.1.html">Mesa 17.3.1</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>December 14, 2017</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.2.7.html">Mesa 17.2.7</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>December 8, 2017</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.3.0.html">Mesa 17.3.0</a> is released.  This is a | ||||
| new development release.  See the release notes for more information | ||||
| about the release. | ||||
| </p> | ||||
|  | ||||
| <h2>November 25, 2017</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.2.6.html">Mesa 17.2.6</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>November 10, 2017</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.2.5.html">Mesa 17.2.5</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>October 30, 2017</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.2.4.html">Mesa 17.2.4</a> is released. | ||||
| This is a bug-fix release. | ||||
| </p> | ||||
|  | ||||
| <h2>October 19, 2017</h2> | ||||
| <p> | ||||
| <a href="relnotes/17.2.3.html">Mesa 17.2.3</a> is released. | ||||
| @@ -91,10 +32,6 @@ This is a bug-fix release. | ||||
| <p> | ||||
| <a href="relnotes/17.1.10.html">Mesa 17.1.10</a> is released. | ||||
| This is a bug-fix release. | ||||
| <br> | ||||
| NOTE: It is anticipated that 17.1.10 will be the final release in the | ||||
| 17.1 series. Users of 17.1 are encouraged to migrate to the 17.2 | ||||
| series in order to obtain future fixes. | ||||
| </p> | ||||
|  | ||||
| <h2>September 17, 2017</h2> | ||||
|   | ||||
| @@ -20,7 +20,7 @@ | ||||
| The Gallium llvmpipe driver is a software rasterizer that uses LLVM to | ||||
| do runtime code generation. | ||||
| Shaders, point/line/triangle rasterization and vertex processing are | ||||
| implemented with LLVM IR which is translated to x86, x86-64, or ppc64le machine | ||||
| implemented with LLVM IR which is translated to x86 or x86-64 machine | ||||
| code. | ||||
| Also, the driver is multithreaded to take advantage of multiple CPU cores | ||||
| (up to 8 at this time). | ||||
| @@ -32,36 +32,24 @@ It's the fastest software rasterizer for Mesa. | ||||
|  | ||||
| <ul> | ||||
| <li> | ||||
|    <p>An x86 or amd64 processor; 64-bit mode recommended.</p> | ||||
|    <p> | ||||
|    For x86 or amd64 processors, 64-bit mode is recommended. | ||||
|    Support for SSE2 is strongly encouraged.  Support for SSE3 and SSE4.1 will | ||||
|    yield the most efficient code.  The fewer features the CPU has the more | ||||
|    likely it is that you will run into underperforming, buggy, or incomplete code. | ||||
|    </p> | ||||
|    <p> | ||||
|    For ppc64le processors, use of the Altivec feature (the Vector | ||||
|    Facility) is recommended if supported; use of the VSX feature (the | ||||
|    Vector-Scalar Facility) is recommended if supported AND Mesa is | ||||
|    built with LLVM version 4.0 or later. | ||||
|    likely is that you run into underperforming, buggy, or incomplete code. | ||||
|    </p> | ||||
|    <p> | ||||
|    See /proc/cpuinfo to know what your CPU supports. | ||||
|    </p> | ||||
| </li> | ||||
| <li> | ||||
|    <p>Unless otherwise stated, LLVM version 3.4 is recommended; 3.3 or later is required.</p> | ||||
|    <p>LLVM: version 3.4 recommended; 3.3 or later required.</p> | ||||
|    <p> | ||||
|    For Linux, on a recent Debian based distribution do: | ||||
|    </p> | ||||
| <pre> | ||||
|      aptitude install llvm-dev | ||||
| </pre> | ||||
|    <p> | ||||
|    If you want development snapshot builds of LLVM for Debian and derived | ||||
|    distributions like Ubuntu, you can use the APT repository at <a | ||||
|    href="https://apt.llvm.org/" title="Debian Development packages for LLVM" | ||||
|    >apt.llvm.org</a>, which are maintained by Debian's LLVM maintainer. | ||||
|    </p> | ||||
|    <p> | ||||
|    For a RPM-based distribution do: | ||||
|    </p> | ||||
| @@ -120,10 +108,10 @@ To build everything on Linux invoke scons as: | ||||
|   scons build=debug libgl-xlib | ||||
| </pre> | ||||
|  | ||||
| Alternatively, you can build it with autoconf/make with: | ||||
| Alternatively, you can build it with GNU make, if you prefer, by invoking it as | ||||
|  | ||||
| <pre> | ||||
|   ./configure --enable-glx=gallium-xlib --with-gallium-drivers=swrast --disable-dri --disable-gbm --disable-egl | ||||
|   make | ||||
|   make linux-llvm | ||||
| </pre> | ||||
|  | ||||
| but the rest of these instructions assume that scons is used. | ||||
| @@ -240,8 +228,8 @@ build/linux-???-debug/gallium/drivers/llvmpipe: | ||||
| </ul> | ||||
|  | ||||
| <p> | ||||
| Some of these tests can output results and benchmarks to a tab-separated file | ||||
| for later analysis, e.g.: | ||||
| Some of this tests can output results and benchmarks to a tab-separated-file | ||||
| for posterior analysis, e.g.: | ||||
| </p> | ||||
| <pre> | ||||
|   build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend -o blend.tsv | ||||
| @@ -252,8 +240,8 @@ for later analysis, e.g.: | ||||
|  | ||||
| <ul> | ||||
| <li> | ||||
|   When looking at this code for the first time, start in lp_state_fs.c, and | ||||
|   then skim through the lp_bld_* functions called there, and the comments | ||||
|   When looking to this code by the first time start in lp_state_fs.c, and  | ||||
|   then skim through the lp_bld_* functions called in there, and the comments | ||||
|   at the top of the lp_bld_*.c functions. | ||||
| </li> | ||||
| <li> | ||||
|   | ||||
							
								
								
									
										168
									
								
								docs/meson.html
									
									
									
									
									
								
							
							
						
						
									
										168
									
								
								docs/meson.html
									
									
									
									
									
								
							| @@ -1,168 +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>Compilation and Installation using Meson</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>Compilation and Installation using Meson</h1> | ||||
|  | ||||
| <h2 id="basic">1. Basic Usage</h2> | ||||
|  | ||||
| <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 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 | ||||
| either a ninja build file or Visual Studio® build files. The latter must | ||||
| be enabled via the --backend switch, as ninja is the default backend on all | ||||
| operating systems. Meson only supports out-of-tree builds, and must be passed a | ||||
| directory to put built and generated sources into. We'll call that directory | ||||
| "build" for examples. | ||||
| </p> | ||||
|  | ||||
| <pre> | ||||
|     meson build/ | ||||
| </pre> | ||||
|  | ||||
| <p> | ||||
| To see a description of your options you can run <code>meson configure</code> | ||||
| along with a build directory to view the selected options for. This will show | ||||
| your meson global arguments and project arguments, along with their defaults | ||||
| and your local settings. | ||||
|  | ||||
| Moes does not currently support listing options before configure a build | ||||
| directory, but this feature is being discussed upstream. | ||||
| </p> | ||||
|  | ||||
| <pre> | ||||
|     meson configure build/ | ||||
| </pre> | ||||
|  | ||||
| <p> | ||||
| With additional arguments <code>meson configure</code> is used to change | ||||
| options on already configured build directory. All options passed to this | ||||
| command are in the form -D "command"="value". | ||||
| </p> | ||||
|  | ||||
| <pre> | ||||
|     meson configure build/ -Dprefix=/tmp/install -Dglx=true | ||||
| </pre> | ||||
|  | ||||
| <p> | ||||
| Once you've run the initial <code>meson</code> command successfully you can use | ||||
| your configured backend to build the project. With ninja, the -C option can be | ||||
| be used to point at a directory to build. | ||||
| </p> | ||||
|  | ||||
| <pre> | ||||
|     ninja -C build/ | ||||
| </pre> | ||||
|  | ||||
| <p> | ||||
| Without arguments, it will produce libGL.so and/or several other libraries | ||||
| depending on the options you have chosen. Later, if you want to rebuild for a | ||||
| different configuration, you should run <code>ninja clean</code> before | ||||
| changing the configuration, or create a new out of tree build directory for | ||||
| each configuration you want to build. | ||||
|  | ||||
| http://mesonbuild.com/Using-multiple-build-directories.html | ||||
| </p> | ||||
|  | ||||
| <dt><code>Environment Variables</code></dt> | ||||
| <dd><p>Meson supports the standard CC and CXX envrionment variables for | ||||
| changing the default compiler, and CFLAGS, CXXFLAGS, and LDFLAGS for setting | ||||
| options to the compiler and linker. | ||||
|  | ||||
| The default compilers depends on your operating system. Meson supports most of | ||||
| the popular compilers, a complete list is available | ||||
| <a href="http://mesonbuild.com/Reference-tables.html#compiler-ids">here</a>. | ||||
|  | ||||
| These arguments are consumed and stored by meson when it is initialized or | ||||
| re-initialized. Therefore passing them to meson configure will not do anything, | ||||
| and passing them to ninja will only do something if ninja decides to | ||||
| re-initialze meson, for example, if a meson.build file has been changed. | ||||
| Changing these variables will not cause all targets to be rebuilt, so running | ||||
| ninja clean is recomended when changing CFLAGS or CXXFLAGS. meson will never | ||||
| change compiler in a configured build directory. | ||||
| </p> | ||||
|  | ||||
| <pre> | ||||
|     CC=clang CXX=clang++ meson build-clang | ||||
|     ninja -C build-clang | ||||
|     ninja -C build-clang clean | ||||
|     touch meson.build | ||||
|     CFLAGS=-Wno-typedef-redefinition ninja -C build-clang | ||||
| </pre> | ||||
|  | ||||
| <p>Meson also honors DESTDIR for installs</p> | ||||
| </dd> | ||||
|  | ||||
|  | ||||
| <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 | ||||
| llvm-config, so using an LLVM from a non-standard path is as easy as | ||||
| <code>PATH=/path/with/llvm-config:$PATH meson build</code>. | ||||
| </p></dd> | ||||
| </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 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> | ||||
|  | ||||
| <p> | ||||
| One of the oddities of meson is that some options are different when passed to | ||||
| the <code>meson</code> than to <code>meson configure</code>. These options are | ||||
| passed as --option=foo to <code>meson</code>, but -Doption=foo to <code>meson | ||||
| configure</code>. Mesa defined options are always passed as -Doption=foo. | ||||
| <p> | ||||
|  | ||||
| <p>For those coming from autotools be aware of the following:</p> | ||||
|  | ||||
| <dl> | ||||
| <dt><code>--buildtype/-Dbuildtype</code></dt> | ||||
| <dd><p>This option will set the compiler debug/optimisation levels to aid | ||||
| debugging the Mesa libraries.</p> | ||||
|  | ||||
| <p>Note that in meson this defaults to "debugoptimized", and  not setting it to | ||||
| "release" will yield non-optimal performance and binary size. Not using "debug" | ||||
| may interfer with debbugging as some code and validation will be optimized | ||||
| away. | ||||
| </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> | ||||
|  | ||||
| <dl> | ||||
| <dt><code>-Db_ndebug</code></dt> | ||||
| <dd><p>This option controls assertions in meson projects. When set to false | ||||
| (the default) assertions are enabled, when set to true they are disabled. This | ||||
| is unrelated to the <code>buildtype</code>; setting the latter to | ||||
| <code>release</code> will not turn off assertions. | ||||
| </p> | ||||
| </dd> | ||||
| </dl> | ||||
| @@ -39,67 +39,73 @@ if you'd like to nominate a patch in the next stable release. | ||||
| <th>Notes</th> | ||||
| </tr> | ||||
| <tr> | ||||
| <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 rowspan="4">17.2</td> | ||||
| <td>2017-10-27</td> | ||||
| <td>17.2.4</td> | ||||
| <td>Andres Gomez</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-03-09</td> | ||||
| <td>18.0.2</td> | ||||
| <td>2017-11-10</td> | ||||
| <td>17.2.5</td> | ||||
| <td>Andres Gomez</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2018-03-23</td> | ||||
| <td>18.0.3</td> | ||||
| <td>2017-11-24</td> | ||||
| <td>17.2.6</td> | ||||
| <td>Andres Gomez</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2017-12-08</td> | ||||
| <td>17.2.7</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td>Final planned release for the 17.2 series</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td rowspan="7">17.3</td> | ||||
| <td>2017-10-20</td> | ||||
| <td>17.3.0-rc1</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2017-10-27</td> | ||||
| <td>17.3.0-rc2</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2017-11-03</td> | ||||
| <td>17.3.0-rc3</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2017-11-10</td> | ||||
| <td>17.3.0-rc4</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td>May be promoted to 17.3.0 final</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2017-11-24</td> | ||||
| <td>17.3.1</td> | ||||
| <td>Andres Gomez</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2017-12-08</td> | ||||
| <td>17.3.2</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>2017-12-22</td> | ||||
| <td>17.3.3</td> | ||||
| <td>Emil Velikov</td> | ||||
| <td></td> | ||||
| </tr> | ||||
| </table> | ||||
|  | ||||
| </div> | ||||
|   | ||||
| @@ -96,7 +96,7 @@ described in the same section. | ||||
|  | ||||
| <p> | ||||
| Nomination happens in the mesa-stable@ mailing list. However, | ||||
| maintainer is responsible of checking for forgotten candidates in the | ||||
| maintainer is resposible of checking for forgotten candidates in the | ||||
| master branch. This is achieved by a combination of ad-hoc scripts and | ||||
| a casual search for terms such as regression, fix, broken and similar. | ||||
| </p> | ||||
| @@ -272,11 +272,6 @@ It is followed by a brief period (normally 24 or 48 hours) before the actual | ||||
| release is made. | ||||
| </p> | ||||
|  | ||||
| <p> | ||||
| Be aware to add a note to warn about a final release in a series, if | ||||
| that is the case. | ||||
| </p> | ||||
|  | ||||
| <h2>Terminology used</h2> | ||||
|  | ||||
| <ul><li>Nominated</ul> | ||||
| @@ -316,10 +311,6 @@ The candidate for the Mesa X.Y.Z is now available. Currently we have: | ||||
|  - NUMBER nominated (outstanding) | ||||
|  - and NUMBER rejected patches | ||||
|  | ||||
| [If applicable: | ||||
| Note: this is the final anticipated release in the SERIES series. Users are | ||||
| encouraged to migrate to the NEXT_SERIES series in order to obtain future fixes.] | ||||
|  | ||||
| BRIEF SUMMARY OF CHANGES | ||||
|  | ||||
| Take a look at section "Mesa stable queue" for more information. | ||||
| @@ -383,9 +374,6 @@ Queued (NUMBER) | ||||
|  | ||||
| AUTHOR (NUMBER): | ||||
|       COMMIT SUMMARY | ||||
| [If applicable: | ||||
| Squashed with | ||||
|       COMMIT SUMMARY] | ||||
|  | ||||
| For example: | ||||
|  | ||||
| @@ -394,21 +382,16 @@ Jonas Pfeil (1): | ||||
| Squashed with | ||||
|       ralloc: don't leave out the alignment factor | ||||
|  | ||||
|  | ||||
| Rejected (NUMBER) | ||||
| ================= | ||||
|  | ||||
| Rejected (11) | ||||
| ============= | ||||
|  | ||||
| AUTHOR (NUMBER): | ||||
|       SHA     COMMIT SUMMARY | ||||
|  | ||||
| Reason: ... | ||||
|  | ||||
| For example: | ||||
|  | ||||
| Emil Velikov (1) | ||||
|       a39ad18 configure.ac: honour LLVM_LIBDIR when linking against LLVM | ||||
|  | ||||
| Reason: The patch was reverted shortly after it was merged. | ||||
| </pre> | ||||
|  | ||||
|  | ||||
| @@ -474,9 +457,9 @@ Here is one solution that I've been using. | ||||
| 	cd .. && rm -rf mesa-$__version | ||||
|  | ||||
| 	# Test the automake binaries | ||||
| 	tar -xaf mesa-$__version.tar.xz && cd mesa-$__version | ||||
| 	# Restore LLVM_CONFIG, if applicable: | ||||
| 	# export LLVM_CONFIG=`echo $save_LLVM_CONFIG`; unset save_LLVM_CONFIG | ||||
| 	tar -xaf mesa-$__version.tar.xz && cd mesa-$__version | ||||
| 	./configure \ | ||||
| 		--with-dri-drivers=i965,swrast \ | ||||
| 		--with-gallium-drivers=swrast \ | ||||
| @@ -488,10 +471,6 @@ Here is one solution that I've been using. | ||||
| 		--enable-egl \ | ||||
| 		--with-platforms=x11,drm,wayland,surfaceless | ||||
| 	make && DESTDIR=`pwd`/test make install | ||||
|  | ||||
| 	# Drop LLVM_CONFIG, if applicable: | ||||
| 	# unset LLVM_CONFIG | ||||
|  | ||||
| 	__glxinfo_cmd='glxinfo 2>&1 | egrep -o "Mesa.*|Gallium.*|.*dri\.so"' | ||||
| 	__glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"' | ||||
| 	__es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"' | ||||
| @@ -521,10 +500,8 @@ Here is one solution that I've been using. | ||||
| 	unset LIBGL_DRIVERS_PATH | ||||
| 	unset LIBGL_DEBUG | ||||
| 	unset LIBGL_ALWAYS_SOFTWARE | ||||
| 	unset GALLIUM_DRIVER | ||||
| 	export VK_ICD_FILENAMES=`pwd`/src/intel/vulkan/dev_icd.json | ||||
| 	steam steam://rungameid/570  -vconsole -vulkan | ||||
| 	unset VK_ICD_FILENAMES | ||||
| </pre> | ||||
|  | ||||
| <h3>Update version in file VERSION</h3> | ||||
| @@ -603,8 +580,7 @@ Something like the following steps will do the trick: | ||||
|  | ||||
| <p> | ||||
| Also, edit docs/relnotes.html to add a link to the new release notes, | ||||
| edit docs/index.html to add a news entry and a note in case of the | ||||
| last release in a series, and remove the version from | ||||
| edit docs/index.html to add a news entry, and remove the version from | ||||
| docs/release-calendar.html. Then commit and push: | ||||
| </p> | ||||
|  | ||||
| @@ -620,11 +596,6 @@ docs/release-calendar.html. Then commit and push: | ||||
| Use the generated template during the releasing process. | ||||
| </p> | ||||
|  | ||||
| <p> | ||||
| Again, pay attention to add a note to warn about a final release in a | ||||
| series, if that is the case. | ||||
| </p> | ||||
|  | ||||
|  | ||||
| <h1 id="website">Update the mesa3d.org website</h1> | ||||
|  | ||||
|   | ||||
| @@ -21,15 +21,6 @@ The release notes summarize what's new or changed in each Mesa release. | ||||
| </p> | ||||
|  | ||||
| <ul> | ||||
| <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> | ||||
| <li><a href="relnotes/17.2.7.html">17.2.7 release notes</a> | ||||
| <li><a href="relnotes/17.3.0.html">17.3.0 release notes</a> | ||||
| <li><a href="relnotes/17.2.6.html">17.2.6 release notes</a> | ||||
| <li><a href="relnotes/17.2.5.html">17.2.5 release notes</a> | ||||
| <li><a href="relnotes/17.2.4.html">17.2.4 release notes</a> | ||||
| <li><a href="relnotes/17.2.3.html">17.2.3 release notes</a> | ||||
| <li><a href="relnotes/17.2.2.html">17.2.2 release notes</a> | ||||
| <li><a href="relnotes/17.1.10.html">17.1.10 release notes</a> | ||||
|   | ||||
| @@ -1,132 +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.2.4 Release Notes / October 30, 2017</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.2.4 is a bug fix release which fixes bugs found since the 17.2.3 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.2.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> | ||||
| cb266edc5cf7226219ebaf556ca2e03dff282e0324d20afd80423a5754d1272c  mesa-17.2.4.tar.gz | ||||
| 5ba408fecd6e1132e5490eec1a2f04466214e4c65c8b89b331be844768c2e550  mesa-17.2.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=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=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> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
| <p>Andres Gomez (8):</p> | ||||
| <ul> | ||||
|   <li>cherry-ignore: configure.ac: rework llvm detection and handling</li> | ||||
|   <li>cherry-ignore: glsl: fix derived cs variables</li> | ||||
|   <li>cherry-ignore: added 17.3 nominations.</li> | ||||
|   <li>cherry-ignore: radv: Don't use vgpr indexing for outputs on GFX9.</li> | ||||
|   <li>cherry-ignore: radv: Disallow indirect outputs for GS on GFX9 as well.</li> | ||||
|   <li>cherry-ignore: mesa/bufferobj: don't double negate the range</li> | ||||
|   <li>cherry-ignore: broadcom/vc5: Propagate vc4 aliasing fix to vc5.</li> | ||||
|   <li>Update version to 17.2.4</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (1):</p> | ||||
| <ul> | ||||
|   <li>ac/nir: Fix nir_texop_lod on GFX for 1D arrays.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dave Airlie (1):</p> | ||||
| <ul> | ||||
|   <li>radv/image: bump all the offset to uint64_t.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (1):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.2.3</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Henri Verbeet (1):</p> | ||||
| <ul> | ||||
|   <li>vulkan/wsi: Free the event in x11_manage_fifo_queues().</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jan Vesely (1):</p> | ||||
| <ul> | ||||
|   <li>clover: Fix compilation after clang r315871</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (4):</p> | ||||
| <ul> | ||||
|   <li>nir/intrinsics: Set the correct num_indices for load_output</li> | ||||
|   <li>intel/fs: Handle flag read/write aliasing in needs_src_copy</li> | ||||
|   <li>anv/pipeline: Call nir_lower_system_valaues after brw_preprocess_nir</li> | ||||
|   <li>intel/eu: Use EXECUTE_1 for JMPI</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Kenneth Graunke (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Revert absolute mode for constant buffer pointers.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Marek Olšák (1):</p> | ||||
| <ul> | ||||
|   <li>Revert "mesa: fix texture updates for ATI_fragment_shader"</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Matthew Nicholls (1):</p> | ||||
| <ul> | ||||
|   <li>ac/nir: generate correct instruction for atomic min/max on unsigned images</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Michel Dänzer (1):</p> | ||||
| <ul> | ||||
|   <li>st/mesa: Initialize textures array in st_framebuffer_validate</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Samuel Pitoiset (1):</p> | ||||
| <ul> | ||||
|   <li>radv: add the draw count buffer to the list of buffers</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Stefan Schake (1):</p> | ||||
| <ul> | ||||
|   <li>broadcom/vc4: Fix aliasing issue</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,156 +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.2.5 Release Notes / November 10, 2017</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.2.5 is a bug fix release which fixes bugs found since the 17.2.4 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.2.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> | ||||
| 25b40e72fad64b096c2d8d6fe9579369954debe7970d4ad53e5033c7eec2918b  mesa-17.2.5.tar.gz | ||||
| 7f7f914b7b9ea0b15f2d9d01a4375e311b0e90e55683b8e8a67ce8691eb1070f  mesa-17.2.5.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=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=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=102809">Bug 102809</a> - Rust shadows(?) flash random colours</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> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
| <p>Andres Gomez (8):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.2.4</li> | ||||
|   <li>cherry-ignore: radv: copy indirect lowering settings from radeonsi</li> | ||||
|   <li>cherry-ignore: i965: fix blorp stage_prog_data->param leak</li> | ||||
|   <li>cherry-ignore: etnaviv: don't do resolve-in-place without valid TS</li> | ||||
|   <li>cherry-ignore: intel/fs: Alloc pull constants off mem_ctx</li> | ||||
|   <li>cherry-ignore: added 17.3 nominations.</li> | ||||
|   <li>cherry-ignore: automake: include git_sha1.h.in in release tarball</li> | ||||
|   <li>Update version to 17.2.5</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (3):</p> | ||||
| <ul> | ||||
|   <li>radv: Don't expose heaps with 0 memory.</li> | ||||
|   <li>radv: Don't use vgpr indexing for outputs on GFX9.</li> | ||||
|   <li>radv: Disallow indirect outputs for GS on GFX9 as well.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dave Airlie (3):</p> | ||||
| <ul> | ||||
|   <li>i915g: make gears run again.</li> | ||||
|   <li>radv: free attachments on end command buffer.</li> | ||||
|   <li>radv: add initial copy descriptor support. (v2)</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Engestrom (1):</p> | ||||
| <ul> | ||||
|   <li>vc4: fix release build</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Gert Wollny (1):</p> | ||||
| <ul> | ||||
|   <li>r600/sb: bail out if prepare_alu_group() doesn't find a proper scheduling</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (4):</p> | ||||
| <ul> | ||||
|   <li>spirv: Claim support for the simple memory model</li> | ||||
|   <li>i965/blorp: Use blorp_to_isl_format for src_isl_format in blit_miptrees</li> | ||||
|   <li>i965/blorp: Use more temporary isl_format variables</li> | ||||
|   <li>i965/miptree: Take an isl_format in render_aux_usage</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Kenneth Graunke (1):</p> | ||||
| <ul> | ||||
|   <li>mesa: Accept GL_BACK in get_fb0_attachment with ARB_ES3_1_compatibility.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Leo Liu (1):</p> | ||||
| <ul> | ||||
|   <li>radeon/video: add gfx9 offsets when rejoin the video surface</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Marek Olšák (2):</p> | ||||
| <ul> | ||||
|   <li>st/dri: don't expose modifiers in EGL if the driver doesn't implement them</li> | ||||
|   <li>ac/surface/gfx9: don't allow DCC for the smallest mipmap levels</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Nanley Chery (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Check CCS_E compatibility for texture view rendering</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Neil Roberts (1):</p> | ||||
| <ul> | ||||
|   <li>nir/opt_intrinsics: Fix values for gl_SubGroupG{e,t}MaskARB</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Nicolai Hähnle (1):</p> | ||||
| <ul> | ||||
|   <li>amd/common/gfx9: workaround DCC corruption more conservatively</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Tapani Pälli (1):</p> | ||||
| <ul> | ||||
|   <li>i965: unref push_const_bo in intelDestroyContext</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Timothy Arceri (1):</p> | ||||
| <ul> | ||||
|   <li>radv: copy indirect lowering settings from radeonsi</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Tomasz Figa (1):</p> | ||||
| <ul> | ||||
|   <li>glsl: Allow precision mismatch on dead data with GLSL ES 1.00</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Topi Pohjolainen (1):</p> | ||||
| <ul> | ||||
|   <li>intel/compiler/gen9: Pixel shader header only workaround</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,187 +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.2.6 Release Notes / November 25, 2017</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.2.6 is a bug fix release which fixes bugs found since the 17.2.5 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.2.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> | ||||
| a9ed76702ffb14ad674ad48899f5c8c7e3a0f987911878a5dfdc4117dce5b415  mesa-17.2.6.tar.gz | ||||
| 6ad85224620330be26ab68c8fc78381b12b38b610ade2db8716b38faaa8f30de  mesa-17.2.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=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=102177">Bug 102177</a> - [SKL] ES31-CTS.core.sepshaderobjs.StateInteraction fails sporadically</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=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=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=103787">Bug 103787</a> - [BDW,BSW] gpu hang on spec.arb_pipeline_statistics_query.arb_pipeline_statistics_query-comp</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
| <p>Adam Jackson (2):</p> | ||||
| <ul> | ||||
|   <li>glx/drisw: Fix glXMakeCurrent(dpy, None, ctx)</li> | ||||
|   <li>glx/dri3: Fix passing renderType into glXCreateContext</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Alex Smith (2):</p> | ||||
| <ul> | ||||
|   <li>spirv: Use correct type for sampled images</li> | ||||
|   <li>nir/spirv: tg4 requires a sampler</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Andres Gomez (14):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.2.5</li> | ||||
|   <li>cherry-ignore: intel/fs: Use a pure vertical stride for large register strides</li> | ||||
|   <li>cherry-ignore: intel/nir: Use the correct indirect lowering masks in link_shaders</li> | ||||
|   <li>cherry-ignore: intel/fs: Use the original destination region for int MUL lowering</li> | ||||
|   <li>cherry-ignore: intel/fs: refactors</li> | ||||
|   <li>cherry-ignore: r600/shader: reserve first register of vertex shader.</li> | ||||
|   <li>cherry-ignore: anv/cmd_buffer: Advance the address when initializing clear colors</li> | ||||
|   <li>cherry-ignore: anv/cmd_buffer: Take bo_offset into account in fast clear state addresses</li> | ||||
|   <li>cherry-ignore: i965: Mark BOs as external when we export their handle</li> | ||||
|   <li>cherry-ignore: added 17.3 nominations.</li> | ||||
|   <li>cherry-ignore: glsl: Fix typo fragement -> fragment</li> | ||||
|   <li>cherry-ignore: egl: pass the dri2_dpy to the $plat_teardown functions</li> | ||||
|   <li>cherry-ignore: Revert "intel/fs: Use a pure vertical stride for large register strides"</li> | ||||
|   <li>Update version to 17.2.6</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Anuj Phogat (2):</p> | ||||
| <ul> | ||||
|   <li>i965: Program DWord Length in MI_FLUSH_DW</li> | ||||
|   <li>i965/gen8+: Fix the number of dwords programmed in MI_FLUSH_DW</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (2):</p> | ||||
| <ul> | ||||
|   <li>radv: Free syncobj with multiple imports.</li> | ||||
|   <li>radv: Free temporary syncobj after waiting on it.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dave Airlie (1):</p> | ||||
| <ul> | ||||
|   <li>r600: fix isoline tess factor component swapping.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Derek Foreman (1):</p> | ||||
| <ul> | ||||
|   <li>egl/wayland: Add a fallback when fourcc query isn't supported</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dylan Baker (1):</p> | ||||
| <ul> | ||||
|   <li>autotools: Set C++ visibility flags on Intel</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (3):</p> | ||||
| <ul> | ||||
|   <li>targets/opencl: don't hardcode the icd file install to /etc/...</li> | ||||
|   <li>configure.ac: loosen --enable-glvnd check to honour egl</li> | ||||
|   <li>configure.ac: require xcb* for the omx/va/... when using x11 platform</li> | ||||
| </ul> | ||||
|  | ||||
| <p>George Barrett (1):</p> | ||||
| <ul> | ||||
|   <li>glsl: Catch subscripted calls to undeclared subroutines</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (9):</p> | ||||
| <ul> | ||||
|   <li>intel/fs: Use ANY/ALL32 predicates in SIMD32</li> | ||||
|   <li>intel/fs: Use an explicit D type for vote any/all/eq intrinsics</li> | ||||
|   <li>intel/fs: Use a pair of 1-wide MOVs instead of SEL for any/all</li> | ||||
|   <li>intel/eu/reg: Add a subscript() helper</li> | ||||
|   <li>intel/fs: Fix MOV_INDIRECT for 64-bit values on little-core</li> | ||||
|   <li>intel/fs: Fix integer multiplication lowering for src/dst hazards</li> | ||||
|   <li>intel/fs: Mark 64-bit values as being contiguous</li> | ||||
|   <li>intel/fs: Rework zero-length URB write handling</li> | ||||
|   <li>i965: Add stencil buffers to cache set regardless of stencil texturing</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Kenneth Graunke (5):</p> | ||||
| <ul> | ||||
|   <li>i965: properly initialize brw->cs.base.stage to MESA_SHADER_COMPUTE</li> | ||||
|   <li>i965: Make L3 configuration atom listen for TCS/TES program updates.</li> | ||||
|   <li>intel/tools: Fix detection of enabled shader stages.</li> | ||||
|   <li>i965: Implement another VF cache invalidate workaround on Gen8+.</li> | ||||
|   <li>i965: Upload invariant state once at the start of the batch on Gen4-5.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Matt Turner (2):</p> | ||||
| <ul> | ||||
|   <li>i965/fs: Fix extract_i8/u8 to a 64-bit destination</li> | ||||
|   <li>i965/fs: Split all 32->64-bit MOVs on CHV, BXT, GLK</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Neil Roberts (1):</p> | ||||
| <ul> | ||||
|   <li>glsl: Transform fb buffers are only active if a variable uses them</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Nicolai Hähnle (1):</p> | ||||
| <ul> | ||||
|   <li>ddebug: fix use-after-free of streamout targets</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Tim Rowley (2):</p> | ||||
| <ul> | ||||
|   <li>swr/rast: Use gather instruction for i32gather_ps on simd16/avx512</li> | ||||
|   <li>swr/rast: Faster emulated simd16 permute</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Timothy Arceri (3):</p> | ||||
| <ul> | ||||
|   <li>glsl: drop cache_fallback</li> | ||||
|   <li>glsl: use the correct parent when allocating program data members</li> | ||||
|   <li>mesa: rework how we free gl_shader_program_data</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,247 +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.2.7 Release Notes / December 14, 2017</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.2.7 is a bug fix release which fixes bugs found since the 17.2.6 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.2.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> | ||||
| e8d837a1cd55014e636e9caf6c75cfbe1b3e4be9ab3fa125f5ef38398aa12e97  mesa-17.2.7.tar.gz | ||||
| 50cfdea8df55045797b4d0409591c04c784d9551c4da09b8178874dbe5a37a68  mesa-17.2.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=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=101378">Bug 101378</a> - interpolateAtSample check for input parameter is too strict</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102006">Bug 102006</a> - gstreamer vaapih264enc segfault</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=102552">Bug 102552</a> - Null dereference due to not checking return value of util_format_description</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=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=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=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=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=103732">Bug 103732</a> - [swr] often gets stuck in piglit's glx-multi-context-single-window test</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=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=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=104143">Bug 104143</a> - r600/sb: clobbers gl_Position -> gl_FragCoord</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Alex Smith (1):</p> | ||||
| <ul> | ||||
|   <li>radv: Add LLVM version to the device name string</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Andres Gomez (2):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.2.6</li> | ||||
|   <li>docs: remove bug 103626 from fix list as per 17.2.6</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Ben Crocker (2):</p> | ||||
| <ul> | ||||
|   <li>docs/llvmpipe.html: Minor edits</li> | ||||
|   <li>docs/llvmpipe: document ppc64le as alternative architecture to x86.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dave Airlie (1):</p> | ||||
| <ul> | ||||
|   <li>r600/sb: handle jump after target to end of program. (v2)</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Denis Pauk (1):</p> | ||||
| <ul> | ||||
|   <li>gallium/{r600, radeonsi}: Fix segfault with color format (v2)</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eduardo Lima Mitev (3):</p> | ||||
| <ul> | ||||
|   <li>glsl_parser_extra: Add utility to copy symbols between symbol tables</li> | ||||
|   <li>glsl: Use the utility function to copy symbols between symbol tables</li> | ||||
|   <li>glsl/linker: Check that re-declared, inter-shader built-in blocks match</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (3):</p> | ||||
| <ul> | ||||
|   <li>gl_table.py: add extern C guard for the generated glapitable.h</li> | ||||
|   <li>cherry-ignore: radeonsi: allow DMABUF exports for local buffers</li> | ||||
|   <li>Update version to 17.2.7</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Anholt (1):</p> | ||||
| <ul> | ||||
|   <li>broadcom/vc4: Fix handling of GFXH-515 workaround with a start vertex count.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Engestrom (1):</p> | ||||
| <ul> | ||||
|   <li>compiler: use NDEBUG to guard asserts</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Fabian Bieler (2):</p> | ||||
| <ul> | ||||
|   <li>glsl: Match order of gl_LightSourceParameters elements.</li> | ||||
|   <li>glsl: Fix gl_NormalScale.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Frank Richter (1):</p> | ||||
| <ul> | ||||
|   <li>gallium/wgl: fix default pixel format issue</li> | ||||
| </ul> | ||||
|  | ||||
| <p>George Kyriazis (1):</p> | ||||
| <ul> | ||||
|   <li>swr: Handle resource across context changes</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Gert Wollny (2):</p> | ||||
| <ul> | ||||
|   <li>r600: Emit EOP for more CF instruction types</li> | ||||
|   <li>r600/sb: do not convert if-blocks that contain indirect array access</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Ilia Mirkin (1):</p> | ||||
| <ul> | ||||
|   <li>glsl: fix derived cs variables</li> | ||||
| </ul> | ||||
|  | ||||
| <p>James Legg (1):</p> | ||||
| <ul> | ||||
|   <li>nir/opcodes: Fix constant-folding of bitfield_insert</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Disable regular fast-clears (CCS_D) on gen9+</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Juan A. Suarez Romero (1):</p> | ||||
| <ul> | ||||
|   <li>glsl: add varying resources for arrays of complex types</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Julien Isorce (1):</p> | ||||
| <ul> | ||||
|   <li>st/va: change frame_idx from array to hash table</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Kai Wasserbäch (1):</p> | ||||
| <ul> | ||||
|   <li>docs: Point to apt.llvm.org for development snapshot packages</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Kenneth Graunke (3):</p> | ||||
| <ul> | ||||
|   <li>meta: Initialize depth/clear values on declaration.</li> | ||||
|   <li>meta: Fix ClearTexture with GL_DEPTH_COMPONENT.</li> | ||||
|   <li>i965: Fix Smooth Point Enables.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Marek Olšák (3):</p> | ||||
| <ul> | ||||
|   <li>radeonsi: fix layered DCC fast clear</li> | ||||
|   <li>radeonsi/gfx9: fix importing shared textures with DCC</li> | ||||
|   <li>radeonsi: flush the context after resource_copy_region for buffer exports</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Matt Turner (4):</p> | ||||
| <ul> | ||||
|   <li>i965/fs: Handle negating immediates on MADs when propagating saturates</li> | ||||
|   <li>util: Fix SHA1 implementation on big endian</li> | ||||
|   <li>util: Fix disk_cache index calculation on big endian</li> | ||||
|   <li>i965/fs: Unpack count argument to 64-bit shift ops on Atom</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Nicolai Hähnle (3):</p> | ||||
| <ul> | ||||
|   <li>radeonsi: fix the R600_RESOURCE_FLAG_UNMAPPABLE check</li> | ||||
|   <li>glsl: allow any l-value of an input variable as interpolant in interpolateAt*</li> | ||||
|   <li>glsl: fix interpolateAtXxx(some_vec[idx], ...) with dynamic idx</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Pierre Moreau (1):</p> | ||||
| <ul> | ||||
|   <li>nvc0/ir: Properly lower 64-bit shifts when the shift value is >32</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Tapani Pälli (1):</p> | ||||
| <ul> | ||||
|   <li>mesa/gles: adjust internal format in glTexSubImage2D error checks</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Timothy Arceri (1):</p> | ||||
| <ul> | ||||
|   <li>glsl: get correct member type when processing xfb ifc arrays</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Vadym Shovkoplias (2):</p> | ||||
| <ul> | ||||
|   <li>intel/blorp: Fix possible NULL pointer dereferencing</li> | ||||
|   <li>glx/dri3: Remove unused deviceName variable</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Vinson Lee (1):</p> | ||||
| <ul> | ||||
|   <li>anv: Check if memfd_create is already defined.</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,112 +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.2.8 Release Notes / December 22, 2017</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.2.8 is a bug fix release which fixes bugs found since the 17.2.7 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.2.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> | ||||
| c715c3a3d6fe26a69c096f573ec416e038a548f0405e3befedd5136517527a84  mesa-17.2.8.tar.gz | ||||
| 6e940345cceaadfd805d701ed2b956589fa77fe8c39991da30ed51ea6b9d095f  mesa-17.2.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=102710">Bug 102710</a> - vkCmdBlitImage with arrayLayers > 1 fails</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=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> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Andres Gomez (6):</p> | ||||
| <ul> | ||||
|   <li>cherry-ignore: swr: Fix KNOB_MAX_WORKER_THREADS thread creation override.</li> | ||||
|   <li>cherry-ignore: added 17.3 nominations.</li> | ||||
|   <li>cherry-ignore: radv: port merge tess info from anv</li> | ||||
|   <li>cherry-ignore: main: Clear shader program data whenever ProgramBinary is called</li> | ||||
|   <li>cherry-ignore: r600: set DX10_CLAMP for compute shader too</li> | ||||
|   <li>Update version to 17.2.8</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (2):</p> | ||||
| <ul> | ||||
|   <li>spirv: Fix loading an entire block at once.</li> | ||||
|   <li>radv: Fix multi-layer blits.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Brian Paul (2):</p> | ||||
| <ul> | ||||
|   <li>xlib: call _mesa_warning() instead of fprintf()</li> | ||||
|   <li>gallium/aux: include nr_samples in util_resource_size() computation</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (1):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.2.7</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Iago Toral Quiroga (1):</p> | ||||
| <ul> | ||||
|   <li>i965/vec4: use a temp register to compute offsets for pull loads</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Leo Liu (1):</p> | ||||
| <ul> | ||||
|   <li>radeon/vce: move destroy command before feedback command</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Matt Turner (2):</p> | ||||
| <ul> | ||||
|   <li>util: Assume little endian in the absence of platform-specific handling</li> | ||||
|   <li>util: Add a SHA1 unit test program</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Roland Scheidegger (2):</p> | ||||
| <ul> | ||||
|   <li>r600: use min_dx10/max_dx10 instead of min/max</li> | ||||
|   <li>r600: use DX10_CLAMP bit in shader setup</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -14,7 +14,7 @@ | ||||
| <iframe src="../contents.html"></iframe> | ||||
| <div class="content"> | ||||
|  | ||||
| <h1>Mesa 17.3.0 Release Notes / December 8. 2017</h1> | ||||
| <h1>Mesa 17.3.0 Release Notes / TBD</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.3.0 is a new development release. | ||||
| @@ -33,8 +33,7 @@ because compatibility contexts are not supported. | ||||
|  | ||||
| <h2>SHA256 checksums</h2> | ||||
| <pre> | ||||
| 0cb1ffe2b4637d80f08df3bdfeb300352dcffd8ff4f6711278639b084e3f07f9  mesa-17.3.0.tar.gz | ||||
| 29a0a3a6c39990d491a1a58ed5c692e596b3bfc6c01d0b45e0b787116c50c6d9  mesa-17.3.0.tar.xz | ||||
| TBD. | ||||
| </pre> | ||||
|  | ||||
|  | ||||
| @@ -59,187 +58,14 @@ Note: some of the new features are only available with certain drivers. | ||||
| <h2>Bug fixes</h2> | ||||
|  | ||||
| <ul> | ||||
|  | ||||
| <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=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=100613">Bug 100613</a> - Regression in Mesa 17 on s390x (zSystems)</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101334">Bug 101334</a> - AMD SI cards: Some vulkan apps freeze the system</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=101655">Bug 101655</a> - Explicit sync support for android</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=101709">Bug 101709</a> - [llvmpipe] piglit gl-1.0-scissor-offscreen regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101766">Bug 101766</a> - Assertion `!"invalid type"' failed when constant expression involves literal of different type</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101832">Bug 101832</a> - [PATCH][regression][bisect] Xorg fails to start after f50aa21456d82c8cb6fbaa565835f1acc1720a5d</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101851">Bug 101851</a> - [regression] libEGL_common.a undefined reference to '__gxx_personality_v0'</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101867">Bug 101867</a> - Launch options window renders black in Feral Games in current Mesa trunk</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101876">Bug 101876</a> - SIGSEGV when launching Steam</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101910">Bug 101910</a> - [BYT] ES31-CTS.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32f</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101925">Bug 101925</a> - playstore/webview crash</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101941">Bug 101941</a> - Getting different output depending on attribute declaration order</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101961">Bug 101961</a> - Serious Sam Fusion hangs system completely</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101981">Bug 101981</a> - Commit ddc32537d6db69198e88ef0dfe19770bf9daa536 breaks rendering in multiple applications</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101982">Bug 101982</a> - Weston crashes when running an OpenGL program on i965</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101983">Bug 101983</a> - [G33] ES2-CTS.functional.shaders.struct.uniform.sampler_nested* regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101989">Bug 101989</a> - ES3-CTS.functional.state_query.integers.viewport_getinteger regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102006">Bug 102006</a> - gstreamer vaapih264enc segfault</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102014">Bug 102014</a> - Mesa git build broken by commit bc7f41e11d325280db12e7b9444501357bc13922</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102015">Bug 102015</a> - [Regression,bisected]: Segfaults with various programs</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102024">Bug 102024</a> - FORMAT_FEATURE_SAMPLED_IMAGE_BIT not supported for D16_UNORM and D32_SFLOAT</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102038">Bug 102038</a> - assertion failure in update_framebuffer_size</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102050">Bug 102050</a> - commit b4f639d02a causes build breakage on Android 32bit builds</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102052">Bug 102052</a> - No package 'expat' found</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102062">Bug 102062</a> - Segfault at eglCreateContext in android-x86</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102125">Bug 102125</a> - [softpipe] piglit arb_texture_view-targets regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102148">Bug 102148</a> - Crash when running qopenglwidget example on mesa llvmpipe win32</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=102201">Bug 102201</a> - [regression, SI] GPU crash in Unigine Valley</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102241">Bug 102241</a> - gallium/wgl: SwapBuffers freezing regularly with swap interval enabled</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102274">Bug 102274</a> - assertion failure in ir_validate.cpp:240</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102308">Bug 102308</a> - segfault in glCompressedTextureSubImage3D</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=102377">Bug 102377</a> - PIPE_*_4BYTE_ALIGNED_ONLY caps crashing</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102429">Bug 102429</a> - [regression, SI] Performance decrease in Unigine Valley & Heaven</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=102454">Bug 102454</a> - glibc 2.26 doesn't provide anymore xlocale.h</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102461">Bug 102461</a> - [llvmpipe] piglit glean fragprog1 XPD test 1 regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102467">Bug 102467</a> - src/mesa/state_tracker/st_cb_readpixels.c:178]: (warning) Redundant assignment</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102496">Bug 102496</a> - Frontbuffer rendering corruption on mesa master</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102502">Bug 102502</a> - [bisected] Kodi crashes since commit 707d2e8b - gallium: fold u_trim_pipe_prim call from st/mesa to drivers</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102530">Bug 102530</a> - [bisected] Kodi crashes when launching a stream - commit bd2662bf</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102552">Bug 102552</a> - Null dereference due to not checking return value of util_format_description</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102565">Bug 102565</a> - u_debug_stack.c:114: undefined reference to `_Ux86_64_getcontext'</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102573">Bug 102573</a> - fails to build on armel</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=102685">Bug 102685</a> - piglit.spec.glsl-1_50.compiler.vs-redeclares-pervertex-out-before-global-redeclaration</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=102844">Bug 102844</a> - memory leak with glDeleteProgram for shader program type GL_COMPUTE_SHADER</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102847">Bug 102847</a> - swr fail to build with llvm-5.0.0</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102852">Bug 102852</a> - Scons: Support the new Scons 3.0.0</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102904">Bug 102904</a> - piglit and gl45 cts linker tests regressed</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102924">Bug 102924</a> - mesa (git version) images too dark</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102940">Bug 102940</a> - Regression: Vulkan KMS rendering crashes since 17.2</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=102999">Bug 102999</a> - [BISECTED,REGRESSION] Failing Android EGL dEQP with RGBA configs</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103002">Bug 103002</a> - string_buffer_test.cpp:43: error: ISO C++ forbids initialization of member ‘str1’</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=103214">Bug 103214</a> - GLES CTS functional.state_query.indexed.atomic_counter regression</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=103247">Bug 103247</a> - Performance regression: car chase, manhattan</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103253">Bug 103253</a> - blob.h:138:1: error: unknown type name 'ssize_t'</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103265">Bug 103265</a> - [llvmpipe] piglit depth-tex-compare regression</li> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=103323">Bug 103323</a> - Possible unintended error message in file pixel.c line 286</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=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=103616">Bug 103616</a> - Increased difference from reference image in shaders</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=103759">Bug 103759</a> - plasma desktop corrupted rendering</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=103909">Bug 103909</a> - anv_allocator.c:113:1: error: static declaration of ‘memfd_create’ follows non-static declaration</li> | ||||
|  | ||||
| TBD | ||||
| </ul> | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <ul> | ||||
| TBD | ||||
| </ul> | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
|   | ||||
| @@ -1,191 +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.1 Release Notes / December 21, 2017</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.3.1 is a bug fix release which fixes bugs found since the 17.3.0 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.3.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> | ||||
| b0bb0419dbe3043ed4682a28eaf95721f427ca3f23a3c2a7dc77dbe8a3b6384d  mesa-17.3.1.tar.gz | ||||
| 9ae607e0998a586fb2c866cfc8e45e6f52d1c56cb1b41288253ea83eada824c1  mesa-17.3.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=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=102710">Bug 102710</a> - vkCmdBlitImage with arrayLayers > 1 fails</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=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=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=104143">Bug 104143</a> - r600/sb: clobbers gl_Position -> gl_FragCoord</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Alex Smith (1):</p> | ||||
| <ul> | ||||
|   <li>radv: Add LLVM version to the device name string</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (3):</p> | ||||
| <ul> | ||||
|   <li>spirv: Fix loading an entire block at once.</li> | ||||
|   <li>radv: Don't advertise VK_EXT_debug_report.</li> | ||||
|   <li>radv: Fix multi-layer blits.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Ben Crocker (1):</p> | ||||
| <ul> | ||||
|   <li>docs/llvmpipe: document ppc64le as alternative architecture to x86.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Brian Paul (2):</p> | ||||
| <ul> | ||||
|   <li>xlib: call _mesa_warning() instead of fprintf()</li> | ||||
|   <li>gallium/aux: include nr_samples in util_resource_size() computation</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bruce Cherniak (1):</p> | ||||
| <ul> | ||||
|   <li>swr: Fix KNOB_MAX_WORKER_THREADS thread creation override.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dave Airlie (1):</p> | ||||
| <ul> | ||||
|   <li>radv: port merge tess info from anv</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (5):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.3.0</li> | ||||
|   <li>util: scons: wire up the sha1 test</li> | ||||
|   <li>cherry-ignore: meson: fix strtof locale support check</li> | ||||
|   <li>cherry-ignore: util: add mesa-sha1 test to meson</li> | ||||
|   <li>Update version to 17.3.1</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Anholt (1):</p> | ||||
| <ul> | ||||
|   <li>broadcom/vc4: Fix handling of GFXH-515 workaround with a start vertex count.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Engestrom (1):</p> | ||||
| <ul> | ||||
|   <li>compiler: use NDEBUG to guard asserts</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Fabian Bieler (2):</p> | ||||
| <ul> | ||||
|   <li>glsl: Match order of gl_LightSourceParameters elements.</li> | ||||
|   <li>glsl: Fix gl_NormalScale.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Gert Wollny (1):</p> | ||||
| <ul> | ||||
|   <li>r600/sb: do not convert if-blocks that contain indirect array access</li> | ||||
| </ul> | ||||
|  | ||||
| <p>James Legg (1):</p> | ||||
| <ul> | ||||
|   <li>nir/opcodes: Fix constant-folding of bitfield_insert</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Jason Ekstrand (1):</p> | ||||
| <ul> | ||||
|   <li>i965: Switch over to fully external-or-not MOCS scheme</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Juan A. Suarez Romero (1):</p> | ||||
| <ul> | ||||
|   <li>travis: disable Meson build</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Kenneth Graunke (2):</p> | ||||
| <ul> | ||||
|   <li>meta: Initialize depth/clear values on declaration.</li> | ||||
|   <li>meta: Fix ClearTexture with GL_DEPTH_COMPONENT.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Leo Liu (1):</p> | ||||
| <ul> | ||||
|   <li>radeon/vce: move destroy command before feedback command</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Marek Olšák (4):</p> | ||||
| <ul> | ||||
|   <li>radeonsi: flush the context after resource_copy_region for buffer exports</li> | ||||
|   <li>radeonsi: allow DMABUF exports for local buffers</li> | ||||
|   <li>winsys/amdgpu: disable local BOs again due to worse performance</li> | ||||
|   <li>radeonsi: don't call force_dcc_off for buffers</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Matt Turner (2):</p> | ||||
| <ul> | ||||
|   <li>util: Assume little endian in the absence of platform-specific handling</li> | ||||
|   <li>util: Add a SHA1 unit test program</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Nicolai Hähnle (1):</p> | ||||
| <ul> | ||||
|   <li>radeonsi: fix the R600_RESOURCE_FLAG_UNMAPPABLE check</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Pierre Moreau (1):</p> | ||||
| <ul> | ||||
|   <li>nvc0/ir: Properly lower 64-bit shifts when the shift value is >32</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Timothy Arceri (1):</p> | ||||
| <ul> | ||||
|   <li>glsl: get correct member type when processing xfb ifc arrays</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Vadym Shovkoplias (2):</p> | ||||
| <ul> | ||||
|   <li>glx/dri3: Remove unused deviceName variable</li> | ||||
|   <li>util/disk_cache: Remove unneeded free() on always null string</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,109 +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.2 Release Notes / January 8, 2018</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.3.2 is a bug fix release which fixes bugs found since the 17.3.1 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.3.2 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> | ||||
| f997e80f14c385f9a2ba827c2b74aebf1b7426712ca4a81c631ef9f78e437bf4  mesa-17.3.2.tar.gz | ||||
| e2844a13f2d6f8f24bee65804a51c42d8dc6ae9c36cff7ee61d0940e796d64c6  mesa-17.3.2.tar.xz | ||||
| </pre> | ||||
|  | ||||
|  | ||||
| <h2>New features</h2> | ||||
| <p>None</p> | ||||
|  | ||||
|  | ||||
| <h2>Bug fixes</h2> | ||||
|  | ||||
| <ul> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=97852">Bug 97852</a> - Unreal Engine corrupted preview viewport</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=104288">Bug 104288</a> - Steamroll needs allow_glsl_cross_stage_interpolation_mismatch=true</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (1):</p> | ||||
| <ul> | ||||
|   <li>radv: Fix DCC compatible formats.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Brendan King (1):</p> | ||||
| <ul> | ||||
|   <li>egl: link libEGL against the dynamic version of libglapi</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dave Airlie (6):</p> | ||||
| <ul> | ||||
|   <li>radv/gfx9: add support for 3d images to blit 2d paths</li> | ||||
|   <li>radv: handle depth/stencil image copy with layouts better. (v3.1)</li> | ||||
|   <li>radv/meta: fix blit paths for depth/stencil (v2.1)</li> | ||||
|   <li>radv: fix issue with multisample positions and interp_var_at_sample.</li> | ||||
|   <li>radv/gfx9: add 3d sampler image->buffer copy shader. (v3)</li> | ||||
|   <li>radv: don't do format replacement on tc compat htile surfaces.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (2):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.3.1</li> | ||||
|   <li>Update version to 17.3.2</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Eric Engestrom (1):</p> | ||||
| <ul> | ||||
|   <li>egl: let each platform decided how to handle LIBGL_ALWAYS_SOFTWARE</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Rob Herring (1):</p> | ||||
| <ul> | ||||
|   <li>egl/android: Fix build break with dri2_initialize_android _EGLDisplay parameter</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Samuel Pitoiset (2):</p> | ||||
| <ul> | ||||
|   <li>radv/gfx9: fix primitive topology when adjacency is used</li> | ||||
|   <li>radv: use a faster version for nir_op_pack_half_2x16</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Tapani Pälli (2):</p> | ||||
| <ul> | ||||
|   <li>mesa: add AllowGLSLCrossStageInterpolationMismatch workaround</li> | ||||
|   <li>drirc: set allow_glsl_cross_stage_interpolation_mismatch for more games</li> | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,151 +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.3 Release Notes / January 18, 2018</h1> | ||||
|  | ||||
| <p> | ||||
| Mesa 17.3.3 is a bug fix release which fixes bugs found since the 17.3.2 release. | ||||
| </p> | ||||
| <p> | ||||
| Mesa 17.3.3 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> | ||||
| c733d37a161501cd81dc9b309ccb613753b98eafc6d35e0847548a6642749772  mesa-17.3.3.tar.gz | ||||
| 41bac5de0ef6adc1f41a1ec0f80c19e361298ce02fa81b5f9ba4fdca33a9379b  mesa-17.3.3.tar.xz | ||||
| </pre> | ||||
|  | ||||
|  | ||||
| <h2>New features</h2> | ||||
| <p>None</p> | ||||
|  | ||||
|  | ||||
| <h2>Bug fixes</h2> | ||||
|  | ||||
| <ul> | ||||
|  | ||||
| <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104214">Bug 104214</a> - Dota crashes when switching from game to desktop</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=104551">Bug 104551</a> - Check if Mako templates for Python are installed</li> | ||||
|  | ||||
| </ul> | ||||
|  | ||||
|  | ||||
| <h2>Changes</h2> | ||||
|  | ||||
| <p>Alex Smith (3):</p> | ||||
| <ul> | ||||
|   <li>anv: Add missing unlock in anv_scratch_pool_alloc</li> | ||||
|   <li>anv: Take write mask into account in has_color_buffer_write_enabled</li> | ||||
|   <li>anv: Make sure state on primary is correct after CmdExecuteCommands</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Andres Gomez (1):</p> | ||||
| <ul> | ||||
|   <li>anv: Import mako templates only during execution of anv_extensions</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Bas Nieuwenhuizen (11):</p> | ||||
| <ul> | ||||
|   <li>radv: Invert condition for all samples identical during resolve.</li> | ||||
|   <li>radv: Flush caches before subpass resolve.</li> | ||||
|   <li>radv: Fix fragment resolve destination offset.</li> | ||||
|   <li>radv: Use correct framebuffer size for partial FS resolves.</li> | ||||
|   <li>radv: Always use fragment resolve if dest uses DCC.</li> | ||||
|   <li>Revert "radv/gfx9: fix block compression texture views."</li> | ||||
|   <li>radv: Use correct HTILE expanded words.</li> | ||||
|   <li>radv: Allow writing 0 scissors.</li> | ||||
|   <li>ac/nir: Handle loading data from compact arrays.</li> | ||||
|   <li>radv: Invalidate L1 for VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT.</li> | ||||
|   <li>ac/nir: Sanitize location_frac for local variables.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Dave Airlie (8):</p> | ||||
| <ul> | ||||
|   <li>radv: fix events on compute queues.</li> | ||||
|   <li>radv: fix pipeline statistics end query on compute queue</li> | ||||
|   <li>radv/gfx9: fix 3d image to image transfers on compute queues.</li> | ||||
|   <li>radv/gfx9: fix 3d image clears on compute queues</li> | ||||
|   <li>radv/gfx9: fix buffer to image for 3d images on compute queues</li> | ||||
|   <li>radv/gfx9: fix block compression texture views.</li> | ||||
|   <li>radv/gfx9: use a bigger hammer to flush cb/db caches.</li> | ||||
|   <li>radv/gfx9: use correct swizzle parameter to work out border swizzle.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Emil Velikov (1):</p> | ||||
| <ul> | ||||
|   <li>docs: add sha256 checksums for 17.3.2</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Florian Will (1):</p> | ||||
| <ul> | ||||
|   <li>glsl: Respect std430 layout in lower_buffer_access</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Juan A. Suarez Romero (6):</p> | ||||
| <ul> | ||||
|   <li>cherry-ignore: intel/fs: Use the original destination region for int MUL lowering</li> | ||||
|   <li>cherry-ignore: i965/fs: Use UW types when using V immediates</li> | ||||
|   <li>cherry-ignore: main: Clear shader program data whenever ProgramBinary is called</li> | ||||
|   <li>cherry-ignore: egl: pass the dri2_dpy to the $plat_teardown functions</li> | ||||
|   <li>cherry-ignore: vulkan/wsi: free cmd pools</li> | ||||
|   <li>Update version to 17.3.3</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Józef Kucia (1):</p> | ||||
| <ul> | ||||
|   <li>radeonsi: fix alpha-to-coverage if color writes are disabled</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Kenneth Graunke (2):</p> | ||||
| <ul> | ||||
|   <li>i965: Require space for MI_BATCHBUFFER_END.</li> | ||||
|   <li>i965: Torch public intel_batchbuffer_emit_dword/float helpers.</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Lucas Stach (1):</p> | ||||
| <ul> | ||||
|   <li>etnaviv: disable in-place resolve for non-supertiled surfaces</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Samuel Iglesias Gonsálvez (1):</p> | ||||
| <ul> | ||||
|   <li>anv: VkDescriptorSetLayoutBinding can have descriptorCount == 0</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Thomas Hellstrom (1):</p> | ||||
| <ul> | ||||
|   <li>loader/dri3: Avoid freeing renderbuffers in use</li> | ||||
| </ul> | ||||
|  | ||||
| <p>Tim Rowley (1):</p> | ||||
| <ul> | ||||
|   <li>swr/rast: fix invalid sign masks in avx512 simdlib code</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 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> | ||||
| @@ -13,7 +13,8 @@ Contact | ||||
| 
 | ||||
| Status | ||||
| 
 | ||||
|     Obsolete. Effectively superseded by ARB_vertex_buffer_object. | ||||
|     Shipping (Mesa 4.0.4 and later.  Only implemented in particular | ||||
|     XFree86/DRI drivers.) | ||||
| 
 | ||||
| Version | ||||
| 
 | ||||
| @@ -12,7 +12,7 @@ Contact | ||||
| 
 | ||||
| Status | ||||
| 
 | ||||
|     Obsolete. | ||||
|     Shipping since Mesa 2.6 in February, 1998. | ||||
| 
 | ||||
| Version | ||||
| 
 | ||||
| @@ -12,7 +12,7 @@ Contact | ||||
|  | ||||
| Status | ||||
|  | ||||
|     Obsolete. | ||||
|     XXX - Not complete yet!!! | ||||
|  | ||||
| Version | ||||
|  | ||||
|   | ||||
| @@ -63,9 +63,6 @@ GL_MESAX_texture_stack: | ||||
| 	GL_TEXTURE_1D_STACK_BINDING_MESAX    0x875D | ||||
| 	GL_TEXTURE_2D_STACK_BINDING_MESAX    0x875E | ||||
|  | ||||
| GL_MESA_program_binary_formats: | ||||
|         GL_PROGRAM_BINARY_FORMAT_MESA           0x875F | ||||
|  | ||||
| GL_MESA_tile_raster_order | ||||
| 	GL_TILE_RASTER_ORDER_FIXED_MESA		0x8BB8 | ||||
| 	GL_TILE_RASTER_ORDER_INCREASING_X_MESA	0x8BB9 | ||||
|   | ||||
| @@ -9212,11 +9212,6 @@ GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLen | ||||
| #define GL_PACK_INVERT_MESA               0x8758 | ||||
| #endif /* GL_MESA_pack_invert */ | ||||
|  | ||||
| #ifndef GL_MESA_program_binary_formats | ||||
| #define GL_MESA_program_binary_formats 1 | ||||
| #define GL_PROGRAM_BINARY_FORMAT_MESA     0x875F | ||||
| #endif /* GL_MESA_program_binary_formats */ | ||||
|  | ||||
| #ifndef GL_MESA_resize_buffers | ||||
| #define GL_MESA_resize_buffers 1 | ||||
| typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void); | ||||
|   | ||||
| @@ -48,6 +48,7 @@ typedef unsigned int drm_drawable_t; | ||||
| typedef struct drm_clip_rect drm_clip_rect_t; | ||||
| #endif | ||||
|  | ||||
| #include <stdbool.h> | ||||
| #include <stdint.h> | ||||
|  | ||||
| /** | ||||
| @@ -704,7 +705,8 @@ struct __DRIuseInvalidateExtensionRec { | ||||
| #define __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS	46 | ||||
| #define __DRI_ATTRIB_YINVERTED			47 | ||||
| #define __DRI_ATTRIB_FRAMEBUFFER_SRGB_CAPABLE	48 | ||||
| #define __DRI_ATTRIB_MAX			(__DRI_ATTRIB_FRAMEBUFFER_SRGB_CAPABLE + 1) | ||||
| #define __DRI_ATTRIB_MUTABLE_RENDER_BUFFER	49 /* EGL_MUTABLE_RENDER_BUFFER_BIT_KHR */ | ||||
| #define __DRI_ATTRIB_MAX			50 | ||||
|  | ||||
| /* __DRI_ATTRIB_RENDER_TYPE */ | ||||
| #define __DRI_ATTRIB_RGBA_BIT			0x01	 | ||||
| @@ -1106,16 +1108,6 @@ struct __DRIdri2LoaderExtensionRec { | ||||
| #define __DRI_CTX_PRIORITY_MEDIUM		1 | ||||
| #define __DRI_CTX_PRIORITY_HIGH			2 | ||||
|  | ||||
| /** | ||||
|  * \name Context release behaviors. | ||||
|  */ | ||||
| /*@{*/ | ||||
| #define __DRI_CTX_ATTRIB_RELEASE_BEHAVIOR	5 | ||||
|  | ||||
| #define __DRI_CTX_RELEASE_BEHAVIOR_NONE         0 | ||||
| #define __DRI_CTX_RELEASE_BEHAVIOR_FLUSH        1 | ||||
| /*@}*/ | ||||
|  | ||||
| /** | ||||
|  * \name Reasons that __DRIdri2Extension::createContextAttribs might fail | ||||
|  */ | ||||
| @@ -1226,7 +1218,6 @@ struct __DRIdri2ExtensionRec { | ||||
| #define __DRI_IMAGE_FORMAT_ARGB1555     0x100c | ||||
| #define __DRI_IMAGE_FORMAT_R16          0x100d | ||||
| #define __DRI_IMAGE_FORMAT_GR1616       0x100e | ||||
| #define __DRI_IMAGE_FORMAT_YUYV         0x100f | ||||
|  | ||||
| #define __DRI_IMAGE_USE_SHARE		0x0001 | ||||
| #define __DRI_IMAGE_USE_SCANOUT		0x0002 | ||||
| @@ -1262,15 +1253,7 @@ struct __DRIdri2ExtensionRec { | ||||
| #define __DRI_IMAGE_FOURCC_XRGB8888	0x34325258 | ||||
| #define __DRI_IMAGE_FOURCC_ABGR8888	0x34324241 | ||||
| #define __DRI_IMAGE_FOURCC_XBGR8888	0x34324258 | ||||
| #define __DRI_IMAGE_FOURCC_SARGB8888	0x83324258 | ||||
| #define __DRI_IMAGE_FOURCC_ARGB2101010	0x30335241 | ||||
| #define __DRI_IMAGE_FOURCC_XRGB2101010	0x30335258 | ||||
| #define __DRI_IMAGE_FOURCC_ABGR2101010	0x30334241 | ||||
| #define __DRI_IMAGE_FOURCC_XBGR2101010	0x30334258 | ||||
| #define __DRI_IMAGE_FOURCC_RGBA1010102	0x30334152 | ||||
| #define __DRI_IMAGE_FOURCC_RGBX1010102	0x30335852 | ||||
| #define __DRI_IMAGE_FOURCC_BGRA1010102	0x30334142 | ||||
| #define __DRI_IMAGE_FOURCC_BGRX1010102	0x30335842 | ||||
| #define __DRI_IMAGE_FOURCC_SARGB8888    0x83324258 | ||||
| #define __DRI_IMAGE_FOURCC_YUV410	0x39565559 | ||||
| #define __DRI_IMAGE_FOURCC_YUV411	0x31315559 | ||||
| #define __DRI_IMAGE_FOURCC_YUV420	0x32315559 | ||||
| @@ -1734,21 +1717,6 @@ typedef struct __DRInoErrorExtensionRec { | ||||
|    __DRIextension base; | ||||
| } __DRInoErrorExtension; | ||||
|  | ||||
| /* | ||||
|  * Flush control driver extension. | ||||
|  * | ||||
|  * Existence of this extension means the driver can accept the | ||||
|  * \c __DRI_CTX_ATTRIB_RELEASE_BEHAVIOR attribute in | ||||
|  * \c __DRIdri2ExtensionRec::createContextAttribs. | ||||
|  */ | ||||
| #define __DRI2_FLUSH_CONTROL "DRI_FlushControl" | ||||
| #define __DRI2_FLUSH_CONTROL_VERSION 1 | ||||
|  | ||||
| typedef struct __DRI2flushControlExtensionRec __DRI2flushControlExtension; | ||||
| struct __DRI2flushControlExtensionRec { | ||||
|    __DRIextension base; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * DRI config options extension. | ||||
|  * | ||||
| @@ -1844,7 +1812,48 @@ struct __DRI2rendererQueryExtensionRec { | ||||
|  | ||||
| enum __DRIimageBufferMask { | ||||
|    __DRI_IMAGE_BUFFER_BACK = (1 << 0), | ||||
|    __DRI_IMAGE_BUFFER_FRONT = (1 << 1) | ||||
|    __DRI_IMAGE_BUFFER_FRONT = (1 << 1), | ||||
|  | ||||
|    /** | ||||
|     * A buffer shared between application and compositor. The buffer may be | ||||
|     * simultaneously accessed by each. | ||||
|     * | ||||
|     * A shared buffer is equivalent to an EGLSurface whose EGLConfig contains | ||||
|     * EGL_MUTABLE_RENDER_BUFFER_BIT_KHR and whose active EGL_RENDER_BUFFER (as | ||||
|     * opposed to any pending, requested change to EGL_RENDER_BUFFER) is | ||||
|     * EGL_SINGLE_BUFFER. | ||||
|     * | ||||
|     * If the loader returns __DRI_IMAGE_BUFFER_SHARED, then it is returned | ||||
|     * alone without accompanying back nor front buffer. | ||||
|     * | ||||
|     * The loader returns __DRI_IMAGE_BUFFER_SHARED if and only if: | ||||
|     *     - The loader supports __DRI_MUTABLE_RENDER_BUFFER_LOADER. | ||||
|     *     - The driver supports __DRI_MUTABLE_RENDER_BUFFER_DRIVER. | ||||
|     *     - The EGLConfig of the drawable EGLSurface contains | ||||
|     *       EGL_MUTABLE_RENDER_BUFFER_BIT_KHR. | ||||
|     *     - The EGLContext's EGL_RENDER_BUFFER is EGL_SINGLE_BUFFER. | ||||
|     *       Equivalently, the EGLSurface's active EGL_RENDER_BUFFER (as | ||||
|     *       opposed to any pending,requested change to EGL_RENDER_BUFFER) is | ||||
|     *       EGL_SINGLE_BUFFER. | ||||
|     * | ||||
|     * A shared buffer is similar a front buffer in that all rendering to the | ||||
|     * buffer should appear promptly on the screen. It is different from | ||||
|     * a front buffer in that its behavior is independent from the | ||||
|     * GL_DRAW_BUFFER state. Specifically, if GL_DRAW_FRAMEBUFFER is 0 and the | ||||
|     * __DRIdrawable's current buffer mask is __DRI_IMAGE_BUFFER_SHARED, then | ||||
|     * all rendering should appear promptly on the screen if GL_DRAW_BUFFER is | ||||
|     * not GL_NONE. | ||||
|     * | ||||
|     * The difference between a shared buffer and a front buffer is motivated | ||||
|     * by the constraints of Android and OpenGL ES. OpenGL ES does not support | ||||
|     * front-buffer rendering. Android's SurfaceFlinger protocol provides the | ||||
|     * EGL driver only a back buffer and no front buffer. The shared buffer | ||||
|     * mode introduced by EGL_KHR_mutable_render_buffer is a backdoor though | ||||
|     * EGL that allows Android OpenGL ES applications to render to what is | ||||
|     * effectively the front buffer, a backdoor that required no change to the | ||||
|     * OpenGL ES API and little change to the SurfaceFlinger API. | ||||
|     */ | ||||
|    __DRI_IMAGE_BUFFER_SHARED = (1 << 2), | ||||
| }; | ||||
|  | ||||
| struct __DRIimageList { | ||||
| @@ -1983,4 +1992,83 @@ struct __DRIbackgroundCallableExtensionRec { | ||||
|    GLboolean (*isThreadSafe)(void *loaderPrivate); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * The driver portion of EGL_KHR_mutable_render_buffer. | ||||
|  * | ||||
|  * If the driver creates a __DRIconfig with | ||||
|  * __DRI_ATTRIB_MUTABLE_RENDER_BUFFER, then it must support this extension. | ||||
|  * | ||||
|  * To support this extension: | ||||
|  * | ||||
|  *    - The driver should create at least one __DRIconfig with | ||||
|  *      __DRI_ATTRIB_MUTABLE_RENDER_BUFFER. This is strongly recommended but | ||||
|  *      not required. | ||||
|  * | ||||
|  *    - The driver must be able to handle __DRI_IMAGE_BUFFER_SHARED if | ||||
|  *      returned by __DRIimageLoaderExtension:getBuffers(). | ||||
|  * | ||||
|  *    - When rendering to __DRI_IMAGE_BUFFER_SHARED, it must call | ||||
|  *      __DRImutableRenderBufferLoaderExtension::displaySharedBuffer() on each | ||||
|  *      application-initiated flush. This includes glFlush, glFinish, | ||||
|  *      GL_SYNC_FLUSH_COMMANDS_BIT, EGL_SYNC_FLUSH_COMMANDS_BIT, and possibly | ||||
|  *      more. (Android applications expect that glFlush will immediately | ||||
|  *      display the buffer when in shared buffer mode because that is common | ||||
|  *      behavior among Android drivers). It :may: call displaySharedBuffer() | ||||
|  *      more often than required. | ||||
|  * | ||||
|  *    - When rendering to __DRI_IMAGE_BUFFER_SHARED, it must ensure that the | ||||
|  *      buffer is always in a format compatible for display because the | ||||
|  *      display engine (usually SurfaceFlinger or hwcomposer) may display the | ||||
|  *      image at any time, even concurrently with 3D rendering. For example, | ||||
|  *      display hardware and the GL hardware may be able to access the buffer | ||||
|  *      simultaneously. In particular, if the buffer is compressed than take | ||||
|  *      care that SurfaceFlinger and hwcomposer can consume the compression | ||||
|  *      format. | ||||
|  * | ||||
|  * \see __DRI_IMAGE_BUFFER_SHARED | ||||
|  * \see __DRI_ATTRIB_MUTABLE_RENDER_BUFFER | ||||
|  * \see __DRI_MUTABLE_RENDER_BUFFER_LOADER | ||||
|  */ | ||||
| #define __DRI_MUTABLE_RENDER_BUFFER_DRIVER "DRI_MutableRenderBufferDriver" | ||||
| #define __DRI_MUTABLE_RENDER_BUFFER_DRIVER_VERSION 1 | ||||
|  | ||||
| typedef struct __DRImutableRenderBufferDriverExtensionRec __DRImutableRenderBufferDriverExtension; | ||||
| struct __DRImutableRenderBufferDriverExtensionRec { | ||||
|    __DRIextension base; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * The loader portion of EGL_KHR_mutable_render_buffer. | ||||
|  * | ||||
|  * Requires loader extension DRI_IMAGE_LOADER, through which the loader sends | ||||
|  * __DRI_IMAGE_BUFFER_SHARED to the driver. | ||||
|  * | ||||
|  * \see __DRI_MUTABLE_RENDER_BUFFER_DRIVER | ||||
|  */ | ||||
| #define __DRI_MUTABLE_RENDER_BUFFER_LOADER "DRI_MutableRenderBufferLoader" | ||||
| #define __DRI_MUTABLE_RENDER_BUFFER_LOADER_VERSION 1 | ||||
|  | ||||
| typedef struct __DRImutableRenderBufferLoaderExtensionRec __DRImutableRenderBufferLoaderExtension; | ||||
| struct __DRImutableRenderBufferLoaderExtensionRec { | ||||
|    __DRIextension base; | ||||
|  | ||||
|    /** | ||||
|     * Inform the display engine (usually SurfaceFlinger or hwcomposer) | ||||
|     * that the __DRIdrawable has new content. The display engine may ignore | ||||
|     * this, for example, if it continually refreshes and displays the buffer | ||||
|     * on every frame, as in EGL_ANDROID_front_buffer_auto_refresh. On the | ||||
|     * other extreme, the display engine may refresh and display the buffer | ||||
|     * only in frames in which the driver calls this. | ||||
|     * | ||||
|     * If the fence_fd is not -1, then the display engine will display the | ||||
|     * buffer only after the fence signals. | ||||
|     * | ||||
|     * The drawable's current __DRIimageBufferMask, as returned by | ||||
|     * __DRIimageLoaderExtension::getBuffers(), must contain | ||||
|     * __DRI_IMAGE_BUFFER_SHARED. | ||||
|     */ | ||||
|    void (*displaySharedBuffer)(__DRIdrawable *drawable, int fence_fd, | ||||
|                                void *loaderPrivate); | ||||
| }; | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -2334,11 +2334,6 @@ GL_APICALL void GL_APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint quer | ||||
| #endif | ||||
| #endif /* GL_INTEL_performance_query */ | ||||
|  | ||||
| #ifndef GL_MESA_program_binary_formats | ||||
| #define GL_MESA_program_binary_formats 1 | ||||
| #define GL_PROGRAM_BINARY_FORMAT_MESA     0x875F | ||||
| #endif /* GL_MESA_program_binary_formats */ | ||||
|  | ||||
| #ifndef GL_MESA_shader_integer_functions | ||||
| #define GL_MESA_shader_integer_functions 1 | ||||
| #endif /* GL_MESA_shader_integer_functions */ | ||||
|   | ||||
| @@ -30,6 +30,9 @@ | ||||
| #define EMULATED_THREADS_H_INCLUDED_ | ||||
|  | ||||
| #include <time.h> | ||||
| #ifdef _MSC_VER | ||||
| #include <thr/xtimec.h>  // for xtime | ||||
| #endif | ||||
|  | ||||
| #ifndef TIME_UTC | ||||
| #define TIME_UTC 1 | ||||
| @@ -41,6 +44,14 @@ | ||||
| typedef void (*tss_dtor_t)(void*); | ||||
| typedef int (*thrd_start_t)(void*); | ||||
|  | ||||
| #ifndef _MSC_VER | ||||
| struct xtime { | ||||
|     time_t sec; | ||||
|     long nsec; | ||||
| }; | ||||
| typedef struct xtime xtime; | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /*-------------------- enumeration constants --------------------*/ | ||||
| enum { | ||||
|   | ||||
| @@ -132,15 +132,19 @@ cnd_signal(cnd_t *cond) | ||||
|  | ||||
| // 7.25.3.5 | ||||
| static inline int | ||||
| cnd_timedwait(cnd_t *cond, mtx_t *mtx, const struct timespec *abs_time) | ||||
| cnd_timedwait(cnd_t *cond, mtx_t *mtx, const xtime *xt) | ||||
| { | ||||
|     struct timespec abs_time; | ||||
|     int rt; | ||||
|  | ||||
|     assert(mtx != NULL); | ||||
|     assert(cond != NULL); | ||||
|     assert(abs_time != NULL); | ||||
|     assert(xt != NULL); | ||||
|  | ||||
|     rt = pthread_cond_timedwait(cond, mtx, abs_time); | ||||
|     abs_time.tv_sec = xt->sec; | ||||
|     abs_time.tv_nsec = xt->nsec; | ||||
|  | ||||
|     rt = pthread_cond_timedwait(cond, mtx, &abs_time); | ||||
|     if (rt == ETIMEDOUT) | ||||
|         return thrd_busy; | ||||
|     return (rt == 0) ? thrd_success : thrd_error; | ||||
| @@ -231,21 +235,24 @@ thrd_yield(void); | ||||
|  | ||||
| // 7.25.4.4 | ||||
| static inline int | ||||
| mtx_timedlock(mtx_t *mtx, const struct timespec *ts) | ||||
| mtx_timedlock(mtx_t *mtx, const xtime *xt) | ||||
| { | ||||
|     assert(mtx != NULL); | ||||
|     assert(ts != NULL); | ||||
|     assert(xt != NULL); | ||||
|  | ||||
|     { | ||||
| #ifdef EMULATED_THREADS_USE_NATIVE_TIMEDLOCK | ||||
|     struct timespec ts; | ||||
|     int rt; | ||||
|     rt = pthread_mutex_timedlock(mtx, ts); | ||||
|     ts.tv_sec = xt->sec; | ||||
|     ts.tv_nsec = xt->nsec; | ||||
|     rt = pthread_mutex_timedlock(mtx, &ts); | ||||
|     if (rt == 0) | ||||
|         return thrd_success; | ||||
|     return (rt == ETIMEDOUT) ? thrd_busy : thrd_error; | ||||
| #else | ||||
|     time_t expire = time(NULL); | ||||
|     expire += ts->tv_sec; | ||||
|     expire += xt->sec; | ||||
|     while (mtx_trylock(mtx) != thrd_success) { | ||||
|         time_t now = time(NULL); | ||||
|         if (expire < now) | ||||
| @@ -335,10 +342,13 @@ thrd_join(thrd_t thr, int *res) | ||||
|  | ||||
| // 7.25.5.7 | ||||
| static inline void | ||||
| thrd_sleep(const struct timespec *time_point, struct timespec *remaining) | ||||
| thrd_sleep(const xtime *xt) | ||||
| { | ||||
|     assert(time_point != NULL); | ||||
|     nanosleep(time_point, remaining); | ||||
|     struct timespec req; | ||||
|     assert(xt); | ||||
|     req.tv_sec = xt->sec; | ||||
|     req.tv_nsec = xt->nsec; | ||||
|     nanosleep(&req, NULL); | ||||
| } | ||||
|  | ||||
| // 7.25.5.8 | ||||
| @@ -382,15 +392,14 @@ tss_set(tss_t key, void *val) | ||||
|  | ||||
| /*-------------------- 7.25.7 Time functions --------------------*/ | ||||
| // 7.25.6.1 | ||||
| #ifndef HAVE_TIMESPEC_GET | ||||
| static inline int | ||||
| timespec_get(struct timespec *ts, int base) | ||||
| xtime_get(xtime *xt, int base) | ||||
| { | ||||
|     if (!ts) return 0; | ||||
|     if (!xt) return 0; | ||||
|     if (base == TIME_UTC) { | ||||
|         clock_gettime(CLOCK_REALTIME, ts); | ||||
|         xt->sec = time(NULL); | ||||
|         xt->nsec = 0; | ||||
|         return base; | ||||
|     } | ||||
|     return 0; | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -75,20 +75,6 @@ Configuration macro: | ||||
| #error EMULATED_THREADS_USE_NATIVE_CV requires _WIN32_WINNT>=0x0600 | ||||
| #endif | ||||
|  | ||||
| /* Visual Studio 2015 and later */ | ||||
| #if _MSC_VER >= 1900 | ||||
| #define HAVE_TIMESPEC | ||||
| #define HAVE_TIMESPEC_GET | ||||
| #elif defined(__MINGW32__) | ||||
| #define HAVE_TIMESPEC | ||||
| #endif | ||||
|  | ||||
| #ifndef HAVE_TIMESPEC | ||||
| struct timespec { | ||||
|     time_t tv_sec; | ||||
|     long tv_nsec; | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| /*---------------------------- macros ----------------------------*/ | ||||
| #ifdef EMULATED_THREADS_USE_NATIVE_CALL_ONCE | ||||
| @@ -160,9 +146,9 @@ static unsigned __stdcall impl_thrd_routine(void *p) | ||||
|     return (unsigned)code; | ||||
| } | ||||
|  | ||||
| static DWORD impl_timespec2msec(const struct timespec *ts) | ||||
| static DWORD impl_xtime2msec(const xtime *xt) | ||||
| { | ||||
|     return (DWORD)((ts->tv_sec * 1000U) + (ts->tv_nsec / 1000000L)); | ||||
|     return (DWORD)((xt->sec * 1000U) + (xt->nsec / 1000000L)); | ||||
| } | ||||
|  | ||||
| #ifdef EMULATED_THREADS_USE_NATIVE_CALL_ONCE | ||||
| @@ -220,7 +206,7 @@ static void impl_cond_do_signal(cnd_t *cond, int broadcast) | ||||
|         ReleaseSemaphore(cond->sem_queue, nsignal, NULL); | ||||
| } | ||||
|  | ||||
| static int impl_cond_do_wait(cnd_t *cond, mtx_t *mtx, const struct timespec *ts) | ||||
| static int impl_cond_do_wait(cnd_t *cond, mtx_t *mtx, const xtime *xt) | ||||
| { | ||||
|     int nleft = 0; | ||||
|     int ngone = 0; | ||||
| @@ -233,7 +219,7 @@ static int impl_cond_do_wait(cnd_t *cond, mtx_t *mtx, const struct timespec *ts) | ||||
|  | ||||
|     mtx_unlock(mtx); | ||||
|  | ||||
|     w = WaitForSingleObject(cond->sem_queue, ts ? impl_timespec2msec(ts) : INFINITE); | ||||
|     w = WaitForSingleObject(cond->sem_queue, xt ? impl_xtime2msec(xt) : INFINITE); | ||||
|     timeout = (w == WAIT_TIMEOUT); | ||||
|   | ||||
|     EnterCriticalSection(&cond->monitor); | ||||
| @@ -392,15 +378,15 @@ cnd_signal(cnd_t *cond) | ||||
|  | ||||
| // 7.25.3.5 | ||||
| static inline int | ||||
| cnd_timedwait(cnd_t *cond, mtx_t *mtx, const struct timespec *abs_time) | ||||
| cnd_timedwait(cnd_t *cond, mtx_t *mtx, const xtime *xt) | ||||
| { | ||||
|     if (!cond || !mtx || !abs_time) return thrd_error; | ||||
|     if (!cond || !mtx || !xt) return thrd_error; | ||||
| #ifdef EMULATED_THREADS_USE_NATIVE_CV | ||||
|     if (SleepConditionVariableCS(&cond->condvar, mtx, impl_timespec2msec(abs_time))) | ||||
|     if (SleepConditionVariableCS(&cond->condvar, mtx, impl_xtime2msec(xt))) | ||||
|         return thrd_success; | ||||
|     return (GetLastError() == ERROR_TIMEOUT) ? thrd_busy : thrd_error; | ||||
| #else | ||||
|     return impl_cond_do_wait(cond, mtx, abs_time); | ||||
|     return impl_cond_do_wait(cond, mtx, xt); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| @@ -452,12 +438,12 @@ mtx_lock(mtx_t *mtx) | ||||
|  | ||||
| // 7.25.4.4 | ||||
| static inline int | ||||
| mtx_timedlock(mtx_t *mtx, const struct timespec *ts) | ||||
| mtx_timedlock(mtx_t *mtx, const xtime *xt) | ||||
| { | ||||
|     time_t expire, now; | ||||
|     if (!mtx || !ts) return thrd_error; | ||||
|     if (!mtx || !xt) return thrd_error; | ||||
|     expire = time(NULL); | ||||
|     expire += ts->tv_sec; | ||||
|     expire += xt->sec; | ||||
|     while (mtx_trylock(mtx) != thrd_success) { | ||||
|         now = time(NULL); | ||||
|         if (expire < now) | ||||
| @@ -593,11 +579,10 @@ thrd_join(thrd_t thr, int *res) | ||||
|  | ||||
| // 7.25.5.7 | ||||
| static inline void | ||||
| thrd_sleep(const struct timespec *time_point, struct timespec *remaining) | ||||
| thrd_sleep(const xtime *xt) | ||||
| { | ||||
|     assert(time_point); | ||||
|     assert(!remaining); /* not implemented */ | ||||
|     Sleep(impl_timespec2msec(time_point)); | ||||
|     assert(xt); | ||||
|     Sleep(impl_xtime2msec(xt)); | ||||
| } | ||||
|  | ||||
| // 7.25.5.8 | ||||
| @@ -648,16 +633,14 @@ tss_set(tss_t key, void *val) | ||||
|  | ||||
| /*-------------------- 7.25.7 Time functions --------------------*/ | ||||
| // 7.25.6.1 | ||||
| #ifndef HAVE_TIMESPEC_GET | ||||
| static inline int | ||||
| timespec_get(struct timespec *ts, int base) | ||||
| xtime_get(xtime *xt, int base) | ||||
| { | ||||
|     if (!ts) return 0; | ||||
|     if (!xt) return 0; | ||||
|     if (base == TIME_UTC) { | ||||
|         ts->tv_sec = time(NULL); | ||||
|         ts->tv_nsec = 0; | ||||
|         xt->sec = time(NULL); | ||||
|         xt->nsec = 0; | ||||
|         return base; | ||||
|     } | ||||
|     return 0; | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -164,7 +164,6 @@ test_c99_compat_h(const void * restrict a, | ||||
| #    define HAVE_FUNC_ATTRIBUTE_FORMAT 1 | ||||
| #    define HAVE_FUNC_ATTRIBUTE_PACKED 1 | ||||
| #    define HAVE_FUNC_ATTRIBUTE_ALIAS 1 | ||||
| #    define HAVE_FUNC_ATTRIBUTE_NORETURN 1 | ||||
|  | ||||
| #    if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) | ||||
|        /* https://gcc.gnu.org/onlinedocs/gcc-4.3.6/gcc/Other-Builtins.html */ | ||||
|   | ||||
| @@ -13,9 +13,9 @@ $ make headers_install INSTALL_HDR_PATH=/path/to/install | ||||
|  | ||||
| The last update was done at the following kernel commit : | ||||
|  | ||||
| commit ca797d29cd63e7b71b4eea29aff3b1cefd1ecb59 | ||||
| Merge: 2c1c55cb75a9 010d118c2061 | ||||
| commit 7846b12fe0b5feab5446d892f41b5140c1419109 | ||||
| Merge: 7ebdb0d d78acfe | ||||
| Author: Dave Airlie <airlied@redhat.com> | ||||
| Date:   Mon Dec 4 09:40:35 2017 +1000 | ||||
| Date:   Tue Aug 29 10:38:14 2017 +1000 | ||||
|  | ||||
|     Merge tag 'drm-intel-next-2017-11-17-1' of git://anongit.freedesktop.org/drm/drm-intel into drm-next | ||||
|     Merge branch 'drm-vmwgfx-next' of git://people.freedesktop.org/~syeh/repos_linux into drm-next | ||||
|   | ||||
| @@ -731,28 +731,6 @@ struct drm_syncobj_array { | ||||
| 	__u32 pad; | ||||
| }; | ||||
|  | ||||
| /* Query current scanout sequence number */ | ||||
| struct drm_crtc_get_sequence { | ||||
| 	__u32 crtc_id;		/* requested crtc_id */ | ||||
| 	__u32 active;		/* return: crtc output is active */ | ||||
| 	__u64 sequence;		/* return: most recent vblank sequence */ | ||||
| 	__s64 sequence_ns;	/* return: most recent time of first pixel out */ | ||||
| }; | ||||
|  | ||||
| /* Queue event to be delivered at specified sequence. Time stamp marks | ||||
|  * when the first pixel of the refresh cycle leaves the display engine | ||||
|  * for the display | ||||
|  */ | ||||
| #define DRM_CRTC_SEQUENCE_RELATIVE		0x00000001	/* sequence is relative to current */ | ||||
| #define DRM_CRTC_SEQUENCE_NEXT_ON_MISS		0x00000002	/* Use next sequence if we've missed */ | ||||
|  | ||||
| struct drm_crtc_queue_sequence { | ||||
| 	__u32 crtc_id; | ||||
| 	__u32 flags; | ||||
| 	__u64 sequence;		/* on input, target sequence. on output, actual sequence */ | ||||
| 	__u64 user_data;	/* user data passed to event */ | ||||
| }; | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
| @@ -835,9 +813,6 @@ extern "C" { | ||||
|  | ||||
| #define DRM_IOCTL_WAIT_VBLANK		DRM_IOWR(0x3a, union drm_wait_vblank) | ||||
|  | ||||
| #define DRM_IOCTL_CRTC_GET_SEQUENCE	DRM_IOWR(0x3b, struct drm_crtc_get_sequence) | ||||
| #define DRM_IOCTL_CRTC_QUEUE_SEQUENCE	DRM_IOWR(0x3c, struct drm_crtc_queue_sequence) | ||||
|  | ||||
| #define DRM_IOCTL_UPDATE_DRAW		DRM_IOW(0x3f, struct drm_update_draw) | ||||
|  | ||||
| #define DRM_IOCTL_MODE_GETRESOURCES	DRM_IOWR(0xA0, struct drm_mode_card_res) | ||||
| @@ -882,11 +857,6 @@ extern "C" { | ||||
| #define DRM_IOCTL_SYNCOBJ_RESET		DRM_IOWR(0xC4, struct drm_syncobj_array) | ||||
| #define DRM_IOCTL_SYNCOBJ_SIGNAL	DRM_IOWR(0xC5, struct drm_syncobj_array) | ||||
|  | ||||
| #define DRM_IOCTL_MODE_CREATE_LEASE	DRM_IOWR(0xC6, struct drm_mode_create_lease) | ||||
| #define DRM_IOCTL_MODE_LIST_LESSEES	DRM_IOWR(0xC7, struct drm_mode_list_lessees) | ||||
| #define DRM_IOCTL_MODE_GET_LEASE	DRM_IOWR(0xC8, struct drm_mode_get_lease) | ||||
| #define DRM_IOCTL_MODE_REVOKE_LEASE	DRM_IOWR(0xC9, struct drm_mode_revoke_lease) | ||||
|  | ||||
| /** | ||||
|  * Device specific ioctls should only be in their respective headers | ||||
|  * The device specific ioctl range is from 0x40 to 0x9f. | ||||
| @@ -917,7 +887,6 @@ struct drm_event { | ||||
|  | ||||
| #define DRM_EVENT_VBLANK 0x01 | ||||
| #define DRM_EVENT_FLIP_COMPLETE 0x02 | ||||
| #define DRM_EVENT_CRTC_SEQUENCE	0x03 | ||||
|  | ||||
| struct drm_event_vblank { | ||||
| 	struct drm_event base; | ||||
| @@ -928,16 +897,6 @@ struct drm_event_vblank { | ||||
| 	__u32 crtc_id; /* 0 on older kernels that do not support this */ | ||||
| }; | ||||
|  | ||||
| /* Event delivered at sequence. Time stamp marks when the first pixel | ||||
|  * of the refresh cycle leaves the display engine for the display | ||||
|  */ | ||||
| struct drm_event_crtc_sequence { | ||||
| 	struct drm_event	base; | ||||
| 	__u64			user_data; | ||||
| 	__s64			time_ns; | ||||
| 	__u64			sequence; | ||||
| }; | ||||
|  | ||||
| /* typedef area */ | ||||
| typedef struct drm_clip_rect drm_clip_rect_t; | ||||
| typedef struct drm_drawable_info drm_drawable_info_t; | ||||
|   | ||||
| @@ -749,9 +749,9 @@ struct drm_format_modifier { | ||||
| 	 * If the number formats grew to 128, and formats 98-102 are | ||||
| 	 * supported with the modifier: | ||||
| 	 * | ||||
| 	 * 0x0000007c00000000 0000000000000000 | ||||
| 	 * 0x0000003c00000000 0000000000000000 | ||||
| 	 *		  ^ | ||||
| 	 *		  |__offset = 64, formats = 0x7c00000000 | ||||
| 	 *		  |__offset = 64, formats = 0x3c00000000 | ||||
| 	 * | ||||
| 	 */ | ||||
| 	__u64 formats; | ||||
| @@ -782,72 +782,6 @@ struct drm_mode_destroy_blob { | ||||
| 	__u32 blob_id; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Lease mode resources, creating another drm_master. | ||||
|  */ | ||||
| struct drm_mode_create_lease { | ||||
| 	/** Pointer to array of object ids (__u32) */ | ||||
| 	__u64 object_ids; | ||||
| 	/** Number of object ids */ | ||||
| 	__u32 object_count; | ||||
| 	/** flags for new FD (O_CLOEXEC, etc) */ | ||||
| 	__u32 flags; | ||||
|  | ||||
| 	/** Return: unique identifier for lessee. */ | ||||
| 	__u32 lessee_id; | ||||
| 	/** Return: file descriptor to new drm_master file */ | ||||
| 	__u32 fd; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * List lesses from a drm_master | ||||
|  */ | ||||
| struct drm_mode_list_lessees { | ||||
| 	/** Number of lessees. | ||||
| 	 * On input, provides length of the array. | ||||
| 	 * On output, provides total number. No | ||||
| 	 * more than the input number will be written | ||||
| 	 * back, so two calls can be used to get | ||||
| 	 * the size and then the data. | ||||
| 	 */ | ||||
| 	__u32 count_lessees; | ||||
| 	__u32 pad; | ||||
|  | ||||
| 	/** Pointer to lessees. | ||||
| 	 * pointer to __u64 array of lessee ids | ||||
| 	 */ | ||||
| 	__u64 lessees_ptr; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Get leased objects | ||||
|  */ | ||||
| struct drm_mode_get_lease { | ||||
| 	/** Number of leased objects. | ||||
| 	 * On input, provides length of the array. | ||||
| 	 * On output, provides total number. No | ||||
| 	 * more than the input number will be written | ||||
| 	 * back, so two calls can be used to get | ||||
| 	 * the size and then the data. | ||||
| 	 */ | ||||
| 	__u32 count_objects; | ||||
| 	__u32 pad; | ||||
|  | ||||
| 	/** Pointer to objects. | ||||
| 	 * pointer to __u32 array of object ids | ||||
| 	 */ | ||||
| 	__u64 objects_ptr; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Revoke lease | ||||
|  */ | ||||
| struct drm_mode_revoke_lease { | ||||
| 	/** Unique ID of lessee | ||||
| 	 */ | ||||
| 	__u32 lessee_id; | ||||
| }; | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -86,22 +86,6 @@ enum i915_mocs_table_index { | ||||
| 	I915_MOCS_CACHED, | ||||
| }; | ||||
|  | ||||
| /* | ||||
|  * Different engines serve different roles, and there may be more than one | ||||
|  * engine serving each role. enum drm_i915_gem_engine_class provides a | ||||
|  * classification of the role of the engine, which may be used when requesting | ||||
|  * operations to be performed on a certain subset of engines, or for providing | ||||
|  * information about that group. | ||||
|  */ | ||||
| enum drm_i915_gem_engine_class { | ||||
| 	I915_ENGINE_CLASS_RENDER	= 0, | ||||
| 	I915_ENGINE_CLASS_COPY		= 1, | ||||
| 	I915_ENGINE_CLASS_VIDEO		= 2, | ||||
| 	I915_ENGINE_CLASS_VIDEO_ENHANCE	= 3, | ||||
|  | ||||
| 	I915_ENGINE_CLASS_INVALID	= -1 | ||||
| }; | ||||
|  | ||||
| /* 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 | ||||
| @@ -466,27 +450,6 @@ typedef struct drm_i915_irq_wait { | ||||
|  */ | ||||
| #define I915_PARAM_HAS_EXEC_FENCE_ARRAY  49 | ||||
|  | ||||
| /* | ||||
|  * Query whether every context (both per-file default and user created) is | ||||
|  * isolated (insofar as HW supports). If this parameter is not true, then | ||||
|  * freshly created contexts may inherit values from an existing context, | ||||
|  * rather than default HW values. If true, it also ensures (insofar as HW | ||||
|  * supports) that all state set by this context will not leak to any other | ||||
|  * context. | ||||
|  * | ||||
|  * As not every engine across every gen support contexts, the returned | ||||
|  * value reports the support of context isolation for individual engines by | ||||
|  * returning a bitmask of each engine class set to true if that class supports | ||||
|  * isolation. | ||||
|  */ | ||||
| #define I915_PARAM_HAS_CONTEXT_ISOLATION 50 | ||||
|  | ||||
| /* Frequency of the command streamer timestamps given by the *_TIMESTAMP | ||||
|  * registers. This used to be fixed per platform but from CNL onwards, this | ||||
|  * might vary depending on the parts. | ||||
|  */ | ||||
| #define I915_PARAM_CS_TIMESTAMP_FREQUENCY 51 | ||||
|  | ||||
| typedef struct drm_i915_getparam { | ||||
| 	__s32 param; | ||||
| 	/* | ||||
| @@ -876,7 +839,6 @@ struct drm_i915_gem_exec_fence { | ||||
|  | ||||
| #define I915_EXEC_FENCE_WAIT            (1<<0) | ||||
| #define I915_EXEC_FENCE_SIGNAL          (1<<1) | ||||
| #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_SIGNAL << 1)) | ||||
| 	__u32 flags; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -41,7 +41,6 @@ extern "C" { | ||||
| #define DRM_VC4_SET_TILING                        0x08 | ||||
| #define DRM_VC4_GET_TILING                        0x09 | ||||
| #define DRM_VC4_LABEL_BO                          0x0a | ||||
| #define DRM_VC4_GEM_MADVISE                       0x0b | ||||
|  | ||||
| #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) | ||||
| @@ -54,7 +53,6 @@ extern "C" { | ||||
| #define DRM_IOCTL_VC4_SET_TILING          DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SET_TILING, struct drm_vc4_set_tiling) | ||||
| #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) | ||||
|  | ||||
| struct drm_vc4_submit_rcl_surface { | ||||
| 	__u32 hindex; /* Handle index, or ~0 if not present. */ | ||||
| @@ -307,7 +305,6 @@ struct drm_vc4_get_hang_state { | ||||
| #define DRM_VC4_PARAM_SUPPORTS_ETC1		4 | ||||
| #define DRM_VC4_PARAM_SUPPORTS_THREADED_FS	5 | ||||
| #define DRM_VC4_PARAM_SUPPORTS_FIXED_RCL_ORDER	6 | ||||
| #define DRM_VC4_PARAM_SUPPORTS_MADVISE		7 | ||||
|  | ||||
| struct drm_vc4_get_param { | ||||
| 	__u32 param; | ||||
| @@ -336,22 +333,6 @@ struct drm_vc4_label_bo { | ||||
| 	__u64 name; | ||||
| }; | ||||
|  | ||||
| /* | ||||
|  * States prefixed with '__' are internal states and cannot be passed to the | ||||
|  * DRM_IOCTL_VC4_GEM_MADVISE ioctl. | ||||
|  */ | ||||
| #define VC4_MADV_WILLNEED			0 | ||||
| #define VC4_MADV_DONTNEED			1 | ||||
| #define __VC4_MADV_PURGED			2 | ||||
| #define __VC4_MADV_NOTSUPP			3 | ||||
|  | ||||
| struct drm_vc4_gem_madvise { | ||||
| 	__u32 handle; | ||||
| 	__u32 madv; | ||||
| 	__u32 retained; | ||||
| 	__u32 pad; | ||||
| }; | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -20,8 +20,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') | ||||
|  | ||||
| if with_gles1 | ||||
|   install_headers( | ||||
| @@ -36,13 +34,13 @@ if with_gles2 | ||||
|     subdir : 'GLES2', | ||||
|   ) | ||||
|   install_headers( | ||||
|     'GLES3/gl3.h', 'GLES3/gl31.h', 'GLES3/gl32.h', 'GLES3/gl3ext.h', | ||||
|     'GLES3/gl3.h', 'GLES3/gl32.h', 'GLES3/gl32.h', 'GLES3/gl3ext.h', | ||||
|     'GLES3/gl3platform.h', | ||||
|     subdir : 'GLES3', | ||||
|   ) | ||||
| endif | ||||
|  | ||||
| if with_gles1 or with_gles2 or with_egl | ||||
| if with_gles1 or with_gles2 # or with_egl | ||||
|   install_headers('KHR/khrplatform.h', subdir : 'KHR') | ||||
| endif | ||||
|  | ||||
| @@ -54,10 +52,10 @@ if with_opengl | ||||
| endif | ||||
|  | ||||
| if with_glx != 'disabled' | ||||
|   install_headers('GL/glx.h', 'GL/glxext.h', 'GL/glx_mangle.h', subdir : 'GL') | ||||
|   install_headers('GL/glx.h', 'GL/glext.h', 'GL/glx_mangle.h', subdir : 'GL') | ||||
| endif | ||||
|  | ||||
| if with_osmesa != 'none' | ||||
| if with_osmesa | ||||
|   install_headers('GL/osmesa.h', subdir : 'GL') | ||||
| endif | ||||
|  | ||||
| @@ -68,33 +66,3 @@ if with_egl | ||||
|     subdir : 'EGL', | ||||
|   ) | ||||
| endif | ||||
|  | ||||
| if with_dri | ||||
|   install_headers('GL/internal/dri_interface.h', subdir : 'GL/internal') | ||||
| endif | ||||
|  | ||||
| if with_gallium_st_nine | ||||
|   install_headers( | ||||
|     'd3dadapter/d3dadapter9.h', 'd3dadapter/drm.h', 'd3dadapter/present.h', | ||||
|     subdir : 'd3dadapter', | ||||
|   ) | ||||
| 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 | ||||
|   install_headers( | ||||
|     'CL/cl.h', | ||||
|     'CL/cl.hpp', | ||||
|     'CL/cl_d3d10.h', | ||||
|     'CL/cl_d3d11.h', | ||||
|     'CL/cl_dx9_media_sharing.h', | ||||
|     'CL/cl_egl.h', | ||||
|     'CL/cl_ext.h', | ||||
|     'CL/cl_gl.h', | ||||
|     'CL/cl_gl_ext.h', | ||||
|     'CL/cl_platform.h', | ||||
|     'CL/opencl.h', | ||||
|     subdir: 'CL' | ||||
|   ) | ||||
| endif | ||||
|   | ||||
| @@ -163,27 +163,19 @@ CHIPSET(0x5923, kbl_gt3, "Intel(R) Kabylake GT3") | ||||
| CHIPSET(0x5926, kbl_gt3, "Intel(R) Iris Plus Graphics 640 (Kaby Lake GT3e)") | ||||
| 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(0x3184, glk,     "Intel(R) HD Graphics (Geminilake)") | ||||
| CHIPSET(0x3185, glk_2x6, "Intel(R) HD Graphics (Geminilake 2x6)") | ||||
| 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) 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) 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)") | ||||
| CHIPSET(0x3EA9, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") | ||||
| CHIPSET(0x3EA2, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") | ||||
| CHIPSET(0x3EA5, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") | ||||
| CHIPSET(0x3EA6, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") | ||||
| CHIPSET(0x3EA7, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") | ||||
| CHIPSET(0x3EA8, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") | ||||
| CHIPSET(0x3EA5, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") | ||||
| CHIPSET(0x5A49, cnl_2x8, "Intel(R) HD Graphics (Cannonlake 2x8 GT0.5)") | ||||
| CHIPSET(0x5A4A, cnl_2x8, "Intel(R) HD Graphics (Cannonlake 2x8 GT0.5)") | ||||
| CHIPSET(0x5A41, cnl_3x8, "Intel(R) HD Graphics (Cannonlake 3x8 GT1)") | ||||
|   | ||||
| @@ -1,229 +1,229 @@ | ||||
| CHIPSET(0x6780, TAHITI) | ||||
| CHIPSET(0x6784, TAHITI) | ||||
| CHIPSET(0x6788, TAHITI) | ||||
| CHIPSET(0x678A, TAHITI) | ||||
| CHIPSET(0x6790, TAHITI) | ||||
| CHIPSET(0x6791, TAHITI) | ||||
| CHIPSET(0x6792, TAHITI) | ||||
| CHIPSET(0x6798, TAHITI) | ||||
| CHIPSET(0x6799, TAHITI) | ||||
| CHIPSET(0x679A, TAHITI) | ||||
| CHIPSET(0x679B, TAHITI) | ||||
| CHIPSET(0x679E, TAHITI) | ||||
| CHIPSET(0x679F, TAHITI) | ||||
| CHIPSET(0x6780, TAHITI_6780, TAHITI) | ||||
| CHIPSET(0x6784, TAHITI_6784, TAHITI) | ||||
| CHIPSET(0x6788, TAHITI_6788, TAHITI) | ||||
| CHIPSET(0x678A, TAHITI_678A, TAHITI) | ||||
| CHIPSET(0x6790, TAHITI_6790, TAHITI) | ||||
| CHIPSET(0x6791, TAHITI_6791, TAHITI) | ||||
| CHIPSET(0x6792, TAHITI_6792, TAHITI) | ||||
| CHIPSET(0x6798, TAHITI_6798, TAHITI) | ||||
| CHIPSET(0x6799, TAHITI_6799, TAHITI) | ||||
| CHIPSET(0x679A, TAHITI_679A, TAHITI) | ||||
| CHIPSET(0x679B, TAHITI_679B, TAHITI) | ||||
| CHIPSET(0x679E, TAHITI_679E, TAHITI) | ||||
| CHIPSET(0x679F, TAHITI_679F, TAHITI) | ||||
|  | ||||
| CHIPSET(0x6800, PITCAIRN) | ||||
| CHIPSET(0x6801, PITCAIRN) | ||||
| CHIPSET(0x6802, PITCAIRN) | ||||
| CHIPSET(0x6806, PITCAIRN) | ||||
| CHIPSET(0x6808, PITCAIRN) | ||||
| CHIPSET(0x6809, PITCAIRN) | ||||
| CHIPSET(0x6810, PITCAIRN) | ||||
| CHIPSET(0x6811, PITCAIRN) | ||||
| CHIPSET(0x6816, PITCAIRN) | ||||
| CHIPSET(0x6817, PITCAIRN) | ||||
| CHIPSET(0x6818, PITCAIRN) | ||||
| CHIPSET(0x6819, PITCAIRN) | ||||
| CHIPSET(0x684C, PITCAIRN) | ||||
| CHIPSET(0x6800, PITCAIRN_6800, PITCAIRN) | ||||
| CHIPSET(0x6801, PITCAIRN_6801, PITCAIRN) | ||||
| CHIPSET(0x6802, PITCAIRN_6802, PITCAIRN) | ||||
| CHIPSET(0x6806, PITCAIRN_6806, PITCAIRN) | ||||
| CHIPSET(0x6808, PITCAIRN_6808, PITCAIRN) | ||||
| CHIPSET(0x6809, PITCAIRN_6809, PITCAIRN) | ||||
| CHIPSET(0x6810, PITCAIRN_6810, PITCAIRN) | ||||
| CHIPSET(0x6811, PITCAIRN_6811, PITCAIRN) | ||||
| CHIPSET(0x6816, PITCAIRN_6816, PITCAIRN) | ||||
| CHIPSET(0x6817, PITCAIRN_6817, PITCAIRN) | ||||
| CHIPSET(0x6818, PITCAIRN_6818, PITCAIRN) | ||||
| CHIPSET(0x6819, PITCAIRN_6819, PITCAIRN) | ||||
| CHIPSET(0x684C, PITCAIRN_684C, PITCAIRN) | ||||
|  | ||||
| CHIPSET(0x6820, VERDE) | ||||
| CHIPSET(0x6821, VERDE) | ||||
| CHIPSET(0x6822, VERDE) | ||||
| CHIPSET(0x6823, VERDE) | ||||
| CHIPSET(0x6824, VERDE) | ||||
| CHIPSET(0x6825, VERDE) | ||||
| CHIPSET(0x6826, VERDE) | ||||
| CHIPSET(0x6827, VERDE) | ||||
| CHIPSET(0x6828, VERDE) | ||||
| CHIPSET(0x6829, VERDE) | ||||
| CHIPSET(0x682A, VERDE) | ||||
| CHIPSET(0x682B, VERDE) | ||||
| CHIPSET(0x682C, VERDE) | ||||
| CHIPSET(0x682D, VERDE) | ||||
| CHIPSET(0x682F, VERDE) | ||||
| CHIPSET(0x6830, VERDE) | ||||
| CHIPSET(0x6831, VERDE) | ||||
| CHIPSET(0x6835, VERDE) | ||||
| CHIPSET(0x6837, VERDE) | ||||
| CHIPSET(0x6838, VERDE) | ||||
| CHIPSET(0x6839, VERDE) | ||||
| CHIPSET(0x683B, VERDE) | ||||
| CHIPSET(0x683D, VERDE) | ||||
| CHIPSET(0x683F, VERDE) | ||||
| CHIPSET(0x6820, VERDE_6820, VERDE) | ||||
| CHIPSET(0x6821, VERDE_6821, VERDE) | ||||
| CHIPSET(0x6822, VERDE_6822, VERDE) | ||||
| CHIPSET(0x6823, VERDE_6823, VERDE) | ||||
| CHIPSET(0x6824, VERDE_6824, VERDE) | ||||
| CHIPSET(0x6825, VERDE_6825, VERDE) | ||||
| CHIPSET(0x6826, VERDE_6826, VERDE) | ||||
| CHIPSET(0x6827, VERDE_6827, VERDE) | ||||
| CHIPSET(0x6828, VERDE_6828, VERDE) | ||||
| CHIPSET(0x6829, VERDE_6829, VERDE) | ||||
| CHIPSET(0x682A, VERDE_682A, VERDE) | ||||
| CHIPSET(0x682B, VERDE_682B, VERDE) | ||||
| CHIPSET(0x682C, VERDE_682C, VERDE) | ||||
| CHIPSET(0x682D, VERDE_682D, VERDE) | ||||
| CHIPSET(0x682F, VERDE_682F, VERDE) | ||||
| CHIPSET(0x6830, VERDE_6830, VERDE) | ||||
| CHIPSET(0x6831, VERDE_6831, VERDE) | ||||
| CHIPSET(0x6835, VERDE_6835, VERDE) | ||||
| CHIPSET(0x6837, VERDE_6837, VERDE) | ||||
| CHIPSET(0x6838, VERDE_6838, VERDE) | ||||
| CHIPSET(0x6839, VERDE_6839, VERDE) | ||||
| CHIPSET(0x683B, VERDE_683B, VERDE) | ||||
| CHIPSET(0x683D, VERDE_683D, VERDE) | ||||
| CHIPSET(0x683F, VERDE_683F, VERDE) | ||||
|  | ||||
| CHIPSET(0x6600, OLAND) | ||||
| CHIPSET(0x6601, OLAND) | ||||
| CHIPSET(0x6602, OLAND) | ||||
| CHIPSET(0x6603, OLAND) | ||||
| CHIPSET(0x6604, OLAND) | ||||
| CHIPSET(0x6605, OLAND) | ||||
| CHIPSET(0x6606, OLAND) | ||||
| CHIPSET(0x6607, OLAND) | ||||
| CHIPSET(0x6608, OLAND) | ||||
| CHIPSET(0x6610, OLAND) | ||||
| CHIPSET(0x6611, OLAND) | ||||
| CHIPSET(0x6613, OLAND) | ||||
| CHIPSET(0x6617, OLAND) | ||||
| CHIPSET(0x6620, OLAND) | ||||
| CHIPSET(0x6621, OLAND) | ||||
| CHIPSET(0x6623, OLAND) | ||||
| CHIPSET(0x6631, OLAND) | ||||
| CHIPSET(0x6600, OLAND_6600, OLAND) | ||||
| CHIPSET(0x6601, OLAND_6601, OLAND) | ||||
| CHIPSET(0x6602, OLAND_6602, OLAND) | ||||
| CHIPSET(0x6603, OLAND_6603, OLAND) | ||||
| CHIPSET(0x6604, OLAND_6604, OLAND) | ||||
| CHIPSET(0x6605, OLAND_6605, OLAND) | ||||
| CHIPSET(0x6606, OLAND_6606, OLAND) | ||||
| CHIPSET(0x6607, OLAND_6607, OLAND) | ||||
| CHIPSET(0x6608, OLAND_6608, OLAND) | ||||
| CHIPSET(0x6610, OLAND_6610, OLAND) | ||||
| CHIPSET(0x6611, OLAND_6611, OLAND) | ||||
| CHIPSET(0x6613, OLAND_6613, OLAND) | ||||
| CHIPSET(0x6617, OLAND_6617, OLAND) | ||||
| CHIPSET(0x6620, OLAND_6620, OLAND) | ||||
| CHIPSET(0x6621, OLAND_6621, OLAND) | ||||
| CHIPSET(0x6623, OLAND_6623, OLAND) | ||||
| CHIPSET(0x6631, OLAND_6631, OLAND) | ||||
|  | ||||
| CHIPSET(0x6660, HAINAN) | ||||
| CHIPSET(0x6663, HAINAN) | ||||
| CHIPSET(0x6664, HAINAN) | ||||
| CHIPSET(0x6665, HAINAN) | ||||
| CHIPSET(0x6667, HAINAN) | ||||
| CHIPSET(0x666F, HAINAN) | ||||
| CHIPSET(0x6660, HAINAN_6660, HAINAN) | ||||
| CHIPSET(0x6663, HAINAN_6663, HAINAN) | ||||
| CHIPSET(0x6664, HAINAN_6664, HAINAN) | ||||
| CHIPSET(0x6665, HAINAN_6665, HAINAN) | ||||
| CHIPSET(0x6667, HAINAN_6667, HAINAN) | ||||
| CHIPSET(0x666F, HAINAN_666F, HAINAN) | ||||
|  | ||||
| CHIPSET(0x6640, BONAIRE) | ||||
| CHIPSET(0x6641, BONAIRE) | ||||
| CHIPSET(0x6646, BONAIRE) | ||||
| CHIPSET(0x6647, BONAIRE) | ||||
| CHIPSET(0x6649, BONAIRE) | ||||
| CHIPSET(0x6650, BONAIRE) | ||||
| CHIPSET(0x6651, BONAIRE) | ||||
| CHIPSET(0x6658, BONAIRE) | ||||
| CHIPSET(0x665C, BONAIRE) | ||||
| CHIPSET(0x665D, BONAIRE) | ||||
| CHIPSET(0x665F, BONAIRE) | ||||
| CHIPSET(0x6640, BONAIRE_6640, BONAIRE) | ||||
| CHIPSET(0x6641, BONAIRE_6641, BONAIRE) | ||||
| CHIPSET(0x6646, BONAIRE_6646, BONAIRE) | ||||
| CHIPSET(0x6647, BONAIRE_6647, BONAIRE) | ||||
| CHIPSET(0x6649, BONAIRE_6649, BONAIRE) | ||||
| CHIPSET(0x6650, BONAIRE_6650, BONAIRE) | ||||
| CHIPSET(0x6651, BONAIRE_6651, BONAIRE) | ||||
| CHIPSET(0x6658, BONAIRE_6658, BONAIRE) | ||||
| CHIPSET(0x665C, BONAIRE_665C, BONAIRE) | ||||
| CHIPSET(0x665D, BONAIRE_665D, BONAIRE) | ||||
| CHIPSET(0x665F, BONAIRE_665F, BONAIRE) | ||||
|  | ||||
| CHIPSET(0x9830, KABINI) | ||||
| CHIPSET(0x9831, KABINI) | ||||
| CHIPSET(0x9832, KABINI) | ||||
| CHIPSET(0x9833, KABINI) | ||||
| CHIPSET(0x9834, KABINI) | ||||
| CHIPSET(0x9835, KABINI) | ||||
| CHIPSET(0x9836, KABINI) | ||||
| CHIPSET(0x9837, KABINI) | ||||
| CHIPSET(0x9838, KABINI) | ||||
| CHIPSET(0x9839, KABINI) | ||||
| CHIPSET(0x983A, KABINI) | ||||
| CHIPSET(0x983B, KABINI) | ||||
| CHIPSET(0x983C, KABINI) | ||||
| CHIPSET(0x983D, KABINI) | ||||
| CHIPSET(0x983E, KABINI) | ||||
| CHIPSET(0x983F, KABINI) | ||||
| CHIPSET(0x9830, KABINI_9830, KABINI) | ||||
| CHIPSET(0x9831, KABINI_9831, KABINI) | ||||
| CHIPSET(0x9832, KABINI_9832, KABINI) | ||||
| CHIPSET(0x9833, KABINI_9833, KABINI) | ||||
| CHIPSET(0x9834, KABINI_9834, KABINI) | ||||
| CHIPSET(0x9835, KABINI_9835, KABINI) | ||||
| CHIPSET(0x9836, KABINI_9836, KABINI) | ||||
| CHIPSET(0x9837, KABINI_9837, KABINI) | ||||
| CHIPSET(0x9838, KABINI_9838, KABINI) | ||||
| CHIPSET(0x9839, KABINI_9839, KABINI) | ||||
| CHIPSET(0x983A, KABINI_983A, KABINI) | ||||
| CHIPSET(0x983B, KABINI_983B, KABINI) | ||||
| CHIPSET(0x983C, KABINI_983C, KABINI) | ||||
| CHIPSET(0x983D, KABINI_983D, KABINI) | ||||
| CHIPSET(0x983E, KABINI_983E, KABINI) | ||||
| CHIPSET(0x983F, KABINI_983F, KABINI) | ||||
|  | ||||
| CHIPSET(0x9850, MULLINS) | ||||
| CHIPSET(0x9851, MULLINS) | ||||
| CHIPSET(0x9852, MULLINS) | ||||
| CHIPSET(0x9853, MULLINS) | ||||
| CHIPSET(0x9854, MULLINS) | ||||
| CHIPSET(0x9855, MULLINS) | ||||
| CHIPSET(0x9856, MULLINS) | ||||
| CHIPSET(0x9857, MULLINS) | ||||
| CHIPSET(0x9858, MULLINS) | ||||
| CHIPSET(0x9859, MULLINS) | ||||
| CHIPSET(0x985A, MULLINS) | ||||
| CHIPSET(0x985B, MULLINS) | ||||
| CHIPSET(0x985C, MULLINS) | ||||
| CHIPSET(0x985D, MULLINS) | ||||
| CHIPSET(0x985E, MULLINS) | ||||
| CHIPSET(0x985F, MULLINS) | ||||
| CHIPSET(0x9850, MULLINS_9850, MULLINS) | ||||
| CHIPSET(0x9851, MULLINS_9851, MULLINS) | ||||
| CHIPSET(0x9852, MULLINS_9852, MULLINS) | ||||
| CHIPSET(0x9853, MULLINS_9853, MULLINS) | ||||
| CHIPSET(0x9854, MULLINS_9854, MULLINS) | ||||
| CHIPSET(0x9855, MULLINS_9855, MULLINS) | ||||
| CHIPSET(0x9856, MULLINS_9856, MULLINS) | ||||
| CHIPSET(0x9857, MULLINS_9857, MULLINS) | ||||
| CHIPSET(0x9858, MULLINS_9858, MULLINS) | ||||
| CHIPSET(0x9859, MULLINS_9859, MULLINS) | ||||
| CHIPSET(0x985A, MULLINS_985A, MULLINS) | ||||
| CHIPSET(0x985B, MULLINS_985B, MULLINS) | ||||
| CHIPSET(0x985C, MULLINS_985C, MULLINS) | ||||
| CHIPSET(0x985D, MULLINS_985D, MULLINS) | ||||
| CHIPSET(0x985E, MULLINS_985E, MULLINS) | ||||
| CHIPSET(0x985F, MULLINS_985F, MULLINS) | ||||
|  | ||||
| CHIPSET(0x1304, KAVERI) | ||||
| CHIPSET(0x1305, KAVERI) | ||||
| CHIPSET(0x1306, KAVERI) | ||||
| CHIPSET(0x1307, KAVERI) | ||||
| CHIPSET(0x1309, KAVERI) | ||||
| CHIPSET(0x130A, KAVERI) | ||||
| CHIPSET(0x130B, KAVERI) | ||||
| CHIPSET(0x130C, KAVERI) | ||||
| CHIPSET(0x130D, KAVERI) | ||||
| CHIPSET(0x130E, KAVERI) | ||||
| CHIPSET(0x130F, KAVERI) | ||||
| CHIPSET(0x1310, KAVERI) | ||||
| CHIPSET(0x1311, KAVERI) | ||||
| CHIPSET(0x1312, KAVERI) | ||||
| CHIPSET(0x1313, KAVERI) | ||||
| CHIPSET(0x1315, KAVERI) | ||||
| CHIPSET(0x1316, KAVERI) | ||||
| CHIPSET(0x1317, KAVERI) | ||||
| CHIPSET(0x1318, KAVERI) | ||||
| CHIPSET(0x131B, KAVERI) | ||||
| CHIPSET(0x131C, KAVERI) | ||||
| CHIPSET(0x131D, KAVERI) | ||||
| CHIPSET(0x1304, KAVERI_1304, KAVERI) | ||||
| CHIPSET(0x1305, KAVERI_1305, KAVERI) | ||||
| CHIPSET(0x1306, KAVERI_1306, KAVERI) | ||||
| CHIPSET(0x1307, KAVERI_1307, KAVERI) | ||||
| CHIPSET(0x1309, KAVERI_1309, KAVERI) | ||||
| CHIPSET(0x130A, KAVERI_130A, KAVERI) | ||||
| CHIPSET(0x130B, KAVERI_130B, KAVERI) | ||||
| CHIPSET(0x130C, KAVERI_130C, KAVERI) | ||||
| CHIPSET(0x130D, KAVERI_130D, KAVERI) | ||||
| CHIPSET(0x130E, KAVERI_130E, KAVERI) | ||||
| CHIPSET(0x130F, KAVERI_130F, KAVERI) | ||||
| CHIPSET(0x1310, KAVERI_1310, KAVERI) | ||||
| CHIPSET(0x1311, KAVERI_1311, KAVERI) | ||||
| CHIPSET(0x1312, KAVERI_1312, KAVERI) | ||||
| CHIPSET(0x1313, KAVERI_1313, KAVERI) | ||||
| CHIPSET(0x1315, KAVERI_1315, KAVERI) | ||||
| CHIPSET(0x1316, KAVERI_1316, KAVERI) | ||||
| CHIPSET(0x1317, KAVERI_1317, KAVERI) | ||||
| CHIPSET(0x1318, KAVERI_1318, KAVERI) | ||||
| CHIPSET(0x131B, KAVERI_131B, KAVERI) | ||||
| CHIPSET(0x131C, KAVERI_131C, KAVERI) | ||||
| CHIPSET(0x131D, KAVERI_131D, KAVERI) | ||||
|  | ||||
| CHIPSET(0x67A0, HAWAII) | ||||
| CHIPSET(0x67A1, HAWAII) | ||||
| CHIPSET(0x67A2, HAWAII) | ||||
| CHIPSET(0x67A8, HAWAII) | ||||
| CHIPSET(0x67A9, HAWAII) | ||||
| CHIPSET(0x67AA, HAWAII) | ||||
| CHIPSET(0x67B0, HAWAII) | ||||
| CHIPSET(0x67B1, HAWAII) | ||||
| CHIPSET(0x67B8, HAWAII) | ||||
| CHIPSET(0x67B9, HAWAII) | ||||
| CHIPSET(0x67BA, HAWAII) | ||||
| CHIPSET(0x67BE, HAWAII) | ||||
| CHIPSET(0x67A0, HAWAII_67A0, HAWAII) | ||||
| CHIPSET(0x67A1, HAWAII_67A1, HAWAII) | ||||
| CHIPSET(0x67A2, HAWAII_67A2, HAWAII) | ||||
| CHIPSET(0x67A8, HAWAII_67A8, HAWAII) | ||||
| CHIPSET(0x67A9, HAWAII_67A9, HAWAII) | ||||
| CHIPSET(0x67AA, HAWAII_67AA, HAWAII) | ||||
| CHIPSET(0x67B0, HAWAII_67B0, HAWAII) | ||||
| CHIPSET(0x67B1, HAWAII_67B1, HAWAII) | ||||
| CHIPSET(0x67B8, HAWAII_67B8, HAWAII) | ||||
| CHIPSET(0x67B9, HAWAII_67B9, HAWAII) | ||||
| CHIPSET(0x67BA, HAWAII_67BA, HAWAII) | ||||
| CHIPSET(0x67BE, HAWAII_67BE, HAWAII) | ||||
|  | ||||
| CHIPSET(0x6900, ICELAND) | ||||
| CHIPSET(0x6901, ICELAND) | ||||
| CHIPSET(0x6902, ICELAND) | ||||
| CHIPSET(0x6903, ICELAND) | ||||
| CHIPSET(0x6907, ICELAND) | ||||
| CHIPSET(0x6900, ICELAND_, ICELAND) | ||||
| CHIPSET(0x6901, ICELAND_, ICELAND) | ||||
| CHIPSET(0x6902, ICELAND_, ICELAND) | ||||
| CHIPSET(0x6903, ICELAND_, ICELAND) | ||||
| CHIPSET(0x6907, ICELAND_, ICELAND) | ||||
|  | ||||
| CHIPSET(0x6920, TONGA) | ||||
| CHIPSET(0x6921, TONGA) | ||||
| CHIPSET(0x6928, TONGA) | ||||
| CHIPSET(0x6929, TONGA) | ||||
| CHIPSET(0x692B, TONGA) | ||||
| CHIPSET(0x692F, TONGA) | ||||
| CHIPSET(0x6930, TONGA) | ||||
| CHIPSET(0x6938, TONGA) | ||||
| CHIPSET(0x6939, TONGA) | ||||
| CHIPSET(0x6920, TONGA_, TONGA) | ||||
| CHIPSET(0x6921, TONGA_, TONGA) | ||||
| CHIPSET(0x6928, TONGA_, TONGA) | ||||
| CHIPSET(0x6929, TONGA_, TONGA) | ||||
| CHIPSET(0x692B, TONGA_, TONGA) | ||||
| CHIPSET(0x692F, TONGA_, TONGA) | ||||
| CHIPSET(0x6930, TONGA_, TONGA) | ||||
| CHIPSET(0x6938, TONGA_, TONGA) | ||||
| CHIPSET(0x6939, TONGA_, TONGA) | ||||
|  | ||||
| CHIPSET(0x9870, CARRIZO) | ||||
| CHIPSET(0x9874, CARRIZO) | ||||
| CHIPSET(0x9875, CARRIZO) | ||||
| CHIPSET(0x9876, CARRIZO) | ||||
| CHIPSET(0x9877, CARRIZO) | ||||
| CHIPSET(0x9870, CARRIZO_, CARRIZO) | ||||
| CHIPSET(0x9874, CARRIZO_, CARRIZO) | ||||
| CHIPSET(0x9875, CARRIZO_, CARRIZO) | ||||
| CHIPSET(0x9876, CARRIZO_, CARRIZO) | ||||
| CHIPSET(0x9877, CARRIZO_, CARRIZO) | ||||
|  | ||||
| CHIPSET(0x7300, FIJI) | ||||
| CHIPSET(0x7300, FIJI_, FIJI) | ||||
|  | ||||
| CHIPSET(0x67E0, POLARIS11) | ||||
| CHIPSET(0x67E1, POLARIS11) | ||||
| CHIPSET(0x67E3, POLARIS11) | ||||
| CHIPSET(0x67E7, POLARIS11) | ||||
| CHIPSET(0x67E8, POLARIS11) | ||||
| CHIPSET(0x67E9, POLARIS11) | ||||
| CHIPSET(0x67EB, POLARIS11) | ||||
| CHIPSET(0x67EF, POLARIS11) | ||||
| CHIPSET(0x67FF, POLARIS11) | ||||
| CHIPSET(0x67E0, POLARIS11_, POLARIS11) | ||||
| CHIPSET(0x67E1, POLARIS11_, POLARIS11) | ||||
| CHIPSET(0x67E3, POLARIS11_, POLARIS11) | ||||
| CHIPSET(0x67E7, POLARIS11_, POLARIS11) | ||||
| CHIPSET(0x67E8, POLARIS11_, POLARIS11) | ||||
| CHIPSET(0x67E9, POLARIS11_, POLARIS11) | ||||
| CHIPSET(0x67EB, POLARIS11_, POLARIS11) | ||||
| CHIPSET(0x67EF, POLARIS11_, POLARIS11) | ||||
| CHIPSET(0x67FF, POLARIS11_, POLARIS11) | ||||
|  | ||||
| CHIPSET(0x67C0, POLARIS10) | ||||
| CHIPSET(0x67C1, POLARIS10) | ||||
| CHIPSET(0x67C2, POLARIS10) | ||||
| CHIPSET(0x67C4, POLARIS10) | ||||
| CHIPSET(0x67C7, POLARIS10) | ||||
| CHIPSET(0x67C8, POLARIS10) | ||||
| CHIPSET(0x67C9, POLARIS10) | ||||
| CHIPSET(0x67CA, POLARIS10) | ||||
| CHIPSET(0x67CC, POLARIS10) | ||||
| CHIPSET(0x67CF, POLARIS10) | ||||
| CHIPSET(0x67D0, POLARIS10) | ||||
| CHIPSET(0x67DF, POLARIS10) | ||||
| CHIPSET(0x67C0, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67C1, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67C2, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67C4, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67C7, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67C8, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67C9, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67CA, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67CC, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67CF, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67D0, POLARIS10_, POLARIS10) | ||||
| CHIPSET(0x67DF, POLARIS10_, POLARIS10) | ||||
|  | ||||
| CHIPSET(0x98E4, STONEY) | ||||
| CHIPSET(0x98E4, STONEY_, STONEY) | ||||
|  | ||||
| CHIPSET(0x6980, POLARIS12) | ||||
| CHIPSET(0x6981, POLARIS12) | ||||
| CHIPSET(0x6985, POLARIS12) | ||||
| CHIPSET(0x6986, POLARIS12) | ||||
| CHIPSET(0x6987, POLARIS12) | ||||
| CHIPSET(0x6995, POLARIS12) | ||||
| CHIPSET(0x6997, POLARIS12) | ||||
| CHIPSET(0x699F, POLARIS12) | ||||
| CHIPSET(0x6980, POLARIS12_, POLARIS12) | ||||
| CHIPSET(0x6981, POLARIS12_, POLARIS12) | ||||
| CHIPSET(0x6985, POLARIS12_, POLARIS12) | ||||
| CHIPSET(0x6986, POLARIS12_, POLARIS12) | ||||
| CHIPSET(0x6987, POLARIS12_, POLARIS12) | ||||
| CHIPSET(0x6995, POLARIS12_, POLARIS12) | ||||
| CHIPSET(0x6997, POLARIS12_, POLARIS12) | ||||
| CHIPSET(0x699F, POLARIS12_, POLARIS12) | ||||
|  | ||||
| CHIPSET(0x6860, VEGA10) | ||||
| CHIPSET(0x6861, VEGA10) | ||||
| CHIPSET(0x6862, VEGA10) | ||||
| CHIPSET(0x6863, VEGA10) | ||||
| CHIPSET(0x6864, VEGA10) | ||||
| CHIPSET(0x6867, VEGA10) | ||||
| CHIPSET(0x6868, VEGA10) | ||||
| CHIPSET(0x687F, VEGA10) | ||||
| CHIPSET(0x686C, VEGA10) | ||||
| CHIPSET(0x6860, VEGA10_, VEGA10) | ||||
| CHIPSET(0x6861, VEGA10_, VEGA10) | ||||
| CHIPSET(0x6862, VEGA10_, VEGA10) | ||||
| CHIPSET(0x6863, VEGA10_, VEGA10) | ||||
| CHIPSET(0x6864, VEGA10_, VEGA10) | ||||
| CHIPSET(0x6867, VEGA10_, VEGA10) | ||||
| CHIPSET(0x6868, VEGA10_, VEGA10) | ||||
| CHIPSET(0x687F, VEGA10_, VEGA10) | ||||
| CHIPSET(0x686C, VEGA10_, VEGA10) | ||||
|  | ||||
| CHIPSET(0x15DD, RAVEN) | ||||
| CHIPSET(0x15DD, RAVEN_, RAVEN) | ||||
|   | ||||
| @@ -43,7 +43,7 @@ extern "C" { | ||||
| #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) | ||||
| #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) | ||||
| // Version of this file | ||||
| #define VK_HEADER_VERSION 66 | ||||
| #define VK_HEADER_VERSION 63 | ||||
|  | ||||
|  | ||||
| #define VK_NULL_HANDLE 0 | ||||
| @@ -355,9 +355,6 @@ typedef enum VkStructureType { | ||||
|     VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, | ||||
|     VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, | ||||
|     VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000, | ||||
|     VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000, | ||||
|     VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001, | ||||
|     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002, | ||||
|     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, | ||||
|     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, | ||||
|     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), | ||||
| @@ -4198,9 +4195,6 @@ typedef enum VkExternalMemoryHandleTypeFlagBitsKHR { | ||||
|     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 0x00000010, | ||||
|     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 0x00000020, | ||||
|     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 0x00000040, | ||||
|     VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200, | ||||
|     VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080, | ||||
|     VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100, | ||||
|     VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF | ||||
| } VkExternalMemoryHandleTypeFlagBitsKHR; | ||||
| typedef VkFlags VkExternalMemoryHandleTypeFlagsKHR; | ||||
| @@ -5200,7 +5194,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR( | ||||
| #define VK_EXT_debug_report 1 | ||||
| VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) | ||||
|  | ||||
| #define VK_EXT_DEBUG_REPORT_SPEC_VERSION  9 | ||||
| #define VK_EXT_DEBUG_REPORT_SPEC_VERSION  8 | ||||
| #define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" | ||||
| #define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT | ||||
| #define VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT | ||||
| @@ -5494,52 +5488,6 @@ typedef struct VkTextureLODGatherFormatPropertiesAMD { | ||||
|  | ||||
|  | ||||
|  | ||||
| #define VK_AMD_shader_info 1 | ||||
| #define VK_AMD_SHADER_INFO_SPEC_VERSION   1 | ||||
| #define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info" | ||||
|  | ||||
|  | ||||
| typedef enum VkShaderInfoTypeAMD { | ||||
|     VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0, | ||||
|     VK_SHADER_INFO_TYPE_BINARY_AMD = 1, | ||||
|     VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2, | ||||
|     VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD = VK_SHADER_INFO_TYPE_STATISTICS_AMD, | ||||
|     VK_SHADER_INFO_TYPE_END_RANGE_AMD = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD, | ||||
|     VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD = (VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD - VK_SHADER_INFO_TYPE_STATISTICS_AMD + 1), | ||||
|     VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF | ||||
| } VkShaderInfoTypeAMD; | ||||
|  | ||||
| typedef struct VkShaderResourceUsageAMD { | ||||
|     uint32_t    numUsedVgprs; | ||||
|     uint32_t    numUsedSgprs; | ||||
|     uint32_t    ldsSizePerLocalWorkGroup; | ||||
|     size_t      ldsUsageSizeInBytes; | ||||
|     size_t      scratchMemUsageInBytes; | ||||
| } VkShaderResourceUsageAMD; | ||||
|  | ||||
| typedef struct VkShaderStatisticsInfoAMD { | ||||
|     VkShaderStageFlags          shaderStageMask; | ||||
|     VkShaderResourceUsageAMD    resourceUsage; | ||||
|     uint32_t                    numPhysicalVgprs; | ||||
|     uint32_t                    numPhysicalSgprs; | ||||
|     uint32_t                    numAvailableVgprs; | ||||
|     uint32_t                    numAvailableSgprs; | ||||
|     uint32_t                    computeWorkGroupSize[3]; | ||||
| } VkShaderStatisticsInfoAMD; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD( | ||||
|     VkDevice                                    device, | ||||
|     VkPipeline                                  pipeline, | ||||
|     VkShaderStageFlagBits                       shaderStage, | ||||
|     VkShaderInfoTypeAMD                         infoType, | ||||
|     size_t*                                     pInfoSize, | ||||
|     void*                                       pInfo); | ||||
| #endif | ||||
|  | ||||
| #define VK_AMD_shader_image_load_store_lod 1 | ||||
| #define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1 | ||||
| #define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod" | ||||
| @@ -6622,17 +6570,6 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK( | ||||
| #endif | ||||
| #endif /* VK_USE_PLATFORM_MACOS_MVK */ | ||||
|  | ||||
| #define VK_EXT_external_memory_dma_buf 1 | ||||
| #define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1 | ||||
| #define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf" | ||||
|  | ||||
|  | ||||
| #define VK_EXT_queue_family_foreign 1 | ||||
| #define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1 | ||||
| #define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign" | ||||
| #define VK_QUEUE_FAMILY_FOREIGN_EXT       (~0U-2) | ||||
|  | ||||
|  | ||||
| #define VK_EXT_sampler_filter_minmax 1 | ||||
| #define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1 | ||||
| #define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax" | ||||
| @@ -6924,18 +6861,18 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT( | ||||
|  | ||||
|  | ||||
| #define VK_EXT_global_priority 1 | ||||
| #define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2 | ||||
| #define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 1 | ||||
| #define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority" | ||||
|  | ||||
|  | ||||
| typedef enum VkQueueGlobalPriorityEXT { | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT = (VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT + 1), | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_LOW = 128, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME, | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT = (VK_QUEUE_GLOBAL_PRIORITY_REALTIME - VK_QUEUE_GLOBAL_PRIORITY_LOW + 1), | ||||
|     VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF | ||||
| } VkQueueGlobalPriorityEXT; | ||||
|  | ||||
| @@ -6947,40 +6884,6 @@ typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT { | ||||
|  | ||||
|  | ||||
|  | ||||
| #define VK_EXT_external_memory_host 1 | ||||
| #define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1 | ||||
| #define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host" | ||||
|  | ||||
| typedef struct VkImportMemoryHostPointerInfoEXT { | ||||
|     VkStructureType                          sType; | ||||
|     const void*                              pNext; | ||||
|     VkExternalMemoryHandleTypeFlagBitsKHR    handleType; | ||||
|     void*                                    pHostPointer; | ||||
| } VkImportMemoryHostPointerInfoEXT; | ||||
|  | ||||
| typedef struct VkMemoryHostPointerPropertiesEXT { | ||||
|     VkStructureType    sType; | ||||
|     void*              pNext; | ||||
|     uint32_t           memoryTypeBits; | ||||
| } VkMemoryHostPointerPropertiesEXT; | ||||
|  | ||||
| typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT { | ||||
|     VkStructureType    sType; | ||||
|     void*              pNext; | ||||
|     VkDeviceSize       minImportedHostPointerAlignment; | ||||
| } VkPhysicalDeviceExternalMemoryHostPropertiesEXT; | ||||
|  | ||||
|  | ||||
| typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBitsKHR handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); | ||||
|  | ||||
| #ifndef VK_NO_PROTOTYPES | ||||
| VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT( | ||||
|     VkDevice                                    device, | ||||
|     VkExternalMemoryHandleTypeFlagBitsKHR       handleType, | ||||
|     const void*                                 pHostPointer, | ||||
|     VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties); | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|   | ||||
							
								
								
									
										799
									
								
								meson.build
									
									
									
									
									
								
							
							
						
						
									
										799
									
								
								meson.build
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -21,21 +21,21 @@ | ||||
| option( | ||||
|   'platforms', | ||||
|   type : 'string', | ||||
|   value : 'auto', | ||||
|   description : 'comma separated list of window systems to support. If this is set to auto all platforms applicable to the OS will be enabled.' | ||||
|   value : 'x11,wayland,drm,surfaceless', | ||||
|   description : 'comma separated list of window systems to support. wayland, x11, surfaceless, drm, etc.' | ||||
| ) | ||||
| option( | ||||
|   'dri3', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   choices : ['auto', 'yes', 'no'], | ||||
|   description : 'enable support for dri3' | ||||
| ) | ||||
| option( | ||||
|   'dri-drivers', | ||||
|   type : 'string', | ||||
|   value : 'auto', | ||||
|   description : 'comma separated list of dri drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built' | ||||
|   value : 'i915,i965', | ||||
|   description : 'comma separated list of dri drivers to build.' | ||||
| ) | ||||
| option( | ||||
|   'dri-drivers-path', | ||||
| @@ -46,98 +46,20 @@ option( | ||||
| option( | ||||
|   'gallium-drivers', | ||||
|   type : 'string', | ||||
|   value : 'auto', | ||||
|   description : 'comma separated list of gallium drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built' | ||||
|   value : 'pl111,radeonsi,nouveau,swrast,vc4', | ||||
|   description : 'comma separated list of gallium drivers to build.' | ||||
| ) | ||||
| option( | ||||
|   'gallium-extra-hud', | ||||
|   type : 'boolean', | ||||
|   value : false, | ||||
|   description : 'Enable HUD block/NIC I/O HUD status support', | ||||
| ) | ||||
| option( | ||||
|   'gallium-vdpau', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   description : 'enable gallium vdpau state tracker.', | ||||
| ) | ||||
| option( | ||||
|   'vdpau-libs-path', | ||||
|   'gallium-media', | ||||
|   type : 'string', | ||||
|   value : '', | ||||
|   description : 'path to put vdpau libraries. defaults to $libdir/vdpau.' | ||||
| ) | ||||
| option( | ||||
|   'gallium-xvmc', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   description : 'enable gallium xvmc state tracker.', | ||||
| ) | ||||
| option( | ||||
|   'xvmc-libs-path', | ||||
|   type : 'string', | ||||
|   value : '', | ||||
|   description : 'path to put xvmc libraries. defaults to $libdir.' | ||||
| ) | ||||
| option( | ||||
|   'gallium-omx', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   description : 'enable gallium omx bellagio state tracker.', | ||||
| ) | ||||
| option( | ||||
|   'omx-libs-path', | ||||
|   type : 'string', | ||||
|   value : '', | ||||
|   description : 'path to put omx libraries. defaults to omx-bellagio pkg-config pluginsdir.' | ||||
| ) | ||||
| option( | ||||
|   'gallium-va', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   description : 'enable gallium va state tracker.', | ||||
| ) | ||||
| option( | ||||
|   'va-libs-path', | ||||
|   type : 'string', | ||||
|   value : '', | ||||
|   description : 'path to put va libraries. defaults to $libdir/dri.' | ||||
| ) | ||||
| option( | ||||
|   'gallium-xa', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   description : 'enable gallium xa state tracker.', | ||||
| ) | ||||
| option( | ||||
|   'gallium-nine', | ||||
|   type : 'boolean', | ||||
|   value : false, | ||||
|   description : 'build gallium "nine" Direct3D 9.x state tracker.', | ||||
| ) | ||||
| option( | ||||
|   'gallium-opencl', | ||||
|   type : 'combo', | ||||
|   choices : ['icd', 'standalone', 'disabled'], | ||||
|   value : 'disabled', | ||||
|   description : 'build gallium "clover" OpenCL state tracker.', | ||||
| ) | ||||
| option( | ||||
|   'd3d-drivers-path', | ||||
|   type : 'string', | ||||
|   value : '', | ||||
|   description : 'Location of D3D drivers. Default: $libdir/d3d', | ||||
|   description : 'comma separated list of gallium media APIs to build (omx,va,vdpau,xvmc).' | ||||
| ) | ||||
| option( | ||||
|   'vulkan-drivers', | ||||
|   type : 'string', | ||||
|   value : 'auto', | ||||
|   description : 'comma separated list of vulkan drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built' | ||||
|   value : 'intel,amd', | ||||
|   description : 'comma separated list of vulkan drivers to build.' | ||||
| ) | ||||
| option( | ||||
|   'shader-cache', | ||||
| @@ -179,7 +101,7 @@ option( | ||||
|   'gbm', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   choices : ['auto', 'yes', 'no'], | ||||
|   description : 'Build support for gbm platform' | ||||
| ) | ||||
| option( | ||||
| @@ -193,7 +115,7 @@ option( | ||||
|   'egl', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   choices : ['auto', 'yes', 'no'], | ||||
|   description : 'Build support for EGL platform' | ||||
| ) | ||||
| option( | ||||
| @@ -210,31 +132,15 @@ option( | ||||
| ) | ||||
| option( | ||||
|   'llvm', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   type : 'boolean', | ||||
|   value : true, | ||||
|   description : 'Build with LLVM support.' | ||||
| ) | ||||
| option( | ||||
|   'valgrind', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   description : 'Build with valgrind support' | ||||
| ) | ||||
| option( | ||||
|   'libunwind', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   description : 'Use libunwind for stack-traces' | ||||
| ) | ||||
| option( | ||||
|   'lmsensors', | ||||
|   type : 'combo', | ||||
|   value : 'auto', | ||||
|   choices : ['auto', 'true', 'false'], | ||||
|   description : 'Enable HUD lmsensors support.' | ||||
|   type : 'boolean', | ||||
|   value : true, | ||||
|   description : 'Build with valgrind support if possible' | ||||
| ) | ||||
| option( | ||||
|   'build-tests', | ||||
| @@ -248,29 +154,3 @@ option( | ||||
|   value : false, | ||||
|   description : 'Enable floating point textures and renderbuffers. This option may be patent encumbered, please read docs/patents.txt and consult with your lawyer before turning this on.' | ||||
| ) | ||||
| option( | ||||
|   'selinux', | ||||
|   type : 'boolean', | ||||
|   value : false, | ||||
|   description : 'Build an SELinux-aware Mesa' | ||||
| ) | ||||
| option( | ||||
|   'osmesa', | ||||
|   type : 'combo', | ||||
|   value : 'none', | ||||
|   choices : ['none', 'classic', 'gallium'], | ||||
|   description : 'Build OSmesa.' | ||||
| ) | ||||
| option( | ||||
|   'osmesa-bits', | ||||
|   type : 'combo', | ||||
|   value : '8', | ||||
|   choices : ['8', '16', '32'], | ||||
|   description : 'Number of channel bits for OSMesa.' | ||||
| ) | ||||
| option( | ||||
|   'swr-arches', | ||||
|   type : 'string', | ||||
|   value : 'avx,avx2', | ||||
|   description : 'Comma delemited swr architectures. choices : avx,avx2,knl,skx' | ||||
| ) | ||||
|   | ||||
| @@ -355,9 +355,6 @@ def generate(env): | ||||
|         if check_functions(env, ['strtod_l', 'strtof_l']): | ||||
|             cppdefines += ['HAVE_STRTOD_L'] | ||||
|  | ||||
|         if check_functions(env, ['timespec_get']): | ||||
|             cppdefines += ['HAVE_TIMESPEC_GET'] | ||||
|  | ||||
|     if platform == 'windows': | ||||
|         cppdefines += [ | ||||
|             'WIN32', | ||||
|   | ||||
| @@ -19,14 +19,21 @@ | ||||
| # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||||
| # IN THE SOFTWARE. | ||||
|  | ||||
| .PHONY: git_sha1.h | ||||
| git_sha1.h: $(top_srcdir)/src/git_sha1.h.in | ||||
| 	@echo "updating $@" | ||||
| 	@$(PYTHON2) $(top_srcdir)/bin/git_sha1_gen.py --output $@ | ||||
| .PHONY: git_sha1.h.tmp | ||||
| git_sha1.h.tmp: | ||||
| 	@$(PYTHON2) $(top_srcdir)/bin/git_sha1_gen.py > $@ | ||||
|  | ||||
| git_sha1.h: git_sha1.h.tmp | ||||
| 	@echo "updating git_sha1.h" | ||||
| 	@if ! cmp -s git_sha1.h.tmp git_sha1.h; then \ | ||||
| 		mv git_sha1.h.tmp git_sha1.h ;\ | ||||
| 	else \ | ||||
| 		rm git_sha1.h.tmp ;\ | ||||
| 	fi | ||||
|  | ||||
| BUILT_SOURCES = git_sha1.h | ||||
| CLEANFILES = $(BUILT_SOURCES) | ||||
| EXTRA_DIST = git_sha1.h.in meson.build | ||||
| EXTRA_DIST = git_sha1.h.in | ||||
|  | ||||
| SUBDIRS = . gtest util mapi/glapi/gen mapi | ||||
|  | ||||
| @@ -57,7 +64,7 @@ endif | ||||
| # include only conditionally ? | ||||
| SUBDIRS += compiler | ||||
|  | ||||
| ## Optionally required by EGL | ||||
| ## Optionally required by GBM, EGL | ||||
| if HAVE_PLATFORM_WAYLAND | ||||
| SUBDIRS += egl/wayland/wayland-drm | ||||
| endif | ||||
|   | ||||
| @@ -24,12 +24,22 @@ def write_git_sha1_h_file(filename): | ||||
|     to retrieve the git hashid and write the header file.  An empty file | ||||
|     will be created if anything goes wrong.""" | ||||
|  | ||||
|     args = [ python_cmd, Dir('#').abspath + '/bin/git_sha1_gen.py', '--output', filename ] | ||||
|     try: | ||||
|         subprocess.call(args) | ||||
|     except: | ||||
|         print("Warning: exception in write_git_sha1_h_file()") | ||||
|         return | ||||
|     tempfile = "git_sha1.h.tmp" | ||||
|     with open(tempfile, "w") as f: | ||||
|         args = [ python_cmd, Dir('#').abspath + '/bin/git_sha1_gen.py' ] | ||||
|         try: | ||||
|             subprocess.Popen(args, stdout=f).wait() | ||||
|         except: | ||||
|             print("Warning: exception in write_git_sha1_h_file()") | ||||
|             return | ||||
|  | ||||
|     if not os.path.exists(filename) or not filecmp.cmp(tempfile, filename): | ||||
|         # The filename does not exist or it's different from the new file, | ||||
|         # so replace old file with new. | ||||
|         if os.path.exists(filename): | ||||
|             os.remove(filename) | ||||
|         os.rename(tempfile, filename) | ||||
|     return | ||||
|  | ||||
|  | ||||
| # Create the git_sha1.h header file | ||||
|   | ||||
| @@ -30,6 +30,8 @@ LOCAL_MODULE := libmesa_amdgpu_addrlib | ||||
|  | ||||
| LOCAL_SRC_FILES := $(ADDRLIB_FILES) | ||||
|  | ||||
| LOCAL_CFLAGS := -DBRAHMA_BUILD=1 | ||||
|  | ||||
| LOCAL_C_INCLUDES := \ | ||||
| 	$(MESA_TOP)/src \ | ||||
| 	$(MESA_TOP)/src/amd/common \ | ||||
|   | ||||
| @@ -29,10 +29,11 @@ addrlib_libamdgpu_addrlib_la_CPPFLAGS = \ | ||||
| 	-I$(srcdir)/addrlib/inc/chip/gfx9 \ | ||||
| 	-I$(srcdir)/addrlib/inc/chip/r800 \ | ||||
| 	-I$(srcdir)/addrlib/gfx9/chip \ | ||||
| 	-I$(srcdir)/addrlib/r800/chip | ||||
| 	-I$(srcdir)/addrlib/r800/chip \ | ||||
| 	-DBRAHMA_BUILD=1 | ||||
|  | ||||
| addrlib_libamdgpu_addrlib_la_CXXFLAGS = \ | ||||
| 	$(VISIBILITY_CXXFLAGS) $(CXX11_CXXFLAGS) | ||||
| 	$(VISIBILITY_CXXFLAGS) | ||||
|  | ||||
| noinst_LTLIBRARIES += $(ADDRLIB_LIBS) | ||||
|  | ||||
|   | ||||
| @@ -23,13 +23,6 @@ include Makefile.sources | ||||
|  | ||||
| noinst_LTLIBRARIES = | ||||
|  | ||||
| EXTRA_DIST = $(COMMON_HEADER_FILES) common/sid_tables.py | ||||
| include Makefile.addrlib.am | ||||
| include Makefile.common.am | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
|      $(COMMON_HEADER_FILES) \ | ||||
|      common/sid_tables.py \ | ||||
|      meson.build \ | ||||
|      addrlib/meson.build \ | ||||
|      common/meson.build \ | ||||
|      vulkan/meson.build | ||||
|   | ||||
| @@ -2,13 +2,13 @@ COMMON_HEADER_FILES = \ | ||||
| 	common/gfx9d.h \ | ||||
| 	common/sid.h \ | ||||
| 	common/amd_family.h \ | ||||
| 	common/amd_kernel_code_t.h | ||||
| 	common/amd_kernel_code_t.h \ | ||||
| 	common/amdgpu_id.h | ||||
|  | ||||
| ADDRLIB_FILES = \ | ||||
| 	addrlib/addrinterface.cpp \ | ||||
| 	addrlib/addrinterface.h \ | ||||
| 	addrlib/addrtypes.h \ | ||||
| 	addrlib/amdgpu_asic_addr.h \ | ||||
| 	addrlib/core/addrcommon.h \ | ||||
| 	addrlib/core/addrelemlib.cpp \ | ||||
| 	addrlib/core/addrelemlib.h \ | ||||
| @@ -25,8 +25,11 @@ ADDRLIB_FILES = \ | ||||
| 	addrlib/gfx9/coord.h \ | ||||
| 	addrlib/gfx9/gfx9addrlib.cpp \ | ||||
| 	addrlib/gfx9/gfx9addrlib.h \ | ||||
| 	addrlib/gfx9/rbmap.cpp \ | ||||
| 	addrlib/gfx9/rbmap.h \ | ||||
| 	addrlib/inc/chip/gfx9/gfx9_gb_reg.h \ | ||||
| 	addrlib/inc/chip/r800/si_gb_reg.h \ | ||||
| 	addrlib/inc/lnx_common_defs.h \ | ||||
| 	addrlib/r800/chip/si_ci_vi_merged_enum.h \ | ||||
| 	addrlib/r800/ciaddrlib.cpp \ | ||||
| 	addrlib/r800/ciaddrlib.h \ | ||||
| @@ -46,10 +49,7 @@ AMD_COMPILER_FILES = \ | ||||
| 	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 | ||||
|  | ||||
| 	common/ac_shader_info.h | ||||
|  | ||||
| AMD_NIR_FILES = \ | ||||
| 	common/ac_nir_to_llvm.c \ | ||||
|   | ||||
| @@ -534,11 +534,11 @@ ADDR_E_RETURNCODE ADDR_API AddrComputeDccInfo( | ||||
|  | ||||
|     if (pLib != NULL) | ||||
|     { | ||||
|         returnCode = pLib->ComputeDccInfo(pIn, pOut); | ||||
|        returnCode = pLib->ComputeDccInfo(pIn, pOut); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         returnCode = ADDR_ERROR; | ||||
|        returnCode = ADDR_ERROR; | ||||
|     } | ||||
|  | ||||
|     return returnCode; | ||||
|   | ||||
| @@ -528,7 +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 reserved             : 2; ///< Reserved bits | ||||
|         UINT_32 reserved             : 3; ///< Reserved bits | ||||
|     }; | ||||
|  | ||||
|     UINT_32 value; | ||||
| @@ -714,6 +714,12 @@ typedef struct _ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT | ||||
|         }; | ||||
|         UINT_32     tileSwizzle;        ///< Combined swizzle, if useCombinedSwizzle is TRUE | ||||
|     }; | ||||
|  | ||||
| #if ADDR_AM_BUILD // These two fields are not valid in SW blt since no HTILE access | ||||
|     UINT_32         addr5Swizzle;       ///< ADDR5_SWIZZLE_MASK of DB_DEPTH_INFO | ||||
|     BOOL_32         is32ByteTile;       ///< Caller must have access to HTILE buffer and know if | ||||
|                                         ///  this tile is compressed to 32B | ||||
| #endif | ||||
| } ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT; | ||||
|  | ||||
| /** | ||||
| @@ -851,11 +857,8 @@ typedef union _ADDR_HTILE_FLAGS | ||||
| { | ||||
|     struct | ||||
|     { | ||||
|         UINT_32 tcCompatible          : 1;  ///< Flag indicates surface needs to be shader readable | ||||
|         UINT_32 skipTcCompatSizeAlign : 1;  ///< Flag indicates that addrLib will not align htile | ||||
|                                             ///  size to 256xBankxPipe when computing tc-compatible | ||||
|                                             ///  htile info. | ||||
|         UINT_32 reserved              : 30; ///< Reserved bits | ||||
|         UINT_32 tcCompatible  : 1; ///< Flag indicates surface needs to be shader readable | ||||
|         UINT_32 reserved      :31; ///< Reserved bits | ||||
|     }; | ||||
|  | ||||
|     UINT_32 value; | ||||
| @@ -912,9 +915,6 @@ typedef struct _ADDR_COMPUTE_HTILE_INFO_OUTPUT | ||||
|     UINT_64 sliceSize;          ///< Slice size, in bytes. | ||||
|     BOOL_32 sliceInterleaved;   ///< Flag to indicate if different slice's htile is interleaved | ||||
|                                 ///  Compute engine clear can't be used if htile is interleaved | ||||
|     BOOL_32 nextMipLevelCompressible;   ///< Flag to indicate whether HTILE can be enabled in | ||||
|                                         ///  next mip level, it also indicates if memory set based | ||||
|                                         ///  fast clear can be used for current mip level. | ||||
| } ADDR_COMPUTE_HTILE_INFO_OUTPUT; | ||||
|  | ||||
| /** | ||||
| @@ -2188,6 +2188,7 @@ ADDR_E_RETURNCODE ADDR_API AddrGetTileIndex( | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   ADDR_PRT_INFO_INPUT | ||||
| @@ -2232,8 +2233,6 @@ ADDR_E_RETURNCODE ADDR_API AddrComputePrtInfo( | ||||
|     const ADDR_PRT_INFO_INPUT*  pIn, | ||||
|     ADDR_PRT_INFO_OUTPUT*       pOut); | ||||
|  | ||||
|  | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
| //                                     DCC key functions | ||||
| //////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
| @@ -2294,8 +2293,6 @@ ADDR_E_RETURNCODE ADDR_API AddrComputeDccInfo( | ||||
|     const ADDR_COMPUTE_DCCINFO_INPUT*       pIn, | ||||
|     ADDR_COMPUTE_DCCINFO_OUTPUT*            pOut); | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   ADDR_GET_MAX_ALIGNMENTS_OUTPUT | ||||
| @@ -2696,8 +2693,10 @@ typedef struct _ADDR2_META_MIP_INFO | ||||
|  | ||||
|         struct | ||||
|         { | ||||
|             UINT_32    offset; | ||||
|             UINT_32    sliceSize; | ||||
|             UINT_32    offset;      ///< metadata offset within one slice, | ||||
|                                     ///  the thickness of a slice is meta block depth. | ||||
|             UINT_32    sliceSize;   ///< metadata size within one slice, | ||||
|                                     ///  the thickness of a slice is meta block depth. | ||||
|         }; | ||||
|     }; | ||||
| } ADDR2_META_MIP_INFO; | ||||
| @@ -2721,7 +2720,9 @@ typedef struct _ADDR2_COMPUTE_HTILE_INFO_INPUT | ||||
|     UINT_32             unalignedHeight;    ///< Depth surface original height (of mip0) | ||||
|     UINT_32             numSlices;          ///< Number of slices of depth surface (of mip0) | ||||
|     UINT_32             numMipLevels;       ///< Total mipmap levels of color surface | ||||
|     UINT_32             firstMipIdInTail; | ||||
|     UINT_32             firstMipIdInTail;   ///< id of the first mip in tail, | ||||
|                                             ///  if no mip is in tail, it should be set to | ||||
|                                             ///  number of mip levels | ||||
| } ADDR2_COMPUTE_HTILE_INFO_INPUT; | ||||
|  | ||||
| /** | ||||
| @@ -3307,7 +3308,8 @@ typedef struct _ADDR2_COMPUTE_DCCINFO_INPUT | ||||
|     UINT_32             numMipLevels;       ///< Total mipmap levels of color surface | ||||
|     UINT_32             dataSurfaceSize;    ///< The padded size of all slices and mip levels | ||||
|                                             ///< useful in meta linear case | ||||
|     UINT_32             firstMipIdInTail; | ||||
|     UINT_32             firstMipIdInTail;   ///< The id of first mip in tail, if no mip is in tail, | ||||
|                                             ///  it should be number of mip levels | ||||
| } ADDR2_COMPUTE_DCCINFO_INPUT; | ||||
|  | ||||
| /** | ||||
| @@ -3337,13 +3339,8 @@ typedef struct _ADDR2_COMPUTE_DCCINFO_OUTPUT | ||||
|     UINT_32    metaBlkHeight;      ///< DCC meta block height | ||||
|     UINT_32    metaBlkDepth;       ///< DCC meta block depth | ||||
|  | ||||
|     UINT_32    metaBlkNumPerSlice; ///< Number of metablock within one slice | ||||
|  | ||||
|     union | ||||
|     { | ||||
|         UINT_32 fastClearSizePerSlice;  ///< Size of DCC within a slice should be fast cleared | ||||
|         UINT_32 dccRamSliceSize; | ||||
|     }; | ||||
|     UINT_32    fastClearSizePerSlice;   ///< Size of DCC within a slice should be fast cleared | ||||
|     UINT_32    metaBlkNumPerSlice;      ///< Number of metablock within one slice | ||||
|  | ||||
|     ADDR2_META_MIP_INFO* pMipInfo;      ///< DCC mip information | ||||
| } ADDR2_COMPUTE_DCCINFO_OUTPUT; | ||||
| @@ -3574,7 +3571,7 @@ ADDR_E_RETURNCODE ADDR_API Addr2ComputeSubResourceOffsetForSwizzlePattern( | ||||
| *   ADDR2_BLOCK_SET | ||||
| * | ||||
| *   @brief | ||||
| *       Bit field that defines block type | ||||
| *       Bit field that define block type | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| typedef union _ADDR2_BLOCK_SET | ||||
| @@ -3592,28 +3589,6 @@ typedef union _ADDR2_BLOCK_SET | ||||
|     UINT_32 value; | ||||
| } ADDR2_BLOCK_SET; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   ADDR2_SWTYPE_SET | ||||
| * | ||||
| *   @brief | ||||
| *       Bit field that defines swizzle type | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| typedef union _ADDR2_SWTYPE_SET | ||||
| { | ||||
|     struct | ||||
|     { | ||||
|         UINT_32 sw_Z     : 1;   // SW_*_Z_* | ||||
|         UINT_32 sw_S     : 1;   // SW_*_S_* | ||||
|         UINT_32 sw_D     : 1;   // SW_*_D_* | ||||
|         UINT_32 sw_R     : 1;   // SW_*_R_* | ||||
|         UINT_32 reserved : 28; | ||||
|     }; | ||||
|  | ||||
|     UINT_32 value; | ||||
| } ADDR2_SWTYPE_SET; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   ADDR2_GET_PREFERRED_SURF_SETTING_INPUT | ||||
| @@ -3632,7 +3607,6 @@ typedef struct _ADDR2_GET_PREFERRED_SURF_SETTING_INPUT | ||||
|     AddrResrouceLocation  resourceLoction;   ///< Surface heap choice | ||||
|     ADDR2_BLOCK_SET       forbiddenBlock;    ///< Client can use it to disable some block setting | ||||
|                                              ///< such as linear for DXTn, tiled for YUV | ||||
|     ADDR2_SWTYPE_SET      preferredSwSet;    ///< Client can use it to specify sw type(s) wanted | ||||
|     BOOL_32               noXor;             ///< Do not use xor mode for this resource | ||||
|     UINT_32               bpp;               ///< bits per pixel | ||||
|     UINT_32               width;             ///< Width (of mip0), in pixels | ||||
| @@ -3658,15 +3632,12 @@ typedef struct _ADDR2_GET_PREFERRED_SURF_SETTING_INPUT | ||||
| */ | ||||
| typedef struct _ADDR2_GET_PREFERRED_SURF_SETTING_OUTPUT | ||||
| { | ||||
|     UINT_32               size;                 ///< Size of this structure in bytes | ||||
|     UINT_32               size;              ///< Size of this structure in bytes | ||||
|  | ||||
|     AddrSwizzleMode       swizzleMode;          ///< Suggested swizzle mode to be used | ||||
|     AddrResourceType      resourceType;         ///< Suggested resource type to program HW | ||||
|     ADDR2_BLOCK_SET       validBlockSet;        ///< Valid block type bit conbination | ||||
|     BOOL_32               canXor;               ///< If client can use xor on a valid macro block | ||||
|                                                 ///  type | ||||
|     ADDR2_SWTYPE_SET      validSwTypeSet;       ///< Valid swizzle type bit combination | ||||
|     ADDR2_SWTYPE_SET      clientPreferredSwSet; ///< Client-preferred swizzle type bit combination | ||||
|     AddrSwizzleMode       swizzleMode;       ///< Suggested swizzle mode to be used | ||||
|     AddrResourceType      resourceType;      ///< Suggested resource type to program HW | ||||
|     ADDR2_BLOCK_SET       validBlockSet;     ///< Valid block type bit conbination | ||||
|     BOOL_32               canXor;            ///< If client can use xor on a valid macro block type | ||||
| } ADDR2_GET_PREFERRED_SURF_SETTING_OUTPUT; | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -1,129 +0,0 @@ | ||||
| /* | ||||
|  * Copyright © 2017 Advanced Micro Devices, Inc. | ||||
|  * All Rights Reserved. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining | ||||
|  * a copy of this software and associated documentation files (the | ||||
|  * "Software"), to deal in the Software without restriction, including | ||||
|  * without limitation the rights to use, copy, modify, merge, publish, | ||||
|  * distribute, sub license, and/or sell copies of the Software, and to | ||||
|  * permit persons to whom the Software is furnished to do so, subject to | ||||
|  * the following conditions: | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||||
|  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS | ||||
|  * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||
|  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | ||||
|  * USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  * | ||||
|  * The above copyright notice and this permission notice (including the | ||||
|  * next paragraph) shall be included in all copies or substantial portions | ||||
|  * of the Software. | ||||
|  */ | ||||
|  | ||||
| #ifndef _AMDGPU_ASIC_ADDR_H | ||||
| #define _AMDGPU_ASIC_ADDR_H | ||||
|  | ||||
| #define ATI_VENDOR_ID         0x1002 | ||||
| #define AMD_VENDOR_ID         0x1022 | ||||
|  | ||||
| // AMDGPU_VENDOR_IS_AMD(vendorId) | ||||
| #define AMDGPU_VENDOR_IS_AMD(v) ((v == ATI_VENDOR_ID) || (v == AMD_VENDOR_ID)) | ||||
|  | ||||
| #define FAMILY_UNKNOWN 0x00 | ||||
| #define FAMILY_TN      0x69 | ||||
| #define FAMILY_SI      0x6E | ||||
| #define FAMILY_CI      0x78 | ||||
| #define FAMILY_KV      0x7D | ||||
| #define FAMILY_VI      0x82 | ||||
| #define FAMILY_POLARIS 0x82 | ||||
| #define FAMILY_CZ      0x87 | ||||
| #define FAMILY_AI      0x8D | ||||
| #define FAMILY_RV      0x8E | ||||
|  | ||||
| // AMDGPU_FAMILY_IS(familyId, familyName) | ||||
| #define FAMILY_IS(f, fn)     (f == FAMILY_##fn) | ||||
| #define FAMILY_IS_TN(f)      FAMILY_IS(f, TN) | ||||
| #define FAMILY_IS_SI(f)      FAMILY_IS(f, SI) | ||||
| #define FAMILY_IS_CI(f)      FAMILY_IS(f, CI) | ||||
| #define FAMILY_IS_KV(f)      FAMILY_IS(f, KV) | ||||
| #define FAMILY_IS_VI(f)      FAMILY_IS(f, VI) | ||||
| #define FAMILY_IS_POLARIS(f) FAMILY_IS(f, POLARIS) | ||||
| #define FAMILY_IS_CZ(f)      FAMILY_IS(f, CZ) | ||||
| #define FAMILY_IS_AI(f)      FAMILY_IS(f, AI) | ||||
| #define FAMILY_IS_RV(f)      FAMILY_IS(f, RV) | ||||
|  | ||||
| #define AMDGPU_UNKNOWN          0xFF | ||||
|  | ||||
| #define AMDGPU_TAHITI_RANGE     0x05, 0x14 | ||||
| #define AMDGPU_PITCAIRN_RANGE   0x15, 0x28 | ||||
| #define AMDGPU_CAPEVERDE_RANGE  0x29, 0x3C | ||||
| #define AMDGPU_OLAND_RANGE      0x3C, 0x46 | ||||
| #define AMDGPU_HAINAN_RANGE     0x46, 0xFF | ||||
|  | ||||
| #define AMDGPU_BONAIRE_RANGE    0x14, 0x28 | ||||
| #define AMDGPU_HAWAII_RANGE     0x28, 0x3C | ||||
|  | ||||
| #define AMDGPU_SPECTRE_RANGE    0x01, 0x41 | ||||
| #define AMDGPU_SPOOKY_RANGE     0x41, 0x81 | ||||
| #define AMDGPU_KALINDI_RANGE    0x81, 0xA1 | ||||
| #define AMDGPU_GODAVARI_RANGE   0xA1, 0xFF | ||||
|  | ||||
| #define AMDGPU_ICELAND_RANGE    0x01, 0x14 | ||||
| #define AMDGPU_TONGA_RANGE      0x14, 0x28 | ||||
| #define AMDGPU_FIJI_RANGE       0x3C, 0x50 | ||||
|  | ||||
| #define AMDGPU_POLARIS10_RANGE  0x50, 0x5A | ||||
| #define AMDGPU_POLARIS11_RANGE  0x5A, 0x64 | ||||
| #define AMDGPU_POLARIS12_RANGE  0x64, 0x6E | ||||
|  | ||||
| #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_RAVEN_RANGE      0x01, 0x81 | ||||
|  | ||||
| #define AMDGPU_EXPAND_FIX(x) x | ||||
| #define AMDGPU_RANGE_HELPER(val, min, max) ((val >= min) && (val < max)) | ||||
| #define AMDGPU_IN_RANGE(val, ...)   AMDGPU_EXPAND_FIX(AMDGPU_RANGE_HELPER(val, __VA_ARGS__)) | ||||
|  | ||||
|  | ||||
| // ASICREV_IS(eRevisionId, revisionName) | ||||
| #define ASICREV_IS(r, rn)              AMDGPU_IN_RANGE(r, AMDGPU_##rn##_RANGE) | ||||
| #define ASICREV_IS_TAHITI_P(r)         ASICREV_IS(r, TAHITI) | ||||
| #define ASICREV_IS_PITCAIRN_PM(r)      ASICREV_IS(r, PITCAIRN) | ||||
| #define ASICREV_IS_CAPEVERDE_M(r)      ASICREV_IS(r, CAPEVERDE) | ||||
| #define ASICREV_IS_OLAND_M(r)          ASICREV_IS(r, OLAND) | ||||
| #define ASICREV_IS_HAINAN_V(r)         ASICREV_IS(r, HAINAN) | ||||
|  | ||||
| #define ASICREV_IS_BONAIRE_M(r)        ASICREV_IS(r, BONAIRE) | ||||
| #define ASICREV_IS_HAWAII_P(r)         ASICREV_IS(r, HAWAII) | ||||
|  | ||||
| #define ASICREV_IS_SPECTRE(r)          ASICREV_IS(r, SPECTRE) | ||||
| #define ASICREV_IS_SPOOKY(r)           ASICREV_IS(r, SPOOKY) | ||||
| #define ASICREV_IS_KALINDI(r)          ASICREV_IS(r, KALINDI) | ||||
| #define ASICREV_IS_KALINDI_GODAVARI(r) ASICREV_IS(r, GODAVARI) | ||||
|  | ||||
| #define ASICREV_IS_ICELAND_M(r)        ASICREV_IS(r, ICELAND) | ||||
| #define ASICREV_IS_TONGA_P(r)          ASICREV_IS(r, TONGA) | ||||
| #define ASICREV_IS_FIJI_P(r)           ASICREV_IS(r, FIJI) | ||||
|  | ||||
| #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_CARRIZO(r)          ASICREV_IS(r, CARRIZO) | ||||
| #define ASICREV_IS_CARRIZO_BRISTOL(r)  ASICREV_IS(r, BRISTOL) | ||||
| #define ASICREV_IS_STONEY(r)           ASICREV_IS(r, STONEY) | ||||
|  | ||||
| #define ASICREV_IS_VEGA10_M(r)         ASICREV_IS(r, VEGA10) | ||||
| #define ASICREV_IS_VEGA10_P(r)         ASICREV_IS(r, VEGA10) | ||||
|  | ||||
| #define ASICREV_IS_RAVEN(r)            ASICREV_IS(r, RAVEN) | ||||
|  | ||||
| #endif // _AMDGPU_ASIC_ADDR_H | ||||
| @@ -36,11 +36,17 @@ | ||||
|  | ||||
| #include "addrinterface.h" | ||||
|  | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <assert.h> | ||||
| // ADDR_LNX_KERNEL_BUILD is for internal build | ||||
| // Moved from addrinterface.h so __KERNEL__ is not needed any more | ||||
| #if ADDR_LNX_KERNEL_BUILD // || (defined(__GNUC__) && defined(__KERNEL__)) | ||||
|     #include "lnx_common_defs.h" // ported from cmmqs | ||||
| #elif !defined(__APPLE__) || defined(HAVE_TSERVER) | ||||
|     #include <assert.h> | ||||
|     #include <stdlib.h> | ||||
|     #include <string.h> | ||||
| #endif | ||||
|  | ||||
| #if !defined(DEBUG) | ||||
| #if BRAHMA_BUILD && !defined(DEBUG) | ||||
| #ifdef NDEBUG | ||||
| #define DEBUG 0 | ||||
| #else | ||||
| @@ -73,7 +79,18 @@ | ||||
|     #define ADDR_ANALYSIS_ASSUME(expr) do { (void)(expr); } while (0) | ||||
| #endif | ||||
|  | ||||
| #define ADDR_ASSERT(__e) assert(__e) | ||||
| #if BRAHMA_BUILD | ||||
|     #define ADDR_ASSERT(__e) assert(__e) | ||||
| #elif DEBUG | ||||
|     #define ADDR_ASSERT(__e)                                \ | ||||
|         do {                                                    \ | ||||
|             ADDR_ANALYSIS_ASSUME(__e);                          \ | ||||
|             if ( !((__e) ? TRUE : FALSE)) { ADDR_DBG_BREAK(); } \ | ||||
|         } while (0) | ||||
| #else //DEBUG | ||||
|     #define ADDR_ASSERT(__e) ADDR_ANALYSIS_ASSUME(__e) | ||||
| #endif //DEBUG | ||||
|  | ||||
| #define ADDR_ASSERT_ALWAYS() ADDR_DBG_BREAK() | ||||
| #define ADDR_UNHANDLED_CASE() ADDR_ASSERT(!"Unhandled case") | ||||
| #define ADDR_NOT_IMPLEMENTED() ADDR_ASSERT(!"Not implemented"); | ||||
| @@ -154,8 +171,6 @@ | ||||
| #endif // DEBUG | ||||
| //////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
|  | ||||
| #define ADDR_C_ASSERT(__e) typedef char __ADDR_C_ASSERT__[(__e) ? 1 : -1] | ||||
|  | ||||
| namespace Addr | ||||
| { | ||||
|  | ||||
|   | ||||
| @@ -1271,9 +1271,6 @@ VOID ElemLib::RestoreSurfaceInfo( | ||||
|     UINT_32 height; | ||||
|     UINT_32 bpp; | ||||
|  | ||||
|     BOOL_32 bBCnFormat = FALSE; | ||||
|     (void)bBCnFormat; | ||||
|  | ||||
|     ADDR_ASSERT(pBpp != NULL); | ||||
|     ADDR_ASSERT(pWidth != NULL && pHeight != NULL); | ||||
|  | ||||
| @@ -1292,17 +1289,22 @@ VOID ElemLib::RestoreSurfaceInfo( | ||||
|             break; | ||||
|         case ADDR_PACKED_GBGR: | ||||
|         case ADDR_PACKED_BGRG: | ||||
|             originalBits = bpp; // 32-bit packed ==> 2 32-bit result | ||||
|             if (m_pAddrLib->GetChipFamily() >= ADDR_CHIP_FAMILY_AI) | ||||
|             { | ||||
|                 originalBits = bpp / expandX; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 originalBits = bpp; // 32-bit packed ==> 2 32-bit result | ||||
|             } | ||||
|             break; | ||||
|         case ADDR_PACKED_BC1: // Fall through | ||||
|         case ADDR_PACKED_BC4: | ||||
|             originalBits = 64; | ||||
|             bBCnFormat = TRUE; | ||||
|             break; | ||||
|         case ADDR_PACKED_BC2: // Fall through | ||||
|         case ADDR_PACKED_BC3: // Fall through | ||||
|         case ADDR_PACKED_BC5: | ||||
|             bBCnFormat = TRUE; | ||||
|             // fall through | ||||
|         case ADDR_PACKED_ASTC: | ||||
|         case ADDR_PACKED_ETC2_128BPP: | ||||
| @@ -1392,11 +1394,27 @@ UINT_32 ElemLib::GetBitsPerPixel( | ||||
|             break; | ||||
|         case ADDR_FMT_GB_GR: // treat as FMT_8_8 | ||||
|             elemMode = ADDR_PACKED_GBGR; | ||||
|             bpp     = 16; | ||||
|             if (m_pAddrLib->GetChipFamily() >= ADDR_CHIP_FAMILY_AI) | ||||
|             { | ||||
|                 bpp     = 32; | ||||
|                 expandX = 2; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 bpp     = 16; | ||||
|             } | ||||
|             break; | ||||
|         case ADDR_FMT_BG_RG: // treat as FMT_8_8 | ||||
|             elemMode = ADDR_PACKED_BGRG; | ||||
|             bpp     = 16; | ||||
|             if (m_pAddrLib->GetChipFamily() >= ADDR_CHIP_FAMILY_AI) | ||||
|             { | ||||
|                 bpp     = 32; | ||||
|                 expandX = 2; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 bpp     = 16; | ||||
|             } | ||||
|             break; | ||||
|         case ADDR_FMT_8_8_8_8: | ||||
|         case ADDR_FMT_2_10_10_10: | ||||
|   | ||||
| @@ -218,16 +218,7 @@ ADDR_E_RETURNCODE Lib::Create( | ||||
|                 } | ||||
|                 break; | ||||
|             case CIASICIDGFXENGINE_ARCTICISLAND: | ||||
|                 switch (pCreateIn->chipFamily) | ||||
|                 { | ||||
|                     case FAMILY_AI: | ||||
|                     case FAMILY_RV: | ||||
|                         pLib = Gfx9HwlInit(&client); | ||||
|                         break; | ||||
|                     default: | ||||
|                         ADDR_ASSERT_ALWAYS(); | ||||
|                         break; | ||||
|                 } | ||||
|                 pLib = Gfx9HwlInit(&client); | ||||
|                 break; | ||||
|             default: | ||||
|                 ADDR_ASSERT_ALWAYS(); | ||||
|   | ||||
| @@ -38,7 +38,11 @@ | ||||
| #include "addrobject.h" | ||||
| #include "addrelemlib.h" | ||||
|  | ||||
| #include "amdgpu_asic_addr.h" | ||||
| #if BRAHMA_BUILD | ||||
| #include "amdgpu_id.h" | ||||
| #else | ||||
| #include "atiid.h" | ||||
| #endif | ||||
|  | ||||
| #ifndef CIASICIDGFXENGINE_R600 | ||||
| #define CIASICIDGFXENGINE_R600 0x00000006 | ||||
| @@ -122,123 +126,6 @@ enum BankSwapSize | ||||
|     ADDR_BANKSWAP_1KB = 1024, | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief Enums that define max compressed fragments config | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| enum NumMaxCompressedFragmentsConfig | ||||
| { | ||||
|     ADDR_CONFIG_1_MAX_COMPRESSED_FRAGMENTS   = 0x00000000, | ||||
|     ADDR_CONFIG_2_MAX_COMPRESSED_FRAGMENTS   = 0x00000001, | ||||
|     ADDR_CONFIG_4_MAX_COMPRESSED_FRAGMENTS   = 0x00000002, | ||||
|     ADDR_CONFIG_8_MAX_COMPRESSED_FRAGMENTS   = 0x00000003, | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief Enums that define num pipes config | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| enum NumPipesConfig | ||||
| { | ||||
|     ADDR_CONFIG_1_PIPE                       = 0x00000000, | ||||
|     ADDR_CONFIG_2_PIPE                       = 0x00000001, | ||||
|     ADDR_CONFIG_4_PIPE                       = 0x00000002, | ||||
|     ADDR_CONFIG_8_PIPE                       = 0x00000003, | ||||
|     ADDR_CONFIG_16_PIPE                      = 0x00000004, | ||||
|     ADDR_CONFIG_32_PIPE                      = 0x00000005, | ||||
|     ADDR_CONFIG_64_PIPE                      = 0x00000006, | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief Enums that define num banks config | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| enum NumBanksConfig | ||||
| { | ||||
|     ADDR_CONFIG_1_BANK                       = 0x00000000, | ||||
|     ADDR_CONFIG_2_BANK                       = 0x00000001, | ||||
|     ADDR_CONFIG_4_BANK                       = 0x00000002, | ||||
|     ADDR_CONFIG_8_BANK                       = 0x00000003, | ||||
|     ADDR_CONFIG_16_BANK                      = 0x00000004, | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief Enums that define num rb per shader engine config | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| enum NumRbPerShaderEngineConfig | ||||
| { | ||||
|     ADDR_CONFIG_1_RB_PER_SHADER_ENGINE       = 0x00000000, | ||||
|     ADDR_CONFIG_2_RB_PER_SHADER_ENGINE       = 0x00000001, | ||||
|     ADDR_CONFIG_4_RB_PER_SHADER_ENGINE       = 0x00000002, | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief Enums that define num shader engines config | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| enum NumShaderEnginesConfig | ||||
| { | ||||
|     ADDR_CONFIG_1_SHADER_ENGINE              = 0x00000000, | ||||
|     ADDR_CONFIG_2_SHADER_ENGINE              = 0x00000001, | ||||
|     ADDR_CONFIG_4_SHADER_ENGINE              = 0x00000002, | ||||
|     ADDR_CONFIG_8_SHADER_ENGINE              = 0x00000003, | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief Enums that define pipe interleave size config | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| enum PipeInterleaveSizeConfig | ||||
| { | ||||
|     ADDR_CONFIG_PIPE_INTERLEAVE_256B         = 0x00000000, | ||||
|     ADDR_CONFIG_PIPE_INTERLEAVE_512B         = 0x00000001, | ||||
|     ADDR_CONFIG_PIPE_INTERLEAVE_1KB          = 0x00000002, | ||||
|     ADDR_CONFIG_PIPE_INTERLEAVE_2KB          = 0x00000003, | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief Enums that define row size config | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| enum RowSizeConfig | ||||
| { | ||||
|     ADDR_CONFIG_1KB_ROW                      = 0x00000000, | ||||
|     ADDR_CONFIG_2KB_ROW                      = 0x00000001, | ||||
|     ADDR_CONFIG_4KB_ROW                      = 0x00000002, | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief Enums that define bank interleave size config | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| enum BankInterleaveSizeConfig | ||||
| { | ||||
|     ADDR_CONFIG_BANK_INTERLEAVE_1            = 0x00000000, | ||||
|     ADDR_CONFIG_BANK_INTERLEAVE_2            = 0x00000001, | ||||
|     ADDR_CONFIG_BANK_INTERLEAVE_4            = 0x00000002, | ||||
|     ADDR_CONFIG_BANK_INTERLEAVE_8            = 0x00000003, | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief Enums that define engine tile size config | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| enum ShaderEngineTileSizeConfig | ||||
| { | ||||
|     ADDR_CONFIG_SE_TILE_16                   = 0x00000000, | ||||
|     ADDR_CONFIG_SE_TILE_32                   = 0x00000001, | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief This class contains asic independent address lib functionalities | ||||
|   | ||||
| @@ -1281,54 +1281,36 @@ ADDR_E_RETURNCODE Lib::ComputeHtileInfo( | ||||
|  | ||||
|         if (returnCode == ADDR_OK) | ||||
|         { | ||||
|             if (pIn->flags.tcCompatible) | ||||
|             pOut->bpp = ComputeHtileInfo(pIn->flags, | ||||
|                                          pIn->pitch, | ||||
|                                          pIn->height, | ||||
|                                          pIn->numSlices, | ||||
|                                          pIn->isLinear, | ||||
|                                          isWidth8, | ||||
|                                          isHeight8, | ||||
|                                          pIn->pTileInfo, | ||||
|                                          &pOut->pitch, | ||||
|                                          &pOut->height, | ||||
|                                          &pOut->htileBytes, | ||||
|                                          &pOut->macroWidth, | ||||
|                                          &pOut->macroHeight, | ||||
|                                          &pOut->sliceSize, | ||||
|                                          &pOut->baseAlign); | ||||
|  | ||||
|             if (pIn->flags.tcCompatible && (pIn->numSlices > 1)) | ||||
|             { | ||||
|                 const UINT_32 sliceSize = pIn->pitch * pIn->height * 4 / (8 * 8); | ||||
|                 const UINT_32 align     = HwlGetPipes(pIn->pTileInfo) * pIn->pTileInfo->banks * m_pipeInterleaveBytes; | ||||
|                 pOut->sliceSize = pIn->pitch * pIn->height * 4 / (8 * 8); | ||||
|  | ||||
|                 if (pIn->numSlices > 1) | ||||
|                 const UINT_32 align = HwlGetPipes(pIn->pTileInfo) * pIn->pTileInfo->banks * m_pipeInterleaveBytes; | ||||
|  | ||||
|                 if ((pOut->sliceSize % align) == 0) | ||||
|                 { | ||||
|                     const UINT_32 surfBytes = (sliceSize * pIn->numSlices); | ||||
|  | ||||
|                     pOut->sliceSize        = sliceSize; | ||||
|                     pOut->htileBytes       = pIn->flags.skipTcCompatSizeAlign ? | ||||
|                                              surfBytes : PowTwoAlign(surfBytes, align); | ||||
|                     pOut->sliceInterleaved = ((sliceSize % align) != 0) ? TRUE : FALSE; | ||||
|                     pOut->sliceInterleaved = FALSE; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     pOut->sliceSize        = pIn->flags.skipTcCompatSizeAlign ? | ||||
|                                              sliceSize : PowTwoAlign(sliceSize, align); | ||||
|                     pOut->htileBytes       = pOut->sliceSize; | ||||
|                     pOut->sliceInterleaved = FALSE; | ||||
|                     pOut->sliceInterleaved = TRUE; | ||||
|                 } | ||||
|  | ||||
|                 pOut->nextMipLevelCompressible = ((sliceSize % align) == 0) ? TRUE : FALSE; | ||||
|  | ||||
|                 pOut->pitch       = pIn->pitch; | ||||
|                 pOut->height      = pIn->height; | ||||
|                 pOut->baseAlign   = align; | ||||
|                 pOut->macroWidth  = 0; | ||||
|                 pOut->macroHeight = 0; | ||||
|                 pOut->bpp         = 32; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 pOut->bpp = ComputeHtileInfo(pIn->flags, | ||||
|                                              pIn->pitch, | ||||
|                                              pIn->height, | ||||
|                                              pIn->numSlices, | ||||
|                                              pIn->isLinear, | ||||
|                                              isWidth8, | ||||
|                                              isHeight8, | ||||
|                                              pIn->pTileInfo, | ||||
|                                              &pOut->pitch, | ||||
|                                              &pOut->height, | ||||
|                                              &pOut->htileBytes, | ||||
|                                              &pOut->macroWidth, | ||||
|                                              &pOut->macroHeight, | ||||
|                                              &pOut->sliceSize, | ||||
|                                              &pOut->baseAlign); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @@ -2180,8 +2162,6 @@ VOID Lib::HwlComputeXmaskCoordFromAddr( | ||||
| { | ||||
|     UINT_32 pipe; | ||||
|     UINT_32 numPipes; | ||||
|     UINT_32 numGroupBits; | ||||
|     (void)numGroupBits; | ||||
|     UINT_32 numPipeBits; | ||||
|     UINT_32 macroTilePitch; | ||||
|     UINT_32 macroTileHeight; | ||||
| @@ -2224,7 +2204,6 @@ VOID Lib::HwlComputeXmaskCoordFromAddr( | ||||
|     // | ||||
|     // Compute the number of group and pipe bits. | ||||
|     // | ||||
|     numGroupBits = Log2(m_pipeInterleaveBytes); | ||||
|     numPipeBits  = Log2(numPipes); | ||||
|  | ||||
|     UINT_32 groupBits = 8 * m_pipeInterleaveBytes; | ||||
| @@ -3525,10 +3504,6 @@ VOID Lib::ComputeMipLevel( | ||||
|     ADDR_COMPUTE_SURFACE_INFO_INPUT* pIn ///< [in,out] Input structure | ||||
|     ) const | ||||
| { | ||||
|     // Check if HWL has handled | ||||
|     BOOL_32 hwlHandled = FALSE; | ||||
|     (void)hwlHandled; | ||||
|  | ||||
|     if (ElemLib::IsBlockCompressed(pIn->format)) | ||||
|     { | ||||
|         if (pIn->mipLevel == 0) | ||||
| @@ -3542,7 +3517,7 @@ VOID Lib::ComputeMipLevel( | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     hwlHandled = HwlComputeMipLevel(pIn); | ||||
|     HwlComputeMipLevel(pIn); | ||||
| } | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -355,11 +355,6 @@ ADDR_E_RETURNCODE Lib::ComputeSurfaceAddrFromCoord( | ||||
|         { | ||||
|             returnCode = ComputeSurfaceAddrFromCoordTiled(&localIn, pOut); | ||||
|         } | ||||
|  | ||||
|         if (returnCode == ADDR_OK) | ||||
|         { | ||||
|             pOut->prtBlockIndex = static_cast<UINT_32>(pOut->addr / (64 * 1024)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return returnCode; | ||||
| @@ -465,7 +460,8 @@ ADDR_E_RETURNCODE Lib::ComputeHtileInfo( | ||||
| */ | ||||
| ADDR_E_RETURNCODE Lib::ComputeHtileAddrFromCoord( | ||||
|     const ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT*   pIn,    ///< [in] input structure | ||||
|     ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT*        pOut)   ///< [out] output structure | ||||
|     ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT*        pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     ADDR_E_RETURNCODE returnCode; | ||||
|  | ||||
| @@ -496,7 +492,8 @@ ADDR_E_RETURNCODE Lib::ComputeHtileAddrFromCoord( | ||||
| */ | ||||
| ADDR_E_RETURNCODE Lib::ComputeHtileCoordFromAddr( | ||||
|     const ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT*   pIn,    ///< [in] input structure | ||||
|     ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT*        pOut)   ///< [out] output structure | ||||
|     ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT*        pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     ADDR_E_RETURNCODE returnCode; | ||||
|  | ||||
| @@ -563,7 +560,8 @@ ADDR_E_RETURNCODE Lib::ComputeCmaskInfo( | ||||
| */ | ||||
| ADDR_E_RETURNCODE Lib::ComputeCmaskAddrFromCoord( | ||||
|     const ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT*   pIn,    ///< [in] input structure | ||||
|     ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT*        pOut)   ///< [out] output structure | ||||
|     ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT*        pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     ADDR_E_RETURNCODE returnCode; | ||||
|  | ||||
| @@ -782,7 +780,8 @@ ADDR_E_RETURNCODE Lib::ComputeDccInfo( | ||||
| */ | ||||
| ADDR_E_RETURNCODE Lib::ComputeDccAddrFromCoord( | ||||
|     const ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT* pIn,    ///< [in] input structure | ||||
|     ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT*      pOut)   ///< [out] output structure | ||||
|     ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT*      pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     ADDR_E_RETURNCODE returnCode; | ||||
|  | ||||
| @@ -1048,7 +1047,77 @@ ADDR_E_RETURNCODE Lib::ComputeSurfaceInfoLinear( | ||||
|      ADDR2_COMPUTE_SURFACE_INFO_OUTPUT*      pOut    ///< [out] output structure | ||||
|      ) const | ||||
| { | ||||
|     return HwlComputeSurfaceInfoLinear(pIn, pOut); | ||||
|     ADDR_E_RETURNCODE returnCode = ADDR_OK; | ||||
|  | ||||
|     UINT_32 pitch = 0; | ||||
|     UINT_32 actualHeight = 0; | ||||
|     UINT_32 elementBytes = pIn->bpp >> 3; | ||||
|     const UINT_32 alignment = pIn->flags.prt ? PrtAlignment : 256; | ||||
|  | ||||
|     if (IsTex1d(pIn->resourceType)) | ||||
|     { | ||||
|         if (pIn->height > 1) | ||||
|         { | ||||
|             returnCode = ADDR_INVALIDPARAMS; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             const UINT_32 pitchAlignInElement = alignment / elementBytes; | ||||
|             pitch = PowTwoAlign(pIn->width, pitchAlignInElement); | ||||
|             actualHeight = pIn->numMipLevels; | ||||
|  | ||||
|             if (pIn->flags.prt == FALSE) | ||||
|             { | ||||
|                 returnCode = ApplyCustomizedPitchHeight(pIn, elementBytes, pitchAlignInElement, | ||||
|                                                         &pitch, &actualHeight); | ||||
|             } | ||||
|  | ||||
|             if (returnCode == ADDR_OK) | ||||
|             { | ||||
|                 if (pOut->pMipInfo != NULL) | ||||
|                 { | ||||
|                     for (UINT_32 i = 0; i < pIn->numMipLevels; i++) | ||||
|                     { | ||||
|                         pOut->pMipInfo[i].offset = pitch * elementBytes * i; | ||||
|                         pOut->pMipInfo[i].pitch = pitch; | ||||
|                         pOut->pMipInfo[i].height = 1; | ||||
|                         pOut->pMipInfo[i].depth = 1; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         returnCode = ComputeSurfaceLinearPadding(pIn, &pitch, &actualHeight, pOut->pMipInfo); | ||||
|     } | ||||
|  | ||||
|     if ((pitch == 0) || (actualHeight == 0)) | ||||
|     { | ||||
|         returnCode = ADDR_INVALIDPARAMS; | ||||
|     } | ||||
|  | ||||
|     if (returnCode == ADDR_OK) | ||||
|     { | ||||
|         pOut->pitch = pitch; | ||||
|         pOut->height = pIn->height; | ||||
|         pOut->numSlices = pIn->numSlices; | ||||
|         pOut->mipChainPitch = pitch; | ||||
|         pOut->mipChainHeight = actualHeight; | ||||
|         pOut->mipChainSlice = pOut->numSlices; | ||||
|         pOut->epitchIsHeight = (pIn->numMipLevels > 1) ? TRUE : FALSE; | ||||
|         pOut->sliceSize = static_cast<UINT_64>(pOut->pitch) * actualHeight * elementBytes; | ||||
|         pOut->surfSize = pOut->sliceSize * pOut->numSlices; | ||||
|         pOut->baseAlign = (pIn->swizzleMode == ADDR_SW_LINEAR_GENERAL) ? (pIn->bpp / 8) : alignment; | ||||
|         pOut->blockWidth = (pIn->swizzleMode == ADDR_SW_LINEAR_GENERAL) ? 1 : (256 * 8 / pIn->bpp); | ||||
|         pOut->blockHeight = 1; | ||||
|         pOut->blockSlices = 1; | ||||
|     } | ||||
|  | ||||
|     // Post calculation validate | ||||
|     ADDR_ASSERT(pOut->sliceSize > 0); | ||||
|  | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -1101,8 +1170,6 @@ ADDR_E_RETURNCODE Lib::ComputeSurfaceAddrFromCoordLinear( | ||||
|     { | ||||
|         ADDR2_COMPUTE_SURFACE_INFO_INPUT  localIn  = {0}; | ||||
|         ADDR2_COMPUTE_SURFACE_INFO_OUTPUT localOut = {0}; | ||||
|         ADDR2_MIP_INFO                    mipInfo[MaxMipLevels]; | ||||
|  | ||||
|         localIn.bpp          = pIn->bpp; | ||||
|         localIn.flags        = pIn->flags; | ||||
|         localIn.width        = Max(pIn->unalignedWidth, 1u); | ||||
| @@ -1110,21 +1177,32 @@ ADDR_E_RETURNCODE Lib::ComputeSurfaceAddrFromCoordLinear( | ||||
|         localIn.numSlices    = Max(pIn->numSlices, 1u); | ||||
|         localIn.numMipLevels = Max(pIn->numMipLevels, 1u); | ||||
|         localIn.resourceType = pIn->resourceType; | ||||
|  | ||||
|         if (localIn.numMipLevels <= 1) | ||||
|         { | ||||
|             localIn.pitchInElement = pIn->pitchInElement; | ||||
|         } | ||||
|  | ||||
|         localOut.pMipInfo = mipInfo; | ||||
|  | ||||
|         returnCode = ComputeSurfaceInfoLinear(&localIn, &localOut); | ||||
|  | ||||
|         if (returnCode == ADDR_OK) | ||||
|         { | ||||
|             pOut->addr        = (localOut.sliceSize * pIn->slice) + | ||||
|                                 mipInfo[pIn->mipId].offset + | ||||
|                                 (pIn->y * mipInfo[pIn->mipId].pitch + pIn->x) * (pIn->bpp >> 3); | ||||
|             UINT_32 elementBytes = pIn->bpp >> 3; | ||||
|             UINT_64 sliceOffsetInSurf = localOut.sliceSize * pIn->slice; | ||||
|             UINT_64 mipOffsetInSlice = 0; | ||||
|             UINT_64 offsetInMip = 0; | ||||
|  | ||||
|             if (IsTex1d(pIn->resourceType)) | ||||
|             { | ||||
|                 offsetInMip = static_cast<UINT_64>(pIn->x) * elementBytes; | ||||
|                 mipOffsetInSlice = static_cast<UINT_64>(pIn->mipId) * localOut.pitch * elementBytes; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 UINT_64 mipStartHeight = SumGeo(localIn.height, pIn->mipId); | ||||
|                 mipOffsetInSlice = static_cast<UINT_64>(mipStartHeight) * localOut.pitch * elementBytes; | ||||
|                 offsetInMip = (pIn->y * localOut.pitch + pIn->x) * elementBytes; | ||||
|             } | ||||
|  | ||||
|             pOut->addr = sliceOffsetInSurf + mipOffsetInSlice + offsetInMip; | ||||
|             pOut->bitPosition = 0; | ||||
|         } | ||||
|         else | ||||
| @@ -1320,6 +1398,73 @@ ADDR_E_RETURNCODE Lib::ComputeSurfaceCoordFromAddrTiled( | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| /** | ||||
| ************************************************************************************************************************ | ||||
| *   Lib::ComputeSurfaceInfoLinear | ||||
| * | ||||
| *   @brief | ||||
| *       Internal function to calculate padding for linear swizzle 2D/3D surface | ||||
| * | ||||
| *   @return | ||||
| *       N/A | ||||
| ************************************************************************************************************************ | ||||
| */ | ||||
| ADDR_E_RETURNCODE Lib::ComputeSurfaceLinearPadding( | ||||
|     const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn,    ///< [in] input srtucture | ||||
|     UINT_32* pMipmap0PaddedWidth,                   ///< [out] padded width in element | ||||
|     UINT_32* pSlice0PaddedHeight,                   ///< [out] padded height for HW | ||||
|     ADDR2_MIP_INFO* pMipInfo                        ///< [out] per mip information | ||||
|     ) const | ||||
| { | ||||
|     ADDR_E_RETURNCODE returnCode = ADDR_OK; | ||||
|  | ||||
|     UINT_32 elementBytes = pIn->bpp >> 3; | ||||
|     UINT_32 pitchAlignInElement = 0; | ||||
|  | ||||
|     if (pIn->swizzleMode == ADDR_SW_LINEAR_GENERAL) | ||||
|     { | ||||
|         ADDR_ASSERT(pIn->numMipLevels <= 1); | ||||
|         ADDR_ASSERT(pIn->numSlices <= 1); | ||||
|         pitchAlignInElement = 1; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         pitchAlignInElement = (256 / elementBytes); | ||||
|     } | ||||
|  | ||||
|     UINT_32 mipChainWidth = PowTwoAlign(pIn->width, pitchAlignInElement); | ||||
|     UINT_32 slice0PaddedHeight = pIn->height; | ||||
|  | ||||
|     returnCode = ApplyCustomizedPitchHeight(pIn, elementBytes, pitchAlignInElement, | ||||
|                                             &mipChainWidth, &slice0PaddedHeight); | ||||
|  | ||||
|     if (returnCode == ADDR_OK) | ||||
|     { | ||||
|         UINT_32 mipChainHeight = 0; | ||||
|         UINT_32 mipHeight = pIn->height; | ||||
|  | ||||
|         for (UINT_32 i = 0; i < pIn->numMipLevels; i++) | ||||
|         { | ||||
|             if (pMipInfo != NULL) | ||||
|             { | ||||
|                 pMipInfo[i].offset = mipChainWidth * mipChainHeight * elementBytes; | ||||
|                 pMipInfo[i].pitch = mipChainWidth; | ||||
|                 pMipInfo[i].height = mipHeight; | ||||
|                 pMipInfo[i].depth = 1; | ||||
|             } | ||||
|  | ||||
|             mipChainHeight += mipHeight; | ||||
|             mipHeight = RoundHalf(mipHeight); | ||||
|             mipHeight = Max(mipHeight, 1u); | ||||
|         } | ||||
|  | ||||
|         *pMipmap0PaddedWidth = mipChainWidth; | ||||
|         *pSlice0PaddedHeight = (pIn->numMipLevels > 1) ? mipChainHeight : slice0PaddedHeight; | ||||
|     } | ||||
|  | ||||
|     return returnCode; | ||||
| } | ||||
|  | ||||
| /** | ||||
| ************************************************************************************************************************ | ||||
| *   Lib::ComputeBlockDimensionForSurf | ||||
|   | ||||
| @@ -103,63 +103,63 @@ public: | ||||
|     // For data surface | ||||
|     ADDR_E_RETURNCODE ComputeSurfaceInfo( | ||||
|         const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_SURFACE_INFO_OUTPUT*      pOut) const; | ||||
|         ADDR2_COMPUTE_SURFACE_INFO_OUTPUT* pOut) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeSurfaceAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT*      pOut) const; | ||||
|         ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT* pOut) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeSurfaceCoordFromAddr( | ||||
|         const ADDR2_COMPUTE_SURFACE_COORDFROMADDR_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT*      pOut) const; | ||||
|         const ADDR2_COMPUTE_SURFACE_COORDFROMADDR_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT* pOut) const; | ||||
|  | ||||
|     // For HTile | ||||
|     ADDR_E_RETURNCODE ComputeHtileInfo( | ||||
|         const ADDR2_COMPUTE_HTILE_INFO_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_HTILE_INFO_OUTPUT*      pOut) const; | ||||
|         ADDR2_COMPUTE_HTILE_INFO_OUTPUT* pOut) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeHtileAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT*      pOut); | ||||
|         const ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT* pOut) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeHtileCoordFromAddr( | ||||
|         const ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT*      pOut); | ||||
|         const ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT* pOut) const; | ||||
|  | ||||
|     // For CMask | ||||
|     ADDR_E_RETURNCODE ComputeCmaskInfo( | ||||
|         const ADDR2_COMPUTE_CMASK_INFO_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_CMASK_INFO_OUTPUT*      pOut) const; | ||||
|         ADDR2_COMPUTE_CMASK_INFO_OUTPUT* pOut) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeCmaskAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT*      pOut); | ||||
|         const ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT* pOut) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeCmaskCoordFromAddr( | ||||
|         const ADDR2_COMPUTE_CMASK_COORDFROMADDR_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_CMASK_COORDFROMADDR_OUTPUT*      pOut) const; | ||||
|         const ADDR2_COMPUTE_CMASK_COORDFROMADDR_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_CMASK_COORDFROMADDR_OUTPUT* pOut) const; | ||||
|  | ||||
|     // For FMask | ||||
|     ADDR_E_RETURNCODE ComputeFmaskInfo( | ||||
|         const ADDR2_COMPUTE_FMASK_INFO_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_FMASK_INFO_OUTPUT*      pOut); | ||||
|         const ADDR2_COMPUTE_FMASK_INFO_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_FMASK_INFO_OUTPUT* pOut); | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeFmaskAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT*      pOut) const; | ||||
|         const ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT* pOut) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeFmaskCoordFromAddr( | ||||
|         const ADDR2_COMPUTE_FMASK_COORDFROMADDR_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_FMASK_COORDFROMADDR_OUTPUT*      pOut) const; | ||||
|         const ADDR2_COMPUTE_FMASK_COORDFROMADDR_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_FMASK_COORDFROMADDR_OUTPUT* pOut) const; | ||||
|  | ||||
|     // For DCC key | ||||
|     ADDR_E_RETURNCODE ComputeDccInfo( | ||||
|         const ADDR2_COMPUTE_DCCINFO_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_DCCINFO_OUTPUT*      pOut) const; | ||||
|         ADDR2_COMPUTE_DCCINFO_OUTPUT* pOut) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeDccAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT*      pOut); | ||||
|         const ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT* pOut) const; | ||||
|  | ||||
|     // Misc | ||||
|     ADDR_E_RETURNCODE ComputePipeBankXor( | ||||
| @@ -197,8 +197,6 @@ protected: | ||||
|     static const UINT_32 PrtAlignment = 64 * 1024; | ||||
|     static const UINT_32 MaxMacroBits = 20; | ||||
|  | ||||
|     static const UINT_32 MaxMipLevels = 16; | ||||
|  | ||||
|     // Checking block size | ||||
|     BOOL_32 IsBlock256b(AddrSwizzleMode swizzleMode) const | ||||
|     { | ||||
| @@ -404,32 +402,32 @@ protected: | ||||
|     } | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeDccAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT*      pOut) | ||||
|         const ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT* pOut) const | ||||
|     { | ||||
|         ADDR_NOT_IMPLEMENTED(); | ||||
|         return ADDR_NOTSUPPORTED; | ||||
|     } | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeCmaskAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT*      pOut) | ||||
|         const ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT* pOut) const | ||||
|     { | ||||
|         ADDR_NOT_IMPLEMENTED(); | ||||
|         return ADDR_NOTSUPPORTED; | ||||
|     } | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeHtileAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT*      pOut) | ||||
|         const ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT* pOut) const | ||||
|     { | ||||
|         ADDR_NOT_IMPLEMENTED(); | ||||
|         return ADDR_NOTSUPPORTED; | ||||
|     } | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeHtileCoordFromAddr( | ||||
|         const ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT*      pOut) | ||||
|         const ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT* pOut) const | ||||
|     { | ||||
|         ADDR_NOT_IMPLEMENTED(); | ||||
|         return ADDR_NOTSUPPORTED; | ||||
| @@ -534,14 +532,6 @@ protected: | ||||
|         return ADDR_NOTIMPLEMENTED; | ||||
|     } | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeSurfaceInfoLinear( | ||||
|          const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
|          ADDR2_COMPUTE_SURFACE_INFO_OUTPUT*      pOut) const | ||||
|     { | ||||
|         ADDR_NOT_IMPLEMENTED(); | ||||
|         return ADDR_NOTIMPLEMENTED; | ||||
|     } | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeSurfaceAddrFromCoordTiled( | ||||
|         const ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT*      pOut) const | ||||
| @@ -575,6 +565,12 @@ protected: | ||||
|         const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_SURFACE_INFO_OUTPUT*      pOut) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeSurfaceLinearPadding( | ||||
|         const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
|         UINT_32* pMipmap0PaddedWidth, | ||||
|         UINT_32* pSlice0PaddedHeight, | ||||
|         ADDR2_MIP_INFO* pMipInfo = NULL) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeSurfaceInfoTiled( | ||||
|         const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_SURFACE_INFO_OUTPUT*      pOut) const; | ||||
| @@ -761,10 +757,10 @@ protected: | ||||
|  | ||||
|     ADDR_E_RETURNCODE ApplyCustomizedPitchHeight( | ||||
|         const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
|         UINT_32                                 elementBytes, | ||||
|         UINT_32                                 pitchAlignInElement, | ||||
|         UINT_32*                                pPitch, | ||||
|         UINT_32*                                pHeight) const; | ||||
|         UINT_32  elementBytes, | ||||
|         UINT_32  pitchAlignInElement, | ||||
|         UINT_32* pPitch, | ||||
|         UINT_32* pHeight) const; | ||||
|  | ||||
|     VOID ComputeQbStereoInfo(ADDR2_COMPUTE_SURFACE_INFO_OUTPUT* pOut) const; | ||||
|  | ||||
|   | ||||
| @@ -34,20 +34,20 @@ Coordinate::Coordinate() | ||||
|     ord = 0; | ||||
| } | ||||
|  | ||||
| Coordinate::Coordinate(INT_8 c, INT_32 n) | ||||
| Coordinate::Coordinate(INT_8 c, UINT_32 n) | ||||
| { | ||||
|     set(c, n); | ||||
|     set(c,n); | ||||
| } | ||||
|  | ||||
| VOID Coordinate::set(INT_8 c, INT_32 n) | ||||
| VOID Coordinate::set(INT_8 c, UINT_32 n) | ||||
| { | ||||
|     dim = c; | ||||
|     ord = static_cast<INT_8>(n); | ||||
| } | ||||
|  | ||||
| UINT_32 Coordinate::ison(UINT_32 x, UINT_32 y, UINT_32 z, UINT_32 s, UINT_32 m) const | ||||
| UINT_32 Coordinate::ison(UINT_32 x, UINT_32 y, UINT_32 z, UINT_32 s, UINT_32 m) | ||||
| { | ||||
|     UINT_32 bit = static_cast<UINT_32>(1ull << static_cast<UINT_32>(ord)); | ||||
|     UINT_32 bit = 1 << (UINT_32)ord; | ||||
|     UINT_32 out = 0; | ||||
|  | ||||
|     switch (dim) | ||||
| @@ -234,7 +234,7 @@ UINT_32 CoordTerm::getsize() | ||||
|     return num_coords; | ||||
| } | ||||
|  | ||||
| UINT_32 CoordTerm::getxor(UINT_32 x, UINT_32 y, UINT_32 z, UINT_32 s, UINT_32 m) const | ||||
| UINT_32 CoordTerm::getxor(UINT_32 x, UINT_32 y, UINT_32 z, UINT_32 s, UINT_32 m) | ||||
| { | ||||
|     UINT_32 out = 0; | ||||
|     for (UINT_32 i = 0; i < num_coords; i++) | ||||
| @@ -386,7 +386,7 @@ UINT_32 CoordEq::getsize() | ||||
|     return m_numBits; | ||||
| } | ||||
|  | ||||
| UINT_64 CoordEq::solve(UINT_32 x, UINT_32 y, UINT_32 z, UINT_32 s, UINT_32 m) const | ||||
| UINT_64 CoordEq::solve(UINT_32 x, UINT_32 y, UINT_32 z, UINT_32 s, UINT_32 m) | ||||
| { | ||||
|     UINT_64 out = 0; | ||||
|     for (UINT_32 i = 0; i < m_numBits; i++) | ||||
| @@ -401,7 +401,7 @@ UINT_64 CoordEq::solve(UINT_32 x, UINT_32 y, UINT_32 z, UINT_32 s, UINT_32 m) co | ||||
|  | ||||
| VOID CoordEq::solveAddr( | ||||
|     UINT_64 addr, UINT_32 sliceInM, | ||||
|     UINT_32& x, UINT_32& y, UINT_32& z, UINT_32& s, UINT_32& m) const | ||||
|     UINT_32& x, UINT_32& y, UINT_32& z, UINT_32& s, UINT_32& m) | ||||
| { | ||||
|     UINT_32 xBitsValid = 0; | ||||
|     UINT_32 yBitsValid = 0; | ||||
|   | ||||
| @@ -33,12 +33,12 @@ class Coordinate | ||||
| { | ||||
| public: | ||||
|     Coordinate(); | ||||
|     Coordinate(INT_8 c, INT_32 n); | ||||
|     Coordinate(INT_8 c, UINT_32 n); | ||||
|  | ||||
|     VOID set(INT_8 c, INT_32 n); | ||||
|     UINT_32 ison(UINT_32 x, UINT_32 y, UINT_32 z = 0, UINT_32 s = 0, UINT_32 m = 0) const; | ||||
|     INT_8   getdim(); | ||||
|     INT_8   getord(); | ||||
|     VOID set(INT_8 c, UINT_32 n); | ||||
|     UINT_32 ison(UINT_32 x, UINT_32 y, UINT_32 z = 0, UINT_32 s = 0, UINT_32 m = 0); | ||||
|     INT_8 getdim(); | ||||
|     INT_8 getord(); | ||||
|  | ||||
|     BOOL_32 operator==(const Coordinate& b); | ||||
|     BOOL_32 operator<(const Coordinate& b); | ||||
| @@ -64,7 +64,7 @@ public: | ||||
|     BOOL_32 Exists(Coordinate& co); | ||||
|     VOID copyto(CoordTerm& cl); | ||||
|     UINT_32 getsize(); | ||||
|     UINT_32 getxor(UINT_32 x, UINT_32 y, UINT_32 z = 0, UINT_32 s = 0, UINT_32 m = 0) const; | ||||
|     UINT_32 getxor(UINT_32 x, UINT_32 y, UINT_32 z = 0, UINT_32 s = 0, UINT_32 m = 0); | ||||
|  | ||||
|     VOID getsmallest(Coordinate& co); | ||||
|     UINT_32 Filter(INT_8 f, Coordinate& co, UINT_32 start = 0, INT_8 axis = '\0'); | ||||
| @@ -87,9 +87,9 @@ public: | ||||
|     BOOL_32 Exists(Coordinate& co); | ||||
|     VOID resize(UINT_32 n); | ||||
|     UINT_32 getsize(); | ||||
|     virtual UINT_64 solve(UINT_32 x, UINT_32 y, UINT_32 z = 0, UINT_32 s = 0, UINT_32 m = 0) const; | ||||
|     virtual UINT_64 solve(UINT_32 x, UINT_32 y, UINT_32 z = 0, UINT_32 s = 0, UINT_32 m = 0); | ||||
|     virtual VOID solveAddr(UINT_64 addr, UINT_32 sliceInM, | ||||
|                            UINT_32& x, UINT_32& y, UINT_32& z, UINT_32& s, UINT_32& m) const; | ||||
|                            UINT_32& x, UINT_32& y, UINT_32& z, UINT_32& s, UINT_32& m); | ||||
|  | ||||
|     VOID copy(CoordEq& o, UINT_32 start = 0, UINT_32 num = 0xFFFFFFFF); | ||||
|     VOID reverse(UINT_32 start = 0, UINT_32 num = 0xFFFFFFFF); | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -65,9 +65,7 @@ struct Gfx9ChipSettings | ||||
|         // Misc configuration bits | ||||
|         UINT_32 metaBaseAlignFix    : 1; | ||||
|         UINT_32 depthPipeXorDisable : 1; | ||||
|         UINT_32 htileAlignFix       : 1; | ||||
|         UINT_32 applyAliasFix       : 1; | ||||
|         UINT_32 reserved2           : 28; | ||||
|         UINT_32 reserved2           : 30; | ||||
|     }; | ||||
| }; | ||||
|  | ||||
| @@ -83,28 +81,6 @@ enum Gfx9DataType | ||||
|     Gfx9DataFmask | ||||
| }; | ||||
|  | ||||
| /** | ||||
| ************************************************************************************************************************ | ||||
| * @brief GFX9 meta equation parameters | ||||
| ************************************************************************************************************************ | ||||
| */ | ||||
| struct MetaEqParams | ||||
| { | ||||
|     UINT_32          maxMip; | ||||
|     UINT_32          elementBytesLog2; | ||||
|     UINT_32          numSamplesLog2; | ||||
|     ADDR2_META_FLAGS metaFlag; | ||||
|     Gfx9DataType     dataSurfaceType; | ||||
|     AddrSwizzleMode  swizzleMode; | ||||
|     AddrResourceType resourceType; | ||||
|     UINT_32          metaBlkWidthLog2; | ||||
|     UINT_32          metaBlkHeightLog2; | ||||
|     UINT_32          metaBlkDepthLog2; | ||||
|     UINT_32          compBlkWidthLog2; | ||||
|     UINT_32          compBlkHeightLog2; | ||||
|     UINT_32          compBlkDepthLog2; | ||||
| }; | ||||
|  | ||||
| /** | ||||
| ************************************************************************************************************************ | ||||
| * @brief This class is the GFX9 specific address library | ||||
| @@ -163,31 +139,31 @@ protected: | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeHtileInfo( | ||||
|         const ADDR2_COMPUTE_HTILE_INFO_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_HTILE_INFO_OUTPUT*      pOut) const; | ||||
|         ADDR2_COMPUTE_HTILE_INFO_OUTPUT* pOut) const; | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeCmaskInfo( | ||||
|         const ADDR2_COMPUTE_CMASK_INFO_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_CMASK_INFO_OUTPUT*      pOut) const; | ||||
|         ADDR2_COMPUTE_CMASK_INFO_OUTPUT* pOut) const; | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeDccInfo( | ||||
|         const ADDR2_COMPUTE_DCCINFO_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_DCCINFO_OUTPUT*      pOut) const; | ||||
|         ADDR2_COMPUTE_DCCINFO_OUTPUT* pOut) const; | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeCmaskAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT*      pOut); | ||||
|         const ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT* pOut) const; | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeHtileAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT*      pOut); | ||||
|         const ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT* pOut) const; | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeHtileCoordFromAddr( | ||||
|         const ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT*      pOut); | ||||
|         const ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT* pOut) const; | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeDccAddrFromCoord( | ||||
|         const ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT*      pOut); | ||||
|         const ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT*  pIn, | ||||
|         ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT* pOut) const; | ||||
|  | ||||
|     virtual UINT_32 HwlGetEquationIndex( | ||||
|         const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
| @@ -230,7 +206,17 @@ protected: | ||||
|  | ||||
|         if (IsXor(swizzleMode)) | ||||
|         { | ||||
|             baseAlign = GetBlockSize(swizzleMode); | ||||
|             if (m_settings.isVega10 || m_settings.isRaven) | ||||
|             { | ||||
|                 baseAlign = GetBlockSize(swizzleMode); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 UINT_32 blockSizeLog2 = GetBlockSizeLog2(swizzleMode); | ||||
|                 UINT_32 pipeBits = GetPipeXorBits(blockSizeLog2); | ||||
|                 UINT_32 bankBits = GetBankXorBits(blockSizeLog2); | ||||
|                 baseAlign = 1 << (Min(blockSizeLog2, m_pipeInterleaveLog2 + pipeBits+ bankBits)); | ||||
|             } | ||||
|         } | ||||
|         else | ||||
|         { | ||||
| @@ -263,10 +249,6 @@ protected: | ||||
|          const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
|          ADDR2_COMPUTE_SURFACE_INFO_OUTPUT*      pOut) const; | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeSurfaceInfoLinear( | ||||
|          const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
|          ADDR2_COMPUTE_SURFACE_INFO_OUTPUT*      pOut) const; | ||||
|  | ||||
|     virtual ADDR_E_RETURNCODE HwlComputeSurfaceAddrFromCoordTiled( | ||||
|         const ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT* pIn, | ||||
|         ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT*      pOut) const; | ||||
| @@ -370,10 +352,6 @@ protected: | ||||
|         return compressBlkDim; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     static const UINT_32          MaxSeLog2      = 3; | ||||
|     static const UINT_32          MaxRbPerSeLog2 = 2; | ||||
|  | ||||
|     static const Dim3d            Block256_3dS[MaxNumOfBpp]; | ||||
|     static const Dim3d            Block256_3dZ[MaxNumOfBpp]; | ||||
|  | ||||
| @@ -397,8 +375,6 @@ protected: | ||||
|     // Equation lookup table according to bpp and tile index | ||||
|     UINT_32                 m_equationLookupTable[MaxRsrcType][MaxSwMode][MaxElementBytesLog2]; | ||||
|  | ||||
|     static const UINT_32    MaxCachedMetaEq = 2; | ||||
|  | ||||
| private: | ||||
|     virtual ADDR_E_RETURNCODE HwlGetMaxAlignments( | ||||
|         ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) const; | ||||
| @@ -406,7 +382,7 @@ private: | ||||
|     virtual BOOL_32 HwlInitGlobalParams( | ||||
|         const ADDR_CREATE_INPUT* pCreateIn); | ||||
|  | ||||
|     VOID GetRbEquation(CoordEq* pRbEq, UINT_32 rbPerSeLog2, UINT_32 seLog2) const; | ||||
|     static VOID GetRbEquation(CoordEq* pRbEq, UINT_32 rbPerSeLog2, UINT_32 seLog2); | ||||
|  | ||||
|     VOID GetDataEquation(CoordEq* pDataEq, Gfx9DataType dataSurfaceType, | ||||
|                          AddrSwizzleMode swizzleMode, AddrResourceType resourceType, | ||||
| @@ -417,7 +393,7 @@ private: | ||||
|                          UINT_32 numSamplesLog2, Gfx9DataType dataSurfaceType, | ||||
|                          AddrSwizzleMode swizzleMode, AddrResourceType resourceType) const; | ||||
|  | ||||
|     VOID GenMetaEquation(CoordEq* pMetaEq, UINT_32 maxMip, | ||||
|     VOID GetMetaEquation(CoordEq* pMetaEq, UINT_32 maxMip, | ||||
|                          UINT_32 elementBytesLog2, UINT_32 numSamplesLog2, | ||||
|                          ADDR2_META_FLAGS metaFlag, Gfx9DataType dataSurfaceType, | ||||
|                          AddrSwizzleMode swizzleMode, AddrResourceType resourceType, | ||||
| @@ -425,8 +401,6 @@ private: | ||||
|                          UINT_32 metaBlkDepthLog2, UINT_32 compBlkWidthLog2, | ||||
|                          UINT_32 compBlkHeightLog2, UINT_32 compBlkDepthLog2) const; | ||||
|  | ||||
|     const CoordEq* GetMetaEquation(const MetaEqParams& metaEqParams); | ||||
|  | ||||
|     virtual ChipFamily HwlConvertChipFamily(UINT_32 uChipFamily, UINT_32 uChipRevision); | ||||
|  | ||||
|     VOID GetMetaMipInfo(UINT_32 numMipLevels, Dim3d* pMetaBlkDim, | ||||
| @@ -434,17 +408,7 @@ private: | ||||
|                         UINT_32 mip0Width, UINT_32 mip0Height, UINT_32 mip0Depth, | ||||
|                         UINT_32* pNumMetaBlkX, UINT_32* pNumMetaBlkY, UINT_32* pNumMetaBlkZ) const; | ||||
|  | ||||
|     ADDR_E_RETURNCODE ComputeSurfaceLinearPadding( | ||||
|         const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, | ||||
|         UINT_32*                                pMipmap0PaddedWidth, | ||||
|         UINT_32*                                pSlice0PaddedHeight, | ||||
|         ADDR2_MIP_INFO*                         pMipInfo = NULL) const; | ||||
|  | ||||
|     Gfx9ChipSettings m_settings; | ||||
|  | ||||
|     CoordEq      m_cachedMetaEq[MaxCachedMetaEq]; | ||||
|     MetaEqParams m_cachedMetaEqKey[MaxCachedMetaEq]; | ||||
|     UINT_32      m_metaEqOverrideIndex; | ||||
| }; | ||||
|  | ||||
| } // V2 | ||||
|   | ||||
							
								
								
									
										1388
									
								
								src/amd/addrlib/gfx9/rbmap.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1388
									
								
								src/amd/addrlib/gfx9/rbmap.cpp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										142
									
								
								src/amd/addrlib/gfx9/rbmap.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								src/amd/addrlib/gfx9/rbmap.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,142 @@ | ||||
| /* | ||||
|  * Copyright © 2017 Advanced Micro Devices, Inc. | ||||
|  * All Rights Reserved. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining | ||||
|  * a copy of this software and associated documentation files (the | ||||
|  * "Software"), to deal in the Software without restriction, including | ||||
|  * without limitation the rights to use, copy, modify, merge, publish, | ||||
|  * distribute, sub license, and/or sell copies of the Software, and to | ||||
|  * permit persons to whom the Software is furnished to do so, subject to | ||||
|  * the following conditions: | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||||
|  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS | ||||
|  * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||
|  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | ||||
|  * USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  * | ||||
|  * The above copyright notice and this permission notice (including the | ||||
|  * next paragraph) shall be included in all copies or substantial portions | ||||
|  * of the Software. | ||||
|  */ | ||||
|  | ||||
| // This class RB_MAP contains the top-level calculation functions which are used to generate rb id map based rb id equations | ||||
|  | ||||
| #ifndef __RB_MAP_H | ||||
| #define __RB_MAP_H | ||||
|  | ||||
| #include "coord.h" | ||||
|  | ||||
| class RB_MAP | ||||
| { | ||||
| public: | ||||
|  | ||||
|     enum MAX_VALUES { | ||||
|         MAX_SES_LOG2 = 3, | ||||
|         MAX_RBS_LOG2 = 2 | ||||
|     }; | ||||
|  | ||||
|     enum COMPRESSED_DATABLOCKS_IN_METABLOCK_PER_RB_LOG2 { | ||||
|         COMPRESSED_DATABLOCKS_IN_METABLOCK_PER_RB_LOG2_2D = 10, | ||||
|         COMPRESSED_DATABLOCKS_IN_METABLOCK_PER_RB_LOG2_3D = 18 | ||||
|     }; | ||||
|  | ||||
|     RB_MAP(void); | ||||
|  | ||||
|     void Get_Comp_Block_Screen_Space( CoordEq& addr, int bytes_log2, int* w, int* h, int* d = NULL); | ||||
|  | ||||
|     void Get_Meta_Block_Screen_Space( int num_comp_blocks_log2, bool is_thick, bool y_biased, | ||||
|                                       int comp_block_width_log2, int comp_block_height_log2, int comp_block_depth_log2, | ||||
|                                       int& meta_block_width_log2, int& meta_block_height_log2, int& meta_block_depth_log2 ); | ||||
|     void cap_pipe( int xmode, bool is_thick, int& num_ses_log2, int bpp_log2, int num_samples_log2, int pipe_interleave_log2, | ||||
|                    int& block_size_log2, int& num_pipes_log2 ); | ||||
|  | ||||
|     void Get_Data_Offset_Equation( CoordEq& data_eq, int data_type, int bpp_log2, int num_samples_log2, int block_size_log2 ); | ||||
|  | ||||
|     void Get_RB_Equation( CoordEq& rb_equation, int num_ses_log2, int num_rbs_log2 ); | ||||
|  | ||||
|     void Get_Pipe_Equation( CoordEq& pipe_equation, CoordEq& addr, | ||||
|                            int pipe_interleave_log2, | ||||
|                            int num_pipes_log2, | ||||
|                            int block_size_log2, | ||||
|                            int num_samples_log2, | ||||
|                            int xmode, int data_type | ||||
|                          ); | ||||
|  | ||||
|     void get_meta_miptail_coord( int& x, int& y, int& z, int mip_in_tail, int blk_width_log2, int blk_height_log2, int blk_depth_log2 ); | ||||
|  | ||||
|     void get_mip_coord( int& x, int& y, int& z, int mip, | ||||
|                         int meta_blk_width_log2, int meta_blk_height_log2, int meta_blk_depth_log2, | ||||
|                         int data_blk_width_log2, int data_blk_height_log2, | ||||
|                         int& surf_width, int& surf_height, int& surf_depth, int epitch, int max_mip, | ||||
|                         int data_type, int bpp_log2, bool meta_linear ); | ||||
|  | ||||
|     void get_mip_coord_linear( int& x, int& y, int& z, int mip, int data_blk_width_log2, int data_blk_height_log2, | ||||
|                                int& surf_width, int& surf_height, int& surf_depth, int epitch, int max_mip, int data_type, int bpp_log2 ); | ||||
|  | ||||
|     void get_mip_coord_nonlinear( int& x, int& y, int& z, int mip, int meta_blk_width_log2, int meta_blk_height_log2, int meta_blk_depth_log2, | ||||
|                                   int& surf_width, int& surf_height, int& surf_depth, int epitch, int max_mip, int data_type ); | ||||
|  | ||||
|     void get_meta_eq( CoordEq& metaaddr, int max_mip, int num_ses_log2, int num_rbs_log2, int &num_pipes_log2, | ||||
|                       int block_size_log2, int bpp_log2, int num_samples_log2, int max_comp_frag_log2, | ||||
|                       int pipe_interleave_log2, int xmode, int data_type, int meta_alignment, bool meta_linear); | ||||
|  | ||||
| #if 0 | ||||
|     long get_meta_addr( int x, int y, int z, int s, int mip, | ||||
|                         int surf_width, int surf_height, int surf_depth, int epitch, | ||||
|                         long surf_base, int pipe_xor, int max_mip, | ||||
|                         int num_ses_log2, int num_rbs_log2, int num_pipes_log2, | ||||
|                         int block_size_log2, int bpp_log2, int num_samples_log2, int max_comp_frag_log2, | ||||
|                         int pipe_interleave_log2, int xmode, int data_type, int meta_alignment, bool meta_linear); | ||||
| #endif | ||||
|  | ||||
|     long get_meta_addr_calc( int x, int y, int z, int s, | ||||
|                     long surf_base, int element_bytes_log2, int num_samples_log2, int max_comp_frag_log2, | ||||
|                     long pitch, long slice, | ||||
|                     int max_mip, | ||||
|                     //int swizzle_mode, | ||||
|                     int xmode, int pipe_xor, int block_size_log2, | ||||
|                     /*int num_banks_log2,*/ int num_pipes_log2, | ||||
|                     int pipe_interleave_log2, int meta_alignment, int dim_type, int x_mip_org, int y_mip_org, | ||||
|                     int z_mip_org, int num_ses_log2, int num_rbs_log2, /*bool se_affinity_enable,*/ int data_type, | ||||
|                     int l2_metablk_w, int l2_metablk_h, int l2_metablk_d, bool meta_linear); | ||||
|  | ||||
|     void Initialize(void); | ||||
|  | ||||
| public: | ||||
|     enum XOR_RANGE { | ||||
|         NONE = 0, | ||||
|         XOR = 1, | ||||
|         PRT = 2 | ||||
|     }; | ||||
|  | ||||
|  | ||||
|     enum DATA_TYPE_ENUM { | ||||
|         DATA_COLOR1D, | ||||
|         DATA_COLOR2D, | ||||
|         DATA_COLOR3D_S, | ||||
|         DATA_COLOR3D_Z, | ||||
|         DATA_Z_STENCIL, | ||||
|         DATA_FMASK, | ||||
|         DATA_COLOR2D_LINEAR, | ||||
|         DATA_COLOR3D_D_NOT_USED  // should not be used; use COLOR2D instead | ||||
|     }; | ||||
|  | ||||
|     enum META_ALIGNMENT { | ||||
|         META_ALIGN_NONE, | ||||
|         META_ALIGN_PIPE, | ||||
|         META_ALIGN_RB, | ||||
|         META_ALIGN_PIPE_RB | ||||
|     }; | ||||
|  | ||||
|     CoordEq   rb_equation[MAX_SES_LOG2+1][MAX_RBS_LOG2+1]; | ||||
|     CoordEq   zaddr [4][4]; | ||||
|     CoordEq   caddr [5][4]; | ||||
|     CoordEq   c3addr[5][2]; | ||||
| }; | ||||
|  | ||||
| #endif | ||||
| @@ -27,14 +27,6 @@ | ||||
|  * of the Software. | ||||
|  */ | ||||
|  | ||||
| #include "util/u_endian.h" | ||||
|  | ||||
| #if defined(PIPE_ARCH_LITTLE_ENDIAN) | ||||
| #define LITTLEENDIAN_CPU | ||||
| #elif defined(PIPE_ARCH_BIG_ENDIAN) | ||||
| #define BIGENDIAN_CPU | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Make sure the necessary endian defines are there. | ||||
| // | ||||
|   | ||||
| @@ -27,14 +27,6 @@ | ||||
|  * of the Software. | ||||
|  */ | ||||
|  | ||||
| #include "util/u_endian.h" | ||||
|  | ||||
| #if defined(PIPE_ARCH_LITTLE_ENDIAN) | ||||
| #define LITTLEENDIAN_CPU | ||||
| #elif defined(PIPE_ARCH_BIG_ENDIAN) | ||||
| #define BIGENDIAN_CPU | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Make sure the necessary endian defines are there. | ||||
| // | ||||
|   | ||||
							
								
								
									
										129
									
								
								src/amd/addrlib/inc/lnx_common_defs.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								src/amd/addrlib/inc/lnx_common_defs.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,129 @@ | ||||
| /* | ||||
|  * Copyright © 2014 Advanced Micro Devices, Inc. | ||||
|  * All Rights Reserved. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining | ||||
|  * a copy of this software and associated documentation files (the | ||||
|  * "Software"), to deal in the Software without restriction, including | ||||
|  * without limitation the rights to use, copy, modify, merge, publish, | ||||
|  * distribute, sub license, and/or sell copies of the Software, and to | ||||
|  * permit persons to whom the Software is furnished to do so, subject to | ||||
|  * the following conditions: | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||||
|  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS | ||||
|  * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||
|  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | ||||
|  * USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  * | ||||
|  * The above copyright notice and this permission notice (including the | ||||
|  * next paragraph) shall be included in all copies or substantial portions | ||||
|  * of the Software. | ||||
|  */ | ||||
| #ifndef _lnx_common_defs_h_ | ||||
| #define _lnx_common_defs_h_ | ||||
|  | ||||
| #if DBG | ||||
| #include <stdarg.h>                         // We do not have any choice: need variable | ||||
|                                             // number of parameters support for debug | ||||
|                                             // build. | ||||
| #endif                                      // #if DBG | ||||
|  | ||||
| // | ||||
| // --------------  External functions from Linux kernel driver ---------------- | ||||
| // | ||||
| // Note: The definitions/declararions below must match the original ones. | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| typedef unsigned long __ke_size_t;              // as it is defined in firegl_public.h | ||||
| typedef int           __kernel_ptrdiff_t;       // as it is defined in posix_types.h | ||||
|  | ||||
|  | ||||
| #if !defined(ATI_API_CALL) | ||||
| #define ATI_API_CALL __attribute__((regparm(0))) | ||||
| #endif | ||||
|  | ||||
| extern void * ATI_API_CALL __ke_memset(void* s, int c, __ke_size_t count); | ||||
| extern void * ATI_API_CALL __ke_memcpy(void* d, const void* s, __ke_size_t count); | ||||
| extern ATI_API_CALL __ke_size_t __ke_strlen(const char *s); | ||||
| extern char* ATI_API_CALL __ke_strcpy(char* d, const char* s); | ||||
| extern char* ATI_API_CALL __ke_strncpy(char* d, const char* s, __ke_size_t count); | ||||
| extern void __ke_printk(const char* fmt, ...); | ||||
|  | ||||
| extern int ATI_API_CALL __ke_snprintf(char* buf, __ke_size_t size, const char* fmt, ...); | ||||
| extern int ATI_API_CALL KCL_CopyFromUserSpace(void* to, const void* from, __ke_size_t size); | ||||
| extern int ATI_API_CALL KCL_CopyToUserSpace(void* to, const void* from, __ke_size_t size); | ||||
| #define __ke_copy_from_user  KCL_CopyFromUserSpace | ||||
| #define __ke_copy_to_user    KCL_CopyToUserSpace | ||||
| extern int ATI_API_CALL __ke_verify_area(int type, const void * addr, unsigned long size); | ||||
|  | ||||
| extern unsigned long ATI_API_CALL KAS_GetTickCounter(void); | ||||
| extern unsigned long ATI_API_CALL KAS_GetTicksPerSecond(void); | ||||
|  | ||||
|  | ||||
| #if DBG | ||||
| extern int ATI_API_CALL __ke_vsnprintf(char *buf, __ke_size_t size, const char *fmt, va_list ap); | ||||
| #define vsnprintf(_dst, _size, _fmt, varg)  __ke_snprintf(_dst, _size, _fmt, varg) | ||||
| #endif                                      // #if DBG | ||||
|  | ||||
|  | ||||
| // Note: This function is not defined in firegl_public.h. | ||||
| void    firegl_hardwareHangRecovery(void); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // --------------------------  C/C++ standard typedefs ---------------------------- | ||||
| // | ||||
| #ifdef __SIZE_TYPE__ | ||||
| typedef __SIZE_TYPE__       size_t; | ||||
| #else                                       // #ifdef __SIZE_TYPE__ | ||||
| typedef unsigned int        size_t; | ||||
| #endif                                      // #ifdef __SIZE_TYPE__ | ||||
|  | ||||
| #ifdef __PTRDIFF_TYPE__ | ||||
| typedef __PTRDIFF_TYPE__    ptrdiff_t; | ||||
| #else                                       // #ifdef __PTRDIFF_TYPE__ | ||||
| typedef int                 ptrdiff_t; | ||||
| #endif                                      // #ifdef __PTRDIFF_TYPE__ | ||||
|  | ||||
| #ifndef NULL | ||||
| #ifdef __cplusplus | ||||
| #define NULL    __null | ||||
| #else | ||||
| #define NULL    ((void *)0) | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
|  | ||||
| // | ||||
| // -------------------------  C/C++ standard macros --------------------------- | ||||
| // | ||||
|  | ||||
| #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)  // as it is defined in stddef.h | ||||
| #define CHAR_BIT            8                                   // as it is defined in limits.h | ||||
|  | ||||
| // | ||||
| // ---------------------------------  C RTL ----------------------------------- | ||||
| // | ||||
|  | ||||
| #define memset(_p, _v, _n)                  __ke_memset(_p, _v, _n) | ||||
| #define memcpy(_d, _s, _n)                  __ke_memcpy(_d, _s, _n) | ||||
| #define strlen(_s)                          __ke_strlen(_s) | ||||
| #define strcpy(_d, _s)                      __ke_strcpy(_d, _s) | ||||
| #define strncpy(_d, _s, _n)                 __ke_strncpy(_d, _s, _n) | ||||
| // Note: C99 supports macros with variable number of arguments. GCC also supports this C99 feature as | ||||
| //       C++ extension. | ||||
| #define snprintf(_dst, _size, _fmt, arg...) __ke_snprintf(_dst, _size, _fmt, ##arg) | ||||
|  | ||||
|  | ||||
| #endif                                      // #ifdef _lnx_common_defs_h_ | ||||
|  | ||||
| @@ -38,9 +38,11 @@ files_addrlib = files( | ||||
|   'gfx9/coord.h', | ||||
|   'gfx9/gfx9addrlib.cpp', | ||||
|   'gfx9/gfx9addrlib.h', | ||||
|   'amdgpu_asic_addr.h', | ||||
|   'gfx9/rbmap.cpp', | ||||
|   'gfx9/rbmap.h', | ||||
|   'inc/chip/gfx9/gfx9_gb_reg.h', | ||||
|   'inc/chip/r800/si_gb_reg.h', | ||||
|   'inc/lnx_common_defs.h', | ||||
|   'r800/chip/si_ci_vi_merged_enum.h', | ||||
|   'r800/ciaddrlib.cpp', | ||||
|   'r800/ciaddrlib.h', | ||||
| @@ -53,11 +55,9 @@ files_addrlib = files( | ||||
| libamdgpu_addrlib = static_library( | ||||
|   'addrlib', | ||||
|   files_addrlib, | ||||
|   include_directories : [ | ||||
|     include_directories( | ||||
|       'core', 'inc/chip/gfx9', 'inc/chip/r800', 'gfx9/chip', 'r800/chip', | ||||
|     ), | ||||
|     inc_amd_common, inc_src, | ||||
|   ], | ||||
|   cpp_args : cpp_vis_args, | ||||
|   include_directories : include_directories( | ||||
|     'core', 'inc/chip/gfx9', 'inc/chip/r800', 'gfx9/chip', 'r800/chip', | ||||
|     '../common', '../../'), | ||||
|   cpp_args : [cpp_vis_args, '-DBRAHMA_BUILD=1'], | ||||
|   build_by_default : false, | ||||
| ) | ||||
|   | ||||
| @@ -35,7 +35,15 @@ | ||||
|  | ||||
| #include "si_gb_reg.h" | ||||
|  | ||||
| #include "amdgpu_asic_addr.h" | ||||
| #include "si_ci_vi_merged_enum.h" | ||||
|  | ||||
| #if BRAHMA_BUILD | ||||
| #include "amdgpu_id.h" | ||||
| #else | ||||
| #include "ci_id.h" | ||||
| #include "kv_id.h" | ||||
| #include "vi_id.h" | ||||
| #endif | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
| //////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
| @@ -180,6 +188,7 @@ CiLib::CiLib(const Client* pClient) | ||||
|     m_allowNonDispThickModes(FALSE) | ||||
| { | ||||
|     m_class = CI_ADDRLIB; | ||||
|     memset(&m_settings, 0, sizeof(m_settings)); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -441,6 +450,7 @@ BOOL_32 CiLib::HwlInitGlobalParams( | ||||
|     // read the correct pipes from tile mode table | ||||
|     if (m_settings.isHawaii) | ||||
|     { | ||||
|         // Hawaii has 16-pipe, see GFXIP_Config_Summary.xls | ||||
|         m_pipes = 16; | ||||
|     } | ||||
|     else if (m_settings.isBonaire || m_settings.isSpectre) | ||||
| @@ -590,9 +600,9 @@ INT_32 CiLib::HwlPostCheckTileIndex( | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| ADDR_E_RETURNCODE CiLib::HwlSetupTileCfg( | ||||
|     UINT_32         bpp,            ///< Bits per pixel | ||||
|     INT_32          index,          ///< Tile index | ||||
|     INT_32          macroModeIndex, ///< Index in macro tile mode table(CI) | ||||
|     UINT_32         bpp,            ///< [in] Bits per pixel | ||||
|     INT_32          index,          ///< [in] Tile index | ||||
|     INT_32          macroModeIndex, ///< [in] Index in macro tile mode table(CI) | ||||
|     ADDR_TILEINFO*  pInfo,          ///< [out] Tile Info | ||||
|     AddrTileMode*   pMode,          ///< [out] Tile mode | ||||
|     AddrTileType*   pType           ///< [out] Tile type | ||||
| @@ -701,12 +711,13 @@ ADDR_E_RETURNCODE CiLib::HwlComputeSurfaceInfo( | ||||
|  | ||||
|     ADDR_E_RETURNCODE retCode = SiLib::HwlComputeSurfaceInfo(pIn, pOut); | ||||
|  | ||||
|  | ||||
|     if ((pIn->mipLevel > 0) && | ||||
|         (pOut->tcCompatible == TRUE) && | ||||
|         (pOut->tileMode != pIn->tileMode) && | ||||
|         (m_settings.isVolcanicIslands == TRUE)) | ||||
|     { | ||||
|         pOut->tcCompatible = CheckTcCompatibility(pOut->pTileInfo, pIn->bpp, pOut->tileMode, pOut->tileType, pOut); | ||||
|         CheckTcCompatibility(pOut->pTileInfo, pIn->bpp, pOut->tileMode, pOut->tileType, pOut); | ||||
|     } | ||||
|  | ||||
|     if (pOut->macroModeIndex == TileIndexNoMacroIndex) | ||||
| @@ -1561,7 +1572,7 @@ VOID CiLib::HwlSetupTileInfo( | ||||
|  | ||||
|     if (flags.tcCompatible) | ||||
|     { | ||||
|         flags.tcCompatible = CheckTcCompatibility(pTileInfo, bpp, tileMode, inTileType, pOut); | ||||
|         CheckTcCompatibility(pTileInfo, bpp, tileMode, inTileType, pOut); | ||||
|     } | ||||
|  | ||||
|     pOut->tcCompatible = flags.tcCompatible; | ||||
| @@ -2260,21 +2271,19 @@ BOOL_32 CiLib::DepthStencilTileCfgMatch( | ||||
| *   CiLib::DepthStencilTileCfgMatch | ||||
| * | ||||
| *   @brief | ||||
| *       Check if tc compatibility is available | ||||
| *       Turn off TcCompatible if requirement is not met | ||||
| *   @return | ||||
| *       If tc compatibility is not available | ||||
| *       N/A | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| BOOL_32 CiLib::CheckTcCompatibility( | ||||
|     const ADDR_TILEINFO*                    pTileInfo,    ///< [in] input tile info | ||||
|     UINT_32                                 bpp,          ///< [in] Bits per pixel | ||||
|     AddrTileMode                            tileMode,     ///< [in] input tile mode | ||||
|     AddrTileType                            tileType,     ///< [in] input tile type | ||||
|     const ADDR_COMPUTE_SURFACE_INFO_OUTPUT* pOut          ///< [in] output surf info | ||||
| VOID CiLib::CheckTcCompatibility( | ||||
|     const ADDR_TILEINFO*              pTileInfo,    ///< [in] input tile info | ||||
|     UINT_32                           bpp,          ///< [in] Bits per pixel | ||||
|     AddrTileMode                      tileMode,     ///< [in] input tile mode | ||||
|     AddrTileType                      tileType,     ///< [in] input tile type | ||||
|     ADDR_COMPUTE_SURFACE_INFO_OUTPUT* pOut          ///< [out] out structure | ||||
|     ) const | ||||
| { | ||||
|     BOOL_32 tcCompatible = TRUE; | ||||
|  | ||||
|     if (IsMacroTiled(tileMode)) | ||||
|     { | ||||
|         if (tileType != ADDR_DEPTH_SAMPLE_ORDER) | ||||
| @@ -2300,7 +2309,7 @@ BOOL_32 CiLib::CheckTcCompatibility( | ||||
|  | ||||
|                 if (m_rowSize < colorTileSplit) | ||||
|                 { | ||||
|                     tcCompatible = FALSE; | ||||
|                     pOut->tcCompatible = FALSE; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| @@ -2308,10 +2317,8 @@ BOOL_32 CiLib::CheckTcCompatibility( | ||||
|     else | ||||
|     { | ||||
|         // Client should not enable tc compatible for linear and 1D tile modes. | ||||
|         tcCompatible = FALSE; | ||||
|         pOut->tcCompatible = FALSE; | ||||
|     } | ||||
|  | ||||
|     return tcCompatible; | ||||
| } | ||||
|  | ||||
| } // V1 | ||||
|   | ||||
| @@ -42,6 +42,37 @@ namespace Addr | ||||
| namespace V1 | ||||
| { | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief CI specific settings structure. | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| struct CIChipSettings | ||||
| { | ||||
|     struct | ||||
|     { | ||||
|         UINT_32 isSeaIsland : 1; | ||||
|         UINT_32 isBonaire   : 1; | ||||
|         UINT_32 isKaveri    : 1; | ||||
|         UINT_32 isSpectre   : 1; | ||||
|         UINT_32 isSpooky    : 1; | ||||
|         UINT_32 isKalindi   : 1; | ||||
|         // Hawaii is GFXIP 7.2 | ||||
|         UINT_32 isHawaii    : 1; | ||||
|  | ||||
|         // VI | ||||
|         UINT_32 isVolcanicIslands : 1; | ||||
|         UINT_32 isIceland         : 1; | ||||
|         UINT_32 isTonga           : 1; | ||||
|         UINT_32 isFiji            : 1; | ||||
|         UINT_32 isPolaris10       : 1; | ||||
|         UINT_32 isPolaris11       : 1; | ||||
|         UINT_32 isPolaris12       : 1; | ||||
|         // VI fusion (Carrizo) | ||||
|         UINT_32 isCarrizo         : 1; | ||||
|     }; | ||||
| }; | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| * @brief This class is the CI specific address library | ||||
| @@ -177,8 +208,9 @@ private: | ||||
|         const ADDR_COMPUTE_SURFACE_INFO_INPUT*  pIn, | ||||
|         ADDR_COMPUTE_SURFACE_INFO_OUTPUT*       pOut) const; | ||||
|  | ||||
|     BOOL_32 CheckTcCompatibility(const ADDR_TILEINFO* pTileInfo, UINT_32 bpp, AddrTileMode tileMode, | ||||
|                                  AddrTileType tileType, const ADDR_COMPUTE_SURFACE_INFO_OUTPUT* pOut) const; | ||||
|     VOID CheckTcCompatibility( | ||||
|         const ADDR_TILEINFO* pTileInfo, UINT_32 bpp, AddrTileMode tileMode, | ||||
|          AddrTileType tileType, ADDR_COMPUTE_SURFACE_INFO_OUTPUT* pOut) const; | ||||
|  | ||||
|     static const UINT_32    MacroTileTableSize = 16; | ||||
|     static const UINT_32    PrtMacroModeOffset = MacroTileTableSize / 2; | ||||
| @@ -189,6 +221,8 @@ private: | ||||
|     ADDR_TILEINFO           m_macroTileTable[MacroTileTableSize]; | ||||
|     UINT_32                 m_noOfMacroEntries; | ||||
|     BOOL_32                 m_allowNonDispThickModes; | ||||
|  | ||||
|     CIChipSettings          m_settings; | ||||
| }; | ||||
|  | ||||
| } // V1 | ||||
|   | ||||
| @@ -739,12 +739,13 @@ BOOL_32 EgBasedLib::ComputeSurfaceAlignmentsMicroTiled( | ||||
|  | ||||
|     AdjustPitchAlignment(flags, pPitchAlign); | ||||
|  | ||||
|     // Workaround 2 for 1D tiling -  There is HW bug for Carrizo, | ||||
|     // ECR#393489 | ||||
|     // Workaround 2 for 1D tiling -  There is HW bug for Carrizo | ||||
|     // where it requires the following alignments for 1D tiling. | ||||
|     if (flags.czDispCompatible && (mipLevel == 0)) | ||||
|     { | ||||
|         *pBaseAlign  = PowTwoAlign(*pBaseAlign, 4096);                         //Base address MOD 4096 = 0 | ||||
|         *pPitchAlign = PowTwoAlign(*pPitchAlign, 512 / (BITS_TO_BYTES(bpp)));  //(8 lines * pitch * bytes per pixel) MOD 4096 = 0 | ||||
|         *pPitchAlign = PowTwoAlign(*pPitchAlign, 512 / (BITS_TO_BYTES(bpp))); //(8 lines * pitch * bytes per pixel) MOD 4096 = 0 | ||||
|     } | ||||
|     // end Carrizo workaround for 1D tilling | ||||
|  | ||||
| @@ -1090,8 +1091,6 @@ AddrTileMode EgBasedLib::ComputeSurfaceMipLevelTileMode( | ||||
|     ADDR_TILEINFO*      pTileInfo       ///< [in] ptr to bank structure | ||||
|     ) const | ||||
| { | ||||
|     UINT_64 bytesPerSlice; | ||||
|     (void)bytesPerSlice; | ||||
|     UINT_32 bytesPerTile; | ||||
|  | ||||
|     AddrTileMode expTileMode = baseTileMode; | ||||
| @@ -1101,7 +1100,6 @@ AddrTileMode EgBasedLib::ComputeSurfaceMipLevelTileMode( | ||||
|     // | ||||
|     // Compute the size of a slice. | ||||
|     // | ||||
|     bytesPerSlice = BITS_TO_BYTES(static_cast<UINT_64>(pitch) * height * bpp * numSamples); | ||||
|     bytesPerTile = BITS_TO_BYTES(MicroTilePixels * microTileThickness * NextPow2(bpp) * numSamples); | ||||
|  | ||||
|     // | ||||
| @@ -1331,6 +1329,12 @@ UINT_64 EgBasedLib::DispatchComputeSurfaceAddrFromCoord( | ||||
|     UINT_32*            pBitPosition       = &pOut->bitPosition; | ||||
|     UINT_64             addr; | ||||
|  | ||||
| #if ADDR_AM_BUILD | ||||
|     UINT_32             addr5Bit           = 0; | ||||
|     UINT_32             addr5Swizzle       = pIn->addr5Swizzle; | ||||
|     BOOL_32             is32ByteTile       = pIn->is32ByteTile; | ||||
| #endif | ||||
|  | ||||
|     // ADDR_DEPTH_SAMPLE_ORDER = non-disp + depth-sample-order | ||||
|     if (microTileType == ADDR_DEPTH_SAMPLE_ORDER) | ||||
|     { | ||||
| @@ -1435,6 +1439,23 @@ UINT_64 EgBasedLib::DispatchComputeSurfaceAddrFromCoord( | ||||
|             break; | ||||
|     } | ||||
|  | ||||
| #if ADDR_AM_BUILD | ||||
|     if (m_chipFamily >= ADDR_CHIP_FAMILY_NI) | ||||
|     { | ||||
|         if (addr5Swizzle && isDepthSampleOrder && is32ByteTile) | ||||
|         { | ||||
|             UINT_32 tx = x >> 3; | ||||
|             UINT_32 ty = y >> 3; | ||||
|             UINT_32 tileBits = ((ty&0x3) << 2) | (tx&0x3); | ||||
|  | ||||
|             tileBits = tileBits & addr5Swizzle; | ||||
|             addr5Bit = XorReduce(tileBits, 4); | ||||
|  | ||||
|             addr = addr | static_cast<UINT_64>(addr5Bit << 5); | ||||
|         } | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|     return addr; | ||||
| } | ||||
|  | ||||
| @@ -2730,8 +2751,6 @@ ADDR_E_RETURNCODE EgBasedLib::HwlComputeBaseSwizzle( | ||||
|         { 0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9 }, // ADDR_SURF_16_BANK | ||||
|     }; | ||||
|  | ||||
|     UINT_32 pipes = HwlGetPipes(pTileInfo); | ||||
|     (void)pipes; | ||||
|     UINT_32 banks = pTileInfo ? pTileInfo->banks : 2; | ||||
|     UINT_32 hwNumBanks; | ||||
|  | ||||
| @@ -3360,6 +3379,20 @@ ADDR_E_RETURNCODE EgBasedLib::HwlComputeFmaskAddrFromCoord( | ||||
| { | ||||
|     ADDR_E_RETURNCODE retCode = ADDR_OK; | ||||
|  | ||||
| #if ADDR_AM_BUILD | ||||
|     if ((pIn->x > pIn->pitch)               || | ||||
|         (pIn->y > pIn->height)              || | ||||
|         (pIn->numSamples > m_maxSamples)    || | ||||
|         (pIn->sample >= m_maxSamples)) | ||||
|     { | ||||
|         retCode = ADDR_INVALIDPARAMS; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         pOut->addr = DispatchComputeFmaskAddrFromCoord(pIn, pOut); | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|     return retCode; | ||||
| } | ||||
|  | ||||
| @@ -3379,9 +3412,618 @@ ADDR_E_RETURNCODE EgBasedLib::HwlComputeFmaskCoordFromAddr( | ||||
| { | ||||
|     ADDR_E_RETURNCODE retCode = ADDR_OK; | ||||
|  | ||||
| #if ADDR_AM_BUILD | ||||
|     if ((pIn->bitPosition >= 8) || | ||||
|         (pIn->numSamples > m_maxSamples)) | ||||
|     { | ||||
|         retCode = ADDR_INVALIDPARAMS; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         DispatchComputeFmaskCoordFromAddr(pIn, pOut); | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|     return retCode; | ||||
| } | ||||
|  | ||||
| #if ADDR_AM_BUILD | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   EgBasedLib::DispatchComputeFmaskAddrFromCoord | ||||
| * | ||||
| *   @brief | ||||
| *       Computes the FMASK address and bit position from a coordinate. | ||||
| *   @return | ||||
| *       The byte address | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| UINT_64 EgBasedLib::DispatchComputeFmaskAddrFromCoord( | ||||
|     const ADDR_COMPUTE_FMASK_ADDRFROMCOORD_INPUT*   pIn,    ///< [in] input structure | ||||
|     ADDR_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT*        pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     UINT_32             x                 = pIn->x; | ||||
|     UINT_32             y                 = pIn->y; | ||||
|     UINT_32             slice             = pIn->slice; | ||||
|     UINT_32             sample            = pIn->sample; | ||||
|     UINT_32             plane             = pIn->plane; | ||||
|     UINT_32             pitch             = pIn->pitch; | ||||
|     UINT_32             height            = pIn->height; | ||||
|     UINT_32             numSamples        = pIn->numSamples; | ||||
|     AddrTileMode        tileMode          = pIn->tileMode; | ||||
|     BOOL_32             ignoreSE          = pIn->ignoreSE; | ||||
|     ADDR_TILEINFO*      pTileInfo         = pIn->pTileInfo; | ||||
|     BOOL_32             resolved          = pIn->resolved; | ||||
|  | ||||
|     UINT_32* pBitPosition = &pOut->bitPosition; | ||||
|     UINT_64 addr          = 0; | ||||
|  | ||||
|     ADDR_ASSERT(numSamples > 1); | ||||
|     ADDR_ASSERT(Thickness(tileMode) == 1); | ||||
|  | ||||
|     switch (tileMode) | ||||
|     { | ||||
|         case ADDR_TM_1D_TILED_THIN1: | ||||
|             addr = ComputeFmaskAddrFromCoordMicroTiled(x, | ||||
|                                                        y, | ||||
|                                                        slice, | ||||
|                                                        sample, | ||||
|                                                        plane, | ||||
|                                                        pitch, | ||||
|                                                        height, | ||||
|                                                        numSamples, | ||||
|                                                        tileMode, | ||||
|                                                        resolved, | ||||
|                                                        pBitPosition); | ||||
|             break; | ||||
|         case ADDR_TM_2D_TILED_THIN1: //fall through | ||||
|         case ADDR_TM_3D_TILED_THIN1: | ||||
|             UINT_32 pipeSwizzle; | ||||
|             UINT_32 bankSwizzle; | ||||
|  | ||||
|             if (m_configFlags.useCombinedSwizzle) | ||||
|             { | ||||
|                 ExtractBankPipeSwizzle(pIn->tileSwizzle, pIn->pTileInfo, | ||||
|                                        &bankSwizzle, &pipeSwizzle); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 pipeSwizzle = pIn->pipeSwizzle; | ||||
|                 bankSwizzle = pIn->bankSwizzle; | ||||
|             } | ||||
|  | ||||
|             addr = ComputeFmaskAddrFromCoordMacroTiled(x, | ||||
|                                                        y, | ||||
|                                                        slice, | ||||
|                                                        sample, | ||||
|                                                        plane, | ||||
|                                                        pitch, | ||||
|                                                        height, | ||||
|                                                        numSamples, | ||||
|                                                        tileMode, | ||||
|                                                        pipeSwizzle, | ||||
|                                                        bankSwizzle, | ||||
|                                                        ignoreSE, | ||||
|                                                        pTileInfo, | ||||
|                                                        resolved, | ||||
|                                                        pBitPosition); | ||||
|             break; | ||||
|         default: | ||||
|             *pBitPosition = 0; | ||||
|             break; | ||||
|     } | ||||
|  | ||||
|     return addr; | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   EgBasedLib::ComputeFmaskAddrFromCoordMicroTiled | ||||
| * | ||||
| *   @brief | ||||
| *       Computes the FMASK address and bit position from a coordinate for 1D tilied (micro | ||||
| *       tiled) | ||||
| *   @return | ||||
| *       The byte address | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| UINT_64 EgBasedLib::ComputeFmaskAddrFromCoordMicroTiled( | ||||
|     UINT_32             x,              ///< [in] x coordinate | ||||
|     UINT_32             y,              ///< [in] y coordinate | ||||
|     UINT_32             slice,          ///< [in] slice index | ||||
|     UINT_32             sample,         ///< [in] sample number | ||||
|     UINT_32             plane,          ///< [in] plane number | ||||
|     UINT_32             pitch,          ///< [in] surface pitch in pixels | ||||
|     UINT_32             height,         ///< [in] surface height in pixels | ||||
|     UINT_32             numSamples,     ///< [in] number of samples | ||||
|     AddrTileMode        tileMode,       ///< [in] tile mode | ||||
|     BOOL_32             resolved,       ///< [in] TRUE if this is for resolved fmask | ||||
|     UINT_32*            pBitPosition    ///< [out] pointer to returned bit position | ||||
|     ) const | ||||
| { | ||||
|     UINT_64 addr = 0; | ||||
|     UINT_32 effectiveBpp; | ||||
|     UINT_32 effectiveSamples; | ||||
|  | ||||
|     // | ||||
|     // 2xAA use the same layout as 4xAA | ||||
|     // | ||||
|     if (numSamples == 2) | ||||
|     { | ||||
|         numSamples = 4; | ||||
|     } | ||||
|  | ||||
|     // | ||||
|     // Compute the number of planes. | ||||
|     // | ||||
|     if (resolved == FALSE) | ||||
|     { | ||||
|         effectiveSamples = ComputeFmaskNumPlanesFromNumSamples(numSamples); | ||||
|         effectiveBpp = numSamples; | ||||
|  | ||||
|         // | ||||
|         // Compute the address just like a color surface with numSamples bits per element and | ||||
|         // numPlanes samples. | ||||
|         // | ||||
|         addr = ComputeSurfaceAddrFromCoordMicroTiled(x, | ||||
|                                                      y, | ||||
|                                                      slice, | ||||
|                                                      plane, // sample | ||||
|                                                      effectiveBpp, | ||||
|                                                      pitch, | ||||
|                                                      height, | ||||
|                                                      effectiveSamples, | ||||
|                                                      tileMode, | ||||
|                                                      ADDR_NON_DISPLAYABLE, | ||||
|                                                      FALSE, | ||||
|                                                      pBitPosition); | ||||
|  | ||||
|         // | ||||
|         // Compute the real bit position. Each (sample, plane) is stored with one bit per sample. | ||||
|         // | ||||
|  | ||||
|         // | ||||
|         // Compute the pixel index with in the micro tile | ||||
|         // | ||||
|         UINT_32 pixelIndex = ComputePixelIndexWithinMicroTile(x % 8, | ||||
|                                                               y % 8, | ||||
|                                                               slice, | ||||
|                                                               1, | ||||
|                                                               tileMode, | ||||
|                                                               ADDR_NON_DISPLAYABLE); | ||||
|  | ||||
|         *pBitPosition = ((pixelIndex * numSamples) + sample) & (BITS_PER_BYTE-1); | ||||
|  | ||||
|         UINT_64 bitAddr = BYTES_TO_BITS(addr) + *pBitPosition; | ||||
|  | ||||
|         addr = bitAddr / 8; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         effectiveBpp = ComputeFmaskResolvedBppFromNumSamples(numSamples); | ||||
|         effectiveSamples = 1; | ||||
|  | ||||
|         // | ||||
|         // Compute the address just like a color surface with numSamples bits per element and | ||||
|         // numPlanes samples. | ||||
|         // | ||||
|         addr = ComputeSurfaceAddrFromCoordMicroTiled(x, | ||||
|                                                      y, | ||||
|                                                      slice, | ||||
|                                                      sample, | ||||
|                                                      effectiveBpp, | ||||
|                                                      pitch, | ||||
|                                                      height, | ||||
|                                                      effectiveSamples, | ||||
|                                                      tileMode, | ||||
|                                                      ADDR_NON_DISPLAYABLE, | ||||
|                                                      TRUE, | ||||
|                                                      pBitPosition); | ||||
|     } | ||||
|  | ||||
|     return addr; | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   EgBasedLib::ComputeFmaskAddrFromCoordMacroTiled | ||||
| * | ||||
| *   @brief | ||||
| *       Computes the FMASK address and bit position from a coordinate for 2D tilied (macro | ||||
| *       tiled) | ||||
| *   @return | ||||
| *       The byte address | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| UINT_64 EgBasedLib::ComputeFmaskAddrFromCoordMacroTiled( | ||||
|     UINT_32             x,              ///< [in] x coordinate | ||||
|     UINT_32             y,              ///< [in] y coordinate | ||||
|     UINT_32             slice,          ///< [in] slice index | ||||
|     UINT_32             sample,         ///< [in] sample number | ||||
|     UINT_32             plane,          ///< [in] plane number | ||||
|     UINT_32             pitch,          ///< [in] surface pitch in pixels | ||||
|     UINT_32             height,         ///< [in] surface height in pixels | ||||
|     UINT_32             numSamples,     ///< [in] number of samples | ||||
|     AddrTileMode        tileMode,       ///< [in] tile mode | ||||
|     UINT_32             pipeSwizzle,    ///< [in] pipe swizzle | ||||
|     UINT_32             bankSwizzle,    ///< [in] bank swizzle | ||||
|     BOOL_32             ignoreSE,       ///< [in] TRUE if ignore shader engine | ||||
|     ADDR_TILEINFO*      pTileInfo,      ///< [in] bank structure.**All fields to be valid on entry** | ||||
|     BOOL_32             resolved,       ///< [in] TRUE if this is for resolved fmask | ||||
|     UINT_32*            pBitPosition    ///< [out] pointer to returned bit position | ||||
|     ) const | ||||
| { | ||||
|     UINT_64 addr = 0; | ||||
|     UINT_32 effectiveBpp; | ||||
|     UINT_32 effectiveSamples; | ||||
|  | ||||
|     // | ||||
|     // 2xAA use the same layout as 4xAA | ||||
|     // | ||||
|     if (numSamples == 2) | ||||
|     { | ||||
|         numSamples = 4; | ||||
|     } | ||||
|  | ||||
|     // | ||||
|     // Compute the number of planes. | ||||
|     // | ||||
|     if (resolved == FALSE) | ||||
|     { | ||||
|         effectiveSamples = ComputeFmaskNumPlanesFromNumSamples(numSamples); | ||||
|         effectiveBpp = numSamples; | ||||
|  | ||||
|         // | ||||
|         // Compute the address just like a color surface with numSamples bits per element and | ||||
|         // numPlanes samples. | ||||
|         // | ||||
|         addr = ComputeSurfaceAddrFromCoordMacroTiled(x, | ||||
|                                                      y, | ||||
|                                                      slice, | ||||
|                                                      plane, // sample | ||||
|                                                      effectiveBpp, | ||||
|                                                      pitch, | ||||
|                                                      height, | ||||
|                                                      effectiveSamples, | ||||
|                                                      tileMode, | ||||
|                                                      ADDR_NON_DISPLAYABLE,// isdisp | ||||
|                                                      ignoreSE,// ignore_shader | ||||
|                                                      FALSE,// depth_sample_order | ||||
|                                                      pipeSwizzle, | ||||
|                                                      bankSwizzle, | ||||
|                                                      pTileInfo, | ||||
|                                                      pBitPosition); | ||||
|  | ||||
|         // | ||||
|         // Compute the real bit position. Each (sample, plane) is stored with one bit per sample. | ||||
|         // | ||||
|  | ||||
|  | ||||
|         // | ||||
|         // Compute the pixel index with in the micro tile | ||||
|         // | ||||
|         UINT_32 pixelIndex = ComputePixelIndexWithinMicroTile(x , | ||||
|                                                               y , | ||||
|                                                               slice, | ||||
|                                                               effectiveBpp, | ||||
|                                                               tileMode, | ||||
|                                                               ADDR_NON_DISPLAYABLE); | ||||
|  | ||||
|         *pBitPosition = ((pixelIndex * numSamples) + sample) & (BITS_PER_BYTE-1); | ||||
|  | ||||
|         UINT_64 bitAddr = BYTES_TO_BITS(addr) + *pBitPosition; | ||||
|  | ||||
|         addr = bitAddr / 8; | ||||
|  | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         effectiveBpp = ComputeFmaskResolvedBppFromNumSamples(numSamples); | ||||
|         effectiveSamples = 1; | ||||
|  | ||||
|         // | ||||
|         // Compute the address just like a color surface with numSamples bits per element and | ||||
|         // numPlanes samples. | ||||
|         // | ||||
|         addr = ComputeSurfaceAddrFromCoordMacroTiled(x, | ||||
|                                                      y, | ||||
|                                                      slice, | ||||
|                                                      sample, | ||||
|                                                      effectiveBpp, | ||||
|                                                      pitch, | ||||
|                                                      height, | ||||
|                                                      effectiveSamples, | ||||
|                                                      tileMode, | ||||
|                                                      ADDR_NON_DISPLAYABLE, | ||||
|                                                      ignoreSE, | ||||
|                                                      TRUE, | ||||
|                                                      pipeSwizzle, | ||||
|                                                      bankSwizzle, | ||||
|                                                      pTileInfo, | ||||
|                                                      pBitPosition); | ||||
|     } | ||||
|  | ||||
|     return addr; | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   EgBasedLib::ComputeFmaskCoordFromAddrMicroTiled | ||||
| * | ||||
| *   @brief | ||||
| *       Compute (x,y,slice,sample,plane) coordinates from fmask address | ||||
| *   @return | ||||
| *       N/A | ||||
| * | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| VOID EgBasedLib::ComputeFmaskCoordFromAddrMicroTiled( | ||||
|     UINT_64             addr,       ///< [in] byte address | ||||
|     UINT_32             bitPosition,///< [in] bit position | ||||
|     UINT_32             pitch,      ///< [in] pitch in pixels | ||||
|     UINT_32             height,     ///< [in] height in pixels | ||||
|     UINT_32             numSamples, ///< [in] number of samples (of color buffer) | ||||
|     AddrTileMode        tileMode,   ///< [in] tile mode | ||||
|     BOOL_32             resolved,   ///< [in] TRUE if it is resolved fmask | ||||
|     UINT_32*            pX,         ///< [out] X coord | ||||
|     UINT_32*            pY,         ///< [out] Y coord | ||||
|     UINT_32*            pSlice,     ///< [out] slice index | ||||
|     UINT_32*            pSample,    ///< [out] sample index | ||||
|     UINT_32*            pPlane      ///< [out] plane index | ||||
|     ) const | ||||
| { | ||||
|     UINT_32 effectiveBpp; | ||||
|     UINT_32 effectiveSamples; | ||||
|  | ||||
|     // 2xAA use the same layout as 4xAA | ||||
|     if (numSamples == 2) | ||||
|     { | ||||
|         numSamples = 4; | ||||
|     } | ||||
|  | ||||
|     if (resolved == FALSE) | ||||
|     { | ||||
|         effectiveSamples = ComputeFmaskNumPlanesFromNumSamples(numSamples); | ||||
|         effectiveBpp  = numSamples; | ||||
|  | ||||
|         ComputeSurfaceCoordFromAddrMicroTiled(addr, | ||||
|                                               bitPosition, | ||||
|                                               effectiveBpp, | ||||
|                                               pitch, | ||||
|                                               height, | ||||
|                                               effectiveSamples, | ||||
|                                               tileMode, | ||||
|                                               0, // tileBase | ||||
|                                               0, // compBits | ||||
|                                               pX, | ||||
|                                               pY, | ||||
|                                               pSlice, | ||||
|                                               pPlane, | ||||
|                                               ADDR_NON_DISPLAYABLE, // microTileType | ||||
|                                               FALSE  // isDepthSampleOrder | ||||
|                                               ); | ||||
|  | ||||
|  | ||||
|         if ( pSample ) | ||||
|         { | ||||
|             *pSample = bitPosition % numSamples; | ||||
|         } | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         effectiveBpp = ComputeFmaskResolvedBppFromNumSamples(numSamples); | ||||
|         effectiveSamples = 1; | ||||
|  | ||||
|         ComputeSurfaceCoordFromAddrMicroTiled(addr, | ||||
|                                               bitPosition, | ||||
|                                               effectiveBpp, | ||||
|                                               pitch, | ||||
|                                               height, | ||||
|                                               effectiveSamples, | ||||
|                                               tileMode, | ||||
|                                               0,     // tileBase | ||||
|                                               0,     // compBits | ||||
|                                               pX, | ||||
|                                               pY, | ||||
|                                               pSlice, | ||||
|                                               pSample, | ||||
|                                               ADDR_NON_DISPLAYABLE, // microTileType | ||||
|                                               TRUE   // isDepthSampleOrder | ||||
|                                               ); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   EgBasedLib::ComputeFmaskCoordFromAddrMacroTiled | ||||
| * | ||||
| *   @brief | ||||
| *       Compute (x,y,slice,sample,plane) coordinates from | ||||
| *       fmask address | ||||
| *   @return | ||||
| *       N/A | ||||
| * | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| VOID EgBasedLib::ComputeFmaskCoordFromAddrMacroTiled( | ||||
|     UINT_64             addr,       ///< [in] byte address | ||||
|     UINT_32             bitPosition,///< [in] bit position | ||||
|     UINT_32             pitch,      ///< [in] pitch in pixels | ||||
|     UINT_32             height,     ///< [in] height in pixels | ||||
|     UINT_32             numSamples, ///< [in] number of samples (of color buffer) | ||||
|     AddrTileMode        tileMode,   ///< [in] tile mode | ||||
|     UINT_32             pipeSwizzle,///< [in] pipe swizzle | ||||
|     UINT_32             bankSwizzle,///< [in] bank swizzle | ||||
|     BOOL_32             ignoreSE,   ///< [in] TRUE if ignore shader engine | ||||
|     ADDR_TILEINFO*      pTileInfo,  ///< [in] bank structure. **All fields to be valid on entry** | ||||
|     BOOL_32             resolved,   ///< [in] TRUE if it is resolved fmask | ||||
|     UINT_32*            pX,         ///< [out] X coord | ||||
|     UINT_32*            pY,         ///< [out] Y coord | ||||
|     UINT_32*            pSlice,     ///< [out] slice index | ||||
|     UINT_32*            pSample,    ///< [out] sample index | ||||
|     UINT_32*            pPlane      ///< [out] plane index | ||||
|     ) const | ||||
| { | ||||
|     UINT_32 effectiveBpp; | ||||
|     UINT_32 effectiveSamples; | ||||
|  | ||||
|     // 2xAA use the same layout as 4xAA | ||||
|     if (numSamples == 2) | ||||
|     { | ||||
|         numSamples = 4; | ||||
|     } | ||||
|  | ||||
|     // | ||||
|     // Compute the number of planes. | ||||
|     // | ||||
|     if (resolved == FALSE) | ||||
|     { | ||||
|         effectiveSamples = ComputeFmaskNumPlanesFromNumSamples(numSamples); | ||||
|         effectiveBpp  = numSamples; | ||||
|  | ||||
|         ComputeSurfaceCoordFromAddrMacroTiled(addr, | ||||
|                                               bitPosition, | ||||
|                                               effectiveBpp, | ||||
|                                               pitch, | ||||
|                                               height, | ||||
|                                               effectiveSamples, | ||||
|                                               tileMode, | ||||
|                                               0, // No tileBase | ||||
|                                               0, // No compBits | ||||
|                                               ADDR_NON_DISPLAYABLE, | ||||
|                                               ignoreSE, | ||||
|                                               FALSE, | ||||
|                                               pipeSwizzle, | ||||
|                                               bankSwizzle, | ||||
|                                               pTileInfo, | ||||
|                                               pX, | ||||
|                                               pY, | ||||
|                                               pSlice, | ||||
|                                               pPlane); | ||||
|  | ||||
|         if (pSample) | ||||
|         { | ||||
|             *pSample = bitPosition % numSamples; | ||||
|         } | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         effectiveBpp = ComputeFmaskResolvedBppFromNumSamples(numSamples); | ||||
|         effectiveSamples = 1; | ||||
|  | ||||
|         ComputeSurfaceCoordFromAddrMacroTiled(addr, | ||||
|                                               bitPosition, | ||||
|                                               effectiveBpp, | ||||
|                                               pitch, | ||||
|                                               height, | ||||
|                                               effectiveSamples, | ||||
|                                               tileMode, | ||||
|                                               0, // No tileBase | ||||
|                                               0, // No compBits | ||||
|                                               ADDR_NON_DISPLAYABLE, | ||||
|                                               ignoreSE, | ||||
|                                               TRUE, | ||||
|                                               pipeSwizzle, | ||||
|                                               bankSwizzle, | ||||
|                                               pTileInfo, | ||||
|                                               pX, | ||||
|                                               pY, | ||||
|                                               pSlice, | ||||
|                                               pSample); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   EgBasedLib::DispatchComputeFmaskCoordFromAddr | ||||
| * | ||||
| *   @brief | ||||
| *       Compute (x,y,slice,sample,plane) coordinates from | ||||
| *       fmask address | ||||
| *   @return | ||||
| *       N/A | ||||
| * | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| VOID EgBasedLib::DispatchComputeFmaskCoordFromAddr( | ||||
|     const ADDR_COMPUTE_FMASK_COORDFROMADDR_INPUT*   pIn,    ///< [in] input structure | ||||
|     ADDR_COMPUTE_FMASK_COORDFROMADDR_OUTPUT*        pOut    ///< [out] output structure | ||||
|     ) const | ||||
| { | ||||
|     UINT_64             addr              = pIn->addr; | ||||
|     UINT_32             bitPosition       = pIn->bitPosition; | ||||
|     UINT_32             pitch             = pIn->pitch; | ||||
|     UINT_32             height            = pIn->height; | ||||
|     UINT_32             numSamples        = pIn->numSamples; | ||||
|     AddrTileMode        tileMode          = pIn->tileMode; | ||||
|     BOOL_32             ignoreSE          = pIn->ignoreSE; | ||||
|     ADDR_TILEINFO*      pTileInfo         = pIn->pTileInfo; | ||||
|     BOOL_32             resolved          = pIn->resolved; | ||||
|  | ||||
|     UINT_32*            pX      = &pOut->x; | ||||
|     UINT_32*            pY      = &pOut->y; | ||||
|     UINT_32*            pSlice  = &pOut->slice; | ||||
|     UINT_32*            pSample = &pOut->sample; | ||||
|     UINT_32*            pPlane  = &pOut->plane; | ||||
|  | ||||
|     switch (tileMode) | ||||
|     { | ||||
|         case ADDR_TM_1D_TILED_THIN1: | ||||
|             ComputeFmaskCoordFromAddrMicroTiled(addr, | ||||
|                                                 bitPosition, | ||||
|                                                 pitch, | ||||
|                                                 height, | ||||
|                                                 numSamples, | ||||
|                                                 tileMode, | ||||
|                                                 resolved, | ||||
|                                                 pX, | ||||
|                                                 pY, | ||||
|                                                 pSlice, | ||||
|                                                 pSample, | ||||
|                                                 pPlane); | ||||
|             break; | ||||
|         case ADDR_TM_2D_TILED_THIN1://fall through | ||||
|         case ADDR_TM_3D_TILED_THIN1: | ||||
|             UINT_32 pipeSwizzle; | ||||
|             UINT_32 bankSwizzle; | ||||
|  | ||||
|             if (m_configFlags.useCombinedSwizzle) | ||||
|             { | ||||
|                 ExtractBankPipeSwizzle(pIn->tileSwizzle, pIn->pTileInfo, | ||||
|                                        &bankSwizzle, &pipeSwizzle); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 pipeSwizzle = pIn->pipeSwizzle; | ||||
|                 bankSwizzle = pIn->bankSwizzle; | ||||
|             } | ||||
|  | ||||
|             ComputeFmaskCoordFromAddrMacroTiled(addr, | ||||
|                                                 bitPosition, | ||||
|                                                 pitch, | ||||
|                                                 height, | ||||
|                                                 numSamples, | ||||
|                                                 tileMode, | ||||
|                                                 pipeSwizzle, | ||||
|                                                 bankSwizzle, | ||||
|                                                 ignoreSE, | ||||
|                                                 pTileInfo, | ||||
|                                                 resolved, | ||||
|                                                 pX, | ||||
|                                                 pY, | ||||
|                                                 pSlice, | ||||
|                                                 pSample, | ||||
|                                                 pPlane); | ||||
|             break; | ||||
|         default: | ||||
|             ADDR_ASSERT_ALWAYS(); | ||||
|             break; | ||||
|  | ||||
|     } | ||||
| } | ||||
| #endif | ||||
|  | ||||
| /** | ||||
| **************************************************************************************************** | ||||
| *   EgBasedLib::ComputeFmaskNumPlanesFromNumSamples | ||||
|   | ||||
| @@ -32,9 +32,16 @@ | ||||
| */ | ||||
|  | ||||
| #include "siaddrlib.h" | ||||
|  | ||||
| #include "si_gb_reg.h" | ||||
|  | ||||
| #include "amdgpu_asic_addr.h" | ||||
| #include "si_ci_vi_merged_enum.h" | ||||
|  | ||||
| #if BRAHMA_BUILD | ||||
| #include "amdgpu_id.h" | ||||
| #else | ||||
| #include "si_id.h" | ||||
| #endif | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
| //////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
| @@ -2657,8 +2664,7 @@ ADDR_E_RETURNCODE SiLib::HwlComputeSurfaceInfo( | ||||
|  | ||||
|         if ((pIn->numSlices > 1) && | ||||
|             (IsMacroTiled(pOut->tileMode) == TRUE) && | ||||
|             ((m_chipFamily == ADDR_CHIP_FAMILY_SI) || | ||||
|              (IsPrtTileMode(pOut->tileMode) == FALSE))) | ||||
|             (m_chipFamily == ADDR_CHIP_FAMILY_SI)) | ||||
|         { | ||||
|             pOut->equationIndex = ADDR_INVALID_EQUATION_INDEX; | ||||
|         } | ||||
| @@ -2816,8 +2822,8 @@ VOID SiLib::HwlCheckLastMacroTiledLvl( | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| AddrTileMode SiLib::HwlDegradeThickTileMode( | ||||
|     AddrTileMode        baseTileMode,   ///< base tile mode | ||||
|     UINT_32             numSlices,      ///< current number of slices | ||||
|     AddrTileMode        baseTileMode,   ///< [in] base tile mode | ||||
|     UINT_32             numSlices,      ///< [in] current number of slices | ||||
|     UINT_32*            pBytesPerTile   ///< [in,out] pointer to bytes per slice | ||||
|     ) const | ||||
| { | ||||
| @@ -2957,9 +2963,9 @@ INT_32 SiLib::HwlPostCheckTileIndex( | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| ADDR_E_RETURNCODE SiLib::HwlSetupTileCfg( | ||||
|     UINT_32         bpp,            ///< Bits per pixel | ||||
|     INT_32          index,          ///< Tile index | ||||
|     INT_32          macroModeIndex, ///< Index in macro tile mode table(CI) | ||||
|     UINT_32         bpp,            ///< [in] Bits per pixel | ||||
|     INT_32          index,          ///< [in] Tile index | ||||
|     INT_32          macroModeIndex, ///< [in] Index in macro tile mode table(CI) | ||||
|     ADDR_TILEINFO*  pInfo,          ///< [out] Tile Info | ||||
|     AddrTileMode*   pMode,          ///< [out] Tile mode | ||||
|     AddrTileType*   pType           ///< [out] Tile type | ||||
|   | ||||
| @@ -59,36 +59,18 @@ struct TileConfig | ||||
| * @brief SI specific settings structure. | ||||
| **************************************************************************************************** | ||||
| */ | ||||
| struct SiChipSettings | ||||
| struct SIChipSettings | ||||
| { | ||||
|     UINT_32 isSouthernIsland  : 1; | ||||
|     UINT_32 isTahiti          : 1; | ||||
|     UINT_32 isPitCairn        : 1; | ||||
|     UINT_32 isCapeVerde       : 1; | ||||
|     // Oland/Hainan are of GFXIP 6.0, similar with SI | ||||
|     UINT_32 isOland           : 1; | ||||
|     UINT_32 isHainan          : 1; | ||||
|  | ||||
|     // CI | ||||
|     UINT_32 isSeaIsland       : 1; | ||||
|     UINT_32 isBonaire         : 1; | ||||
|     UINT_32 isKaveri          : 1; | ||||
|     UINT_32 isSpectre         : 1; | ||||
|     UINT_32 isSpooky          : 1; | ||||
|     UINT_32 isKalindi         : 1; | ||||
|     // Hawaii is GFXIP 7.2 | ||||
|     UINT_32 isHawaii          : 1; | ||||
|  | ||||
|     // VI | ||||
|     UINT_32 isVolcanicIslands : 1; | ||||
|     UINT_32 isIceland         : 1; | ||||
|     UINT_32 isTonga           : 1; | ||||
|     UINT_32 isFiji            : 1; | ||||
|     UINT_32 isPolaris10       : 1; | ||||
|     UINT_32 isPolaris11       : 1; | ||||
|     UINT_32 isPolaris12       : 1; | ||||
|     // VI fusion | ||||
|     UINT_32 isCarrizo         : 1; | ||||
|     struct | ||||
|     { | ||||
|         UINT_32 isSouthernIsland    : 1; | ||||
|         UINT_32 isTahiti            : 1; | ||||
|         UINT_32 isPitCairn          : 1; | ||||
|         UINT_32 isCapeVerde         : 1; | ||||
|         /// Oland/Hainan are of GFXIP 6.0, similar with SI | ||||
|         UINT_32 isOland             : 1; | ||||
|         UINT_32 isHainan            : 1; | ||||
|     }; | ||||
| }; | ||||
|  | ||||
| /** | ||||
| @@ -330,12 +312,12 @@ protected: | ||||
|  | ||||
|     UINT_32                 m_uncompressDepthEqIndex; | ||||
|  | ||||
|     SiChipSettings          m_settings; | ||||
|  | ||||
| private: | ||||
|  | ||||
|     VOID ReadGbTileMode(UINT_32 regValue, TileConfig* pCfg) const; | ||||
|     BOOL_32 InitTileSettingTable(const UINT_32 *pSetting, UINT_32 noOfEntries); | ||||
|  | ||||
|     SIChipSettings          m_settings; | ||||
| }; | ||||
|  | ||||
| } // V1 | ||||
|   | ||||
| @@ -19,6 +19,10 @@ | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|  * SOFTWARE. | ||||
|  * | ||||
|  * Authors: Tom Stellard <thomas.stellard@amd.com> | ||||
|  * | ||||
|  * Based on radeon_elf_util.c. | ||||
|  */ | ||||
|  | ||||
| #include "ac_binary.h" | ||||
| @@ -298,16 +302,3 @@ void ac_shader_binary_read_config(struct ac_shader_binary *binary, | ||||
| 	        conf->scratch_bytes_per_wave = G_00B860_WAVESIZE(wavesize) * 256 * 4; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void ac_shader_binary_clean(struct ac_shader_binary *b) | ||||
| { | ||||
| 	if (!b) | ||||
| 		return; | ||||
| 	FREE(b->code); | ||||
| 	FREE(b->config); | ||||
| 	FREE(b->rodata); | ||||
| 	FREE(b->global_symbol_offsets); | ||||
| 	FREE(b->relocs); | ||||
| 	FREE(b->disasm_string); | ||||
| 	FREE(b->llvm_ir_string); | ||||
| } | ||||
|   | ||||
| @@ -19,6 +19,9 @@ | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|  * SOFTWARE. | ||||
|  * | ||||
|  * Authors: Tom Stellard <thomas.stellard@amd.com> | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef AC_BINARY_H | ||||
| @@ -96,6 +99,5 @@ void ac_shader_binary_read_config(struct ac_shader_binary *binary, | ||||
| 				  struct ac_shader_config *conf, | ||||
| 				  unsigned symbol_offset, | ||||
| 				  bool supports_spill); | ||||
| void ac_shader_binary_clean(struct ac_shader_binary *b); | ||||
|  | ||||
| #endif /* AC_BINARY_H */ | ||||
|   | ||||
| @@ -19,6 +19,9 @@ | ||||
|  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | ||||
|  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | ||||
|  * USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  * | ||||
|  * Authors: | ||||
|  *      Marek Olšák <maraeo@gmail.com> | ||||
|  */ | ||||
|  | ||||
| #include "ac_debug.h" | ||||
|   | ||||
| @@ -19,8 +19,10 @@ | ||||
|  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | ||||
|  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | ||||
|  * USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  * | ||||
|  * Authors: | ||||
|  *      Marek Olšák <maraeo@gmail.com> | ||||
|  */ | ||||
|  | ||||
| #ifndef AC_DEBUG_H | ||||
| #define AC_DEBUG_H | ||||
|  | ||||
|   | ||||
| @@ -98,7 +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 = {}, vce = {}, vcn_dec = {}, vcn_enc = {}; | ||||
| 	struct drm_amdgpu_info_hw_ip dma = {}, compute = {}, uvd = {}, vce = {}, vcn_dec = {}; | ||||
| 	uint32_t vce_version = 0, vce_feature = 0, uvd_version = 0, uvd_feature = 0; | ||||
| 	int r, i, j; | ||||
| 	drmDevicePtr devinfo; | ||||
| @@ -174,14 +174,6 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if (info->drm_major == 3 && info->drm_minor >= 17) { | ||||
| 		r = amdgpu_query_hw_ip_info(dev, AMDGPU_HW_IP_VCN_ENC, 0, &vcn_enc); | ||||
| 		if (r) { | ||||
| 			fprintf(stderr, "amdgpu: amdgpu_query_hw_ip_info(vcn_enc) failed.\n"); | ||||
| 			return false; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	r = amdgpu_query_firmware_version(dev, AMDGPU_INFO_FW_GFX_ME, 0, 0, | ||||
| 					&info->me_fw_version, | ||||
| 					&info->me_fw_feature); | ||||
| @@ -231,7 +223,7 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 	info->vce_harvest_config = amdinfo->vce_harvest_config; | ||||
|  | ||||
| 	switch (info->pci_id) { | ||||
| #define CHIPSET(pci_id, cfamily) case pci_id: info->family = CHIP_##cfamily; break; | ||||
| #define CHIPSET(pci_id, name, cfamily) case pci_id: info->family = CHIP_##cfamily; break; | ||||
| #include "pci_ids/radeonsi_pci_ids.h" | ||||
| #undef CHIPSET | ||||
|  | ||||
| @@ -278,7 +270,7 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| 	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_sync_file = info->has_syncobj && info->drm_minor >= 21; | ||||
| 	info->has_ctx_priority = info->drm_minor >= 22; | ||||
| 	info->num_render_backends = amdinfo->rb_pipes; | ||||
| 	info->clock_crystal_freq = amdinfo->gpu_counter_freq; | ||||
| @@ -354,58 +346,3 @@ void ac_compute_device_uuid(struct radeon_info *info, char *uuid, size_t size) | ||||
| 	uint_uuid[2] = info->pci_dev; | ||||
| 	uint_uuid[3] = info->pci_func; | ||||
| } | ||||
|  | ||||
| void ac_print_gpu_info(struct radeon_info *info) | ||||
| { | ||||
| 	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("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("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_fence_to_handle = %u\n", info->has_fence_to_handle); | ||||
|  | ||||
| 	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("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); | ||||
| } | ||||
|   | ||||
| @@ -82,7 +82,7 @@ struct radeon_info { | ||||
| 	bool                        has_userptr; | ||||
| 	bool                        has_syncobj; | ||||
| 	bool                        has_syncobj_wait_for_submit; | ||||
| 	bool                        has_fence_to_handle; | ||||
| 	bool                        has_sync_file; | ||||
| 	bool                        has_ctx_priority; | ||||
|  | ||||
| 	/* Shader cores. */ | ||||
| @@ -116,7 +116,6 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, | ||||
| void ac_compute_driver_uuid(char *uuid, size_t size); | ||||
|  | ||||
| void ac_compute_device_uuid(struct radeon_info *info, char *uuid, size_t size); | ||||
| void ac_print_gpu_info(struct radeon_info *info); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
|   | ||||
| @@ -47,12 +47,11 @@ | ||||
|  */ | ||||
| void | ||||
| ac_llvm_context_init(struct ac_llvm_context *ctx, LLVMContextRef context, | ||||
| 		     enum chip_class chip_class, enum radeon_family family) | ||||
| 		     enum chip_class chip_class) | ||||
| { | ||||
| 	LLVMValueRef args[1]; | ||||
|  | ||||
| 	ctx->chip_class = chip_class; | ||||
| 	ctx->family = family; | ||||
|  | ||||
| 	ctx->context = context; | ||||
| 	ctx->module = NULL; | ||||
| @@ -67,24 +66,14 @@ ac_llvm_context_init(struct ac_llvm_context *ctx, LLVMContextRef context, | ||||
| 	ctx->f16 = LLVMHalfTypeInContext(ctx->context); | ||||
| 	ctx->f32 = LLVMFloatTypeInContext(ctx->context); | ||||
| 	ctx->f64 = LLVMDoubleTypeInContext(ctx->context); | ||||
| 	ctx->v2i32 = LLVMVectorType(ctx->i32, 2); | ||||
| 	ctx->v3i32 = LLVMVectorType(ctx->i32, 3); | ||||
| 	ctx->v4i32 = LLVMVectorType(ctx->i32, 4); | ||||
| 	ctx->v2f32 = LLVMVectorType(ctx->f32, 2); | ||||
| 	ctx->v4f32 = LLVMVectorType(ctx->f32, 4); | ||||
| 	ctx->v8i32 = LLVMVectorType(ctx->i32, 8); | ||||
|  | ||||
| 	ctx->i32_0 = LLVMConstInt(ctx->i32, 0, false); | ||||
| 	ctx->i32_1 = LLVMConstInt(ctx->i32, 1, false); | ||||
| 	ctx->i64_0 = LLVMConstInt(ctx->i64, 0, false); | ||||
| 	ctx->i64_1 = LLVMConstInt(ctx->i64, 1, false); | ||||
| 	ctx->f32_0 = LLVMConstReal(ctx->f32, 0.0); | ||||
| 	ctx->f32_1 = LLVMConstReal(ctx->f32, 1.0); | ||||
| 	ctx->f64_0 = LLVMConstReal(ctx->f64, 0.0); | ||||
| 	ctx->f64_1 = LLVMConstReal(ctx->f64, 1.0); | ||||
|  | ||||
| 	ctx->i1false = LLVMConstInt(ctx->i1, 0, false); | ||||
| 	ctx->i1true = LLVMConstInt(ctx->i1, 1, false); | ||||
|  | ||||
| 	ctx->range_md_kind = LLVMGetMDKindIDInContext(ctx->context, | ||||
| 						     "range", 5); | ||||
| @@ -103,30 +92,6 @@ ac_llvm_context_init(struct ac_llvm_context *ctx, LLVMContextRef context, | ||||
| 	ctx->empty_md = LLVMMDNodeInContext(ctx->context, NULL, 0); | ||||
| } | ||||
|  | ||||
| int | ||||
| ac_get_llvm_num_components(LLVMValueRef value) | ||||
| { | ||||
| 	LLVMTypeRef type = LLVMTypeOf(value); | ||||
| 	unsigned num_components = LLVMGetTypeKind(type) == LLVMVectorTypeKind | ||||
| 	                              ? LLVMGetVectorSize(type) | ||||
| 	                              : 1; | ||||
| 	return num_components; | ||||
| } | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_llvm_extract_elem(struct ac_llvm_context *ac, | ||||
| 		     LLVMValueRef value, | ||||
| 		     int index) | ||||
| { | ||||
| 	if (LLVMGetTypeKind(LLVMTypeOf(value)) != LLVMVectorTypeKind) { | ||||
| 		assert(index == 0); | ||||
| 		return value; | ||||
| 	} | ||||
|  | ||||
| 	return LLVMBuildExtractElement(ac->builder, value, | ||||
| 				       LLVMConstInt(ac->i32, index, false), ""); | ||||
| } | ||||
|  | ||||
| unsigned | ||||
| ac_get_type_size(LLVMTypeRef type) | ||||
| { | ||||
| @@ -399,28 +364,6 @@ ac_build_vote_eq(struct ac_llvm_context *ctx, LLVMValueRef value) | ||||
| 	return LLVMBuildOr(ctx->builder, all, none, ""); | ||||
| } | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_varying_gather_values(struct ac_llvm_context *ctx, LLVMValueRef *values, | ||||
| 			       unsigned value_count, unsigned component) | ||||
| { | ||||
| 	LLVMValueRef vec = NULL; | ||||
|  | ||||
| 	if (value_count == 1) { | ||||
| 		return values[component]; | ||||
| 	} else if (!value_count) | ||||
| 		unreachable("value_count is 0"); | ||||
|  | ||||
| 	for (unsigned i = component; i < value_count + component; i++) { | ||||
| 		LLVMValueRef value = values[i]; | ||||
|  | ||||
| 		if (i == component) | ||||
| 			vec = LLVMGetUndef( LLVMVectorType(LLVMTypeOf(value), value_count)); | ||||
| 		LLVMValueRef index = LLVMConstInt(ctx->i32, i - component, false); | ||||
| 		vec = LLVMBuildInsertElement(ctx->builder, vec, value, index, ""); | ||||
| 	} | ||||
| 	return vec; | ||||
| } | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_gather_values_extended(struct ac_llvm_context *ctx, | ||||
| 				LLVMValueRef *values, | ||||
| @@ -468,7 +411,6 @@ ac_build_fdiv(struct ac_llvm_context *ctx, | ||||
| { | ||||
| 	LLVMValueRef ret = LLVMBuildFDiv(ctx->builder, num, den, ""); | ||||
|  | ||||
| 	/* Use v_rcp_f32 instead of precise division. */ | ||||
| 	if (!LLVMIsConstant(ret)) | ||||
| 		LLVMSetMetadata(ret, ctx->fpmath_md_kind, ctx->fpmath_md_2p5_ulp); | ||||
| 	return ret; | ||||
| @@ -987,7 +929,11 @@ ac_build_buffer_load(struct ac_llvm_context *ctx, | ||||
|  | ||||
| 	return ac_build_intrinsic(ctx, name, types[func], args, | ||||
| 				  ARRAY_SIZE(args), | ||||
| 				  ac_get_load_intr_attribs(can_speculate)); | ||||
| 				  /* READNONE means writes can't affect it, while | ||||
| 				   * READONLY means that writes can affect it. */ | ||||
| 				  can_speculate && HAVE_LLVM >= 0x0400 ? | ||||
| 					  AC_FUNC_ATTR_READNONE : | ||||
| 					  AC_FUNC_ATTR_READONLY); | ||||
| } | ||||
|  | ||||
| LLVMValueRef ac_build_buffer_load_format(struct ac_llvm_context *ctx, | ||||
| @@ -1000,14 +946,18 @@ LLVMValueRef ac_build_buffer_load_format(struct ac_llvm_context *ctx, | ||||
| 		LLVMBuildBitCast(ctx->builder, rsrc, ctx->v4i32, ""), | ||||
| 		vindex, | ||||
| 		voffset, | ||||
| 		ctx->i1false, /* glc */ | ||||
| 		ctx->i1false, /* slc */ | ||||
| 		LLVMConstInt(ctx->i1, 0, 0), /* glc */ | ||||
| 		LLVMConstInt(ctx->i1, 0, 0), /* slc */ | ||||
| 	}; | ||||
|  | ||||
| 	return ac_build_intrinsic(ctx, | ||||
| 				  "llvm.amdgcn.buffer.load.format.v4f32", | ||||
| 				  ctx->v4f32, args, ARRAY_SIZE(args), | ||||
| 				  ac_get_load_intr_attribs(can_speculate)); | ||||
| 				  /* READNONE means writes can't affect it, while | ||||
| 				   * READONLY means that writes can affect it. */ | ||||
| 				  can_speculate && HAVE_LLVM >= 0x0400 ? | ||||
| 					  AC_FUNC_ATTR_READNONE : | ||||
| 					  AC_FUNC_ATTR_READONLY); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -1200,7 +1150,7 @@ ac_build_umsb(struct ac_llvm_context *ctx, | ||||
| { | ||||
| 	LLVMValueRef args[2] = { | ||||
| 		arg, | ||||
| 		ctx->i1true, | ||||
| 		LLVMConstInt(ctx->i1, 1, 0), | ||||
| 	}; | ||||
| 	LLVMValueRef msb = ac_build_intrinsic(ctx, "llvm.ctlz.i32", | ||||
| 					      dst_type, args, ARRAY_SIZE(args), | ||||
| @@ -1218,22 +1168,6 @@ ac_build_umsb(struct ac_llvm_context *ctx, | ||||
| 			       LLVMConstInt(ctx->i32, -1, true), msb, ""); | ||||
| } | ||||
|  | ||||
| LLVMValueRef ac_build_fmin(struct ac_llvm_context *ctx, LLVMValueRef a, | ||||
| 			   LLVMValueRef b) | ||||
| { | ||||
| 	LLVMValueRef args[2] = {a, b}; | ||||
| 	return ac_build_intrinsic(ctx, "llvm.minnum.f32", ctx->f32, args, 2, | ||||
| 				  AC_FUNC_ATTR_READNONE); | ||||
| } | ||||
|  | ||||
| LLVMValueRef ac_build_fmax(struct ac_llvm_context *ctx, LLVMValueRef a, | ||||
| 			   LLVMValueRef b) | ||||
| { | ||||
| 	LLVMValueRef args[2] = {a, b}; | ||||
| 	return ac_build_intrinsic(ctx, "llvm.maxnum.f32", ctx->f32, args, 2, | ||||
| 				  AC_FUNC_ATTR_READNONE); | ||||
| } | ||||
|  | ||||
| LLVMValueRef ac_build_umin(struct ac_llvm_context *ctx, LLVMValueRef a, | ||||
| 			   LLVMValueRef b) | ||||
| { | ||||
| @@ -1244,8 +1178,20 @@ LLVMValueRef ac_build_umin(struct ac_llvm_context *ctx, LLVMValueRef a, | ||||
| LLVMValueRef ac_build_clamp(struct ac_llvm_context *ctx, LLVMValueRef value) | ||||
| { | ||||
| 	if (HAVE_LLVM >= 0x0500) { | ||||
| 		return ac_build_fmin(ctx, ac_build_fmax(ctx, value, ctx->f32_0), | ||||
| 				     ctx->f32_1); | ||||
| 		LLVMValueRef max[2] = { | ||||
| 			value, | ||||
| 			LLVMConstReal(ctx->f32, 0), | ||||
| 		}; | ||||
| 		LLVMValueRef min[2] = { | ||||
| 			LLVMConstReal(ctx->f32, 1), | ||||
| 		}; | ||||
|  | ||||
| 		min[1] = ac_build_intrinsic(ctx, "llvm.maxnum.f32", | ||||
| 					    ctx->f32, max, 2, | ||||
| 					    AC_FUNC_ATTR_READNONE); | ||||
| 		return ac_build_intrinsic(ctx, "llvm.minnum.f32", | ||||
| 					  ctx->f32, min, 2, | ||||
| 					  AC_FUNC_ATTR_READNONE); | ||||
| 	} | ||||
|  | ||||
| 	LLVMValueRef args[3] = { | ||||
| @@ -1311,7 +1257,7 @@ LLVMValueRef ac_build_image_opcode(struct ac_llvm_context *ctx, | ||||
| 	LLVMTypeRef dst_type; | ||||
| 	LLVMValueRef args[11]; | ||||
| 	unsigned num_args = 0; | ||||
| 	const char *name = NULL; | ||||
| 	const char *name; | ||||
| 	char intr_name[128], type[64]; | ||||
|  | ||||
| 	if (HAVE_LLVM >= 0x0400) { | ||||
| @@ -1330,9 +1276,9 @@ LLVMValueRef ac_build_image_opcode(struct ac_llvm_context *ctx, | ||||
| 		args[num_args++] = LLVMConstInt(ctx->i32, a->dmask, 0); | ||||
| 		if (sample) | ||||
| 			args[num_args++] = LLVMConstInt(ctx->i1, a->unorm, 0); | ||||
| 		args[num_args++] = ctx->i1false; /* glc */ | ||||
| 		args[num_args++] = ctx->i1false; /* slc */ | ||||
| 		args[num_args++] = ctx->i1false; /* lwe */ | ||||
| 		args[num_args++] = LLVMConstInt(ctx->i1, 0, 0); /* glc */ | ||||
| 		args[num_args++] = LLVMConstInt(ctx->i1, 0, 0); /* slc */ | ||||
| 		args[num_args++] = LLVMConstInt(ctx->i1, 0, 0); /* lwe */ | ||||
| 		args[num_args++] = LLVMConstInt(ctx->i1, a->da, 0); | ||||
|  | ||||
| 		switch (a->opcode) { | ||||
| @@ -1459,26 +1405,20 @@ LLVMValueRef ac_build_cvt_pkrtz_f16(struct ac_llvm_context *ctx, | ||||
| 				  AC_FUNC_ATTR_LEGACY); | ||||
| } | ||||
|  | ||||
| LLVMValueRef ac_build_wqm_vote(struct ac_llvm_context *ctx, LLVMValueRef i1) | ||||
| /** | ||||
|  * KILL, AKA discard in GLSL. | ||||
|  * | ||||
|  * \param value  kill if value < 0.0 or value == NULL. | ||||
|  */ | ||||
| void ac_build_kill(struct ac_llvm_context *ctx, LLVMValueRef value) | ||||
| { | ||||
| 	assert(HAVE_LLVM >= 0x0600); | ||||
| 	return ac_build_intrinsic(ctx, "llvm.amdgcn.wqm.vote", ctx->i1, | ||||
| 				  &i1, 1, AC_FUNC_ATTR_READNONE); | ||||
| } | ||||
|  | ||||
| void ac_build_kill_if_false(struct ac_llvm_context *ctx, LLVMValueRef i1) | ||||
| { | ||||
| 	if (HAVE_LLVM >= 0x0600) { | ||||
| 		ac_build_intrinsic(ctx, "llvm.amdgcn.kill", ctx->voidt, | ||||
| 				   &i1, 1, 0); | ||||
| 		return; | ||||
| 	if (value) { | ||||
| 		ac_build_intrinsic(ctx, "llvm.AMDGPU.kill", ctx->voidt, | ||||
| 				   &value, 1, AC_FUNC_ATTR_LEGACY); | ||||
| 	} else { | ||||
| 		ac_build_intrinsic(ctx, "llvm.AMDGPU.kilp", ctx->voidt, | ||||
| 				   NULL, 0, AC_FUNC_ATTR_LEGACY); | ||||
| 	} | ||||
|  | ||||
| 	LLVMValueRef value = LLVMBuildSelect(ctx->builder, i1, | ||||
| 					     LLVMConstReal(ctx->f32, 1), | ||||
| 					     LLVMConstReal(ctx->f32, -1), ""); | ||||
| 	ac_build_intrinsic(ctx, "llvm.AMDGPU.kill", ctx->voidt, | ||||
| 			   &value, 1, AC_FUNC_ATTR_LEGACY); | ||||
| } | ||||
|  | ||||
| LLVMValueRef ac_build_bfe(struct ac_llvm_context *ctx, LLVMValueRef input, | ||||
| @@ -1507,15 +1447,6 @@ LLVMValueRef ac_build_bfe(struct ac_llvm_context *ctx, LLVMValueRef input, | ||||
| 				  AC_FUNC_ATTR_LEGACY); | ||||
| } | ||||
|  | ||||
| void ac_build_waitcnt(struct ac_llvm_context *ctx, unsigned simm16) | ||||
| { | ||||
| 	LLVMValueRef args[1] = { | ||||
| 		LLVMConstInt(ctx->i32, simm16, false), | ||||
| 	}; | ||||
| 	ac_build_intrinsic(ctx, "llvm.amdgcn.s.waitcnt", | ||||
| 			   ctx->voidt, args, 1, 0); | ||||
| } | ||||
|  | ||||
| void ac_get_image_intr_name(const char *base_name, | ||||
| 			    LLVMTypeRef data_type, | ||||
| 			    LLVMTypeRef coords_type, | ||||
| @@ -1811,57 +1742,3 @@ void ac_init_exec_full_mask(struct ac_llvm_context *ctx) | ||||
| 			   "llvm.amdgcn.init.exec", ctx->voidt, | ||||
| 			   &full_mask, 1, AC_FUNC_ATTR_CONVERGENT); | ||||
| } | ||||
|  | ||||
| void ac_declare_lds_as_pointer(struct ac_llvm_context *ctx) | ||||
| { | ||||
| 	unsigned lds_size = ctx->chip_class >= CIK ? 65536 : 32768; | ||||
| 	ctx->lds = LLVMBuildIntToPtr(ctx->builder, ctx->i32_0, | ||||
| 				     LLVMPointerType(LLVMArrayType(ctx->i32, lds_size / 4), AC_LOCAL_ADDR_SPACE), | ||||
| 				     "lds"); | ||||
| } | ||||
|  | ||||
| LLVMValueRef ac_lds_load(struct ac_llvm_context *ctx, | ||||
| 			 LLVMValueRef dw_addr) | ||||
| { | ||||
| 	return ac_build_load(ctx, ctx->lds, dw_addr); | ||||
| } | ||||
|  | ||||
| void ac_lds_store(struct ac_llvm_context *ctx, | ||||
| 		  LLVMValueRef dw_addr, | ||||
| 		  LLVMValueRef value) | ||||
| { | ||||
| 	value = ac_to_integer(ctx, value); | ||||
| 	ac_build_indexed_store(ctx, ctx->lds, | ||||
| 			       dw_addr, value); | ||||
| } | ||||
|  | ||||
| LLVMValueRef ac_find_lsb(struct ac_llvm_context *ctx, | ||||
| 			 LLVMTypeRef dst_type, | ||||
| 			 LLVMValueRef src0) | ||||
| { | ||||
| 	LLVMValueRef params[2] = { | ||||
| 		src0, | ||||
|  | ||||
| 		/* The value of 1 means that ffs(x=0) = undef, so LLVM won't | ||||
| 		 * add special code to check for x=0. The reason is that | ||||
| 		 * the LLVM behavior for x=0 is different from what we | ||||
| 		 * need here. However, LLVM also assumes that ffs(x) is | ||||
| 		 * in [0, 31], but GLSL expects that ffs(0) = -1, so | ||||
| 		 * a conditional assignment to handle 0 is still required. | ||||
| 		 * | ||||
| 		 * The hardware already implements the correct behavior. | ||||
| 		 */ | ||||
| 		LLVMConstInt(ctx->i1, 1, false), | ||||
| 	}; | ||||
|  | ||||
| 	LLVMValueRef lsb = ac_build_intrinsic(ctx, "llvm.cttz.i32", ctx->i32, | ||||
| 					      params, 2, | ||||
| 					      AC_FUNC_ATTR_READNONE); | ||||
|  | ||||
| 	/* TODO: We need an intrinsic to skip this conditional. */ | ||||
| 	/* Check for zero: */ | ||||
| 	return LLVMBuildSelect(ctx->builder, LLVMBuildICmp(ctx->builder, | ||||
| 							   LLVMIntEQ, src0, | ||||
| 							   ctx->i32_0, ""), | ||||
| 			       LLVMConstInt(ctx->i32, -1, 0), lsb, ""); | ||||
| } | ||||
|   | ||||
| @@ -34,10 +34,6 @@ | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| enum { | ||||
| 	AC_LOCAL_ADDR_SPACE = 3, | ||||
| }; | ||||
|  | ||||
| struct ac_llvm_context { | ||||
| 	LLVMContextRef context; | ||||
| 	LLVMModuleRef module; | ||||
| @@ -52,23 +48,14 @@ struct ac_llvm_context { | ||||
| 	LLVMTypeRef f16; | ||||
| 	LLVMTypeRef f32; | ||||
| 	LLVMTypeRef f64; | ||||
| 	LLVMTypeRef v2i32; | ||||
| 	LLVMTypeRef v3i32; | ||||
| 	LLVMTypeRef v4i32; | ||||
| 	LLVMTypeRef v2f32; | ||||
| 	LLVMTypeRef v4f32; | ||||
| 	LLVMTypeRef v8i32; | ||||
|  | ||||
| 	LLVMValueRef i32_0; | ||||
| 	LLVMValueRef i32_1; | ||||
| 	LLVMValueRef i64_0; | ||||
| 	LLVMValueRef i64_1; | ||||
| 	LLVMValueRef f32_0; | ||||
| 	LLVMValueRef f32_1; | ||||
| 	LLVMValueRef f64_0; | ||||
| 	LLVMValueRef f64_1; | ||||
| 	LLVMValueRef i1true; | ||||
| 	LLVMValueRef i1false; | ||||
|  | ||||
| 	unsigned range_md_kind; | ||||
| 	unsigned invariant_load_md_kind; | ||||
| @@ -78,22 +65,11 @@ struct ac_llvm_context { | ||||
| 	LLVMValueRef empty_md; | ||||
|  | ||||
| 	enum chip_class chip_class; | ||||
| 	enum radeon_family family; | ||||
|  | ||||
| 	LLVMValueRef lds; | ||||
| }; | ||||
|  | ||||
| void | ||||
| ac_llvm_context_init(struct ac_llvm_context *ctx, LLVMContextRef context, | ||||
| 		     enum chip_class chip_class, enum radeon_family family); | ||||
|  | ||||
| int | ||||
| ac_get_llvm_num_components(LLVMValueRef value); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_llvm_extract_elem(struct ac_llvm_context *ac, | ||||
| 		     LLVMValueRef value, | ||||
| 		     int index); | ||||
| 		     enum chip_class chip_class); | ||||
|  | ||||
| unsigned ac_get_type_size(LLVMTypeRef type); | ||||
|  | ||||
| @@ -125,10 +101,6 @@ LLVMValueRef ac_build_vote_any(struct ac_llvm_context *ctx, LLVMValueRef value); | ||||
|  | ||||
| LLVMValueRef ac_build_vote_eq(struct ac_llvm_context *ctx, LLVMValueRef value); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_varying_gather_values(struct ac_llvm_context *ctx, LLVMValueRef *values, | ||||
| 			       unsigned value_count, unsigned component); | ||||
|  | ||||
| LLVMValueRef | ||||
| ac_build_gather_values_extended(struct ac_llvm_context *ctx, | ||||
| 				LLVMValueRef *values, | ||||
| @@ -248,10 +220,7 @@ LLVMValueRef ac_build_imsb(struct ac_llvm_context *ctx, | ||||
| LLVMValueRef ac_build_umsb(struct ac_llvm_context *ctx, | ||||
| 			  LLVMValueRef arg, | ||||
| 			  LLVMTypeRef dst_type); | ||||
| 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_umin(struct ac_llvm_context *ctx, LLVMValueRef a, LLVMValueRef b); | ||||
| LLVMValueRef ac_build_clamp(struct ac_llvm_context *ctx, LLVMValueRef value); | ||||
|  | ||||
| @@ -296,14 +265,11 @@ 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_wqm_vote(struct ac_llvm_context *ctx, LLVMValueRef i1); | ||||
| void ac_build_kill_if_false(struct ac_llvm_context *ctx, LLVMValueRef i1); | ||||
| void ac_build_kill(struct ac_llvm_context *ctx, LLVMValueRef value); | ||||
| LLVMValueRef ac_build_bfe(struct ac_llvm_context *ctx, LLVMValueRef input, | ||||
| 			  LLVMValueRef offset, LLVMValueRef width, | ||||
| 			  bool is_signed); | ||||
|  | ||||
| void ac_build_waitcnt(struct ac_llvm_context *ctx, unsigned simm16); | ||||
|  | ||||
| void ac_get_image_intr_name(const char *base_name, | ||||
| 			    LLVMTypeRef data_type, | ||||
| 			    LLVMTypeRef coords_type, | ||||
| @@ -316,16 +282,6 @@ void ac_optimize_vs_outputs(struct ac_llvm_context *ac, | ||||
| 			    uint32_t num_outputs, | ||||
| 			    uint8_t *num_param_exports); | ||||
| void ac_init_exec_full_mask(struct ac_llvm_context *ctx); | ||||
|  | ||||
| void ac_declare_lds_as_pointer(struct ac_llvm_context *ac); | ||||
| LLVMValueRef ac_lds_load(struct ac_llvm_context *ctx, | ||||
| 			 LLVMValueRef dw_addr); | ||||
| void ac_lds_store(struct ac_llvm_context *ctx, | ||||
| 		  LLVMValueRef dw_addr, LLVMValueRef value); | ||||
|  | ||||
| LLVMValueRef ac_find_lsb(struct ac_llvm_context *ctx, | ||||
| 			 LLVMTypeRef dst_type, | ||||
| 			 LLVMValueRef src0); | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -35,7 +35,6 @@ | ||||
| #include <llvm/ExecutionEngine/ExecutionEngine.h> | ||||
| #include <llvm/IR/Attributes.h> | ||||
| #include <llvm/IR/CallSite.h> | ||||
| #include <llvm/IR/IRBuilder.h> | ||||
|  | ||||
| #if HAVE_LLVM < 0x0500 | ||||
| namespace llvm { | ||||
| @@ -81,32 +80,3 @@ bool ac_llvm_is_function(LLVMValueRef v) | ||||
| 	return llvm::isa<llvm::Function>(llvm::unwrap(v)); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| LLVMBuilderRef ac_create_builder(LLVMContextRef ctx, | ||||
| 				 enum ac_float_mode float_mode) | ||||
| { | ||||
| 	LLVMBuilderRef builder = LLVMCreateBuilderInContext(ctx); | ||||
|  | ||||
| #if HAVE_LLVM >= 0x0308 | ||||
| 	llvm::FastMathFlags flags; | ||||
|  | ||||
| 	switch (float_mode) { | ||||
| 	case AC_FLOAT_MODE_DEFAULT: | ||||
| 		break; | ||||
| 	case AC_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH: | ||||
| 		flags.setNoSignedZeros(); | ||||
| 		llvm::unwrap(builder)->setFastMathFlags(flags); | ||||
| 		break; | ||||
| 	case AC_FLOAT_MODE_UNSAFE_FP_MATH: | ||||
| #if HAVE_LLVM >= 0x0600 | ||||
| 		flags.setFast(); | ||||
| #else | ||||
| 		flags.setUnsafeAlgebra(); | ||||
| #endif | ||||
| 		llvm::unwrap(builder)->setFastMathFlags(flags); | ||||
| 		break; | ||||
| 	} | ||||
| #endif | ||||
|  | ||||
| 	return builder; | ||||
| } | ||||
|   | ||||
| @@ -74,7 +74,7 @@ LLVMTargetRef ac_get_llvm_target(const char *triple) | ||||
| 	return target; | ||||
| } | ||||
|  | ||||
| const char *ac_get_llvm_processor_name(enum radeon_family family) | ||||
| static const char *ac_get_llvm_processor_name(enum radeon_family family) | ||||
| { | ||||
| 	switch (family) { | ||||
| 	case CHIP_TAHITI: | ||||
| @@ -128,11 +128,8 @@ LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, enum ac | ||||
| 	LLVMTargetRef target = ac_get_llvm_target(triple); | ||||
|  | ||||
| 	snprintf(features, sizeof(features), | ||||
| 		 "+DumpCode,+vgpr-spilling,-fp32-denormals,+fp64-denormals%s%s%s%s", | ||||
| 		 tm_options & AC_TM_SISCHED ? ",+si-scheduler" : "", | ||||
| 		 tm_options & AC_TM_FORCE_ENABLE_XNACK ? ",+xnack" : "", | ||||
| 		 tm_options & AC_TM_FORCE_DISABLE_XNACK ? ",-xnack" : "", | ||||
| 		 tm_options & AC_TM_PROMOTE_ALLOCA_TO_SCRATCH ? ",-promote-alloca" : ""); | ||||
| 		 "+DumpCode,+vgpr-spilling,-fp32-denormals%s", | ||||
| 		 tm_options & AC_TM_SISCHED ? ",+si-scheduler" : ""); | ||||
| 	 | ||||
| 	LLVMTargetMachineRef tm = LLVMCreateTargetMachine( | ||||
| 	                             target, | ||||
|   | ||||
| @@ -57,18 +57,7 @@ enum ac_func_attr { | ||||
| enum ac_target_machine_options { | ||||
| 	AC_TM_SUPPORTS_SPILL = (1 << 0), | ||||
| 	AC_TM_SISCHED = (1 << 1), | ||||
| 	AC_TM_FORCE_ENABLE_XNACK = (1 << 2), | ||||
| 	AC_TM_FORCE_DISABLE_XNACK = (1 << 3), | ||||
| 	AC_TM_PROMOTE_ALLOCA_TO_SCRATCH = (1 << 4), | ||||
| }; | ||||
|  | ||||
| enum ac_float_mode { | ||||
| 	AC_FLOAT_MODE_DEFAULT, | ||||
| 	AC_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH, | ||||
| 	AC_FLOAT_MODE_UNSAFE_FP_MATH, | ||||
| }; | ||||
|  | ||||
| const char *ac_get_llvm_processor_name(enum radeon_family family); | ||||
| LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, enum ac_target_machine_options tm_options); | ||||
|  | ||||
| LLVMTargetRef ac_get_llvm_target(const char *triple); | ||||
| @@ -83,31 +72,10 @@ void ac_dump_module(LLVMModuleRef module); | ||||
| LLVMValueRef ac_llvm_get_called_value(LLVMValueRef call); | ||||
| bool ac_llvm_is_function(LLVMValueRef v); | ||||
|  | ||||
| LLVMBuilderRef ac_create_builder(LLVMContextRef ctx, | ||||
| 				 enum ac_float_mode float_mode); | ||||
|  | ||||
| void | ||||
| ac_llvm_add_target_dep_function_attr(LLVMValueRef F, | ||||
| 				     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 && 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 && HAVE_LLVM >= 0x0400 ? | ||||
| 				  AC_FUNC_ATTR_INACCESSIBLE_MEM_ONLY : | ||||
| 				  AC_FUNC_ATTR_WRITEONLY; | ||||
| } | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -81,7 +81,6 @@ struct ac_nir_compiler_options { | ||||
| 	bool unsafe_math; | ||||
| 	bool supports_spill; | ||||
| 	bool clamp_shadow_reference; | ||||
| 	bool dump_preoptir; | ||||
| 	enum radeon_family family; | ||||
| 	enum chip_class chip_class; | ||||
| }; | ||||
| @@ -170,6 +169,7 @@ struct ac_shader_variant_info { | ||||
| 		struct { | ||||
| 			unsigned num_interp; | ||||
| 			uint32_t input_mask; | ||||
| 			unsigned output_mask; | ||||
| 			uint32_t flat_shaded_mask; | ||||
| 			bool has_pcoord; | ||||
| 			bool can_discard; | ||||
| @@ -191,9 +191,10 @@ struct ac_shader_variant_info { | ||||
| 			unsigned invocations; | ||||
| 			unsigned gsvs_vertex_size; | ||||
| 			unsigned max_gsvs_emit_size; | ||||
| 			unsigned es_type; /* GFX9: VS or TES */ | ||||
| 			bool uses_prim_id; | ||||
| 		} gs; | ||||
| 		struct { | ||||
| 			bool uses_prim_id; | ||||
| 			unsigned tcs_vertices_out; | ||||
| 			/* Which outputs are actually written */ | ||||
| 			uint64_t outputs_written; | ||||
| @@ -209,6 +210,7 @@ struct ac_shader_variant_info { | ||||
| 			enum gl_tess_spacing spacing; | ||||
| 			bool ccw; | ||||
| 			bool point_mode; | ||||
| 			bool uses_prim_id; | ||||
| 		} tes; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -42,11 +42,6 @@ struct ac_shader_abi { | ||||
| 	LLVMValueRef draw_id; | ||||
| 	LLVMValueRef vertex_id; | ||||
| 	LLVMValueRef instance_id; | ||||
| 	LLVMValueRef tcs_patch_id; | ||||
| 	LLVMValueRef tcs_rel_ids; | ||||
| 	LLVMValueRef tes_patch_id; | ||||
| 	LLVMValueRef gs_prim_id; | ||||
| 	LLVMValueRef gs_invocation_id; | ||||
| 	LLVMValueRef frag_pos[4]; | ||||
| 	LLVMValueRef front_face; | ||||
| 	LLVMValueRef ancillary; | ||||
| @@ -63,56 +58,6 @@ struct ac_shader_abi { | ||||
| 			     unsigned max_outputs, | ||||
| 			     LLVMValueRef *addrs); | ||||
|  | ||||
| 	void (*emit_vertex)(struct ac_shader_abi *abi, | ||||
| 			    unsigned stream, | ||||
| 			    LLVMValueRef *addrs); | ||||
|  | ||||
| 	void (*emit_primitive)(struct ac_shader_abi *abi, | ||||
| 			       unsigned stream); | ||||
|  | ||||
| 	LLVMValueRef (*load_inputs)(struct ac_shader_abi *abi, | ||||
| 				    unsigned location, | ||||
| 				    unsigned driver_location, | ||||
| 				    unsigned component, | ||||
| 				    unsigned num_components, | ||||
| 				    unsigned vertex_index, | ||||
| 				    unsigned const_index, | ||||
| 				    LLVMTypeRef type); | ||||
|  | ||||
| 	LLVMValueRef (*load_tess_varyings)(struct ac_shader_abi *abi, | ||||
| 					   LLVMValueRef vertex_index, | ||||
| 					   LLVMValueRef param_index, | ||||
| 					   unsigned const_index, | ||||
| 					   unsigned location, | ||||
| 					   unsigned driver_location, | ||||
| 					   unsigned component, | ||||
| 					   unsigned num_components, | ||||
| 					   bool is_patch, | ||||
| 					   bool is_compact, | ||||
| 					   bool load_inputs); | ||||
|  | ||||
| 	void (*store_tcs_outputs)(struct ac_shader_abi *abi, | ||||
| 				  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, | ||||
| 					LLVMTypeRef type, | ||||
| 					unsigned num_components); | ||||
|  | ||||
| 	LLVMValueRef (*load_patch_vertices_in)(struct ac_shader_abi *abi); | ||||
|  | ||||
| 	LLVMValueRef (*load_tess_level)(struct ac_shader_abi *abi, | ||||
| 					unsigned varying_id); | ||||
|  | ||||
|  | ||||
| 	LLVMValueRef (*load_ubo)(struct ac_shader_abi *abi, LLVMValueRef index); | ||||
|  | ||||
| 	/** | ||||
|   | ||||
| @@ -24,15 +24,13 @@ | ||||
| #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) | ||||
| static void mark_sampler_desc(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) | ||||
| gather_intrinsic_info(nir_intrinsic_instr *instr, struct ac_shader_info *info) | ||||
| { | ||||
| 	switch (instr->intrinsic) { | ||||
| 	case nir_intrinsic_interp_var_at_sample: | ||||
| @@ -45,23 +43,7 @@ gather_intrinsic_info(const nir_intrinsic_instr *instr, | ||||
| 		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; | ||||
| 		info->cs.grid_components_used = instr->num_components; | ||||
| 		break; | ||||
| 	case nir_intrinsic_load_sample_id: | ||||
| 		info->ps.force_persample = true; | ||||
| @@ -72,15 +54,6 @@ gather_intrinsic_info(const nir_intrinsic_instr *instr, | ||||
| 	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; | ||||
| @@ -112,7 +85,7 @@ gather_intrinsic_info(const nir_intrinsic_instr *instr, | ||||
| } | ||||
|  | ||||
| static void | ||||
| gather_tex_info(const nir_tex_instr *instr, struct ac_shader_info *info) | ||||
| gather_tex_info(nir_tex_instr *instr, struct ac_shader_info *info) | ||||
| { | ||||
| 	if (instr->sampler) | ||||
| 		mark_sampler_desc(instr->sampler->var, info); | ||||
| @@ -121,7 +94,7 @@ gather_tex_info(const nir_tex_instr *instr, struct ac_shader_info *info) | ||||
| } | ||||
|  | ||||
| static void | ||||
| gather_info_block(const nir_block *block, struct ac_shader_info *info) | ||||
| gather_info_block(nir_block *block, struct ac_shader_info *info) | ||||
| { | ||||
| 	nir_foreach_instr(instr, block) { | ||||
| 		switch (instr->type) { | ||||
| @@ -138,7 +111,9 @@ gather_info_block(const nir_block *block, struct ac_shader_info *info) | ||||
| } | ||||
|  | ||||
| static void | ||||
| gather_info_input_decl(const nir_shader *nir, const nir_variable *var, | ||||
| gather_info_input_decl(nir_shader *nir, | ||||
| 		       const struct ac_nir_compiler_options *options, | ||||
| 		       nir_variable *var, | ||||
| 		       struct ac_shader_info *info) | ||||
| { | ||||
| 	switch (nir->info.stage) { | ||||
| @@ -151,18 +126,21 @@ gather_info_input_decl(const nir_shader *nir, const nir_variable *var, | ||||
| } | ||||
|  | ||||
| void | ||||
| ac_nir_shader_info_pass(const struct nir_shader *nir, | ||||
| ac_nir_shader_info_pass(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); | ||||
| 	struct nir_function *func = (struct nir_function *)exec_list_get_head(&nir->functions); | ||||
|  | ||||
| 	if (options->layout->dynamic_offset_count) | ||||
| 		info->loads_push_constants = true; | ||||
| 	info->needs_push_constants = true; | ||||
| 	if (!options->layout) | ||||
| 		info->needs_push_constants = false; | ||||
| 	else if (!options->layout->push_constant_size && | ||||
| 		 !options->layout->dynamic_offset_count) | ||||
| 		info->needs_push_constants = false; | ||||
|  | ||||
| 	nir_foreach_variable(variable, &nir->inputs) | ||||
| 		gather_info_input_decl(nir, variable, info); | ||||
| 		gather_info_input_decl(nir, options, variable, info); | ||||
|  | ||||
| 	nir_foreach_block(block, func->impl) { | ||||
| 		gather_info_block(block, info); | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user