Compare commits
	
		
			220 Commits
		
	
	
		
			mesa-19.3.
			...
			mesa_3_2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 5febd0ce8b | ||
|  | 3d2264b2ce | ||
|  | 486565f88a | ||
|  | 0931339ea8 | ||
|  | 7fbad8f406 | ||
|  | 3382e6e359 | ||
|  | 96cefd6d02 | ||
|  | 8033ed691e | ||
|  | 59aa79ea5e | ||
|  | 5478ccec45 | ||
|  | ba31a93ae5 | ||
|  | 3c5265bf69 | ||
|  | 9c7494fc0c | ||
|  | 9e077508f9 | ||
|  | 95b0d3528a | ||
|  | dcd4ea4746 | ||
|  | e01205dd9e | ||
|  | 198ed1fe93 | ||
|  | 5c2f9bc2de | ||
|  | e4fb0285f2 | ||
|  | 573ab9c964 | ||
|  | 37f4e1fe40 | ||
|  | 4f4a6b4a4f | ||
|  | 884aa6efd8 | ||
|  | ceb817650f | ||
|  | 19ac63ce20 | ||
|  | 1b4c728f77 | ||
|  | 140809c588 | ||
|  | e6df48f9a6 | ||
|  | 31bcf75ce1 | ||
|  | 9818daae60 | ||
|  | 5ade8ed0b4 | ||
|  | 1b539ed613 | ||
|  | 905ad56487 | ||
|  | a16ebe76c9 | ||
|  | 96563ae75f | ||
|  | 11769b9737 | ||
|  | 474363af47 | ||
|  | 99189ad4fb | ||
|  | 361fc66e36 | ||
|  | 0b616332f7 | ||
|  | 4f030d12ad | ||
|  | 792837dafd | ||
|  | 8c77d45b06 | ||
|  | 660f6dec37 | ||
|  | 14e7ab2c4f | ||
|  | 089f713f0d | ||
|  | 53f81339a4 | ||
|  | 2cf228e93d | ||
|  | 4e8ee6840a | ||
|  | 5144d47c54 | ||
|  | 3eaed2527a | ||
|  | 353bd24876 | ||
|  | 473d64f9cc | ||
|  | c21598fb0d | ||
|  | 287abc7aa0 | ||
|  | e6e732c64d | ||
|  | 61cca3827f | ||
|  | 88406455f5 | ||
|  | fb67681366 | ||
|  | ead75d4894 | ||
|  | bd4ba2b85d | ||
|  | 998839109e | ||
|  | a23d3cc054 | ||
|  | 803d5a12ab | ||
|  | 462144c0f0 | ||
|  | a780e6f228 | ||
|  | 7feab37f8a | ||
|  | 091834064c | ||
|  | 9275c62963 | ||
|  | 7166ff0412 | ||
|  | bf69170dff | ||
|  | 3c6dd8791c | ||
|  | 69bc4e01b8 | ||
|  | b2d3b2dbe0 | ||
|  | c508641aec | ||
|  | f008070ad5 | ||
|  | c562884268 | ||
|  | 992795f4c9 | ||
|  | d21f13cb05 | ||
|  | f1b26953e8 | ||
|  | 216244bed8 | ||
|  | b85c3afc01 | ||
|  | e4ee3cc9d1 | ||
|  | 03d7215604 | ||
|  | 82e6fe5e36 | ||
|  | dde5788a44 | ||
|  | 8038f3747d | ||
|  | 0df95816c5 | ||
|  | 3692626805 | ||
|  | b31d01d4a7 | ||
|  | ba8ef5917e | ||
|  | f5d0252282 | ||
|  | 83386c0f7b | ||
|  | 5e8aa8e5d9 | ||
|  | f008ed46d1 | ||
|  | 7b5a65ce28 | ||
|  | 4f4b93d8ae | ||
|  | 81f97580cc | ||
|  | 8de719530c | ||
|  | f0040ae8f5 | ||
|  | ec2425c3b6 | ||
|  | aedc01c850 | ||
|  | 93c528a6d5 | ||
|  | 443d666b9a | ||
|  | d794378dbc | ||
|  | 76dad53903 | ||
|  | e5f8d98410 | ||
|  | 7f8fed5711 | ||
|  | 5ed6197b0a | ||
|  | 609524894a | ||
|  | 553adbb0c2 | ||
|  | 361afca6a4 | ||
|  | 4c6a2f6a33 | ||
|  | 717ec19e30 | ||
|  | 411fb983f7 | ||
|  | 5dbe3d9c98 | ||
|  | fea067dce8 | ||
|  | 1cfc846bf3 | ||
|  | dfa45b9f26 | ||
|  | 6f602ed44d | ||
|  | 34bf1dd293 | ||
|  | 9a7584b062 | ||
|  | d6dfb94059 | ||
|  | b9ee2850cf | ||
|  | 4183bf524d | ||
|  | 1721f447c6 | ||
|  | 46ef216f7f | ||
|  | a171741d65 | ||
|  | 320c2cdb0f | ||
|  | 9ed70db8ea | ||
|  | acbb8cb9dd | ||
|  | 7889a93ff7 | ||
|  | 970a551795 | ||
|  | d7eae31275 | ||
|  | b0294cbbfe | ||
|  | e2ff9be0b6 | ||
|  | 16283fea40 | ||
|  | 82ba9449e1 | ||
|  | 2377ea9c66 | ||
|  | ac3593ada5 | ||
|  | d6dd996e56 | ||
|  | cee556daea | ||
|  | 313f225a2e | ||
|  | 95d565b64c | ||
|  | 32ea1fdc7e | ||
|  | 8d52ee9ae1 | ||
|  | 9a07202f5e | ||
|  | 0f953d69e5 | ||
|  | b3a1034c05 | ||
|  | 8956d5131d | ||
|  | 428cf99956 | ||
|  | 1e5dab20fd | ||
|  | aa5251d170 | ||
|  | 607add71d9 | ||
|  | 074710629d | ||
|  | 7f0b5dd69c | ||
|  | 09b83c889b | ||
|  | 9c416c235b | ||
|  | 6ce3f22ae9 | ||
|  | 32093ccc86 | ||
|  | d5ff1d782b | ||
|  | 2ed8894aca | ||
|  | 33cd8a5490 | ||
|  | dd25e9852a | ||
|  | 05df9bb6e0 | ||
|  | a335bf404f | ||
|  | 783a67260a | ||
|  | e99e126479 | ||
|  | 98fce32683 | ||
|  | 9493e540f9 | ||
|  | 7138d38cc1 | ||
|  | 9e7f0e1f7c | ||
|  | 52345bfa1e | ||
|  | 93070bceca | ||
|  | 5b90676fc7 | ||
|  | 92ad030cb7 | ||
|  | 9afe0e4278 | ||
|  | 3e63be01d1 | ||
|  | c73eedbe96 | ||
|  | 8c54c4d9f7 | ||
|  | 33817940c4 | ||
|  | 7ec2e161ac | ||
|  | fc2e8cd0d0 | ||
|  | a3ea9edfda | ||
|  | 7fa9891de2 | ||
|  | ddd9410a67 | ||
|  | 532dde3e99 | ||
|  | 2a6f393fa7 | ||
|  | 2d1b9e0402 | ||
|  | 19c878467f | ||
|  | 1041d573ff | ||
|  | fda834160b | ||
|  | 7d35435bb6 | ||
|  | 5c191a62bc | ||
|  | eca3b6e47e | ||
|  | aa0a8624fb | ||
|  | f16a627115 | ||
|  | 1d39975c4e | ||
|  | 62d5f4c73e | ||
|  | d42cd99c66 | ||
|  | 03ef882735 | ||
|  | 19d0fcafb3 | ||
|  | cc6e92ff49 | ||
|  | 463c2b6b77 | ||
|  | 09c133e16f | ||
|  | bb1d3c1ad1 | ||
|  | cabb6a91cd | ||
|  | c76ac6b644 | ||
|  | 6842075a09 | ||
|  | b1da189fe5 | ||
|  | 9b635315be | ||
|  | 702baf4cd3 | ||
|  | b27ee886e4 | ||
|  | 276465cec6 | ||
|  | 5428538d65 | ||
|  | ab5d4d6233 | ||
|  | 2450ce124b | ||
|  | cf22eb77a7 | ||
|  | 569802cdb1 | 
| @@ -1,66 +0,0 @@ | |||||||
| goto %1 |  | ||||||
|  |  | ||||||
| :install |  | ||||||
| rem Check pip |  | ||||||
| if "%buildsystem%" == "scons" ( |  | ||||||
|     python --version |  | ||||||
|     python -m pip --version |  | ||||||
|     rem Install Mako |  | ||||||
|     python -m pip install Mako==1.0.7 |  | ||||||
|     rem Install pywin32 extensions, needed by SCons |  | ||||||
|     python -m pip install pypiwin32 |  | ||||||
|     rem Install python wheels, necessary to install SCons via pip |  | ||||||
|     python -m pip install wheel |  | ||||||
|     rem Install SCons |  | ||||||
|     python -m pip install scons==3.0.1 |  | ||||||
|     call scons --version |  | ||||||
| ) else ( |  | ||||||
|     python --version |  | ||||||
|     python -m pip install Mako==1.0.7 meson |  | ||||||
|     meson --version |  | ||||||
|  |  | ||||||
|     rem Install pkg-config, which meson requires even on windows |  | ||||||
|     cinst -y pkgconfiglite |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| rem Install flex/bison |  | ||||||
| set WINFLEXBISON_ARCHIVE=win_flex_bison-%WINFLEXBISON_VERSION%.zip |  | ||||||
| if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://github.com/lexxmark/winflexbison/releases/download/v%WINFLEXBISON_VERSION%/%WINFLEXBISON_ARCHIVE%" |  | ||||||
| 7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul |  | ||||||
| set Path=%CD%\winflexbison;%Path% |  | ||||||
| win_flex --version |  | ||||||
| win_bison --version |  | ||||||
| rem Download and extract LLVM |  | ||||||
| if not exist "%LLVM_ARCHIVE%" appveyor DownloadFile "https://people.freedesktop.org/~jrfonseca/llvm/%LLVM_ARCHIVE%" |  | ||||||
| 7z x -y "%LLVM_ARCHIVE%" > nul |  | ||||||
| if "%buildsystem%" == "scons" ( |  | ||||||
|     mkdir llvm\bin |  | ||||||
|     set LLVM=%CD%\llvm |  | ||||||
| ) else ( |  | ||||||
|     move llvm subprojects\ |  | ||||||
|     copy .appveyor\llvm-wrap.meson subprojects\llvm\meson.build |  | ||||||
| ) |  | ||||||
| goto :eof |  | ||||||
|  |  | ||||||
| :build_script |  | ||||||
| if "%buildsystem%" == "scons" ( |  | ||||||
|     call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 |  | ||||||
| ) else ( |  | ||||||
|     call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=x86 |  | ||||||
|     rem We use default-library as static to affect any wraps (such as expat and zlib) |  | ||||||
|     rem it would be better if we could set subprojects buildtype independently, |  | ||||||
|     rem but I haven't written that patch yet :) |  | ||||||
|     call meson builddir --backend=vs2017 --default-library=static -Dbuild-tests=true -Db_vscrt=mtd --buildtype=release -Dllvm=true -Dgallium-drivers=swrast -Dosmesa=gallium |  | ||||||
|     pushd builddir |  | ||||||
|     call msbuild mesa.sln /m |  | ||||||
|     popd |  | ||||||
| ) |  | ||||||
| goto :eof |  | ||||||
|  |  | ||||||
| :test_script |  | ||||||
| if "%buildsystem%" == "scons" ( |  | ||||||
|     call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 check |  | ||||||
| ) else ( |  | ||||||
|     call meson test -C builddir |  | ||||||
| ) |  | ||||||
| goto :eof |  | ||||||
| @@ -1,36 +0,0 @@ | |||||||
| # A meson.build file for binary wrapping the LLVM used in the appvyeor CI |  | ||||||
| project('llvm', ['cpp']) |  | ||||||
|  |  | ||||||
| cpp = meson.get_compiler('cpp') |  | ||||||
|  |  | ||||||
| _deps = [] |  | ||||||
| _search = join_paths(meson.current_source_dir(), 'lib') |  | ||||||
| foreach d : ['LLVMAnalysis', 'LLVMAsmParser', 'LLVMAsmPrinter', |  | ||||||
|              'LLVMBinaryFormat', 'LLVMBitReader', 'LLVMBitWriter', |  | ||||||
|              'LLVMCodeGen', 'LLVMCore', 'LLVMCoroutines', 'LLVMCoverage', |  | ||||||
|              'LLVMDebugInfoCodeView', 'LLVMDebugInfoDWARF', |  | ||||||
|              'LLVMDebugInfoMSF', 'LLVMDebugInfoPDB', 'LLVMDemangle', |  | ||||||
|              'LLVMDlltoolDriver', 'LLVMExecutionEngine', 'LLVMGlobalISel', |  | ||||||
|              'LLVMInstCombine', 'LLVMInstrumentation', 'LLVMInterpreter', |  | ||||||
|              'LLVMipo', 'LLVMIRReader', 'LLVMLibDriver', 'LLVMLineEditor', |  | ||||||
|              'LLVMLinker', 'LLVMLTO', 'LLVMMCDisassembler', 'LLVMMCJIT', |  | ||||||
|              'LLVMMC', 'LLVMMCParser', 'LLVMMIRParser', 'LLVMObjCARCOpts', |  | ||||||
|              'LLVMObject', 'LLVMObjectYAML', 'LLVMOption', 'LLVMOrcJIT', |  | ||||||
|              'LLVMPasses', 'LLVMProfileData', 'LLVMRuntimeDyld', |  | ||||||
|              'LLVMScalarOpts', 'LLVMSelectionDAG', 'LLVMSupport', |  | ||||||
|              'LLVMSymbolize', 'LLVMTableGen', 'LLVMTarget', |  | ||||||
|              'LLVMTransformUtils', 'LLVMVectorize', 'LLVMX86AsmParser', |  | ||||||
|              'LLVMX86AsmPrinter', 'LLVMX86CodeGen', 'LLVMX86Desc', |  | ||||||
|              'LLVMX86Disassembler', 'LLVMX86Info', 'LLVMX86Utils', |  | ||||||
|              'LLVMXRay'] |  | ||||||
|   _deps += cpp.find_library(d, dirs : _search) |  | ||||||
| endforeach |  | ||||||
|  |  | ||||||
| dep_llvm = declare_dependency( |  | ||||||
|   include_directories : include_directories('include'), |  | ||||||
|   dependencies : _deps, |  | ||||||
|   version : '5.0.1', |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| has_rtti = false |  | ||||||
| irbuilder_h = files('include/llvm/IR/IRBuilder.h') |  | ||||||
| @@ -1,18 +0,0 @@ | |||||||
| ((nil . ((show-trailing-whitespace . t))) |  | ||||||
|  (prog-mode |  | ||||||
|   (indent-tabs-mode . nil) |  | ||||||
|   (tab-width . 8) |  | ||||||
|   (c-basic-offset . 3) |  | ||||||
|   (c-file-style . "stroustrup") |  | ||||||
|   (fill-column . 78) |  | ||||||
|   (eval . (progn |  | ||||||
| 	    (c-set-offset 'case-label '0) |  | ||||||
| 	    (c-set-offset 'innamespace '0) |  | ||||||
| 	    (c-set-offset 'inline-open '0))) |  | ||||||
|   (whitespace-style face indentation) |  | ||||||
|   (whitespace-line-column . 79) |  | ||||||
|   (eval ignore-errors |  | ||||||
|         (require 'whitespace) |  | ||||||
|         (whitespace-mode 1))) |  | ||||||
|  (makefile-mode (indent-tabs-mode . t)) |  | ||||||
|  ) |  | ||||||
| @@ -1,40 +0,0 @@ | |||||||
| # To use this config on you editor, follow the instructions at: |  | ||||||
| # http://editorconfig.org |  | ||||||
|  |  | ||||||
| root = true |  | ||||||
|  |  | ||||||
| [*] |  | ||||||
| charset = utf-8 |  | ||||||
| insert_final_newline = true |  | ||||||
| tab_width = 8 |  | ||||||
|  |  | ||||||
| [*.{c,h,cpp,hpp,cc,hh}] |  | ||||||
| indent_style = space |  | ||||||
| indent_size = 3 |  | ||||||
| max_line_length = 78 |  | ||||||
|  |  | ||||||
| [{Makefile*,*.mk}] |  | ||||||
| indent_style = tab |  | ||||||
|  |  | ||||||
| [{*.py,SCons*}] |  | ||||||
| indent_style = space |  | ||||||
| indent_size = 4 |  | ||||||
|  |  | ||||||
| [*.pl] |  | ||||||
| indent_style = space |  | ||||||
| indent_size = 4 |  | ||||||
|  |  | ||||||
| [*.m4] |  | ||||||
| indent_style = space |  | ||||||
| indent_size = 2 |  | ||||||
|  |  | ||||||
| [*.yml] |  | ||||||
| indent_style = space |  | ||||||
| indent_size = 2 |  | ||||||
|  |  | ||||||
| [*.patch] |  | ||||||
| trim_trailing_whitespace = false |  | ||||||
|  |  | ||||||
| [{meson.build,meson_options.txt}] |  | ||||||
| indent_style = space |  | ||||||
| indent_size = 2 |  | ||||||
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| *.pyc |  | ||||||
| *.pyo |  | ||||||
| *.out |  | ||||||
| build |  | ||||||
							
								
								
									
										532
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
							
						
						
									
										532
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							| @@ -1,532 +0,0 @@ | |||||||
| # This is the tag of the docker image used for the build jobs. If the |  | ||||||
| # image doesn't exist yet, the containers stage generates it. |  | ||||||
| # |  | ||||||
| # In order to generate a new image, one should generally change the tag. |  | ||||||
| # While removing the image from the registry would also work, that's not |  | ||||||
| # recommended except for ephemeral images during development: Replacing |  | ||||||
| # an image after a significant amount of time might pull in newer |  | ||||||
| # versions of gcc/clang or other packages, which might break the build |  | ||||||
| # with older commits using the same tag. |  | ||||||
| # |  | ||||||
| # After merging a change resulting in generating a new image to the |  | ||||||
| # main repository, it's recommended to remove the image from the source |  | ||||||
| # repository's container registry, so that the image from the main |  | ||||||
| # repository's registry will be used there as well. |  | ||||||
| variables: |  | ||||||
|   UPSTREAM_REPO: mesa/mesa |  | ||||||
|   DEBIAN_TAG: "2019-10-29" |  | ||||||
|   DEBIAN_ARM64_TAG: "arm64v8-2019-10-23" |  | ||||||
|   STRETCH_TAG: "2019-09-18" |  | ||||||
|   DEBIAN_VERSION: buster-slim |  | ||||||
|   STRETCH_VERSION: stretch-slim |  | ||||||
|   DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG" |  | ||||||
|   DEBIAN_ARM64_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_ARM64_TAG" |  | ||||||
|   STRETCH_IMAGE: "$CI_REGISTRY_IMAGE/debian/$STRETCH_VERSION:$STRETCH_TAG" |  | ||||||
|  |  | ||||||
| include: |  | ||||||
|   - project: 'wayland/ci-templates' |  | ||||||
|     ref: 1f7f57c64ff4ebbf7292e3b7a13600518b8cb24c |  | ||||||
|     file: '/templates/debian.yml' |  | ||||||
|  |  | ||||||
| include: |  | ||||||
|   - local: '.gitlab-ci/lava-gitlab-ci.yml' |  | ||||||
|  |  | ||||||
| stages: |  | ||||||
|   - container |  | ||||||
|   - build |  | ||||||
|   - test |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # When to automatically run the CI |  | ||||||
| .ci-run-policy: |  | ||||||
|   only: |  | ||||||
|     refs: |  | ||||||
|       - branches@mesa/mesa |  | ||||||
|       - merge_requests |  | ||||||
|       - /^ci([-/].*)?$/ |  | ||||||
|     changes: |  | ||||||
|       - VERSION |  | ||||||
|       - bin/**/* |  | ||||||
|       # GitLab CI |  | ||||||
|       - .gitlab-ci.yml |  | ||||||
|       - .gitlab-ci/**/* |  | ||||||
|       # Meson |  | ||||||
|       - meson* |  | ||||||
|       - build-support/**/* |  | ||||||
|       - subprojects/**/* |  | ||||||
|       # SCons |  | ||||||
|       - SConstruct |  | ||||||
|       - scons/**/* |  | ||||||
|       - common.py |  | ||||||
|       # Source code |  | ||||||
|       - include/**/* |  | ||||||
|       - src/**/* |  | ||||||
|   retry: |  | ||||||
|     max: 2 |  | ||||||
|     when: |  | ||||||
|       - runner_system_failure |  | ||||||
|  |  | ||||||
| .ci-deqp-artifacts: |  | ||||||
|   artifacts: |  | ||||||
|     when: always |  | ||||||
|     untracked: false |  | ||||||
|     paths: |  | ||||||
|       # Watch out!  Artifacts are relative to the build dir. |  | ||||||
|       # https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521 |  | ||||||
|       - artifacts |  | ||||||
|  |  | ||||||
| # Build the normal CI native and cross-build docker images. |  | ||||||
|  |  | ||||||
| .container: |  | ||||||
|   stage: container |  | ||||||
|   extends: |  | ||||||
|     - .ci-run-policy |  | ||||||
|   variables: |  | ||||||
|     # no need to pull the whole repo to build the container image |  | ||||||
|     GIT_STRATEGY: none |  | ||||||
|  |  | ||||||
| debian-10:amd64: |  | ||||||
|   extends: |  | ||||||
|     - .debian@container-ifnot-exists |  | ||||||
|     - .container |  | ||||||
|   variables: |  | ||||||
|     DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh' |  | ||||||
|  |  | ||||||
| .use-debian-10:amd64: |  | ||||||
|   image: $DEBIAN_IMAGE |  | ||||||
|   needs: |  | ||||||
|     - debian-10:amd64 |  | ||||||
|  |  | ||||||
| debian-9:amd64: |  | ||||||
|   extends: debian-10:amd64 |  | ||||||
|   variables: |  | ||||||
|     DEBIAN_TAG: $STRETCH_TAG |  | ||||||
|     DEBIAN_VERSION: $STRETCH_VERSION |  | ||||||
|     DEBIAN_IMAGE: $STRETCH_IMAGE |  | ||||||
|     DEBIAN_EXEC: 'bash .gitlab-ci/debian-stretch-install.sh' |  | ||||||
|  |  | ||||||
| .use-debian-9:amd64: |  | ||||||
|   image: $STRETCH_IMAGE |  | ||||||
|   needs: |  | ||||||
|     - debian-9:amd64 |  | ||||||
|  |  | ||||||
| debian-10:arm64: |  | ||||||
|   extends: |  | ||||||
|     - .debian@container-ifnot-exists@arm64v8 |  | ||||||
|     - .container |  | ||||||
|   variables: |  | ||||||
|     DEBIAN_TAG: "$DEBIAN_ARM64_TAG" |  | ||||||
|     DEBIAN_EXEC: 'bash .gitlab-ci/debian-arm64-install.sh' |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # BUILD |  | ||||||
|  |  | ||||||
| # Shared between windows and Linux |  | ||||||
| .build-common: |  | ||||||
|   extends: .ci-run-policy |  | ||||||
|   stage: build |  | ||||||
|   artifacts: |  | ||||||
|     when: always |  | ||||||
|     paths: |  | ||||||
|       - _build/meson-logs/*.txt |  | ||||||
|       # scons: |  | ||||||
|       - build/*/config.log |  | ||||||
|       - shader-db |  | ||||||
|  |  | ||||||
| # Just Linux |  | ||||||
| .build-linux: |  | ||||||
|   extends: .build-common |  | ||||||
|   cache: |  | ||||||
|     key: ${CI_JOB_NAME} |  | ||||||
|     paths: |  | ||||||
|       - ccache |  | ||||||
|   variables: |  | ||||||
|     CCACHE_COMPILERCHECK: "content" |  | ||||||
|   # Use ccache transparently, and print stats before/after |  | ||||||
|   before_script: |  | ||||||
|     - export PATH="/usr/lib/ccache:$PATH" |  | ||||||
|     - export CCACHE_BASEDIR="$PWD" |  | ||||||
|     - export CCACHE_DIR="$PWD/ccache" |  | ||||||
|     - ccache --max-size=1500M |  | ||||||
|     - ccache --zero-stats || true |  | ||||||
|     - ccache --show-stats || true |  | ||||||
|   after_script: |  | ||||||
|     # In case the install dir is being saved as artifacts, tar it up |  | ||||||
|     # so that symlinks and hardlinks aren't each packed separately in |  | ||||||
|     # the zip file. |  | ||||||
|     - if [ -d install ]; then |  | ||||||
|         tar -cf artifacts/install.tar install; |  | ||||||
|       fi |  | ||||||
|     - export CCACHE_DIR="$PWD/ccache" |  | ||||||
|     - ccache --show-stats |  | ||||||
|  |  | ||||||
| .build-windows: |  | ||||||
|   extends: .build-common |  | ||||||
|   tags: |  | ||||||
|     - mesa-windows |  | ||||||
|   cache: |  | ||||||
|     key: ${CI_JOB_NAME} |  | ||||||
|     paths: |  | ||||||
|       - subprojects/packagecache |  | ||||||
|  |  | ||||||
| .meson-build: |  | ||||||
|   extends: |  | ||||||
|     - .build-linux |  | ||||||
|     - .use-debian-10:amd64 |  | ||||||
|   script: |  | ||||||
|     - .gitlab-ci/meson-build.sh |  | ||||||
|  |  | ||||||
| .scons-build: |  | ||||||
|   extends: |  | ||||||
|     - .build-linux |  | ||||||
|     - .use-debian-10:amd64 |  | ||||||
|   variables: |  | ||||||
|     SCONSFLAGS: "-j4" |  | ||||||
|   script: |  | ||||||
|     - .gitlab-ci/scons-build.sh |  | ||||||
|  |  | ||||||
| meson-main: |  | ||||||
|   extends: |  | ||||||
|     - .meson-build |  | ||||||
|     - .ci-deqp-artifacts |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "true" |  | ||||||
|     DRI_LOADERS: > |  | ||||||
|       -D glx=dri |  | ||||||
|       -D gbm=true |  | ||||||
|       -D egl=true |  | ||||||
|       -D platforms=x11,wayland,drm,surfaceless |  | ||||||
|     DRI_DRIVERS: "i915,i965,r100,r200,nouveau" |  | ||||||
|     GALLIUM_ST: > |  | ||||||
|       -D dri3=true |  | ||||||
|       -D gallium-extra-hud=true |  | ||||||
|       -D gallium-vdpau=true |  | ||||||
|       -D gallium-xvmc=true |  | ||||||
|       -D gallium-omx=bellagio |  | ||||||
|       -D gallium-va=true |  | ||||||
|       -D gallium-xa=true |  | ||||||
|       -D gallium-nine=true |  | ||||||
|       -D gallium-opencl=disabled |  | ||||||
|     GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink" |  | ||||||
|     LLVM_VERSION: "7" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D osmesa=gallium |  | ||||||
|       -D tools=all |  | ||||||
|     MESON_SHADERDB: "true" |  | ||||||
|     BUILDTYPE: "debugoptimized" |  | ||||||
|  |  | ||||||
| .meson-cross: |  | ||||||
|   extends: |  | ||||||
|     - .meson-build |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "false" |  | ||||||
|     DRI_LOADERS: > |  | ||||||
|       -D glx=disabled |  | ||||||
|       -D gbm=false |  | ||||||
|       -D egl=true |  | ||||||
|       -D platforms=surfaceless |  | ||||||
|       -D osmesa=none |  | ||||||
|     GALLIUM_ST: > |  | ||||||
|       -D dri3=false |  | ||||||
|       -D gallium-vdpau=false |  | ||||||
|       -D gallium-xvmc=false |  | ||||||
|       -D gallium-omx=disabled |  | ||||||
|       -D gallium-va=false |  | ||||||
|       -D gallium-xa=false |  | ||||||
|       -D gallium-nine=false |  | ||||||
|  |  | ||||||
| .meson-arm: |  | ||||||
|   extends: .meson-cross |  | ||||||
|   image: $DEBIAN_ARM64_IMAGE |  | ||||||
|   variables: |  | ||||||
|     VULKAN_DRIVERS: freedreno |  | ||||||
|     GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D I-love-half-baked-turnips=true |  | ||||||
|   needs: |  | ||||||
|     - debian-10:arm64 |  | ||||||
|   tags: |  | ||||||
|     - aarch64 |  | ||||||
|  |  | ||||||
| meson-armhf: |  | ||||||
|   extends: .meson-arm |  | ||||||
|   variables: |  | ||||||
|     CROSS: armhf |  | ||||||
|     LLVM_VERSION: "7" |  | ||||||
|  |  | ||||||
| meson-arm64: |  | ||||||
|   extends: |  | ||||||
|     - .meson-arm |  | ||||||
|     - .ci-deqp-artifacts |  | ||||||
|   variables: |  | ||||||
|     BUILDTYPE: "debugoptimized" |  | ||||||
|  |  | ||||||
| # NOTE: Building SWR is 2x (yes two) times slower than all the other |  | ||||||
| # gallium drivers combined. |  | ||||||
| # Start this early so that it doesn't limit the total run time. |  | ||||||
| # |  | ||||||
| # We also stick the glvnd build here, since we want non-glvnd in |  | ||||||
| # meson-main for actual driver CI. |  | ||||||
| meson-swr-glvnd: |  | ||||||
|   extends: .meson-build |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "true" |  | ||||||
|     DRI_LOADERS: > |  | ||||||
|       -D glvnd=true |  | ||||||
|       -D egl=true |  | ||||||
|     GALLIUM_ST: > |  | ||||||
|       -D dri3=true |  | ||||||
|       -D gallium-vdpau=false |  | ||||||
|       -D gallium-xvmc=false |  | ||||||
|       -D gallium-omx=disabled |  | ||||||
|       -D gallium-va=false |  | ||||||
|       -D gallium-xa=false |  | ||||||
|       -D gallium-nine=false |  | ||||||
|       -D gallium-opencl=disabled |  | ||||||
|     GALLIUM_DRIVERS: "swr,iris" |  | ||||||
|     LLVM_VERSION: "6.0" |  | ||||||
|  |  | ||||||
| meson-clang: |  | ||||||
|   extends: .meson-build |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "true" |  | ||||||
|     DRI_DRIVERS: "auto" |  | ||||||
|     GALLIUM_DRIVERS: "auto" |  | ||||||
|     VULKAN_DRIVERS: intel,amd,freedreno |  | ||||||
|     CC: "ccache clang-8" |  | ||||||
|     CXX: "ccache clang++-8" |  | ||||||
|  |  | ||||||
| .meson-windows: |  | ||||||
|   extends: |  | ||||||
|     - .build-windows |  | ||||||
|   before_script: |  | ||||||
|     - $ENV:ARCH = "x86" |  | ||||||
|     - $ENV:VERSION = "2019\Community" |  | ||||||
|   script: |  | ||||||
|     - cmd /C .gitlab-ci\meson-build.bat |  | ||||||
|  |  | ||||||
| scons-swr: |  | ||||||
|   extends: .scons-build |  | ||||||
|   variables: |  | ||||||
|     SCONS_TARGET: "swr=1" |  | ||||||
|     SCONS_CHECK_COMMAND: "true" |  | ||||||
|     LLVM_VERSION: "6.0" |  | ||||||
|  |  | ||||||
| scons-win64: |  | ||||||
|   extends: .scons-build |  | ||||||
|   variables: |  | ||||||
|     SCONS_TARGET: platform=windows machine=x86_64 |  | ||||||
|     SCONS_CHECK_COMMAND: "true" |  | ||||||
|  |  | ||||||
| meson-clover: |  | ||||||
|   extends: .meson-build |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "true" |  | ||||||
|     DRI_LOADERS: > |  | ||||||
|       -D glx=disabled |  | ||||||
|       -D egl=false |  | ||||||
|       -D gbm=false |  | ||||||
|     GALLIUM_ST: > |  | ||||||
|       -D dri3=false |  | ||||||
|       -D gallium-vdpau=false |  | ||||||
|       -D gallium-xvmc=false |  | ||||||
|       -D gallium-omx=disabled |  | ||||||
|       -D gallium-va=false |  | ||||||
|       -D gallium-xa=false |  | ||||||
|       -D gallium-nine=false |  | ||||||
|       -D gallium-opencl=icd |  | ||||||
|   script: |  | ||||||
|     - export GALLIUM_DRIVERS="r600,radeonsi" |  | ||||||
|     - .gitlab-ci/meson-build.sh |  | ||||||
|     - LLVM_VERSION=8 .gitlab-ci/meson-build.sh |  | ||||||
|     - export GALLIUM_DRIVERS="i915,r600" |  | ||||||
|     - LLVM_VERSION=6.0 .gitlab-ci/meson-build.sh |  | ||||||
|     - LLVM_VERSION=7 .gitlab-ci/meson-build.sh |  | ||||||
|  |  | ||||||
| meson-clover-old-llvm: |  | ||||||
|   extends: |  | ||||||
|     - meson-clover |  | ||||||
|     - .use-debian-9:amd64 |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "false" |  | ||||||
|     DRI_LOADERS: > |  | ||||||
|       -D glx=disabled |  | ||||||
|       -D egl=false |  | ||||||
|       -D gbm=false |  | ||||||
|       -D platforms=drm,surfaceless |  | ||||||
|     GALLIUM_DRIVERS: "i915,r600" |  | ||||||
|   script: |  | ||||||
|     - LLVM_VERSION=3.9 .gitlab-ci/meson-build.sh |  | ||||||
|     - LLVM_VERSION=4.0 .gitlab-ci/meson-build.sh |  | ||||||
|     - LLVM_VERSION=5.0 .gitlab-ci/meson-build.sh |  | ||||||
|  |  | ||||||
| meson-vulkan: |  | ||||||
|   extends: .meson-build |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "false" |  | ||||||
|     DRI_LOADERS: > |  | ||||||
|       -D glx=disabled |  | ||||||
|       -D gbm=false |  | ||||||
|       -D egl=false |  | ||||||
|       -D platforms=x11,wayland,drm |  | ||||||
|       -D osmesa=none |  | ||||||
|     GALLIUM_ST: > |  | ||||||
|       -D dri3=true |  | ||||||
|       -D gallium-vdpau=false |  | ||||||
|       -D gallium-xvmc=false |  | ||||||
|       -D gallium-omx=disabled |  | ||||||
|       -D gallium-va=false |  | ||||||
|       -D gallium-xa=false |  | ||||||
|       -D gallium-nine=false |  | ||||||
|       -D gallium-opencl=disabled |  | ||||||
|       -D b_sanitize=undefined |  | ||||||
|       -D c_args=-fno-sanitize-recover=all |  | ||||||
|       -D cpp_args=-fno-sanitize-recover=all |  | ||||||
|     UBSAN_OPTIONS: "print_stacktrace=1" |  | ||||||
|     VULKAN_DRIVERS: intel,amd,freedreno |  | ||||||
|     LLVM_VERSION: "8" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D vulkan-overlay-layer=true |  | ||||||
|  |  | ||||||
| # While the main point of this build is testing the i386 cross build, |  | ||||||
| # we also use this one to test some other options that are exclusive |  | ||||||
| # with meson-main's choices (classic swrast and osmesa) |  | ||||||
| meson-i386: |  | ||||||
|   extends: .meson-cross |  | ||||||
|   variables: |  | ||||||
|     CROSS: i386 |  | ||||||
|     VULKAN_DRIVERS: intel |  | ||||||
|     DRI_DRIVERS: "swrast" |  | ||||||
|     GALLIUM_DRIVERS: "iris" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D vulkan-overlay-layer=true |  | ||||||
|       -D llvm=false |  | ||||||
|       -D osmesa=classic |  | ||||||
|  |  | ||||||
| meson-mingw32-x86_64: |  | ||||||
|   extends: .meson-build |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "false" |  | ||||||
|     DRI_DRIVERS: "" |  | ||||||
|     GALLIUM_DRIVERS: "swrast" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -Dllvm=false |  | ||||||
|       -Dosmesa=gallium |  | ||||||
|       --cross-file=.gitlab-ci/x86_64-w64-mingw32 |  | ||||||
|  |  | ||||||
| scons: |  | ||||||
|   extends: .scons-build |  | ||||||
|   variables: |  | ||||||
|     SCONS_TARGET: "llvm=1" |  | ||||||
|     SCONS_CHECK_COMMAND: "scons llvm=1 force_scons=1 check" |  | ||||||
|   script: |  | ||||||
|     - SCONS_TARGET="" SCONS_CHECK_COMMAND="scons check force_scons=1" .gitlab-ci/scons-build.sh |  | ||||||
|     - LLVM_VERSION=6.0 .gitlab-ci/scons-build.sh |  | ||||||
|     - LLVM_VERSION=7 .gitlab-ci/scons-build.sh |  | ||||||
|     - LLVM_VERSION=8 .gitlab-ci/scons-build.sh |  | ||||||
|  |  | ||||||
| scons-old-llvm: |  | ||||||
|   extends: |  | ||||||
|     - scons |  | ||||||
|     - .use-debian-9:amd64 |  | ||||||
|   script: |  | ||||||
|     - LLVM_VERSION=3.9 .gitlab-ci/scons-build.sh |  | ||||||
|     - LLVM_VERSION=4.0 .gitlab-ci/scons-build.sh |  | ||||||
|     - LLVM_VERSION=5.0 .gitlab-ci/scons-build.sh |  | ||||||
|  |  | ||||||
| .test: |  | ||||||
|   extends: .ci-run-policy |  | ||||||
|   stage: test |  | ||||||
|   variables: |  | ||||||
|     GIT_STRATEGY: none # testing doesn't build anything from source |  | ||||||
|  |  | ||||||
| .deqp-test: |  | ||||||
|   extends: |  | ||||||
|     - .test |  | ||||||
|     - .use-debian-10:amd64 |  | ||||||
|   variables: |  | ||||||
|     DEQP_SKIPS: deqp-default-skips.txt |  | ||||||
|   script: |  | ||||||
|     # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY |  | ||||||
|     - rm -rf install |  | ||||||
|     - tar -xf artifacts/install.tar |  | ||||||
|     - ./artifacts/deqp-runner.sh |  | ||||||
|   artifacts: |  | ||||||
|     when: on_failure |  | ||||||
|     name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME" |  | ||||||
|     paths: |  | ||||||
|       - results/ |  | ||||||
|   dependencies: |  | ||||||
|     - meson-main |  | ||||||
|   needs: |  | ||||||
|     - meson-main |  | ||||||
|     - debian-10:amd64 |  | ||||||
|  |  | ||||||
| test-llvmpipe-gles2: |  | ||||||
|   parallel: 4 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles2 |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt |  | ||||||
|     LIBGL_ALWAYS_SOFTWARE: "true" |  | ||||||
|     DEQP_RENDERER_MATCH: "llvmpipe" |  | ||||||
|   extends: .deqp-test |  | ||||||
|  |  | ||||||
| test-softpipe-gles2: |  | ||||||
|   extends: test-llvmpipe-gles2 |  | ||||||
|   variables: |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt |  | ||||||
|     DEQP_RENDERER_MATCH: "softpipe" |  | ||||||
|     GALLIUM_DRIVER: "softpipe" |  | ||||||
|  |  | ||||||
| # The GLES2 CTS run takes about 8 minutes of CPU time, while GLES3 is |  | ||||||
| # 25 minutes.  Until we can get its runtime down, just do a partial |  | ||||||
| # (every 10 tests) run. |  | ||||||
| test-softpipe-gles3-limited: |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles3 |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt |  | ||||||
|     LIBGL_ALWAYS_SOFTWARE: "true" |  | ||||||
|     DEQP_RENDERER_MATCH: "softpipe" |  | ||||||
|     GALLIUM_DRIVER: "softpipe" |  | ||||||
|     CI_NODE_INDEX: 1 |  | ||||||
|     CI_NODE_TOTAL: 10 |  | ||||||
|   extends: .deqp-test |  | ||||||
|  |  | ||||||
| arm64_a630_gles2: |  | ||||||
|   extends: .deqp-test |  | ||||||
|   image: $DEBIAN_ARM64_IMAGE |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles2 |  | ||||||
|     DEQP_RENDERER_MATCH: "FD630" |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt |  | ||||||
|     DEQP_SKIPS: deqp-freedreno-a630-skips.txt |  | ||||||
|     NIR_VALIDATE: 0 |  | ||||||
|   tags: |  | ||||||
|     - mesa-cheza |  | ||||||
|   dependencies: |  | ||||||
|     - meson-arm64 |  | ||||||
|   needs: |  | ||||||
|     - meson-arm64 |  | ||||||
|     - debian-10:arm64 |  | ||||||
|  |  | ||||||
| arm64_a630_gles31: |  | ||||||
|   extends: arm64_a630_gles2 |  | ||||||
|   parallel: 4 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles31 |  | ||||||
|  |  | ||||||
| arm64_a630_gles3: |  | ||||||
|   parallel: 6 |  | ||||||
|   extends: arm64_a630_gles2 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles3 |  | ||||||
|  |  | ||||||
| arm64_a306_gles2: |  | ||||||
|   parallel: 4 |  | ||||||
|   extends: arm64_a630_gles2 |  | ||||||
|   variables: |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-freedreno-a307-fails.txt |  | ||||||
|     DEQP_SKIPS: deqp-default-skips.txt |  | ||||||
|     DEQP_RENDERER_MATCH: "FD307" |  | ||||||
|   tags: |  | ||||||
|     - db410c |  | ||||||
| @@ -1,122 +0,0 @@ | |||||||
| ## Mesa testing using gitlab-runner |  | ||||||
|  |  | ||||||
| The goal of the "test" stage of the .gitlab-ci.yml is to do pre-merge |  | ||||||
| testing of Mesa drivers on various platforms, so that we can ensure no |  | ||||||
| regressions are merged, as long as developers are merging code using |  | ||||||
| the "Merge when pipeline completes" button. |  | ||||||
|  |  | ||||||
| This document only covers the CI from .gitlab-ci.yml and this |  | ||||||
| directory.  For other CI systems, see Intel's [Mesa |  | ||||||
| CI](https://gitlab.freedesktop.org/Mesa_CI) or panfrost's LAVA-based |  | ||||||
| CI (`src/gallium/drivers/panfrost/ci/`) |  | ||||||
|  |  | ||||||
| ### Software architecture |  | ||||||
|  |  | ||||||
| For freedreno and llvmpipe CI, we're using gitlab-runner on the test |  | ||||||
| devices (DUTs), cached docker containers with VK-GL-CTS, and the |  | ||||||
| normal shared x86_64 runners to build the Mesa drivers to be run |  | ||||||
| inside of those containers on the DUTs. |  | ||||||
|  |  | ||||||
| The docker containers are rebuilt from the debian-install.sh script |  | ||||||
| when DEBIAN\_TAG is changed in .gitlab-ci.yml, and |  | ||||||
| debian-test-install.sh when DEBIAN\_ARM64\_TAG is changed in |  | ||||||
| .gitlab-ci.yml.  The resulting images are around 500MB, and are |  | ||||||
| expected to change approximately weekly (though an individual |  | ||||||
| developer working on them may produce many more images while trying to |  | ||||||
| come up with a working MR!). |  | ||||||
|  |  | ||||||
| gitlab-runner is a client that polls gitlab.freedesktop.org for |  | ||||||
| available jobs, with no inbound networking requirements.  Jobs can |  | ||||||
| have tags, so we can have DUT-specific jobs that only run on runners |  | ||||||
| with that tag marked in the gitlab UI. |  | ||||||
|  |  | ||||||
| Since dEQP takes a long time to run, we mark the job as "parallel" at |  | ||||||
| some level, which spawns multiple jobs from one definition, and then |  | ||||||
| deqp-runner.sh takes the corresponding fraction of the test list for |  | ||||||
| that job. |  | ||||||
|  |  | ||||||
| To reduce dEQP runtime (or avoid tests with unreliable results), a |  | ||||||
| deqp-runner.sh invocation can provide a list of tests to skip.  If |  | ||||||
| your driver is not yet conformant, you can pass a list of expected |  | ||||||
| failures, and the job will only fail on tests that aren't listed (look |  | ||||||
| at the job's log for which specific tests failed). |  | ||||||
|  |  | ||||||
| ### DUT requirements |  | ||||||
|  |  | ||||||
| #### DUTs must have a stable kernel and GPU reset. |  | ||||||
|  |  | ||||||
| If the system goes down during a test run, that job will eventually |  | ||||||
| time out and fail (default 1 hour).  However, if the kernel can't |  | ||||||
| reliably reset the GPU on failure, bugs in one MR may leak into |  | ||||||
| spurious failures in another MR.  This would be an unacceptable impact |  | ||||||
| on Mesa developers working on other drivers. |  | ||||||
|  |  | ||||||
| #### DUTs must be able to run docker |  | ||||||
|  |  | ||||||
| The Mesa gitlab-runner based test architecture is built around docker, |  | ||||||
| so that we can cache the debian package installation and CTS build |  | ||||||
| step across multiple test runs.  Since the images are large and change |  | ||||||
| approximately weekly, the DUTs also need to be running some script to |  | ||||||
| prune stale docker images periodically in order to not run out of disk |  | ||||||
| space as we rev those containers (perhaps [this |  | ||||||
| script](https://gitlab.com/gitlab-org/gitlab-runner/issues/2980#note_169233611)). |  | ||||||
|  |  | ||||||
| Note that docker doesn't allow containers to be stored on NFS, and |  | ||||||
| doesn't allow multiple docker daemons to interact with the same |  | ||||||
| network block device, so you will probably need some sort of physical |  | ||||||
| storage on your DUTs. |  | ||||||
|  |  | ||||||
| #### DUTs must be public |  | ||||||
|  |  | ||||||
| By including your device in .gitlab-ci.yml, you're effectively letting |  | ||||||
| anyone on the internet run code on your device.  docker containers may |  | ||||||
| provide some limited protection, but how much you trust that and what |  | ||||||
| you do to mitigate hostile access is up to you. |  | ||||||
|  |  | ||||||
| #### DUTs must expose the dri device nodes to the containers. |  | ||||||
|  |  | ||||||
| Obviously, to get access to the HW, we need to pass the render node |  | ||||||
| through.  This is done by adding `devices = ["/dev/dri"]` to the |  | ||||||
| `runners.docker` section of /etc/gitlab-runner/config.toml. |  | ||||||
|  |  | ||||||
| ### HW CI farm expectations |  | ||||||
|  |  | ||||||
| To make sure that testing of one vendor's drivers doesn't block |  | ||||||
| unrelated work by other vendors, we require that a given driver's test |  | ||||||
| farm produces a spurious failure no more than once a week.  If every |  | ||||||
| driver had CI and failed once a week, we would be seeing someone's |  | ||||||
| code getting blocked on a spurious failure daily, which is an |  | ||||||
| unacceptable cost to the project. |  | ||||||
|  |  | ||||||
| Additionally, the test farm needs to be able to provide a short enough |  | ||||||
| turnaround time that people can regularly use the "Merge when pipeline |  | ||||||
| succeeds" button successfully (until we get |  | ||||||
| [marge-bot](https://github.com/smarkets/marge-bot) in place on |  | ||||||
| freedesktop.org).  As a result, we require that the test farm be able |  | ||||||
| to handle a whole pipeline's worth of jobs in less than 5 minutes (to |  | ||||||
| compare, the build stage is about 10 minutes, if you could get all |  | ||||||
| your jobs scheduled on the shared runners in time.). |  | ||||||
|  |  | ||||||
| If a test farm is short the HW to provide these guarantees, consider |  | ||||||
| dropping tests to reduce runtime. |  | ||||||
| `VK-GL-CTS/scripts/log/bottleneck_report.py` can help you find what |  | ||||||
| tests were slow in a `results.qpa` file.  Or, you can have a job with |  | ||||||
| no `parallel` field set and: |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
|   variables: |  | ||||||
|     CI_NODE_INDEX: 1 |  | ||||||
|     CI_NODE_TOTAL: 10 |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| to just run 1/10th of the test list. |  | ||||||
|  |  | ||||||
| If a HW CI farm goes offline (network dies and all CI pipelines end up |  | ||||||
| stalled) or its runners are consistenly spuriously failing (disk |  | ||||||
| full?), and the maintainer is not immediately available to fix the |  | ||||||
| issue, please push through an MR disabling that farm's jobs by adding |  | ||||||
| '.' to the front of the jobs names until the maintainer can bring |  | ||||||
| things back up.  If this happens, the farm maintainer should provide a |  | ||||||
| report to mesa-dev@lists.freedesktop.org after the fact explaining |  | ||||||
| what happened and what the mitigation plan is for that failure next |  | ||||||
| time. |  | ||||||
| @@ -1,46 +0,0 @@ | |||||||
| CONFIG_LOCALVERSION="ccu" |  | ||||||
|  |  | ||||||
| CONFIG_DEBUG_KERNEL=y |  | ||||||
|  |  | ||||||
| CONFIG_DEVFREQ_GOV_PERFORMANCE=y |  | ||||||
| CONFIG_DEVFREQ_GOV_POWERSAVE=y |  | ||||||
| CONFIG_DEVFREQ_GOV_USERSPACE=y |  | ||||||
| CONFIG_DEVFREQ_GOV_PASSIVE=y |  | ||||||
| CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y |  | ||||||
|  |  | ||||||
| CONFIG_DRM=y |  | ||||||
| CONFIG_DRM_ROCKCHIP=y |  | ||||||
| CONFIG_DRM_PANFROST=y |  | ||||||
| CONFIG_DRM_LIMA=y |  | ||||||
| CONFIG_DRM_PANEL_SIMPLE=y |  | ||||||
| CONFIG_PWM_CROS_EC=y |  | ||||||
| CONFIG_BACKLIGHT_PWM=y |  | ||||||
|  |  | ||||||
| CONFIG_ROCKCHIP_CDN_DP=n |  | ||||||
|  |  | ||||||
| CONFIG_SPI_ROCKCHIP=y |  | ||||||
| CONFIG_PWM_ROCKCHIP=y |  | ||||||
| CONFIG_PHY_ROCKCHIP_DP=y |  | ||||||
| CONFIG_DWMAC_ROCKCHIP=y |  | ||||||
|  |  | ||||||
| CONFIG_MFD_RK808=y |  | ||||||
| CONFIG_REGULATOR_RK808=y |  | ||||||
| CONFIG_RTC_DRV_RK808=y |  | ||||||
| CONFIG_COMMON_CLK_RK808=y |  | ||||||
|  |  | ||||||
| CONFIG_REGULATOR_FAN53555=y |  | ||||||
| CONFIG_REGULATOR=y |  | ||||||
|  |  | ||||||
| CONFIG_REGULATOR_VCTRL=y |  | ||||||
|  |  | ||||||
| CONFIG_KASAN=n |  | ||||||
| CONFIG_KASAN_INLINE=n |  | ||||||
| CONFIG_STACKTRACE=n |  | ||||||
|  |  | ||||||
| CONFIG_TMPFS=y |  | ||||||
|  |  | ||||||
| CONFIG_PROVE_LOCKING=n |  | ||||||
| CONFIG_DEBUG_LOCKDEP=n |  | ||||||
| CONFIG_SOFTLOCKUP_DETECTOR=n |  | ||||||
| CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=n |  | ||||||
|  |  | ||||||
| @@ -1,84 +0,0 @@ | |||||||
| CONFIG_LOCALVERSION="ccu" |  | ||||||
|  |  | ||||||
| CONFIG_DEBUG_KERNEL=y |  | ||||||
|  |  | ||||||
| CONFIG_DEVFREQ_GOV_PERFORMANCE=y |  | ||||||
| CONFIG_DEVFREQ_GOV_POWERSAVE=y |  | ||||||
| CONFIG_DEVFREQ_GOV_USERSPACE=y |  | ||||||
| CONFIG_DEVFREQ_GOV_PASSIVE=y |  | ||||||
|  |  | ||||||
| CONFIG_DRM=y |  | ||||||
| CONFIG_DRM_ROCKCHIP=y |  | ||||||
| CONFIG_DRM_PANFROST=y |  | ||||||
| CONFIG_DRM_LIMA=y |  | ||||||
| CONFIG_DRM_PANEL_SIMPLE=y |  | ||||||
| CONFIG_PWM_CROS_EC=y |  | ||||||
| CONFIG_BACKLIGHT_PWM=y |  | ||||||
|  |  | ||||||
| CONFIG_ROCKCHIP_CDN_DP=n |  | ||||||
|  |  | ||||||
| CONFIG_SPI_ROCKCHIP=y |  | ||||||
| CONFIG_PWM_ROCKCHIP=y |  | ||||||
| CONFIG_PHY_ROCKCHIP_DP=y |  | ||||||
| CONFIG_DWMAC_ROCKCHIP=y |  | ||||||
| CONFIG_STMMAC_ETH=y |  | ||||||
| CONFIG_TYPEC_FUSB302=y |  | ||||||
| CONFIG_TYPEC=y |  | ||||||
| CONFIG_TYPEC_TCPM=y |  | ||||||
|  |  | ||||||
| CONFIG_ARCH_SUNXI=n |  | ||||||
| CONFIG_ARCH_ALPINE=n |  | ||||||
| CONFIG_ARCH_BCM2835=n |  | ||||||
| CONFIG_ARCH_BCM_IPROC=n |  | ||||||
| CONFIG_ARCH_BERLIN=n |  | ||||||
| CONFIG_ARCH_BRCMSTB=n |  | ||||||
| CONFIG_ARCH_EXYNOS=n |  | ||||||
| CONFIG_ARCH_K3=n |  | ||||||
| CONFIG_ARCH_LAYERSCAPE=n |  | ||||||
| CONFIG_ARCH_LG1K=n |  | ||||||
| CONFIG_ARCH_HISI=n |  | ||||||
| CONFIG_ARCH_MEDIATEK=n |  | ||||||
| CONFIG_ARCH_MVEBU=n |  | ||||||
| CONFIG_ARCH_QCOM=n |  | ||||||
| CONFIG_ARCH_SEATTLE=n |  | ||||||
| CONFIG_ARCH_SYNQUACER=n |  | ||||||
| CONFIG_ARCH_RENESAS=n |  | ||||||
| CONFIG_ARCH_R8A774A1=n |  | ||||||
| CONFIG_ARCH_R8A774C0=n |  | ||||||
| CONFIG_ARCH_R8A7795=n |  | ||||||
| CONFIG_ARCH_R8A7796=n |  | ||||||
| CONFIG_ARCH_R8A77965=n |  | ||||||
| CONFIG_ARCH_R8A77970=n |  | ||||||
| CONFIG_ARCH_R8A77980=n |  | ||||||
| CONFIG_ARCH_R8A77990=n |  | ||||||
| CONFIG_ARCH_R8A77995=n |  | ||||||
| CONFIG_ARCH_STRATIX10=n |  | ||||||
| CONFIG_ARCH_TEGRA=n |  | ||||||
| CONFIG_ARCH_SPRD=n |  | ||||||
| CONFIG_ARCH_THUNDER=n |  | ||||||
| CONFIG_ARCH_THUNDER2=n |  | ||||||
| CONFIG_ARCH_UNIPHIER=n |  | ||||||
| CONFIG_ARCH_VEXPRESS=n |  | ||||||
| CONFIG_ARCH_XGENE=n |  | ||||||
| CONFIG_ARCH_ZX=n |  | ||||||
| CONFIG_ARCH_ZYNQMP=n |  | ||||||
|  |  | ||||||
| CONFIG_ACPI=n |  | ||||||
|  |  | ||||||
| CONFIG_REGULATOR_FAN53555=y |  | ||||||
| CONFIG_REGULATOR=y |  | ||||||
|  |  | ||||||
| CONFIG_REGULATOR_VCTRL=y |  | ||||||
|  |  | ||||||
| CONFIG_KASAN=n |  | ||||||
| CONFIG_KASAN_INLINE=n |  | ||||||
| CONFIG_STACKTRACE=n |  | ||||||
|  |  | ||||||
| CONFIG_TMPFS=y |  | ||||||
|  |  | ||||||
| CONFIG_PROVE_LOCKING=n |  | ||||||
| CONFIG_DEBUG_LOCKDEP=n |  | ||||||
| CONFIG_SOFTLOCKUP_DETECTOR=y |  | ||||||
| CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y |  | ||||||
|  |  | ||||||
| CONFIG_DETECT_HUNG_TASK=y |  | ||||||
| @@ -1,185 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| apt-get -y install --no-install-recommends initramfs-tools libpng16-16 strace libsensors5 libexpat1 libdrm2 |  | ||||||
| passwd root -d |  | ||||||
| chsh -s /bin/sh |  | ||||||
| ln -s /bin/sh /init |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Strip the image to a small minimal system without removing the debian |  | ||||||
| # toolchain. |  | ||||||
|  |  | ||||||
| # Copy timezone file and remove tzdata package |  | ||||||
| rm -rf /etc/localtime |  | ||||||
| cp /usr/share/zoneinfo/Etc/UTC /etc/localtime |  | ||||||
|  |  | ||||||
| UNNEEDED_PACKAGES="libfdisk1 |  | ||||||
|                    tzdata |  | ||||||
|                    diffutils" |  | ||||||
|  |  | ||||||
| export DEBIAN_FRONTEND=noninteractive |  | ||||||
|  |  | ||||||
| # Removing unused packages |  | ||||||
| for PACKAGE in ${UNNEEDED_PACKAGES} |  | ||||||
| do |  | ||||||
| 	echo ${PACKAGE} |  | ||||||
| 	if ! apt-get remove --purge --yes "${PACKAGE}" |  | ||||||
| 	then |  | ||||||
| 		echo "WARNING: ${PACKAGE} isn't installed" |  | ||||||
| 	fi |  | ||||||
| done |  | ||||||
|  |  | ||||||
| apt-get autoremove --yes || true |  | ||||||
|  |  | ||||||
| # Dropping logs |  | ||||||
| rm -rf /var/log/* |  | ||||||
|  |  | ||||||
| # Dropping documentation, localization, i18n files, etc |  | ||||||
| rm -rf /usr/share/doc/* |  | ||||||
| rm -rf /usr/share/locale/* |  | ||||||
| rm -rf /usr/share/man |  | ||||||
| rm -rf /usr/share/i18n/* |  | ||||||
| rm -rf /usr/share/info/* |  | ||||||
| rm -rf /usr/share/lintian/* |  | ||||||
| rm -rf /usr/share/common-licenses/* |  | ||||||
| rm -rf /usr/share/mime/* |  | ||||||
|  |  | ||||||
| # Dropping reportbug scripts |  | ||||||
| rm -rf /usr/share/bug |  | ||||||
|  |  | ||||||
| # Drop udev hwdb not required on a stripped system |  | ||||||
| rm -rf /lib/udev/hwdb.bin /lib/udev/hwdb.d/* |  | ||||||
|  |  | ||||||
| # Drop all gconv conversions && binaries |  | ||||||
| rm -rf usr/bin/iconv |  | ||||||
| rm -rf usr/sbin/iconvconfig |  | ||||||
| rm -rf usr/lib/*/gconv/ |  | ||||||
|  |  | ||||||
| # Remove libusb database |  | ||||||
| rm -rf usr/sbin/update-usbids |  | ||||||
| rm -rf var/lib/usbutils/usb.ids |  | ||||||
| rm -rf usr/share/misc/usb.ids |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Crush into a minimal production image to be deployed via some type of image |  | ||||||
| # updating system. |  | ||||||
| # IMPORTANT: The Debian system is not longer functional at this point, |  | ||||||
| # for example, apt and dpkg will stop working |  | ||||||
|  |  | ||||||
| UNNEEDED_PACKAGES="apt libapt-pkg5.0 "\ |  | ||||||
| "ncurses-bin ncurses-base libncursesw5 libncurses5 "\ |  | ||||||
| "perl-base "\ |  | ||||||
| "debconf libdebconfclient0 "\ |  | ||||||
| "e2fsprogs e2fslibs libfdisk1 "\ |  | ||||||
| "insserv "\ |  | ||||||
| "udev "\ |  | ||||||
| "init-system-helpers "\ |  | ||||||
| "bash "\ |  | ||||||
| "cpio "\ |  | ||||||
| "passwd "\ |  | ||||||
| "libsemanage1 libsemanage-common "\ |  | ||||||
| "libsepol1 "\ |  | ||||||
| "gzip "\ |  | ||||||
| "gnupg "\ |  | ||||||
| "gpgv "\ |  | ||||||
| "hostname "\ |  | ||||||
| "adduser "\ |  | ||||||
| "debian-archive-keyring "\ |  | ||||||
| "libgl1 libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libegl-mesa0 libgles2 "\ |  | ||||||
| "libllvm7 "\ |  | ||||||
| "libx11-data libthai-data "\ |  | ||||||
| "systemd dbus "\ |  | ||||||
|  |  | ||||||
| # Removing unneeded packages |  | ||||||
| for PACKAGE in ${UNNEEDED_PACKAGES} |  | ||||||
| do |  | ||||||
| 	echo "Forcing removal of ${PACKAGE}" |  | ||||||
| 	if ! dpkg --purge --force-remove-essential --force-depends "${PACKAGE}" |  | ||||||
| 	then |  | ||||||
| 		echo "WARNING: ${PACKAGE} isn't installed" |  | ||||||
| 	fi |  | ||||||
| done |  | ||||||
|  |  | ||||||
| # Show what's left package-wise before dropping dpkg itself |  | ||||||
| COLUMNS=300 dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n |  | ||||||
|  |  | ||||||
| # Drop dpkg |  | ||||||
| dpkg --purge --force-remove-essential --force-depends  dpkg |  | ||||||
|  |  | ||||||
| # No apt or dpkg, no need for its configuration archives |  | ||||||
| rm -rf etc/apt |  | ||||||
| rm -rf etc/dpkg |  | ||||||
|  |  | ||||||
| # Drop directories not part of ostree |  | ||||||
| # Note that /var needs to exist as ostree bind mounts the deployment /var over |  | ||||||
| # it |  | ||||||
| rm -rf var/* opt srv share |  | ||||||
|  |  | ||||||
| # ca-certificates are in /etc drop the source |  | ||||||
| rm -rf usr/share/ca-certificates |  | ||||||
|  |  | ||||||
| # No bash, no need for completions |  | ||||||
| rm -rf usr/share/bash-completion |  | ||||||
|  |  | ||||||
| # No zsh, no need for comletions |  | ||||||
| rm -rf usr/share/zsh/vendor-completions |  | ||||||
|  |  | ||||||
| # drop gcc-6 python helpers |  | ||||||
| rm -rf usr/share/gcc-6 |  | ||||||
|  |  | ||||||
| # Drop sysvinit leftovers |  | ||||||
| rm -rf etc/init.d |  | ||||||
| rm -rf etc/rc[0-6S].d |  | ||||||
|  |  | ||||||
| # Drop upstart helpers |  | ||||||
| rm -rf etc/init |  | ||||||
|  |  | ||||||
| # Various xtables helpers |  | ||||||
| rm -rf usr/lib/xtables |  | ||||||
|  |  | ||||||
| # Drop all locales |  | ||||||
| # TODO: only remaining locale is actually "C". Should we really remove it? |  | ||||||
| rm -rf usr/lib/locale/* |  | ||||||
|  |  | ||||||
| # partition helpers |  | ||||||
| rm usr/sbin/*fdisk |  | ||||||
|  |  | ||||||
| # local compiler |  | ||||||
| rm usr/bin/localedef |  | ||||||
|  |  | ||||||
| # Systemd dns resolver |  | ||||||
| find usr etc -name '*systemd-resolve*' -prune -exec rm -r {} \; |  | ||||||
|  |  | ||||||
| # Systemd network configuration |  | ||||||
| find usr etc -name '*networkd*' -prune -exec rm -r {} \; |  | ||||||
|  |  | ||||||
| # systemd ntp client |  | ||||||
| find usr etc -name '*timesyncd*' -prune -exec rm -r {} \; |  | ||||||
|  |  | ||||||
| # systemd hw database manager |  | ||||||
| find usr etc -name '*systemd-hwdb*' -prune -exec rm -r {} \; |  | ||||||
|  |  | ||||||
| # No need for fuse |  | ||||||
| find usr etc -name '*fuse*' -prune -exec rm -r {} \; |  | ||||||
|  |  | ||||||
| # lsb init function leftovers |  | ||||||
| rm -rf usr/lib/lsb |  | ||||||
|  |  | ||||||
| # Only needed when adding libraries |  | ||||||
| rm usr/sbin/ldconfig* |  | ||||||
|  |  | ||||||
| # Games, unused |  | ||||||
| rmdir usr/games |  | ||||||
|  |  | ||||||
| # Remove pam module to authenticate against a DB |  | ||||||
| # plus libdb-5.3.so that is only used by this pam module |  | ||||||
| rm usr/lib/*/security/pam_userdb.so |  | ||||||
| rm usr/lib/*/libdb-5.3.so |  | ||||||
|  |  | ||||||
| # remove NSS support for nis, nisplus and hesiod |  | ||||||
| rm usr/lib/*/libnss_hesiod* |  | ||||||
| rm usr/lib/*/libnss_nis* |  | ||||||
|  |  | ||||||
| rm bin/tar |  | ||||||
| @@ -1 +0,0 @@ | |||||||
| u_format_test |  | ||||||
| @@ -1,121 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| ############### Install packages for building |  | ||||||
| apt-get -y install ca-certificates |  | ||||||
| sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list |  | ||||||
| echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list |  | ||||||
| dpkg --add-architecture armhf |  | ||||||
| apt-get update |  | ||||||
| apt-get -y install \ |  | ||||||
| 	bc \ |  | ||||||
| 	bison \ |  | ||||||
| 	bzip2 \ |  | ||||||
| 	ccache \ |  | ||||||
| 	cmake \ |  | ||||||
| 	crossbuild-essential-armhf \ |  | ||||||
| 	curl \ |  | ||||||
| 	flex \ |  | ||||||
| 	g++ \ |  | ||||||
| 	gettext \ |  | ||||||
| 	git \ |  | ||||||
| 	libdrm-dev \ |  | ||||||
| 	libdrm-dev:armhf \ |  | ||||||
| 	libelf-dev \ |  | ||||||
| 	libelf-dev:armhf \ |  | ||||||
| 	libexpat1-dev \ |  | ||||||
| 	libexpat1-dev:armhf \ |  | ||||||
| 	libgbm-dev \ |  | ||||||
| 	libgles2-mesa-dev \ |  | ||||||
| 	libpng-dev \ |  | ||||||
| 	libssl-dev \ |  | ||||||
| 	llvm-7-dev:armhf \ |  | ||||||
| 	llvm-8-dev \ |  | ||||||
| 	meson \ |  | ||||||
| 	ninja-build \ |  | ||||||
| 	pkg-config \ |  | ||||||
| 	procps \ |  | ||||||
| 	python \ |  | ||||||
| 	python3-mako \ |  | ||||||
| 	wget \ |  | ||||||
| 	zlib1g-dev |  | ||||||
|  |  | ||||||
| ############### Generate cross build file for Meson |  | ||||||
|  |  | ||||||
| cross_file="/cross_file-armhf.txt" |  | ||||||
| /usr/share/meson/debcrossgen --arch armhf -o "$cross_file" |  | ||||||
| # Explicitly set ccache path for cross compilers |  | ||||||
| sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file" |  | ||||||
| # Don't need wrapper for armhf executables |  | ||||||
| sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file" |  | ||||||
|  |  | ||||||
| export             LIBDRM_VERSION=libdrm-2.4.99 |  | ||||||
|  |  | ||||||
| ############### Build libdrm |  | ||||||
|  |  | ||||||
| wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2 |  | ||||||
| tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2 |  | ||||||
| cd $LIBDRM_VERSION; meson build/ -Detnaviv=true; ninja -C build/ install; cd .. |  | ||||||
| rm -rf $LIBDRM_VERSION |  | ||||||
|  |  | ||||||
| ############### Build dEQP |  | ||||||
|  |  | ||||||
| git config --global user.email "mesa@example.com" |  | ||||||
| git config --global user.name "Mesa CI" |  | ||||||
| # XXX: Use --depth 1 once we can drop the cherry-picks. |  | ||||||
| git clone \ |  | ||||||
|     https://github.com/KhronosGroup/VK-GL-CTS.git \ |  | ||||||
|     -b opengl-es-cts-3.2.5.1 \ |  | ||||||
|     /VK-GL-CTS |  | ||||||
| cd /VK-GL-CTS |  | ||||||
| # Fix surfaceless build |  | ||||||
| git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670 |  | ||||||
| git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648 |  | ||||||
|  |  | ||||||
| # surfaceless links against libkms and such despite not using it. |  | ||||||
| sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake |  | ||||||
| sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake |  | ||||||
| sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake |  | ||||||
|  |  | ||||||
| # --insecure is due to SSL cert failures hitting sourceforge for zlib and |  | ||||||
| # libpng (sigh).  The archives get their checksums checked anyway, and git |  | ||||||
| # always goes through ssh or https. |  | ||||||
| python3 external/fetch_sources.py --insecure |  | ||||||
|  |  | ||||||
| mkdir -p /deqp |  | ||||||
| cd /deqp |  | ||||||
| cmake -G Ninja \ |  | ||||||
|       -DDEQP_TARGET=surfaceless               \ |  | ||||||
|       -DCMAKE_BUILD_TYPE=Release              \ |  | ||||||
|       /VK-GL-CTS |  | ||||||
| ninja |  | ||||||
|  |  | ||||||
| # Copy out the mustpass lists we want from a bunch of other junk. |  | ||||||
| mkdir /deqp/mustpass |  | ||||||
| for gles in gles2 gles3 gles31; do |  | ||||||
|     cp \ |  | ||||||
|         /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.5.x/$gles-master.txt \ |  | ||||||
|         /deqp/mustpass/$gles-master.txt |  | ||||||
| done |  | ||||||
|  |  | ||||||
| rm -rf /deqp/external |  | ||||||
| rm -rf /deqp/modules/internal |  | ||||||
| rm -rf /deqp/executor |  | ||||||
| rm -rf /deqp/execserver |  | ||||||
| rm -rf /deqp/modules/egl |  | ||||||
| rm -rf /deqp/framework |  | ||||||
| du -sh * |  | ||||||
| rm -rf /VK-GL-CTS |  | ||||||
|  |  | ||||||
| ############### Uninstall the build software |  | ||||||
|  |  | ||||||
| apt-get purge -y \ |  | ||||||
|         cmake \ |  | ||||||
|         git \ |  | ||||||
|         libgbm-dev \ |  | ||||||
|         libgles2-mesa-dev \ |  | ||||||
|         wget |  | ||||||
|  |  | ||||||
| apt-get autoremove -y --purge |  | ||||||
| @@ -1,285 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| export DEBIAN_FRONTEND=noninteractive |  | ||||||
|  |  | ||||||
| CROSS_ARCHITECTURES="i386" |  | ||||||
| for arch in $CROSS_ARCHITECTURES; do |  | ||||||
|     dpkg --add-architecture $arch |  | ||||||
| done |  | ||||||
|  |  | ||||||
| apt-get install -y \ |  | ||||||
|       ca-certificates \ |  | ||||||
|       wget \ |  | ||||||
|       unzip |  | ||||||
|  |  | ||||||
| sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list |  | ||||||
| echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list |  | ||||||
|  |  | ||||||
| apt-get update |  | ||||||
|  |  | ||||||
| # Use newer packages from backports by default |  | ||||||
| cat >/etc/apt/preferences <<EOF |  | ||||||
| Package: * |  | ||||||
| Pin: release a=buster-backports |  | ||||||
| Pin-Priority: 500 |  | ||||||
| EOF |  | ||||||
|  |  | ||||||
| apt-get dist-upgrade -y |  | ||||||
|  |  | ||||||
| apt-get install -y --no-remove \ |  | ||||||
|       llvm-6.0-dev \ |  | ||||||
|       libclang-6.0-dev \ |  | ||||||
|       llvm-7-dev \ |  | ||||||
|       libclang-7-dev \ |  | ||||||
|       llvm-8-dev \ |  | ||||||
|       libclang-8-dev \ |  | ||||||
|       g++ \ |  | ||||||
|       clang-8 \ |  | ||||||
|       git \ |  | ||||||
|       bzip2 \ |  | ||||||
|       zlib1g-dev \ |  | ||||||
|       pkg-config \ |  | ||||||
|       libxrender-dev \ |  | ||||||
|       libxdamage-dev \ |  | ||||||
|       libxxf86vm-dev \ |  | ||||||
|       gcc \ |  | ||||||
|       git \ |  | ||||||
|       libepoxy-dev \ |  | ||||||
|       libegl1-mesa-dev \ |  | ||||||
|       libgbm-dev \ |  | ||||||
|       libclc-dev \ |  | ||||||
|       libxvmc-dev \ |  | ||||||
|       libomxil-bellagio-dev \ |  | ||||||
|       xz-utils \ |  | ||||||
|       libexpat1-dev \ |  | ||||||
|       libx11-xcb-dev \ |  | ||||||
|       libelf-dev \ |  | ||||||
|       libunwind-dev \ |  | ||||||
|       libglvnd-dev \ |  | ||||||
|       libgtk-3-dev \ |  | ||||||
|       libpng-dev \ |  | ||||||
|       libgbm-dev \ |  | ||||||
|       libgles2-mesa-dev \ |  | ||||||
|       libvulkan-dev \ |  | ||||||
|       python-mako \ |  | ||||||
|       python3-mako \ |  | ||||||
|       bison \ |  | ||||||
|       flex \ |  | ||||||
|       gettext \ |  | ||||||
|       cmake \ |  | ||||||
|       meson \ |  | ||||||
|       scons |  | ||||||
|  |  | ||||||
| # Cross-build Mesa deps |  | ||||||
| for arch in $CROSS_ARCHITECTURES; do |  | ||||||
|     apt-get install -y --no-remove \ |  | ||||||
|             libdrm-dev:${arch} \ |  | ||||||
|             libexpat1-dev:${arch} \ |  | ||||||
|             libelf-dev:${arch} \ |  | ||||||
|             crossbuild-essential-${arch} |  | ||||||
| done |  | ||||||
|  |  | ||||||
| # for 64bit windows cross-builds |  | ||||||
| apt-get install -y --no-remove \ |  | ||||||
|     mingw-w64 \ |  | ||||||
|     libz-mingw-w64-dev \ |  | ||||||
|     wine \ |  | ||||||
|     wine32 \ |  | ||||||
|     wine64 |  | ||||||
|  |  | ||||||
| # Debian's pkg-config wrapers for mingw are broken, and there's no sign that |  | ||||||
| # they're going to be fixed, so we'll just have to fix it ourselves |  | ||||||
| # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492 |  | ||||||
| cat >/usr/local/bin/x86_64-w64-mingw32-pkg-config <<EOF |  | ||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib/pkgconfig pkg-config \$@ |  | ||||||
| EOF |  | ||||||
| chmod +x /usr/local/bin/x86_64-w64-mingw32-pkg-config |  | ||||||
|  |  | ||||||
| # for the vulkan overlay layer |  | ||||||
| wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip |  | ||||||
| unzip glslang-master-linux-Release.zip bin/glslangValidator |  | ||||||
| install -m755 bin/glslangValidator /usr/local/bin/ |  | ||||||
| rm bin/glslangValidator glslang-master-linux-Release.zip |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # dependencies where we want a specific version |  | ||||||
| export              XORG_RELEASES=https://xorg.freedesktop.org/releases/individual |  | ||||||
| export               XCB_RELEASES=https://xcb.freedesktop.org/dist |  | ||||||
| export           WAYLAND_RELEASES=https://wayland.freedesktop.org/releases |  | ||||||
|  |  | ||||||
| export         XORGMACROS_VERSION=util-macros-1.19.0 |  | ||||||
| export            GLPROTO_VERSION=glproto-1.4.17 |  | ||||||
| export          DRI2PROTO_VERSION=dri2proto-2.8 |  | ||||||
| export       LIBPCIACCESS_VERSION=libpciaccess-0.13.4 |  | ||||||
| export             LIBDRM_VERSION=libdrm-2.4.100 |  | ||||||
| export           XCBPROTO_VERSION=xcb-proto-1.13 |  | ||||||
| export         RANDRPROTO_VERSION=randrproto-1.5.0 |  | ||||||
| export          LIBXRANDR_VERSION=libXrandr-1.5.0 |  | ||||||
| export             LIBXCB_VERSION=libxcb-1.13 |  | ||||||
| export       LIBXSHMFENCE_VERSION=libxshmfence-1.3 |  | ||||||
| export           LIBVDPAU_VERSION=libvdpau-1.1 |  | ||||||
| export              LIBVA_VERSION=libva-1.7.0 |  | ||||||
| export         LIBWAYLAND_VERSION=wayland-1.15.0 |  | ||||||
| export  WAYLAND_PROTOCOLS_VERSION=wayland-protocols-1.12 |  | ||||||
|  |  | ||||||
| wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2 |  | ||||||
| tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2 |  | ||||||
| cd $XORGMACROS_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $XORGMACROS_VERSION |  | ||||||
|  |  | ||||||
| wget $XORG_RELEASES/proto/$GLPROTO_VERSION.tar.bz2 |  | ||||||
| tar -xvf $GLPROTO_VERSION.tar.bz2 && rm $GLPROTO_VERSION.tar.bz2 |  | ||||||
| cd $GLPROTO_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $GLPROTO_VERSION |  | ||||||
|  |  | ||||||
| wget $XORG_RELEASES/proto/$DRI2PROTO_VERSION.tar.bz2 |  | ||||||
| tar -xvf $DRI2PROTO_VERSION.tar.bz2 && rm $DRI2PROTO_VERSION.tar.bz2 |  | ||||||
| cd $DRI2PROTO_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $DRI2PROTO_VERSION |  | ||||||
|  |  | ||||||
| wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2 |  | ||||||
| tar -xvf $XCBPROTO_VERSION.tar.bz2 && rm $XCBPROTO_VERSION.tar.bz2 |  | ||||||
| cd $XCBPROTO_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $XCBPROTO_VERSION |  | ||||||
|  |  | ||||||
| wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2 |  | ||||||
| tar -xvf $LIBXCB_VERSION.tar.bz2 && rm $LIBXCB_VERSION.tar.bz2 |  | ||||||
| cd $LIBXCB_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $LIBXCB_VERSION |  | ||||||
|  |  | ||||||
| wget $XORG_RELEASES/lib/$LIBPCIACCESS_VERSION.tar.bz2 |  | ||||||
| tar -xvf $LIBPCIACCESS_VERSION.tar.bz2 && rm $LIBPCIACCESS_VERSION.tar.bz2 |  | ||||||
| cd $LIBPCIACCESS_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $LIBPCIACCESS_VERSION |  | ||||||
|  |  | ||||||
| wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2 |  | ||||||
| tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2 |  | ||||||
| cd $LIBDRM_VERSION; ./configure --enable-vc4 --enable-freedreno --enable-etnaviv-experimental-api; make install; cd .. |  | ||||||
| rm -rf $LIBDRM_VERSION |  | ||||||
|  |  | ||||||
| wget $XORG_RELEASES/proto/$RANDRPROTO_VERSION.tar.bz2 |  | ||||||
| tar -xvf $RANDRPROTO_VERSION.tar.bz2 && rm $RANDRPROTO_VERSION.tar.bz2 |  | ||||||
| cd $RANDRPROTO_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $RANDRPROTO_VERSION |  | ||||||
|  |  | ||||||
| wget $XORG_RELEASES/lib/$LIBXRANDR_VERSION.tar.bz2 |  | ||||||
| tar -xvf $LIBXRANDR_VERSION.tar.bz2 && rm $LIBXRANDR_VERSION.tar.bz2 |  | ||||||
| cd $LIBXRANDR_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $LIBXRANDR_VERSION |  | ||||||
|  |  | ||||||
| wget $XORG_RELEASES/lib/$LIBXSHMFENCE_VERSION.tar.bz2 |  | ||||||
| tar -xvf $LIBXSHMFENCE_VERSION.tar.bz2 && rm $LIBXSHMFENCE_VERSION.tar.bz2 |  | ||||||
| cd $LIBXSHMFENCE_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $LIBXSHMFENCE_VERSION |  | ||||||
|  |  | ||||||
| wget https://people.freedesktop.org/~aplattner/vdpau/$LIBVDPAU_VERSION.tar.bz2 |  | ||||||
| tar -xvf $LIBVDPAU_VERSION.tar.bz2 && rm $LIBVDPAU_VERSION.tar.bz2 |  | ||||||
| cd $LIBVDPAU_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $LIBVDPAU_VERSION |  | ||||||
|  |  | ||||||
| wget https://www.freedesktop.org/software/vaapi/releases/libva/$LIBVA_VERSION.tar.bz2 |  | ||||||
| tar -xvf $LIBVA_VERSION.tar.bz2 && rm $LIBVA_VERSION.tar.bz2 |  | ||||||
| cd $LIBVA_VERSION; ./configure --disable-wayland --disable-dummy-driver; make install; cd .. |  | ||||||
| rm -rf $LIBVA_VERSION |  | ||||||
|  |  | ||||||
| wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz |  | ||||||
| tar -xvf $LIBWAYLAND_VERSION.tar.xz && rm $LIBWAYLAND_VERSION.tar.xz |  | ||||||
| cd $LIBWAYLAND_VERSION; ./configure --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make install; cd .. |  | ||||||
| rm -rf $LIBWAYLAND_VERSION |  | ||||||
|  |  | ||||||
| wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz |  | ||||||
| tar -xvf $WAYLAND_PROTOCOLS_VERSION.tar.xz && rm $WAYLAND_PROTOCOLS_VERSION.tar.xz |  | ||||||
| cd $WAYLAND_PROTOCOLS_VERSION; ./configure; make install; cd .. |  | ||||||
| rm -rf $WAYLAND_PROTOCOLS_VERSION |  | ||||||
|  |  | ||||||
| pushd /usr/local |  | ||||||
| git clone https://gitlab.freedesktop.org/mesa/shader-db.git --depth 1 |  | ||||||
| rm -rf shader-db/.git |  | ||||||
| cd shader-db |  | ||||||
| make |  | ||||||
| popd |  | ||||||
|  |  | ||||||
| # Use ccache to speed up builds |  | ||||||
| apt-get install -y --no-remove ccache |  | ||||||
|  |  | ||||||
| # We need xmllint to validate the XML files in Mesa |  | ||||||
| apt-get install -y --no-remove libxml2-utils |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # Generate cross build files for Meson |  | ||||||
| for arch in $CROSS_ARCHITECTURES; do |  | ||||||
|   cross_file="/cross_file-$arch.txt" |  | ||||||
|   /usr/share/meson/debcrossgen --arch "$arch" -o "$cross_file" |  | ||||||
|   # Explicitly set ccache path for cross compilers |  | ||||||
|   sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file" |  | ||||||
|   if [ "$arch" = "i386" ]; then |  | ||||||
|     # Work around a bug in debcrossgen that should be fixed in the next release |  | ||||||
|     sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$cross_file" |  | ||||||
|     # Don't need wrapper for i386 executables |  | ||||||
|     sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file" |  | ||||||
|   fi |  | ||||||
| done |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Build dEQP |  | ||||||
| git config --global user.email "mesa@example.com" |  | ||||||
| git config --global user.name "Mesa CI" |  | ||||||
| # XXX: Use --depth 1 once we can drop the cherry-picks. |  | ||||||
| git clone \ |  | ||||||
|     https://github.com/KhronosGroup/VK-GL-CTS.git \ |  | ||||||
|     -b opengl-es-cts-3.2.5.1 \ |  | ||||||
|     /VK-GL-CTS |  | ||||||
| cd /VK-GL-CTS |  | ||||||
| # Fix surfaceless build |  | ||||||
| git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670 |  | ||||||
| git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648 |  | ||||||
|  |  | ||||||
| # surfaceless links against libkms and such despite not using it. |  | ||||||
| sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake |  | ||||||
| sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake |  | ||||||
| sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake |  | ||||||
|  |  | ||||||
| python3 external/fetch_sources.py |  | ||||||
|  |  | ||||||
| mkdir -p /deqp |  | ||||||
| cd /deqp |  | ||||||
| cmake -G Ninja \ |  | ||||||
|       -DDEQP_TARGET=surfaceless               \ |  | ||||||
|       -DCMAKE_BUILD_TYPE=Release              \ |  | ||||||
|       /VK-GL-CTS |  | ||||||
| ninja |  | ||||||
|  |  | ||||||
| # Copy out the mustpass lists we want from a bunch of other junk. |  | ||||||
| mkdir /deqp/mustpass |  | ||||||
| for gles in gles2 gles3 gles31; do |  | ||||||
|     cp \ |  | ||||||
|         /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.5.x/$gles-master.txt \ |  | ||||||
|         /deqp/mustpass/$gles-master.txt |  | ||||||
| done |  | ||||||
|  |  | ||||||
| # Remove the rest of the build products that we don't need. |  | ||||||
| rm -rf /deqp/external |  | ||||||
| rm -rf /deqp/modules/internal |  | ||||||
| rm -rf /deqp/executor |  | ||||||
| rm -rf /deqp/execserver |  | ||||||
| rm -rf /deqp/modules/egl |  | ||||||
| rm -rf /deqp/framework |  | ||||||
| du -sh * |  | ||||||
| rm -rf /VK-GL-CTS |  | ||||||
|  |  | ||||||
| ############### Uninstall the build software |  | ||||||
|  |  | ||||||
| apt-get purge -y \ |  | ||||||
|       wget \ |  | ||||||
|       unzip \ |  | ||||||
|       cmake \ |  | ||||||
|       git \ |  | ||||||
|       libgles2-mesa-dev \ |  | ||||||
|       libgbm-dev |  | ||||||
|  |  | ||||||
| apt-get autoremove -y --purge |  | ||||||
| @@ -1,59 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| export DEBIAN_FRONTEND=noninteractive |  | ||||||
|  |  | ||||||
| apt-get install -y \ |  | ||||||
|       apt-transport-https \ |  | ||||||
|       ca-certificates |  | ||||||
|  |  | ||||||
| sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list |  | ||||||
| echo 'deb https://deb.debian.org/debian stretch-backports main' >/etc/apt/sources.list.d/backports.list |  | ||||||
|  |  | ||||||
| apt-get update |  | ||||||
|  |  | ||||||
| # Use newer packages from backports by default |  | ||||||
| cat >/etc/apt/preferences <<EOF |  | ||||||
| Package: * |  | ||||||
| Pin: release a=stretch-backports |  | ||||||
| Pin-Priority: 500 |  | ||||||
| EOF |  | ||||||
|  |  | ||||||
| apt-get dist-upgrade -y |  | ||||||
|  |  | ||||||
| apt-get install -y --no-remove \ |  | ||||||
|       llvm-3.9-dev \ |  | ||||||
|       libclang-3.9-dev \ |  | ||||||
|       llvm-4.0-dev \ |  | ||||||
|       libclang-4.0-dev \ |  | ||||||
|       llvm-5.0-dev \ |  | ||||||
|       libclang-5.0-dev \ |  | ||||||
|       g++ \ |  | ||||||
|       bzip2 \ |  | ||||||
|       ccache \ |  | ||||||
|       zlib1g-dev \ |  | ||||||
|       pkg-config \ |  | ||||||
|       gcc \ |  | ||||||
|       git \ |  | ||||||
|       libepoxy-dev \ |  | ||||||
|       libclc-dev \ |  | ||||||
|       xz-utils \ |  | ||||||
|       libdrm-dev \ |  | ||||||
|       libexpat1-dev \ |  | ||||||
|       libelf-dev \ |  | ||||||
|       libunwind-dev \ |  | ||||||
|       libpng-dev \ |  | ||||||
|       python-mako \ |  | ||||||
|       python3-mako \ |  | ||||||
|       bison \ |  | ||||||
|       flex \ |  | ||||||
|       gettext \ |  | ||||||
|       scons \ |  | ||||||
|       meson |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Uninstall unused packages |  | ||||||
|  |  | ||||||
| apt-get autoremove -y --purge |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| # Note: skips lists for CI are just a list of lines that, when |  | ||||||
| # non-zero-length and not starting with '#', will regex match to |  | ||||||
| # delete lines from the test list.  Be careful. |  | ||||||
|  |  | ||||||
| # Skip the perf/stress tests to keep runtime manageable |  | ||||||
| dEQP-GLES[0-9]*.performance |  | ||||||
| dEQP-GLES[0-9]*.stress |  | ||||||
|  |  | ||||||
| # These are really slow on tiling architectures (including llvmpipe). |  | ||||||
| dEQP-GLES[0-9]*.functional.flush_finish |  | ||||||
| @@ -1,33 +0,0 @@ | |||||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center |  | ||||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner |  | ||||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip |  | ||||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center |  | ||||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgb565_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgb565_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_tex2d_rgba_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_tex2d_rgb_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_l8_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgb888_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba4444_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba8888_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_l8_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgb888_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgba4444_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgba8888_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_l8_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgb888_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba4444_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba8888_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_l8_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgb888_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgba4444_npot |  | ||||||
| dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgba8888_npot |  | ||||||
| @@ -1,3 +0,0 @@ | |||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z |  | ||||||
| dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_clear |  | ||||||
| dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| # Note: skips lists for CI are just a list of lines that, when |  | ||||||
| # non-zero-length and not starting with '#', will regex match to |  | ||||||
| # delete lines from the test list.  Be careful. |  | ||||||
|  |  | ||||||
| # Skip the perf/stress tests to keep runtime manageable |  | ||||||
| dEQP-GLES[0-9]*.performance |  | ||||||
| dEQP-GLES[0-9]*.stress |  | ||||||
|  |  | ||||||
| # These are really slow on tiling architectures (including llvmpipe). |  | ||||||
| dEQP-GLES[0-9]*.functional.flush_finish |  | ||||||
|  |  | ||||||
| # Unstable test results |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.* |  | ||||||
| dEQP-GLES3.functional.transform_feedback.* |  | ||||||
| dEQP-GLES31.functional.primitive_bounding_box.* |  | ||||||
| dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_array |  | ||||||
|  |  | ||||||
| # Seen a couple flakes on this one.  Note that valgrind complains about |  | ||||||
| # some things in deqp reference renderer on this one.  Not sure if that |  | ||||||
| # is a real problem or perhaps valgrind gets confused about unitialized |  | ||||||
| # z24 channel in z24s8??  Let's just skip this one for now: |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8 |  | ||||||
|  |  | ||||||
| # Two reports of spurious failures on unrelated MRs (2019-09-27, 2019-10-05) |  | ||||||
| dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo.r16ui_2d |  | ||||||
|  |  | ||||||
| # Layered rendering is sysmem only and needs working clears |  | ||||||
| dEQP-GLES31.functional.geometry_shading.layered.* |  | ||||||
| dEQP-GLES31.functional.geometry_shading.instanced.*layer.* |  | ||||||
| @@ -1,982 +0,0 @@ | |||||||
| dEQP-GLES2.functional.depth_stencil_clear.stencil Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.stencil_masked Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.stencil_scissored Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.stencil_scissored_masked Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored_masked Fail |  | ||||||
| dEQP-GLES2.functional.buffer.write.use.index_array.array Fail |  | ||||||
| dEQP-GLES2.functional.buffer.write.use.index_array.element_array Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_float2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_float2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_12_float3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_12_float3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_16_float4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_16_float4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_4_short2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_4_short2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_6_short3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_6_short3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_short4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_short4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_2_byte2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_3_byte3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_3_byte3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_4_byte4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_4_byte4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_fixed2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_fixed2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_12_fixed3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_12_fixed3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_16_fixed4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_16_fixed4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float2_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float2_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float3_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float3_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float4_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float4_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short2_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short2_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short3_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short3_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short4_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short4_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte2_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte2_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte3_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte3_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte4_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte4_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_short2_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_short3_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_short4_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_short4_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte2_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte2_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte3_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte3_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte4_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte4_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed2_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed2_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed3_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed3_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed4_normalized_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed4_normalized_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float4_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float4_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float4_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float4_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte3_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte3_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte3_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte3_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short4_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short4_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short4_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec3_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec3_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec4_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec4_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_static_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_stream_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_static_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_stream_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_8_float2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_float2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_8_float2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_float2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_8_float2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_float2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_8_float2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_float2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_2_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_17_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_32_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_2_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_17_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_32_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_2_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_17_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_2_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_17_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_2_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_17_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_32_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_2_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_17_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_32_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_2_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_17_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_byte2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_2_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_17_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_byte2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_8_fixed2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_fixed2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_8_fixed2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_fixed2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_8_fixed2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_fixed2_vec2_dynamic_draw_quads_1 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_8_fixed2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_fixed2_vec2_dynamic_draw_quads_256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first6_offset16_stride8_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first24_offset16_stride8_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first6_offset16_stride32_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first24_offset16_stride32_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first6_offset16_stride8_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first24_offset16_stride8_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first6_offset16_stride32_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first24_offset16_stride32_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride2_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride2_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride17_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride17_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride32_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride32_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride2_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride2_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride17_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride17_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride32_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride32_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride2_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride2_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride17_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride17_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride32_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride32_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride2_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride2_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride17_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride17_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride32_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride32_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride2_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride2_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride17_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride17_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride32_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride32_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride2_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride2_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride17_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride17_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride32_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride32_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first6_offset16_stride8_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first24_offset16_stride8_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first6_offset16_stride32_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first24_offset16_stride32_quads5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first6_offset16_stride8_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first24_offset16_stride8_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first6_offset16_stride32_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first24_offset16_stride32_quads256 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.3 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.4 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.5 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.6 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.7 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_user_ptr_user_ptr_buffer Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_user_ptr_buffer_user_ptr Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_user_ptr_buffer_buffer Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_buffer_user_ptr_user_ptr Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_buffer_user_ptr_buffer Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_buffer_buffer_user_ptr Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_buffer_buffer_buffer Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_0_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_0_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_0_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_0_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_8_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_8_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_8_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_8_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_17_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_17_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_17_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_17_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_32_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_32_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_32_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_32_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_0_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_0_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_0_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_0_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_8_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_8_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_8_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_8_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_17_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_17_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_17_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_17_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_32_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_32_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_32_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_32_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_0_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_0_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_0_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_0_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_8_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_8_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_8_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_8_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_17_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_17_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_17_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_17_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_32_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_32_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_32_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_32_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_0_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_0_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_0_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_0_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_8_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_8_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_8_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_8_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_17_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_17_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_17_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_17_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_32_float2_0 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_32_float2_8 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_32_float2_17 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_32_float2_32 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_fixed2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_fixed2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_fixed2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_fixed2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_fixed2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_byte2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_byte2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_byte2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_byte2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_byte2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_short2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_short2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_short2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_short2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_short2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_byte2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_byte2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_byte2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_short2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_short2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_short2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_fixed2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_fixed2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_fixed2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_fixed2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_fixed2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_byte2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_byte2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_byte2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_byte2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_byte2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_short2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_short2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_short2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_short2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_short2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_byte2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_byte2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_byte2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_short2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_short2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_short2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_fixed2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_fixed2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_fixed2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_fixed2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_fixed2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_byte2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_byte2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_byte2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_byte2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_byte2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_short2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_short2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_short2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_short2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_short2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_byte2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_byte2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_byte2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_short2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_short2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_short2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_fixed2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_fixed2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_fixed2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_fixed2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_fixed2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_byte2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_byte2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_byte2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_byte2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_byte2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_short2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_short2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_short2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_short2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_short2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_byte2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_byte2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_byte2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_short2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_short2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_short2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_fixed2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_fixed2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_fixed2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_fixed2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_fixed2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_byte2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_byte2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_byte2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_byte2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_byte2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_short2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_short2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_short2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_short2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_short2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_byte2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_byte2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_byte2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_fixed2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_width_height_max_cube_neg_z BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_tex2d BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_x BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_y BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_z BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_x BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_y BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_z BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_incomplete_framebuffer BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_invalid_target BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_level_tex2d BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_level_cube BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_level_max_tex2d BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_level_max_cube_pos BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_offset BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_offset_allowed BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_wdt_hgt BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_incomplete_framebuffer BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.deletetextures_invalid_number BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.deletetextures_invalid_number_bind BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.generatemipmap_invalid_target BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.generatemipmap_npot_wdt_hgt BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.generatemipmap_zero_level_array_compressed BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.generatemipmap_incomplete_cube BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.gentextures_invalid_size BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.pixelstorei_invalid_pname BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.pixelstorei_invalid_param BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_target BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_format BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_type BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_inequal_width_height_cube BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_neg_level_tex2d BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_width_height_max_cube_neg_y BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_width_height_max_cube_neg_z BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_border BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_format_mismatch BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_type_format_mismatch BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_target BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_format BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_type BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_level_tex2d BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_level_cube BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_level_max_tex2d BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_level_max_cube BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_offset BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_offset_allowed BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_wdt_hgt BadTerminate |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_type_format_mismatch BadTerminate |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.triangles Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.triangle_strip Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.triangle_fan Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.lines Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.line_strip Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.line_loop Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.lines_wide Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.line_strip_wide Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.line_loop_wide Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.points Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.fill_rules.basic_quad Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.fill_rules.basic_quad_reverse Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.fill_rules.clipped_full Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.fill_rules.clipped_partly Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.fill_rules.projected Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.front_triangles Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.front_triangles_reverse Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.front_triangle_strip Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.front_triangle_strip_reverse Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.front_triangle_fan Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.front_triangle_fan_reverse Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.back_triangles Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.back_triangles_reverse Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.back_triangle_strip Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.back_triangle_strip_reverse Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.back_triangle_fan Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.culling.back_triangle_fan_reverse Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.triangles Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.triangle_strip Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.triangle_fan Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.lines Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.triangles Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.triangle_strip Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.triangle_fan Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.lines Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide Fail |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide Fail |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec2_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec3_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec3_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec3_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec4_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.float_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.float_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.float_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bool_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bool_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec2_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec2_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec2_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec3_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec3_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec3_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec4_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.int_ivec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.int_ivec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.bool_bvec4_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.bool_bvec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.bool_bvec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.int_ivec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.int_ivec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.int_ivec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.bool_bvec4_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.bool_bvec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.bool_bvec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.mat4_mat2_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.mat4_mat2_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.mat4_mat2_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic.float_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic.float_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec3_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec4_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.float_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.float_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.float_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.float_vec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.float_vec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.int_ivec4_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.int_ivec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.int_ivec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.bool_bvec4_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.bool_bvec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.bool_bvec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.int_ivec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.int_ivec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.int_ivec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.bool_bvec4_vertex BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.bool_bvec4_fragment BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.bool_bvec4_both BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_fragment BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_both BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.multiple_basic_array.vertex BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.40 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.41 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.42 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.43 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.44 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.45 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.46 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.47 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.48 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.49 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.50 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.51 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.52 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.53 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.54 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.55 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.88 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.89 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.90 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.91 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.92 BadTerminatePass |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.93 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.94 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.95 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.96 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.97 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.98 BadTerminate |  | ||||||
| dEQP-GLES2.functional.uniform_api.random.99 BadTerminate |  | ||||||
| dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_1 BadTerminate |  | ||||||
| dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_2 BadTerminate |  | ||||||
| dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_4 BadTerminate |  | ||||||
| dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_8 BadTerminate |  | ||||||
| dEQP-GLES2.functional.depth_range.write.reverse Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.half_to_zero Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.one_to_half Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.0_8_to_third Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.half_to_half Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.compare.reverse Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.compare.half_to_zero Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.compare.one_to_half Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.compare.0_8_to_third Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.compare.half_to_half Fail |  | ||||||
| dEQP-GLES2.functional.dither.disabled.gradient_white Fail |  | ||||||
| dEQP-GLES2.functional.dither.disabled.gradient_red Fail |  | ||||||
| dEQP-GLES2.functional.dither.disabled.gradient_green Fail |  | ||||||
| dEQP-GLES2.functional.dither.disabled.gradient_blue Fail |  | ||||||
| dEQP-GLES2.functional.dither.disabled.gradient_alpha Fail |  | ||||||
| dEQP-GLES2.functional.dither.disabled.unicolored_quad_white Fail |  | ||||||
| dEQP-GLES2.functional.dither.disabled.unicolored_quad_red Fail |  | ||||||
| dEQP-GLES2.functional.dither.disabled.unicolored_quad_green Fail |  | ||||||
| dEQP-GLES2.functional.dither.disabled.unicolored_quad_blue Fail |  | ||||||
| dEQP-GLES2.functional.dither.disabled.unicolored_quad_alpha Fail |  | ||||||
| dEQP-GLES2.functional.state_query.fbo.framebuffer_attachment_texture_cube_map_face BadTerminate |  | ||||||
| dEQP-GLES2.functional.state_query.rbo.renderbuffer_size BadTerminate |  | ||||||
| dEQP-GLES2.functional.state_query.rbo.renderbuffer_internal_format BadTerminate |  | ||||||
| dEQP-GLES2.functional.state_query.rbo.renderbuffer_component_size_color BadTerminate |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.first.first_0 Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.first.first_1 Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.first.first_17 Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.points.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.points.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.points.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.triangles.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.triangles.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.triangles.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_fan.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_fan.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_fan.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_strip.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_strip.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_strip.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.lines.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.lines.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.lines.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.line_strip.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.line_strip.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.line_strip.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.line_loop.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.line_loop.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_arrays.line_loop.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.indices.user_ptr.index_byte Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.indices.user_ptr.index_short Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.indices.unaligned_user_ptr.index_short Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.indices.buffer.index_byte Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.indices.buffer.index_short Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.points.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.points.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.points.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.triangles.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.triangles.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.triangles.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_fan.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_fan.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_fan.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_strip.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_strip.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_strip.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.lines.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.lines.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.lines.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.line_strip.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.line_strip.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.line_strip.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.line_loop.single_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.line_loop.multiple_attributes Fail |  | ||||||
| dEQP-GLES2.functional.draw.draw_elements.line_loop.default_attribute Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.0 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.1 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.2 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.6 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.8 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.9 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.10 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.12 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.14 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.16 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.17 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.18 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.20 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.21 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.25 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.26 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.28 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.30 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.31 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.32 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.33 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.34 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.36 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.37 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.39 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.40 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.41 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.42 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.43 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.44 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.45 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.46 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.47 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.48 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.49 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.50 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.51 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.52 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.56 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.58 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.61 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.62 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.63 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.65 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.67 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.69 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.70 Fail |  | ||||||
| dEQP-GLES2.functional.draw.random.71 Fail |  | ||||||
| @@ -1,21 +0,0 @@ | |||||||
| # Note: skips lists for CI are just a list of lines that, when |  | ||||||
| # non-zero-length and not starting with '#', will regex match to |  | ||||||
| # delete lines from the test list.  Be careful. |  | ||||||
|  |  | ||||||
| # Skip the perf/stress tests to keep runtime manageable |  | ||||||
| dEQP-GLES[0-9]*.performance |  | ||||||
| dEQP-GLES[0-9]*.stress |  | ||||||
|  |  | ||||||
| # These are really slow on tiling architectures (including llvmpipe). |  | ||||||
| dEQP-GLES[0-9]*.functional.flush_finish |  | ||||||
|  |  | ||||||
| dEQP-GLES2.accuracy.texture.* |  | ||||||
| dEQP-GLES2.functional.clipping.* |  | ||||||
| dEQP-GLES2.functional.fbo.render.depth.* |  | ||||||
| dEQP-GLES2.functional.fbo.render.* |  | ||||||
| dEQP-GLES2.functional.fbo.completeness.* |  | ||||||
| dEQP-GLES2.functional.fragment_ops.* |  | ||||||
| dEQP-GLES2.functional.light_amount.* |  | ||||||
| dEQP-GLES2.functional.polygon_offset.* |  | ||||||
| dEQP-GLES2.functional.shaders.* |  | ||||||
| dEQP-GLES2.functional.texture.* |  | ||||||
| @@ -1,124 +0,0 @@ | |||||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center |  | ||||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner |  | ||||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip |  | ||||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center |  | ||||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.depth.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.no_rebind_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.polygon_offset.default_displacement_with_units |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.limits.points |  | ||||||
| dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2d_bias |  | ||||||
| dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec3_bias |  | ||||||
| dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec4_bias |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_clamp_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_etc1 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_repeat_etc1 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_repeat_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_clamp_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_etc1 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_etc1 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_l8 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgb888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgba4444 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_clamp_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_mirror_etc1 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_mirror_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_repeat_etc1 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_repeat_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_clamp_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_mirror_etc1 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_mirror_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_etc1 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_l8 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgb888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgba4444 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.affine.linear_linear_repeat |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_clamp |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_mirror |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_repeat |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.linear_linear_repeat |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.linear_linear_repeat_non_square |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_clamp |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_clamp_non_square |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_mirror |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_mirror_non_square |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_repeat |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_repeat_non_square |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.projected.linear_linear_repeat |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_clamp |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_mirror |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_repeat |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear |  | ||||||
| dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_clamp |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_mirror |  | ||||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_repeat |  | ||||||
| @@ -1,728 +0,0 @@ | |||||||
| dEQP-GLES2.functional.depth_range.write.0_8_to_third Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.clamp_both Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.clamp_far Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.clamp_near Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.default Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.half_to_half Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.half_to_one Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.half_to_zero Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.one_to_half Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.one_to_one Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.reverse Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.third_to_0_8 Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.zero_to_half Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_scissored Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_scissored_masked Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored_masked Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_dst_color_one_minus_src_color Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_zero_dst_alpha Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_zero_dst_color Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_zero_one Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.dst.one_minus_src_color_one_minus_src_alpha Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.dst.one_minus_src_color_one_minus_src_color Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.0 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.10 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.11 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.12 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.13 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.14 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.15 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.16 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.17 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.18 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.19 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.1 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.20 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.21 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.22 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.23 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.24 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.2 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.3 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.4 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.5 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.6 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.7 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.8 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.9 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.both Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.stencil Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.11 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.13 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.15 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.17 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.18 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.19 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.20 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.22 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.26 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.39 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.42 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.44 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.47 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.48 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.57 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.60 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.61 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.64 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.68 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.72 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.75 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.77 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.79 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.8 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.93 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.98 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.0 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.11 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.19 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.24 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.25 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.32 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.37 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.3 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.45 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.48 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.53 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.56 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.63 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.65 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.66 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.67 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.68 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.6 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.72 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.75 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.81 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.87 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.94 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.96 Fail |  | ||||||
| dEQP-GLES2.functional.polygon_offset.default_render_with_units Fail |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope Fail |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units Fail |  | ||||||
| dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_fragment Fail |  | ||||||
| dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_vertex Fail |  | ||||||
| @@ -1,63 +0,0 @@ | |||||||
| # Note: skips lists for CI are just a list of lines that, when |  | ||||||
| # non-zero-length and not starting with '#', will regex match to |  | ||||||
| # delete lines from the test list.  Be careful. |  | ||||||
|  |  | ||||||
| # Skip the perf/stress tests to keep runtime manageable |  | ||||||
| dEQP-GLES[0-9]*.performance |  | ||||||
| dEQP-GLES[0-9]*.stress |  | ||||||
|  |  | ||||||
| # These are really slow on tiling architectures (including llvmpipe). |  | ||||||
| dEQP-GLES[0-9]*.functional.flush_finish |  | ||||||
|  |  | ||||||
| dEQP-GLES2.functional.fbo.render.depth.* |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_pos_y_pos_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.* |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.* |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgb5_a1 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgb |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgba |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.stencil_clear.rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.stencil.rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.stencil.rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.lifetime.attach.deleted_input.renderbuffer_framebuffer |  | ||||||
| dEQP-GLES2.functional.lifetime.attach.deleted_output.renderbuffer_framebuffer |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_0_slope |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope |  | ||||||
| dEQP-GLES2.functional.shaders.invariance.highp.loop_4 |  | ||||||
| dEQP-GLES2.functional.shaders.matrix.mul.dynamic_highp_mat4_vec4_vertex |  | ||||||
| dEQP-GLES2.functional.shaders.matrix.mul.dynamic_highp_vec4_mat4_fragment |  | ||||||
| dEQP-GLES2.functional.shaders.operator.common_functions.smoothstep.mediump_vec3_vertex |  | ||||||
| dEQP-GLES2.functional.shaders.random.all_features.fragment.12 |  | ||||||
| dEQP-GLES2.functional.shaders.random.all_features.fragment.37 |  | ||||||
| dEQP-GLES2.functional.texture.units.2_units.mixed.1 |  | ||||||
| dEQP-GLES2.functional.texture.units.2_units.mixed.3 |  | ||||||
| dEQP-GLES2.functional.texture.units.2_units.only_2d.2 |  | ||||||
| dEQP-GLES2.functional.texture.units.4_units.mixed.5 |  | ||||||
| dEQP-GLES2.functional.texture.units.4_units.only_2d.0 |  | ||||||
| dEQP-GLES2.functional.texture.units.8_units.only_cube.2 |  | ||||||
| dEQP-GLES2.functional.texture.units.all_units.mixed.6 |  | ||||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.4 |  | ||||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.7 |  | ||||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.8 |  | ||||||
|  |  | ||||||
| @@ -1,722 +0,0 @@ | |||||||
| dEQP-GLES2.functional.depth_range.write.0_8_to_third Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.clamp_both Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.clamp_far Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.clamp_near Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.default Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.half_to_half Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.half_to_one Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.half_to_zero Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.one_to_half Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.one_to_one Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.reverse Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.third_to_0_8 Fail |  | ||||||
| dEQP-GLES2.functional.depth_range.write.zero_to_half Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_scissored Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_scissored_masked Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored Fail |  | ||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored_masked Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.0 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.10 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.11 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.12 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.13 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.14 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.15 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.16 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.17 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.18 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.19 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.1 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.20 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.21 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.22 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.23 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.24 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.2 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.3 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.4 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.5 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.6 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.7 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.8 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.9 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_always Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_equal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_gequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_greater Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_lequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_less Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_never Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_notequal Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_no_depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_decr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_decr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_incr Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_incr_wrap Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_invert Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_keep Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_replace Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_zero Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.both Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.depth Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.stencil Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.11 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.13 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.15 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.17 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.18 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.19 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.20 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.22 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.26 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.39 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.42 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.44 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.47 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.48 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.57 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.60 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.61 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.64 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.68 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.72 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.75 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.77 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.79 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.8 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.93 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.98 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.0 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.11 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.19 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.24 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.25 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.32 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.37 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.3 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.45 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.48 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.53 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.56 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.63 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.65 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.66 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.67 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.68 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.6 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.72 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.75 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.81 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.87 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.94 Fail |  | ||||||
| dEQP-GLES2.functional.fragment_ops.random.96 Fail |  | ||||||
| dEQP-GLES2.functional.polygon_offset.default_render_with_units Fail |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope Fail |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units Fail |  | ||||||
| dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_fragment Fail |  | ||||||
| dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_vertex Fail |  | ||||||
| @@ -1,63 +0,0 @@ | |||||||
| # Note: skips lists for CI are just a list of lines that, when |  | ||||||
| # non-zero-length and not starting with '#', will regex match to |  | ||||||
| # delete lines from the test list.  Be careful. |  | ||||||
|  |  | ||||||
| # Skip the perf/stress tests to keep runtime manageable |  | ||||||
| dEQP-GLES[0-9]*.performance |  | ||||||
| dEQP-GLES[0-9]*.stress |  | ||||||
|  |  | ||||||
| # These are really slow on tiling architectures (including llvmpipe). |  | ||||||
| dEQP-GLES[0-9]*.functional.flush_finish |  | ||||||
|  |  | ||||||
| dEQP-GLES2.functional.fbo.render.depth.* |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_pos_y_pos_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.* |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.* |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgb5_a1 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgb |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgba |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.stencil_clear.rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.stencil.rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.stencil.rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.lifetime.attach.deleted_input.renderbuffer_framebuffer |  | ||||||
| dEQP-GLES2.functional.lifetime.attach.deleted_output.renderbuffer_framebuffer |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_0_slope |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope |  | ||||||
| dEQP-GLES2.functional.shaders.invariance.highp.loop_4 |  | ||||||
| dEQP-GLES2.functional.shaders.matrix.mul.dynamic_highp_mat4_vec4_vertex |  | ||||||
| dEQP-GLES2.functional.shaders.matrix.mul.dynamic_highp_vec4_mat4_fragment |  | ||||||
| dEQP-GLES2.functional.shaders.operator.common_functions.smoothstep.mediump_vec3_vertex |  | ||||||
| dEQP-GLES2.functional.shaders.random.all_features.fragment.12 |  | ||||||
| dEQP-GLES2.functional.shaders.random.all_features.fragment.37 |  | ||||||
| dEQP-GLES2.functional.texture.units.2_units.mixed.1 |  | ||||||
| dEQP-GLES2.functional.texture.units.2_units.mixed.3 |  | ||||||
| dEQP-GLES2.functional.texture.units.2_units.only_2d.2 |  | ||||||
| dEQP-GLES2.functional.texture.units.4_units.mixed.5 |  | ||||||
| dEQP-GLES2.functional.texture.units.4_units.only_2d.0 |  | ||||||
| dEQP-GLES2.functional.texture.units.8_units.only_cube.2 |  | ||||||
| dEQP-GLES2.functional.texture.units.all_units.mixed.6 |  | ||||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.4 |  | ||||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.7 |  | ||||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.8 |  | ||||||
|  |  | ||||||
| @@ -1,136 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| DEQP_OPTIONS=(--deqp-surface-width=256 --deqp-surface-height=256) |  | ||||||
| DEQP_OPTIONS+=(--deqp-surface-type=pbuffer) |  | ||||||
| DEQP_OPTIONS+=(--deqp-gl-config-name=rgba8888d24s8ms0) |  | ||||||
| DEQP_OPTIONS+=(--deqp-visibility=hidden) |  | ||||||
| DEQP_OPTIONS+=(--deqp-log-images=disable) |  | ||||||
| DEQP_OPTIONS+=(--deqp-crashhandler=enable) |  | ||||||
|  |  | ||||||
| # It would be nice to be able to enable the watchdog, so that hangs in a test |  | ||||||
| # don't need to wait the full hour for the run to time out.  However, some |  | ||||||
| # shaders end up taking long enough to compile |  | ||||||
| # (dEQP-GLES31.functional.ubo.random.all_per_block_buffers.20 for example) |  | ||||||
| # that they'll sporadically trigger the watchdog. |  | ||||||
| #DEQP_OPTIONS+=(--deqp-watchdog=enable) |  | ||||||
|  |  | ||||||
| if [ -z "$DEQP_VER" ]; then |  | ||||||
|    echo 'DEQP_VER must be set to something like "gles2" or "gles31" for the test run' |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ -z "$DEQP_SKIPS" ]; then |  | ||||||
|    echo 'DEQP_SKIPS must be set to something like "deqp-default-skips.txt"' |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # Prep the expected failure list |  | ||||||
| if [ -n "$DEQP_EXPECTED_FAILS" ]; then |  | ||||||
|    export DEQP_EXPECTED_FAILS=`pwd`/artifacts/$DEQP_EXPECTED_FAILS |  | ||||||
| else |  | ||||||
|    export DEQP_EXPECTED_FAILS=/tmp/expect-no-failures.txt |  | ||||||
|    touch $DEQP_EXPECTED_FAILS |  | ||||||
| fi |  | ||||||
| sort < $DEQP_EXPECTED_FAILS > /tmp/expected-fails.txt |  | ||||||
|  |  | ||||||
| # Fix relative paths on inputs. |  | ||||||
| export DEQP_SKIPS=`pwd`/artifacts/$DEQP_SKIPS |  | ||||||
|  |  | ||||||
| # Be a good citizen on the shared runners. |  | ||||||
| export LP_NUM_THREADS=4 |  | ||||||
|  |  | ||||||
| # Set up the driver environment. |  | ||||||
| export LD_LIBRARY_PATH=`pwd`/install/lib/ |  | ||||||
| export EGL_PLATFORM=surfaceless |  | ||||||
|  |  | ||||||
| # the runner was failing to look for libkms in /usr/local/lib for some reason |  | ||||||
| # I never figured out. |  | ||||||
| export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib |  | ||||||
|  |  | ||||||
| RESULTS=`pwd`/results |  | ||||||
| mkdir -p $RESULTS |  | ||||||
|  |  | ||||||
| cd /deqp/modules/$DEQP_VER |  | ||||||
|  |  | ||||||
| # Generate test case list file |  | ||||||
| cp /deqp/mustpass/$DEQP_VER-master.txt /tmp/case-list.txt |  | ||||||
|  |  | ||||||
| # Note: not using sorted input and comm, becuase I want to run the tests in |  | ||||||
| # the same order that dEQP would. |  | ||||||
| while read -r line; do |  | ||||||
|    if echo "$line" | grep -q '^[^#]'; then |  | ||||||
|        sed -i "/$line/d" /tmp/case-list.txt |  | ||||||
|    fi |  | ||||||
| done < $DEQP_SKIPS |  | ||||||
|  |  | ||||||
| # If the job is parallel, take the corresponding fraction of the caselist. |  | ||||||
| # Note: N~M is a gnu sed extension to match every nth line (first line is #1). |  | ||||||
| if [ -n "$CI_NODE_INDEX" ]; then |  | ||||||
|    sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" /tmp/case-list.txt |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ ! -s /tmp/case-list.txt ]; then |  | ||||||
|     echo "Caselist generation failed" |  | ||||||
|     exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # Cannot use tee because dash doesn't have pipefail |  | ||||||
| touch /tmp/result.txt |  | ||||||
| tail -f /tmp/result.txt & |  | ||||||
|  |  | ||||||
| ./deqp-$DEQP_VER "${DEQP_OPTIONS[@]}" --deqp-log-filename=$RESULTS/results.qpa --deqp-caselist-file=/tmp/case-list.txt >> /tmp/result.txt |  | ||||||
| DEQP_EXITCODE=$? |  | ||||||
|  |  | ||||||
| sed -ne \ |  | ||||||
|     '/StatusCode="Fail"/{x;p}; s/#beginTestCaseResult //; T; h' \ |  | ||||||
|     $RESULTS/results.qpa \ |  | ||||||
|     > /tmp/unsorted-fails.txt |  | ||||||
|  |  | ||||||
| # Scrape out the renderer that the test run used, so we can validate that the |  | ||||||
| # right driver was used. |  | ||||||
| if grep -q "dEQP-.*.info.renderer" /tmp/case-list.txt; then |  | ||||||
|     # This is an ugly dependency on the .qpa format: Print 3 lines after the |  | ||||||
|     # match, which happens to contain the result. |  | ||||||
|     RENDERER=`sed -n '/#beginTestCaseResult dEQP-.*.info.renderer/{n;n;n;p}' $RESULTS/results.qpa | sed -n -E "s|<Text>(.*)</Text>|\1|p"` |  | ||||||
|  |  | ||||||
|     echo "GL_RENDERER for this test run: $RENDERER" |  | ||||||
|  |  | ||||||
|     if [ -n "$DEQP_RENDERER_MATCH" ]; then |  | ||||||
|         echo $RENDERER | grep -q $DEQP_RENDERER_MATCH > /dev/null |  | ||||||
|     fi |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if grep -q "dEQP-.*.info.version" /tmp/case-list.txt; then |  | ||||||
|     # This is an ugly dependency on the .qpa format: Print 3 lines after the |  | ||||||
|     # match, which happens to contain the result. |  | ||||||
|     VERSION=`sed -n '/#beginTestCaseResult dEQP-.*.info.version/{n;n;n;p}' $RESULTS/results.qpa | sed -n -E "s|<Text>(.*)</Text>|\1|p"` |  | ||||||
|     echo "Driver version tested: $VERSION" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ $DEQP_EXITCODE -ne 0 ]; then |  | ||||||
|    exit $DEQP_EXITCODE |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| sort < /tmp/unsorted-fails.txt > $RESULTS/fails.txt |  | ||||||
|  |  | ||||||
| comm -23 $RESULTS/fails.txt /tmp/expected-fails.txt > /tmp/new-fails.txt |  | ||||||
| if [ -s /tmp/new-fails.txt ]; then |  | ||||||
|     echo "Unexpected failures:" |  | ||||||
|     cat /tmp/new-fails.txt |  | ||||||
|     exit 1 |  | ||||||
| else |  | ||||||
|     echo "No new failures" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| sort /tmp/case-list.txt > /tmp/sorted-case-list.txt |  | ||||||
| comm -12 /tmp/sorted-case-list.txt /tmp/expected-fails.txt > /tmp/expected-fails-in-caselist.txt |  | ||||||
| comm -13 $RESULTS/fails.txt /tmp/expected-fails-in-caselist.txt > /tmp/new-passes.txt |  | ||||||
| if [ -s /tmp/new-passes.txt ]; then |  | ||||||
|     echo "Unexpected passes, please update $DEQP_EXPECTED_FAILS (or add flaky tests to $DEQP_SKIPS):" |  | ||||||
|     cat /tmp/new-passes.txt |  | ||||||
|     exit 1 |  | ||||||
| else |  | ||||||
|     echo "No new passes" |  | ||||||
| fi |  | ||||||
| @@ -1,445 +0,0 @@ | |||||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center |  | ||||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner |  | ||||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip |  | ||||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center |  | ||||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z |  | ||||||
| dEQP-GLES2.functional.polygon_offset.default_displacement_with_units |  | ||||||
| dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide |  | ||||||
| dEQP-GLES2.functional.rasterization.limits.points |  | ||||||
| dEQP-GLES2.functional.rasterization.primitives.points |  | ||||||
| dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_center |  | ||||||
| dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_corner |  | ||||||
| dEQP-GLES3.functional.clipping.point.wide_point_clip |  | ||||||
| dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center |  | ||||||
| dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner |  | ||||||
| dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z |  | ||||||
| dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z |  | ||||||
| dEQP-GLES3.functional.draw.random.124 |  | ||||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth24_stencil8 |  | ||||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8 |  | ||||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component16 |  | ||||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component24 |  | ||||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f |  | ||||||
| dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8 |  | ||||||
| dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_color |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth_stencil |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_stencil |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_color |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth_stencil |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_stencil |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth24_stencil8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth32f_stencil8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component16 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component24 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component32f |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.r11f_g11f_b10f |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.r16f |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.r8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rg16f |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rg8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgb10_a2 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgb565 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgb5_a1 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgb8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgba4 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgba8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.srgb8_alpha8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.depth24_stencil8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.depth32f_stencil8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component16 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component24 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component32f |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.r11f_g11f_b10f |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.r16f |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.r8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rg16f |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rg8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgb10_a2 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgb565 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgb5_a1 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgb8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgba4 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgba8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.srgb8_alpha8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.stencil_index8 |  | ||||||
| dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_alpha_to_coverage |  | ||||||
| dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage |  | ||||||
| dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage_inverted |  | ||||||
| dEQP-GLES3.functional.multisample.fbo_max_samples.sample_coverage_invert |  | ||||||
| dEQP-GLES3.functional.negative_api.buffer.blit_framebuffer_multisample |  | ||||||
| dEQP-GLES3.functional.negative_api.buffer.read_pixels_fbo_format_mismatch |  | ||||||
| dEQP-GLES3.functional.polygon_offset.default_displacement_with_units |  | ||||||
| dEQP-GLES3.functional.polygon_offset.fixed16_displacement_with_units |  | ||||||
| dEQP-GLES3.functional.polygon_offset.fixed24_displacement_with_units |  | ||||||
| dEQP-GLES3.functional.polygon_offset.float32_displacement_with_units |  | ||||||
| dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.points |  | ||||||
| dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.points |  | ||||||
| dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.primitives.points |  | ||||||
| dEQP-GLES3.functional.rasterizer_discard.basic.write_depth_points |  | ||||||
| dEQP-GLES3.functional.rasterizer_discard.basic.write_stencil_points |  | ||||||
| dEQP-GLES3.functional.rasterizer_discard.fbo.write_depth_points |  | ||||||
| dEQP-GLES3.functional.rasterizer_discard.fbo.write_stencil_points |  | ||||||
| dEQP-GLES3.functional.rasterizer_discard.scissor.write_depth_points |  | ||||||
| dEQP-GLES3.functional.rasterizer_discard.scissor.write_stencil_points |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec2_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.state_query.integers.max_samples_getfloat |  | ||||||
| dEQP-GLES3.functional.state_query.integers.max_samples_getinteger64 |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_nearest_mipmap_linear |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_clamp |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_clamp |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_clamp |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_nearest_linear_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_clamp |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_linear_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_mipmap_linear_linear_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_mipmap_nearest_linear_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_clamp |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_clamp |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_clamp |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_clamp |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_repeat |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_clamp |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_mirror |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_repeat |  | ||||||
| dEQP-GLES3.functional.texture.wrap.astc_8x8.repeat_repeat_linear_divisible |  | ||||||
| dEQP-GLES3.functional.texture.wrap.astc_8x8.repeat_repeat_linear_not_divisible |  | ||||||
| dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb.repeat_repeat_linear_divisible |  | ||||||
| dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb.repeat_repeat_linear_not_divisible |  | ||||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads1 |  | ||||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads256 |  | ||||||
| @@ -1,58 +0,0 @@ | |||||||
| #!/usr/bin/env python3 |  | ||||||
|  |  | ||||||
| from jinja2 import Environment, FileSystemLoader |  | ||||||
| import argparse |  | ||||||
|  |  | ||||||
| device_types = { |  | ||||||
|     "rk3288-veyron-jaq": { |  | ||||||
|         "gpu_version": "panfrost-t760", |  | ||||||
|         "boot_method": "depthcharge", |  | ||||||
|         "lava_device_type": "rk3288-veyron-jaq", |  | ||||||
|         "kernel_image_type": "", |  | ||||||
|     }, |  | ||||||
|     "rk3399-gru-kevin": { |  | ||||||
|         "gpu_version": "panfrost-t860", |  | ||||||
|         "boot_method": "depthcharge", |  | ||||||
|         "lava_device_type": "rk3399-gru-kevin", |  | ||||||
|         "kernel_image_type": "", |  | ||||||
|     }, |  | ||||||
|     "sun8i-h3-libretech-all-h3-cc": { |  | ||||||
|         "gpu_version": "lima", |  | ||||||
|         "boot_method": "u-boot", |  | ||||||
|         "lava_device_type": "sun8i-h3-libretech-all-h3-cc", |  | ||||||
|         "kernel_image_type": "type: zimage", |  | ||||||
|     }, |  | ||||||
|     "meson-gxl-s905x-libretech-cc": { |  | ||||||
|         "gpu_version": "lima", |  | ||||||
|         "boot_method": "u-boot", |  | ||||||
|         "lava_device_type": "meson-gxl-s905x-libretech-cc", |  | ||||||
|         "kernel_image_type": "type: image", |  | ||||||
|     }, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| parser = argparse.ArgumentParser() |  | ||||||
| parser.add_argument("--template") |  | ||||||
| parser.add_argument("--base-artifacts-url") |  | ||||||
| parser.add_argument("--arch") |  | ||||||
| parser.add_argument("--device-types", nargs="+") |  | ||||||
| parser.add_argument("--kernel-image-name") |  | ||||||
| args = parser.parse_args() |  | ||||||
|  |  | ||||||
| env = Environment(loader = FileSystemLoader('.'), trim_blocks=True, lstrip_blocks=True) |  | ||||||
| template = env.get_template(args.template) |  | ||||||
|  |  | ||||||
| for device_type in args.device_types: |  | ||||||
|     values = {} |  | ||||||
|     values['base_artifacts_url'] = args.base_artifacts_url |  | ||||||
|     values['arch'] = args.arch |  | ||||||
|     values['device_type'] = device_type |  | ||||||
|     values['kernel_image_name'] = args.kernel_image_name |  | ||||||
|     values['lava_device_type'] = device_types[device_type]['lava_device_type'] |  | ||||||
|     values['gpu_version'] = device_types[device_type]['gpu_version'] |  | ||||||
|     values['boot_method'] = device_types[device_type]['boot_method'] |  | ||||||
|     values['kernel_image_type'] = device_types[device_type]['kernel_image_type'] |  | ||||||
|  |  | ||||||
|     f = open('results/lava-deqp-%s.yml' % device_type, "w") |  | ||||||
|     f.write(template.render(values)) |  | ||||||
|     f.close() |  | ||||||
|  |  | ||||||
| @@ -1,187 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| ############### Install packages for building |  | ||||||
| dpkg --add-architecture ${DEBIAN_ARCH} |  | ||||||
| echo 'deb-src https://deb.debian.org/debian testing main' > /etc/apt/sources.list.d/deb-src.list |  | ||||||
| apt-get update |  | ||||||
| apt-get -y install ca-certificates |  | ||||||
| apt-get -y install --no-install-recommends \ |  | ||||||
| 	crossbuild-essential-${DEBIAN_ARCH} \ |  | ||||||
| 	meson \ |  | ||||||
| 	g++ \ |  | ||||||
| 	git \ |  | ||||||
| 	ccache \ |  | ||||||
| 	pkg-config \ |  | ||||||
| 	python3-mako \ |  | ||||||
| 	python-numpy \ |  | ||||||
| 	python-six \ |  | ||||||
| 	python-mako \ |  | ||||||
| 	python3-pip \ |  | ||||||
| 	python3-setuptools \ |  | ||||||
| 	python3-six \ |  | ||||||
| 	python3-wheel \ |  | ||||||
| 	python3-jinja2 \ |  | ||||||
| 	bison \ |  | ||||||
| 	flex \ |  | ||||||
| 	gettext \ |  | ||||||
| 	cmake \ |  | ||||||
| 	bc \ |  | ||||||
| 	libssl-dev \ |  | ||||||
| 	lqa \ |  | ||||||
| 	csvkit \ |  | ||||||
| 	curl \ |  | ||||||
| 	unzip \ |  | ||||||
| 	wget \ |  | ||||||
| 	debootstrap \ |  | ||||||
| 	procps \ |  | ||||||
| 	qemu-user-static \ |  | ||||||
| 	cpio \ |  | ||||||
| 	clang-8 \ |  | ||||||
| 	llvm-8 \ |  | ||||||
| 	libclang-8-dev \ |  | ||||||
| 	llvm-8-dev \ |  | ||||||
| 	gdc-9 \ |  | ||||||
| 	lld-8 \ |  | ||||||
| 	nasm \ |  | ||||||
| 	libegl1-mesa-dev \ |  | ||||||
| 	\ |  | ||||||
| 	libdrm-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libx11-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxxf86vm-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libexpat1-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libsensors-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxfixes-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxdamage-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxext-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	x11proto-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libx11-xcb-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxcb-dri2-0-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxcb-glx0-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxcb-xfixes0-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxcb-dri3-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxcb-present-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxcb-randr0-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxcb-sync-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxrandr-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libxshmfence-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libelf-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	zlib1g-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libglvnd-core-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libgles2-mesa-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libegl1-mesa-dev:${DEBIAN_ARCH} \ |  | ||||||
| 	libpng-dev:${DEBIAN_ARCH} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Install lavacli (remove after it's back into Debian testing) |  | ||||||
| mkdir -p lavacli |  | ||||||
| wget -qO- https://git.lavasoftware.org/lava/lavacli/-/archive/v0.9.8/lavacli-v0.9.8.tar.gz | tar -xz --strip-components=1 -C lavacli |  | ||||||
| pushd lavacli |  | ||||||
| python3 ./setup.py install |  | ||||||
| popd |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Cross-build dEQP |  | ||||||
| mkdir -p /artifacts/rootfs/deqp |  | ||||||
|  |  | ||||||
| git config --global user.email "mesa@example.com" |  | ||||||
| git config --global user.name "Mesa CI" |  | ||||||
| # XXX: Use --depth 1 once we can drop the cherry-picks. |  | ||||||
| git clone \ |  | ||||||
|     https://github.com/KhronosGroup/VK-GL-CTS.git \ |  | ||||||
|     -b opengl-es-cts-3.2.5.1 \ |  | ||||||
|     /VK-GL-CTS |  | ||||||
| cd /VK-GL-CTS |  | ||||||
| # Fix surfaceless build |  | ||||||
| git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670 |  | ||||||
| git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648 |  | ||||||
|  |  | ||||||
| # surfaceless links against libkms and such despite not using it. |  | ||||||
| sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake |  | ||||||
| sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake |  | ||||||
| sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake |  | ||||||
|  |  | ||||||
| python3 external/fetch_sources.py |  | ||||||
|  |  | ||||||
| cd /artifacts/rootfs/deqp |  | ||||||
| cmake -G Ninja                                \ |  | ||||||
|       -DDEQP_TARGET=surfaceless               \ |  | ||||||
|       -DCMAKE_BUILD_TYPE=Release              \ |  | ||||||
|       -DCMAKE_C_COMPILER=${GCC_ARCH}-gcc      \ |  | ||||||
|       -DCMAKE_CXX_COMPILER=${GCC_ARCH}-g++    \ |  | ||||||
|       /VK-GL-CTS |  | ||||||
| ninja |  | ||||||
| rm -rf /artifacts/rootfs/deqp/external |  | ||||||
| rm -rf /artifacts/rootfs/deqp/modules/gles31 |  | ||||||
| rm -rf /artifacts/rootfs/deqp/modules/internal |  | ||||||
| rm -rf /artifacts/rootfs/deqp/executor |  | ||||||
| rm -rf /artifacts/rootfs/deqp/execserver |  | ||||||
| rm -rf /artifacts/rootfs/deqp/modules/egl |  | ||||||
| rm -rf /artifacts/rootfs/deqp/framework |  | ||||||
| find . -name CMakeFiles | xargs rm -rf |  | ||||||
| find . -name lib\*.a | xargs rm -rf |  | ||||||
| du -sh * |  | ||||||
| rm -rf /VK-GL-CTS-opengl-es-cts-3.2.5.0 |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Cross-build Volt dEQP runner |  | ||||||
| mkdir -p /battery |  | ||||||
| cd /battery |  | ||||||
| wget https://github.com/VoltLang/Battery/releases/download/v0.1.23/battery-0.1.23-x86_64-linux.tar.gz |  | ||||||
| tar xzvf battery-0.1.23-x86_64-linux.tar.gz |  | ||||||
| rm battery-0.1.23-x86_64-linux.tar.gz |  | ||||||
| mv battery /usr/local/bin |  | ||||||
| rm -rf /battery |  | ||||||
|  |  | ||||||
| mkdir -p /volt |  | ||||||
| cd /volt |  | ||||||
| mkdir -p Watt Volta dEQP |  | ||||||
| wget -qO- https://github.com/VoltLang/Watt/archive/v0.1.3.tar.gz | tar -xz --strip-components=1 -C ./Watt |  | ||||||
| wget -qO- https://github.com/VoltLang/Volta/archive/v0.1.3.tar.gz | tar -xz --strip-components=1 -C ./Volta |  | ||||||
| wget -qO- https://github.com/Wallbraker/dEQP/archive/v0.1.4.tar.gz | tar -xz --strip-components=1 -C ./dEQP |  | ||||||
| battery config --release --lto Volta Watt |  | ||||||
| battery build |  | ||||||
| battery config --arch ${VOLT_ARCH} --cmd-volta Volta/volta Volta/rt Watt dEQP |  | ||||||
| battery build |  | ||||||
| rm /usr/local/bin/battery |  | ||||||
| cp dEQP/deqp /artifacts/rootfs/deqp/deqp-volt |  | ||||||
| rm -rf /volt |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Remove LLVM now, so the container image is smaller |  | ||||||
| apt-get -y remove \*llvm\* |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Cross-build kernel |  | ||||||
| KERNEL_URL="https://gitlab.freedesktop.org/tomeu/linux/-/archive/panfrost-veyron-fix/linux-panfrost-veyron-fix.tar.gz" |  | ||||||
| export ARCH=${KERNEL_ARCH} |  | ||||||
| export CROSS_COMPILE="${GCC_ARCH}-" |  | ||||||
|  |  | ||||||
| mkdir -p /kernel |  | ||||||
| wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C /kernel |  | ||||||
| cd /kernel |  | ||||||
| ./scripts/kconfig/merge_config.sh ${DEFCONFIG} /tmp/clone/.gitlab-ci/${KERNEL_ARCH}.config |  | ||||||
| make -j12 ${KERNEL_IMAGE_NAME} dtbs |  | ||||||
| cp arch/${KERNEL_ARCH}/boot/${KERNEL_IMAGE_NAME} /artifacts/. |  | ||||||
| cp ${DEVICE_TREES} /artifacts/. |  | ||||||
| rm -rf /kernel |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Create rootfs |  | ||||||
| cp /tmp/clone/.gitlab-ci/create-rootfs.sh /artifacts/rootfs/. |  | ||||||
| mkdir -p /artifacts/rootfs/bin |  | ||||||
| cp /usr/bin/qemu-aarch64-static /artifacts/rootfs/bin |  | ||||||
| cp /usr/bin/qemu-arm-static /artifacts/rootfs/bin |  | ||||||
|  |  | ||||||
| set +e |  | ||||||
| debootstrap --variant=minbase --arch=${DEBIAN_ARCH} testing /artifacts/rootfs/ http://deb.debian.org/debian |  | ||||||
| cat /artifacts/rootfs/debootstrap/debootstrap.log |  | ||||||
| set -e |  | ||||||
| chroot /artifacts/rootfs sh /create-rootfs.sh |  | ||||||
|  |  | ||||||
| rm /artifacts/rootfs/bin/qemu-arm-static |  | ||||||
| rm /artifacts/rootfs/bin/qemu-aarch64-static |  | ||||||
| rm /artifacts/rootfs/create-rootfs.sh |  | ||||||
|  |  | ||||||
| @@ -1,51 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| GPU_VERSION="$1" |  | ||||||
|  |  | ||||||
| DEQP_OPTIONS="--deqp-surface-width=256 --deqp-surface-height=256" |  | ||||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-visibility=hidden" |  | ||||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-log-images=disable" |  | ||||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-watchdog=enable" |  | ||||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-crashhandler=enable" |  | ||||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-type=pbuffer" |  | ||||||
|  |  | ||||||
| export LIBGL_DRIVERS_PATH=/mesa/lib/dri/ |  | ||||||
| export LD_LIBRARY_PATH=/mesa/lib/ |  | ||||||
| export MESA_GLES_VERSION_OVERRIDE=3.0 |  | ||||||
|  |  | ||||||
| DEVFREQ_GOVERNOR=`echo /sys/devices/platform/*.gpu/devfreq/devfreq0/governor` |  | ||||||
| echo performance > $DEVFREQ_GOVERNOR |  | ||||||
|  |  | ||||||
| cd /deqp/modules/gles2 |  | ||||||
|  |  | ||||||
| # Generate test case list file |  | ||||||
| ./deqp-gles2 $DEQP_OPTIONS --deqp-runmode=stdout-caselist | grep "TEST: dEQP-GLES2" | cut -d ' ' -f 2 > /tmp/case-list.txt |  | ||||||
|  |  | ||||||
| # Note: not using sorted input and comm, becuase I want to run the tests in |  | ||||||
| # the same order that dEQP would. |  | ||||||
| while read -r line; do |  | ||||||
|    if echo "$line" | grep -q '^[^#]'; then |  | ||||||
|        sed -i "/$line/d" /tmp/case-list.txt |  | ||||||
|    fi |  | ||||||
| done < /deqp/deqp-$GPU_VERSION-skips.txt |  | ||||||
|  |  | ||||||
| /deqp/deqp-volt --cts-build-dir=/deqp \ |  | ||||||
|                 --threads=8 \ |  | ||||||
|                 --test-names-file=/tmp/case-list.txt \ |  | ||||||
|                 --results-file=/tmp/results.txt \ |  | ||||||
|                 --no-passed-results \ |  | ||||||
|                 --regression-file=/deqp/deqp-$GPU_VERSION-fails.txt \ |  | ||||||
|                 --no-rerun-tests \ |  | ||||||
|                 --print-regression \ |  | ||||||
|                 --no-print-fail \ |  | ||||||
|                 --no-print-quality \ |  | ||||||
|                 --no-colour-term \ |  | ||||||
|                  $DEQP_OPTIONS |  | ||||||
|  |  | ||||||
| if [ $? -ne 0 ]; then |  | ||||||
|     echo "Regressions detected" |  | ||||||
|     echo "deqp: fail" |  | ||||||
| else |  | ||||||
|     echo "No regressions detected" |  | ||||||
|     echo "deqp: pass" |  | ||||||
| fi |  | ||||||
| @@ -1,61 +0,0 @@ | |||||||
| job_name: mesa-deqp-{{ gpu_version }} |  | ||||||
| device_type: {{ lava_device_type }} |  | ||||||
| timeouts: |  | ||||||
|   job: |  | ||||||
|     minutes: 40 |  | ||||||
|   action: |  | ||||||
|    minutes: 10 |  | ||||||
|   actions: |  | ||||||
|     power-off: |  | ||||||
|       seconds: 30 |  | ||||||
| priority: 75 |  | ||||||
| visibility: public |  | ||||||
| actions: |  | ||||||
| - deploy: |  | ||||||
|     timeout: |  | ||||||
|       minutes: 10 |  | ||||||
|     to: tftp |  | ||||||
|     kernel: |  | ||||||
|       url: {{ base_artifacts_url }}/{{ kernel_image_name }} |  | ||||||
|       {{ kernel_image_type }} |  | ||||||
|     ramdisk: |  | ||||||
|       url: {{ base_artifacts_url }}/lava-rootfs-{{ arch }}.cpio.gz |  | ||||||
|       compression: gz |  | ||||||
|     dtb: |  | ||||||
|       url: {{ base_artifacts_url }}/{{ device_type }}.dtb |  | ||||||
|     os: oe |  | ||||||
| - boot: |  | ||||||
|     timeout: |  | ||||||
|       minutes: 5 |  | ||||||
|     method: {{ boot_method }} |  | ||||||
|     commands: ramdisk |  | ||||||
|     prompts: |  | ||||||
|       - '#'  |  | ||||||
| - test: |  | ||||||
|     timeout: |  | ||||||
|       minutes: 60 |  | ||||||
|     definitions: |  | ||||||
|     - repository: |  | ||||||
|         metadata: |  | ||||||
|           format: Lava-Test Test Definition 1.0 |  | ||||||
|           name: deqp |  | ||||||
|           description: "Mesa dEQP test plan" |  | ||||||
|           os: |  | ||||||
|           - oe |  | ||||||
|           scope: |  | ||||||
|           - functional |  | ||||||
|         run: |  | ||||||
|           steps: |  | ||||||
|           - mount -t proc none /proc |  | ||||||
|           - mount -t sysfs none /sys  |  | ||||||
|           - mount -t devtmpfs none /dev |  | ||||||
|           - mkdir -p /dev/pts |  | ||||||
|           - mount -t devpts devpts /dev/pts |  | ||||||
|           - echo 3 > /proc/sys/kernel/printk |  | ||||||
|           - sh /deqp/lava-deqp-runner.sh {{ gpu_version }} |  | ||||||
|           - cat /proc/loadavg |  | ||||||
|         parse: |  | ||||||
|           pattern: '(?P<test_case_id>\S*):\s+(?P<result>(pass|fail))' |  | ||||||
|       from: inline |  | ||||||
|       name: deqp |  | ||||||
|       path: inline/mesa-deqp.yaml |  | ||||||
| @@ -1,209 +0,0 @@ | |||||||
| variables: |  | ||||||
|     LAVA_DEBIAN_VERSION: testing-slim |  | ||||||
|     LAVA_IMAGE_TAG: "lava-2019-10-23-1" |  | ||||||
|  |  | ||||||
| include: |  | ||||||
|   - project: 'wayland/ci-templates' |  | ||||||
|     ref: 1f7f57c64ff4ebbf7292e3b7a13600518b8cb24c |  | ||||||
|     file: '/templates/debian.yml' |  | ||||||
|  |  | ||||||
| # When to automatically run the CI |  | ||||||
| .ci-run-policy: |  | ||||||
|   only: |  | ||||||
|     - branches@mesa/mesa |  | ||||||
|     - merge_requests |  | ||||||
|     - /^ci([-/].*)?$/ |  | ||||||
|   retry: |  | ||||||
|     max: 2 |  | ||||||
|     when: |  | ||||||
|       - runner_system_failure |  | ||||||
|  |  | ||||||
| # Build Docker image with deqp, the rootfs and the build deps for Mesa |  | ||||||
| .lava-container: |  | ||||||
|   extends: |  | ||||||
|     - .debian@container-ifnot-exists |  | ||||||
|     - .container |  | ||||||
|   variables: |  | ||||||
|     DEBIAN_TAG: '${DEBIAN_ARCH}-${LAVA_IMAGE_TAG}' |  | ||||||
|     DEBIAN_EXEC: 'DEBIAN_ARCH=${DEBIAN_ARCH} |  | ||||||
|                   GCC_ARCH=${GCC_ARCH} |  | ||||||
|                   KERNEL_ARCH=${KERNEL_ARCH} |  | ||||||
|                   VOLT_ARCH=${VOLT_ARCH} |  | ||||||
|                   DEFCONFIG=${DEFCONFIG} |  | ||||||
|                   DEVICE_TREES="${DEVICE_TREES}" |  | ||||||
|                   KERNEL_IMAGE_NAME=${KERNEL_IMAGE_NAME} |  | ||||||
|                   bash .gitlab-ci/lava-debian-install.sh' |  | ||||||
|     DEBIAN_VERSION: ${LAVA_DEBIAN_VERSION} |  | ||||||
|  |  | ||||||
| lava-container:armhf: |  | ||||||
|   extends: .lava-container |  | ||||||
|   variables: |  | ||||||
|     DEBIAN_ARCH: "armhf" |  | ||||||
|     GCC_ARCH: "arm-linux-gnueabihf" |  | ||||||
|     KERNEL_ARCH: "arm" |  | ||||||
|     VOLT_ARCH: "armhf" |  | ||||||
|     DEFCONFIG: "arch/arm/configs/multi_v7_defconfig" |  | ||||||
|     DEVICE_TREES: "arch/arm/boot/dts/rk3288-veyron-jaq.dtb arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb" |  | ||||||
|     KERNEL_IMAGE_NAME: "zImage" |  | ||||||
|  |  | ||||||
| lava-container:arm64: |  | ||||||
|   extends: .lava-container |  | ||||||
|   variables: |  | ||||||
|     DEBIAN_ARCH: "arm64" |  | ||||||
|     GCC_ARCH: "aarch64-linux-gnu" |  | ||||||
|     KERNEL_ARCH: "arm64" |  | ||||||
|     VOLT_ARCH: "aarch64" |  | ||||||
|     DEFCONFIG: "arch/arm64/configs/defconfig" |  | ||||||
|     DEVICE_TREES: "arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dtb" |  | ||||||
|     KERNEL_IMAGE_NAME: "Image" |  | ||||||
|  |  | ||||||
| .lava-build: |  | ||||||
|   image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:$DEBIAN_ARCH-$LAVA_IMAGE_TAG |  | ||||||
|   extends: |  | ||||||
|     - .build-linux |  | ||||||
|   # Use ccache transparently, and print stats before/after |  | ||||||
|   before_script: |  | ||||||
|     - mkdir -p results mesa-build |  | ||||||
|     - mkdir -p ccache |  | ||||||
|     - export PATH="/usr/lib/ccache:$PATH" |  | ||||||
|     - export CCACHE_BASEDIR="$PWD" |  | ||||||
|     - export CCACHE_DIR="$PWD/ccache" |  | ||||||
|     - ccache --max-size=1500M |  | ||||||
|     - ccache --zero-stats || true |  | ||||||
|     - ccache --show-stats || true |  | ||||||
|   script: |  | ||||||
|     # Build Mesa |  | ||||||
|     - /usr/share/meson/debcrossgen --arch ${DEBIAN_ARCH} -o /tmp/cross_file.txt |  | ||||||
|     - meson . mesa-build |  | ||||||
|         --cross-file /tmp/cross_file.txt |  | ||||||
|         --libdir /artifacts/rootfs/mesa/lib/ |  | ||||||
|         --buildtype debugoptimized |  | ||||||
|         -D gallium-drivers=kmsro,panfrost,lima |  | ||||||
|         -D dri-drivers= |  | ||||||
|         -D prefix=/artifacts/rootfs/mesa |  | ||||||
|         -D glx=disabled |  | ||||||
|         -D gbm=false |  | ||||||
|         -D egl=true |  | ||||||
|         -D platforms=surfaceless |  | ||||||
|         -D osmesa=none |  | ||||||
|         -D dri3=false |  | ||||||
|         -D gallium-vdpau=false |  | ||||||
|         -D gallium-xvmc=false |  | ||||||
|         -D gallium-omx=disabled |  | ||||||
|         -D gallium-va=false |  | ||||||
|         -D gallium-xa=false |  | ||||||
|         -D gallium-nine=false |  | ||||||
|         -D llvm=false |  | ||||||
|     - ninja -C mesa-build -j4 |  | ||||||
|     - ninja -C mesa-build install |  | ||||||
|     - find /artifacts/rootfs/mesa/lib -name \*.so -exec ${GCC_ARCH}-strip {} \; |  | ||||||
|  |  | ||||||
|     - du -sh /artifacts/rootfs/mesa/* |  | ||||||
|     - rm -rf /artifacts/rootfs/mesa/include |  | ||||||
|  |  | ||||||
|     # Pack rootfs |  | ||||||
|     - cp .gitlab-ci/lava-deqp-runner.sh /artifacts/rootfs/deqp/. |  | ||||||
|     - cp .gitlab-ci/deqp-*-fails.txt /artifacts/rootfs/deqp/. |  | ||||||
|     - cp .gitlab-ci/deqp-*-skips.txt /artifacts/rootfs/deqp/. |  | ||||||
|     - du -sh /artifacts/rootfs/deqp/* |  | ||||||
|     - find /artifacts/rootfs/ -type f -printf "%s\t%p\n" | sort -n |  | ||||||
|     - pushd /artifacts/rootfs/ ; find -H  |  cpio -H newc -v -o | gzip -c - > $CI_PROJECT_DIR/results/lava-rootfs-${DEBIAN_ARCH}.cpio.gz; popd |  | ||||||
|  |  | ||||||
|     # Copy kernel and DT |  | ||||||
|     - cp /artifacts/${KERNEL_IMAGE_NAME} /artifacts/*.dtb $CI_PROJECT_DIR/results/. |  | ||||||
|  |  | ||||||
|     # Generate LAVA job |  | ||||||
|     - cd $CI_PROJECT_DIR |  | ||||||
|     - .gitlab-ci/generate_lava.py |  | ||||||
|         --template .gitlab-ci/lava-deqp.yml.jinja2 |  | ||||||
|         --arch ${DEBIAN_ARCH} |  | ||||||
|         --base-artifacts-url $CI_PROJECT_URL/-/jobs/$CI_JOB_ID/artifacts/raw/results |  | ||||||
|         --device-types ${DEVICE_TYPES} |  | ||||||
|         --kernel-image-name ${KERNEL_IMAGE_NAME} |  | ||||||
|   after_script: |  | ||||||
|     - export CCACHE_DIR="$PWD/ccache" |  | ||||||
|     - ccache --show-stats |  | ||||||
|   artifacts: |  | ||||||
|     when: always |  | ||||||
|     paths: |  | ||||||
|       - results/ |  | ||||||
|  |  | ||||||
| lava-build:armhf: |  | ||||||
|   extends: .lava-build |  | ||||||
|   needs: ["lava-container:armhf"] |  | ||||||
|   variables: |  | ||||||
|     DEBIAN_ARCH: "armhf" |  | ||||||
|     GCC_ARCH: "arm-linux-gnueabihf" |  | ||||||
|     DEVICE_TYPES: "rk3288-veyron-jaq sun8i-h3-libretech-all-h3-cc" |  | ||||||
|     KERNEL_IMAGE_NAME: "zImage" |  | ||||||
|  |  | ||||||
| lava-build:arm64: |  | ||||||
|   extends: .lava-build |  | ||||||
|   needs: ["lava-container:arm64"] |  | ||||||
|   variables: |  | ||||||
|     DEBIAN_ARCH: "arm64" |  | ||||||
|     GCC_ARCH: "aarch64-linux-gnu" |  | ||||||
|     DEVICE_TYPES: "rk3399-gru-kevin meson-gxl-s905x-libretech-cc" |  | ||||||
|     KERNEL_IMAGE_NAME: "Image" |  | ||||||
|  |  | ||||||
| .lava-test: |  | ||||||
|   extends: |  | ||||||
|     - .test |  | ||||||
|   script: |  | ||||||
|     - lava_job_id=`lavacli jobs submit $CI_PROJECT_DIR/results/lava-deqp-$DEVICE_TYPE.yml` |  | ||||||
|     - echo $lava_job_id |  | ||||||
|     - lavacli jobs logs $lava_job_id | grep -a -v "{'case':" | tee results/lava-deqp-$lava_job_id.log |  | ||||||
|     - lavacli jobs show $lava_job_id |  | ||||||
|     - result=`lavacli results $lava_job_id 0_deqp deqp | head -1` |  | ||||||
|     - echo $result |  | ||||||
|     - '[[ "$result" == "pass" ]]' |  | ||||||
|   artifacts: |  | ||||||
|     when: always |  | ||||||
|     paths: |  | ||||||
|       - results/ |  | ||||||
|  |  | ||||||
| .lava-test:armhf: |  | ||||||
|   image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:armhf-$LAVA_IMAGE_TAG |  | ||||||
|   extends: .lava-test |  | ||||||
|   needs: |  | ||||||
|     - lava-container:armhf |  | ||||||
|     - lava-build:armhf |  | ||||||
|   dependencies: |  | ||||||
|     - lava-build:armhf |  | ||||||
|  |  | ||||||
| .lava-test:arm64: |  | ||||||
|   image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:arm64-$LAVA_IMAGE_TAG |  | ||||||
|   extends: .lava-test |  | ||||||
|   needs: |  | ||||||
|     - lava-container:arm64 |  | ||||||
|     - lava-build:arm64 |  | ||||||
|   dependencies: |  | ||||||
|     - lava-build:arm64 |  | ||||||
|  |  | ||||||
| panfrost-t760-test:armhf: |  | ||||||
|   extends: .lava-test:armhf |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: rk3288-veyron-jaq |  | ||||||
|   tags: |  | ||||||
|     - lava-rk3288-veyron-jaq |  | ||||||
|  |  | ||||||
| panfrost-t860-test:arm64: |  | ||||||
|   extends: .lava-test:arm64 |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: rk3399-gru-kevin |  | ||||||
|   tags: |  | ||||||
|     - lava-rk3399-gru-kevin |  | ||||||
|  |  | ||||||
| lima-test:armhf: |  | ||||||
|   extends: .lava-test:armhf |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: sun8i-h3-libretech-all-h3-cc |  | ||||||
|   tags: |  | ||||||
|     - lava-sun8i-h3-libretech-all-h3-cc |  | ||||||
|  |  | ||||||
| lima-test:arm64: |  | ||||||
|   extends: .lava-test:arm64 |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: meson-gxl-s905x-libretech-cc |  | ||||||
|   tags: |  | ||||||
|     - lava-meson-gxl-s905x-libretech-cc |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| call "C:\Program Files (x86)\Microsoft Visual Studio\%VERSION%\Common7\Tools\VsDevCmd.bat" -arch=%ARCH% |  | ||||||
|  |  | ||||||
| del /Q /S _build |  | ||||||
| meson _build ^ |  | ||||||
|         -Dbuild-tests=true ^ |  | ||||||
|         -Db_vscrt=mtd ^ |  | ||||||
|         -Dbuildtype=release ^ |  | ||||||
|         -Dllvm=false ^ |  | ||||||
|         -Dgallium-drivers=swrast ^ |  | ||||||
|         -Dosmesa=gallium |  | ||||||
| meson configure _build |  | ||||||
| ninja -C _build |  | ||||||
| ninja -C _build test |  | ||||||
| @@ -1,89 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| CROSS_FILE=/cross_file-"$CROSS".txt |  | ||||||
|  |  | ||||||
| # We need to control the version of llvm-config we're using, so we'll |  | ||||||
| # tweak the cross file or generate a native file to do so. |  | ||||||
| if test -n "$LLVM_VERSION"; then |  | ||||||
|     LLVM_CONFIG="llvm-config-${LLVM_VERSION}" |  | ||||||
|     echo -e "[binaries]\nllvm-config = '`which $LLVM_CONFIG`'" > native.file |  | ||||||
|     if [ -n "$CROSS" ]; then |  | ||||||
|         sed -i -e '/\[binaries\]/a\' -e "llvm-config = '`which $LLVM_CONFIG`'" $CROSS_FILE |  | ||||||
|     fi |  | ||||||
|     $LLVM_CONFIG --version |  | ||||||
| else |  | ||||||
|     rm -f native.file |  | ||||||
|     touch native.file |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # cross-xfail-$CROSS, if it exists, contains a list of tests that are expected |  | ||||||
| # to fail for the $CROSS configuration, one per line. you can then mark those |  | ||||||
| # tests in their meson.build with: |  | ||||||
| # |  | ||||||
| # test(..., |  | ||||||
| #      should_fail: meson.get_cross_property('xfail', '').contains(t), |  | ||||||
| #     ) |  | ||||||
| # |  | ||||||
| # where t is the name of the test, and the '' is the string to search when |  | ||||||
| # not cross-compiling (which is empty, because for amd64 everything is |  | ||||||
| # expected to pass). |  | ||||||
| if [ -n "$CROSS" ]; then |  | ||||||
|     CROSS_XFAIL=.gitlab-ci/cross-xfail-"$CROSS" |  | ||||||
|     if [ -s "$CROSS_XFAIL" ]; then |  | ||||||
|         sed -i \ |  | ||||||
|             -e '/\[properties\]/a\' \ |  | ||||||
|             -e "xfail = '$(tr '\n' , < $CROSS_XFAIL)'" \ |  | ||||||
|             "$CROSS_FILE" |  | ||||||
|     fi |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| rm -rf _build |  | ||||||
| meson _build --native-file=native.file \ |  | ||||||
|       --wrap-mode=nofallback \ |  | ||||||
|       ${CROSS+--cross "$CROSS_FILE"} \ |  | ||||||
|       -D prefix=`pwd`/install \ |  | ||||||
|       -D libdir=lib \ |  | ||||||
|       -D buildtype=${BUILDTYPE:-debug} \ |  | ||||||
|       -D build-tests=true \ |  | ||||||
|       -D libunwind=${UNWIND} \ |  | ||||||
|       ${DRI_LOADERS} \ |  | ||||||
|       -D dri-drivers=${DRI_DRIVERS:-[]} \ |  | ||||||
|       ${GALLIUM_ST} \ |  | ||||||
|       -D gallium-drivers=${GALLIUM_DRIVERS:-[]} \ |  | ||||||
|       -D vulkan-drivers=${VULKAN_DRIVERS:-[]} \ |  | ||||||
|       -D I-love-half-baked-turnips=true \ |  | ||||||
|       ${EXTRA_OPTION} |  | ||||||
| cd _build |  | ||||||
| meson configure |  | ||||||
| ninja -j4 |  | ||||||
| LC_ALL=C.UTF-8 ninja test |  | ||||||
| ninja install |  | ||||||
| cd .. |  | ||||||
|  |  | ||||||
| if test -n "$MESON_SHADERDB"; then |  | ||||||
|     ./.gitlab-ci/run-shader-db.sh; |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # Delete 2MB of includes from artifacts. |  | ||||||
| rm -rf install/include |  | ||||||
|  |  | ||||||
| # Strip the drivers in the artifacts to cut 80% of the artifacts size. |  | ||||||
| if [ -n "$CROSS" ]; then |  | ||||||
|     STRIP=`sed -n -E "s/strip\s*=\s*'(.*)'/\1/p" "$CROSS_FILE"` |  | ||||||
|     if [ -z "$STRIP" ]; then |  | ||||||
|         echo "Failed to find strip command in cross file" |  | ||||||
|         exit 1 |  | ||||||
|     fi |  | ||||||
| else |  | ||||||
|     STRIP="strip" |  | ||||||
| fi |  | ||||||
| find install -name \*.so -exec $STRIP {} \; |  | ||||||
|  |  | ||||||
| # Test runs don't pull down the git tree, so put the dEQP helper |  | ||||||
| # script and associated bits there. |  | ||||||
| mkdir -p artifacts/ |  | ||||||
| cp -Rp .gitlab-ci/deqp* artifacts/ |  | ||||||
| # cp -Rp src/freedreno/ci/expected* artifacts/ |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| set -e |  | ||||||
| set -v |  | ||||||
|  |  | ||||||
| ARTIFACTSDIR=`pwd`/shader-db |  | ||||||
| mkdir -p $ARTIFACTSDIR |  | ||||||
| export DRM_SHIM_DEBUG=true |  | ||||||
|  |  | ||||||
| LIBDIR=`pwd`/install/lib |  | ||||||
| export LD_LIBRARY_PATH=$LIBDIR |  | ||||||
|  |  | ||||||
| cd /usr/local/shader-db |  | ||||||
|  |  | ||||||
| for driver in freedreno v3d; do |  | ||||||
|     env LD_PRELOAD=$LIBDIR/lib${driver}_noop_drm_shim.so \ |  | ||||||
|         ./run -j 4 ./shaders \ |  | ||||||
|             > $ARTIFACTSDIR/${driver}-shader-db.txt |  | ||||||
| done |  | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| if test -n "$LLVM_VERSION"; then |  | ||||||
|     export LLVM_CONFIG="llvm-config-${LLVM_VERSION}" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| rm -rf build |  | ||||||
| scons $SCONS_TARGET force_scons=on |  | ||||||
| eval $SCONS_CHECK_COMMAND  |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| [binaries] |  | ||||||
| c = ['ccache', 'x86_64-w64-mingw32-gcc'] |  | ||||||
| cpp = ['ccache', 'x86_64-w64-mingw32-g++'] |  | ||||||
| ar = 'x86_64-w64-mingw32-ar' |  | ||||||
| strip = 'x86_64-w64-mingw32-strip' |  | ||||||
| pkgconfig = '/usr/local/bin/x86_64-w64-mingw32-pkg-config' |  | ||||||
| windres = 'x86_64-w64-mingw32-windres' |  | ||||||
| exe_wrapper = ['wine64'] |  | ||||||
|  |  | ||||||
| [properties] |  | ||||||
| needs_exe_wrapper = True |  | ||||||
| sys_root = '/usr/x86_64-w64-mingw32/' |  | ||||||
|  |  | ||||||
| [host_machine] |  | ||||||
| system = 'windows' |  | ||||||
| cpu_family = 'x86_64' |  | ||||||
| cpu = 'x86_64' |  | ||||||
| endian = 'little' |  | ||||||
|  |  | ||||||
| ; vim: ft=dosini |  | ||||||
							
								
								
									
										490
									
								
								.mailmap
									
									
									
									
									
								
							
							
						
						
									
										490
									
								
								.mailmap
									
									
									
									
									
								
							| @@ -1,490 +0,0 @@ | |||||||
| Aapo Tahkola <aet@rasterburn.org> <aapo@aapo-desktop.(none)> |  | ||||||
|  |  | ||||||
| Adam Jackson <ajax@redhat.com> <ajax@benzedrine.nwnk.net> |  | ||||||
| Adam Jackson <ajax@redhat.com> <ajax@freedesktop.org> |  | ||||||
|  |  | ||||||
| Adrian Marius Negreanu <adrian.m.negreanu@intel.com> Adrian Negreanu <adrian.m.negreanu@intel.com> |  | ||||||
| Adrian Marius Negreanu <adrian.m.negreanu@intel.com> Negreanu Marius Adrian <adrian.m.negreanu@intel.com> |  | ||||||
|  |  | ||||||
| Dave Airlie <airlied@redhat.com> <airliedfreedesktop.org> |  | ||||||
| Dave Airlie <airlied@redhat.com> airlied <airlied@unused-12-215.bne.redhat.com> |  | ||||||
| Dave Airlie <airlied@redhat.com> <airlied@dhcp-1-203.bne.redhat.com> |  | ||||||
| Dave Airlie <airlied@redhat.com> <airlied@gmail.com> |  | ||||||
| Dave Airlie <airlied@redhat.com> <airlied@itt42.(none)> |  | ||||||
| Dave Airlie <airlied@redhat.com> <airlied@linux.ie> |  | ||||||
| Dave Airlie <airlied@redhat.com> <airlied@nx6125b.(none)> |  | ||||||
| Dave Airlie <airlied@redhat.com> <airlied@panoply-rh.(none)> |  | ||||||
| Dave Airlie <airlied@redhat.com> <airlied@ppcg5.localdomain> |  | ||||||
|  |  | ||||||
| Alan Coopersmith <alan.coopersmith@oracle.com> <alan.coopersmith@sun.com> |  | ||||||
|  |  | ||||||
| Alan Hourihane <alanh@vmware.com> <alanh@tungstengraphics.com> |  | ||||||
| Alan Hourihane <alanh@vmware.com> <alanh@fairlite.demon.co.uk> |  | ||||||
| Alan Hourihane <alanh@vmware.com> <alanh@jetpack.(none)> |  | ||||||
|  |  | ||||||
| Alexander Monakov <amonakov@gmail.com> <amonakov@ispras.ru> |  | ||||||
|  |  | ||||||
| Alexander von Gluck IV <kallisti5@unixzen.com> Alexander von Gluck <kallisti5@unixzen.com> |  | ||||||
|  |  | ||||||
| Alexandros Frantzis <alexandros.frantzis@collabora.com> <Alexandros.Frantzis@canonical.com> |  | ||||||
|  |  | ||||||
| Alex Corscadden <alexc@vmware.com> <alexc@alexc-dev1.prom.eng.vmware.com> |  | ||||||
| Alex Corscadden <alexc@vmware.com> <alexc@alexc-dev1.vmware.com> |  | ||||||
|  |  | ||||||
| Alex Deucher <alexdeucher@gmail.com> <alexander.deucher@amd.com> |  | ||||||
| Alex Deucher <alexdeucher@gmail.com> <agd5f@yahoo.com> |  | ||||||
| Alex Deucher <alexdeucher@gmail.com> <alex@botch2.com> |  | ||||||
| Alex Deucher <alexdeucher@gmail.com> <alex@botch2.(none)> |  | ||||||
| Alex Deucher <alexdeucher@gmail.com> <alex@cube.(none)> |  | ||||||
| Alex Deucher <alexdeucher@gmail.com> <alex@samba.(none)> |  | ||||||
|  |  | ||||||
| Andreas Fänger <a.faenger@e-sign.com> <a.faenger@e-sign.com> |  | ||||||
|  |  | ||||||
| Andreas Hartmetz <ahartmetz@gmail.com> <andreas.hartmetz@kdab.com> |  | ||||||
|  |  | ||||||
| Andre Heider <a.heider@gmail.com> |  | ||||||
| Andreas Heider <andreas@heider.io> |  | ||||||
|  |  | ||||||
| Andreas Pokorny <andreas.pokorny@canonical.com> <andreas.pokorny@elektrobit.com> |  | ||||||
|  |  | ||||||
| Andrew Randrianasulu <randrianasulu@gmail.com> <randrik_a@yahoo.com> |  | ||||||
| Andrew Randrianasulu <randrianasulu@gmail.com> <randrik@mail.ru> |  | ||||||
|  |  | ||||||
| Arthur Huillet <arthur.huillet@free.fr> Arthur HUILLET <arthur.huillet@free.fr> |  | ||||||
|  |  | ||||||
| Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> <basni@chromium.org> |  | ||||||
|  |  | ||||||
| Benjamin Franzke <benjaminfranzke@googlemail.com> ben <benjaminfranzke@googlemail.com> |  | ||||||
|  |  | ||||||
| Ben Skeggs <bskeggs@redhat.com> <darktama@beleth.(none)> |  | ||||||
| Ben Skeggs <bskeggs@redhat.com> <darktama@iinet.net.au> |  | ||||||
| Ben Skeggs <bskeggs@redhat.com> <darktama@nisroch.keine.ath.cx> |  | ||||||
| Ben Skeggs <bskeggs@redhat.com> <skeggsb-at-gmail.com> |  | ||||||
| Ben Skeggs <bskeggs@redhat.com> <skeggsb@gmail.com> |  | ||||||
| Ben Skeggs <bskeggs@redhat.com> <skeggsb@localhost.localdomain> |  | ||||||
| Ben Skeggs <bskeggs@redhat.com> <skeggsb@nisroch.keine.ath.cx> |  | ||||||
|  |  | ||||||
| Ben Widawsky <benjamin.widawsky@intel.com> Ben Widawsky <ben@bwidawsk.net> |  | ||||||
|  |  | ||||||
| Blair Sadewitz <blair.sadewitz@gmail.com> Blair Sadewitz <blair.sadewitz.gmail.com> |  | ||||||
|  |  | ||||||
| Boris Peterbarg <reist@users.sourceforge.net> reist <reist> |  | ||||||
|  |  | ||||||
| Brian Paul <brianp@vmware.com> Brian <brian.paul@tungstengraphics.com> |  | ||||||
| Brian Paul <brianp@vmware.com> <brian.paul@tungstengraphics.com> |  | ||||||
| Brian Paul <brianp@vmware.com> <brian.e.paul@gmail.com> |  | ||||||
| Brian Paul <brianp@vmware.com> <brianp@kemper.freedesktop.org> |  | ||||||
| Brian Paul <brianp@vmware.com> brian <brian@cvp965.(none)> |  | ||||||
| Brian Paul <brianp@vmware.com> Brian <brian@i915.localnet.net> |  | ||||||
| Brian Paul <brianp@vmware.com> Brian <brian@nostromo.localnet.net> |  | ||||||
| Brian Paul <brianp@vmware.com> Brian <brian@poulsbo.localnet.net> |  | ||||||
| Brian Paul <brianp@vmware.com> Brian <brian@ps3.localnet.net> |  | ||||||
| Brian Paul <brianp@vmware.com> Brian <brianp@vmware.com> |  | ||||||
| Brian Paul <brianp@vmware.com> Brian <brian@yutani.localnet.net> |  | ||||||
| Brian Paul <brianp@vmware.com> root <brian.paul@tungstengraphics.com> |  | ||||||
| Brian Paul <brianp@vmware.com> root <root@i915.localnet.net> |  | ||||||
| Brian Paul <brianp@vmware.com> root <root@nostromo.localnet.net> |  | ||||||
| Brian Paul <brianp@vmware.com> root <root@i965.localnet.net> |  | ||||||
|  |  | ||||||
| Bruce Merry <bmerry@users.sourceforge.net> <bmerry@gmail.com> |  | ||||||
|  |  | ||||||
| Carl-Philip Hänsch <cphaensch@googlemail.com> Carl-Philip Haensch <s3734770@mail.zih.tu-dresden.de> |  | ||||||
| Carl-Philip Hänsch <cphaensch@googlemail.com> Carl-Philip Haensch <carli@carli-laptop.(none)> |  | ||||||
| Carl-Philip Hänsch <cphaensch@googlemail.com> Carl-Philip Haensch <Carl-Philip.Haensch@mailbox.tu-dresden.de> |  | ||||||
|  |  | ||||||
| Chad Versace <chadversary@chromium.org> <chad@kiwitree.net> |  | ||||||
| Chad Versace <chadversary@chromium.org> <chad@chad-versace.us> |  | ||||||
| Chad Versace <chadversary@chromium.org> <Chad Versace chad@chad-versace.us> |  | ||||||
| Chad Versace <chadversary@chromium.org> <chad.versace@intel.com> |  | ||||||
| Chad Versace <chadversary@chromium.org> <chad.versace@linux.intel.com> |  | ||||||
|  |  | ||||||
| Chia-I Wu <olvaffe@gmail.com> <olv@lunarg.com> |  | ||||||
| Chia-I Wu <olvaffe@gmail.com> Chia-Wu <olvaffe@gmail.com> |  | ||||||
|  |  | ||||||
| Chih-Wei Huang <cwhuang@linux.org.tw> Chih-Wei Huang <cwhuang@android-x86.org> |  | ||||||
|  |  | ||||||
| Christian König <christian.koenig@amd.com> Christian Koenig <christian.koenig@amd.com> |  | ||||||
| Christian König <christian.koenig@amd.com> Christian König <christian.koenig at amd.com> |  | ||||||
| Christian König <christian.koenig@amd.com> Christian König <deathsimple@vodafone.de> |  | ||||||
|  |  | ||||||
| Christoph Brill <egore911@egore911.de> Christoph Bill <egore@gmx.de> |  | ||||||
| Christoph Brill <egore911@egore911.de> <egore@gmx.de> |  | ||||||
|  |  | ||||||
| Christoph Bumiller <christoph.bumiller@speed.at> <e0425955@student.tuwien.ac.at> |  | ||||||
|  |  | ||||||
| Christopher James Halse Rogers <christopher.halse.rogers@canonical.com> Christopher James Halse Rogers <raof@ubuntu.com> |  | ||||||
|  |  | ||||||
| Claudio Ciccani <klan@directfb.org> <klan@users.sf.net> |  | ||||||
| Claudio Ciccani <klan@directfb.org> <klan@users.sourceforge.net> |  | ||||||
|  |  | ||||||
| Connor Abbott <cwabbott0@gmail.com> <connor.w.abbott@intel.com> |  | ||||||
| Connor Abbott <cwabbott0@gmail.com> <connor.abbott@intel.com> |  | ||||||
|  |  | ||||||
| Corbin Simpson <MostAwesomeDude@gmail.com> <mostawesomed...@gmail.com> |  | ||||||
| Corbin Simpson <MostAwesomeDude@gmail.com> <mostawesomedude@gmail.com> |  | ||||||
|  |  | ||||||
| Courtney Goeltzenleuchter <courtney@lunarg.com> <courtney@LunarG.com> |  | ||||||
|  |  | ||||||
| Daniel Skinner <sio@users.sourceforge.net> sio <sio> |  | ||||||
|  |  | ||||||
| Daniel Stone <daniels@collabora.com> <daniel@fooishbar.org> |  | ||||||
|  |  | ||||||
| David Miller <davem@davemloft.net> David S. Miller <davem@davemloft.net> |  | ||||||
| David Miller <davem@davemloft.net> Dave Miller <davem@davemloft.net> |  | ||||||
| David Miller <davem@davemloft.net> davem69 <davem69> |  | ||||||
|  |  | ||||||
| David Heidelberger <david.heidelberger@ixit.cz> David Heidelberg <david@ixit.cz> |  | ||||||
| David Heidelberger <david.heidelberger@ixit.cz> <d.okias@gmail.com> |  | ||||||
|  |  | ||||||
| David Reveman <reveman@chromium.org> <c99drn@cs.umu.se> |  | ||||||
|  |  | ||||||
| Dieter Nützel <Dieter@nuetzel-hh.de> Dieter Nützel <dieter@nuetzel-hh.de> |  | ||||||
|  |  | ||||||
| Dmitry Cherkassov <dcherkassov@gmail.com> Dmitry Cherkasov <dcherkassov@gmail.com> |  | ||||||
|  |  | ||||||
| Dylan Baker <dylanx.c.baker@intel.com> <baker.dylan.c@gmail.com> |  | ||||||
|  |  | ||||||
| Edward O'Callaghan <funfunctor@folklore1984.net> <eocallaghan@alterapraxis.com> |  | ||||||
|  |  | ||||||
| Elie Tournier <tournier.elie@gmail.com> |  | ||||||
|  |  | ||||||
| Emeric Grange <emeric.grange@gmail.com> Emeric <emeric.grange@gmail.com> |  | ||||||
|  |  | ||||||
| Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@collabora.com> |  | ||||||
| Emil Velikov <emil.l.velikov@gmail.com> <emil.veliko@collabora.com> |  | ||||||
| Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@collabora.co.uk> |  | ||||||
| Emil Velikov <emil.l.velikov@gmail.com> <emil.veliikov@collabora.com> |  | ||||||
| Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@gmail.com> |  | ||||||
| Emil Velikov <emil.l.velikov@gmail.com> <emmil.velikov@collabora.com> |  | ||||||
|  |  | ||||||
| Eric Anholt <eric@anholt.net> Eric Anholt <anholt@FreeBSD.org> |  | ||||||
|  |  | ||||||
| Eric Engestrom <eric@engestrom.ch> <eric.engestrom@imgtec.com> |  | ||||||
| Eric Engestrom <eric@engestrom.ch> <eric.engestrom@intel.com> |  | ||||||
|  |  | ||||||
| Eugeni Dodonov <eugeni.dodonov@intel.com> <eugeni@mandriva.com> |  | ||||||
|  |  | ||||||
| Fabian Bieler <der.fabe@gmx.net> <fabianbieler@fastmail.fm> |  | ||||||
| Fabian Bieler <der.fabe@gmx.net> <<der.fabe@gmx.net>> |  | ||||||
|  |  | ||||||
| Feng, Haitao <haitao.feng@intel.com> Haitao Feng <haitao.feng@intel.com> |  | ||||||
|  |  | ||||||
| Frank Binns <frank.binns@imgtec.com> <francisbinns@gmail.com> |  | ||||||
|  |  | ||||||
| Frank Henigman <fjhenigman@google.com> <fjhenigman@chromium.org> |  | ||||||
|  |  | ||||||
| George Sapountzis <gsapountzis@gmail.com> George Sapountzis <gsap7@yahoo.gr> |  | ||||||
|  |  | ||||||
| Gert Wollny <gert.wollny@collabora.com> <gw.fossdev@gmail.com> |  | ||||||
|  |  | ||||||
| Gwenole Beauchesne <gwenole.beauchesne@intel.com> <gb.devel@gmail.com> |  | ||||||
|  |  | ||||||
| Hamish Marson <hmarson@users.sourceforge.net> hmarson <hmarson> |  | ||||||
|  |  | ||||||
| Hans de Goede <hdegoede@redhat.com> Hans de Goede <j.w..r..degoede@hhs.nl> |  | ||||||
|  |  | ||||||
| Homer Hsing <dongsheng.xing@intel.com> <homer.hsing@gmail.com> |  | ||||||
|  |  | ||||||
| Hui Qi Tay <hqtay@vmware.com> <tayhuiqithq@gmail.com> |  | ||||||
|  |  | ||||||
| Ian Romanick <ian.d.romanick@intel.com> <idr@freedesktop.org> |  | ||||||
| Ian Romanick <ian.d.romanick@intel.com> <idr@us.ibm.com> |  | ||||||
|  |  | ||||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob@vmware.com> |  | ||||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob@aurora.(none)> |  | ||||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob@aurora.walkyrie.se> |  | ||||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob@tungstengraphics.com> |  | ||||||
| Jakob Bornecrantz <wallbraker@gmail.com> <wallbraker 'at' gmail 'dot' com> |  | ||||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob.bornecrantz@collabora.com> |  | ||||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob@collabora.com> |  | ||||||
|  |  | ||||||
| Jakub Bogusz <qboosh@pld-linux.org> <gboosh@pld-linux.org> |  | ||||||
|  |  | ||||||
| James Legg <jlegg@feralinteractive.com> <lankyleggy@gmail.com> |  | ||||||
|  |  | ||||||
| Jan Vesely <jano.vesely@gmail.com> Jan Vesely <jan.vesely@rutgers.edu> |  | ||||||
|  |  | ||||||
| Jason Ekstrand <jason@jlekstrand.net> <jason.ekstrand@intel.com> |  | ||||||
|  |  | ||||||
| Jeremy Huddleston <jeremyhu@apple.com> <jeremyhu@freedesktop.org> |  | ||||||
| Jeremy Huddleston <jeremyhu@apple.com> <jeremy@tifa.local> |  | ||||||
| Jeremy Huddleston <jeremyhu@apple.com> <jeremy@vincent.local> |  | ||||||
| Jeremy Huddleston <jeremyhu@apple.com> <jeremy@yuffie.local> |  | ||||||
| Jeremy Huddleston <jeremyhu@apple.com> Jeremy Huddleston Sequoia <jeremyhu@apple.com> |  | ||||||
|  |  | ||||||
| Jeremy Kolb <jkolb@freedesktop.org> <jkolb@brandeis.edu> |  | ||||||
|  |  | ||||||
| Jerome Glisse <jglisse@redhat.com> <glisse@freedesktop.org> |  | ||||||
| Jerome Glisse <jglisse@redhat.com> <glisse@kemper.freedesktop.org> |  | ||||||
| Jerome Glisse <jglisse@redhat.com> John Doe <glisse@barney.(none)> |  | ||||||
| Jerome Glisse <jglisse@redhat.com> John Doe <glisse@localhost.localdomain> |  | ||||||
|  |  | ||||||
| Jesse Barnes <jesse.barnes@intel.com> <jbarnes@hobbes.lan> |  | ||||||
| Jesse Barnes <jesse.barnes@intel.com> <jbarnes@hobbes.(none)> |  | ||||||
| Jesse Barnes <jesse.barnes@intel.com> <jbarnes@jbarnes-desktop.localdomain> |  | ||||||
| Jesse Barnes <jesse.barnes@intel.com> <jbarnes@jbarnes-t61.(none)> |  | ||||||
| Jesse Barnes <jesse.barnes@intel.com> <jbarnes@virtuousgeek.org> |  | ||||||
|  |  | ||||||
| Joakim Sindholt <bacn@zhasha.com> <opensource@zhasha.com> |  | ||||||
| Joakim Sindholt <bacn@zhasha.com> <zhasha@gallium-dev.(none)> |  | ||||||
|  |  | ||||||
| Jochen Gerlach <jtg@users.sourceforge.net> jtg <jtg> |  | ||||||
|  |  | ||||||
| Joel Bosveld <joel.bosveld@gmail.com> <Joel.Bosveld@gmail.com> |  | ||||||
|  |  | ||||||
| Jonathan Adamczewski <jadamcze@utas.edu.au> <jadamcze@utas.edu.a> |  | ||||||
|  |  | ||||||
| Jon Turney <jon.turney@dronecode.org.uk> Jon TURNEY <jon.turney@dronecode.org.uk> |  | ||||||
|  |  | ||||||
| José Fonseca <jfonseca@vmware.com> Jose Fonseca <jfonseca@vmware.com> |  | ||||||
| José Fonseca <jfonseca@vmware.com> Jose Fonseca <jrfonseca@tungstengraphics.com> |  | ||||||
| José Fonseca <jfonseca@vmware.com> <jfonseca@pegasus.(none)> |  | ||||||
| José Fonseca <jfonseca@vmware.com> <jfonseca@titan.(none)> |  | ||||||
| José Fonseca <jfonseca@vmware.com> <jose.r.fonseca@gmail.com> |  | ||||||
| José Fonseca <jfonseca@vmware.com> <jrfonseca@tungstengraphics.com> |  | ||||||
| José Fonseca <jfonseca@vmware.com> <j_r_fonseca@yahoo.co.uk> |  | ||||||
|  |  | ||||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> Jouk Jansen <jouk@hrem.nano.tudelft.nl> |  | ||||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> Jouk Jansen <joukj@hrem.stm.tudelft.nl> |  | ||||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> joukj <joukj@tarantella.(none)> |  | ||||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> Jouk <joukj@tarantella.nano.tudelft.nl> |  | ||||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> Jouk <joukj@tarantella.(none)> |  | ||||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> J.Jansen <joukj@tarantella.nano.tudelft.nl> |  | ||||||
|  |  | ||||||
| Juan Zhao <juan.j.zhao@intel.com> <juan.j.zhao@linux.intel.com> |  | ||||||
|  |  | ||||||
| Julien Cristau <jcristau@debian.org> <julien.cristau@logilab.fr> |  | ||||||
|  |  | ||||||
| Julien Isorce <j.isorce@samsung.com> <julien.isorce@gmail.com> |  | ||||||
|  |  | ||||||
| Kalyan Kondapally <kalyan.kondapally@intel.com> <kondapallykalyancontribute@gmail.com> |  | ||||||
|  |  | ||||||
| Karl Schultz <karl.w.schultz@gmail.com> Karl Schultze <k.w.schultz@comcast.net> |  | ||||||
| Karl Schultz <karl.w.schultz@gmail.com> unknown <kwschult@.na.qualcomm.com> |  | ||||||
| Karl Schultz <karl.w.schultz@gmail.com> <k.w.schultz@comcast.net> |  | ||||||
| Karl Schultz <karl.w.schultz@gmail.com> <Karl.W.Schultz@gmail.com> |  | ||||||
| Karl Schultz <karl.w.schultz@gmail.com> <kschultz@freedesktop.org> |  | ||||||
|  |  | ||||||
| Keith Harrison <sio2@users.sourceforge.net> sio2 <sio2> |  | ||||||
|  |  | ||||||
| Keith Packard <keithp@keithp.com> <keithp@koto.keithp.com> |  | ||||||
| Keith Packard <keithp@keithp.com> <keithp@neko.keithp.com> |  | ||||||
|  |  | ||||||
| Keith Whitwell <keithw@vmware.com> <keith@tungstengraphics.com> |  | ||||||
| Keith Whitwell <keithw@vmware.com> keithw <keithw@keithw-laptop.(none)> |  | ||||||
|  |  | ||||||
| Kristian Høgsberg <krh@bitplanet.net> <krh@redhat.com> |  | ||||||
| Kristian Høgsberg <krh@bitplanet.net> <krh@hinata.boston.redhat.com> |  | ||||||
| Kristian Høgsberg <krh@bitplanet.net> <krh@sasori.boston.redhat.com> |  | ||||||
| Kristian Høgsberg <krh@bitplanet.net> <krh@temari.boston.redhat.com> |  | ||||||
| Kristian Høgsberg <krh@bitplanet.net> <kristian.h.kristensen@intel.com> |  | ||||||
| Kristian Høgsberg <krh@bitplanet.net> <hoegsberg@chromium.org> |  | ||||||
| Kristian Høgsberg <krh@bitplanet.net> <hoegsberg@google.com> |  | ||||||
| Kristian Høgsberg <krh@bitplanet.net> <hoegsberg@gmail.com> |  | ||||||
|  |  | ||||||
| Krzesimir Nowak <qdlacz@gmail.com> <krzesimir@kinvolk.io> |  | ||||||
|  |  | ||||||
| Li Peng <peng.li@intel.com> <peng.li@linux.intel.com> |  | ||||||
|  |  | ||||||
| Lucas Stach <dev@lynxeye.de> <l.stach@pengutronix.de> |  | ||||||
|  |  | ||||||
| Maarten Lankhorst <maarten.lankhorst@ubuntu.com> <dev@mblankhorst.nl> |  | ||||||
| Maarten Lankhorst <maarten.lankhorst@ubuntu.com> <m.b.lankhorst@gmail.com> |  | ||||||
| Maarten Lankhorst <maarten.lankhorst@ubuntu.com> <maarten.lankhorst@canonical.com> |  | ||||||
|  |  | ||||||
| Maciej Cencora <m.cencora@gmail.com> <maciej@osiris.(none)> |  | ||||||
|  |  | ||||||
| Marc-André Lureau <marcandre.lureau@gmail.com> Marc-Andre Lureau <marcandre.lureau@gmail.com> |  | ||||||
|  |  | ||||||
| Marc Dietrich <marvin24@gmx.de> Marc <marvin24@gmx.de> |  | ||||||
| Marc Dietrich <marvin24@gmx.de> marvin24 <marvin24@gmx.de> |  | ||||||
|  |  | ||||||
| Marcin Ślusarz <marcin.slusarz@gmail.com> Marcin Slusarz <marcin.slusarz@gmail.com> |  | ||||||
|  |  | ||||||
| Marek Olšák <maraeo@gmail.com> <marek.olsak@amd.com> |  | ||||||
|  |  | ||||||
| Mario Kleiner <mario.kleiner.de@gmail.com> kleinerm <mario.kleiner@tuebingen.mpg.de> |  | ||||||
| Mario Kleiner <mario.kleiner.de@gmail.com> <mario.kleiner@tuebingen.mpg.de> |  | ||||||
|  |  | ||||||
| Mark Mueller <markkmueller@gmail.com> <MarkKMueller@gmail.com> |  | ||||||
|  |  | ||||||
| Marta Lofstedt <marta.lofstedt@intel.com> <marta.lofstedt@linux.intel.com> |  | ||||||
|  |  | ||||||
| Martin Peres <martin.peres@linux.intel.com> <martin.peres@labri.fr> |  | ||||||
|  |  | ||||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> Mathias Froehlich <Mathias.Froehlich@gmx.net> |  | ||||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> Mathias Froehlich <Mathias.Froehlich@web.de> |  | ||||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> Mathias Frohlich <M.Froehlich@science-computing.de> |  | ||||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> <frohlich8@users.sourceforge.net> |  | ||||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> <Mathias.Froehlich@gmx.net> |  | ||||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> <Mathias.Froehlich@web.de> |  | ||||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> M.Froehlich@science-computing.de <M.Froehlich@science-computing.de> |  | ||||||
|  |  | ||||||
| Matthew W. S. Bell <matthew@bells23.org.uk> Matthew Bell <matthew@bells23.org.uk> |  | ||||||
|  |  | ||||||
| Maxence Le Doré <maxence.ledore@gmail.com> Maxence Le Dore <maxence.ledore@gmail.com> |  | ||||||
|  |  | ||||||
| Micah Fedke <micah.fedke@collabora.co.uk> <M.Fedke@Astronautics.com> |  | ||||||
|  |  | ||||||
| Michal Krol <michal@vmware.com> <michal@tungstengraphics.com> |  | ||||||
| Michal Krol <michal@vmware.com> Michal Krol <michal@ubuntu-vbox.(none)> |  | ||||||
| Michal Krol <michal@vmware.com> Michal Krol <mjkrol@gmail.org> |  | ||||||
| Michal Krol <michal@vmware.com> michal <michal@capacitor.(none)> |  | ||||||
| Michal Krol <michal@vmware.com> michal <michal@michal-laptop.(none)> |  | ||||||
| Michal Krol <michal@vmware.com> michal <michal@quad.(none)> |  | ||||||
| Michal Krol <michal@vmware.com> michal <michal@transistor.(none)> |  | ||||||
| Michal Krol <michal@vmware.com> Michal <michal@tungstengraphics.com> |  | ||||||
| Michal Krol <michal@vmware.com> michal <michal@wmvare.com> |  | ||||||
|  |  | ||||||
| Michel Dänzer <michel@daenzer.net> <michel.daenzer@amd.com> |  | ||||||
| Michel Dänzer <michel@daenzer.net> <daenzer@vmware.com> |  | ||||||
| Michel Dänzer <michel@daenzer.net> <michel@tungstengraphics.com> |  | ||||||
| Michel Dänzer <michel@daenzer.net> Michel Daenzer <michel.daenzer@amd.com> |  | ||||||
| Michel Dänzer <michel@daenzer.net> Michel Daenzer <daenzer@localhost.(none)> |  | ||||||
| Michel Dänzer <michel@daenzer.net> <mdaenzer@redhat.com> |  | ||||||
|  |  | ||||||
| Mike Kaplinskiy <mike.kaplinskiy@gmail.com> Mike Kaplinksiy <mike.kaplinskiy@gmail.com> |  | ||||||
| Mike Kaplinskiy <mike.kaplinskiy@gmail.com> <mike.kaplinskiy@gmai.com> |  | ||||||
|  |  | ||||||
| Mike Stroyan <mike@lunarg.com> <mike@LunarG.com> |  | ||||||
|  |  | ||||||
| Nian Wu <nian.wu@intel.com> <nian@graphics.(none)> |  | ||||||
| Nian Wu <nian.wu@intel.com> <nian@tinderbox.sh.intel.com> |  | ||||||
|  |  | ||||||
| Nick Bowler <nbowler@draconx.ca> |  | ||||||
|  |  | ||||||
| Nick Sarnie <commendsarnex@gmail.com> |  | ||||||
|  |  | ||||||
| Nicolai Hähnle <nicolai.haehnle@amd.com> <nhaehnle@gmail.com> |  | ||||||
| Nicolai Hähnle <nicolai.haehnle@amd.com> Nicolai Haehnle <nhaehnle@gmail.com> |  | ||||||
| Nicolai Hähnle <nicolai.haehnle@amd.com> Nicolai Haehnle <prefect_@gmx.net> |  | ||||||
| Nicolai Hähnle <nicolai.haehnle@amd.com> Nicolai Haehnle <prefect@upb.de> |  | ||||||
|  |  | ||||||
| Nigel Stewart <nigels@users.sourceforge.net> <nigels@sourceforge.net> |  | ||||||
| Nigel Stewart <nigels@users.sourceforge.net> <nstewart@nvidia.com> |  | ||||||
|  |  | ||||||
| nobled <nobled@dreamwidth.org> <nobled2@nobled2-karmic.(none)> |  | ||||||
|  |  | ||||||
| Oliver McFadden <oliver.mcfadden@linux.intel.com> <z3ro.geek@gmail.com> |  | ||||||
|  |  | ||||||
| Owain Ainsworth <zerooa@googlemail.com> Owain G. Ainsworth <oga@openbsd.org> |  | ||||||
|  |  | ||||||
| Owen W. Taylor <otaylor@fishsoup.net> Owen Taylor <otaylor@snell.localdomain> |  | ||||||
|  |  | ||||||
| Patrice Mandin <patmandin@gmail.com> <patrice@manoir.racoon.city> |  | ||||||
| Patrice Mandin <patmandin@gmail.com> <pmandin@caramail.com> |  | ||||||
| Patrice Mandin <patmandin@gmail.com> <pmandin@freedesktop.org> |  | ||||||
|  |  | ||||||
| Pauli Nieminen <pauli.nieminen@linux.intel.com> <suokkos@gmail.com> |  | ||||||
|  |  | ||||||
| Paulo Zanoni <paulo.r.zanoni@intel.com> Paulo Zanoni <pzanoni@mandriva.com> |  | ||||||
|  |  | ||||||
| Paul Seidler <sepek@exherbo.org> Paul Seidler <pl.seidler@googlemail.com> |  | ||||||
|  |  | ||||||
| Pekka Paalanen <pekka.paalanen@collabora.co.uk> <ppaalanen@gmail.com> |  | ||||||
| Pekka Paalanen <pekka.paalanen@collabora.co.uk> <pq@iki.fi> |  | ||||||
|  |  | ||||||
| Peter Hutterer <peter.hutterer@who-t.net> <peter@cs.unisa.edu.au> |  | ||||||
|  |  | ||||||
| Pierre-Eric Pelloux-Prayer <pelloux@gmail.com> pepp <pelloux@gmail.com> |  | ||||||
|  |  | ||||||
| Pierre Willenbrock <pierre@pirsoft.de> Pierre Willenbrok <pierre@pirsoft.de> |  | ||||||
|  |  | ||||||
| Quentin Glidic <sardemff7+git@sardemff7.net> <sardemff7@sardemff7.net> |  | ||||||
|  |  | ||||||
| RALOVICH, Kristóf <tade60@freemail.hu> <kristof.ralovich@gmail.com> |  | ||||||
|  |  | ||||||
| Richard Li <richardradeon@gmail.com> <RichardZ.Li@amd.com> |  | ||||||
| # The next ones are not 100% sure |  | ||||||
| Richard Li <richardradeon@gmail.com> richard <richard@richard-desktop3.(none)> |  | ||||||
| Richard Li <richardradeon@gmail.com> richard <richard@richard-desktop.(none)> |  | ||||||
| Richard Li <richardradeon@gmail.com> root <root@richard-desktop.(none)> |  | ||||||
|  |  | ||||||
| Richard Sandiford <rsandifo@linux.vnet.ibm.com> <r.sandiford@uk.ibm.com> |  | ||||||
|  |  | ||||||
| Rob Clark <robclark@freedesktop.org> <Rob Clark robdclark@freedesktop.org> |  | ||||||
| Rob Clark <robclark@freedesktop.org> <robdclark@gmail.com> |  | ||||||
|  |  | ||||||
| Robert Bragg <robert@sixbynine.org> <robert@linux.intel.com> |  | ||||||
|  |  | ||||||
| Robert Ellison <papillo@vmware.com> <papillo@i965-laptop.(none)> |  | ||||||
| Robert Ellison <papillo@vmware.com> <papillo@tungstengraphics.com> |  | ||||||
|  |  | ||||||
| Robert Hooker <sarvatt@ubuntu.com> <robert.hooker@canonical.com> |  | ||||||
|  |  | ||||||
| Roland Scheidegger <sroland@vmware.com> <rscheidegger@gmx.ch> |  | ||||||
| Roland Scheidegger <sroland@vmware.com> <sroland@tungstengraphics.com> |  | ||||||
|  |  | ||||||
| Roy Spliet <rspliet@eclipso.eu> <r.spliet@student.tudelft.nl> |  | ||||||
|  |  | ||||||
| Rune Petersen <rune@megahurts.dk> Rune Peterson <rune@megahurts.dk> |  | ||||||
|  |  | ||||||
| Ryan Houdek <sonicadvance1@gmail.com> <Sonicadvance1@gmail.com> |  | ||||||
|  |  | ||||||
| Sam Hocevar <sam@hocevar.net> Sam Hocevar <sam@zoy.org> |  | ||||||
|  |  | ||||||
| Samuel Iglesias Gonsálvez <siglesias@igalia.com> Samuel Iglesias Gonsalvez <siglesias@igalia.com> |  | ||||||
|  |  | ||||||
| Sean D'Epagnier <sean@depagnier.com> <geckosenator@freedesktop.org> |  | ||||||
|  |  | ||||||
| Serge Martin <edb+mesa@sigluy.net> Serge Martin (EdB) <edb+mesa@sigluy.net> |  | ||||||
| Serge Martin <edb+mesa@sigluy.net> EdB <edb+mesa@sigluy.net> |  | ||||||
|  |  | ||||||
| Sinclair Yeh <syeh@vmware.com> <sinclair.yeh@intel.com> |  | ||||||
|  |  | ||||||
| Stefan Brüns <stefan.bruens@rwth-aachen.de> <Stefan.Bruens@rwth-aachen.de> |  | ||||||
|  |  | ||||||
| Stéphane Marchesin <marcheu@chromium.org> Stephane Marchesin <marchesin@icps.u-strasbg.fr> |  | ||||||
| Stéphane Marchesin <marcheu@chromium.org> Stephane Marchesin <stephane.marchesin@gmail.com> |  | ||||||
|  |  | ||||||
| Sven M. Hallberg <pesco@users.sourceforge.net> pesco <pesco> |  | ||||||
|  |  | ||||||
| Tapani Pälli <tapani.palli@intel.com> <tapani.palli@gmail.com> |  | ||||||
| Tapani Pälli <tapani.palli@intel.com> Tapani <tapani.palli@intel.com> |  | ||||||
|  |  | ||||||
| Thierry Reding <treding@nvidia.com> <thierry@gilfi.de> |  | ||||||
| Thierry Reding <treding@nvidia.com> <thierry.reding@avionic-design.de> |  | ||||||
|  |  | ||||||
| Thierry Vignaud <thierry.vignaud@gmail.com> <tvignaud@mandriva.com> |  | ||||||
|  |  | ||||||
| Thomas Balling Sørensen <tball@io.dk> <tball@tball-laptop.(none)> |  | ||||||
|  |  | ||||||
| Thomas Hellstrom <thellstrom@vmware.com> Thomas <thellstrom@vmware.com> |  | ||||||
| Thomas Hellstrom <thellstrom@vmware.com> Thomas Hellstrom <thellstrom-at-vmware-dot-com> |  | ||||||
| Thomas Hellstrom <thellstrom@vmware.com> Thomas Hellstrom <thomas-at-tungstengraphics-dot-com> |  | ||||||
| Thomas Hellstrom <thellstrom@vmware.com> Thomas Hellstrom <thomas@tungstengraphics.com> |  | ||||||
| Thomas Hellstrom <thellstrom@vmware.com> Thomas Hellström <thomas@tungstengraphics.com> |  | ||||||
|  |  | ||||||
| Thomas Tanner <tanner@gmx.net> tanner <tanner> |  | ||||||
|  |  | ||||||
| Tilman Sauerbeck <tilman@code-monkey.de> <tilman@freedesktop.org> |  | ||||||
|  |  | ||||||
| Timothy Arceri <timothy.arceri@collabora.com> <t_arceri@yahoo.com.au> |  | ||||||
| Timothy Arceri <timothy.arceri@collabora.com> Timothy <t_arceri@yahoo.com.au> |  | ||||||
|  |  | ||||||
| Tom Fogal <tfogal@alumni.unh.edu> <tfogal@sci.utah.edu> |  | ||||||
|  |  | ||||||
| Tom Stellard <thomas.stellard@amd.com> <tstellar@gmail.com> |  | ||||||
| Tom Stellard <thomas.stellard@amd.com> Thomas Stellard <tom.stellard@amd.com> |  | ||||||
|  |  | ||||||
| Tomeu Vizoso <tomeu.vizoso@collabora.com> <tomeu@tomeuvizoso.net> |  | ||||||
|  |  | ||||||
| Tormod Volden <debian.tormod@gmail.com> <lists.tormod@gmail.com> |  | ||||||
|  |  | ||||||
| Török Edwin <edwin+mesa@etorok.net> Török Edvin <edwintorok@gmail.com> |  | ||||||
| Török Edwin <edwin+mesa@etorok.net> <edwintorok@gmail.com> |  | ||||||
|  |  | ||||||
| Ville Syrjälä <ville.syrjala@linux.intel.com> Ville Syrjala <syrjala@freedesktop.org> |  | ||||||
| Ville Syrjälä <ville.syrjala@linux.intel.com> Ville Syrjala <syrjala@sci.fi> |  | ||||||
|  |  | ||||||
| Vincent Lejeune <vljn@ovi.com> <peluche.canard@gmail.com> |  | ||||||
|  |  | ||||||
| Vinson Lee <vlee@freedesktop.org> <vlee@vmware.com> |  | ||||||
|  |  | ||||||
| Zhenyu Wang <zhenyuw@linux.intel.com> Wang Zhenyu <zhenyu.z.wang@intel.com> |  | ||||||
|  |  | ||||||
| Zack Rusin <zackr@vmware.com> <zack@kde.org> |  | ||||||
| Zack Rusin <zackr@vmware.com> <zack@pixel.(none)> |  | ||||||
| Zack Rusin <zackr@vmware.com> <zack@tungstengraphics.com> |  | ||||||
|  |  | ||||||
| Zhang <zxpmyth@yahoo.com.cn> zhang <zxpmyth@yahoo.com.cn> |  | ||||||
							
								
								
									
										63
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -1,63 +0,0 @@ | |||||||
| language: c |  | ||||||
|  |  | ||||||
| os: osx |  | ||||||
|  |  | ||||||
| cache: |  | ||||||
|   ccache: true |  | ||||||
|  |  | ||||||
| env: |  | ||||||
|   global: |  | ||||||
|     - PKG_CONFIG_PATH="" |  | ||||||
|  |  | ||||||
| matrix: |  | ||||||
|   include: |  | ||||||
|     - env: |  | ||||||
|       - BUILD=meson |  | ||||||
|     - env: |  | ||||||
|       - BUILD=scons |  | ||||||
|  |  | ||||||
| before_install: |  | ||||||
|   - HOMEBREW_NO_AUTO_UPDATE=1 brew install expat gettext |  | ||||||
|   - if test "x$BUILD" = xmeson; then |  | ||||||
|       HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja; |  | ||||||
|     fi |  | ||||||
|   - if test "x$BUILD" = xscons; then |  | ||||||
|       HOMEBREW_NO_AUTO_UPDATE=1 brew install scons; |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|   # Set PATH for homebrew pip3 installs |  | ||||||
|   - PATH="$HOME/Library/Python/3.6/bin:${PATH}" |  | ||||||
|   # Set PKG_CONFIG_PATH for keg-only expat |  | ||||||
|   - PKG_CONFIG_PATH="/usr/local/opt/expat/lib/pkgconfig:${PKG_CONFIG_PATH}" |  | ||||||
|   # Set PATH for keg-only gettext |  | ||||||
|   - PATH="/usr/local/opt/gettext/bin:${PATH}" |  | ||||||
|  |  | ||||||
|   # Install xquartz for prereqs ... |  | ||||||
|   - XQUARTZ_VERSION="2.7.11" |  | ||||||
|   - wget -nv https://dl.bintray.com/xquartz/downloads/XQuartz-${XQUARTZ_VERSION}.dmg |  | ||||||
|   - hdiutil attach XQuartz-${XQUARTZ_VERSION}.dmg |  | ||||||
|   - sudo installer -pkg /Volumes/XQuartz-${XQUARTZ_VERSION}/XQuartz.pkg -target / |  | ||||||
|   - hdiutil detach /Volumes/XQuartz-${XQUARTZ_VERSION} |  | ||||||
|   # ... and set paths |  | ||||||
|   - PKG_CONFIG_PATH="/opt/X11/share/pkgconfig:/opt/X11/lib/pkgconfig:${PKG_CONFIG_PATH}" |  | ||||||
|  |  | ||||||
| install: |  | ||||||
|   - if test "x$BUILD" = xmeson; then |  | ||||||
|       pip3 install --user meson; |  | ||||||
|       pip3 install --user mako; |  | ||||||
|     fi |  | ||||||
|   - if test "x$BUILD" = xscons; then |  | ||||||
|       pip2 install --user mako; |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
| script: |  | ||||||
|   - if test "x$BUILD" = xmeson; then |  | ||||||
|       meson _build -Dbuild-tests=true; |  | ||||||
|       ninja -C _build || travis_terminate 1; |  | ||||||
|       ninja -C _build test || travis_terminate 1; |  | ||||||
|       ninja -C _build install || travis_terminate 1; |  | ||||||
|     fi |  | ||||||
|   - if test "x$BUILD" = xscons; then |  | ||||||
|       scons force_scons=1 || travis_terminate 1; |  | ||||||
|       scons force_scons=1 check || travis_terminate 1; |  | ||||||
|     fi |  | ||||||
| @@ -1,135 +0,0 @@ | |||||||
| # Mesa 3-D graphics library |  | ||||||
| # |  | ||||||
| # Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com> |  | ||||||
| # Copyright (C) 2010-2011 LunarG Inc. |  | ||||||
| # |  | ||||||
| # Permission is hereby granted, free of charge, to any person obtaining a |  | ||||||
| # copy of this software and associated documentation files (the "Software"), |  | ||||||
| # to deal in the Software without restriction, including without limitation |  | ||||||
| # the rights to use, copy, modify, merge, publish, distribute, sublicense, |  | ||||||
| # and/or sell copies of the Software, and to permit persons to whom the |  | ||||||
| # Software is furnished to do so, subject to the following conditions: |  | ||||||
| # |  | ||||||
| # The above copyright notice and this permission notice 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. |  | ||||||
|  |  | ||||||
| ifeq ($(LOCAL_IS_HOST_MODULE),true) |  | ||||||
| LOCAL_CFLAGS += -D_GNU_SOURCE |  | ||||||
| endif |  | ||||||
|  |  | ||||||
| LOCAL_C_INCLUDES += \ |  | ||||||
| 	$(MESA_TOP)/src \ |  | ||||||
| 	$(MESA_TOP)/include |  | ||||||
|  |  | ||||||
| MESA_VERSION := $(shell cat $(MESA_TOP)/VERSION) |  | ||||||
| LOCAL_CFLAGS += \ |  | ||||||
| 	-Wno-error \ |  | ||||||
| 	-Werror=incompatible-pointer-types \ |  | ||||||
| 	-Wno-unused-parameter \ |  | ||||||
| 	-Wno-pointer-arith \ |  | ||||||
| 	-Wno-missing-field-initializers \ |  | ||||||
| 	-Wno-initializer-overrides \ |  | ||||||
| 	-Wno-mismatched-tags \ |  | ||||||
| 	-DPACKAGE_VERSION=\"$(MESA_VERSION)\" \ |  | ||||||
| 	-DPACKAGE_BUGREPORT=\"https://gitlab.freedesktop.org/mesa/mesa/issues\" |  | ||||||
|  |  | ||||||
| # XXX: The following __STDC_*_MACROS defines should not be needed. |  | ||||||
| # It's likely due to a bug elsewhere, but let's temporarily add them |  | ||||||
| # here to fix the radeonsi build. |  | ||||||
| LOCAL_CFLAGS += \ |  | ||||||
| 	-DANDROID_API_LEVEL=$(PLATFORM_SDK_VERSION) \ |  | ||||||
| 	-DENABLE_SHADER_CACHE \ |  | ||||||
| 	-D__STDC_CONSTANT_MACROS \ |  | ||||||
| 	-D__STDC_LIMIT_MACROS \ |  | ||||||
| 	-DHAVE___BUILTIN_EXPECT \ |  | ||||||
| 	-DHAVE___BUILTIN_FFS \ |  | ||||||
| 	-DHAVE___BUILTIN_FFSLL \ |  | ||||||
| 	-DHAVE_DLFCN_H \ |  | ||||||
| 	-DHAVE_FUNC_ATTRIBUTE_FLATTEN \ |  | ||||||
| 	-DHAVE_FUNC_ATTRIBUTE_UNUSED \ |  | ||||||
| 	-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 \ |  | ||||||
| 	-DHAVE___BUILTIN_CLZ \ |  | ||||||
| 	-DHAVE___BUILTIN_CLZLL \ |  | ||||||
| 	-DHAVE___BUILTIN_UNREACHABLE \ |  | ||||||
| 	-DHAVE_PTHREAD=1 \ |  | ||||||
| 	-DHAVE_DLADDR \ |  | ||||||
| 	-DHAVE_DL_ITERATE_PHDR \ |  | ||||||
| 	-DHAVE_LINUX_FUTEX_H \ |  | ||||||
| 	-DHAVE_ENDIAN_H \ |  | ||||||
| 	-DHAVE_ZLIB \ |  | ||||||
| 	-DMAJOR_IN_SYSMACROS \ |  | ||||||
| 	-DVK_USE_PLATFORM_ANDROID_KHR \ |  | ||||||
| 	-fvisibility=hidden \ |  | ||||||
| 	-fno-math-errno \ |  | ||||||
| 	-fno-trapping-math \ |  | ||||||
| 	-Wno-sign-compare |  | ||||||
|  |  | ||||||
| LOCAL_CPPFLAGS += \ |  | ||||||
| 	-D__STDC_CONSTANT_MACROS \ |  | ||||||
| 	-D__STDC_FORMAT_MACROS \ |  | ||||||
| 	-D__STDC_LIMIT_MACROS \ |  | ||||||
| 	-Wno-error=non-virtual-dtor \ |  | ||||||
| 	-Wno-non-virtual-dtor |  | ||||||
|  |  | ||||||
| # mesa requires at least c99 compiler |  | ||||||
| LOCAL_CONLYFLAGS += \ |  | ||||||
| 	-std=c99 |  | ||||||
|  |  | ||||||
| # c11 timespec_get is part of bionic as well |  | ||||||
| # https://android-review.googlesource.com/c/718518 |  | ||||||
| # This means releases from P and earlier won't need this |  | ||||||
| ifeq ($(filter 5 6 7 8 9, $(MESA_ANDROID_MAJOR_VERSION)),) |  | ||||||
| LOCAL_CFLAGS += -DHAVE_TIMESPEC_GET |  | ||||||
| endif |  | ||||||
|  |  | ||||||
| # Android's libc began supporting shm in Oreo |  | ||||||
| ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 26 && echo true),true) |  | ||||||
| LOCAL_CFLAGS += -DHAVE_SYS_SHM_H |  | ||||||
| endif |  | ||||||
|  |  | ||||||
| ifeq ($(strip $(MESA_ENABLE_ASM)),true) |  | ||||||
| ifeq ($(TARGET_ARCH),x86) |  | ||||||
| LOCAL_CFLAGS += \ |  | ||||||
| 	-DUSE_X86_ASM |  | ||||||
|  |  | ||||||
| endif |  | ||||||
| endif |  | ||||||
| ifeq ($(ARCH_ARM_HAVE_NEON),true) |  | ||||||
| LOCAL_CFLAGS_arm += -DUSE_ARM_ASM |  | ||||||
| endif |  | ||||||
| LOCAL_CFLAGS_arm64 += -DUSE_AARCH64_ASM |  | ||||||
|  |  | ||||||
| ifneq ($(LOCAL_IS_HOST_MODULE),true) |  | ||||||
| LOCAL_CFLAGS += -DHAVE_LIBDRM |  | ||||||
| LOCAL_SHARED_LIBRARIES += libdrm |  | ||||||
| endif |  | ||||||
|  |  | ||||||
| LOCAL_CFLAGS_32 += -DDEFAULT_DRIVER_DIR=\"/vendor/lib/$(MESA_DRI_MODULE_REL_PATH)\" |  | ||||||
| LOCAL_CFLAGS_64 += -DDEFAULT_DRIVER_DIR=\"/vendor/lib64/$(MESA_DRI_MODULE_REL_PATH)\" |  | ||||||
| LOCAL_PROPRIETARY_MODULE := true |  | ||||||
|  |  | ||||||
| # uncomment to keep the debug symbols |  | ||||||
| #LOCAL_STRIP_MODULE := false |  | ||||||
|  |  | ||||||
| ifeq ($(strip $(LOCAL_MODULE_TAGS)),) |  | ||||||
| LOCAL_MODULE_TAGS := optional |  | ||||||
| endif |  | ||||||
|  |  | ||||||
| # Quiet down the build system and remove any .h files from the sources |  | ||||||
| LOCAL_SRC_FILES := $(patsubst %.h, , $(LOCAL_SRC_FILES)) |  | ||||||
							
								
								
									
										123
									
								
								Android.mk
									
									
									
									
									
								
							
							
						
						
									
										123
									
								
								Android.mk
									
									
									
									
									
								
							| @@ -1,123 +0,0 @@ | |||||||
| # Mesa 3-D graphics library |  | ||||||
| # |  | ||||||
| # Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com> |  | ||||||
| # Copyright (C) 2010-2011 LunarG Inc. |  | ||||||
| # |  | ||||||
| # Permission is hereby granted, free of charge, to any person obtaining a |  | ||||||
| # copy of this software and associated documentation files (the "Software"), |  | ||||||
| # to deal in the Software without restriction, including without limitation |  | ||||||
| # the rights to use, copy, modify, merge, publish, distribute, sublicense, |  | ||||||
| # and/or sell copies of the Software, and to permit persons to whom the |  | ||||||
| # Software is furnished to do so, subject to the following conditions: |  | ||||||
| # |  | ||||||
| # The above copyright notice and this permission notice 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. |  | ||||||
|  |  | ||||||
| # BOARD_GPU_DRIVERS should be defined.  The valid values are |  | ||||||
| # |  | ||||||
| #   classic drivers: i915 i965 |  | ||||||
| #   gallium drivers: swrast freedreno i915g nouveau kmsro r300g r600g radeonsi vc4 virgl vmwgfx etnaviv iris lima |  | ||||||
| # |  | ||||||
| # The main target is libGLES_mesa.  For each classic driver enabled, a DRI |  | ||||||
| # module will also be built.  DRI modules will be loaded by libGLES_mesa. |  | ||||||
|  |  | ||||||
| MESA_TOP := $(call my-dir) |  | ||||||
|  |  | ||||||
| MESA_ANDROID_MAJOR_VERSION := $(word 1, $(subst ., , $(PLATFORM_VERSION))) |  | ||||||
| ifneq ($(filter 2 4, $(MESA_ANDROID_MAJOR_VERSION)),) |  | ||||||
| $(error "Android 4.4 and earlier not supported") |  | ||||||
| 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 |  | ||||||
|  |  | ||||||
| # Lists to convert driver names to boolean variables |  | ||||||
| # in form of <driver name>.<boolean make variable> |  | ||||||
| classic_drivers := i915.HAVE_I915_DRI i965.HAVE_I965_DRI |  | ||||||
| gallium_drivers := \ |  | ||||||
| 	swrast.HAVE_GALLIUM_SOFTPIPE \ |  | ||||||
| 	freedreno.HAVE_GALLIUM_FREEDRENO \ |  | ||||||
| 	i915g.HAVE_GALLIUM_I915 \ |  | ||||||
| 	nouveau.HAVE_GALLIUM_NOUVEAU \ |  | ||||||
| 	kmsro.HAVE_GALLIUM_KMSRO \ |  | ||||||
| 	r300g.HAVE_GALLIUM_R300 \ |  | ||||||
| 	r600g.HAVE_GALLIUM_R600 \ |  | ||||||
| 	radeonsi.HAVE_GALLIUM_RADEONSI \ |  | ||||||
| 	vmwgfx.HAVE_GALLIUM_VMWGFX \ |  | ||||||
| 	vc4.HAVE_GALLIUM_VC4 \ |  | ||||||
| 	virgl.HAVE_GALLIUM_VIRGL \ |  | ||||||
| 	etnaviv.HAVE_GALLIUM_ETNAVIV \ |  | ||||||
| 	iris.HAVE_GALLIUM_IRIS \ |  | ||||||
| 	lima.HAVE_GALLIUM_LIMA |  | ||||||
|  |  | ||||||
| ifeq ($(BOARD_GPU_DRIVERS),all) |  | ||||||
| MESA_BUILD_CLASSIC := $(filter HAVE_%, $(subst ., , $(classic_drivers))) |  | ||||||
| MESA_BUILD_GALLIUM := $(filter HAVE_%, $(subst ., , $(gallium_drivers))) |  | ||||||
| else |  | ||||||
| # Warn if we have any invalid driver names |  | ||||||
| $(foreach d, $(BOARD_GPU_DRIVERS), \ |  | ||||||
| 	$(if $(findstring $(d).,$(classic_drivers) $(gallium_drivers)), \ |  | ||||||
| 		, \ |  | ||||||
| 		$(warning invalid GPU driver: $(d)) \ |  | ||||||
| 	) \ |  | ||||||
| ) |  | ||||||
| MESA_BUILD_CLASSIC := $(strip $(foreach d, $(BOARD_GPU_DRIVERS), $(patsubst $(d).%,%, $(filter $(d).%, $(classic_drivers))))) |  | ||||||
| MESA_BUILD_GALLIUM := $(strip $(foreach d, $(BOARD_GPU_DRIVERS), $(patsubst $(d).%,%, $(filter $(d).%, $(gallium_drivers))))) |  | ||||||
| endif |  | ||||||
| ifeq ($(filter x86%,$(TARGET_ARCH)),) |  | ||||||
| 	MESA_BUILD_CLASSIC := |  | ||||||
| endif |  | ||||||
|  |  | ||||||
| $(foreach d, $(MESA_BUILD_CLASSIC) $(MESA_BUILD_GALLIUM), $(eval $(d) := true)) |  | ||||||
|  |  | ||||||
| # host and target must be the same arch to generate matypes.h |  | ||||||
| ifeq ($(TARGET_ARCH),$(HOST_ARCH)) |  | ||||||
| MESA_ENABLE_ASM := true |  | ||||||
| else |  | ||||||
| MESA_ENABLE_ASM := false |  | ||||||
| endif |  | ||||||
|  |  | ||||||
| ifneq ($(filter true, $(HAVE_GALLIUM_RADEONSI)),) |  | ||||||
| MESA_ENABLE_LLVM := true |  | ||||||
| endif |  | ||||||
|  |  | ||||||
| define mesa-build-with-llvm |  | ||||||
|   $(if $(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5 6 7), \ |  | ||||||
|     $(warning Unsupported LLVM version in Android $(MESA_ANDROID_MAJOR_VERSION)),) \ |  | ||||||
|   $(eval LOCAL_CFLAGS += -DLLVM_AVAILABLE -DMESA_LLVM_VERSION_STRING=\"3.9\") \ |  | ||||||
|   $(eval LOCAL_SHARED_LIBRARIES += libLLVM) |  | ||||||
| endef |  | ||||||
|  |  | ||||||
| # add subdirectories |  | ||||||
| SUBDIRS := \ |  | ||||||
| 	src/freedreno \ |  | ||||||
| 	src/gbm \ |  | ||||||
| 	src/loader \ |  | ||||||
| 	src/mapi \ |  | ||||||
| 	src/compiler \ |  | ||||||
| 	src/mesa \ |  | ||||||
| 	src/util \ |  | ||||||
| 	src/egl \ |  | ||||||
| 	src/amd \ |  | ||||||
| 	src/broadcom \ |  | ||||||
| 	src/intel \ |  | ||||||
| 	src/mesa/drivers/dri \ |  | ||||||
| 	src/vulkan \ |  | ||||||
| 	src/panfrost \ |  | ||||||
|  |  | ||||||
| INC_DIRS := $(call all-named-subdir-makefiles,$(SUBDIRS)) |  | ||||||
| INC_DIRS += $(call all-named-subdir-makefiles,src/gallium) |  | ||||||
| include $(INC_DIRS) |  | ||||||
							
								
								
									
										16
									
								
								CleanSpec.mk
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								CleanSpec.mk
									
									
									
									
									
								
							| @@ -1,16 +0,0 @@ | |||||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libmesa_*_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/i9*5_dri_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libglapi_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libGLES_mesa_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_OS)-$(HOST_ARCH)/obj/EXECUTABLES/mesa_*_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_OS)-$(HOST_ARCH)/obj/EXECUTABLES/glsl_compiler_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_OS)-$(HOST_ARCH)/obj/STATIC_LIBRARIES/libmesa_glsl_utils_intermediates) |  | ||||||
|  |  | ||||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/STATIC_LIBRARIES/libmesa_*_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/i9?5_dri_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/libglapi_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/libGLES_mesa_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(HOST_OUT)/*/EXECUTABLES/mesa_*_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(HOST_OUT)/*/EXECUTABLES/glsl_compiler_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(HOST_OUT)/*/STATIC_LIBRARIES/libmesa_*_intermediates) |  | ||||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/*_dri_intermediates) |  | ||||||
							
								
								
									
										1303
									
								
								Make-config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1303
									
								
								Make-config
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										579
									
								
								Makefile.X11
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										579
									
								
								Makefile.X11
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,579 @@ | |||||||
|  | # $Id: Makefile.X11,v 1.12.2.9 2000/04/24 14:47:11 brianp Exp $ | ||||||
|  |  | ||||||
|  | # Mesa 3-D graphics library | ||||||
|  | # Version:  3.2 | ||||||
|  | #  | ||||||
|  | # Copyright (C) 1999-2000  Brian Paul   All Rights Reserved. | ||||||
|  | #  | ||||||
|  | # Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  | # copy of this software and associated documentation files (the "Software"), | ||||||
|  | # to deal in the Software without restriction, including without limitation | ||||||
|  | # the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  | # and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  | # Software is furnished to do so, subject to the following conditions: | ||||||
|  | #  | ||||||
|  | # The above copyright notice and this permission notice shall be included | ||||||
|  | # in all copies or substantial portions of the Software. | ||||||
|  | #  | ||||||
|  | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||||||
|  | # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  | # BRIAN PAUL 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. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Top-level makefile for Mesa | ||||||
|  | # To add a new configuration for your system add it to the list below | ||||||
|  | # then update the Make-config file. | ||||||
|  |  | ||||||
|  | SHELL = /bin/sh | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | default: | ||||||
|  | 	@echo "Type one of the following:" | ||||||
|  | 	@echo "  make aix                  for IBM RS/6000 with AIX" | ||||||
|  | 	@echo "  make aix-sl               for IBM RS/6000, make shared libs" | ||||||
|  | 	@echo "  make amiwin               for Amiga with SAS/C and AmiWin" | ||||||
|  | 	@echo "  make amix                 for Amiga 3000 UX  SVR4 v2.1 systems" | ||||||
|  | 	@echo "  make beos-r4              for BeOS R4" | ||||||
|  | 	@echo "  make bsdos                for BSD/OS from BSDI using GCC" | ||||||
|  | 	@echo "  make bsdos4               for BSD/OS 4.x, dynamic libraries" | ||||||
|  | 	@echo "  make cygnus               for Win95/NT using Cygnus-Win32" | ||||||
|  | 	@echo "  make cygnus-linux         for Win95/NT using Cygnus-Win32 under Linux" | ||||||
|  | 	@echo "  make dgux                 for Data General" | ||||||
|  | 	@echo "  make freebsd              for FreeBSD systems with GCC" | ||||||
|  | 	@echo "  make freebsd-386          for FreeBSD systems with GCC, w/ Intel assembly" | ||||||
|  | 	@echo "  make gcc                  for a generic system with GCC" | ||||||
|  | 	@echo "  make hpux9                for HP systems with HPUX 9.x" | ||||||
|  | 	@echo "  make hpux9-sl             for HP systems with HPUX 9.x, make shared libs" | ||||||
|  | 	@echo "  make hpux9-gcc            for HP systems with HPUX 9.x using GCC" | ||||||
|  | 	@echo "  make hpux9-gcc-sl         for HP systems with HPUX 9.x, GCC, make shared libs" | ||||||
|  | 	@echo "  make hpux10               for HP systems with HPUX 10.x" | ||||||
|  | 	@echo "  make hpux10-sl            for HP systems with HPUX 10.x, shared libs" | ||||||
|  | 	@echo "  make hpux10-gcc           for HP systems with HPUX 10.x w/ GCC" | ||||||
|  | 	@echo "  make hpux10-gcc-sl        for HP systems with HPUX 10.x w/ GCC, shared libs" | ||||||
|  | 	@echo "  make irix4                for SGI systems with IRIX 4.x" | ||||||
|  | 	@echo "  make irix5                for SGI systems with IRIX 5.x" | ||||||
|  | 	@echo "  make irix5-gcc            for SGI systems with IRIX 5.x using GCC" | ||||||
|  | 	@echo "  make irix5-dso            for SGI systems with IRIX 5.x, make DSOs" | ||||||
|  | 	@echo "  make irix6-o32            for SGI systems with IRIX 6.x, make o32-bit libs" | ||||||
|  | 	@echo "  make irix6-o32-dso        for SGI systems with IRIX 6.x, make o32-bit DSOs" | ||||||
|  | 	@echo "  make irix6-n32            for SGI systems with IRIX 6.x, make n32-bit libs" | ||||||
|  | 	@echo "  make irix6-n32-dso        for SGI systems with IRIX 6.x, make n32-bit DSOs" | ||||||
|  | 	@echo "  make irix6-gcc-n32-sl     for SGI systems with IRIX 6.x, GCC, make n32 DSOs" | ||||||
|  | 	@echo "  make irix6-64             for SGI systems with IRIX 6.x, make 64-bit libs" | ||||||
|  | 	@echo "  make irix6-64-dso         for SGI systems with IRIX 6.x, make 64-bit DSOs" | ||||||
|  |  | ||||||
|  | 	@echo "  make linux                for Linux systems, make static .a libs" | ||||||
|  | 	@echo "  make linux-elf            for Linux systems, make ELF shared libs" | ||||||
|  | 	@echo "  make linux-386            for Linux w/ Intel assembly" | ||||||
|  | 	@echo "  make linux-386-elf        for Linux w/ Intel assembly, make ELF shared libs" | ||||||
|  | 	@echo "  make linux-ggi            for Linux systems with libggi" | ||||||
|  | 	@echo "  make linux-386-ggi        for Linux systems with libggi w/ Intel assembly" | ||||||
|  | 	@echo "  make linux-alpha          for Linux on Alpha systems" | ||||||
|  | 	@echo "  make linux-alpha-elf      for Linux on Alpha systems, make ELF shared libs" | ||||||
|  | 	@echo "  make linux-ppc            for Linux on PowerPC systems" | ||||||
|  | 	@echo "  make linux-ppc-so         for Linux on PowerPC systems, make shared libs" | ||||||
|  | 	@echo "  make linux-glide          for Linux w/ 3Dfx Glide driver" | ||||||
|  | 	@echo "  make linux-386-glide      for Linux w/ 3Dfx Glide driver, Intel assembly" | ||||||
|  | 	@echo "  make linux-386-opt-glide  for Linux with 3Dfx Voodoo1 for GLQuake" | ||||||
|  | 	@echo "  make linux-386-opt-V2-glide  for Linux with 3Dfx Voodoo2 for GLQuake" | ||||||
|  | 	@echo "  make linux-3dnow          for Linux on AMD w/ 3DNow!" | ||||||
|  | 	@echo "  make linux-3dnow-glide    for Linux on AMD w/ 3DNow! for Glide" | ||||||
|  | 	@echo "  make linux-386-pthread    for Linux w/ Intel assembly and linuxthreads" | ||||||
|  | 	@echo "  make linux-386-pthread-shared  for Linux w/ Intel assembly and linuxthreads" | ||||||
|  | 	@echo "  make linux-386-pthread-shared-glide  for Linux w/ Intel assembly, linuxthreads, and 3Dfx Glide driver" | ||||||
|  | 	@echo "  make linux-sparc          for Linux on Sparc systems" | ||||||
|  | 	@echo "  make linux-sparc5-elf     for Sparc5 systems, make ELF shared libs" | ||||||
|  | 	@echo "  make linux-sparc-ultra    for UltraSparc systems, make ELF shared libs" | ||||||
|  | 	@echo "  make lynxos               for LynxOS systems with GCC" | ||||||
|  | 	@echo "  make macintosh            for Macintosh" | ||||||
|  | 	@echo "  make machten-2.2          for Macs w/ MachTen 2.2 (68k w/ FPU)" | ||||||
|  | 	@echo "  make machten-4.0          for Macs w/ MachTen 4.0.1 or newer with GNU make" | ||||||
|  | 	@echo "  make mklinux              for Linux on Power Macintosh" | ||||||
|  | 	@echo "  make netbsd               for NetBSD 1.0 systems with GCC" | ||||||
|  | 	@echo "  make next                 for NeXT systems with NEXTSTEP 3.3" | ||||||
|  | 	@echo "  make openbsd              for OpenBSD systems" | ||||||
|  | 	@echo "  make openstep             for OpenStep/MacOSX Server systems" | ||||||
|  | 	@echo "  make os2-x11              for OS/2 with XFree86" | ||||||
|  | 	@echo "  make osf1                 for DEC Alpha systems with OSF/1" | ||||||
|  | 	@echo "  make osf1-sl              for DEC Alpha systems with OSF/1, make shared libs" | ||||||
|  | 	@echo "  make pgi-cygnus           for Cygnus with Portland Group, Inc. compiler" | ||||||
|  | 	@echo "  make pgi-mingw32          for mingW32 with Portland Group, Inc. compiler" | ||||||
|  | 	@echo "  make qnx                  for QNX V4 systems with Watcom compiler" | ||||||
|  | 	@echo "  make sco                  for SCO Unix systems with ODT" | ||||||
|  | 	@echo "  make sco5                 for SCO 5.0.5 OpenServer Unix" | ||||||
|  | 	@echo "  make solaris-x86          for PCs with Solaris" | ||||||
|  | 	@echo "  make solaris-x86-gcc      for PCs with Solaris using GCC" | ||||||
|  | 	@echo "  make sunos4               for Suns with SunOS 4.x" | ||||||
|  | 	@echo "  make sunos4-sl            for Suns with SunOS 4.x, make shared libs" | ||||||
|  | 	@echo "  make sunos4-gcc           for Suns with SunOS 4.x and GCC" | ||||||
|  | 	@echo "  make sunos4-gcc-sl        for Suns with SunOS 4.x, GCC, make shared libs" | ||||||
|  | 	@echo "  make sunos5               for Suns with SunOS 5.x" | ||||||
|  | 	@echo "  make sunos5-sl            for Suns with SunOS 5.x, make shared libs" | ||||||
|  | 	@echo "  make sunos5-ultra         for Sun UltraSPARCs with SunOS 5.x" | ||||||
|  | 	@echo "  make sunos5-ultra-sl      for Sun UltraSPARCs with SunOS 5.x, make shared libs" | ||||||
|  | 	@echo "  make sunos5-thread        for Suns with SunOS 5.x, using Solaris threads" | ||||||
|  | 	@echo "  make sunos5-pthread       for Suns with SunOS 5.[56] using POSIX threads" | ||||||
|  | 	@echo "  make sunos5-gcc-thread    for Suns with SunOS 5.x and GCC, using Solaris threads" | ||||||
|  | 	@echo "  make sunos5-gcc-pthread   for Suns with SunOS 5.[56] and GCC, using POSIX threads" | ||||||
|  | 	@echo "  make sunos5-gcc           for Suns with SunOS 5.x and GCC" | ||||||
|  | 	@echo "  make sunos5-gcc-sl        for Suns with SunOS 5.x, GCC, make shared libs" | ||||||
|  | 	@echo "  make sunos5-x11r6-gcc-sl  for Suns with X11R6, GCC, make shared libs" | ||||||
|  | 	@echo "  make sunos5-gcc-thread    for Suns with SunOS 5.x and GCC, using Solaris threads" | ||||||
|  | 	@echo "  make sunos5-gcc-pthread   for Suns with SunOS 5.[56] and GCC, using POSIX threads" | ||||||
|  | 	@echo "  make sunSolaris-CC        for Solaris using C++ compiler" | ||||||
|  | 	@echo "  make ultrix-gcc           for DEC systems with Ultrix and GCC" | ||||||
|  | 	@echo "  make unicos               for Cray C90 (and other?) systems" | ||||||
|  | 	@echo "  make unixware             for PCs running UnixWare" | ||||||
|  | 	@echo "  make unixware-shared      for PCs running UnixWare, shared libs" | ||||||
|  | 	@echo "  make uwin                 for Windows NT with AT&T/Wipro UWIN" | ||||||
|  | 	@echo "  make vistra               for Stardent Vistra systems" | ||||||
|  | 	@echo "  make clean                remove .o files" | ||||||
|  | 	@echo "  make realclean            remove .o, library and executable files" | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | aix aix-sl amix bsdos bsdos4 dgux freebsd freebsd-386 gcc \ | ||||||
|  | hpux9 hpux9-sl hpux9-gcc hpux9-gcc-sl \ | ||||||
|  | hpux10 hpux10-sl hpux10-gcc hpux10-gcc-sl \ | ||||||
|  | irix4 irix5 irix5-gcc irix5-dso irix6-o32 irix6-o32-dso \ | ||||||
|  | linux linux-debug linux-prof linux-elf linux-elf-debug linux-glide-debug \ | ||||||
|  | linux-glide linux-386-glide linux-386-opt-glide \ | ||||||
|  | linux-386-opt-V2-glide \ | ||||||
|  | linux-386 linux-386-elf \ | ||||||
|  | linux-3dnow linux-3dnow-glide \ | ||||||
|  | linux-alpha linux-alpha-elf \ | ||||||
|  | linux-ppc linux-ppc-so \ | ||||||
|  | linux-386-pthread linux-386-pthread-shared linux-386-pthread-shared-glide \ | ||||||
|  | linux-sparc \ | ||||||
|  | linux-sparc5-elf \ | ||||||
|  | linux-sparc-ultra \ | ||||||
|  | lynxos machten-2.2 machten-4.0 \ | ||||||
|  | mklinux netbsd osf1 osf1-sl openbsd qnx sco sco5 \ | ||||||
|  | solaris-x86 solaris-x86-gcc sunSolaris-CC \ | ||||||
|  | sunos4 sunos4-sl sunos4-gcc sunos4-gcc-sl sunos4-gcc-x11r6-sl \ | ||||||
|  | sunos5 sunos5-sl sunos5-ultra sunos5-ultra-sl sunos5-gcc sunos5-gcc-sl \ | ||||||
|  | sunos5-thread sunos5-pthread sunos5-gcc-thread sunos5-gcc-pthread \ | ||||||
|  | sunos5-x11r6-gcc-sl ultrix-gcc unicos unixware uwin vistra: | ||||||
|  | 	-mkdir lib | ||||||
|  | 	touch src/depend | ||||||
|  | 	touch src-glu/depend | ||||||
|  | 	if [ -d src-glut ] ; then touch src-glut/depend ; fi | ||||||
|  | 	cd src ; $(MAKE) -f Makefile.X11 $@ | ||||||
|  | 	cd src-glu ; $(MAKE) -f Makefile.X11 $@ | ||||||
|  | 	if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d demos ]    ; then cd demos    ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  |  | ||||||
|  |  | ||||||
|  | irix6-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug: | ||||||
|  | 	-mkdir lib32 | ||||||
|  | 	touch src/depend | ||||||
|  | 	touch src-glu/depend | ||||||
|  | 	if [ -d src-glut ] ; then touch src-glut/depend ; fi | ||||||
|  | 	cd src ; $(MAKE) -f Makefile.X11 $@ | ||||||
|  | 	cd src-glu ; $(MAKE) -f Makefile.X11 $@ | ||||||
|  | 	if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d demos ]    ; then cd demos    ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  |  | ||||||
|  |  | ||||||
|  | irix6-64 irix6-64-dso: | ||||||
|  | 	-mkdir lib64 | ||||||
|  | 	touch src/depend | ||||||
|  | 	touch src-glu/depend | ||||||
|  | 	if [ -d src-glut ] ; then touch src-glut/depend ; fi | ||||||
|  | 	cd src ; $(MAKE) -f Makefile.X11 $@ | ||||||
|  | 	cd src-glu ; $(MAKE) -f Makefile.X11 $@ | ||||||
|  | 	if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d demos ]    ; then cd demos    ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  |  | ||||||
|  |  | ||||||
|  | amiwin: | ||||||
|  | 	bin/mklib.amiwin | ||||||
|  |  | ||||||
|  |  | ||||||
|  | beos-r4: | ||||||
|  | 	-mkdir lib | ||||||
|  | 	-rm src/depend | ||||||
|  | 	touch src/depend | ||||||
|  | 	-rm src-glu/depend | ||||||
|  | 	touch src-glu/depend | ||||||
|  | 	cd src ; $(MAKE) -f Makefile.BeOS-R4 $@ | ||||||
|  | 	cd src-glu ; $(MAKE) -f Makefile.BeOS-R4 $@ | ||||||
|  | 	if [ -d BeOS ]          ; then cd BeOS          ; $(MAKE) ; fi | ||||||
|  | 	if [ -d src-glut.beos ] ; then cd src-glut.beos ; $(MAKE) ; fi | ||||||
|  | 	if [ -d src-glut.beos ] ; then cp src-glut.beos/obj*/libglut.so lib  ; fi | ||||||
|  | 	if [ -d demos ]   ; then cd demos   ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi | ||||||
|  | 	if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi | ||||||
|  | 	if [ -d book ]    ; then cd book    ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi | ||||||
|  |  | ||||||
|  | pgi-cygnus pgi-mingw32 \ | ||||||
|  | cygnus cygnus-linux: | ||||||
|  | 	-mkdir lib | ||||||
|  | 	touch src/depend | ||||||
|  | 	touch src-glu/depend | ||||||
|  | 	cd src ; $(MAKE) -f Makefile.X11 $@ | ||||||
|  | 	cd src-glu ; $(MAKE) -f Makefile.X11 $@ | ||||||
|  | 	if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d demos ]    ; then cd demos    ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d xdemos ]  ; then cd xdemos  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  |  | ||||||
|  | macintosh: | ||||||
|  | 	@echo "See the README file for Macintosh intallation information" | ||||||
|  |  | ||||||
|  | next: | ||||||
|  | 	-mkdir lib | ||||||
|  | 	cd src ; $(MAKE) -f Makefile.X11 "MYCC=${CC}" $@ | ||||||
|  | 	cd src-glu ; $(MAKE) -f Makefile.X11 "MYCC=${CC}" $@ | ||||||
|  |  | ||||||
|  | openstep: | ||||||
|  | 	-mkdir lib | ||||||
|  | 	cd src ; $(MAKE) -f Makefile.X11 "MYCC=${CC}" $@ | ||||||
|  | 	cd src-glu ; $(MAKE) -f Makefile.X11 "MYCC=${CC}" $@ | ||||||
|  |  | ||||||
|  | os2-x11: | ||||||
|  | 	if not EXIST .\lib md lib | ||||||
|  | 	touch src/depend | ||||||
|  | 	touch src-glu/depend | ||||||
|  | 	if exist src-glut touch src-glut/depend | ||||||
|  | 	cd src     & make -f Makefile.X11 $@ | ||||||
|  | 	cd src-glu & make -f Makefile.X11 $@ | ||||||
|  | 	if exist src-glut  cd src-glut & make -f Makefile.X11 $@ | ||||||
|  | 	if exist demos     cd demos    & make -f Makefile.X11 $@ | ||||||
|  | 	if exist xdemos    cd xdemos   & make -f Makefile.X11 $@ | ||||||
|  | 	if exist samples   cd samples  & make -f Makefile.X11 $@ | ||||||
|  | 	if exist book      cd book     & make -f Makefile.X11 $@ | ||||||
|  |  | ||||||
|  | linux-ggi linux-386-ggi: | ||||||
|  | 	-mkdir lib | ||||||
|  | 	touch src/depend | ||||||
|  | 	touch src-glu/depend | ||||||
|  | 	if [ -d src-glut ] ; then touch src-glut/depend ; fi | ||||||
|  | 	if [ -d ggi ] ; then touch ggi/depend ; fi | ||||||
|  | 	cd src ; $(MAKE) -f Makefile.X11 $@ | ||||||
|  | 	cd src/GGI/default ; $(MAKE) | ||||||
|  | 	cd src/GGI/display ; $(MAKE) | ||||||
|  | 	cd src-glu ; $(MAKE) -f Makefile.X11 $@ | ||||||
|  | #	if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d ggi ]      ; then cd ggi      ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d ggi ]      ; then cd ggi/demos; $(MAKE)    ; fi | ||||||
|  | 	if [ -d demos ]    ; then cd demos    ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  |  | ||||||
|  | # if you change GGI_DEST please change it in ggimesa.conf, too. | ||||||
|  | DESTDIR=/usr/local | ||||||
|  | GGI_DEST=lib/ggi/mesa | ||||||
|  |  | ||||||
|  | linux-ggi-install linux-386-ggi-install: | ||||||
|  | 	install -d $(DESTDIR)/$(GGI_DEST)/default $(DESTDIR)/$(GGI_DEST)/display $(DESTDIR)/etc/ggi | ||||||
|  | 	install -m 0755 src/GGI/default/*.so $(DESTDIR)/$(GGI_DEST)/default | ||||||
|  | 	install -m 0755 src/GGI/display/*.so $(DESTDIR)/$(GGI_DEST)/display | ||||||
|  | 	install -m 0644 src/GGI/ggimesa.conf $(DESTDIR)/etc/ggi | ||||||
|  | #	if [ -z "`grep ggimesa $(DESTDIR)/etc/ggi/libggi.conf`" ]; then \ | ||||||
|  | #	echo ".include $(DESTDIR)/etc/ggi/ggimesa.conf" >> $(DESTDIR)/etc/ggi/libggi.conf ; \ | ||||||
|  | #	fi | ||||||
|  |  | ||||||
|  | # Remove .o files, emacs backup files, etc. | ||||||
|  | clean: | ||||||
|  | 	-rm -f ggi/*~ *.o | ||||||
|  | 	-rm -f src/GGI/default/*~ *.so | ||||||
|  | 	-rm -f src/GGI/display/*~ *.so | ||||||
|  | 	-rm -f include/*~ | ||||||
|  | 	-rm -f include/GL/*~ | ||||||
|  | 	-rm -f src/*.o src/*~ src/*.a src/*/*.o src/*/*~ | ||||||
|  | 	-rm -f src-glu/*.o src-glu/*~ src-glu/*.a | ||||||
|  | 	-rm -f src-glut/*.o | ||||||
|  | 	-rm -f demos/*.o | ||||||
|  | 	-rm -f book/*.o book/*~ | ||||||
|  | 	-rm -f xdemos/*.o xdemos/*~ | ||||||
|  | 	-rm -f samples/*.o samples/*~ | ||||||
|  | 	-rm -f ggi/*.o ggi/demos/*.o ggi/*.a | ||||||
|  |  | ||||||
|  | # Remove everything that can be remade | ||||||
|  | realclean: clean | ||||||
|  | 	-rm -f lib/* | ||||||
|  | 	cd demos       && $(MAKE) -f Makefile.X11 realclean || true | ||||||
|  | 	cd xdemos      && $(MAKE) -f Makefile.X11 realclean || true | ||||||
|  | 	cd book        && $(MAKE) -f Makefile.X11 realclean || true | ||||||
|  | 	cd samples     && $(MAKE) -f Makefile.X11 realclean || true | ||||||
|  | 	cd ggi/demos   && $(MAKE) -f Makefile.X11 realclean || true | ||||||
|  | 	cd src/GGI/default && $(MAKE) -f Makefile.X11 realclean || true | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | DIRECTORY = Mesa-3.2 | ||||||
|  | LIB_NAME = MesaLib-3.2 | ||||||
|  | DEMO_NAME = MesaDemos-3.2 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | LIB_FILES =	\ | ||||||
|  | 	$(DIRECTORY)/Makefile*					\ | ||||||
|  | 	$(DIRECTORY)/Make-config				\ | ||||||
|  | 	$(DIRECTORY)/acconfig.h					\ | ||||||
|  | 	$(DIRECTORY)/acinclude.m4				\ | ||||||
|  | 	$(DIRECTORY)/aclocal.m4					\ | ||||||
|  | 	$(DIRECTORY)/conf.h.in					\ | ||||||
|  | 	$(DIRECTORY)/config.guess				\ | ||||||
|  | 	$(DIRECTORY)/config.sub					\ | ||||||
|  | 	$(DIRECTORY)/configure					\ | ||||||
|  | 	$(DIRECTORY)/configure.in				\ | ||||||
|  | 	$(DIRECTORY)/install-sh					\ | ||||||
|  | 	$(DIRECTORY)/ltconfig					\ | ||||||
|  | 	$(DIRECTORY)/ltmain.sh					\ | ||||||
|  | 	$(DIRECTORY)/missing					\ | ||||||
|  | 	$(DIRECTORY)/mkinstalldirs				\ | ||||||
|  | 	$(DIRECTORY)/stamp-h.in					\ | ||||||
|  | 	$(DIRECTORY)/configure					\ | ||||||
|  | 	$(DIRECTORY)/docs/CONFIG				\ | ||||||
|  | 	$(DIRECTORY)/docs/CONFORM				\ | ||||||
|  | 	$(DIRECTORY)/docs/COPYING				\ | ||||||
|  | 	$(DIRECTORY)/docs/COPYRIGHT				\ | ||||||
|  | 	$(DIRECTORY)/docs/DEVINFO				\ | ||||||
|  | 	$(DIRECTORY)/docs/IAFA-PACKAGE				\ | ||||||
|  | 	$(DIRECTORY)/docs/INSTALL				\ | ||||||
|  | 	$(DIRECTORY)/docs/INSTALL.GNU				\ | ||||||
|  | 	$(DIRECTORY)/docs/README				\ | ||||||
|  | 	$(DIRECTORY)/docs/README.*				\ | ||||||
|  | 	$(DIRECTORY)/docs/RELNOTES*				\ | ||||||
|  | 	$(DIRECTORY)/docs/VERSIONS				\ | ||||||
|  | 	$(DIRECTORY)/docs/*.spec				\ | ||||||
|  | 	$(DIRECTORY)/bin/README					\ | ||||||
|  | 	$(DIRECTORY)/bin/mklib*					\ | ||||||
|  | 	$(DIRECTORY)/*.BAT					\ | ||||||
|  | 	$(DIRECTORY)/*.bat					\ | ||||||
|  | 	$(DIRECTORY)/descrip.mms				\ | ||||||
|  | 	$(DIRECTORY)/mms-config					\ | ||||||
|  | 	$(DIRECTORY)/xlib.opt					\ | ||||||
|  | 	$(DIRECTORY)/STARTUP.MK					\ | ||||||
|  | 	$(DIRECTORY)/mesawin32.mak				\ | ||||||
|  | 	$(DIRECTORY)/Names.win					\ | ||||||
|  | 	$(DIRECTORY)/win32-openstep.sh				\ | ||||||
|  | 	$(DIRECTORY)/Makefile.dja				\ | ||||||
|  | 	$(DIRECTORY)/common.dja					\ | ||||||
|  | 	$(DIRECTORY)/include/GL/Makefile.in			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/Makefile.am			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/amesa.h				\ | ||||||
|  | 	$(DIRECTORY)/include/GL/dosmesa.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/foomesa.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/fxmesa.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/ggimesa.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/gl.h				\ | ||||||
|  | 	$(DIRECTORY)/include/GL/gl_mangle.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/glu.h				\ | ||||||
|  | 	$(DIRECTORY)/include/GL/glu_mangle.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/glx.h				\ | ||||||
|  | 	$(DIRECTORY)/include/GL/glx_mangle.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/mesa_wgl.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/mglmesa.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/osmesa.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/svgamesa.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/wmesa.h				\ | ||||||
|  | 	$(DIRECTORY)/include/GL/xmesa.h				\ | ||||||
|  | 	$(DIRECTORY)/include/GL/xmesa_x.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GL/xmesa_xf86.h			\ | ||||||
|  | 	$(DIRECTORY)/include/GLView.h				\ | ||||||
|  | 	$(DIRECTORY)/include/Makefile.in			\ | ||||||
|  | 	$(DIRECTORY)/include/Makefile.am			\ | ||||||
|  | 	$(DIRECTORY)/src/Makefile*				\ | ||||||
|  | 	$(DIRECTORY)/src/descrip.mms				\ | ||||||
|  | 	$(DIRECTORY)/src/mms_depend				\ | ||||||
|  | 	$(DIRECTORY)/src/mesa.conf				\ | ||||||
|  | 	$(DIRECTORY)/src/*.def					\ | ||||||
|  | 	$(DIRECTORY)/src/depend					\ | ||||||
|  | 	$(DIRECTORY)/src/*.[chS]				\ | ||||||
|  | 	$(DIRECTORY)/src/Allegro/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/src/BeOS/*.cpp				\ | ||||||
|  | 	$(DIRECTORY)/src/D3D/*.cpp				\ | ||||||
|  | 	$(DIRECTORY)/src/D3D/*.CPP				\ | ||||||
|  | 	$(DIRECTORY)/src/D3D/*.h				\ | ||||||
|  | 	$(DIRECTORY)/src/D3D/*.H				\ | ||||||
|  | 	$(DIRECTORY)/src/D3D/*.c				\ | ||||||
|  | 	$(DIRECTORY)/src/D3D/*.C				\ | ||||||
|  | 	$(DIRECTORY)/src/D3D/MAKEFILE				\ | ||||||
|  | 	$(DIRECTORY)/src/D3D/*bat				\ | ||||||
|  | 	$(DIRECTORY)/src/D3D/*DEF				\ | ||||||
|  | 	$(DIRECTORY)/src/DOS/DEPEND.DOS				\ | ||||||
|  | 	$(DIRECTORY)/src/DOS/*.c				\ | ||||||
|  | 	$(DIRECTORY)/src/FX/Makefile.am				\ | ||||||
|  | 	$(DIRECTORY)/src/FX/Makefile.in				\ | ||||||
|  | 	$(DIRECTORY)/src/FX/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/src/FX/*.def				\ | ||||||
|  | 	$(DIRECTORY)/src/FX/X86/Makefile.am			\ | ||||||
|  | 	$(DIRECTORY)/src/FX/X86/Makefile.in			\ | ||||||
|  | 	$(DIRECTORY)/src/FX/X86/*.[Shc]				\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/Makefile.am			\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/Makefile.in			\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/ggimesa.conf.in			\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/default/*.c			\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/default/Makefile.am		\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/default/Makefile.in		\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/default/genkgi.conf.in		\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/display/*.c			\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/display/Makefile.am		\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/display/Makefile.in		\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/display/fbdev.conf.in		\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/include/Makefile.am		\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/include/Makefile.in		\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/include/ggi/Makefile.am		\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/include/ggi/Makefile.in		\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.am	\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.in	\ | ||||||
|  | 	$(DIRECTORY)/src/GGI/include/ggi/mesa/*.h		\ | ||||||
|  | 	$(DIRECTORY)/src/KNOWN_BUGS				\ | ||||||
|  | 	$(DIRECTORY)/src/MGL/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/src/MGL/*.txt				\ | ||||||
|  | 	$(DIRECTORY)/src/OSmesa/Makefile.am			\ | ||||||
|  | 	$(DIRECTORY)/src/OSmesa/Makefile.in			\ | ||||||
|  | 	$(DIRECTORY)/src/OSmesa/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/src/S3/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/src/S3/*.def				\ | ||||||
|  | 	$(DIRECTORY)/src/S3/*.mak				\ | ||||||
|  | 	$(DIRECTORY)/src/S3/*.rc				\ | ||||||
|  | 	$(DIRECTORY)/src/SVGA/Makefile.am			\ | ||||||
|  | 	$(DIRECTORY)/src/SVGA/Makefile.in			\ | ||||||
|  | 	$(DIRECTORY)/src/SVGA/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/src/Windows/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/src/Windows/*.def				\ | ||||||
|  | 	$(DIRECTORY)/src/X/Makefile.am				\ | ||||||
|  | 	$(DIRECTORY)/src/X/Makefile.in				\ | ||||||
|  | 	$(DIRECTORY)/src/X/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/src/X86/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/src/X86/Makefile.am			\ | ||||||
|  | 	$(DIRECTORY)/src/X86/Makefile.in			\ | ||||||
|  | 	$(DIRECTORY)/src/X86/*.m4				\ | ||||||
|  | 	$(DIRECTORY)/src/X86/*.S				\ | ||||||
|  | 	$(DIRECTORY)/src/*.dja					\ | ||||||
|  | 	$(DIRECTORY)/src-glu/README[12]				\ | ||||||
|  | 	$(DIRECTORY)/src-glu/Makefile*				\ | ||||||
|  | 	$(DIRECTORY)/src-glu/descrip.mms			\ | ||||||
|  | 	$(DIRECTORY)/src-glu/mms_depend				\ | ||||||
|  | 	$(DIRECTORY)/src-glu/*.def				\ | ||||||
|  | 	$(DIRECTORY)/src-glu/*.dja				\ | ||||||
|  | 	$(DIRECTORY)/src-glu/depend				\ | ||||||
|  | 	$(DIRECTORY)/src-glu/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/widgets-mesa				\ | ||||||
|  | 	$(DIRECTORY)/widgets-sgi				\ | ||||||
|  | 	$(DIRECTORY)/util/README				\ | ||||||
|  | 	$(DIRECTORY)/util/Makefile.am				\ | ||||||
|  | 	$(DIRECTORY)/util/Makefile.in				\ | ||||||
|  | 	$(DIRECTORY)/util/*.[ch]				\ | ||||||
|  | 	$(DIRECTORY)/util/sampleMakefile			\ | ||||||
|  | 	$(DIRECTORY)/BeOS/Makefile				\ | ||||||
|  | 	$(DIRECTORY)/BeOS/*.cpp					\ | ||||||
|  | 	$(DIRECTORY)/WIN32/NMAKE.MAK				\ | ||||||
|  | 	$(DIRECTORY)/WIN32/NMAKE.MIF				\ | ||||||
|  | 	$(DIRECTORY)/WIN32/RES/*rc				\ | ||||||
|  | 	$(DIRECTORY)/WIN32/RES/*def				\ | ||||||
|  | 	$(DIRECTORY)/WIN32/RULES/lib.*				\ | ||||||
|  | 	$(DIRECTORY)/WIN32/RULES/progs.*			\ | ||||||
|  | 	$(DIRECTORY)/macos/README				\ | ||||||
|  | 	$(DIRECTORY)/macos/gli_api/*.h				\ | ||||||
|  | 	$(DIRECTORY)/macos/include-mac/*.h			\ | ||||||
|  | 	$(DIRECTORY)/macos/libraries/*.stub			\ | ||||||
|  | 	$(DIRECTORY)/macos/libraries/*Stub			\ | ||||||
|  | 	$(DIRECTORY)/macos/projects/*.mcp			\ | ||||||
|  | 	$(DIRECTORY)/macos/projects/*.exp			\ | ||||||
|  | 	$(DIRECTORY)/macos/projects/*.h				\ | ||||||
|  | 	$(DIRECTORY)/macos/resources/*.c			\ | ||||||
|  | 	$(DIRECTORY)/macos/resources/*.r			\ | ||||||
|  | 	$(DIRECTORY)/macos/resources/*.rsrc			\ | ||||||
|  | 	$(DIRECTORY)/macos/src-agl/*.exp			\ | ||||||
|  | 	$(DIRECTORY)/macos/src-agl/*.[ch]			\ | ||||||
|  | 	$(DIRECTORY)/macos/src-gli/*.[ch]			\ | ||||||
|  | 	$(DIRECTORY)/OpenStep					\ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | DEMO_FILES =	\ | ||||||
|  | 	$(DIRECTORY)/include/GL/glut.h		\ | ||||||
|  | 	$(DIRECTORY)/include/GL/glutf90.h	\ | ||||||
|  | 	$(DIRECTORY)/include/GL/glut_h.dja	\ | ||||||
|  | 	$(DIRECTORY)/src-glut/Makefile*		\ | ||||||
|  | 	$(DIRECTORY)/src-glut/depend		\ | ||||||
|  | 	$(DIRECTORY)/src-glut/*def		\ | ||||||
|  | 	$(DIRECTORY)/src-glut/descrip.mms	\ | ||||||
|  | 	$(DIRECTORY)/src-glut/mms_depend	\ | ||||||
|  | 	$(DIRECTORY)/src-glut/*.[ch]		\ | ||||||
|  | 	$(DIRECTORY)/src-glut.dja/*		\ | ||||||
|  | 	$(DIRECTORY)/src-glut.beos/Makefile	\ | ||||||
|  | 	$(DIRECTORY)/src-glut.beos/*.cpp	\ | ||||||
|  | 	$(DIRECTORY)/src-glut.beos/*.h		\ | ||||||
|  | 	$(DIRECTORY)/images/*			\ | ||||||
|  | 	$(DIRECTORY)/demos/Makefile*		\ | ||||||
|  | 	$(DIRECTORY)/demos/descrip.mms		\ | ||||||
|  | 	$(DIRECTORY)/demos/*.[ch]		\ | ||||||
|  | 	$(DIRECTORY)/demos/*.dat		\ | ||||||
|  | 	$(DIRECTORY)/xdemos/Makefile*		\ | ||||||
|  | 	$(DIRECTORY)/xdemos/descrip.mms		\ | ||||||
|  | 	$(DIRECTORY)/xdemos/*.[cf]		\ | ||||||
|  | 	$(DIRECTORY)/book/Makefile*		\ | ||||||
|  | 	$(DIRECTORY)/book/README		\ | ||||||
|  | 	$(DIRECTORY)/book/*.[ch]		\ | ||||||
|  | 	$(DIRECTORY)/samples/Makefile*		\ | ||||||
|  | 	$(DIRECTORY)/samples/README		\ | ||||||
|  | 	$(DIRECTORY)/samples/*.c		\ | ||||||
|  | 	$(DIRECTORY)/samples/*.dja		\ | ||||||
|  | 	$(DIRECTORY)/3Dfx			\ | ||||||
|  | 	$(DIRECTORY)/mtdemos			\ | ||||||
|  | 	$(DIRECTORY)/ggi | ||||||
|  |  | ||||||
|  |  | ||||||
|  | lib_tar: | ||||||
|  | 	cd .. ; \ | ||||||
|  | 	tar --exclude CVS -c -v -f $(LIB_NAME).tar $(LIB_FILES) ; \ | ||||||
|  | 	gzip $(LIB_NAME).tar ; \ | ||||||
|  | 	mv $(LIB_NAME).tar.gz $(DIRECTORY) | ||||||
|  |  | ||||||
|  | demo_tar: | ||||||
|  | 	cd .. ; \ | ||||||
|  | 	tar --exclude CVS -c -v -f $(DEMO_NAME).tar $(DEMO_FILES) ; \ | ||||||
|  | 	gzip $(DEMO_NAME).tar ; \ | ||||||
|  | 	mv $(DEMO_NAME).tar.gz $(DIRECTORY) | ||||||
|  |  | ||||||
|  | lib_zip: | ||||||
|  | 	-rm $(LIB_NAME).zip | ||||||
|  | 	cd .. ; \ | ||||||
|  | 	zip -r $(LIB_NAME).zip $(LIB_FILES) ; \ | ||||||
|  | 	mv $(LIB_NAME).zip $(DIRECTORY) | ||||||
|  |  | ||||||
|  | demo_zip: | ||||||
|  | 	-rm $(DEMO_NAME).zip | ||||||
|  | 	cd .. ; \ | ||||||
|  | 	zip -r $(DEMO_NAME).zip $(DEMO_FILES) ; \ | ||||||
|  | 	mv $(DEMO_NAME).zip $(DIRECTORY) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | SRC_FILES =	\ | ||||||
|  | 	RELNOTES		\ | ||||||
|  | 	src/Makefile*		\ | ||||||
|  | 	src/depend		\ | ||||||
|  | 	src/*.[chS]		\ | ||||||
|  | 	src/*/*.[ch]		\ | ||||||
|  | 	include/GL/*.h | ||||||
|  |  | ||||||
|  | srctar: | ||||||
|  | 	tar -cvf src.tar $(SRC_FILES) ; \ | ||||||
|  | 	gzip src.tar | ||||||
|  |  | ||||||
|  | srctar.zip: | ||||||
|  | 	-rm src.zip | ||||||
|  | 	zip -r src.zip $(SRC_FILES) ; \ | ||||||
							
								
								
									
										60
									
								
								README.rst
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								README.rst
									
									
									
									
									
								
							| @@ -1,60 +0,0 @@ | |||||||
| `Mesa <https://mesa3d.org>`_ - The 3D Graphics Library |  | ||||||
| ====================================================== |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Source |  | ||||||
| ------ |  | ||||||
|  |  | ||||||
| This repository lives at https://gitlab.freedesktop.org/mesa/mesa. |  | ||||||
| Other repositories are likely forks, and code found there is not supported. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Build & install |  | ||||||
| --------------- |  | ||||||
|  |  | ||||||
| You can find more information in our documentation (`docs/install.html |  | ||||||
| <https://mesa3d.org/install.html>`_), but the recommended way is to use |  | ||||||
| Meson (`docs/meson.html <https://mesa3d.org/meson.html>`_): |  | ||||||
|  |  | ||||||
| .. code-block:: sh |  | ||||||
|  |  | ||||||
|   $ mkdir build |  | ||||||
|   $ cd build |  | ||||||
|   $ meson .. |  | ||||||
|   $ sudo ninja install |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Support |  | ||||||
| ------- |  | ||||||
|  |  | ||||||
| Many Mesa devs hang on IRC; if you're not sure which channel is |  | ||||||
| appropriate, you should ask your question on `Freenode's #dri-devel |  | ||||||
| <irc://chat.freenode.net#dri-devel>`_, someone will redirect you if |  | ||||||
| necessary. |  | ||||||
| Remember that not everyone is in the same timezone as you, so it might |  | ||||||
| take a while before someone qualified sees your question. |  | ||||||
| To figure out who you're talking to, or which nick to ping for your |  | ||||||
| question, check out `Who's Who on IRC |  | ||||||
| <https://dri.freedesktop.org/wiki/WhosWho/>`_. |  | ||||||
|  |  | ||||||
| The next best option is to ask your question in an email to the |  | ||||||
| mailing lists: `mesa-dev\@lists.freedesktop.org |  | ||||||
| <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`_ |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Bug reports |  | ||||||
| ----------- |  | ||||||
|  |  | ||||||
| If you think something isn't working properly, please file a bug report |  | ||||||
| (`docs/bugs.html <https://mesa3d.org/bugs.html>`_). |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Contributing |  | ||||||
| ------------ |  | ||||||
|  |  | ||||||
| Contributions are welcome, and step-by-step instructions can be found in our |  | ||||||
| documentation (`docs/submittingpatches.html |  | ||||||
| <https://mesa3d.org/submittingpatches.html>`_). |  | ||||||
|  |  | ||||||
| Note that Mesa uses email mailing-lists for patches submission, review and |  | ||||||
| discussions. |  | ||||||
							
								
								
									
										120
									
								
								REVIEWERS
									
									
									
									
									
								
							
							
						
						
									
										120
									
								
								REVIEWERS
									
									
									
									
									
								
							| @@ -1,120 +0,0 @@ | |||||||
| Overview: |  | ||||||
|  |  | ||||||
| 	This file is similar in syntax (or more precisly a subset) of what is |  | ||||||
| 	used by the MAINTAINERS file in the linux kernel. |  | ||||||
| 	The purpose is not exactly the same the MAINTAINERS file in the linux |  | ||||||
| 	kernel, as there are not official/formal maintainers of different |  | ||||||
| 	subsystems in mesa, but is meant to give an idea of who to CC for |  | ||||||
| 	various patches for review. |  | ||||||
|  |  | ||||||
| Descriptions of section entries: |  | ||||||
|  |  | ||||||
| 	R: Designated reviewer: FullName <address@domain> |  | ||||||
| 	   These reviewers should be CCed on patches. |  | ||||||
| 	F: Files and directories with wildcard patterns. |  | ||||||
| 	   A trailing slash includes all files and subdirectory files. |  | ||||||
| 	   F:	drivers/net/	all files in and below drivers/net |  | ||||||
| 	   F:	drivers/net/*	all files in drivers/net, but not below |  | ||||||
| 	   F:	*/net/*		all files in "any top level directory"/net |  | ||||||
| 	   One pattern per line.  Multiple F: lines acceptable. |  | ||||||
|  |  | ||||||
| Maintainers List (try to look for most precise areas first) |  | ||||||
|  |  | ||||||
| Note: this is an opt-in system, I have not tried to add anyone who hasn't |  | ||||||
| either asked me or sent a patch to add themselves. |  | ||||||
|  |  | ||||||
| 		----------------------------------- |  | ||||||
|  |  | ||||||
| NIR |  | ||||||
| R:	Jason Ekstrand <jason@jlekstrand.net> |  | ||||||
| F:	src/compiler/nir/ |  | ||||||
|  |  | ||||||
| DOCUMENTATION |  | ||||||
| R: Emil Velikov <emil.l.velikov@gmail.com> |  | ||||||
| R: Eric Engestrom <eric@engestrom.ch> |  | ||||||
| F: docs/ |  | ||||||
| F: doxygen/ |  | ||||||
|  |  | ||||||
| COMPATIBILITY HEADERS |  | ||||||
| R: Emil Velikov <emil.l.velikov@gmail.com> |  | ||||||
| F: include/c99* |  | ||||||
|  |  | ||||||
| DRI LOADER |  | ||||||
| R: Emil Velikov <emil.l.velikov@gmail.com> |  | ||||||
| F: src/loader/ |  | ||||||
|  |  | ||||||
| EGL |  | ||||||
| R: Eric Engestrom <eric@engestrom.ch> |  | ||||||
| R: Emil Velikov <emil.l.velikov@gmail.com> |  | ||||||
| F: src/egl/ |  | ||||||
| F: include/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/ |  | ||||||
| F: src/gallium/auxiliary/target-helpers/ |  | ||||||
|  |  | ||||||
| GALLIUM TARGETS |  | ||||||
| R: Emil Velikov <emil.l.velikov@gmail.com> |  | ||||||
| F: src/gallium/targets/ |  | ||||||
|  |  | ||||||
| SCONS BUILD |  | ||||||
| F: scons/ |  | ||||||
| F: */SConscript* |  | ||||||
| F: */Makefile.sources |  | ||||||
|  |  | ||||||
| ANDROID BUILD |  | ||||||
| R: Emil Velikov <emil.l.velikov@gmail.com> |  | ||||||
| R: Rob Herring <robh@kernel.org> |  | ||||||
| F: CleanSpec.mk |  | ||||||
| F: */Android.*mk |  | ||||||
| F: */Makefile.sources |  | ||||||
|  |  | ||||||
| MESON BUILD |  | ||||||
| R: Dylan Baker <dylan@pnwbakers.com> |  | ||||||
| R: Eric Engestrom <eric@engestrom.ch> |  | ||||||
| F: */meson.build |  | ||||||
| F: meson.build |  | ||||||
| F: meson_options.txt |  | ||||||
|  |  | ||||||
| ANDROID EGL SUPPORT |  | ||||||
| R: Rob Herring <robh@kernel.org> |  | ||||||
| R: Tomasz Figa <tfiga@chromium.org> |  | ||||||
| F: src/egl/drivers/dri2/platform_android.c |  | ||||||
|  |  | ||||||
| WAYLAND EGL SUPPORT |  | ||||||
| R: Daniel Stone <daniels@collabora.com> |  | ||||||
| F: src/egl/wayland/* |  | ||||||
| F: src/egl/drivers/dri2/platform_wayland.c |  | ||||||
|  |  | ||||||
| FREEDRENO |  | ||||||
| R:	Rob Clark <robclark@freedesktop.org> |  | ||||||
| F:	src/gallium/drivers/freedreno/ |  | ||||||
|  |  | ||||||
| GLX |  | ||||||
| R: Adam Jackson <ajax@redhat.com> |  | ||||||
| F: src/glx/ |  | ||||||
|  |  | ||||||
| VULKAN |  | ||||||
| R: Eric Engestrom <eric@engestrom.ch> |  | ||||||
| F: src/vulkan/ |  | ||||||
| F: include/vulkan/ |  | ||||||
|  |  | ||||||
| VMWARE DRIVER |  | ||||||
| R: Brian Paul <brianp@vmware.com> |  | ||||||
| R: Charmaine Lee <charmainel@vmware.com> |  | ||||||
| F: src/gallium/drivers/svga/ |  | ||||||
|  |  | ||||||
| VMWARE WINSYS CODE |  | ||||||
| R: Thomas Hellstrom <thellstrom@vmware.com> |  | ||||||
| R: Deepak Rawat <drawat@vmware.com> |  | ||||||
| F: src/gallium/winsys/svga/ |  | ||||||
							
								
								
									
										187
									
								
								SConstruct
									
									
									
									
									
								
							
							
						
						
									
										187
									
								
								SConstruct
									
									
									
									
									
								
							| @@ -1,187 +0,0 @@ | |||||||
| ####################################################################### |  | ||||||
| # Top-level SConstruct |  | ||||||
| # |  | ||||||
| # For example, invoke scons as |  | ||||||
| # |  | ||||||
| #   scons build=debug llvm=yes machine=x86 |  | ||||||
| # |  | ||||||
| # to set configuration variables. Or you can write those options to a file |  | ||||||
| # named config.py: |  | ||||||
| # |  | ||||||
| #   # config.py |  | ||||||
| #   build='debug' |  | ||||||
| #   llvm=True |  | ||||||
| #   machine='x86' |  | ||||||
| # |  | ||||||
| # Invoke |  | ||||||
| # |  | ||||||
| #   scons -h |  | ||||||
| # |  | ||||||
| # to get the full list of options. See scons manpage for more info. |  | ||||||
| # |  | ||||||
|  |  | ||||||
| from __future__ import print_function |  | ||||||
| import os |  | ||||||
| import os.path |  | ||||||
| import sys |  | ||||||
| import SCons.Util |  | ||||||
|  |  | ||||||
| import common |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Minimal scons version |  | ||||||
|  |  | ||||||
| EnsureSConsVersion(2, 4) |  | ||||||
| EnsurePythonVersion(2, 7) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Configuration options |  | ||||||
|  |  | ||||||
| opts = Variables('config.py') |  | ||||||
| common.AddOptions(opts) |  | ||||||
|  |  | ||||||
| env = Environment( |  | ||||||
| 	options = opts, |  | ||||||
| 	tools = ['gallium'], |  | ||||||
| 	toolpath = ['#scons'], |  | ||||||
| 	ENV = os.environ, |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| # XXX: This creates a many problems as it saves... |  | ||||||
| #opts.Save('config.py', env) |  | ||||||
|  |  | ||||||
| # Backwards compatability with old target configuration variable |  | ||||||
| try: |  | ||||||
|     targets = ARGUMENTS['targets'] |  | ||||||
| except KeyError: |  | ||||||
|     pass |  | ||||||
| else: |  | ||||||
|     targets = targets.split(',') |  | ||||||
|     print('scons: warning: targets option is deprecated; pass the targets on their own such as') |  | ||||||
|     print() |  | ||||||
|     print('  scons %s' % ' '.join(targets)) |  | ||||||
|     print() |  | ||||||
|     COMMAND_LINE_TARGETS.append(targets) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Help(opts.GenerateHelpText(env)) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Print a deprecation warning for using scons on non-windows |  | ||||||
|  |  | ||||||
| if common.host_platform != 'windows' and env['platform'] != 'windows': |  | ||||||
|     if env['force_scons']: |  | ||||||
|         print("WARNING: Scons is deprecated for non-windows platforms (including cygwin) " |  | ||||||
|               "please use meson instead.", file=sys.stderr) |  | ||||||
|     else: |  | ||||||
|         print("ERROR: Scons is deprecated for non-windows platforms (including cygwin) " |  | ||||||
|               "please use meson instead. If you really need to use scons you " |  | ||||||
|               "can add `force_scons=1` to the scons command line.", file=sys.stderr) |  | ||||||
|         sys.exit(1) |  | ||||||
| else: |  | ||||||
|     print("WARNING: Scons support is in the process of being deprecated on " |  | ||||||
|           "on windows platforms (including mingw). If you haven't already " |  | ||||||
|           "please try using meson for windows builds. Be sure to report any " |  | ||||||
|           "issues you run into", file=sys.stderr) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Environment setup |  | ||||||
|  |  | ||||||
| with open("VERSION") as f: |  | ||||||
|   mesa_version = f.read().strip() |  | ||||||
| env.Append(CPPDEFINES = [ |  | ||||||
|     ('PACKAGE_VERSION', '\\"%s\\"' % mesa_version), |  | ||||||
|     ('PACKAGE_BUGREPORT', '\\"https://gitlab.freedesktop.org/mesa/mesa/issues\\"'), |  | ||||||
| ]) |  | ||||||
|  |  | ||||||
| # Includes |  | ||||||
| env.Prepend(CPPPATH = [ |  | ||||||
| 	'#/include', |  | ||||||
| ]) |  | ||||||
| env.Append(CPPPATH = [ |  | ||||||
| 	'#/src/gallium/include', |  | ||||||
| 	'#/src/gallium/auxiliary', |  | ||||||
| 	'#/src/gallium/drivers', |  | ||||||
| 	'#/src/gallium/winsys', |  | ||||||
| ]) |  | ||||||
|  |  | ||||||
| # for debugging |  | ||||||
| #print env.Dump() |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # Add a check target for running tests |  | ||||||
| check = env.Alias('check') |  | ||||||
| env.AlwaysBuild(check) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Invoke host SConscripts |  | ||||||
| # |  | ||||||
| # For things that are meant to be run on the native host build machine, instead |  | ||||||
| # of the target machine. |  | ||||||
| # |  | ||||||
|  |  | ||||||
| # Create host environent |  | ||||||
| if env['crosscompile'] and not env['embedded']: |  | ||||||
|     host_env = Environment( |  | ||||||
|         options = opts, |  | ||||||
|         # no tool used |  | ||||||
|         tools = [], |  | ||||||
|         toolpath = ['#scons'], |  | ||||||
|         ENV = os.environ, |  | ||||||
|     ) |  | ||||||
|  |  | ||||||
|     # Override options |  | ||||||
|     host_env['platform'] = common.host_platform |  | ||||||
|     host_env['machine'] = common.host_machine |  | ||||||
|     host_env['toolchain'] = 'default' |  | ||||||
|     host_env['llvm'] = False |  | ||||||
|  |  | ||||||
|     host_env.Tool('gallium') |  | ||||||
|  |  | ||||||
|     host_env['hostonly'] = True |  | ||||||
|     assert host_env['crosscompile'] == False |  | ||||||
|  |  | ||||||
|     target_env = env |  | ||||||
|     env = host_env |  | ||||||
|     Export('env') |  | ||||||
|  |  | ||||||
|     SConscript( |  | ||||||
|         'src/SConscript', |  | ||||||
|         variant_dir = host_env['build_dir'], |  | ||||||
|         duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html |  | ||||||
|     ) |  | ||||||
|  |  | ||||||
|     env = target_env |  | ||||||
|  |  | ||||||
| Export('env') |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Invoke SConscripts |  | ||||||
|  |  | ||||||
| # TODO: Build several variants at the same time? |  | ||||||
| # http://www.scons.org/wiki/SimultaneousVariantBuilds |  | ||||||
|  |  | ||||||
| SConscript( |  | ||||||
| 	'src/SConscript', |  | ||||||
| 	variant_dir = env['build_dir'], |  | ||||||
| 	duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ######################################################################## |  | ||||||
| # List all aliases |  | ||||||
|  |  | ||||||
| try: |  | ||||||
|     from SCons.Node.Alias import default_ans |  | ||||||
| except ImportError: |  | ||||||
|     pass |  | ||||||
| else: |  | ||||||
|     aliases = sorted(default_ans.keys()) |  | ||||||
|     env.Help('\n') |  | ||||||
|     env.Help('Recognized targets:\n') |  | ||||||
|     for alias in aliases: |  | ||||||
|         env.Help('    %s\n' % alias) |  | ||||||
							
								
								
									
										73
									
								
								appveyor.yml
									
									
									
									
									
								
							
							
						
						
									
										73
									
								
								appveyor.yml
									
									
									
									
									
								
							| @@ -1,73 +0,0 @@ | |||||||
| # http://www.appveyor.com/docs/appveyor-yml |  | ||||||
| # |  | ||||||
| # To setup AppVeyor for your own personal repositories do the following: |  | ||||||
| # - Sign up |  | ||||||
| # - Add a new project |  | ||||||
| # - Select Git and fill in the Git clone URL |  | ||||||
| # - Setup a Git hook as explained in |  | ||||||
| #   https://github.com/appveyor/webhooks#installing-git-hook |  | ||||||
| # - Check 'Settings > General > Skip branches without appveyor.yml' |  | ||||||
| # - Check 'Settings > General > Rolling builds' |  | ||||||
| # - Setup the global or project notifications to your liking |  | ||||||
| # |  | ||||||
| # Note that kicking (or restarting) a build via the web UI will not work, as it |  | ||||||
| # will fail to find appveyor.yml .  The Git hook is the most practical way to |  | ||||||
| # kick a build. |  | ||||||
| # |  | ||||||
| # See also: |  | ||||||
| # - http://help.appveyor.com/discussions/problems/2209-node-grunt-build-specify-a-project-or-solution-file-the-directory-does-not-contain-a-project-or-solution-file |  | ||||||
| # - http://help.appveyor.com/discussions/questions/1184-build-config-vs-appveyoryaml |  | ||||||
|  |  | ||||||
| version: '{build}' |  | ||||||
|  |  | ||||||
| branches: |  | ||||||
|   except: |  | ||||||
|   - /^travis.*$/ |  | ||||||
|  |  | ||||||
| # Don't download the full Mesa history to speed up cloning.  However the clone |  | ||||||
| # depth must not be too small, otherwise builds might fail when lots of patches |  | ||||||
| # are committed in succession, because the desired commit is not found on the |  | ||||||
| # truncated history. |  | ||||||
| # |  | ||||||
| # See also: |  | ||||||
| # - https://www.appveyor.com/blog/2014/06/04/shallow-clone-for-git-repositories |  | ||||||
| clone_depth: 100 |  | ||||||
|  |  | ||||||
| # https://www.appveyor.com/docs/build-cache/ |  | ||||||
| cache: |  | ||||||
| - '%LOCALAPPDATA%\pip\Cache -> appveyor.yml' |  | ||||||
| - win_flex_bison-2.5.15.zip |  | ||||||
| - llvm-5.0.1-msvc2017-mtd.7z |  | ||||||
| - subprojects\packagecache -> subprojects\*.wrap |  | ||||||
|  |  | ||||||
| os: Visual Studio 2017 |  | ||||||
|  |  | ||||||
| init: |  | ||||||
| # Appveyor defaults core.autocrlf to input instead of the default (true), but |  | ||||||
| # that can hide problems processing CRLF text on Windows |  | ||||||
| - git config --global core.autocrlf true |  | ||||||
|  |  | ||||||
| environment: |  | ||||||
|   WINFLEXBISON_VERSION: 2.5.15 |  | ||||||
|   LLVM_ARCHIVE: llvm-5.0.1-msvc2017-mtd.7z |  | ||||||
|   matrix: |  | ||||||
|   - compiler: msvc |  | ||||||
|     buildsystem: scons |  | ||||||
|   - compiler: msvc |  | ||||||
|     buildsystem: meson |  | ||||||
|     path: C:\Python37-x64;C:\Python37-x64\Scripts;%path% |  | ||||||
|  |  | ||||||
| install: |  | ||||||
| - cmd: .appveyor\appveyor_msvc.bat install |  | ||||||
|  |  | ||||||
| build_script: |  | ||||||
| - cmd: .appveyor\appveyor_msvc.bat build_script |  | ||||||
|  |  | ||||||
| test_script: |  | ||||||
| - cmd: .appveyor\appveyor_msvc.bat test_script |  | ||||||
|  |  | ||||||
| # It's possible to setup notification here, as described in |  | ||||||
| # http://www.appveyor.com/docs/notifications#appveyor-yml-configuration , but |  | ||||||
| # doing so would cause the notification settings to be replicated across all |  | ||||||
| # repos, which is most likely undesired.  So it's better to rely on the |  | ||||||
| # Appveyor global/project notification settings. |  | ||||||
| @@ -1,11 +0,0 @@ | |||||||
| # This is reverted shortly after landing |  | ||||||
| 4432a2d14d80081d062f7939a950d65ea3a16eed |  | ||||||
|  |  | ||||||
| # These were manually backported |  | ||||||
| 21be5c8edd3ad156f6cbfbceb96e7939716d9f2c |  | ||||||
| 4b392ced2d744fccffe95490ff57e6b41033c266 |  | ||||||
| b6905438514ae4de0b7f85c861e3d811ddaadda9 |  | ||||||
|  |  | ||||||
| # This isn't worth the effort to backport, as it only affects build with |  | ||||||
| # asserts enable, which hopefully wont happen in a stable branch. |  | ||||||
| 937b9055698be0dfdb7d2e0673a989e2ecc05912 |  | ||||||
| @@ -1,2 +0,0 @@ | |||||||
| [*.sh] |  | ||||||
| indent_style = tab |  | ||||||
| @@ -1,272 +0,0 @@ | |||||||
| #!/usr/bin/env python3 |  | ||||||
| # Copyright © 2019 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. |  | ||||||
|  |  | ||||||
| """Generates release notes for a given version of mesa.""" |  | ||||||
|  |  | ||||||
| import asyncio |  | ||||||
| import datetime |  | ||||||
| import os |  | ||||||
| import pathlib |  | ||||||
| import sys |  | ||||||
| import textwrap |  | ||||||
| import typing |  | ||||||
| import urllib.parse |  | ||||||
|  |  | ||||||
| import aiohttp |  | ||||||
| from mako.template import Template |  | ||||||
| from mako import exceptions |  | ||||||
|  |  | ||||||
|  |  | ||||||
| CURRENT_GL_VERSION = '4.6' |  | ||||||
| CURRENT_VK_VERSION = '1.1' |  | ||||||
|  |  | ||||||
| TEMPLATE = Template(textwrap.dedent("""\ |  | ||||||
|     <%! |  | ||||||
|         import html |  | ||||||
|     %> |  | ||||||
|     <!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 ${next_version} Release Notes / ${today}</h1> |  | ||||||
|  |  | ||||||
|     <p> |  | ||||||
|     %if not bugfix: |  | ||||||
|         Mesa ${next_version} is a new development release. People who are concerned |  | ||||||
|         with stability and reliability should stick with a previous release or |  | ||||||
|         wait for Mesa ${version[:-1]}1. |  | ||||||
|     %else: |  | ||||||
|         Mesa ${next_version} is a bug fix release which fixes bugs found since the ${version} release. |  | ||||||
|     %endif |  | ||||||
|     </p> |  | ||||||
|     <p> |  | ||||||
|     Mesa ${next_version} implements the OpenGL ${gl_version} 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 ${gl_version}. OpenGL |  | ||||||
|     ${gl_version} is <strong>only</strong> available if requested at context creation. |  | ||||||
|     Compatibility contexts may report a lower version depending on each driver. |  | ||||||
|     </p> |  | ||||||
|     <p> |  | ||||||
|     Mesa ${next_version} implements the Vulkan ${vk_version} API, but the version reported by |  | ||||||
|     the apiVersion property of the VkPhysicalDeviceProperties struct |  | ||||||
|     depends on the particular driver being used. |  | ||||||
|     </p> |  | ||||||
|  |  | ||||||
|     <h2>SHA256 checksum</h2> |  | ||||||
|     <pre> |  | ||||||
|     TBD. |  | ||||||
|     </pre> |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     <h2>New features</h2> |  | ||||||
|  |  | ||||||
|     <ul> |  | ||||||
|     %for f in features: |  | ||||||
|         <li>${html.escape(f)}</li> |  | ||||||
|     %endfor |  | ||||||
|     </ul> |  | ||||||
|  |  | ||||||
|     <h2>Bug fixes</h2> |  | ||||||
|  |  | ||||||
|     <ul> |  | ||||||
|     %for b in bugs: |  | ||||||
|         <li>${html.escape(b)}</li> |  | ||||||
|     %endfor |  | ||||||
|     </ul> |  | ||||||
|  |  | ||||||
|     <h2>Changes</h2> |  | ||||||
|  |  | ||||||
|     <ul> |  | ||||||
|     %for c, author in changes: |  | ||||||
|       %if author: |  | ||||||
|         <p>${html.escape(c)}</p> |  | ||||||
|       %else: |  | ||||||
|         <li>${html.escape(c)}</li> |  | ||||||
|       %endif |  | ||||||
|     %endfor |  | ||||||
|     </ul> |  | ||||||
|  |  | ||||||
|     </div> |  | ||||||
|     </body> |  | ||||||
|     </html> |  | ||||||
|     """)) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def gather_commits(version: str) -> str: |  | ||||||
|     p = await asyncio.create_subprocess_exec( |  | ||||||
|         'git', 'log', f'mesa-{version}..', '--grep', r'Closes: \(https\|#\).*', |  | ||||||
|         stdout=asyncio.subprocess.PIPE) |  | ||||||
|     out, _ = await p.communicate() |  | ||||||
|     assert p.returncode == 0, f"git log didn't work: {version}" |  | ||||||
|     return out.decode().strip() |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def gather_bugs(version: str) -> typing.List[str]: |  | ||||||
|     commits = await gather_commits(version) |  | ||||||
|  |  | ||||||
|     issues: typing.List[str] = [] |  | ||||||
|     for commit in commits.split('\n'): |  | ||||||
|         sha, message = commit.split(maxsplit=1) |  | ||||||
|         p = await asyncio.create_subprocess_exec( |  | ||||||
|             'git', 'log', '--max-count', '1', r'--format=%b', sha, |  | ||||||
|             stdout=asyncio.subprocess.PIPE) |  | ||||||
|         _out, _ = await p.communicate() |  | ||||||
|         out = _out.decode().split('\n') |  | ||||||
|         for line in reversed(out): |  | ||||||
|             if line.startswith('Closes:'): |  | ||||||
|                 bug = line.lstrip('Closes:').strip() |  | ||||||
|                 break |  | ||||||
|         else: |  | ||||||
|             raise Exception('No closes found?') |  | ||||||
|         if bug.startswith('h'): |  | ||||||
|             # This means we have a bug in the form "Closes: https://..." |  | ||||||
|             issues.append(os.path.basename(urllib.parse.urlparse(bug).path)) |  | ||||||
|         else: |  | ||||||
|             issues.append(bug.lstrip('#')) |  | ||||||
|  |  | ||||||
|     loop = asyncio.get_event_loop() |  | ||||||
|     async with aiohttp.ClientSession(loop=loop) as session: |  | ||||||
|         results = await asyncio.gather(*[get_bug(session, i) for i in issues]) |  | ||||||
|     typing.cast(typing.Tuple[str, ...], results) |  | ||||||
|     return list(results) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def get_bug(session: aiohttp.ClientSession, bug_id: str) -> str: |  | ||||||
|     """Query gitlab to get the name of the issue that was closed.""" |  | ||||||
|     # Mesa's gitlab id is 176, |  | ||||||
|     url = 'https://gitlab.freedesktop.org/api/v4/projects/176/issues' |  | ||||||
|     params = {'iids[]': bug_id} |  | ||||||
|     async with session.get(url, params=params) as response: |  | ||||||
|         content = await response.json() |  | ||||||
|     return content[0]['title'] |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def get_shortlog(version: str) -> str: |  | ||||||
|     """Call git shortlog.""" |  | ||||||
|     p = await asyncio.create_subprocess_exec('git', 'shortlog', f'mesa-{version}..', |  | ||||||
|                                              stdout=asyncio.subprocess.PIPE) |  | ||||||
|     out, _ = await p.communicate() |  | ||||||
|     assert p.returncode == 0, 'error getting shortlog' |  | ||||||
|     assert out is not None, 'just for mypy' |  | ||||||
|     return out.decode() |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def walk_shortlog(log: str) -> typing.Generator[typing.Tuple[str, bool], None, None]: |  | ||||||
|     for l in log.split('\n'): |  | ||||||
|         if l.startswith(' '): # this means we have a patch description |  | ||||||
|             yield l, False |  | ||||||
|         else: |  | ||||||
|             yield l, True |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def calculate_next_version(version: str, is_point: bool) -> str: |  | ||||||
|     """Calculate the version about to be released.""" |  | ||||||
|     if '-' in version: |  | ||||||
|         version = version.split('-')[0] |  | ||||||
|     if is_point: |  | ||||||
|         base = version.split('.') |  | ||||||
|         base[2] = str(int(base[2]) + 1) |  | ||||||
|         return '.'.join(base) |  | ||||||
|     return version |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def calculate_previous_version(version: str, is_point: bool) -> str: |  | ||||||
|     """Calculate the previous version to compare to. |  | ||||||
|  |  | ||||||
|     In the case of -rc to final that verison is the previous .0 release, |  | ||||||
|     (19.3.0 in the case of 20.0.0, for example). for point releases that is |  | ||||||
|     the last point release. This value will be the same as the input value |  | ||||||
|     for a point release, but different for a major release. |  | ||||||
|     """ |  | ||||||
|     if '-' in version: |  | ||||||
|         version = version.split('-')[0] |  | ||||||
|     if is_point: |  | ||||||
|         return version |  | ||||||
|     base = version.split('.') |  | ||||||
|     if base[1] == '0': |  | ||||||
|         base[0] = str(int(base[0]) - 1) |  | ||||||
|         base[1] = '3' |  | ||||||
|     else: |  | ||||||
|         base[1] = str(int(base[1]) - 1) |  | ||||||
|     return '.'.join(base) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def get_features(is_point_release: bool) -> typing.Generator[str, None, None]: |  | ||||||
|     p = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes' / 'new_features.txt' |  | ||||||
|     if p.exists(): |  | ||||||
|         if is_point_release: |  | ||||||
|             print("WARNING: new features being introduced in a point release", file=sys.stderr) |  | ||||||
|         with p.open('rt') as f: |  | ||||||
|             for line in f: |  | ||||||
|                 yield line |  | ||||||
|     else: |  | ||||||
|         yield "None" |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def main() -> None: |  | ||||||
|     v = pathlib.Path(__file__).parent.parent / 'VERSION' |  | ||||||
|     with v.open('rt') as f: |  | ||||||
|         raw_version = f.read().strip() |  | ||||||
|     is_point_release = '-rc' not in raw_version |  | ||||||
|     assert '-devel' not in raw_version, 'Do not run this script on -devel' |  | ||||||
|     version = raw_version.split('-')[0] |  | ||||||
|     previous_version = calculate_previous_version(version, is_point_release) |  | ||||||
|     next_version = calculate_next_version(version, is_point_release) |  | ||||||
|  |  | ||||||
|     shortlog, bugs = await asyncio.gather( |  | ||||||
|         get_shortlog(previous_version), |  | ||||||
|         gather_bugs(previous_version), |  | ||||||
|     ) |  | ||||||
|  |  | ||||||
|     final = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes' / f'{next_version}.html' |  | ||||||
|     with final.open('wt') as f: |  | ||||||
|         try: |  | ||||||
|             f.write(TEMPLATE.render( |  | ||||||
|                 bugfix=is_point_release, |  | ||||||
|                 bugs=bugs, |  | ||||||
|                 changes=walk_shortlog(shortlog), |  | ||||||
|                 features=get_features(is_point_release), |  | ||||||
|                 gl_version=CURRENT_GL_VERSION, |  | ||||||
|                 next_version=next_version, |  | ||||||
|                 today=datetime.date.today(), |  | ||||||
|                 version=previous_version, |  | ||||||
|                 vk_version=CURRENT_VK_VERSION, |  | ||||||
|             )) |  | ||||||
|         except: |  | ||||||
|             print(exceptions.text_error_template().render()) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     loop = asyncio.get_event_loop() |  | ||||||
|     loop.run_until_complete(main()) |  | ||||||
| @@ -1,62 +0,0 @@ | |||||||
| # Copyright © 2019 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 unittest import mock |  | ||||||
|  |  | ||||||
| import pytest |  | ||||||
|  |  | ||||||
| from .gen_release_notes import * |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @pytest.mark.parametrize( |  | ||||||
|     'current, is_point, expected', |  | ||||||
|     [ |  | ||||||
|         ('19.2.0', True, '19.2.1'), |  | ||||||
|         ('19.3.6', True, '19.3.7'), |  | ||||||
|         ('20.0.0-rc4', False, '20.0.0'), |  | ||||||
|     ]) |  | ||||||
| def test_next_version(current: str, is_point: bool, expected: str) -> None: |  | ||||||
|     assert calculate_next_version(current, is_point) == expected |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @pytest.mark.parametrize( |  | ||||||
|     'current, is_point, expected', |  | ||||||
|     [ |  | ||||||
|         ('19.3.6', True, '19.3.6'), |  | ||||||
|         ('20.0.0-rc4', False, '19.3.0'), |  | ||||||
|     ]) |  | ||||||
| def test_previous_version(current: str, is_point: bool, expected: str) -> None: |  | ||||||
|     assert calculate_previous_version(current, is_point) == expected |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @pytest.mark.asyncio |  | ||||||
| async def test_get_shortlog(): |  | ||||||
|     # Certainly not perfect, but it's something |  | ||||||
|     version = '19.2.0' |  | ||||||
|     out = await get_shortlog(version) |  | ||||||
|     assert out |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @pytest.mark.asyncio |  | ||||||
| async def test_gather_commits(): |  | ||||||
|     # Certainly not perfect, but it's something |  | ||||||
|     version = '19.2.0' |  | ||||||
|     out = await gather_commits(version) |  | ||||||
|     assert out |  | ||||||
| @@ -1,45 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| # Script for generating a list of candidates which fix commits that have been |  | ||||||
| # previously cherry-picked to a stable branch. |  | ||||||
| # |  | ||||||
| # Usage examples: |  | ||||||
| # |  | ||||||
| # $ bin/get-extra-pick-list.sh |  | ||||||
| # $ bin/get-extra-pick-list.sh > picklist |  | ||||||
| # $ bin/get-extra-pick-list.sh | tee picklist |  | ||||||
|  |  | ||||||
| # Use the last branchpoint as our limit for the search |  | ||||||
| latest_branchpoint=`git merge-base origin/master HEAD` |  | ||||||
|  |  | ||||||
| # Grep for commits with "cherry picked from commit" in the commit message. |  | ||||||
| git log --reverse --grep="cherry picked from commit" $latest_branchpoint..HEAD |\ |  | ||||||
| 	grep "cherry picked from commit" |\ |  | ||||||
| 	sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//'  > already_picked |  | ||||||
|  |  | ||||||
| # For each cherry-picked commit... |  | ||||||
| cat already_picked | cut -c -8 |\ |  | ||||||
| while read sha |  | ||||||
| do |  | ||||||
| 	# ... check if it's referenced (fixed by another) patch |  | ||||||
| 	git log -n1 --pretty=oneline --grep=$sha $latest_branchpoint..origin/master |\ |  | ||||||
| 		cut -c -8 |\ |  | ||||||
| 	while read candidate |  | ||||||
| 	do |  | ||||||
| 		# And flag up if it hasn't landed in branch yet. |  | ||||||
| 		if grep -q ^$candidate already_picked ; then |  | ||||||
| 			continue |  | ||||||
| 		fi |  | ||||||
| 		# Or if it isn't in the ignore list. |  | ||||||
| 		if [ -f bin/.cherry-ignore ] ; then |  | ||||||
| 			if grep -q ^$candidate bin/.cherry-ignore ; then |  | ||||||
| 				continue |  | ||||||
| 			fi |  | ||||||
| 		fi |  | ||||||
| 		printf "Commit \"%s\" references %s\n" \ |  | ||||||
| 		       "`git log -n1 --pretty=oneline $candidate`" \ |  | ||||||
| 		       "$sha" |  | ||||||
| 	done |  | ||||||
| done |  | ||||||
|  |  | ||||||
| rm -f already_picked |  | ||||||
| @@ -1,150 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| # Script for generating a list of candidates for cherry-picking to a stable branch |  | ||||||
| # |  | ||||||
| # Usage examples: |  | ||||||
| # |  | ||||||
| # $ bin/get-pick-list.sh |  | ||||||
| # $ bin/get-pick-list.sh > picklist |  | ||||||
| # $ bin/get-pick-list.sh | tee picklist |  | ||||||
| # |  | ||||||
| # The output is as follows: |  | ||||||
| # [nomination_type] commit_sha commit summary |  | ||||||
|  |  | ||||||
| is_stable_nomination() |  | ||||||
| { |  | ||||||
| 	git show --pretty=medium --summary "$1" | grep -q -i -o "CC:.*mesa-stable" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| is_typod_nomination() |  | ||||||
| { |  | ||||||
| 	git show --pretty=medium --summary "$1" | grep -q -i -o "CC:.*mesa-dev" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| fixes= |  | ||||||
|  |  | ||||||
| # Helper to handle various mistypos of the fixes tag. |  | ||||||
| # The tag string itself is passed as argument and normalised within. |  | ||||||
| # |  | ||||||
| # Resulting string in the global variable "fixes" and contains entries |  | ||||||
| # in the form "fixes:$sha" |  | ||||||
| is_sha_nomination() |  | ||||||
| { |  | ||||||
| 	fixes=`git show --pretty=medium -s $1 | tr -d "\n" | \ |  | ||||||
| 		sed -e 's/'"$2"'/\nfixes:/Ig' | \ |  | ||||||
| 		grep -Eo 'fixes:[a-f0-9]{4,40}'` |  | ||||||
|  |  | ||||||
| 	fixes_count=`echo "$fixes" | grep "fixes:" | wc -l` |  | ||||||
| 	if test $fixes_count -eq 0; then |  | ||||||
| 		return 1 |  | ||||||
| 	fi |  | ||||||
|  |  | ||||||
| 	# Throw a warning for each invalid sha |  | ||||||
| 	while test $fixes_count -gt 0; do |  | ||||||
| 		# Treat only the current line |  | ||||||
| 		id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : -f 2` |  | ||||||
| 		fixes_count=$(($fixes_count-1)) |  | ||||||
| 		if ! git show $id >/dev/null 2>&1; then |  | ||||||
| 			echo WARNING: Commit $1 lists invalid sha $id |  | ||||||
| 		fi |  | ||||||
| 	done |  | ||||||
|  |  | ||||||
| 	return 0 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # Checks if at least one of offending commits, listed in the global |  | ||||||
| # "fixes", is in branch. |  | ||||||
| sha_in_range() |  | ||||||
| { |  | ||||||
| 	fixes_count=`echo "$fixes" | grep "fixes:" | wc -l` |  | ||||||
| 	while test $fixes_count -gt 0; do |  | ||||||
| 		# Treat only the current line |  | ||||||
| 		id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : -f 2` |  | ||||||
| 		fixes_count=$(($fixes_count-1)) |  | ||||||
|  |  | ||||||
| 		# Be that cherry-picked ... |  | ||||||
| 		# ... or landed before the branchpoint. |  | ||||||
| 		if grep -q ^$id already_picked || |  | ||||||
| 		   grep -q ^$id already_landed ; then |  | ||||||
| 			return 0 |  | ||||||
| 		fi |  | ||||||
| 	done |  | ||||||
| 	return 1 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| is_fixes_nomination() |  | ||||||
| { |  | ||||||
| 	is_sha_nomination "$1" "fixes:[[:space:]]*" |  | ||||||
| 	if test $? -eq 0; then |  | ||||||
| 		return 0 |  | ||||||
| 	fi |  | ||||||
| 	is_sha_nomination "$1" "fixes[[:space:]]\+" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| is_brokenby_nomination() |  | ||||||
| { |  | ||||||
| 	is_sha_nomination "$1" "broken by" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| is_revert_nomination() |  | ||||||
| { |  | ||||||
| 	is_sha_nomination "$1" "This reverts commit " |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # Use the last branchpoint as our limit for the search |  | ||||||
| latest_branchpoint=`git merge-base upstream/master HEAD` |  | ||||||
|  |  | ||||||
| # List all the commits between day 1 and the branch point... |  | ||||||
| git log --reverse --pretty=%H $latest_branchpoint > already_landed |  | ||||||
|  |  | ||||||
| # ... and the ones cherry-picked. |  | ||||||
| git log --reverse --pretty=medium --grep="cherry picked from commit" $latest_branchpoint..HEAD |\ |  | ||||||
| 	grep "cherry picked from commit" |\ |  | ||||||
| 	sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked |  | ||||||
|  |  | ||||||
| # Grep for potential candidates |  | ||||||
| git log --reverse --pretty=%H -i --grep='^CC:.*mesa-stable\|^CC:.*mesa-dev\|\<fixes\>\|\<broken by\>\|This reverts commit' $latest_branchpoint..upstream/master |\ |  | ||||||
| while read sha |  | ||||||
| do |  | ||||||
| 	# Check to see whether the patch is on the ignore list. |  | ||||||
| 	if test -f bin/.cherry-ignore; then |  | ||||||
| 		if grep -q ^$sha bin/.cherry-ignore ; then |  | ||||||
| 			continue |  | ||||||
| 		fi |  | ||||||
| 	fi |  | ||||||
|  |  | ||||||
| 	# Check to see if it has already been picked over. |  | ||||||
| 	if grep -q ^$sha already_picked ; then |  | ||||||
| 		continue |  | ||||||
| 	fi |  | ||||||
|  |  | ||||||
| 	if is_fixes_nomination "$sha"; then |  | ||||||
| 		tag=fixes |  | ||||||
| 	elif is_brokenby_nomination "$sha"; then |  | ||||||
| 		tag=brokenby |  | ||||||
| 	elif is_revert_nomination "$sha"; then |  | ||||||
| 		tag=revert |  | ||||||
| 	elif is_stable_nomination "$sha"; then |  | ||||||
| 		tag=stable |  | ||||||
| 	elif is_typod_nomination "$sha"; then |  | ||||||
| 		tag=typod |  | ||||||
| 	else |  | ||||||
| 		continue |  | ||||||
| 	fi |  | ||||||
|  |  | ||||||
| 	case "$tag" in |  | ||||||
| 	fixes | brokenby | revert ) |  | ||||||
| 		if ! sha_in_range; then |  | ||||||
| 			continue |  | ||||||
| 		fi |  | ||||||
| 		;; |  | ||||||
| 	* ) |  | ||||||
| 		;; |  | ||||||
| 	esac |  | ||||||
|  |  | ||||||
| 	printf "[ %8s ] " "$tag" |  | ||||||
| 	git --no-pager show --no-patch --pretty=oneline $sha |  | ||||||
| done |  | ||||||
|  |  | ||||||
| rm -f already_picked |  | ||||||
| rm -f already_landed |  | ||||||
| @@ -1,50 +0,0 @@ | |||||||
| """ |  | ||||||
| Generate the contents of the git_sha1.h file. |  | ||||||
| The output of this script goes to stdout. |  | ||||||
| """ |  | ||||||
|  |  | ||||||
|  |  | ||||||
| import argparse |  | ||||||
| import os |  | ||||||
| import os.path |  | ||||||
| import subprocess |  | ||||||
| import sys |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def get_git_sha1(): |  | ||||||
|     """Try to get the git SHA1 with git rev-parse.""" |  | ||||||
|     git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git') |  | ||||||
|     try: |  | ||||||
|         git_sha1 = subprocess.check_output([ |  | ||||||
|             'git', |  | ||||||
|             '--git-dir=' + git_dir, |  | ||||||
|             'rev-parse', |  | ||||||
|             'HEAD', |  | ||||||
|         ], stderr=open(os.devnull, 'w')).decode("ascii") |  | ||||||
|     except: |  | ||||||
|         # don't print anything if it fails |  | ||||||
|         git_sha1 = '' |  | ||||||
|     return git_sha1 |  | ||||||
|  |  | ||||||
| def write_if_different(contents): |  | ||||||
|     """ |  | ||||||
|     Avoid touching the output file if it doesn't need modifications |  | ||||||
|     Useful to avoid triggering rebuilds when nothing has changed. |  | ||||||
|     """ |  | ||||||
|     if os.path.isfile(args.output): |  | ||||||
|         with open(args.output, 'r') as file: |  | ||||||
|             if file.read() == contents: |  | ||||||
|                 return |  | ||||||
|     with open(args.output, 'w') as file: |  | ||||||
|         file.write(contents) |  | ||||||
|  |  | ||||||
| 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: |  | ||||||
|     write_if_different('#define MESA_GIT_SHA1 " (git-' + git_sha1 + ')"') |  | ||||||
| else: |  | ||||||
|     write_if_different('#define MESA_GIT_SHA1 ""') |  | ||||||
| @@ -1,83 +0,0 @@ | |||||||
| # encoding=utf-8 |  | ||||||
| # Copyright © 2017-2018 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. |  | ||||||
|  |  | ||||||
| """Script to install megadriver symlinks for meson.""" |  | ||||||
|  |  | ||||||
| from __future__ import print_function |  | ||||||
| import argparse |  | ||||||
| import os |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     parser = argparse.ArgumentParser() |  | ||||||
|     parser.add_argument('megadriver') |  | ||||||
|     parser.add_argument('libdir') |  | ||||||
|     parser.add_argument('drivers', nargs='+') |  | ||||||
|     args = parser.parse_args() |  | ||||||
|  |  | ||||||
|     if os.path.isabs(args.libdir): |  | ||||||
|         destdir = os.environ.get('DESTDIR') |  | ||||||
|         if destdir: |  | ||||||
|             to = os.path.join(destdir, args.libdir[1:]) |  | ||||||
|         else: |  | ||||||
|             to = args.libdir |  | ||||||
|     else: |  | ||||||
|         to = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], args.libdir) |  | ||||||
|  |  | ||||||
|     master = os.path.join(to, os.path.basename(args.megadriver)) |  | ||||||
|  |  | ||||||
|     if not os.path.exists(to): |  | ||||||
|         if os.path.lexists(to): |  | ||||||
|             os.unlink(to) |  | ||||||
|         os.makedirs(to) |  | ||||||
|  |  | ||||||
|     for driver in args.drivers: |  | ||||||
|         abs_driver = os.path.join(to, driver) |  | ||||||
|  |  | ||||||
|         if os.path.lexists(abs_driver): |  | ||||||
|             os.unlink(abs_driver) |  | ||||||
|         print('installing {} to {}'.format(args.megadriver, abs_driver)) |  | ||||||
|         os.link(master, abs_driver) |  | ||||||
|  |  | ||||||
|         try: |  | ||||||
|             ret = os.getcwd() |  | ||||||
|             os.chdir(to) |  | ||||||
|  |  | ||||||
|             name, ext = os.path.splitext(driver) |  | ||||||
|             while ext != '.so': |  | ||||||
|                 if os.path.lexists(name): |  | ||||||
|                     os.unlink(name) |  | ||||||
|                 os.symlink(driver, name) |  | ||||||
|                 name, ext = os.path.splitext(name) |  | ||||||
|         finally: |  | ||||||
|             os.chdir(ret) |  | ||||||
|  |  | ||||||
|     # Remove meson-created master .so and symlinks |  | ||||||
|     os.unlink(master) |  | ||||||
|     name, ext = os.path.splitext(master) |  | ||||||
|     while ext != '.so': |  | ||||||
|         if os.path.lexists(name): |  | ||||||
|             os.unlink(name) |  | ||||||
|         name, ext = os.path.splitext(name) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': |  | ||||||
|     main() |  | ||||||
| @@ -1,88 +0,0 @@ | |||||||
| #!/usr/bin/env python3 |  | ||||||
| # Copyright © 2019 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. |  | ||||||
|  |  | ||||||
| """This script reads a meson build directory and gives back the command line it |  | ||||||
| was configured with. |  | ||||||
|  |  | ||||||
| This only works for meson 0.49.0 and newer. |  | ||||||
| """ |  | ||||||
|  |  | ||||||
| import argparse |  | ||||||
| import ast |  | ||||||
| import configparser |  | ||||||
| import pathlib |  | ||||||
| import sys |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def parse_args() -> argparse.Namespace: |  | ||||||
|     """Parse arguments.""" |  | ||||||
|     parser = argparse.ArgumentParser() |  | ||||||
|     parser.add_argument( |  | ||||||
|         'build_dir', |  | ||||||
|         help='Path the meson build directory') |  | ||||||
|     args = parser.parse_args() |  | ||||||
|     return args |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def load_config(path: pathlib.Path) -> configparser.ConfigParser: |  | ||||||
|     """Load config file.""" |  | ||||||
|     conf = configparser.ConfigParser() |  | ||||||
|     with path.open() as f: |  | ||||||
|         conf.read_file(f) |  | ||||||
|     return conf |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def build_cmd(conf: configparser.ConfigParser) -> str: |  | ||||||
|     """Rebuild the command line.""" |  | ||||||
|     args = [] |  | ||||||
|     for k, v in conf['options'].items(): |  | ||||||
|         if ' ' in v: |  | ||||||
|             args.append(f'-D{k}="{v}"') |  | ||||||
|         else: |  | ||||||
|             args.append(f'-D{k}={v}') |  | ||||||
|  |  | ||||||
|     cf = conf['properties'].get('cross_file') |  | ||||||
|     if cf: |  | ||||||
|         args.append('--cross-file={}'.format(cf)) |  | ||||||
|     nf = conf['properties'].get('native_file') |  | ||||||
|     if nf: |  | ||||||
|         # this will be in the form "['str', 'str']", so use ast.literal_eval to |  | ||||||
|         # convert it to a list of strings. |  | ||||||
|         nf = ast.literal_eval(nf) |  | ||||||
|         args.extend(['--native-file={}'.format(f) for f in nf]) |  | ||||||
|     return ' '.join(args) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     args = parse_args() |  | ||||||
|     path = pathlib.Path(args.build_dir, 'meson-private', 'cmd_line.txt') |  | ||||||
|     if not path.exists(): |  | ||||||
|         print('Cannot find the necessary file to rebuild command line. ' |  | ||||||
|               'Is your meson version >= 0.49.0?', file=sys.stderr) |  | ||||||
|         sys.exit(1) |  | ||||||
|  |  | ||||||
|     conf = load_config(path) |  | ||||||
|     cmd = build_cmd(conf) |  | ||||||
|     print(cmd) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': |  | ||||||
|     main() |  | ||||||
| @@ -1,63 +0,0 @@ | |||||||
| #!/usr/bin/env python3 |  | ||||||
|  |  | ||||||
| from os import get_terminal_size |  | ||||||
| from textwrap import wrap |  | ||||||
| from mesonbuild import coredata |  | ||||||
| from mesonbuild import optinterpreter |  | ||||||
|  |  | ||||||
| (COLUMNS, _) = get_terminal_size() |  | ||||||
|  |  | ||||||
| def describe_option(option_name: str, option_default_value: str, |  | ||||||
|                     option_type: str, option_message: str) -> None: |  | ||||||
|     print('name:    ' + option_name) |  | ||||||
|     print('default: ' + option_default_value) |  | ||||||
|     print('type:    ' + option_type) |  | ||||||
|     for line in wrap(option_message, width=COLUMNS - 9): |  | ||||||
|         print('         ' + line) |  | ||||||
|     print('---') |  | ||||||
|  |  | ||||||
| oi = optinterpreter.OptionInterpreter('') |  | ||||||
| oi.process('meson_options.txt') |  | ||||||
|  |  | ||||||
| for (name, value) in oi.options.items(): |  | ||||||
|     if isinstance(value, coredata.UserStringOption): |  | ||||||
|         describe_option(name, |  | ||||||
|                         value.value, |  | ||||||
|                         'string', |  | ||||||
|                         "You can type what you want, but make sure it makes sense") |  | ||||||
|     elif isinstance(value, coredata.UserBooleanOption): |  | ||||||
|         describe_option(name, |  | ||||||
|                         'true' if value.value else 'false', |  | ||||||
|                         'boolean', |  | ||||||
|                         "You can set it to 'true' or 'false'") |  | ||||||
|     elif isinstance(value, coredata.UserIntegerOption): |  | ||||||
|         describe_option(name, |  | ||||||
|                         str(value.value), |  | ||||||
|                         'integer', |  | ||||||
|                         "You can set it to any integer value between '{}' and '{}'".format(value.min_value, value.max_value)) |  | ||||||
|     elif isinstance(value, coredata.UserUmaskOption): |  | ||||||
|         describe_option(name, |  | ||||||
|                         str(value.value), |  | ||||||
|                         'umask', |  | ||||||
|                         "You can set it to 'preserve' or a value between '0000' and '0777'") |  | ||||||
|     elif isinstance(value, coredata.UserComboOption): |  | ||||||
|         choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']' |  | ||||||
|         describe_option(name, |  | ||||||
|                         value.value, |  | ||||||
|                         'combo', |  | ||||||
|                         "You can set it to any one of those values: " + choices) |  | ||||||
|     elif isinstance(value, coredata.UserArrayOption): |  | ||||||
|         choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']' |  | ||||||
|         value = '[' + ', '.join(["'" + v + "'" for v in value.value]) + ']' |  | ||||||
|         describe_option(name, |  | ||||||
|                         value, |  | ||||||
|                         'array', |  | ||||||
|                         "You can set it to one or more of those values: " + choices) |  | ||||||
|     elif isinstance(value, coredata.UserFeatureOption): |  | ||||||
|         describe_option(name, |  | ||||||
|                         value.value, |  | ||||||
|                         'feature', |  | ||||||
|                         "You can set it to 'auto', 'enabled', or 'disabled'") |  | ||||||
|     else: |  | ||||||
|         print(name + ' is an option of a type unknown to this script') |  | ||||||
|         print('---') |  | ||||||
| @@ -1,22 +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') |  | ||||||
| symbols_check = find_program('symbols-check.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() |  | ||||||
							
								
								
									
										153
									
								
								bin/mklib.aix
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										153
									
								
								bin/mklib.aix
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,153 @@ | |||||||
|  | #!/bin/ksh | ||||||
|  |  | ||||||
|  | # Make an AIX shared library (tricky!!!) | ||||||
|  | # Based on a script from Athanasios G. Gaitatzes (gaitat@vnet.ibm.com) | ||||||
|  | # Improved by Greg Thompson <gregt@visix.com> -gt | ||||||
|  |  | ||||||
|  | #--identification------------------------------------------------------ | ||||||
|  |  | ||||||
|  | # $Id: mklib.aix,v 1.2 1999/09/15 15:10:20 brianp Exp $ | ||||||
|  |  | ||||||
|  | # $Log: mklib.aix,v $ | ||||||
|  | # Revision 1.2  1999/09/15 15:10:20  brianp | ||||||
|  | # added third, tiny version number to arguments | ||||||
|  | # | ||||||
|  | # Revision 1.1  1999/08/19 13:52:56  brianp | ||||||
|  | # initial check-in (post-crash) | ||||||
|  | # | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #--common-------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | LIBRARY=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | MAJOR=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | MINOR=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | TINY=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | OBJECTS=$* | ||||||
|  |  | ||||||
|  | #--platform------------------------------------------------------------ | ||||||
|  |  | ||||||
|  | # BASENAME = LIBRARY without .a suffix | ||||||
|  | BASENAME=`echo ${LIBRARY} | sed "s/\.a//g"` | ||||||
|  |  | ||||||
|  | # Name of exports file | ||||||
|  | EXPFILE=${BASENAME}.exp | ||||||
|  |  | ||||||
|  | # Name of temporary shared lib file | ||||||
|  | OFILE=shr.o | ||||||
|  | ####OFILE=${BASENAME}.o | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Remove any old files from previous make | ||||||
|  | rm -f ${LIBRARY} ${EXPFILE} ${OFILE} | ||||||
|  |  | ||||||
|  | # Pick a way to use nm -gt | ||||||
|  | NM=${NM-/bin/nm -eC} | ||||||
|  |  | ||||||
|  | # Determine which version of AIX this is | ||||||
|  | AIXVERSION=`uname -v` | ||||||
|  |  | ||||||
|  | # Pick a way to tell the linker there's no entrypoint -gt | ||||||
|  | case ${AIXVERSION} | ||||||
|  | { | ||||||
|  | 	3*) | ||||||
|  | 		ENTRY='-e _nostart' | ||||||
|  | 		;; | ||||||
|  | 	4*) | ||||||
|  | 		ENTRY=-bnoentry | ||||||
|  | 		;; | ||||||
|  | 	*) | ||||||
|  | 		echo "Error in mklib.aix!" | ||||||
|  | 		exit 1 | ||||||
|  | 		;; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Other libraries which we may be dependent on.  Since we make the libraries | ||||||
|  | # in the order libGL.a, libaGLU.a, libglut.a just depends on its predecessor. | ||||||
|  | # modified to make otherlibs in the form of -lfoo -gt | ||||||
|  | OTHERLIBS=`ls ../lib/*.a | sed "s/..\/lib\/lib/-l/g" | sed "s/\.a//g"` | ||||||
|  |  | ||||||
|  | ##echo OTHERLIBS are ${OTHERLIBS} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Make exports (.exp) file header | ||||||
|  | echo "#! ${LIBRARY}" > ${EXPFILE} | ||||||
|  |  | ||||||
|  | # Append list of exported symbols to exports file -gt | ||||||
|  | case ${AIXVERSION} | ||||||
|  | { | ||||||
|  |     3*) | ||||||
|  | 	${NM} ${OBJECTS} | awk -F'|' '{ | ||||||
|  | 	    if ($3 != "extern" || substr($7,1,1) == " ") continue | ||||||
|  | 	    sub ("  *", "", $1); sub ("  *", "", $7) | ||||||
|  | 	    if ( (($7 == ".text") || ($7 == ".data") || ($7 == ".bss"))  \ | ||||||
|  | 		    && ( substr($1,1,1) != ".")) { | ||||||
|  | 		if (substr ($1, 1, 7) != "__sinit" && | ||||||
|  | 			substr ($1, 1, 7) != "__sterm") { | ||||||
|  | 		    if (substr ($1, 1, 5) == "__tf1") | ||||||
|  | 			print (substr ($1, 7)) | ||||||
|  | 		    else if (substr ($1, 1, 5) == "__tf9") | ||||||
|  | 			print (substr ($1, 15)) | ||||||
|  | 		    else | ||||||
|  | 			print $1 | ||||||
|  | 		} | ||||||
|  | 	    } | ||||||
|  | 	}' | sort -u >> ${EXPFILE} | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  |     4*) | ||||||
|  | 	${NM} ${OBJECTS} | awk '{ | ||||||
|  | 	    if ((($2 == "T") || ($2 == "D") || ($2 == "B")) \ | ||||||
|  | 		    && ( substr($1,1,1) != ".")) { | ||||||
|  | 		if (substr ($1, 1, 7) != "__sinit" && | ||||||
|  | 			substr ($1, 1, 7) != "__sterm") { | ||||||
|  | 		    if (substr ($1, 1, 5) == "__tf1") | ||||||
|  | 			print (substr ($1, 7)) | ||||||
|  | 		    else if (substr ($1, 1, 5) == "__tf9") | ||||||
|  | 			print (substr ($1, 15)) | ||||||
|  | 		    else | ||||||
|  | 			print $1 | ||||||
|  | 		} | ||||||
|  | 	    } | ||||||
|  | 	}' | sort -u >> ${EXPFILE} | ||||||
|  | 	;; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # This next line is a hack to allow full compatibility with IBM's OpenGL | ||||||
|  | # libraries.  IBM mistakenly exports glLoadIdentity from the libGLU.a | ||||||
|  | # library.  We have to do the same thing.  Problem reported by Yemi Adesanya | ||||||
|  | # (adesanya@afsmail.cern.ch) and Patrick Brown (pbrown@austin.ibm.com) | ||||||
|  | if [ "${BASENAME}" = libGLU ] ; then | ||||||
|  |     echo "glLoadIdentity" >> ${EXPFILE} | ||||||
|  | fi | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Make the shared lib file | ||||||
|  | cc -o ${OFILE} ${OBJECTS} -L../lib ${OTHERLIBS} -lX11 -lXext -lXmu -lXi -lm -lc -bE:${EXPFILE} -bM:SRE ${ENTRY} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Make the .a file | ||||||
|  | ar ruv ${LIBRARY} ${OFILE} | ||||||
|  |  | ||||||
|  | # Put exports file in Mesa lib directory | ||||||
|  | mv ${EXPFILE} ../lib | ||||||
|  |  | ||||||
|  | # Remove OFILE | ||||||
|  | rm -f ${OFILE} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #NOTES | ||||||
|  | # AIX 4.x /usr/bin/nm -B patch from ssclift@mach.me.queensu.ca (Simon Clift) | ||||||
|  | # Robustified symbol extraction for AIX 3 and 4 | ||||||
|  | #   Greg Thompson <gregt@visix.com> | ||||||
|  |  | ||||||
							
								
								
									
										38
									
								
								bin/mklib.ar-ruv
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								bin/mklib.ar-ruv
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | #!/bin/sh | ||||||
|  |  | ||||||
|  | # Make a standard Unix .a library file with 'ar ruv' | ||||||
|  |  | ||||||
|  | #--identification------------------------------------------------------ | ||||||
|  |  | ||||||
|  | # $Id: mklib.ar-ruv,v 1.2 1999/09/15 15:10:20 brianp Exp $ | ||||||
|  |  | ||||||
|  | # $Log: mklib.ar-ruv,v $ | ||||||
|  | # Revision 1.2  1999/09/15 15:10:20  brianp | ||||||
|  | # added third, tiny version number to arguments | ||||||
|  | # | ||||||
|  | # Revision 1.1  1999/08/19 13:52:57  brianp | ||||||
|  | # initial check-in (post-crash) | ||||||
|  | # | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #--common-------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | LIBRARY=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | MAJOR=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | MINOR=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | TINY=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | OBJECTS=$* | ||||||
|  |  | ||||||
|  | #--platform------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | #ar ruv $LIBRARY $OBJECTS | ||||||
|  | ar ru $LIBRARY $OBJECTS | ||||||
|  |  | ||||||
							
								
								
									
										52
									
								
								bin/mklib.solaris
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								bin/mklib.solaris
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | |||||||
|  | #!/bin/sh | ||||||
|  |  | ||||||
|  | # Make a Solaris shared library | ||||||
|  | # contributed by Arno Hahma (arno@nitro.pp.utu.fi) | ||||||
|  |  | ||||||
|  | #--identification------------------------------------------------------ | ||||||
|  |  | ||||||
|  | # $Id: mklib.solaris,v 1.2 1999/09/15 15:10:20 brianp Exp $ | ||||||
|  |  | ||||||
|  | # $Log: mklib.solaris,v $ | ||||||
|  | # Revision 1.2  1999/09/15 15:10:20  brianp | ||||||
|  | # added third, tiny version number to arguments | ||||||
|  | # | ||||||
|  | # Revision 1.1  1999/08/19 13:53:06  brianp | ||||||
|  | # initial check-in (post-crash) | ||||||
|  | # | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #--common-------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | LIBRARY=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | MAJOR=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | MINOR=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | TINY=$1 | ||||||
|  | shift 1 | ||||||
|  |  | ||||||
|  | OBJECTS=$* | ||||||
|  |  | ||||||
|  | #--platform------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | set -x | ||||||
|  |  | ||||||
|  | LIBRARY=`basename $LIBRARY .a` | ||||||
|  |  | ||||||
|  | VERSION=$MAJOR.$MINOR | ||||||
|  |  | ||||||
|  | echo "Building shared object $LIBRARY.so.$VERSION and the archive library $LIBRARY.a" | ||||||
|  | rm -f ${LIBRARY}.a ${LIBRARY}.so.${VERSION} | ||||||
|  | ar ruv ${LIBRARY}.a ${OBJECTS} | ||||||
|  |  | ||||||
|  | ld -G -o ${LIBRARY}.so.${VERSION} ${OBJECTS} | ||||||
|  |  | ||||||
|  | cp ${LIBRARY}.a ${LIBRARY}.so.${VERSION} ../lib | ||||||
|  | cd ../lib | ||||||
|  | ln -s ${LIBRARY}.so.${VERSION} ${LIBRARY}.so | ||||||
|  |  | ||||||
| @@ -1,251 +0,0 @@ | |||||||
| #!/usr/bin/env python |  | ||||||
| # |  | ||||||
| # Copyright 2012 VMware Inc |  | ||||||
| # Copyright 2008-2009 Jose Fonseca |  | ||||||
| # |  | ||||||
| # 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. |  | ||||||
| # |  | ||||||
|  |  | ||||||
| """Perf annotate for JIT code. |  | ||||||
|  |  | ||||||
| Linux `perf annotate` does not work with JIT code.  This script takes the data |  | ||||||
| produced by `perf script` command, plus the diassemblies outputed by gallivm |  | ||||||
| into /tmp/perf-XXXXX.map.asm and produces output similar to `perf annotate`. |  | ||||||
|  |  | ||||||
| See docs/llvmpipe.html for usage instructions. |  | ||||||
|  |  | ||||||
| The `perf script` output parser was derived from the gprof2dot.py script. |  | ||||||
| """ |  | ||||||
|  |  | ||||||
|  |  | ||||||
| import sys |  | ||||||
| import os.path |  | ||||||
| import re |  | ||||||
| import optparse |  | ||||||
| import subprocess |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class Parser: |  | ||||||
|     """Parser interface.""" |  | ||||||
|  |  | ||||||
|     def __init__(self): |  | ||||||
|         pass |  | ||||||
|  |  | ||||||
|     def parse(self): |  | ||||||
|         raise NotImplementedError |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class LineParser(Parser): |  | ||||||
|     """Base class for parsers that read line-based formats.""" |  | ||||||
|  |  | ||||||
|     def __init__(self, file): |  | ||||||
|         Parser.__init__(self) |  | ||||||
|         self._file = file |  | ||||||
|         self.__line = None |  | ||||||
|         self.__eof = False |  | ||||||
|         self.line_no = 0 |  | ||||||
|  |  | ||||||
|     def readline(self): |  | ||||||
|         line = self._file.readline() |  | ||||||
|         if not line: |  | ||||||
|             self.__line = '' |  | ||||||
|             self.__eof = True |  | ||||||
|         else: |  | ||||||
|             self.line_no += 1 |  | ||||||
|         self.__line = line.rstrip('\r\n') |  | ||||||
|  |  | ||||||
|     def lookahead(self): |  | ||||||
|         assert self.__line is not None |  | ||||||
|         return self.__line |  | ||||||
|  |  | ||||||
|     def consume(self): |  | ||||||
|         assert self.__line is not None |  | ||||||
|         line = self.__line |  | ||||||
|         self.readline() |  | ||||||
|         return line |  | ||||||
|  |  | ||||||
|     def eof(self): |  | ||||||
|         assert self.__line is not None |  | ||||||
|         return self.__eof |  | ||||||
|  |  | ||||||
|  |  | ||||||
| mapFile = None |  | ||||||
|  |  | ||||||
| def lookupMap(filename, matchSymbol): |  | ||||||
|     global mapFile |  | ||||||
|     mapFile = filename |  | ||||||
|     stream = open(filename, 'rt') |  | ||||||
|     for line in stream: |  | ||||||
|         start, length, symbol = line.split() |  | ||||||
|  |  | ||||||
|         start = int(start, 16) |  | ||||||
|         length = int(length,16) |  | ||||||
|  |  | ||||||
|         if symbol == matchSymbol: |  | ||||||
|             return start |  | ||||||
|  |  | ||||||
|     return None |  | ||||||
|  |  | ||||||
| def lookupAsm(filename, desiredFunction): |  | ||||||
|     stream = open(filename + '.asm', 'rt') |  | ||||||
|     while stream.readline() != desiredFunction + ':\n': |  | ||||||
|         pass |  | ||||||
|  |  | ||||||
|     asm = [] |  | ||||||
|     line = stream.readline().strip() |  | ||||||
|     while line: |  | ||||||
|         addr, instr = line.split(':', 1) |  | ||||||
|         addr = int(addr) |  | ||||||
|         asm.append((addr, instr)) |  | ||||||
|         line = stream.readline().strip() |  | ||||||
|  |  | ||||||
|     return asm |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| samples = {} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class PerfParser(LineParser): |  | ||||||
|     """Parser for linux perf callgraph output. |  | ||||||
|  |  | ||||||
|     It expects output generated with |  | ||||||
|  |  | ||||||
|         perf record -g |  | ||||||
|         perf script |  | ||||||
|     """ |  | ||||||
|  |  | ||||||
|     def __init__(self, infile, symbol): |  | ||||||
|         LineParser.__init__(self, infile) |  | ||||||
|         self.symbol = symbol |  | ||||||
|  |  | ||||||
|     def readline(self): |  | ||||||
|         # Override LineParser.readline to ignore comment lines |  | ||||||
|         while True: |  | ||||||
|             LineParser.readline(self) |  | ||||||
|             if self.eof() or not self.lookahead().startswith('#'): |  | ||||||
|                 break |  | ||||||
|  |  | ||||||
|     def parse(self): |  | ||||||
|         # read lookahead |  | ||||||
|         self.readline() |  | ||||||
|  |  | ||||||
|         while not self.eof(): |  | ||||||
|             self.parse_event() |  | ||||||
|  |  | ||||||
|         asm = lookupAsm(mapFile, self.symbol) |  | ||||||
|  |  | ||||||
|         addresses = samples.keys() |  | ||||||
|         addresses.sort() |  | ||||||
|         total_samples = 0 |  | ||||||
|  |  | ||||||
|         sys.stdout.write('%s:\n' % self.symbol) |  | ||||||
|         for address, instr in asm: |  | ||||||
|             try: |  | ||||||
|                 sample = samples.pop(address) |  | ||||||
|             except KeyError: |  | ||||||
|                 sys.stdout.write(6*' ') |  | ||||||
|             else: |  | ||||||
|                 sys.stdout.write('%6u' % (sample)) |  | ||||||
|                 total_samples += sample |  | ||||||
|             sys.stdout.write('%6u: %s\n' % (address, instr)) |  | ||||||
|         print 'total:', total_samples |  | ||||||
|         assert len(samples) == 0 |  | ||||||
|  |  | ||||||
|         sys.exit(0) |  | ||||||
|  |  | ||||||
|     def parse_event(self): |  | ||||||
|         if self.eof(): |  | ||||||
|             return |  | ||||||
|  |  | ||||||
|         line = self.consume() |  | ||||||
|         assert line |  | ||||||
|  |  | ||||||
|         callchain = self.parse_callchain() |  | ||||||
|         if not callchain: |  | ||||||
|             return |  | ||||||
|  |  | ||||||
|     def parse_callchain(self): |  | ||||||
|         callchain = [] |  | ||||||
|         while self.lookahead(): |  | ||||||
|             function = self.parse_call(len(callchain) == 0) |  | ||||||
|             if function is None: |  | ||||||
|                 break |  | ||||||
|             callchain.append(function) |  | ||||||
|         if self.lookahead() == '': |  | ||||||
|             self.consume() |  | ||||||
|         return callchain |  | ||||||
|  |  | ||||||
|     call_re = re.compile(r'^\s+(?P<address>[0-9a-fA-F]+)\s+(?P<symbol>.*)\s+\((?P<module>[^)]*)\)$') |  | ||||||
|  |  | ||||||
|     def parse_call(self, first): |  | ||||||
|         line = self.consume() |  | ||||||
|         mo = self.call_re.match(line) |  | ||||||
|         assert mo |  | ||||||
|         if not mo: |  | ||||||
|             return None |  | ||||||
|  |  | ||||||
|         if not first: |  | ||||||
|             return None |  | ||||||
|  |  | ||||||
|         function_name = mo.group('symbol') |  | ||||||
|         if not function_name: |  | ||||||
|             function_name = mo.group('address') |  | ||||||
|  |  | ||||||
|         module = mo.group('module') |  | ||||||
|  |  | ||||||
|         function_id = function_name + ':' + module |  | ||||||
|  |  | ||||||
|         address = mo.group('address') |  | ||||||
|         address = int(address, 16) |  | ||||||
|  |  | ||||||
|         if function_name != self.symbol: |  | ||||||
|             return None |  | ||||||
|  |  | ||||||
|         start_address = lookupMap(module, function_name) |  | ||||||
|         address -= start_address |  | ||||||
|  |  | ||||||
|         #print function_name, module, address |  | ||||||
|  |  | ||||||
|         samples[address] = samples.get(address, 0) + 1 |  | ||||||
|  |  | ||||||
|         return True |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     """Main program.""" |  | ||||||
|  |  | ||||||
|     optparser = optparse.OptionParser( |  | ||||||
|         usage="\n\t%prog [options] symbol_name") |  | ||||||
|     (options, args) = optparser.parse_args(sys.argv[1:]) |  | ||||||
|     if len(args) != 1: |  | ||||||
|         optparser.error('wrong number of arguments') |  | ||||||
|  |  | ||||||
|     symbol = args[0] |  | ||||||
|  |  | ||||||
|     p = subprocess.Popen(['perf', 'script'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) |  | ||||||
|     parser = PerfParser(p.stdout, symbol) |  | ||||||
|     parser.parse() |  | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': |  | ||||||
|     main() |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # vim: set sw=4 et: |  | ||||||
| @@ -1,117 +0,0 @@ | |||||||
| #!/usr/bin/env python3 |  | ||||||
| # Copyright © 2019 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. |  | ||||||
|  |  | ||||||
| """Update the main page, release notes, and calendar.""" |  | ||||||
|  |  | ||||||
| import argparse |  | ||||||
| import calendar |  | ||||||
| import datetime |  | ||||||
| import pathlib |  | ||||||
| from lxml import ( |  | ||||||
|     etree, |  | ||||||
|     html, |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def calculate_previous_version(version: str, is_point: bool) -> str: |  | ||||||
|     """Calculate the previous version to compare to. |  | ||||||
|  |  | ||||||
|     In the case of -rc to final that verison is the previous .0 release, |  | ||||||
|     (19.3.0 in the case of 20.0.0, for example). for point releases that is |  | ||||||
|     the last point release. This value will be the same as the input value |  | ||||||
|     for a poiont release, but different for a major release. |  | ||||||
|     """ |  | ||||||
|     if '-' in version: |  | ||||||
|         version = version.split('-')[0] |  | ||||||
|     if is_point: |  | ||||||
|         return version |  | ||||||
|     base = version.split('.') |  | ||||||
|     if base[1] == '0': |  | ||||||
|         base[0] = str(int(base[0]) - 1) |  | ||||||
|         base[1] = '3' |  | ||||||
|     else: |  | ||||||
|         base[1] = str(int(base[1]) - 1) |  | ||||||
|     return '.'.join(base) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def is_point_release(version: str) -> bool: |  | ||||||
|     return not version.endswith('.0') |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def update_index(is_point: bool, version: str, previous_version: str) -> None: |  | ||||||
|     p = pathlib.Path(__file__).parent.parent / 'docs' / 'index.html' |  | ||||||
|     with p.open('rt') as f: |  | ||||||
|         tree = html.parse(f) |  | ||||||
|  |  | ||||||
|     news = tree.xpath('.//h1')[0] |  | ||||||
|  |  | ||||||
|     date = datetime.date.today() |  | ||||||
|     month = calendar.month_name[date.month] |  | ||||||
|     header = etree.Element('h2') |  | ||||||
|     header.text = f"{month} {date.day}, {date.year}" |  | ||||||
|  |  | ||||||
|     body = etree.Element('p') |  | ||||||
|     a = etree.SubElement( |  | ||||||
|         body, 'a', attrib={'href': f'relnotes/{previous_version}.html'}) |  | ||||||
|     a.text = f"Mesa {previous_version}" |  | ||||||
|     if is_point: |  | ||||||
|         a.tail = " is released. This is a bug fix release." |  | ||||||
|     else: |  | ||||||
|         a.tail = (" is released. This is a new development release. " |  | ||||||
|                   "See the release notes for mor information about this release.") |  | ||||||
|  |  | ||||||
|     root = news.getparent() |  | ||||||
|     index = root.index(news) + 1 |  | ||||||
|     root.insert(index, body) |  | ||||||
|     root.insert(index, header) |  | ||||||
|  |  | ||||||
|     tree.write(p.as_posix(), method='html') |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def update_release_notes(previous_version: str) -> None: |  | ||||||
|     p = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes.html' |  | ||||||
|     with p.open('rt') as f: |  | ||||||
|         tree = html.parse(f) |  | ||||||
|  |  | ||||||
|     li = etree.Element('li') |  | ||||||
|     a = etree.SubElement(li, 'a', href=f'relnotes/{previous_version}.html') |  | ||||||
|     a.text = f'{previous_version} release notes' |  | ||||||
|  |  | ||||||
|     ul = tree.xpath('.//ul')[0] |  | ||||||
|     ul.insert(0, li) |  | ||||||
|  |  | ||||||
|     tree.write(p.as_posix(), method='html') |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def main() -> None: |  | ||||||
|     parser = argparse.ArgumentParser() |  | ||||||
|     parser.add_argument('version', help="The released version.") |  | ||||||
|     args = parser.parse_args() |  | ||||||
|  |  | ||||||
|     is_point = is_point_release(args.version) |  | ||||||
|     previous_version = calculate_previous_version(args.version, is_point) |  | ||||||
|  |  | ||||||
|     update_index(is_point, args.version, previous_version) |  | ||||||
|     update_release_notes(previous_version) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     main() |  | ||||||
| @@ -1,134 +0,0 @@ | |||||||
| #!/usr/bin/env python |  | ||||||
|  |  | ||||||
| import argparse |  | ||||||
| import os |  | ||||||
| import platform |  | ||||||
| import subprocess |  | ||||||
|  |  | ||||||
| # This list contains symbols that _might_ be exported for some platforms |  | ||||||
| PLATFORM_SYMBOLS = [ |  | ||||||
|     '__bss_end__', |  | ||||||
|     '__bss_start__', |  | ||||||
|     '__bss_start', |  | ||||||
|     '__end__', |  | ||||||
|     '_bss_end__', |  | ||||||
|     '_edata', |  | ||||||
|     '_end', |  | ||||||
|     '_fini', |  | ||||||
|     '_init', |  | ||||||
| ] |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def get_symbols(nm, lib): |  | ||||||
|     ''' |  | ||||||
|     List all the (non platform-specific) symbols exported by the library |  | ||||||
|     ''' |  | ||||||
|     symbols = [] |  | ||||||
|     platform_name = platform.system() |  | ||||||
|     output = subprocess.check_output([nm, '-gP', lib], |  | ||||||
|                                      stderr=open(os.devnull, 'w')).decode("ascii") |  | ||||||
|     for line in output.splitlines(): |  | ||||||
|         fields = line.split() |  | ||||||
|         if len(fields) == 2 or fields[1] == 'U': |  | ||||||
|             continue |  | ||||||
|         symbol_name = fields[0] |  | ||||||
|         if platform_name == 'Linux': |  | ||||||
|             if symbol_name in PLATFORM_SYMBOLS: |  | ||||||
|                 continue |  | ||||||
|         elif platform_name == 'Darwin': |  | ||||||
|             assert symbol_name[0] == '_' |  | ||||||
|             symbol_name = symbol_name[1:] |  | ||||||
|         symbols.append(symbol_name) |  | ||||||
|  |  | ||||||
|     return symbols |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     parser = argparse.ArgumentParser() |  | ||||||
|     parser.add_argument('--symbols-file', |  | ||||||
|                         action='store', |  | ||||||
|                         required=True, |  | ||||||
|                         help='path to file containing symbols') |  | ||||||
|     parser.add_argument('--lib', |  | ||||||
|                         action='store', |  | ||||||
|                         required=True, |  | ||||||
|                         help='path to library') |  | ||||||
|     parser.add_argument('--nm', |  | ||||||
|                         action='store', |  | ||||||
|                         required=True, |  | ||||||
|                         help='path to binary (or name in $PATH)') |  | ||||||
|     args = parser.parse_args() |  | ||||||
|  |  | ||||||
|     try: |  | ||||||
|         lib_symbols = get_symbols(args.nm, args.lib) |  | ||||||
|     except: |  | ||||||
|         # We can't run this test, but we haven't technically failed it either |  | ||||||
|         # Return the GNU "skip" error code |  | ||||||
|         exit(77) |  | ||||||
|     mandatory_symbols = [] |  | ||||||
|     optional_symbols = [] |  | ||||||
|     with open(args.symbols_file) as symbols_file: |  | ||||||
|         qualifier_optional = '(optional)' |  | ||||||
|         for line in symbols_file.readlines(): |  | ||||||
|  |  | ||||||
|             # Strip comments |  | ||||||
|             line = line.split('#')[0] |  | ||||||
|             line = line.strip() |  | ||||||
|             if not line: |  | ||||||
|                 continue |  | ||||||
|  |  | ||||||
|             # Line format: |  | ||||||
|             # [qualifier] symbol |  | ||||||
|             qualifier = None |  | ||||||
|             symbol = None |  | ||||||
|  |  | ||||||
|             fields = line.split() |  | ||||||
|             if len(fields) == 1: |  | ||||||
|                 symbol = fields[0] |  | ||||||
|             elif len(fields) == 2: |  | ||||||
|                 qualifier = fields[0] |  | ||||||
|                 symbol = fields[1] |  | ||||||
|             else: |  | ||||||
|                 print(args.symbols_file + ': invalid format: ' + line) |  | ||||||
|                 exit(1) |  | ||||||
|  |  | ||||||
|             # The only supported qualifier is 'optional', which means the |  | ||||||
|             # symbol doesn't have to be exported by the library |  | ||||||
|             if qualifier and not qualifier == qualifier_optional: |  | ||||||
|                 print(args.symbols_file + ': invalid qualifier: ' + qualifier) |  | ||||||
|                 exit(1) |  | ||||||
|  |  | ||||||
|             if qualifier == qualifier_optional: |  | ||||||
|                 optional_symbols.append(symbol) |  | ||||||
|             else: |  | ||||||
|                 mandatory_symbols.append(symbol) |  | ||||||
|  |  | ||||||
|     unknown_symbols = [] |  | ||||||
|     for symbol in lib_symbols: |  | ||||||
|         if symbol in mandatory_symbols: |  | ||||||
|             continue |  | ||||||
|         if symbol in optional_symbols: |  | ||||||
|             continue |  | ||||||
|         if symbol[:2] == '_Z': |  | ||||||
|             # Ignore random C++ symbols |  | ||||||
|             #TODO: figure out if there's any way to avoid exporting them in the first place |  | ||||||
|             continue |  | ||||||
|         unknown_symbols.append(symbol) |  | ||||||
|  |  | ||||||
|     missing_symbols = [ |  | ||||||
|         sym for sym in mandatory_symbols if sym not in lib_symbols |  | ||||||
|     ] |  | ||||||
|  |  | ||||||
|     for symbol in unknown_symbols: |  | ||||||
|         print(args.lib + ': unknown symbol exported: ' + symbol) |  | ||||||
|  |  | ||||||
|     for symbol in missing_symbols: |  | ||||||
|         print(args.lib + ': missing symbol: ' + symbol) |  | ||||||
|  |  | ||||||
|     if unknown_symbols or missing_symbols: |  | ||||||
|         exit(1) |  | ||||||
|     exit(0) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': |  | ||||||
|     main() |  | ||||||
| @@ -1,3 +0,0 @@ | |||||||
| { |  | ||||||
| 	radeon_drm_winsys_create; |  | ||||||
| }; |  | ||||||
| @@ -1,6 +0,0 @@ | |||||||
| VERSION_1 { |  | ||||||
|     global: |  | ||||||
|         main; |  | ||||||
|     local: |  | ||||||
|         *; |  | ||||||
| }; |  | ||||||
							
								
								
									
										124
									
								
								common.py
									
									
									
									
									
								
							
							
						
						
									
										124
									
								
								common.py
									
									
									
									
									
								
							| @@ -1,124 +0,0 @@ | |||||||
| ####################################################################### |  | ||||||
| # Common SCons code |  | ||||||
|  |  | ||||||
| import os |  | ||||||
| import os.path |  | ||||||
| import re |  | ||||||
| import subprocess |  | ||||||
| import sys |  | ||||||
| import platform as _platform |  | ||||||
|  |  | ||||||
| import SCons.Script.SConscript |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Defaults |  | ||||||
|  |  | ||||||
| host_platform = _platform.system().lower() |  | ||||||
| if host_platform.startswith('cygwin'): |  | ||||||
|     host_platform = 'cygwin' |  | ||||||
| # MSYS2 default platform selection. |  | ||||||
| if host_platform.startswith('mingw'): |  | ||||||
|     host_platform = 'windows' |  | ||||||
|  |  | ||||||
| # Search sys.argv[] for a "platform=foo" argument since we don't have |  | ||||||
| # an 'env' variable at this point. |  | ||||||
| if 'platform' in SCons.Script.ARGUMENTS: |  | ||||||
|     target_platform = SCons.Script.ARGUMENTS['platform'] |  | ||||||
| else: |  | ||||||
|     target_platform = host_platform |  | ||||||
|  |  | ||||||
| _machine_map = { |  | ||||||
|     'x86': 'x86', |  | ||||||
|     'i386': 'x86', |  | ||||||
|     'i486': 'x86', |  | ||||||
|     'i586': 'x86', |  | ||||||
|     'i686': 'x86', |  | ||||||
|     'BePC': 'x86', |  | ||||||
|     'Intel': 'x86', |  | ||||||
|     'ppc': 'ppc', |  | ||||||
|     'BeBox': 'ppc', |  | ||||||
|     'BeMac': 'ppc', |  | ||||||
|     'AMD64': 'x86_64', |  | ||||||
|     'x86_64': 'x86_64', |  | ||||||
|     'sparc': 'sparc', |  | ||||||
|     'sun4u': 'sparc', |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # find host_machine value |  | ||||||
| if 'PROCESSOR_ARCHITECTURE' in os.environ: |  | ||||||
|     host_machine = os.environ['PROCESSOR_ARCHITECTURE'] |  | ||||||
| else: |  | ||||||
|     host_machine = _platform.machine() |  | ||||||
| host_machine = _machine_map.get(host_machine, 'generic') |  | ||||||
| # MSYS2 default machine selection. |  | ||||||
| if _platform.system().lower().startswith('mingw') and 'MSYSTEM' in os.environ: |  | ||||||
|     if os.environ['MSYSTEM'] == 'MINGW32': |  | ||||||
|         host_machine = 'x86' |  | ||||||
|     if os.environ['MSYSTEM'] == 'MINGW64': |  | ||||||
|         host_machine = 'x86_64' |  | ||||||
|  |  | ||||||
| default_machine = host_machine |  | ||||||
| default_toolchain = 'default' |  | ||||||
| # MSYS2 default toolchain selection. |  | ||||||
| if _platform.system().lower().startswith('mingw'): |  | ||||||
|     default_toolchain = 'mingw' |  | ||||||
|  |  | ||||||
| if target_platform == 'windows' and host_platform != 'windows': |  | ||||||
|     default_machine = 'x86' |  | ||||||
|     default_toolchain = 'crossmingw' |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # find default_llvm value |  | ||||||
| if 'LLVM' in os.environ or 'LLVM_CONFIG' in os.environ: |  | ||||||
|     default_llvm = 'yes' |  | ||||||
| else: |  | ||||||
|     default_llvm = 'no' |  | ||||||
|     try: |  | ||||||
|         if target_platform != 'windows' and \ |  | ||||||
|            subprocess.call(['llvm-config', '--version'], |  | ||||||
|                            stdout=subprocess.PIPE) == 0: |  | ||||||
|             default_llvm = 'yes' |  | ||||||
|     except: |  | ||||||
|         pass |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Common options |  | ||||||
|  |  | ||||||
| def AddOptions(opts): |  | ||||||
|     try: |  | ||||||
|         from SCons.Variables.BoolVariable import BoolVariable as BoolOption |  | ||||||
|     except ImportError: |  | ||||||
|         from SCons.Options.BoolOption import BoolOption |  | ||||||
|     try: |  | ||||||
|         from SCons.Variables.EnumVariable import EnumVariable as EnumOption |  | ||||||
|     except ImportError: |  | ||||||
|         from SCons.Options.EnumOption import EnumOption |  | ||||||
|     opts.Add(EnumOption('build', 'build type', 'debug', |  | ||||||
|                         allowed_values=('debug', 'checked', 'profile', |  | ||||||
|                                         'release'))) |  | ||||||
|     opts.Add(BoolOption('verbose', 'verbose output', 'no')) |  | ||||||
|     opts.Add(EnumOption('machine', 'use machine-specific assembly code', |  | ||||||
|                         default_machine, |  | ||||||
|                         allowed_values=('generic', 'ppc', 'x86', 'x86_64'))) |  | ||||||
|     opts.Add(EnumOption('platform', 'target platform', host_platform, |  | ||||||
|                         allowed_values=('cygwin', 'darwin', 'freebsd', 'haiku', |  | ||||||
|                                         'linux', 'sunos', 'windows'))) |  | ||||||
|     opts.Add(BoolOption('embedded', 'embedded build', 'no')) |  | ||||||
|     opts.Add(BoolOption('analyze', |  | ||||||
|                         'enable static code analysis where available', 'no')) |  | ||||||
|     opts.Add(BoolOption('asan', 'enable Address Sanitizer', 'no')) |  | ||||||
|     opts.Add('toolchain', 'compiler toolchain', default_toolchain) |  | ||||||
|     opts.Add(BoolOption('llvm', 'use LLVM', default_llvm)) |  | ||||||
|     opts.Add(BoolOption('force_scons', 'Force enable scons on deprecated platforms', 'false')) |  | ||||||
|     opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)', |  | ||||||
|                         'no')) |  | ||||||
|     opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes')) |  | ||||||
|     opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no')) |  | ||||||
|     opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes')) |  | ||||||
|     opts.Add(BoolOption('swr', 'Build OpenSWR', 'no')) |  | ||||||
|     if host_platform == 'windows': |  | ||||||
|         opts.Add('MSVC_VERSION', 'Microsoft Visual C/C++ version') |  | ||||||
|         opts.Add('MSVC_USE_SCRIPT', 'Microsoft Visual C/C++ vcvarsall script', True) |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| Known issues in the ARB_color_buffer_float implementation: |  | ||||||
| - Rendering to multiple render targets, some fixed-point, some floating-point, with FIXED_ONLY fragment clamping and polygon smooth enabled may write incorrect values to the fixed point buffers (depends on spec interpretation) |  | ||||||
| - For fragment programs with ARB_fog_* options, colors are clamped before fog application regardless of the fragment clamping setting (this depends on spec interpretation) |  | ||||||
|  |  | ||||||
							
								
								
									
										490
									
								
								docs/COPYING
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										490
									
								
								docs/COPYING
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,490 @@ | |||||||
|  |  | ||||||
|  | Some parts of Mesa are copyrighted under the GNU LGPL.  See the | ||||||
|  | Mesa/docs/COPYRIGHT file for details. | ||||||
|  |  | ||||||
|  | The following is the standard GNU copyright file. | ||||||
|  | ---------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		  GNU LIBRARY GENERAL PUBLIC LICENSE | ||||||
|  | 		       Version 2, June 1991 | ||||||
|  |  | ||||||
|  |  Copyright (C) 1991 Free Software Foundation, Inc. | ||||||
|  |                     675 Mass Ave, Cambridge, MA 02139, USA | ||||||
|  |  Everyone is permitted to copy and distribute verbatim copies | ||||||
|  |  of this license document, but changing it is not allowed. | ||||||
|  |  | ||||||
|  | [This is the first released version of the library GPL.  It is | ||||||
|  |  numbered 2 because it goes with version 2 of the ordinary GPL.] | ||||||
|  |  | ||||||
|  | 			    Preamble | ||||||
|  |  | ||||||
|  |   The licenses for most software are designed to take away your | ||||||
|  | freedom to share and change it.  By contrast, the GNU General Public | ||||||
|  | Licenses are intended to guarantee your freedom to share and change | ||||||
|  | free software--to make sure the software is free for all its users. | ||||||
|  |  | ||||||
|  |   This license, the Library General Public License, applies to some | ||||||
|  | specially designated Free Software Foundation software, and to any | ||||||
|  | other libraries whose authors decide to use it.  You can use it for | ||||||
|  | your libraries, too. | ||||||
|  |  | ||||||
|  |   When we speak of free software, we are referring to freedom, not | ||||||
|  | price.  Our General Public Licenses are designed to make sure that you | ||||||
|  | have the freedom to distribute copies of free software (and charge for | ||||||
|  | this service if you wish), that you receive source code or can get it | ||||||
|  | if you want it, that you can change the software or use pieces of it | ||||||
|  | in new free programs; and that you know you can do these things. | ||||||
|  |  | ||||||
|  |   To protect your rights, we need to make restrictions that forbid | ||||||
|  | anyone to deny you these rights or to ask you to surrender the rights. | ||||||
|  | These restrictions translate to certain responsibilities for you if | ||||||
|  | you distribute copies of the library, or if you modify it. | ||||||
|  |  | ||||||
|  |   For example, if you distribute copies of the library, whether gratis | ||||||
|  | or for a fee, you must give the recipients all the rights that we gave | ||||||
|  | you.  You must make sure that they, too, receive or can get the source | ||||||
|  | code.  If you link a program with the library, you must provide | ||||||
|  | complete object files to the recipients so that they can relink them | ||||||
|  | with the library, after making changes to the library and recompiling | ||||||
|  | it.  And you must show them these terms so they know their rights. | ||||||
|  |  | ||||||
|  |   Our method of protecting your rights has two steps: (1) copyright | ||||||
|  | the library, and (2) offer you this license which gives you legal | ||||||
|  | permission to copy, distribute and/or modify the library. | ||||||
|  |  | ||||||
|  |   Also, for each distributor's protection, we want to make certain | ||||||
|  | that everyone understands that there is no warranty for this free | ||||||
|  | library.  If the library is modified by someone else and passed on, we | ||||||
|  | want its recipients to know that what they have is not the original | ||||||
|  | version, so that any problems introduced by others will not reflect on | ||||||
|  | the original authors' reputations. | ||||||
|  |  | ||||||
|  |   Finally, any free program is threatened constantly by software | ||||||
|  | patents.  We wish to avoid the danger that companies distributing free | ||||||
|  | software will individually obtain patent licenses, thus in effect | ||||||
|  | transforming the program into proprietary software.  To prevent this, | ||||||
|  | we have made it clear that any patent must be licensed for everyone's | ||||||
|  | free use or not licensed at all. | ||||||
|  |  | ||||||
|  |   Most GNU software, including some libraries, is covered by the ordinary | ||||||
|  | GNU General Public License, which was designed for utility programs.  This | ||||||
|  | license, the GNU Library General Public License, applies to certain | ||||||
|  | designated libraries.  This license is quite different from the ordinary | ||||||
|  | one; be sure to read it in full, and don't assume that anything in it is | ||||||
|  | the same as in the ordinary license. | ||||||
|  |  | ||||||
|  |   The reason we have a separate public license for some libraries is that | ||||||
|  | they blur the distinction we usually make between modifying or adding to a | ||||||
|  | program and simply using it.  Linking a program with a library, without | ||||||
|  | changing the library, is in some sense simply using the library, and is | ||||||
|  | analogous to running a utility program or application program.  However, in | ||||||
|  | a textual and legal sense, the linked executable is a combined work, a | ||||||
|  | derivative of the original library, and the ordinary General Public License | ||||||
|  | treats it as such. | ||||||
|  |  | ||||||
|  |   Because of this blurred distinction, using the ordinary General | ||||||
|  | Public License for libraries did not effectively promote software | ||||||
|  | sharing, because most developers did not use the libraries.  We | ||||||
|  | concluded that weaker conditions might promote sharing better. | ||||||
|  |  | ||||||
|  |   However, unrestricted linking of non-free programs would deprive the | ||||||
|  | users of those programs of all benefit from the free status of the | ||||||
|  | libraries themselves.  This Library General Public License is intended to | ||||||
|  | permit developers of non-free programs to use free libraries, while | ||||||
|  | preserving your freedom as a user of such programs to change the free | ||||||
|  | libraries that are incorporated in them.  (We have not seen how to achieve | ||||||
|  | this as regards changes in header files, but we have achieved it as regards | ||||||
|  | changes in the actual functions of the Library.)  The hope is that this | ||||||
|  | will lead to faster development of free libraries. | ||||||
|  |  | ||||||
|  |   The precise terms and conditions for copying, distribution and | ||||||
|  | modification follow.  Pay close attention to the difference between a | ||||||
|  | "work based on the library" and a "work that uses the library".  The | ||||||
|  | former contains code derived from the library, while the latter only | ||||||
|  | works together with the library. | ||||||
|  |  | ||||||
|  |   Note that it is possible for a library to be covered by the ordinary | ||||||
|  | General Public License rather than by this special one. | ||||||
|  |  | ||||||
|  | 		  GNU LIBRARY GENERAL PUBLIC LICENSE | ||||||
|  |    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||||||
|  |  | ||||||
|  |   0. This License Agreement applies to any software library which | ||||||
|  | contains a notice placed by the copyright holder or other authorized | ||||||
|  | party saying it may be distributed under the terms of this Library | ||||||
|  | General Public License (also called "this License").  Each licensee is | ||||||
|  | addressed as "you". | ||||||
|  |  | ||||||
|  |   A "library" means a collection of software functions and/or data | ||||||
|  | prepared so as to be conveniently linked with application programs | ||||||
|  | (which use some of those functions and data) to form executables. | ||||||
|  |  | ||||||
|  |   The "Library", below, refers to any such software library or work | ||||||
|  | which has been distributed under these terms.  A "work based on the | ||||||
|  | Library" means either the Library or any derivative work under | ||||||
|  | copyright law: that is to say, a work containing the Library or a | ||||||
|  | portion of it, either verbatim or with modifications and/or translated | ||||||
|  | straightforwardly into another language.  (Hereinafter, translation is | ||||||
|  | included without limitation in the term "modification".) | ||||||
|  |  | ||||||
|  |   "Source code" for a work means the preferred form of the work for | ||||||
|  | making modifications to it.  For a library, complete source code means | ||||||
|  | all the source code for all modules it contains, plus any associated | ||||||
|  | interface definition files, plus the scripts used to control compilation | ||||||
|  | and installation of the library. | ||||||
|  |  | ||||||
|  |   Activities other than copying, distribution and modification are not | ||||||
|  | covered by this License; they are outside its scope.  The act of | ||||||
|  | running a program using the Library is not restricted, and output from | ||||||
|  | such a program is covered only if its contents constitute a work based | ||||||
|  | on the Library (independent of the use of the Library in a tool for | ||||||
|  | writing it).  Whether that is true depends on what the Library does | ||||||
|  | and what the program that uses the Library does. | ||||||
|  |    | ||||||
|  |   1. You may copy and distribute verbatim copies of the Library's | ||||||
|  | complete source code as you receive it, in any medium, provided that | ||||||
|  | you conspicuously and appropriately publish on each copy an | ||||||
|  | appropriate copyright notice and disclaimer of warranty; keep intact | ||||||
|  | all the notices that refer to this License and to the absence of any | ||||||
|  | warranty; and distribute a copy of this License along with the | ||||||
|  | Library. | ||||||
|  |  | ||||||
|  |   You may charge a fee for the physical act of transferring a copy, | ||||||
|  | and you may at your option offer warranty protection in exchange for a | ||||||
|  | fee. | ||||||
|  |  | ||||||
|  |   2. You may modify your copy or copies of the Library or any portion | ||||||
|  | of it, thus forming a work based on the Library, and copy and | ||||||
|  | distribute such modifications or work under the terms of Section 1 | ||||||
|  | above, provided that you also meet all of these conditions: | ||||||
|  |  | ||||||
|  |     a) The modified work must itself be a software library. | ||||||
|  |  | ||||||
|  |     b) You must cause the files modified to carry prominent notices | ||||||
|  |     stating that you changed the files and the date of any change. | ||||||
|  |  | ||||||
|  |     c) You must cause the whole of the work to be licensed at no | ||||||
|  |     charge to all third parties under the terms of this License. | ||||||
|  |  | ||||||
|  |     d) If a facility in the modified Library refers to a function or a | ||||||
|  |     table of data to be supplied by an application program that uses | ||||||
|  |     the facility, other than as an argument passed when the facility | ||||||
|  |     is invoked, then you must make a good faith effort to ensure that, | ||||||
|  |     in the event an application does not supply such function or | ||||||
|  |     table, the facility still operates, and performs whatever part of | ||||||
|  |     its purpose remains meaningful. | ||||||
|  |  | ||||||
|  |     (For example, a function in a library to compute square roots has | ||||||
|  |     a purpose that is entirely well-defined independent of the | ||||||
|  |     application.  Therefore, Subsection 2d requires that any | ||||||
|  |     application-supplied function or table used by this function must | ||||||
|  |     be optional: if the application does not supply it, the square | ||||||
|  |     root function must still compute square roots.) | ||||||
|  |  | ||||||
|  | These requirements apply to the modified work as a whole.  If | ||||||
|  | identifiable sections of that work are not derived from the Library, | ||||||
|  | and can be reasonably considered independent and separate works in | ||||||
|  | themselves, then this License, and its terms, do not apply to those | ||||||
|  | sections when you distribute them as separate works.  But when you | ||||||
|  | distribute the same sections as part of a whole which is a work based | ||||||
|  | on the Library, the distribution of the whole must be on the terms of | ||||||
|  | this License, whose permissions for other licensees extend to the | ||||||
|  | entire whole, and thus to each and every part regardless of who wrote | ||||||
|  | it. | ||||||
|  |  | ||||||
|  | Thus, it is not the intent of this section to claim rights or contest | ||||||
|  | your rights to work written entirely by you; rather, the intent is to | ||||||
|  | exercise the right to control the distribution of derivative or | ||||||
|  | collective works based on the Library. | ||||||
|  |  | ||||||
|  | In addition, mere aggregation of another work not based on the Library | ||||||
|  | with the Library (or with a work based on the Library) on a volume of | ||||||
|  | a storage or distribution medium does not bring the other work under | ||||||
|  | the scope of this License. | ||||||
|  |  | ||||||
|  |   3. You may opt to apply the terms of the ordinary GNU General Public | ||||||
|  | License instead of this License to a given copy of the Library.  To do | ||||||
|  | this, you must alter all the notices that refer to this License, so | ||||||
|  | that they refer to the ordinary GNU General Public License, version 2, | ||||||
|  | instead of to this License.  (If a newer version than version 2 of the | ||||||
|  | ordinary GNU General Public License has appeared, then you can specify | ||||||
|  | that version instead if you wish.)  Do not make any other change in | ||||||
|  | these notices. | ||||||
|  |  | ||||||
|  |   Once this change is made in a given copy, it is irreversible for | ||||||
|  | that copy, so the ordinary GNU General Public License applies to all | ||||||
|  | subsequent copies and derivative works made from that copy. | ||||||
|  |  | ||||||
|  |   This option is useful when you wish to copy part of the code of | ||||||
|  | the Library into a program that is not a library. | ||||||
|  |  | ||||||
|  |   4. You may copy and distribute the Library (or a portion or | ||||||
|  | derivative of it, under Section 2) in object code or executable form | ||||||
|  | under the terms of Sections 1 and 2 above provided that you accompany | ||||||
|  | it with the complete corresponding machine-readable source code, which | ||||||
|  | must be distributed under the terms of Sections 1 and 2 above on a | ||||||
|  | medium customarily used for software interchange. | ||||||
|  |  | ||||||
|  |   If distribution of object code is made by offering access to copy | ||||||
|  | from a designated place, then offering equivalent access to copy the | ||||||
|  | source code from the same place satisfies the requirement to | ||||||
|  | distribute the source code, even though third parties are not | ||||||
|  | compelled to copy the source along with the object code. | ||||||
|  |  | ||||||
|  |   5. A program that contains no derivative of any portion of the | ||||||
|  | Library, but is designed to work with the Library by being compiled or | ||||||
|  | linked with it, is called a "work that uses the Library".  Such a | ||||||
|  | work, in isolation, is not a derivative work of the Library, and | ||||||
|  | therefore falls outside the scope of this License. | ||||||
|  |  | ||||||
|  |   However, linking a "work that uses the Library" with the Library | ||||||
|  | creates an executable that is a derivative of the Library (because it | ||||||
|  | contains portions of the Library), rather than a "work that uses the | ||||||
|  | library".  The executable is therefore covered by this License. | ||||||
|  | Section 6 states terms for distribution of such executables. | ||||||
|  |  | ||||||
|  |   When a "work that uses the Library" uses material from a header file | ||||||
|  | that is part of the Library, the object code for the work may be a | ||||||
|  | derivative work of the Library even though the source code is not. | ||||||
|  | Whether this is true is especially significant if the work can be | ||||||
|  | linked without the Library, or if the work is itself a library.  The | ||||||
|  | threshold for this to be true is not precisely defined by law. | ||||||
|  |  | ||||||
|  |   If such an object file uses only numerical parameters, data | ||||||
|  | structure layouts and accessors, and small macros and small inline | ||||||
|  | functions (ten lines or less in length), then the use of the object | ||||||
|  | file is unrestricted, regardless of whether it is legally a derivative | ||||||
|  | work.  (Executables containing this object code plus portions of the | ||||||
|  | Library will still fall under Section 6.) | ||||||
|  |  | ||||||
|  |   Otherwise, if the work is a derivative of the Library, you may | ||||||
|  | distribute the object code for the work under the terms of Section 6. | ||||||
|  | Any executables containing that work also fall under Section 6, | ||||||
|  | whether or not they are linked directly with the Library itself. | ||||||
|  |  | ||||||
|  |   6. As an exception to the Sections above, you may also compile or | ||||||
|  | link a "work that uses the Library" with the Library to produce a | ||||||
|  | work containing portions of the Library, and distribute that work | ||||||
|  | under terms of your choice, provided that the terms permit | ||||||
|  | modification of the work for the customer's own use and reverse | ||||||
|  | engineering for debugging such modifications. | ||||||
|  |  | ||||||
|  |   You must give prominent notice with each copy of the work that the | ||||||
|  | Library is used in it and that the Library and its use are covered by | ||||||
|  | this License.  You must supply a copy of this License.  If the work | ||||||
|  | during execution displays copyright notices, you must include the | ||||||
|  | copyright notice for the Library among them, as well as a reference | ||||||
|  | directing the user to the copy of this License.  Also, you must do one | ||||||
|  | of these things: | ||||||
|  |  | ||||||
|  |     a) Accompany the work with the complete corresponding | ||||||
|  |     machine-readable source code for the Library including whatever | ||||||
|  |     changes were used in the work (which must be distributed under | ||||||
|  |     Sections 1 and 2 above); and, if the work is an executable linked | ||||||
|  |     with the Library, with the complete machine-readable "work that | ||||||
|  |     uses the Library", as object code and/or source code, so that the | ||||||
|  |     user can modify the Library and then relink to produce a modified | ||||||
|  |     executable containing the modified Library.  (It is understood | ||||||
|  |     that the user who changes the contents of definitions files in the | ||||||
|  |     Library will not necessarily be able to recompile the application | ||||||
|  |     to use the modified definitions.) | ||||||
|  |  | ||||||
|  |     b) Accompany the work with a written offer, valid for at | ||||||
|  |     least three years, to give the same user the materials | ||||||
|  |     specified in Subsection 6a, above, for a charge no more | ||||||
|  |     than the cost of performing this distribution. | ||||||
|  |  | ||||||
|  |     c) If distribution of the work is made by offering access to copy | ||||||
|  |     from a designated place, offer equivalent access to copy the above | ||||||
|  |     specified materials from the same place. | ||||||
|  |  | ||||||
|  |     d) Verify that the user has already received a copy of these | ||||||
|  |     materials or that you have already sent this user a copy. | ||||||
|  |  | ||||||
|  |   For an executable, the required form of the "work that uses the | ||||||
|  | Library" must include any data and utility programs needed for | ||||||
|  | reproducing the executable from it.  However, as a special exception, | ||||||
|  | the source code distributed need not include anything that is normally | ||||||
|  | distributed (in either source or binary form) with the major | ||||||
|  | components (compiler, kernel, and so on) of the operating system on | ||||||
|  | which the executable runs, unless that component itself accompanies | ||||||
|  | the executable. | ||||||
|  |  | ||||||
|  |   It may happen that this requirement contradicts the license | ||||||
|  | restrictions of other proprietary libraries that do not normally | ||||||
|  | accompany the operating system.  Such a contradiction means you cannot | ||||||
|  | use both them and the Library together in an executable that you | ||||||
|  | distribute. | ||||||
|  |  | ||||||
|  |   7. You may place library facilities that are a work based on the | ||||||
|  | Library side-by-side in a single library together with other library | ||||||
|  | facilities not covered by this License, and distribute such a combined | ||||||
|  | library, provided that the separate distribution of the work based on | ||||||
|  | the Library and of the other library facilities is otherwise | ||||||
|  | permitted, and provided that you do these two things: | ||||||
|  |  | ||||||
|  |     a) Accompany the combined library with a copy of the same work | ||||||
|  |     based on the Library, uncombined with any other library | ||||||
|  |     facilities.  This must be distributed under the terms of the | ||||||
|  |     Sections above. | ||||||
|  |  | ||||||
|  |     b) Give prominent notice with the combined library of the fact | ||||||
|  |     that part of it is a work based on the Library, and explaining | ||||||
|  |     where to find the accompanying uncombined form of the same work. | ||||||
|  |  | ||||||
|  |   8. You may not copy, modify, sublicense, link with, or distribute | ||||||
|  | the Library except as expressly provided under this License.  Any | ||||||
|  | attempt otherwise to copy, modify, sublicense, link with, or | ||||||
|  | distribute the Library is void, and will automatically terminate your | ||||||
|  | rights under this License.  However, parties who have received copies, | ||||||
|  | or rights, from you under this License will not have their licenses | ||||||
|  | terminated so long as such parties remain in full compliance. | ||||||
|  |  | ||||||
|  |   9. You are not required to accept this License, since you have not | ||||||
|  | signed it.  However, nothing else grants you permission to modify or | ||||||
|  | distribute the Library or its derivative works.  These actions are | ||||||
|  | prohibited by law if you do not accept this License.  Therefore, by | ||||||
|  | modifying or distributing the Library (or any work based on the | ||||||
|  | Library), you indicate your acceptance of this License to do so, and | ||||||
|  | all its terms and conditions for copying, distributing or modifying | ||||||
|  | the Library or works based on it. | ||||||
|  |  | ||||||
|  |   10. Each time you redistribute the Library (or any work based on the | ||||||
|  | Library), the recipient automatically receives a license from the | ||||||
|  | original licensor to copy, distribute, link with or modify the Library | ||||||
|  | subject to these terms and conditions.  You may not impose any further | ||||||
|  | restrictions on the recipients' exercise of the rights granted herein. | ||||||
|  | You are not responsible for enforcing compliance by third parties to | ||||||
|  | this License. | ||||||
|  |  | ||||||
|  |   11. If, as a consequence of a court judgment or allegation of patent | ||||||
|  | infringement or for any other reason (not limited to patent issues), | ||||||
|  | conditions are imposed on you (whether by court order, agreement or | ||||||
|  | otherwise) that contradict the conditions of this License, they do not | ||||||
|  | excuse you from the conditions of this License.  If you cannot | ||||||
|  | distribute so as to satisfy simultaneously your obligations under this | ||||||
|  | License and any other pertinent obligations, then as a consequence you | ||||||
|  | may not distribute the Library at all.  For example, if a patent | ||||||
|  | license would not permit royalty-free redistribution of the Library by | ||||||
|  | all those who receive copies directly or indirectly through you, then | ||||||
|  | the only way you could satisfy both it and this License would be to | ||||||
|  | refrain entirely from distribution of the Library. | ||||||
|  |  | ||||||
|  | If any portion of this section is held invalid or unenforceable under any | ||||||
|  | particular circumstance, the balance of the section is intended to apply, | ||||||
|  | and the section as a whole is intended to apply in other circumstances. | ||||||
|  |  | ||||||
|  | It is not the purpose of this section to induce you to infringe any | ||||||
|  | patents or other property right claims or to contest validity of any | ||||||
|  | such claims; this section has the sole purpose of protecting the | ||||||
|  | integrity of the free software distribution system which is | ||||||
|  | implemented by public license practices.  Many people have made | ||||||
|  | generous contributions to the wide range of software distributed | ||||||
|  | through that system in reliance on consistent application of that | ||||||
|  | system; it is up to the author/donor to decide if he or she is willing | ||||||
|  | to distribute software through any other system and a licensee cannot | ||||||
|  | impose that choice. | ||||||
|  |  | ||||||
|  | This section is intended to make thoroughly clear what is believed to | ||||||
|  | be a consequence of the rest of this License. | ||||||
|  |  | ||||||
|  |   12. If the distribution and/or use of the Library is restricted in | ||||||
|  | certain countries either by patents or by copyrighted interfaces, the | ||||||
|  | original copyright holder who places the Library under this License may add | ||||||
|  | an explicit geographical distribution limitation excluding those countries, | ||||||
|  | so that distribution is permitted only in or among countries not thus | ||||||
|  | excluded.  In such case, this License incorporates the limitation as if | ||||||
|  | written in the body of this License. | ||||||
|  |  | ||||||
|  |   13. The Free Software Foundation may publish revised and/or new | ||||||
|  | versions of the Library General Public License from time to time. | ||||||
|  | Such new versions will be similar in spirit to the present version, | ||||||
|  | but may differ in detail to address new problems or concerns. | ||||||
|  |  | ||||||
|  | Each version is given a distinguishing version number.  If the Library | ||||||
|  | specifies a version number of this License which applies to it and | ||||||
|  | "any later version", you have the option of following the terms and | ||||||
|  | conditions either of that version or of any later version published by | ||||||
|  | the Free Software Foundation.  If the Library does not specify a | ||||||
|  | license version number, you may choose any version ever published by | ||||||
|  | the Free Software Foundation. | ||||||
|  |  | ||||||
|  |   14. If you wish to incorporate parts of the Library into other free | ||||||
|  | programs whose distribution conditions are incompatible with these, | ||||||
|  | write to the author to ask for permission.  For software which is | ||||||
|  | copyrighted by the Free Software Foundation, write to the Free | ||||||
|  | Software Foundation; we sometimes make exceptions for this.  Our | ||||||
|  | decision will be guided by the two goals of preserving the free status | ||||||
|  | of all derivatives of our free software and of promoting the sharing | ||||||
|  | and reuse of software generally. | ||||||
|  |  | ||||||
|  | 			    NO WARRANTY | ||||||
|  |  | ||||||
|  |   15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO | ||||||
|  | WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. | ||||||
|  | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR | ||||||
|  | OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY | ||||||
|  | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE | ||||||
|  | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||||
|  | PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE | ||||||
|  | LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME | ||||||
|  | THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | ||||||
|  |  | ||||||
|  |   16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN | ||||||
|  | WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY | ||||||
|  | AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU | ||||||
|  | FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR | ||||||
|  | CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE | ||||||
|  | LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING | ||||||
|  | RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A | ||||||
|  | FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF | ||||||
|  | SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH | ||||||
|  | DAMAGES. | ||||||
|  |  | ||||||
|  | 		     END OF TERMS AND CONDITIONS | ||||||
|  |  | ||||||
|  |      Appendix: How to Apply These Terms to Your New Libraries | ||||||
|  |  | ||||||
|  |   If you develop a new library, and you want it to be of the greatest | ||||||
|  | possible use to the public, we recommend making it free software that | ||||||
|  | everyone can redistribute and change.  You can do so by permitting | ||||||
|  | redistribution under these terms (or, alternatively, under the terms of the | ||||||
|  | ordinary General Public License). | ||||||
|  |  | ||||||
|  |   To apply these terms, attach the following notices to the library.  It is | ||||||
|  | safest to attach them to the start of each source file to most effectively | ||||||
|  | convey the exclusion of warranty; and each file should have at least the | ||||||
|  | "copyright" line and a pointer to where the full notice is found. | ||||||
|  |  | ||||||
|  |     <one line to give the library's name and a brief idea of what it does.> | ||||||
|  |     Copyright (C) <year>  <name of author> | ||||||
|  |  | ||||||
|  |     This library is free software; you can redistribute it and/or | ||||||
|  |     modify it under the terms of the GNU Library General Public | ||||||
|  |     License as published by the Free Software Foundation; either | ||||||
|  |     version 2 of the License, or (at your option) any later version. | ||||||
|  |  | ||||||
|  |     This library is distributed in the hope that it will be useful, | ||||||
|  |     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||||
|  |     Library General Public License for more details. | ||||||
|  |  | ||||||
|  |     You should have received a copy of the GNU Library General Public | ||||||
|  |     License along with this library; if not, write to the Free | ||||||
|  |     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||||
|  |  | ||||||
|  | Also add information on how to contact you by electronic and paper mail. | ||||||
|  |  | ||||||
|  | You should also get your employer (if you work as a programmer) or your | ||||||
|  | school, if any, to sign a "copyright disclaimer" for the library, if | ||||||
|  | necessary.  Here is a sample; alter the names: | ||||||
|  |  | ||||||
|  |   Yoyodyne, Inc., hereby disclaims all copyright interest in the | ||||||
|  |   library `Frob' (a library for tweaking knobs) written by James Random Hacker. | ||||||
|  |  | ||||||
|  |   <signature of Ty Coon>, 1 April 1990 | ||||||
|  |   Ty Coon, President of Vice | ||||||
|  |  | ||||||
|  | That's all there is to it! | ||||||
|  |  | ||||||
							
								
								
									
										182
									
								
								docs/INSTALL.GNU
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										182
									
								
								docs/INSTALL.GNU
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,182 @@ | |||||||
|  | Basic Installation | ||||||
|  | ================== | ||||||
|  |  | ||||||
|  |    These are generic installation instructions. | ||||||
|  |  | ||||||
|  |    The `configure' shell script attempts to guess correct values for | ||||||
|  | various system-dependent variables used during compilation.  It uses | ||||||
|  | those values to create a `Makefile' in each directory of the package. | ||||||
|  | It may also create one or more `.h' files containing system-dependent | ||||||
|  | definitions.  Finally, it creates a shell script `config.status' that | ||||||
|  | you can run in the future to recreate the current configuration, a file | ||||||
|  | `config.cache' that saves the results of its tests to speed up | ||||||
|  | reconfiguring, and a file `config.log' containing compiler output | ||||||
|  | (useful mainly for debugging `configure'). | ||||||
|  |  | ||||||
|  |    If you need to do unusual things to compile the package, please try | ||||||
|  | to figure out how `configure' could check whether to do them, and mail | ||||||
|  | diffs or instructions to the address given in the `README' so they can | ||||||
|  | be considered for the next release.  If at some point `config.cache' | ||||||
|  | contains results you don't want to keep, you may remove or edit it. | ||||||
|  |  | ||||||
|  |    The file `configure.in' is used to create `configure' by a program | ||||||
|  | called `autoconf'.  You only need `configure.in' if you want to change | ||||||
|  | it or regenerate `configure' using a newer version of `autoconf'. | ||||||
|  |  | ||||||
|  | The simplest way to compile this package is: | ||||||
|  |  | ||||||
|  |   1. `cd' to the directory containing the package's source code and type | ||||||
|  |      `./configure' to configure the package for your system.  If you're | ||||||
|  |      using `csh' on an old version of System V, you might need to type | ||||||
|  |      `sh ./configure' instead to prevent `csh' from trying to execute | ||||||
|  |      `configure' itself. | ||||||
|  |  | ||||||
|  |      Running `configure' takes awhile.  While running, it prints some | ||||||
|  |      messages telling which features it is checking for. | ||||||
|  |  | ||||||
|  |   2. Type `make' to compile the package. | ||||||
|  |  | ||||||
|  |   3. Optionally, type `make check' to run any self-tests that come with | ||||||
|  |      the package. | ||||||
|  |  | ||||||
|  |   4. Type `make install' to install the programs and any data files and | ||||||
|  |      documentation. | ||||||
|  |  | ||||||
|  |   5. You can remove the program binaries and object files from the | ||||||
|  |      source code directory by typing `make clean'.  To also remove the | ||||||
|  |      files that `configure' created (so you can compile the package for | ||||||
|  |      a different kind of computer), type `make distclean'.  There is | ||||||
|  |      also a `make maintainer-clean' target, but that is intended mainly | ||||||
|  |      for the package's developers.  If you use it, you may have to get | ||||||
|  |      all sorts of other programs in order to regenerate files that came | ||||||
|  |      with the distribution. | ||||||
|  |  | ||||||
|  | Compilers and Options | ||||||
|  | ===================== | ||||||
|  |  | ||||||
|  |    Some systems require unusual options for compilation or linking that | ||||||
|  | the `configure' script does not know about.  You can give `configure' | ||||||
|  | initial values for variables by setting them in the environment.  Using | ||||||
|  | a Bourne-compatible shell, you can do that on the command line like | ||||||
|  | this: | ||||||
|  |      CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure | ||||||
|  |  | ||||||
|  | Or on systems that have the `env' program, you can do it like this: | ||||||
|  |      env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure | ||||||
|  |  | ||||||
|  | Compiling For Multiple Architectures | ||||||
|  | ==================================== | ||||||
|  |  | ||||||
|  |    You can compile the package for more than one kind of computer at the | ||||||
|  | same time, by placing the object files for each architecture in their | ||||||
|  | own directory.  To do this, you must use a version of `make' that | ||||||
|  | supports the `VPATH' variable, such as GNU `make'.  `cd' to the | ||||||
|  | directory where you want the object files and executables to go and run | ||||||
|  | the `configure' script.  `configure' automatically checks for the | ||||||
|  | source code in the directory that `configure' is in and in `..'. | ||||||
|  |  | ||||||
|  |    If you have to use a `make' that does not supports the `VPATH' | ||||||
|  | variable, you have to compile the package for one architecture at a time | ||||||
|  | in the source code directory.  After you have installed the package for | ||||||
|  | one architecture, use `make distclean' before reconfiguring for another | ||||||
|  | architecture. | ||||||
|  |  | ||||||
|  | Installation Names | ||||||
|  | ================== | ||||||
|  |  | ||||||
|  |    By default, `make install' will install the package's files in | ||||||
|  | `/usr/local/bin', `/usr/local/man', etc.  You can specify an | ||||||
|  | installation prefix other than `/usr/local' by giving `configure' the | ||||||
|  | option `--prefix=PATH'. | ||||||
|  |  | ||||||
|  |    You can specify separate installation prefixes for | ||||||
|  | architecture-specific files and architecture-independent files.  If you | ||||||
|  | give `configure' the option `--exec-prefix=PATH', the package will use | ||||||
|  | PATH as the prefix for installing programs and libraries. | ||||||
|  | Documentation and other data files will still use the regular prefix. | ||||||
|  |  | ||||||
|  |    In addition, if you use an unusual directory layout you can give | ||||||
|  | options like `--bindir=PATH' to specify different values for particular | ||||||
|  | kinds of files.  Run `configure --help' for a list of the directories | ||||||
|  | you can set and what kinds of files go in them. | ||||||
|  |  | ||||||
|  |    If the package supports it, you can cause programs to be installed | ||||||
|  | with an extra prefix or suffix on their names by giving `configure' the | ||||||
|  | option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. | ||||||
|  |  | ||||||
|  | Optional Features | ||||||
|  | ================= | ||||||
|  |  | ||||||
|  |    Some packages pay attention to `--enable-FEATURE' options to | ||||||
|  | `configure', where FEATURE indicates an optional part of the package. | ||||||
|  | They may also pay attention to `--with-PACKAGE' options, where PACKAGE | ||||||
|  | is something like `gnu-as' or `x' (for the X Window System).  The | ||||||
|  | `README' should mention any `--enable-' and `--with-' options that the | ||||||
|  | package recognizes. | ||||||
|  |  | ||||||
|  |    For packages that use the X Window System, `configure' can usually | ||||||
|  | find the X include and library files automatically, but if it doesn't, | ||||||
|  | you can use the `configure' options `--x-includes=DIR' and | ||||||
|  | `--x-libraries=DIR' to specify their locations. | ||||||
|  |  | ||||||
|  | Specifying the System Type | ||||||
|  | ========================== | ||||||
|  |  | ||||||
|  |    There may be some features `configure' can not figure out | ||||||
|  | automatically, but needs to determine by the type of host the package | ||||||
|  | will run on.  Usually `configure' can figure that out, but if it prints | ||||||
|  | a message saying it can not guess the host type, give it the | ||||||
|  | `--host=TYPE' option.  TYPE can either be a short name for the system | ||||||
|  | type, such as `sun4', or a canonical name with three fields: | ||||||
|  |      CPU-COMPANY-SYSTEM | ||||||
|  |  | ||||||
|  | See the file `config.sub' for the possible values of each field.  If | ||||||
|  | `config.sub' isn't included in this package, then this package doesn't | ||||||
|  | need to know the host type. | ||||||
|  |  | ||||||
|  |    If you are building compiler tools for cross-compiling, you can also | ||||||
|  | use the `--target=TYPE' option to select the type of system they will | ||||||
|  | produce code for and the `--build=TYPE' option to select the type of | ||||||
|  | system on which you are compiling the package. | ||||||
|  |  | ||||||
|  | Sharing Defaults | ||||||
|  | ================ | ||||||
|  |  | ||||||
|  |    If you want to set default values for `configure' scripts to share, | ||||||
|  | you can create a site shell script called `config.site' that gives | ||||||
|  | default values for variables like `CC', `cache_file', and `prefix'. | ||||||
|  | `configure' looks for `PREFIX/share/config.site' if it exists, then | ||||||
|  | `PREFIX/etc/config.site' if it exists.  Or, you can set the | ||||||
|  | `CONFIG_SITE' environment variable to the location of the site script. | ||||||
|  | A warning: not all `configure' scripts look for a site script. | ||||||
|  |  | ||||||
|  | Operation Controls | ||||||
|  | ================== | ||||||
|  |  | ||||||
|  |    `configure' recognizes the following options to control how it | ||||||
|  | operates. | ||||||
|  |  | ||||||
|  | `--cache-file=FILE' | ||||||
|  |      Use and save the results of the tests in FILE instead of | ||||||
|  |      `./config.cache'.  Set FILE to `/dev/null' to disable caching, for | ||||||
|  |      debugging `configure'. | ||||||
|  |  | ||||||
|  | `--help' | ||||||
|  |      Print a summary of the options to `configure', and exit. | ||||||
|  |  | ||||||
|  | `--quiet' | ||||||
|  | `--silent' | ||||||
|  | `-q' | ||||||
|  |      Do not print messages saying which checks are being made.  To | ||||||
|  |      suppress all normal output, redirect it to `/dev/null' (any error | ||||||
|  |      messages will still be shown). | ||||||
|  |  | ||||||
|  | `--srcdir=DIR' | ||||||
|  |      Look for the package's source code in directory DIR.  Usually | ||||||
|  |      `configure' can determine that directory automatically. | ||||||
|  |  | ||||||
|  | `--version' | ||||||
|  |      Print the version of Autoconf used to generate the `configure' | ||||||
|  |      script, and exit. | ||||||
|  |  | ||||||
|  | `configure' also accepts some other, not widely useful, options. | ||||||
| @@ -8,14 +8,15 @@ Name Strings | |||||||
| 
 | 
 | ||||||
| Contact | Contact | ||||||
| 
 | 
 | ||||||
|     Brian Paul (brian.paul 'at' tungstengraphics.com) |     Brian Paul, brianp 'at' mesa3d.org | ||||||
| 
 | 
 | ||||||
| Status | Status | ||||||
| 
 | 
 | ||||||
|     Obsolete. |     Shipping (since Mesa version 2.2) | ||||||
| 
 | 
 | ||||||
| Version | Version | ||||||
| 
 | 
 | ||||||
|  |     $Id: MESA_resize_buffers.spec,v 1.1.2.1 2000/04/04 23:28:00 brianp Exp $ | ||||||
| 
 | 
 | ||||||
| Number | Number | ||||||
| 
 | 
 | ||||||
| @@ -35,7 +36,7 @@ Overview | |||||||
| 
 | 
 | ||||||
|     Mesa's glViewport command queries the current window size and updates |     Mesa's glViewport command queries the current window size and updates | ||||||
|     its internal data structors accordingly.  This normally works fine |     its internal data structors accordingly.  This normally works fine | ||||||
|     since most applications call glViewport in response to window size |     since most applications call glViewport in responce to window size | ||||||
|     changes. |     changes. | ||||||
| 
 | 
 | ||||||
|     In some situations, however, the application may not call glViewport |     In some situations, however, the application may not call glViewport | ||||||
| @@ -65,7 +66,7 @@ Additions to the AGL/GLX/WGL Specifications | |||||||
| 
 | 
 | ||||||
| Errors | Errors | ||||||
| 
 | 
 | ||||||
|     INVALID_OPERATION is generated if glResizeBuffersMESA is called between |     INVALID_OPERATION is generated if ResizeBuffersMESA is called betweeen | ||||||
|     Begin and End. |     Begin and End. | ||||||
| 
 | 
 | ||||||
| New State | New State | ||||||
							
								
								
									
										114
									
								
								docs/MESA_window_pos.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								docs/MESA_window_pos.spec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,114 @@ | |||||||
|  | Name | ||||||
|  |  | ||||||
|  |     MESA_window_pos | ||||||
|  |  | ||||||
|  | Name Strings | ||||||
|  |  | ||||||
|  |     GL_MESA_window_pos | ||||||
|  |  | ||||||
|  | Contact | ||||||
|  |  | ||||||
|  |     Brian Paul, brianp 'at' mesa3d.org | ||||||
|  |  | ||||||
|  | Status | ||||||
|  |  | ||||||
|  |     Shipping (since Mesa version 1.2.8) | ||||||
|  |  | ||||||
|  | Version | ||||||
|  |  | ||||||
|  |     $Id: MESA_window_pos.spec,v 1.1.2.1 2000/04/04 23:28:00 brianp Exp $ | ||||||
|  |  | ||||||
|  | Number | ||||||
|  |  | ||||||
|  |     197 | ||||||
|  |  | ||||||
|  | Dependencies | ||||||
|  |  | ||||||
|  |     OpenGL 1.0 is required. | ||||||
|  |     The extension is written against the OpenGL 1.2 Specification | ||||||
|  |  | ||||||
|  | Overview | ||||||
|  |  | ||||||
|  |     In order to set the current raster position to a specific window | ||||||
|  |     coordinate with the RasterPos command, the modelview matrix, projection | ||||||
|  |     matrix and viewport must be set very carefully.  Furthermore, if the | ||||||
|  |     desired window coordinate is outside of the window's bounds one must | ||||||
|  |     rely a subtle side-effect of the Bitmap command in order to circumvent | ||||||
|  |     frustum clipping. | ||||||
|  |  | ||||||
|  |     This extension provides a set of functions to directly set the | ||||||
|  |     current raster position, bypassing the modelview matrix, the | ||||||
|  |     projection matrix and the viewport to window mapping.  Furthermore, | ||||||
|  |     clip testing is not performed. | ||||||
|  |  | ||||||
|  |     This greatly simplifies the process of setting the current raster | ||||||
|  |     position to a specific window coordinate prior to calling DrawPixels, | ||||||
|  |     CopyPixels or Bitmap. | ||||||
|  |  | ||||||
|  | New Procedures and Functions | ||||||
|  |  | ||||||
|  |     void WindowPos2dMESA(double x, double y) | ||||||
|  |     void WindowPos2fMESA(float x, float y) | ||||||
|  |     void WindowPos2iMESA(int x, int y) | ||||||
|  |     void WindowPos2sMESA(short x, short y) | ||||||
|  |  | ||||||
|  | New Tokens | ||||||
|  |  | ||||||
|  |     none | ||||||
|  |  | ||||||
|  | Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation) | ||||||
|  |  | ||||||
|  |   - (2.12, p. 41) Insert after third paragraph: | ||||||
|  |  | ||||||
|  |       Alternately, the current raster position may be set by one of the | ||||||
|  |       WindowPosMESA commands: | ||||||
|  |  | ||||||
|  |          void WindowPos{234}{sidf}MESA( T coords ); | ||||||
|  |          void Window Pos{234}{sidf}vMESA( T coords ); | ||||||
|  |  | ||||||
|  |       WindosPos4MESA takes four values indicating x, y, z, and w. | ||||||
|  |       WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only | ||||||
|  |       x, y, and z with w implicitly set to 1 (or only x and y with z | ||||||
|  |       implicititly set to 0 and w implicitly set to 1). | ||||||
|  |  | ||||||
|  |       WindowPosMESA operates like RasterPos except that the current modelview | ||||||
|  |       matrix, projection matrix and viewport parameters are ignored and the | ||||||
|  |       clip test operation always passes.  The current raster position values | ||||||
|  |       are directly set to the parameters passed to WindowPosMESA.  The current | ||||||
|  |       color, color index and texture coordinate update the current raster | ||||||
|  |       position's associated data. | ||||||
|  |  | ||||||
|  |       The current raster distance ??? XXX ??? | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Additions to the AGL/GLX/WGL Specifications | ||||||
|  |  | ||||||
|  |     None | ||||||
|  |  | ||||||
|  | GLX Protocol | ||||||
|  |  | ||||||
|  |     Not specified at this time.  However, a protocol message very similar | ||||||
|  |     to that of RasterPos is expected. | ||||||
|  |  | ||||||
|  | Errors | ||||||
|  |  | ||||||
|  |     INVALID_OPERATION is generated if WindowPosMESA is called betweeen | ||||||
|  |     Begin and End. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | New State | ||||||
|  |  | ||||||
|  |     None. | ||||||
|  |  | ||||||
|  | New Implementation Dependent State | ||||||
|  |  | ||||||
|  |     None. | ||||||
|  |  | ||||||
|  | Revision History | ||||||
|  |  | ||||||
|  |   * Revision 1.0 - Initial specification | ||||||
							
								
								
									
										594
									
								
								docs/README.3DFX
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										594
									
								
								docs/README.3DFX
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,594 @@ | |||||||
|  |  | ||||||
|  |                      3Dfx Glide device driver for Mesa 3.2 | ||||||
|  | 				(see below for FAQ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | What do you need ? | ||||||
|  | ------------------ | ||||||
|  |  | ||||||
|  | 	- A PC with a 3Dfx Voodoo1/2 Graphics or Voodoo Rush based board | ||||||
|  | 	  (Pure3D, Monster 3D, R3D, Obsidian, Stingray 128/3D, etc.). | ||||||
|  | 	  The Quantum3D Obsidian3D-2 X-24 requires some special env. setting | ||||||
|  | 	  under Linux (more information in the "Useful Glide Environment | ||||||
|  | 	  Variables"); | ||||||
|  |  | ||||||
|  | 	- Mesa 3.1; | ||||||
|  |  | ||||||
|  | 	- The 3Dfx Glide library 2.3 or later for your OS (the 2.4 works fine). | ||||||
|  | 	  The Voodoo2 requires the Glide library 2.51. The Glide 3.1 is not | ||||||
|  | 	  compatible with the Glide 2.x so it doesn't work with the current | ||||||
|  | 	  version of the driver; | ||||||
|  |  | ||||||
|  | 	- A compiler supported by the Glide library (Micro$oft VC++ (tested), | ||||||
|  | 	  Watcom (tested), GCC for Linux (tested), etc.); | ||||||
|  |  | ||||||
|  | 	- A lot of patience, this is an alpha release. | ||||||
|  |  | ||||||
|  | 	- It's nice to have two monitors - one for your normal graphics | ||||||
|  | 	  card and one for your 3Dfx card. If something goes wrong with | ||||||
|  | 	  an application using the 3Dfx hardware you can still see your | ||||||
|  | 	  normal screen in order to recover. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Tested on: | ||||||
|  | ---------- | ||||||
|  | 	Windows 95 - David Bucciarelli | ||||||
|  | 	Windows NT - Henri Fousse | ||||||
|  | 	MS-DOS | ||||||
|  | 	Linux - Daryll Strauss, Brian Paul, David Bucciarelli | ||||||
|  | 	FreeBSD | ||||||
|  | 	BeOS - Duncan Wilcox | ||||||
|  | 	MacOS - Fazekas Miklos | ||||||
|  |  | ||||||
|  |  | ||||||
|  | What is able to do ? | ||||||
|  | -------------------- | ||||||
|  |  | ||||||
|  | 	- It is able accelerate points, lines and polygon with flat | ||||||
|  | 	  shading, gouraud shading, Z-buffer, texture mapping, blending, fog and | ||||||
|  | 	  antialiasing (when possible). There is also the support for rendering | ||||||
|  | 	  in a window with a slow trick for the Voodoo Graphics (available only | ||||||
|  | 	  for Linux) and at full speed with the Voodoo Rush chipset. | ||||||
|  | 	  Under Linux is also possible to switch on-the-fly between the fullscreen | ||||||
|  | 	  and in-window rendering hack. | ||||||
|  | 	  There is also the support for using more than one Voodoo Graphics in the | ||||||
|  | 	  some application/PC (you can create one context for each board and use | ||||||
|  | 	  multiple video outputs for driving monitors, videoprojectors or HMDs). | ||||||
|  | 	  The driver is able to fallback to pure software rendering when afeature | ||||||
|  | 	  isn't supported by the Voodoo hardware (however software rendering is | ||||||
|  | 	  very slow compared to hardware supported rendering) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | How to compile: | ||||||
|  | --------------- | ||||||
|  |  | ||||||
|  | Linux: | ||||||
|  | ------ | ||||||
|  | 	Here are the basic steps for using the 3Dfx hardware with Mesa | ||||||
|  | 	on Linux: | ||||||
|  |  | ||||||
|  | 	- You'll need the Glide library and headers.  Mesa expects: | ||||||
|  | 		/usr/local/glide/include/*.h        // all the Glide headers | ||||||
|  | 		/usr/local/glide/lib/libglide2x.so | ||||||
|  |  | ||||||
|  | 	  If your Glide libraries and headers are in a different directory | ||||||
|  | 	  you'll have to modify the Mesa-config and mklib.glide files. | ||||||
|  |  | ||||||
|  | 	- Unpack the MesaLib-3.1.tar.gz and MesaDemos-3.1.tar.gz archives; | ||||||
|  |  | ||||||
|  | 	- If you're going to use a newer Mesa/Glide driver than v0.27 then | ||||||
|  |           unpack the new driver archive over the Mesa directory. | ||||||
|  |  | ||||||
|  | 	- In the Mesa-3.1 directory type "make linux-glide" | ||||||
|  |  | ||||||
|  | 	- Compilation _should_ finish without errors; | ||||||
|  |  | ||||||
|  | 	- Set your LD_LIBRARY_PATH environment variable so that the | ||||||
|  | 	  libglide2x.so and Mesa library files can be found.  For example: | ||||||
|  | 	    setenv LD_LIBRARY_PATH "/usr/local/glide/lib:/SOMEDIR/Mesa-3.1/lib" | ||||||
|  |  | ||||||
|  | 	- You'll have to run Glide-based programs as root or set the suid | ||||||
|  | 	  bit on executables; | ||||||
|  |  | ||||||
|  | 	- Try a demo: | ||||||
|  | 	    cd gdemos | ||||||
|  | 	    su | ||||||
|  | 	    setenv MESA_GLX_FX f | ||||||
|  | 	    ./gears     (hit ESC to exit) | ||||||
|  |  | ||||||
|  | 	- You can find the demos especially designed for the Voodoo driver in | ||||||
|  | 	  in the Mesa-3.1/3Dfx/demos directory (type "make" in order to compile | ||||||
|  | 	  everything). | ||||||
|  |  | ||||||
|  | MacOS: | ||||||
|  | ------ | ||||||
|  | 	Check the WEB page at http://valerie.inf.elte.hu/~boga/Mesa.html | ||||||
|  |        | ||||||
|  | MS Windows: | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | 	For the MSVC++: | ||||||
|  | 	- The glide2x.lib have to be in the default MSVC++ lib directory; | ||||||
|  |  | ||||||
|  | 	- The Glide headers have to be in the default MSVC++ include directory; | ||||||
|  |  | ||||||
|  | 	- You must have the vcvars32.bat script in your PATH; | ||||||
|  |  | ||||||
|  | 	- Go to the directory Mesa-3.1 and run the mesafx.bat; | ||||||
|  |  | ||||||
|  | 	- The script will compile everything (Mesa-3.1/lib/OpenGL32.{lib,dll}, | ||||||
|  | 	  Mesa-3.1/lib/GLU32.{lib,dll}, Mesa-3.1/lib/GLUT32.{lib,dll} and | ||||||
|  |           Voodoo demos); | ||||||
|  |  | ||||||
|  | 	- At the end, you will be in the Mesa-3.1/3Dfx/demos directory; | ||||||
|  |  | ||||||
|  | 	- Try some demo (fire.exe, teapot.exe, etc.) in order to check if | ||||||
|  | 	  everything is OK (you can use Alt-Tab or Ctrl-F9 to switch between | ||||||
|  | 	  the Voodoo screen and the windows desktop); | ||||||
|  |  | ||||||
|  | 	- Remember to copy the Mesa OpenGL32.dll, GLU32.dll and GLUT32.dll in the | ||||||
|  |           some directory were you run your Mesa based applications. | ||||||
|  |  | ||||||
|  | 	- I think that you can easy change the Makefile.fx files in order | ||||||
|  | 	  to work with other kind of compilers; | ||||||
|  |  | ||||||
|  | 	- To discover how open the 3Dfx screen, read the sources under | ||||||
|  | 	  the Mesa-3.1/3Dfx/demos directory. You can use the GLUT library or | ||||||
|  |           the Diego Picciani's wgl emulator. | ||||||
|  |  | ||||||
|  | 	NOTE: the MSVC++ 5.0 optimizer is really buggy. Also if you install the | ||||||
|  | 	SP3, you could have some problem (you can disable optimization in order | ||||||
|  | 	solve these kind of problems). | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Doing more with Mesa & Linux Glide: | ||||||
|  | ----------------------------------- | ||||||
|  |  | ||||||
|  | 	The MESA_GLX_FX environment variable can be used to coax most | ||||||
|  | 	GLX-based programs into using Glide (and the __GLUT library | ||||||
|  | 	is GLX-based__). | ||||||
|  |  | ||||||
|  |         Full-screen 3Dfx rendering: | ||||||
|  |         --------------------------- | ||||||
|  |  | ||||||
|  | 	1. Set the MESA_GLX_FX variable to "fullscreen": | ||||||
|  |  | ||||||
|  | 		ksh: | ||||||
|  | 			export MESA_GLX_FX = "fullscreen" | ||||||
|  | 		csh: | ||||||
|  | 			setenv MESA_GLX_FX fullscreen | ||||||
|  |  | ||||||
|  | 	2. As root, run a GLX-based program (any GLUT demo on Linux). | ||||||
|  | 	 | ||||||
|  | 	3. Be careful:  once the 3Dfx screen appears you won't be able | ||||||
|  | 	to see the GLUT windows on your X display.  This can make using | ||||||
|  | 	the mouse tricky!  One solution is to hook up your 3Dfx card to | ||||||
|  | 	a second monitor.  If you can do this then set these env vars | ||||||
|  | 	first: | ||||||
|  |  | ||||||
|  | 		setenv SST_VGA_PASS 1 | ||||||
|  | 		setenv SST_NOSHUTDOWN | ||||||
|  | 	 | ||||||
|  | 	or for the Voodoo2: | ||||||
|  |  | ||||||
|  | 		setenv SSTV2_VGA_PASS 1 | ||||||
|  | 		setenv SSTV2_NOSHUTDOWN | ||||||
|  |  | ||||||
|  |         Rendering into an X window with the help of the Voodoo hardware: | ||||||
|  |         ---------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | 	1. Start your X server in 16 bpp mode (XFree86:  startx -- -bpp 16) | ||||||
|  | 	   in order to have the best performance and the best visual | ||||||
|  | 	   quality. However you can use any visual depth supported by X. | ||||||
|  |  | ||||||
|  | 	2. Set the following environment variables: | ||||||
|  | 		export MESA_GLX_FX="window"	// to enable window rendering | ||||||
|  | 		export SST_VGA_PASS=1	// to stop video signal switching | ||||||
|  | 		export SST_NOSHUTDOWN=1	// to stop video signal switching | ||||||
|  | 	    OR | ||||||
|  | 		setenv MESA_GLX_FX window | ||||||
|  | 		setenv SST_VGA_PASS 1 | ||||||
|  | 		setenv SST_NOSHUTDOWN 1 | ||||||
|  |  | ||||||
|  | 	(the Voodoo2 requires to use "SSTV2_" instead "SST_"). | ||||||
|  |  | ||||||
|  | 	3. As root, try running a GLX-based program | ||||||
|  |  | ||||||
|  | 	How does it work?  We use the 3Dfx hardware to do rendering then | ||||||
|  | 	copy the image from the 3Dfx frame buffer into an X window when | ||||||
|  | 	the SwapBuffers() function is called.  The problem with this | ||||||
|  | 	idea is it's slow.  The image must be copied from the 3Dfx frame | ||||||
|  | 	buffer to main memory then copied into the X window (and when the X | ||||||
|  | 	visual depth doesn't match the Voodoo framebufffer bit per pixel, it | ||||||
|  | 	is required also a pixel format translation). | ||||||
|  |  | ||||||
|  |         On the fly switching between in window rendering and full screen rendering | ||||||
|  | 	-------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | 	The Mesa 2.6 has introduced the capability of switching | ||||||
|  | 	on-the-fly between the fullscreen/fullspeed rendering and the in-window | ||||||
|  | 	hack and vice versa. The on-the-fly switching requires a direct support | ||||||
|  | 	by the application but it is really easy to add. You have to start | ||||||
|  | 	your X server in 16 bpp mode and to add the following lines to your | ||||||
|  | 	application: | ||||||
|  |  | ||||||
|  | 		#if defined(FX) && define(XMESA) | ||||||
|  | 		#include <GL/xmesa.h> | ||||||
|  |  | ||||||
|  | 		static int fullscreen=1; | ||||||
|  | 		#endif | ||||||
|  |  | ||||||
|  | 		... | ||||||
|  |  | ||||||
|  | 		/* In the GLUT keyboard event callback */ | ||||||
|  |  | ||||||
|  | 		#if defined(FX) && !define(WIN32) | ||||||
|  | 		  case ' ': | ||||||
|  | 		    fullscreen=(!fullscreen); | ||||||
|  | 		    XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW); | ||||||
|  | 		    break; | ||||||
|  | 		#endif | ||||||
|  | 		... | ||||||
|  |  | ||||||
|  |        	See the 3Dfx/demos/tunnel.c program | ||||||
|  |        	for an example.  You have to set the -DXMESA flag in the Makefile's COPTS | ||||||
|  |        	to enable it. | ||||||
|  |  | ||||||
|  |   	Rendering into an X window with the X11 software driver: | ||||||
|  |         -------------------------------------------------------- | ||||||
|  |  | ||||||
|  | 	Set the MESA_GLX_FX variable to "disable" your GLX-based program will use | ||||||
|  | 	the X11 software driver (the 3Dfx hardware isn't used at all). | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Useful Glide Environment Variables: | ||||||
|  | ----------------------------------- | ||||||
|  |  | ||||||
|  | 	- To disable the 3Dfx logo, set the FX_GLIDE_NO_SPLASH variable. | ||||||
|  |  | ||||||
|  | 	- To disable video signal switching: | ||||||
|  | 		setenv SST_VGA_PASS 1 | ||||||
|  | 		setenv SST_NOSHUTDOWN | ||||||
|  | 	  or for the Voodoo2: | ||||||
|  | 		setenv SSTV2_VGA_PASS 1 | ||||||
|  | 		setenv SSTV2_NOSHUTDOWN | ||||||
|  |  | ||||||
|  |         - To set the default screen refresh rate: | ||||||
|  |                 setenv SST_SCREENREFRESH=75 | ||||||
|  |  | ||||||
|  |           the supported values are 60, 70, 72, 75, 80, 85, 90, 100, 120. | ||||||
|  |  | ||||||
|  | 	- To force the Mesa library to swap buffers as fast as possible, | ||||||
|  | 	  without any vertical blanking synchronization (useful for benchmarks): | ||||||
|  | 		setenv FX_GLIDE_SWAPINTERVAL 0 | ||||||
|  |                 setenv SST_SWAP_EN_WAIT_ON_VIDSYNC 0 | ||||||
|  |  | ||||||
|  | 	- You can slight improve the performances of your Voodoo1 board with | ||||||
|  | 	  the following env. var.: | ||||||
|  | 		setenv SST_FASTMEM 1 | ||||||
|  | 		setenv SST_PCIRD 1 | ||||||
|  | 		setenv SST_GRXCLK 57 | ||||||
|  |  | ||||||
|  | 	  (don't use this setting with the Quantum3D 100SB or with any other | ||||||
|  | 	  SLI configuration: it will hang everything !). | ||||||
|  | 	  The following setting can be used with the Voodoo2: | ||||||
|  | 		setenv SSTV2_FASTMEM_RAS_READS=1 | ||||||
|  | 		setenv SSTV2_FASTPCIRD=1 | ||||||
|  | 		setenv SSTV2_GRXCLK=95 | ||||||
|  |  | ||||||
|  | 	- The Quantum3D Obsidian3D-2 X-24 requires some special env. setting | ||||||
|  | 	  in order to work under Linux: | ||||||
|  |  | ||||||
|  | 		export SSTV2_FT_CLKDEL=5 | ||||||
|  | 		export SSTV2_TF0_CLKDEL=7 | ||||||
|  | 		export SSTV2_TF1_CLKDEL=7 | ||||||
|  | 		export SSTV2_TF2_CLKDEL=7 | ||||||
|  | 		export SSTV2_SLIM_VIN_CLKDEL=3 | ||||||
|  | 		export SSTV2_SLIM_VOUT_CLKDEL=2 | ||||||
|  | 		export SSTV2_SLIS_VIN_CLKDEL=3 | ||||||
|  | 		export SSTV2_SLIS_VOUT_CLKDEL=2 | ||||||
|  |  | ||||||
|  | 	  (Thanks to Phil Ross for this trick). | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | The Mesa/Voodoo Environment Variables: | ||||||
|  | -------------------------------------- | ||||||
|  |  | ||||||
|  | 	- Only for Windows/Voodoo Rush users, if you define the | ||||||
|  | 	  env. var. MESA_WGL_FX: | ||||||
|  | 		export MESA_WGL_FX=fullscreen | ||||||
|  | 	  you will get fullscreen rendering; | ||||||
|  |  | ||||||
|  | 	- Only for Windows/Voodoo Rush users, if you define the | ||||||
|  | 	  env. var. MESA_WGL_FX: | ||||||
|  | 		export MESA_WGL_FX=window | ||||||
|  | 	  you will get window rendering (default value); | ||||||
|  |  | ||||||
|  | 	- Only for Linux users, you can find more informations about | ||||||
|  | 	  the env. var. MESA_GLX_FX in the "Doing more with Mesa & Linux Glide" | ||||||
|  | 	  section; | ||||||
|  |  | ||||||
|  | 	- If you define the env. var. MESA_FX_SWAP_PENDING: | ||||||
|  | 		export MESA_FX_SWAP_PENDING=4 | ||||||
|  | 	  you will able to set the maximum number of swapbuffers | ||||||
|  | 	  commands in the Voodoo FIFO after a swapbuffer (default value: 2); | ||||||
|  |  | ||||||
|  |         - If you define the env. var. MESA_FX_INFO: | ||||||
|  | 		export MESA_FX_INFO=1 | ||||||
|  |           you will get some useful statistic. | ||||||
|  |  | ||||||
|  |         - If you define the env. var. MESA_FX_NO_SIGNALS: | ||||||
|  | 		export MESA_FX_NO_SIGNALS=1 | ||||||
|  |           Mesa/FX will not install atexit() or signal() handlers. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Know BUGS and Problems: | ||||||
|  | ----------------------- | ||||||
|  |  | ||||||
|  | 	- fog doesn't work in the right way when using the glDepthRange() function; | ||||||
|  |  | ||||||
|  | 	- Maximum texture size: 256x256 (this is an hardware limit); | ||||||
|  |  | ||||||
|  | 	- Texture border aren't yet supported; | ||||||
|  |  | ||||||
|  | 	- A GL_BLEND in a glTexEnv() is not supported (it is an hardware limit); | ||||||
|  |  | ||||||
|  |         - Use the glBindTexture extension (standard in OpenGL 1.1) for texture | ||||||
|  | 	  mapping (the old way: glTexImage inside a display list, download | ||||||
|  | 	  the texture map each time that you call the display list !!!); | ||||||
|  |  | ||||||
|  | 	- Stencil buffer and Accumulation buffer are emulated in software (they are not | ||||||
|  | 	  directly supported by the Hardware); | ||||||
|  |  | ||||||
|  | 	- Color index mode not implemented (this is an hardware limit); | ||||||
|  |  | ||||||
|  | 	- Thre is an know bug in the Linux Glide library so the in-window-rendering hack | ||||||
|  | 	  and any other operations that requires to read the Voodoo frame buffer | ||||||
|  | 	  (like the accumulation buffer support) doesn't work on Voodoo SLI cards. | ||||||
|  |  | ||||||
|  | 	- The driver switch to pure software (_slow_) rendering when: | ||||||
|  |  | ||||||
|  | 		- Stencil enabled; | ||||||
|  | 		- Using the Accumulation buffer; | ||||||
|  | 		- Blend enabled and blend equation != GL_FUNC_ADD_EXT; | ||||||
|  | 		- Color logic operation enabled and color logic operation != GL_COPY; | ||||||
|  | 		- Using GL_SEPARATE_SPECULAR_COLOR; | ||||||
|  | 		- The four values of glColorMask() aren't the some; | ||||||
|  | 		- Texture 1D or 3D enabled; | ||||||
|  | 		- Texture function is GL_BLEND; | ||||||
|  | 		- Using the Multitexture extension with Voodoo cards with only one TMU; | ||||||
|  | 		- Using the Multitexture extension with Voodoo cards with more than | ||||||
|  | 		   one TMU, and texture function isn't GL_MODULATE; | ||||||
|  | 		- Point size is != 1.0 or point params vector != (1.0,0.0,0.0); | ||||||
|  | 		- Line width != 1.0 or using stipple lines. | ||||||
|  | 		- Using polygon offset or stipple polygons; | ||||||
|  |  | ||||||
|  | 	NOTE: this is list is not yet complete. | ||||||
|  | 		 | ||||||
|  |  | ||||||
|  | Hints and Special Features: | ||||||
|  | --------------------------- | ||||||
|  |  | ||||||
|  | 	- Under Linux and with a Voodoo Graphics board, you can use | ||||||
|  | 	  XMesaSetFXmode(XMESA_FX_FULLSCREEN or XMESA_FX_WINDOW) in order to | ||||||
|  | 	  switch on the fly between fullscreen rendering and the in-window-rendering | ||||||
|  | 	  hack. | ||||||
|  |  | ||||||
|  | 	- The driver is able to use all the texture memory available: 2/4MB on | ||||||
|  | 	  Voodoo1 boards and 8MB (!) on high-end Voodoo1 and Voodoo2 boards. | ||||||
|  |  | ||||||
|  | 	- Trilinear filtering is fully supported on Voodoo boards with two TMUs | ||||||
|  | 	  (high-end Voodoo1 boards and Voodoo2 boards). When only one TMU is | ||||||
|  | 	  available the driver fallback to bilinear filter also if you ask | ||||||
|  | 	  for trilinear filtering. | ||||||
|  |  | ||||||
|  |         - The Voodoo driver support multiple Voodoo Graphics boards in the | ||||||
|  |           some PC. Using this feature, you can write applications that use | ||||||
|  |           multiple monitors, videoprojectors or HMDs for the output. See | ||||||
|  | 	  Mesa-3.1/3Dfx/demos/tunnel2.c for an example of how setup one | ||||||
|  |           context for each board. | ||||||
|  |  | ||||||
|  | 	- The v0.19 introduces a new powerful texture memory manager: the | ||||||
|  | 	  texture memory is used as a cache of the set of all defined texture | ||||||
|  | 	  maps. You can now define several MBs of texture maps also with a 2MB | ||||||
|  | 	  of texture memory (the texture memory manager will do automatically | ||||||
|  | 	  all the swap out/swap in | ||||||
|  | 	  texture memory work). The new texture memory manager has also | ||||||
|  | 	  solved a lot of other bugs/no specs compliance/problems | ||||||
|  | 	  related to the texture memory usage. | ||||||
|  |  | ||||||
|  | 	- Use triangles and quads strip: they are a LOT faster than sparse | ||||||
|  | 	  triangles and quads. | ||||||
|  |  | ||||||
|  | 	- The Voodoo driver supports the GL_EXT_paletted_texture. it works | ||||||
|  | 	  only with GL_COLOR_INDEX8_EXT, GL_RGBA palettes and the alpha value | ||||||
|  | 	  is ignored because this is a limitation of the the current Glide | ||||||
|  | 	  version and of the Voodoo hardware. See Mesa-3.1/3Dfx/demos/paltex.c for | ||||||
|  | 	  a demo of this extension. | ||||||
|  |  | ||||||
|  | 	- The Voodoo driver directly supports 3Dfx Global Palette extension. | ||||||
|  | 	  It was written for GLQuake and I think that it isn't a good idea | ||||||
|  | 	  to use this extension for any other purpose (it is a trick). See | ||||||
|  | 	  Mesa-3.1/3Dfx/demos/glbpaltex.c for a demo of this extension. | ||||||
|  |  | ||||||
|  | 	- The Voodoo driver chooses the screen resolution according to the | ||||||
|  | 	  requested window size. If you open a 640x480 window, you will get | ||||||
|  | 	  a 640x480 screen resolution, if you open a 800x600 window, you | ||||||
|  | 	  will get a 800x600 screen resolution, etc. | ||||||
|  | 	  Most GLUT demos support the '-geometry' option, so you can choose | ||||||
|  | 	  the screen resolution: 'tunnel -geometry 800x600'. | ||||||
|  | 	  Clearly, you Voodoo board must have enough framebuffer RAM (otherwise | ||||||
|  | 	  the window creation will fail). | ||||||
|  |  | ||||||
|  | 	- The glGetString(GL_RENDERER) returns more information | ||||||
|  |           about the hardware configuration: "Mesa Glide <version> | ||||||
|  |           <Voodoo_Graphics|Voodoo_Rush|UNKNOWN> <num> CARD/<num> FB/ | ||||||
|  |           <num> TM/<num> TMU/<NOSLI|SLI>" | ||||||
|  |           where: <num> CARD is the card used for the current context, | ||||||
|  |           <num> FB is the number of MB for the framebuffer, | ||||||
|  |           <num> TM is the number of MB for the texture memory, | ||||||
|  |           <num> TMU is the number of TMU. You can try to run | ||||||
|  |           Mesa/demos/glinfo in order to have an example of the output. | ||||||
|  |  | ||||||
|  | Did you find a lot BUGs and problems ? Good, send me an email. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | FAQ: | ||||||
|  | ---- | ||||||
|  |  | ||||||
|  | For a complete FAQ check the Bernd Kreimeier's Linux 3Dfx HOWTO | ||||||
|  | available at http://www.gamers.org/dEngine/xf3D (it includes also | ||||||
|  | a lot of informations not strictly related to Linux, so it can be | ||||||
|  | useful also if you don't use Linux) | ||||||
|  |  | ||||||
|  | 1. What is 3Dfx? | ||||||
|  |  | ||||||
|  | 3Dfx Interactive, Inc. is the company which builds the VooDoo 3-D graphics | ||||||
|  | chipset (and others) used in popular PC cards such as the Diamond Monster 3D | ||||||
|  | and the Orchid Righteous 3D (more informations at http://www.3dfx.com). | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 2. What is Glide? | ||||||
|  |  | ||||||
|  | Glide is a "thin" programming interface for the 3Dfx hardware.  It was | ||||||
|  | originally written for Windows/Intel but has been ported to Linux/Intel | ||||||
|  | by Daryll Strauss. | ||||||
|  |  | ||||||
|  | 3Dfx, Inc. should be applauded for allowing the Linux version of Glide | ||||||
|  | to be written. | ||||||
|  |  | ||||||
|  | You can directly program with the Glide library if you wish.  You can | ||||||
|  | obtain Glide from the "Developer" section of the 3Dfx website: www.3dfx.com | ||||||
|  | There's a Linux/Glide newsgroup at news://news.3dfx.com/3dfx.glide.linux | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 3. What is fxmesa? | ||||||
|  |  | ||||||
|  | "fxmesa" is the name of the Mesa device driver for the 3Dfx Glide library. | ||||||
|  | It was written by David Bucciarelli and others.  It works on both Linux | ||||||
|  | and Windows.  Basically, it allows you to write and run OpenGL-style programs | ||||||
|  | on the 3Dfx hardware. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 4. What is GLQuake? | ||||||
|  |  | ||||||
|  | Quake is a very popular game from id software, Inc.  See www.idsoftware.com | ||||||
|  | GLQuake is a version of Quake written for OpenGL.  There is now a Linux | ||||||
|  | version of GLQuake with works with the Mesa/3Dfx/Glide combo. | ||||||
|  |  | ||||||
|  | Here's what you need to run GLQuake on Linux: | ||||||
|  |    PC with 100MHz Pentium or better | ||||||
|  |    a 3Dfx-based card | ||||||
|  |    Mesa 3.1 libraries:  libMesaGL.so  libMesaGLU.so | ||||||
|  |    Glide 2.4 libraries:  libglide2x.so  libtexus.so | ||||||
|  |    GLQuake for Linux. | ||||||
|  |  | ||||||
|  | Also, the windows version of GLQuake works fine with the Mesa OpenGL32.dll, | ||||||
|  | you have only to copy the Mesa-3.1/lib/OpenGL32.dll in the GLQuake directory | ||||||
|  | in order to test 'MesaQuake'. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 5. What is GLUT? | ||||||
|  |  | ||||||
|  | GLUT is Mark Kilgard's OpenGL Utility Toolkit.  It provides an API for | ||||||
|  | writing portable OpenGL programs with support for multiple windows, pop- | ||||||
|  | up menus, event handling, etc. | ||||||
|  |  | ||||||
|  | Check the Mark's home page for more informations (http://reality.sgi.com/mjk_asd). | ||||||
|  |  | ||||||
|  | Every OpenGL programmer should check out GLUT. | ||||||
|  |  | ||||||
|  | GLUT on Linux uses GLX. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 6. What is GLX? | ||||||
|  |  | ||||||
|  | GLX is the OpenGL extension to the X Window System.  I defines both a | ||||||
|  | programming API (glX*() functions) and a network protocol.  Mesa implements | ||||||
|  | an emulation of GLX on Linux.  A real GLX implementation would requires | ||||||
|  | hooks into the X server.  The 3Dfx hardware can be used with GLX-based | ||||||
|  | programs via the MESA_GLX_FX environment variable. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 7. Is the Voodoo driver able to use the 4Mb texture memory of | ||||||
|  | the Pure3D boards ? | ||||||
|  |  | ||||||
|  | Yes, the Voodoo driver v0.20 includes the support for Voodoo | ||||||
|  | Graphics boards with more than 2Mb of texture memory. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 8. Do the Voodoo driver support the Voodoo Rush under Windows ? | ||||||
|  |  | ||||||
|  | Yes, Diego Picciani has developed the support for the Voodoo | ||||||
|  | Rush but David Bucciarelli has a Pure3D and a Monster3D and Brian Paul | ||||||
|  | has a Monster3D, so the new versions of the Mesa/Voodoo sometime are | ||||||
|  | not tested with the Voodoo Rush. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 9. Do the Voodoo driver support the Voodoo Rush under Linux ? | ||||||
|  |  | ||||||
|  | No because the Linux Glide doesn't (yet) support the Voodoo Rush. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 10. Can I sell my Mesa/Voodoo based software and include | ||||||
|  | a binary copy of the Mesa in order to make the software | ||||||
|  | working out of the box ? | ||||||
|  |  | ||||||
|  | Yes. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 11. Which is the best make target for compiling the Mesa for | ||||||
|  | Linux GLQuake ('make linux-glide', 'make linux-386-glide', etc.) ? | ||||||
|  |  | ||||||
|  | 'make linux-386-opt-glide' for Voodoo1 and 'make linux-386-opt-V2-glide' | ||||||
|  | for Voodoo2 boards because it doesn't include the '-fPIC' | ||||||
|  | option (4-5% faster). | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 12. Can I use a Mesa compiled with a 'make linux-386-opt-V2-glide' | ||||||
|  | for my applications/programs/demos ? | ||||||
|  |  | ||||||
|  | Yes, there is only one constrain: you can't run two Mesa applications | ||||||
|  | at the some time. This isn't a big issue with the today Voodoo Graphics. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Thanks to: | ||||||
|  | ---------- | ||||||
|  |  | ||||||
|  | Henri Fousse       (he has written several parts of the v0.15 and the old GLUT | ||||||
|  | 	            emulator for Win); | ||||||
|  |  | ||||||
|  | Diego Picciani     (he has developed all the Voodoo Rush support and the wgl | ||||||
|  | 	            emulator); | ||||||
|  |  | ||||||
|  | Daryll Strauss     (for the Linux Glide and the first Linux support); | ||||||
|  |  | ||||||
|  | Brian Paul         (of course); | ||||||
|  |  | ||||||
|  | Dave 'Zoid' Kirsch (for the Linux GLQuake and Linux Quake2test/Q2 ports) | ||||||
|  |  | ||||||
|  | Bernd Kreimeier    (for the Linux 3Dfx HOWTO and for pushing companies to offer | ||||||
|  |                     a better Linux support) | ||||||
|  |  | ||||||
|  | 3Dfx and Quantum3D (for actively supporting Linux) | ||||||
|  |  | ||||||
|  | The most update places where find Mesa VooDoo driver related informations are | ||||||
|  | the Mesa mailing list and my driver WEB page | ||||||
|  | (http://www-hmw.caribel.pisa.it/fxmesa/index.shtml) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | David Bucciarelli (davibu@tin.it) | ||||||
|  |  | ||||||
|  | Humanware s.r.l.  | ||||||
|  | Via XXIV Maggio 62 | ||||||
|  | Pisa, Italy | ||||||
|  | Tel./Fax +39-50-554108 | ||||||
|  | email: info.hmw@plus.it | ||||||
|  | www: www-hmw.caribel.pisa.it | ||||||
							
								
								
									
										181
									
								
								docs/README.AMIWIN
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										181
									
								
								docs/README.AMIWIN
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,181 @@ | |||||||
|  | AMIGA AMIWIN PORT of MESA: THE OPENGL SOFTWARE EMULATION | ||||||
|  | ======================================================== | ||||||
|  | Port by Victor Ng-Thow-Hing (victorng@dgp.toronto.edu)  | ||||||
|  | Original Author (Brian Paul (brianp@ssec.wisc.edu) | ||||||
|  |  | ||||||
|  | Dec.1 , 1995: Port of release Mesa 1.2.5 | ||||||
|  |  - Modifications made to minimize changes to Mesa distribution. | ||||||
|  |  | ||||||
|  | Nov.25, 1995: Port of release Mesa 1.2.4 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | HISTORY | ||||||
|  | ======= | ||||||
|  | As a 3D graphics progammer, I was increasingly frustrated to see OpenGL  | ||||||
|  | appearing on so many platforms EXCEPT the Amiga. Up to now, the task | ||||||
|  | of porting OpenGL directly from native Amiga drawing routines seemed like | ||||||
|  | a daunting task. However, two important events made this port possible. | ||||||
|  |  | ||||||
|  | First of all, Brian Paul wrote Mesa, the OpenGL software emulator that  | ||||||
|  | can be found on many platforms - except the Amiga and Atari (who cares  | ||||||
|  | about the latter!). This was pretty ironic considering that Mesa was  | ||||||
|  | originally prototyped on an Amiga! The second great event was when  | ||||||
|  | Holger Kruse developed AmiWin, the X11R6 server for the Amiga (definitely  | ||||||
|  | register for this great piece of software) and released a development kit | ||||||
|  | so one could compile X programs with SAS/C. | ||||||
|  |  | ||||||
|  | Since Mesa had X routines as its primitive drawing operations, this made | ||||||
|  | a marriage of Mesa and Amiwin feasible. I copied over the sources from | ||||||
|  | an ftp site, played with the code, wrote some Smakefiles, and voila,  | ||||||
|  | I had OpenGL programs displaying on my Amiga. | ||||||
|  |  | ||||||
|  | Although the speed is nothing to be impressed about, this port can be | ||||||
|  | potentially useful to those who want to quickly test their code in | ||||||
|  | wireframe or perhaps learn more about programming with the OpenGL API. | ||||||
|  |  | ||||||
|  | I hope Amiga developers will continue to write excellent software for | ||||||
|  | their machine, especially more X clients for Amiwin. If you have any  | ||||||
|  | solutions so some of my problems in the porting notes, please send me | ||||||
|  | some email! | ||||||
|  |  | ||||||
|  | See you around, | ||||||
|  | Vic. | ||||||
|  |  | ||||||
|  | HOW TO CREATE THE LIBRARIES AND SAMPLE CODE | ||||||
|  | =========================================== | ||||||
|  |  | ||||||
|  | Just run the shell script mklib.amiwin in the mesa directory. This will | ||||||
|  | make all the libraries and copy them into the mesa/lib directory. If you | ||||||
|  | don't want to compile everything, just go to the desired directory and | ||||||
|  | type smake in that directory. | ||||||
|  |  | ||||||
|  | Change any of the variables in the smakefiles as necessary. You will REQUIRE | ||||||
|  | the Amiwin development kit to compile these libraries since you need X11.LIB | ||||||
|  | and the shareable X libraries. Some examples require the AmiTCP4.0 | ||||||
|  | net.lib static link library and related header files for unix related | ||||||
|  | header files and functions like sleep(). | ||||||
|  |  | ||||||
|  | HOW TO USE THE MESA LIBRARIES | ||||||
|  | ============================= | ||||||
|  |  | ||||||
|  | Study the Smakefiles in the demos, samples and book directories for the | ||||||
|  | proper SAS/C options and linkable libraries to use. Basically aux calls | ||||||
|  | require Mesaaux.LIB, gl calls require MesaGL.LIB, glu calls MesaGLU.LIB, | ||||||
|  | tk calls Mesatk.LIB. There is a preliminary port of MesaGLUT.LIB toolkit | ||||||
|  | available in the lib directory with the other Mesa libraries. However,  | ||||||
|  | it seems to cause crashes on some of the sample code. Someone else may want | ||||||
|  | to attempt a more stable port. | ||||||
|  |  | ||||||
|  | PORTING NOTES TO AMIWIN | ||||||
|  | ======================= | ||||||
|  |  | ||||||
|  | My strategy of porting was to leave as much of the code untouched as | ||||||
|  | possible. I surrounded any amiga specific changes with  | ||||||
|  | #ifdef AMIWIN ... #endif or #ifndef AMIWIN ... #endif preprocessor | ||||||
|  | symbols. The code  was ported on an Amiga 2000, with Fusion 40 accelerator | ||||||
|  | and a Picasso II graphics card. The SAS/C 6.56 compiler was used, with | ||||||
|  | the AmiWin 2.16 X development kit. | ||||||
|  |  | ||||||
|  | All compilations were done for a 68040 CPU with 68882 math coprocessor for | ||||||
|  | maximum  speed. Please edit the smakefile for other compilers. | ||||||
|  | I wrote smakefiles for the directories I ported. I omitted the Windows | ||||||
|  | and Widgets directories. The former is for MS Windows and the latter  | ||||||
|  | requires Motif, which is not easily available for the Amiga. | ||||||
|  |  | ||||||
|  | Here are the changes I did per directory: | ||||||
|  |  | ||||||
|  | * mesa | ||||||
|  | Nov. 25, 1995 v 1.2.4 | ||||||
|  |   - added a mklib.amiwin shell script that will make all the libraries and | ||||||
|  |     sample code for Mesa | ||||||
|  |   - created this readme file: readme.AMIGA | ||||||
|  |  | ||||||
|  | * mesa/include | ||||||
|  | Dec. 1, 1995 v 1.2.5 | ||||||
|  |   - added the following to GL/xmesa.h  | ||||||
|  |      #ifdef AMIWIN | ||||||
|  |      #include <pragmas/xlib_pragmas.h> | ||||||
|  |      extern struct Library *XLibBase; | ||||||
|  |      #endif | ||||||
|  | NET CHANGE: xmesa.h | ||||||
|  |  | ||||||
|  | * mesa/src  | ||||||
|  | Nov. 25, 1995 v 1.2.4 | ||||||
|  |   - added the necessary pragma calls for X functions to the following: | ||||||
|  |     xmesa1.c, xmesa2.c, xmesa3.c, xfonts.c, glx.c  | ||||||
|  |     This prevents undefined symbols errors during the linking phase for  | ||||||
|  |     X library calls | ||||||
|  |   - created smakefile | ||||||
|  | Dec.  1, 1995 v 1.2.5 | ||||||
|  |   - removed AMIWIN includes from xmesa1.c, xmesa2.c, xmesa3.c, xfonts.c,  | ||||||
|  |     glx.c since they are now defined in include/GL/xmesa.h | ||||||
|  | NET CHANGE: smakefile | ||||||
|  |     | ||||||
|  | * mesa/src-tk | ||||||
|  | Nov. 25, 1995 v 1.2.4 | ||||||
|  |   - added the necessary pragma calls for X functions to the following: | ||||||
|  |     private.h | ||||||
|  |   - created smakefile | ||||||
|  | Dec.  1, 1995 v 1.2.5 | ||||||
|  |   - removed AMIWIN includes from private.h since it is now defined in | ||||||
|  |     include/GL/xmesa.h | ||||||
|  | NET CHANGE: smakefile | ||||||
|  |  | ||||||
|  | * mesa/src-glu | ||||||
|  | Nov. 25, 1995 v 1.2.4 | ||||||
|  |   - created smakefile | ||||||
|  | NET CHANGE: smakefile | ||||||
|  |  | ||||||
|  | * mesa/src-aux | ||||||
|  | Nov. 25, 1995 v 1.2.4 | ||||||
|  |   - added the necessary pragma calls for X functions to the following: | ||||||
|  |     glaux.c | ||||||
|  |   - created smakefile | ||||||
|  | NET CHANGE: glaux.c, smakefile | ||||||
|  |  | ||||||
|  | * mesa/demos | ||||||
|  | Nov. 25, 1995 v 1.2.4 | ||||||
|  |   - added the necessary pragma calls for X functions to the following: | ||||||
|  |     xdemo.c, glxdemo.c, offset.c | ||||||
|  |   - created smakefile | ||||||
|  |   - put #ifndef AMIWIN ... #endif around sleep() calls in xdemo.c since  | ||||||
|  |     they are not part of AmigaDOS. | ||||||
|  | Dec.  1, 1995 v 1.2.5 | ||||||
|  |   - removed AMIWIN defines from xdemo.c, glxdemo.c, offset.c since | ||||||
|  |     already defined in include/GL/xmesa.h | ||||||
|  |   - modified Smakefile to include header and includes from the AmiTCP4.0 | ||||||
|  |     net.lib linkable library to provide unix-compatible sys/time.h and | ||||||
|  |     the sleep() function | ||||||
|  |     - removed AMIWIN defines in xdemo.c since sleep() now defined | ||||||
|  | NET CHANGE: smakefile | ||||||
|  |  | ||||||
|  | * mesa/samples | ||||||
|  | Nov. 25, 1995 v 1.2.4 | ||||||
|  |   - added the necessary pragma calls for X functions to the following: | ||||||
|  |     oglinfo.c | ||||||
|  |   - created smakefile | ||||||
|  |   - put #ifndef AMIWIN ... #endif around sleep() in blendxor.c | ||||||
|  |   - removed olympic from smakefile targets since <sys/time.h> not defined | ||||||
|  | Dec.  1, 1995 v 1.2.5 | ||||||
|  |   - removed AMIWIN defines from oglinfo.c, since already defined in  | ||||||
|  |     include/GL/xmesa.h | ||||||
|  |   - modified Smakefile to include header and includes from the AmiTCP4.0 | ||||||
|  |     net.lib linkable library to provide unix-compatible sys/time.h and | ||||||
|  |     the sleep() function | ||||||
|  |     - removed AMIWIN defines in blendxor.c for sleep() | ||||||
|  |     - added AMIWIN defines around _MACHTEN_ in olympic.c since xrandom() | ||||||
|  |       functions are not defined in any libraries | ||||||
|  |     - added olympic back into the Smakefile targets | ||||||
|  | NET CHANGE: smakefile, olympic.c | ||||||
|  |  | ||||||
|  | * mesa/book | ||||||
|  | Nov. 25, 1995 v 1.2.4 | ||||||
|  | - created smakefile | ||||||
|  | - removed accpersp and dof from smakefile targets since the SAS/C compile seems to | ||||||
|  |   confuse the near,far variables with near/far memory models. | ||||||
|  | NET CHANGE: smakefile | ||||||
|  |  | ||||||
|  | * mesa/windows | ||||||
|  | Dec.  1, 1995 v 1.2.5 | ||||||
|  | - Removed directory to save space since this is only needed for Windows based  | ||||||
|  |   machines. | ||||||
							
								
								
									
										102
									
								
								docs/README.BEOS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								docs/README.BEOS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | |||||||
|  |  | ||||||
|  |                          Mesa / BeOS Information | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Introduction | ||||||
|  |  | ||||||
|  | Mesa 3.1 features a new driver for the BeOS.  The new driver implements | ||||||
|  | a clone of the BGLView class.  This class, derived from BView, allows | ||||||
|  | OpenGL rendering into a BeOS window. | ||||||
|  |  | ||||||
|  | Any application which uses the BGLView should be able to use Mesa | ||||||
|  | instead of Be's OpenGL without changing any code. | ||||||
|  |  | ||||||
|  | Since Be's OpenGL implementation (as of R4) is basically just the | ||||||
|  | SGI sample implementation, it's pretty slow.  You'll see that Mesa | ||||||
|  | is considerably faster. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Source Code | ||||||
|  |  | ||||||
|  | The source code for the driver is in Mesa-3.1/src/BeOS/GLView.cpp | ||||||
|  | It's not 100% finished at this time but many GLUT-based demos are | ||||||
|  | working.  No optimizations have been made at this time. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Compiling | ||||||
|  |  | ||||||
|  | In the Mesa-3.x directory type "make -f Makefile.X11 beos-r4". | ||||||
|  | When it finishes the libMesaGL.so and libMesaGLU.so libraries for | ||||||
|  | BeOS will be in the Mesa-3.x/lib/ directory. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Example Programs | ||||||
|  |  | ||||||
|  | Look in the Mesa-3.x/BeOS/ directory for one or two BGLView demo | ||||||
|  | programs.  They should have been compiled along with the Mesa | ||||||
|  | library. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | GLUT | ||||||
|  |  | ||||||
|  | A version of GLUT 2.5 for BeOS can be found in src-glut.beos/. | ||||||
|  | The original distribution can be obtained from | ||||||
|  | http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip | ||||||
|  |  | ||||||
|  | This is a special version of GLUT adapted for the BeOS.  I don't | ||||||
|  | believe Mark Kilgard's normal GLUT distribution includes BeOS | ||||||
|  | support. | ||||||
|  |  | ||||||
|  | It seems that you have to recompile GLUT with libMesaGL.so instead | ||||||
|  | of libGL.so in order for everything to work.  I'm not sure why. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Special Features | ||||||
|  |  | ||||||
|  | Mesa's implementation of the BGLView class has an extra member | ||||||
|  | function:  CopySubBufferMESA().  It basically works like SwapBuffers() | ||||||
|  | but it only copies a sub region from the back buffer to the front | ||||||
|  | buffer.  This is a useful optimization for some applications. | ||||||
|  | If you use this method in your code be sure that you check at runtime | ||||||
|  | that you're actually using Mesa (with glGetString) so you don't | ||||||
|  | cause a fatal error when running with Be's OpenGL. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Work Left To Do | ||||||
|  |  | ||||||
|  | Color index mode is not implemented yet. | ||||||
|  |  | ||||||
|  | Reading pixels from the front buffer not implemented yet. | ||||||
|  |  | ||||||
|  | There is also a BGLScreen class in BeOS for full-screen OpenGL | ||||||
|  | rendering.  This should also be implemented for Mesa. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Old BeOS Driver | ||||||
|  |  | ||||||
|  | Mesa 2.6 had an earlier BeOS driver.  It was based on Mesa's Off-screen | ||||||
|  | rendering interface, not BGLView.  If you're interested in the older | ||||||
|  | driver you should get Mesa 2.6. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | BeOS and Glide | ||||||
|  |  | ||||||
|  | Mesa 3.0 supported the 3Dfx/Glide library on Beos.  Download Mesa 3.0 | ||||||
|  | if interested.  Ideally, the 3Dfx/Glide support should be updated to | ||||||
|  | work with the new Mesa 3.1 BGLView implementation. | ||||||
|  |  | ||||||
|  | The Glide library hasn't been updated for BeOS R4, to my knowledge, as | ||||||
|  | of February, 1999. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ---------------------------------------------------------------------- | ||||||
|  | $Id: README.BEOS,v 1.5.6.1 1999/11/27 01:39:50 brianp Exp $ | ||||||
							
								
								
									
										124
									
								
								docs/README.D3D
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								docs/README.D3D
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | |||||||
|  |  | ||||||
|  |                      DirectX 6 Driver for Mesa 3.0 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | This software is distributed under the terms of the GNU Library | ||||||
|  | General Public License, see the LICENSE file for details. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | What do you need ? | ||||||
|  | ------------------ | ||||||
|  |  | ||||||
|  | 	- A PC with a DirectX 6 video driver installed. | ||||||
|  |  | ||||||
|  | 	- Mesa 3.0 | ||||||
|  |  | ||||||
|  | 	- The 3Dfx Glide library 2.3 or later for your OS (the 2.4 works fine). | ||||||
|  | 	  The Voodoo2 requires the Glide library 2.51. The Glide 3.0 is not | ||||||
|  | 	  compatible with the Glide 2.x so it doesn't work with the current | ||||||
|  | 	  version of the driver; | ||||||
|  |  | ||||||
|  | 	- Visual C++ 5.0 is only compiler test but others should be ok with | ||||||
|  |        changes to the makefiles (CFLAGS/LFLAGS). | ||||||
|  |  | ||||||
|  | 	- DirectX 6 SDK (was a MS download but not sure if still available). | ||||||
|  |  | ||||||
|  | 	- SoftIce or another debugger that will get DPF's is nice. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Tested on: | ||||||
|  | ---------- | ||||||
|  | 	Windows 95 | ||||||
|  |   	Windows 98 | ||||||
|  | 	Windows NT 5.0 (beta 2) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | What is able to do ? | ||||||
|  | -------------------- | ||||||
|  |  | ||||||
|  | 	- the driver will try and use DirectX to rasterize the OpenGL primitives | ||||||
|  | 	that are sent to the driver.  The driver will fall back to SW  if the rendering  | ||||||
|  | 	context is too big.  The fallback to SW still uses DirectDraw.  If the driver | ||||||
|  | 	fails to support and operation (accum, stencil, etc) then it will try and get | ||||||
|  | 	Mesa to render it in SW.  DirectX 6 features that are unsupported by the  | ||||||
|  | 	installed DirectX 6 driver will be mapped to some other best fit feature. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | How to compile: | ||||||
|  | --------------- | ||||||
|  |  | ||||||
|  | 	These instructions assume you have Visual C++ installed. | ||||||
|  |  | ||||||
|  | 	  You might need to increase you enviroment space.  You can do this by  | ||||||
|  | 	adding the following statement to you config.sys. | ||||||
|  |  | ||||||
|  | 	shell=C:\COMMAND.COM C:\ /p /e:8198 | ||||||
|  |  | ||||||
|  | 	  Next setup you compiler enviroment by running vcvars32.bat in the Visual C++ | ||||||
|  |  	'bin' directoy. | ||||||
|  |  | ||||||
|  | 	c:\DevStudio\VC\bin\vcvars32.bat | ||||||
|  |  | ||||||
|  | 	  Modify the D3D makefile to point at your SDK install.  Example has the SDK | ||||||
|  | 	installed on my 'f' drive in the root. | ||||||
|  |  | ||||||
|  | 	file: \Mesa-3.0\src\makefile.d3d | ||||||
|  |  | ||||||
|  | 	SDKROOT=f:\mssdk | ||||||
|  |  | ||||||
|  | 	  Now you can simply make the project.  If you look in the makefile you can see | ||||||
|  | 	I have some different targets like 'install'.   | ||||||
|  |  | ||||||
|  | 	nmake /f makefile.d3d | ||||||
|  |  | ||||||
|  |  | ||||||
|  | FAQ: | ||||||
|  | ---- | ||||||
|  |  | ||||||
|  | 	1) I don't think the driver is using my DirectX driver. | ||||||
|  |  | ||||||
|  |  	  This maybe true as the current version will only select the Primary D3D driver | ||||||
|  | 	installed.  If you 3D card is the secondary (3dfx) then your out of luck for this | ||||||
|  | 	release. | ||||||
|  |  | ||||||
|  | 	2) The driver seems like its not HW accelerated. | ||||||
|  |  | ||||||
|  | 	  If you have a video card with limited memory then you might want to try and  | ||||||
|  | 	change your destop resolution to a low setting (640x480x16) so that the 3D part | ||||||
|  | 	of the card has more resources.  Remeber the driver can't make the card better... | ||||||
|  |  | ||||||
|  | 	3) Nothing works. | ||||||
|  |  | ||||||
|  | 	  Make sure you have a DirectX '6' driver installed.  Check you driver docs for this | ||||||
|  | 	info or use the SDK info utilities. | ||||||
|  | 	  The final 'dll' is named opengl32.dll and is either in the same directory as the  | ||||||
|  | 	OpenGL program or in your system directory (x:\windows\system or x:\winnt\system32). | ||||||
|  | 	  Check your destop resolution.  Most DirectX 6 drivers will only support 16bit and | ||||||
|  | 	32bit color depth.  To find out for sure you can check the DirectX Info Viewer in | ||||||
|  | 	the SDK. | ||||||
|  | 	   | ||||||
|  |  | ||||||
|  | 	4) Rendering doesn't look right. | ||||||
|  |  | ||||||
|  | 	  Sometimes this is because the card doesn't support a feature that that is required. | ||||||
|  | 	This is usually due to unsupported alpha functions (test/blend) or texture mapping. | ||||||
|  | 	Some cards suffer from too small of an alpha channel.  The driver does its best to | ||||||
|  | 	fallback on unsupported features.  This is not to say the driver may not have a bug(s). | ||||||
|  |  | ||||||
|  | 	5) Textures look bad. | ||||||
|  |  | ||||||
|  | 	  No mipmapping in this release. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Thanks to: | ||||||
|  | ---------- | ||||||
|  |  | ||||||
|  | Brian Paul | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Leigh McRae (leigh@altsoftware.com) | ||||||
|  | February 9, 1999 | ||||||
|  |  | ||||||
							
								
								
									
										26
									
								
								docs/README.GGI
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								docs/README.GGI
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | GGIMesa for LibGGI 2.x | ||||||
|  |  | ||||||
|  | Requirements: | ||||||
|  | ------------- | ||||||
|  | LibGGI 2.0 or greater | ||||||
|  |  | ||||||
|  | Installation: | ||||||
|  | ------------- | ||||||
|  | To install GGIMesa, follow the instructions in INSTALL.GNU.  If you  | ||||||
|  | wish to install GGIGLUT as well, first install GGIMesa and then run | ||||||
|  |  | ||||||
|  | make | ||||||
|  | make install (must be root) | ||||||
|  |  | ||||||
|  | in ggi/ggiglut. | ||||||
|  |  | ||||||
|  | Notes: | ||||||
|  | ------ | ||||||
|  |  | ||||||
|  | * Set the environment variables GGIMESA_DEBUG and/or GGIGLUT_DEBUG  | ||||||
|  | to 255 to see lots of debugging output. | ||||||
|  |  | ||||||
|  | * GGIGLUT contains support for all of the GLUT 3.6 API except for the | ||||||
|  | high-level primitive drawing functions, but many of the functions (in | ||||||
|  | particular the menu drawing functions) are just stubs. | ||||||
|  |  | ||||||
							
								
								
									
										64
									
								
								docs/README.LYNXOS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								docs/README.LYNXOS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | |||||||
|  |  | ||||||
|  | Mesa 3.0 for LynxOS builds in the following way: | ||||||
|  |  | ||||||
|  | make lynxos | ||||||
|  |  | ||||||
|  | This will build all the libraries and demo applications. You should have  | ||||||
|  | around 400 megabytes free for everything since everything is done with  | ||||||
|  | static | ||||||
|  | libraries. | ||||||
|  |  | ||||||
|  | Before using this make file however, you should perform the following  | ||||||
|  | actions: | ||||||
|  | 0) cd to the Mesa-3.0 directory | ||||||
|  | 1) Copy the GL directory under the include directory to /usr/include. | ||||||
|  | 2) Copy the files in the lib directory to /lib. | ||||||
|  | 3) Make links so that the Mesa libraries look like ordinary OpenGL  | ||||||
|  | libraries | ||||||
|  | in /lib. This is important for compatibility with other OpenGL apps. This | ||||||
|  | is done as follows: | ||||||
|  |  | ||||||
|  | cd /lib | ||||||
|  | ln -s libMesaGL.a libGL.a | ||||||
|  | ln -s libMesaGLU.a libGLU.a | ||||||
|  |  | ||||||
|  | Mesa 3.0 includes the GLUT (GL Utility Toolkit) by default. | ||||||
|  | The demo applications are done using this toolkit. | ||||||
|  |  | ||||||
|  | Mesa makefiles for building their apps could be used as well, but the | ||||||
|  | following one is much more concise. Note that the order of the X libraries | ||||||
|  | is important to the linker so that all symbols get resolved correctly. | ||||||
|  | Changing the order may result in having to list a library twice to make | ||||||
|  | sure all linkages are made correctly. | ||||||
|  |  | ||||||
|  | ----cut here for Makefile ----- | ||||||
|  |  | ||||||
|  | FILES = your_app.x | ||||||
|  |  | ||||||
|  | SPECIAL_INCLUDES = -I/usr/include/GL | ||||||
|  |  | ||||||
|  | SPECIAL_CFLAGS = -g  -ansi -pedantic -funroll-loops -ffast-math -DSHM | ||||||
|  |  | ||||||
|  | SPECIAL_LIBS = -lglut -lGLU -lGL -lm -L/usr/X11/lib -lXext -lXmu -lXi \ | ||||||
|  | -lX11 -lbsd -g | ||||||
|  |  | ||||||
|  | STANDARD_OFILES = $(FILES:.x=.o) | ||||||
|  |  | ||||||
|  | %.o: %.c | ||||||
|  | 	gcc -c $(SPECIAL_CFLAGS) $(SPECIAL_INCLUDES) $< -o $@ | ||||||
|  |  | ||||||
|  | all: $(STANDARD_OFILES) | ||||||
|  | 	gcc -o your_app $(STANDARD_OFILES) $(SPECIAL_LIBS) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ----cut here for Makefile----- | ||||||
|  |  | ||||||
|  | I have tested Mesa under LynxOS 3.0 and 3.01. It should build fine under  | ||||||
|  | other | ||||||
|  | versions as well. Note, however, that LynxOS versions prior to 3.0 are not | ||||||
|  | binary compatible, so you will have to rebuild from source. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Vik Sohal | ||||||
|  | vik@lynx.com | ||||||
|  | January 13, 1999 | ||||||
							
								
								
									
										53
									
								
								docs/README.MINGW32
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								docs/README.MINGW32
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | |||||||
|  | August 30, 1998 -- Paul Garceau | ||||||
|  | Updated January 13, 2000 -- Paul Garceau (pgarceau@teleport.com) | ||||||
|  |  | ||||||
|  | DISCLAIMER:  I make this port of the Mesa 3-D Graphics Library as a service | ||||||
|  | to the general public.  I can, in no way support or make any guarantee that the | ||||||
|  | build will work for your system. | ||||||
|  |  | ||||||
|  | 	The associated packages and batch files I have included as part of the GCC-2.95.2/Mingw32 extension are provided "As-is" with out any guarantee of support or functionality from this author. | ||||||
|  |  | ||||||
|  | 	Feel free to modify or change things as you see fit, just remember that | ||||||
|  | I can't support any modifications you might want to make to the files which I | ||||||
|  | have included OR the lgpl protected Mesa 3-D Graphics Library. | ||||||
|  |  | ||||||
|  | 	I recommend using GCC-2.95.2/Mingw32 which is available at Mumit Khans' ftp site: | ||||||
|  |  | ||||||
|  | 		(ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/) | ||||||
|  |  | ||||||
|  | 	This build has been tested under WinNT4/SP6.  Win9x and WinNT5 remain untested by me.  I have not tested any of the demos included with Mesa3d. | ||||||
|  |  | ||||||
|  | 	I recommend using the GCC-2.95.2/Mingw32. | ||||||
|  |  | ||||||
|  | 	ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/gcc-2.95.2 | ||||||
|  |  | ||||||
|  | 	Much thanks to the combined efforts of Mumit Khan, Jan-Jaap Vanderhagen | ||||||
|  | and Colin Peters for making it possible for the Mingw32 toolchain to exist.  Also, thanks go out to Stephane Rehel for the work that was completed on the Cygwin build. | ||||||
|  |  | ||||||
|  | Installing GCC-2.95.2/Mingw32 Build: | ||||||
|  |  | ||||||
|  | 	a) Open the file archive (either tar.gz or .zip extensions) | ||||||
|  |  | ||||||
|  | 	b) Decide the directory you want to move the archived files to. | ||||||
|  |  | ||||||
|  | 	d) Extract the files from the archive. | ||||||
|  | 	 | ||||||
|  | 	e) Edit the mingw32.bat file to accomodate your choice of directory structure. | ||||||
|  |  | ||||||
|  | 		%mesaroot%:	This is your root directory (Mesa-3.2) | ||||||
|  | 		%mesasrc%:	This is the Mesa-3.2 src directory (Mesa-3.2\src) | ||||||
|  | 		%mesalib%:	This is where the build will put libGL.a and libGLU.a | ||||||
|  |  | ||||||
|  | Running the Build: | ||||||
|  |  | ||||||
|  | 	Open your Command Prompt or MS-DOS prompt. | ||||||
|  | 	Go to your Mesa-3.2 'root' directory | ||||||
|  | 	At the command line type: mingw32 | ||||||
|  |  | ||||||
|  | 	That's all there is to it. | ||||||
|  |  | ||||||
|  | 	Enjoy! | ||||||
|  |  | ||||||
|  | 	Peace, | ||||||
|  |  | ||||||
|  | 		Paul G. (pgarceau@teleport.com) | ||||||
							
								
								
									
										100
									
								
								docs/README.MITS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								docs/README.MITS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | |||||||
|  |  | ||||||
|  | 			Mesa 3.0 MITS Information | ||||||
|  |  | ||||||
|  | [The MITS code hasn't been update for Mesa 3.1 and may no longer work] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | This document is a preliminary introduction to help you get | ||||||
|  | started. For more detaile information consult the web page. | ||||||
|  |  | ||||||
|  | http://10-dencies.zkm.de/~mesa/ | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Version 0.1 (Yes it's very alpha code so be warned!) | ||||||
|  | Contributors:  | ||||||
|  |   Emil Briggs    	(briggs@bucky.physics.ncsu.edu) | ||||||
|  |   David Bucciarelli 	(tech.hmw@plus.it) | ||||||
|  |   Andreas Schiffler 	(schiffler@zkm.de) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 1. Requirements: | ||||||
|  |      Mesa 3.0. | ||||||
|  |      An SMP capable machine running Linux 2.x | ||||||
|  |      libpthread installed on your machine. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 2. What does MITS stand for? | ||||||
|  |      MITS stands for Mesa Internal Threading System. By adding | ||||||
|  |      internal threading to Mesa it should be possible to improve | ||||||
|  |      performance of OpenGL applications on SMP machines. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 3. Do applications have to be recoded to take advantage of MITS? | ||||||
|  |      No. The threading is internal to Mesa and transparent to | ||||||
|  |      applications. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 4. Will all applications benefit from the current implementation of MITS? | ||||||
|  |      No. This implementation splits the processing of the vertex buffer | ||||||
|  |      over two threads. There is a certain amount of overhead involved | ||||||
|  |      with the thread synchronization and if there is not enough work | ||||||
|  |      to be done the extra overhead outweighs any speedup from using | ||||||
|  |      dual processors. You will not for example see any speedup when | ||||||
|  |      running Quake because it uses GL_POLYGON and there is only one | ||||||
|  |      polygon for each vertex buffer processed. Test results on a | ||||||
|  |      dual 200 Mhz. Pentium Pro system show that one needs around | ||||||
|  |      100-200 vertices in the vertex buffer before any there is any | ||||||
|  |      appreciable benefit from the threading. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 5. Are there any parameters that I can tune to try to improve performance. | ||||||
|  |      Yes. You can try to vary the size of the vertex buffer which is | ||||||
|  |      define in VB_MAX located in the file src/vb.h from your top level | ||||||
|  |      Mesa distribution. The number needs to be a multiple of 12 and | ||||||
|  |      the optimum value will probably depend on the capabilities of | ||||||
|  |      your machine and the particular application you are running. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 6. Are there any ways I can modify the application to improve its | ||||||
|  |    performance with the MITS? | ||||||
|  |      Yes. Try to use as many vertices between each Begin/End pair | ||||||
|  |      as possbile. This will reduce the thread synchronization | ||||||
|  |      overhead. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 7. What sort of speedups can I expect? | ||||||
|  |      On some benchmarks performance gains of up to 30% have been | ||||||
|  |      observerd. Others may see no gain at all and in a few rare | ||||||
|  |      cases even some degradation. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 8. What still needs to be done? | ||||||
|  |      Lots of testing and benchmarking. | ||||||
|  |      A portable implementation that works within the Mesa thread API. | ||||||
|  |      Threading of additional areas of Mesa to improve performance | ||||||
|  |      even more. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Installation: | ||||||
|  |  | ||||||
|  |    1. This assumes that you already have a working Mesa 3.0 installation | ||||||
|  |       from source. | ||||||
|  |    2. Place the tarball MITS.tar.gz in your top level Mesa directory. | ||||||
|  |    3. Unzip it and untar it. It will replace the following files in | ||||||
|  |       your Mesa source tree so back them up if you want to save them. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	 README.MITS | ||||||
|  |          Make-config | ||||||
|  | 	 Makefile | ||||||
|  | 	 mklib.glide | ||||||
|  |          src/vbxform.c | ||||||
|  | 	 src/vb.h | ||||||
|  |  | ||||||
|  |    4. Rebuild Mesa using the command | ||||||
|  |  | ||||||
|  |           make linux-386-glide-mits | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								docs/README.NeXT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								docs/README.NeXT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | The NeXT support has now been incorporated into the OpenStep support. | ||||||
|  | You can build NeXT libraries simply by typing "make next", though before | ||||||
|  | linking they will need to be ranlib'd by hand. For more information see | ||||||
|  | the README.OpenStep file, together with the README files in OpenStep/Old_Demos. | ||||||
|  |  | ||||||
|  | -Pete French. (pete@ohm.york.ac.uk) 28/5/1998 | ||||||
							
								
								
									
										96
									
								
								docs/README.OS2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								docs/README.OS2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | |||||||
|  |             README for port of Mesa 3.x to XFree86 on OS/2 (X/2) | ||||||
|  |                           (as of 19990514) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                            Contents: | ||||||
|  |  | ||||||
|  |                            1) Binary release | ||||||
|  |                            2) Building from sources | ||||||
|  |                            3) History | ||||||
|  |                            4) Todo | ||||||
|  |                            5) Mesa Home Page | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 1) Binary release | ||||||
|  |  | ||||||
|  |    Though the Mesa sources should build in a quite reasonable time even on | ||||||
|  |    a 585 class machine a binary relase is available (check topic 4) for an URL) | ||||||
|  |    This package includes: | ||||||
|  |  | ||||||
|  |      - lib/MesaGL.dll,  MesaGL.a | ||||||
|  |      - lib/MesaGLU.dll, MesaGLU.a | ||||||
|  |      - lib/glut.dll,    glut.a | ||||||
|  |      - include/GL/*.h | ||||||
|  |  | ||||||
|  |     Installing this in your XFree86 tree will enable you to build and | ||||||
|  |     run all applications compatible with Mesa (and the current DLL | ||||||
|  |     interface, of course ;-) | ||||||
|  |     As usual the OMF-style libraries can be created using emxomf. | ||||||
|  |     (e.g. "emxomf foo.a"  creates the foo.lib omf-style library). | ||||||
|  |     The static libraries are rarely used and you have to rebuild | ||||||
|  |     Mesa to get them. They're a supported target, so you get | ||||||
|  |     them in a straightforward way (see below). | ||||||
|  |  | ||||||
|  |     The testing of these libraries was limited to the supplied | ||||||
|  |     demos/examples and a quite small number of third-party apps. | ||||||
|  |     No warranty ... as usual ...  ;-) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 2)  Instructions to build Mesa 3.x for XFree86/OS2 from sources: | ||||||
|  |  | ||||||
|  |     Except the official Mesa source distribution you need: | ||||||
|  |       - a recent version of XFree86 (3.3.x or above) including | ||||||
|  |         the programming libraries | ||||||
|  |       - EMX 0.9c (0.9d might work, never checked) | ||||||
|  |       - GNU make | ||||||
|  |       - REXX (!) | ||||||
|  |  | ||||||
|  |     The creation of the DLLs as well as of the static libraries | ||||||
|  |     (if you want to have them) is handled in "mklib-emx.cmd", | ||||||
|  |     a small REXX script. Perhaps not the best idea, but this | ||||||
|  |     way it fits best in the scheme used to build libraries | ||||||
|  |     on all platforms in Mesa 3.x. | ||||||
|  |  | ||||||
|  |     To actually build the libraries and demos, check mklib-emx.cmd | ||||||
|  |     and modify it as desired. Then type | ||||||
|  |       make os2-x11 | ||||||
|  |     and wait for completion ;-) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 3)  History | ||||||
|  |  | ||||||
|  |     Initially Darren Abbott (abbott@hiwaay.net) ported Mesa versions 2.x | ||||||
|  |     to XFree86 OS/2. This port might still be available from  | ||||||
|  |        http://fly.HiWAAY.net/~abbott/xfree86-os2/xfree86.html | ||||||
|  |  | ||||||
|  |     The current port picked up things during the beta test for 3.0.  | ||||||
|  |     No major changes in the source were done. The build mechanism under OS/2 | ||||||
|  |     has been made very similar to other platforms (if you treat mklib-emx.cmd | ||||||
|  |     as a "black box"). | ||||||
|  |     Advantage is that X/2 is now a valid target and all files are | ||||||
|  |     integrated in the official source distribution. | ||||||
|  |     Disadvantage is that this port (i.e. the DLLs' interface itself) is | ||||||
|  |     definitly NOT COMPATIBLE to those of version 2.x.  | ||||||
|  |     It's uncertain whether this would be at all possible but since there | ||||||
|  |     a _very_ few those apps it's not worth to find out anyway. | ||||||
|  |     Also some libs (MesaTK, MesaAUX) are withdrawn from the Mesa distribution, | ||||||
|  |     and accordingly from the OS/2 port. | ||||||
|  |  | ||||||
|  | 4) Todo | ||||||
|  |  | ||||||
|  |     By now binary compatiblity is ensured by using the function names | ||||||
|  |     as entry points instead of ordinals. This might cost performance and | ||||||
|  |     is subject to change in future. In addition the supplied X86 assembler | ||||||
|  |     source is not used yet. | ||||||
|  |  | ||||||
|  | 5)  Mesa Home Page | ||||||
|  |  | ||||||
|  |     You can get the source code and more information about Mesa from | ||||||
|  |        http://www.mesa3d.org/ | ||||||
|  |  | ||||||
|  |     The OS/2 ports should be available from | ||||||
|  |        http://r350.ee.ntu.edu.tw/~hcchu/os2/ports  | ||||||
|  |  | ||||||
|  | -- | ||||||
|  | Alexander Mai | ||||||
|  | st002279@hrzpub.tu-darmstadt.de | ||||||
							
								
								
									
										35
									
								
								docs/README.OpenStep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								docs/README.OpenStep
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | This is a port of the GL and GLU libraries to NeXT/Apple object | ||||||
|  | orientated systems. As these systems have their own window handling | ||||||
|  | systems we simply use the offscreen rendering capability of Mesa | ||||||
|  | to generate bitmaps which may then be displayed by the application | ||||||
|  | with a View as required. Example pieces of code may be found in the | ||||||
|  | OpenStep directory. | ||||||
|  |  | ||||||
|  | Sadly there are now a proliferation of different system that we need to | ||||||
|  | support compilation for: The original NextStep system, The OpenStep | ||||||
|  | system, the Rhapsody/Mac OS X system and also the windows implementations | ||||||
|  | of the latter two systems. This version of the code has been compiled and | ||||||
|  | tested under the following architectures: | ||||||
|  |  | ||||||
|  | 	NextStep 3.3  | ||||||
|  | 	OpenStep 4.2 | ||||||
|  | 	Rhapsody DR2 | ||||||
|  | 	WebObjects for NT 3.5 | ||||||
|  | 	WebObjects for NT 4.0 | ||||||
|  |  | ||||||
|  | All tests were done with Intel processors. Feedback on other systems would, | ||||||
|  | however, be appreciated ! | ||||||
|  |  | ||||||
|  | On UNIX systems simply type "make openstep". Under Windows systems | ||||||
|  | with WebObjects run the "win32-openstep.sh" script from within the Bourne | ||||||
|  | shell provided with the development environment. In both cases this will | ||||||
|  | build the libraries and place them into the "lib" directory. Some examples | ||||||
|  | may be found in the OpenStep directory showing how to use the code in an | ||||||
|  | actual application (MesaView) as well as some command line demos. | ||||||
|  |  | ||||||
|  | The CC variable may be specified on the command line for doing such things | ||||||
|  | as building FFAT libraries or using alternative compilers to the standard 'cc' | ||||||
|  | e.g.  make CC='cc -arch m68k -arch i386' openstep" will build the libraries | ||||||
|  | with both intel and motorola architectures. | ||||||
|  |  | ||||||
|  | -Pete French. (pete@ohm.york.ac.uk) 7/6/1999 | ||||||
							
								
								
									
										208
									
								
								docs/README.QUAKE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										208
									
								
								docs/README.QUAKE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,208 @@ | |||||||
|  |  | ||||||
|  |              Info on using Mesa 3.0 with Linux Quake I and Quake II | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Disclaimer | ||||||
|  | ---------- | ||||||
|  |  | ||||||
|  | I am _not_ a Quake expert by any means.  I pretty much only run it to | ||||||
|  | test Mesa.  There have been a lot of questions about Linux Quake and | ||||||
|  | Mesa so I'm trying to provide some useful info here.  If this file | ||||||
|  | doesn't help you then you should look elsewhere for help.  The Mesa | ||||||
|  | mailing list or the news://news.3dfx.com/3dfx.linux.glide newsgroup | ||||||
|  | might be good. | ||||||
|  |  | ||||||
|  | Again, all the information I have is in this file.  Please don't email | ||||||
|  | me with questions. | ||||||
|  |  | ||||||
|  | If you have information to contribute to this file please send it to | ||||||
|  | me at brianp@elastic.avid.com | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Linux Quake | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | You can get Linux Quake from http://www.idsoftware.com/ | ||||||
|  |  | ||||||
|  | Quake I and II for Linux were tested with, and include, Mesa 2.6.  You | ||||||
|  | shouldn't have too many problems if you simply follow the instructions | ||||||
|  | in the Quake distribution. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | RedHat 5.0 Linux problems | ||||||
|  | ------------------------- | ||||||
|  |  | ||||||
|  | RedHat Linux 5.x uses the GNU C library ("glibc" or "libc6") whereas | ||||||
|  | previous RedHat and other Linux distributions use "libc5" for its | ||||||
|  | runtime C library. | ||||||
|  |  | ||||||
|  | Linux Quake I and II were compiled for libc5.  If you compile Mesa | ||||||
|  | on a RedHat 5.x system the resulting libMesaGL.so file will not work | ||||||
|  | with Linux Quake because of the different C runtime libraries. | ||||||
|  | The symptom of this is a segmentation fault soon after starting Quake. | ||||||
|  |  | ||||||
|  | If you want to use a newer version of Mesa (like 3.x) with Quake on | ||||||
|  | RedHat 5.x then read on. | ||||||
|  |  | ||||||
|  | The solution to the C library problem is to force Mesa to use libc5. | ||||||
|  | libc5 is in /usr/i486-linux-libc5/lib on RedHat 5.x systems. | ||||||
|  |  | ||||||
|  | Emil Briggs (briggs@tick.physics.ncsu.edu) nicely gave me the following | ||||||
|  | info: | ||||||
|  |  | ||||||
|  | >   I only know what works on a RedHat 5.0 distribution. RH5 includes | ||||||
|  | > a full set of libraries for both libc5 and glibc. The loader ld.so | ||||||
|  | > uses the libc5 libraries in /usr/i486-linux-libc5/lib for programs | ||||||
|  | > linked against libc5 while it uses the glibc libraries in /lib and | ||||||
|  | > /usr/lib for programs linked against glibc. | ||||||
|  | >  | ||||||
|  | > Anyway I changed line 41 of mklib.glide to | ||||||
|  | >     GLIDELIBS="-L/usr/local/glide/lib -lglide2x -L/usr/i486-linux-libc5/lib" | ||||||
|  | >  | ||||||
|  | > And I started quake2 up with a script like this | ||||||
|  | > #!/bin/csh | ||||||
|  | > setenv LD_LIBRARY_PATH /usr/i486-linux-libc5/lib | ||||||
|  | > setenv MESA_GLX_FX f | ||||||
|  | > ./quake2 +set vid_ref gl | ||||||
|  | > kbd_mode -a | ||||||
|  | > reset | ||||||
|  |  | ||||||
|  |  | ||||||
|  | I've already patched the mklib.glide file.  You'll have to start Quake | ||||||
|  | with the script shown above though. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ********************** | ||||||
|  |  | ||||||
|  | Daryll Strauss writes: | ||||||
|  |  | ||||||
|  | Here's my thoughts on the problem. On a RH 5.x system, you can NOT build | ||||||
|  | a libc5 executable or library. Red Hat just doesn't include the right | ||||||
|  | stuff to do it. | ||||||
|  |  | ||||||
|  | Since Quake is a libc5 based application, you are in trouble. You need | ||||||
|  | libc5 libraries. | ||||||
|  |  | ||||||
|  | What can you do about it? Well there's a package called gcc5 that does | ||||||
|  | MOST of the right stuff to compile with libc5. (It brings back older | ||||||
|  | header files, makes appropriate symbolic links for libraries, and sets | ||||||
|  | up the compiler to use the correct directories) You can find gcc5 here:  | ||||||
|  | ftp://ecg.mit.edu/pub/linux/gcc5-1.0-1.i386.rpm | ||||||
|  |  | ||||||
|  | No, this isn't quite enough. There are still a few tricks to getting | ||||||
|  | Mesa to compile as a libc5 application. First you have to make sure that | ||||||
|  | every compile uses gcc5 instead of gcc. Second, in some cases the link | ||||||
|  | line actually lists -L/usr/lib which breaks gcc5 (because it forces you | ||||||
|  | to use the glibc version of things) | ||||||
|  |  | ||||||
|  | If you get all the stuff correctly compiled with gcc5 it should work. | ||||||
|  | I've run Mesa 3.0B6  and its demos in a window with my Rush on a Red Hat | ||||||
|  | 5.1 system. It is a big hassle, but it can be done. I've only made Quake | ||||||
|  | segfault, but I think that's from my libRush using the wrong libc.  | ||||||
|  |  | ||||||
|  | Yes, mixing libc5 and glibc is a major pain. I've been working to get | ||||||
|  | all my libraries compiling correctly with this setup. Someone should | ||||||
|  | make an RPM out of it and feed changes back to Brian once they get it | ||||||
|  | all working. If no one else has done so by the time I get the rest of my | ||||||
|  | stuff straightened out, I'll try to do it myself. | ||||||
|  |  | ||||||
|  | 							- |Daryll | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ********************* | ||||||
|  |  | ||||||
|  | David Bucciarelli (tech.hmw@plus.it) writes: | ||||||
|  |  | ||||||
|  | I'm using the Mesa-3.0beta7 and the RedHat 5.1 and QuakeII is | ||||||
|  | working fine for me.  I had only to make a small change to the | ||||||
|  | Mesa-3.0/mklib.glide file, from: | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     GLIDELIBS="-L/usr/local/glide/lib -lglide2x | ||||||
|  | -L/usr/i486-linux-libc5/lib -lm" | ||||||
|  |  | ||||||
|  | to: | ||||||
|  |  | ||||||
|  |     GLIDELIBS="-L/usr/i486-linux-libc5/lib -lglide2x" | ||||||
|  |  | ||||||
|  | and to make two symbolic links: | ||||||
|  |  | ||||||
|  | [david@localhost Mesa]$ ln -s libMesaGL.so libMesaGL.so.2 | ||||||
|  | [david@localhost Mesa]$ ln -s libMesaGLU.so libMesaGLU.so.2 | ||||||
|  |  | ||||||
|  | I'm using the Daryll's Linux glide rpm for the Voodoo2 and glibc (it | ||||||
|  | includes also the Glide for the libc5). I'm not using the /dev/3Dfx and | ||||||
|  | running QuakeII as root with the following env. var: | ||||||
|  |  | ||||||
|  | export | ||||||
|  | LD_LIBRARY_PATH=/dsk1/home/david/src/gl/Mesa/lib:/usr/i486-linux-libc5/lib | ||||||
|  |  | ||||||
|  | I think that all problems are related to the glibc, Quake will never | ||||||
|  | work if you get the following output: | ||||||
|  |  | ||||||
|  | [david@localhost Mesa]$ ldd lib/libMesaGL.so | ||||||
|  |         libglide2x.so => /usr/lib/libglide2x.so (0x400f8000) | ||||||
|  |         libm.so.6 => /lib/libm.so.6 (0x40244000) | ||||||
|  |         libc.so.6 => /lib/libc.so.6 (0x4025d000) | ||||||
|  |         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000) | ||||||
|  |  | ||||||
|  | You must get the following outputs: | ||||||
|  |  | ||||||
|  | [david@localhost Mesa]# ldd lib/libMesaGL.so | ||||||
|  |         libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so | ||||||
|  | (0x400f3000) | ||||||
|  |  | ||||||
|  | [root@localhost quake2]# ldd quake2 | ||||||
|  |         libdl.so.1 => /lib/libdl.so.1 (0x40005000) | ||||||
|  |         libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x40008000) | ||||||
|  |         libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x40010000) | ||||||
|  |  | ||||||
|  | [root@localhost quake2]# ldd ref_gl.so | ||||||
|  |         libMesaGL.so.2 => | ||||||
|  | /dsk1/home/david/src/gl/Mesa/lib/libMesaGL.so.2 (0x400eb000) | ||||||
|  |         libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so | ||||||
|  | (0x401d9000) | ||||||
|  |         libX11.so.6 => /usr/i486-linux-libc5/lib/libX11.so.6 | ||||||
|  | (0x40324000) | ||||||
|  |         libXext.so.6 => /usr/i486-linux-libc5/lib/libXext.so.6 | ||||||
|  | (0x403b7000) | ||||||
|  |         libvga.so.1 => /usr/i486-linux-libc5/lib/libvga.so.1 | ||||||
|  | (0x403c1000) | ||||||
|  |         libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x403f5000) | ||||||
|  |         libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x403fd000) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | *********************** | ||||||
|  |  | ||||||
|  | Steve Davies (steve@one47.demon.co.uk) writes: | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Try using: | ||||||
|  |  | ||||||
|  |     export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib | ||||||
|  |     ./quake2 +set vid_ref gl | ||||||
|  |  | ||||||
|  | to start the game... Works for me, but assumes that you have the | ||||||
|  | compatability libc5 RPMs installed. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | *************************** | ||||||
|  |  | ||||||
|  | WWW resources - you may find additional Linux Quake help at these URLs: | ||||||
|  |  | ||||||
|  |  | ||||||
|  | http://quake.medina.net/howto | ||||||
|  |  | ||||||
|  | http://webpages.mr.net/bobz | ||||||
|  |  | ||||||
|  | http://www.linuxgames.com/quake2/ | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ---------------------------------------------------------------------- | ||||||
|  | $Id: README.QUAKE,v 1.3 1998/08/23 15:26:26 brianp Exp $ | ||||||
							
								
								
									
										66
									
								
								docs/README.THREADS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								docs/README.THREADS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | |||||||
|  |  | ||||||
|  | NOTE: this information is obsolete for Mesa 3.1.  Due to the big | ||||||
|  | changes in the Mesa code, the threads support is out of date. | ||||||
|  | Someone will have to review/update it. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Mesa Threads README | ||||||
|  | ------------------- | ||||||
|  |  | ||||||
|  | Mesa 2.6 is the starting point for an effort to make Mesa  | ||||||
|  | safe in multithreaded applications.  The files src/mthreads.c and | ||||||
|  | src/mthreads.h provide a platform independent threads API which Mesa | ||||||
|  | uses internally to provide thread-safe operation.  At present the mthreads | ||||||
|  | code supports three thread APIS: | ||||||
|  |   1) POSIX threads (aka pthreads). | ||||||
|  |   2) Solaris / Unix International threads. | ||||||
|  |   3) Win32 threads (Win 95/NT). | ||||||
|  |  | ||||||
|  | Here's the current list of targets which enable multithreaded handling | ||||||
|  | in Mesa: | ||||||
|  |  | ||||||
|  |   linux-386-pthread    for Linux w/ Intel assembly and linuxthreads | ||||||
|  |   sunos5-thread        for Suns with SunOS 5.x, using Solaris threads | ||||||
|  |   sunos5-pthread       for Suns with SunOS 5.[56] using POSIX threads | ||||||
|  |   sunos5-gcc-thread    for Suns with SunOS 5.x and GCC, using Solaris threads | ||||||
|  |   sunos5-gcc-pthread   for Suns with SunOS 5.[56] and GCC, using POSIX threads | ||||||
|  |  | ||||||
|  | In order to use Mesa with a multithreaded application, Mesa must be compiled | ||||||
|  | using one of the thread-enabled configurations.  In cases where a platform | ||||||
|  | supports multiple APIs which are acceptable to Mesa, Mesa must be built | ||||||
|  | with the same threads API as the application in order for things to work | ||||||
|  | properly.  For example, Solaris >= 2.5 support both POSIX threads and | ||||||
|  | Sun's own threads API.  In order to guarantee proper operation, it is | ||||||
|  | necessary for both Mesa and application code to use the same threads API. | ||||||
|  | So, if your application uses Sun's thread API, then you should build Mesa | ||||||
|  | using one of the targets for Sun threads. | ||||||
|  |  | ||||||
|  | Since this effort is still very much a work in progress, not all  | ||||||
|  | aspects of Mesa are thread safe.  As of this release (Mesa 2.6) only the | ||||||
|  | osmesa drivers have been made MT-safe.  As work continues, other drivers | ||||||
|  | such as the X11 drivers will also incorporate MT-safe features. | ||||||
|  |  | ||||||
|  | The mtdemos directory contains some example programs which use  | ||||||
|  | multiple threads to render to osmesa rendering context(s). | ||||||
|  |  | ||||||
|  | Linux users should be aware that there exist many different POSIX | ||||||
|  | threads packages. The best solution is the linuxthreads package | ||||||
|  | (http://pauillac.inria.fr/~xleroy/linuxthreads/) as this package is the | ||||||
|  | only one that really supports multiprocessor machines (AFAIK). See | ||||||
|  | http://pauillac.inria.fr/~xleroy/linuxthreads/README for further | ||||||
|  | information about the usage of linuxthreads. | ||||||
|  |  | ||||||
|  | If you are interested in helping develop MT-safe Mesa, please send email | ||||||
|  | to j.stone@acm.org and poliwoda@volumegraphics.com who are the two most | ||||||
|  | directly involved in this effort currently.  Similarly, if you have problems | ||||||
|  | using the MT-safe builds of Mesa, please send us comments/bugs etc. | ||||||
|  |  | ||||||
|  | Future versions of Mesa will include more extensive documentation related | ||||||
|  | to multithreading.  This is the first release of our work, so please bear | ||||||
|  | with us. | ||||||
|  |  | ||||||
|  | Regards, | ||||||
|  |   John Stone           -- j.stone@acm.org  johns@cs.umr.edu | ||||||
|  |   Christoph Poliwoda   -- poliwoda@volumegraphics.com | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -1,44 +0,0 @@ | |||||||
| The software may implement third party technologies (e.g. third party |  | ||||||
| libraries) that are not licensed to you by AMD and for which you may need |  | ||||||
| to obtain licenses from other parties.  Unless explicitly stated otherwise, |  | ||||||
| these third party technologies are not licensed hereunder.  Such third |  | ||||||
| party technologies include, but are not limited, to H.264, H.265, HEVC, MPEG-2, |  | ||||||
| MPEG-4, AVC, and VC-1. |  | ||||||
|  |  | ||||||
| For MPEG-2 Encoding Products ANY USE OF THIS PRODUCT IN ANY MANNER OTHER |  | ||||||
| THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD FOR ENCODING VIDEO |  | ||||||
| INFORMATION FOR PACKAGED MEDIA IS EXPRESSLY PROHIBITED WITHOUT A LICENSE |  | ||||||
| UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT PORTFOLIO, WHICH LICENSES IS |  | ||||||
| AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers Green Circle, Suite 400E, |  | ||||||
| Greenwood Village, Colorado 80111 U.S.A. |  | ||||||
|  |  | ||||||
| WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY |  | ||||||
| KIND.  AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING |  | ||||||
| BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A |  | ||||||
| PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN |  | ||||||
| UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR |  | ||||||
| COURSE OF USAGE.  THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS |  | ||||||
| ASSUMED BY YOU.  Some jurisdictions do not allow the exclusion of implied |  | ||||||
| warranties, so the above exclusion may not apply to You. |  | ||||||
|  |  | ||||||
| LIMITATION OF LIABILITY AND INDEMNIFICATION:  AMD AND ITS LICENSORS WILL NOT, |  | ||||||
| UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL, |  | ||||||
| INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR |  | ||||||
| THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE |  | ||||||
| POSSIBILITY OF SUCH DAMAGES.  In no event shall AMD's total liability to You |  | ||||||
| for all damages, losses, and causes of action (whether in contract, tort |  | ||||||
| (including negligence) or otherwise) exceed the amount of $100 USD.  You agree |  | ||||||
| to defend, indemnify and hold harmless AMD and its licensors, and any of their |  | ||||||
| directors, officers, employees, affiliates or agents from and against any and |  | ||||||
| all loss, damage, liability and other expenses (including reasonable |  | ||||||
| attorneys' fees), resulting from Your use of the Software or violation of the |  | ||||||
| terms and conditions of this Agreement. |  | ||||||
|  |  | ||||||
| U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED |  | ||||||
| RIGHTS." Use, duplication, or disclosure by the Government is subject to the |  | ||||||
| restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or |  | ||||||
| its successor.  Use of the Software by the Government constitutes |  | ||||||
| acknowledgement of AMD's proprietary rights in them. |  | ||||||
|  |  | ||||||
| EXPORT RESTRICTIONS: The Software may be subject to export restrictions as |  | ||||||
| stated in the Software License Agreement. |  | ||||||
| @@ -1,43 +0,0 @@ | |||||||
| The software may implement third party technologies (e.g. third party |  | ||||||
| libraries) that are not licensed to you by AMD and for which you may need |  | ||||||
| to obtain licenses from other parties.  Unless explicitly stated otherwise, |  | ||||||
| these third party technologies are not licensed hereunder.  Such third |  | ||||||
| party technologies include, but are not limited, to H.264, MPEG-2, MPEG-4, |  | ||||||
| AVC, and VC-1.   |  | ||||||
|  |  | ||||||
| For MPEG-2 Intermediate Products: ANY USE OF THIS PRODUCT IN ANY MANNER OTHER |  | ||||||
| THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD IS EXPRESSLY |  | ||||||
| PROHIBITED WITHOUT A LICENSE UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT |  | ||||||
| PORTFOLIO, WHICH LICENSES IS AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers |  | ||||||
| Green Circle, Suite 400E, Greenwood Village, Colorado 80111 U.S.A. |  | ||||||
|  |  | ||||||
| WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY |  | ||||||
| KIND.  AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING |  | ||||||
| BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A |  | ||||||
| PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN |  | ||||||
| UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR |  | ||||||
| COURSE OF USAGE.  THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS |  | ||||||
| ASSUMED BY YOU.  Some jurisdictions do not allow the exclusion of implied |  | ||||||
| warranties, so the above exclusion may not apply to You. |  | ||||||
|  |  | ||||||
| LIMITATION OF LIABILITY AND INDEMNIFICATION:  AMD AND ITS LICENSORS WILL NOT, |  | ||||||
| UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL, |  | ||||||
| INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR |  | ||||||
| THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE |  | ||||||
| POSSIBILITY OF SUCH DAMAGES.  In no event shall AMD's total liability to You |  | ||||||
| for all damages, losses, and causes of action (whether in contract, tort |  | ||||||
| (including negligence) or otherwise) exceed the amount of $100 USD.  You agree |  | ||||||
| to defend, indemnify and hold harmless AMD and its licensors, and any of their |  | ||||||
| directors, officers, employees, affiliates or agents from and against any and |  | ||||||
| all loss, damage, liability and other expenses (including reasonable |  | ||||||
| attorneys' fees), resulting from Your use of the Software or violation of the |  | ||||||
| terms and conditions of this Agreement. |  | ||||||
|  |  | ||||||
| U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED |  | ||||||
| RIGHTS." Use, duplication, or disclosure by the Government is subject to the |  | ||||||
| restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or |  | ||||||
| its successor.  Use of the Software by the Government constitutes |  | ||||||
| acknowledgement of AMD's proprietary rights in them. |  | ||||||
|  |  | ||||||
| EXPORT RESTRICTIONS: The Software may be subject to export restrictions as |  | ||||||
| stated in the Software License Agreement. |  | ||||||
							
								
								
									
										28
									
								
								docs/README.VMS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								docs/README.VMS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  |  | ||||||
|  | VMS support contributed by Jouk Jansen (joukj@hrem.stm.tudelft.nl) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | The latest version was tested on a VMSAlpha7.2 system using DECC6.0, but | ||||||
|  | probably also works for other versions. | ||||||
|  |  | ||||||
|  | At the moment only the libraries LIBMESGL.EXE/LIBMESGL.OLB, | ||||||
|  | LIBMESAGLU.EXE/LIBMESAGLU.OLB and LIBGLUT.EXE/LIBGLUT.OLB and the demos of the | ||||||
|  | directory [.DEMOS] can be build. | ||||||
|  | However, feel free to create the missing "decrip.mms-files" in the other | ||||||
|  | directories. | ||||||
|  |  | ||||||
|  |  The make files were tested | ||||||
|  | using the DIGITAL make utility called MMS.  There is also a public domain | ||||||
|  | clone available (MMK) and I  think, but it is not tested, that this | ||||||
|  | utility will give (hardly) any problem. | ||||||
|  |  | ||||||
|  | To make everything just type MMS (or MMK) in the main directory of | ||||||
|  | mesagl.  For MMS the deafult makefile is called descrip.mms, and | ||||||
|  | that is what I have called it.  I included alse some config files, | ||||||
|  | all having mms somewhere in the name which all the makefiles need | ||||||
|  | (just as your unix makefiles). | ||||||
|  |  | ||||||
|  | On Alpha platforms at default a sharable images for the libraries are created. | ||||||
|  | To get a static library make it by typing MMS/MACRO=(NOSHARE=1). | ||||||
|  | On VAX platforms only static libraries can be build. | ||||||
|  |  | ||||||
| @@ -1,64 +1,623 @@ | |||||||
| File: docs/README.WIN32 |  | ||||||
|  |     Mesa/Readme.win32 | ||||||
| Last updated: 21 June 2013 |  | ||||||
|  |     Last Updated: Sunday, September 19th, 1999 - tjump@tertius.com | ||||||
|  |  | ||||||
| Quick Start | *** What's New | ||||||
| ----- ----- |  | ||||||
|  | - Updated for Mesa 3.1beta3/CVS. Debug and Release command-line builds of | ||||||
| Windows drivers are build with SCons.  Makefiles or Visual Studio projects are |   Mesa, fxMesa, GLU, GLUT and all sample programs DLL-based. Manual | ||||||
| no longer shipped or supported. |   executions tests with minimum requisite results (aka: things looked like | ||||||
|  |   I expected them to). | ||||||
| Run |  | ||||||
|  |   What did you expect, complete regression testing maybe? | ||||||
|   scons libgl-gdi |  | ||||||
|  | - NASM build support. Any file in the project coded as a .S file will | ||||||
| to build gallium based GDI driver. |   automatically be recognized and built as a NASM-source assember file. | ||||||
|  |  | ||||||
| This will work both with MSVS or Mingw. |   To enable building using NASM, set the environment variable NASM to | ||||||
|  |   indicate that command to execute to run nasm on a file. If NASM is in | ||||||
|  |   your command search path then all this needs be set to is 'nasmw' - | ||||||
| Windows Drivers |   otherwise you will need to include the complete drive and directory path. | ||||||
| ------- ------- |  | ||||||
|  |   NASM may be retrieved here: http://www.web-sites.co.uk/nasm/ | ||||||
| At this time, only the gallium GDI driver is known to work. |  | ||||||
|  | - DevStudio projects suspended for compatability reasons: projects modified | ||||||
| Source code also exists in the tree for other drivers in |   by DevStudio 6 are not compatible with DevStudio 5. | ||||||
| src/mesa/drivers/windows, but the status of this code is unknown. |  | ||||||
|  |   These will slowly be rebuilt and put into CVS as I can. | ||||||
| Recipe |  | ||||||
| ------ | - Build environment change: The Glide SDK is no longer assumed to be in | ||||||
|  |   the global INCLUDE/LIB environment vars, it is required that you set the | ||||||
| Building on windows requires several open-source packages. These are |   value 'GLIDE2X' as either an environment variable pointing to your Glide | ||||||
| steps that work as of this writing. |   SDK install directory or that you configure that as a build option to | ||||||
|  |   nmake.exe when building fxmesagl32.  Examples: | ||||||
| - install python 2.7 |  | ||||||
| - install scons (latest) |     nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x fxmesagl32 | ||||||
| - install mingw, flex, and bison |  | ||||||
| - install pywin32 from here: http://www.lfd.uci.edu/~gohlke/pythonlibs |           <or> | ||||||
|   get pywin32-218.4.win-amd64-py2.7.exe |  | ||||||
| - install git |     nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x allfx | ||||||
| - download mesa from git |  | ||||||
|   see https://www.mesa3d.org/repository.html |           <or> | ||||||
| - run scons |  | ||||||
|  |     nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x progs.3dfx.demos | ||||||
| General |  | ||||||
| ------- |   The DevStudio workspace files for 3Dfx OpenGL require the definition of | ||||||
|  |   GLIDE2SDK as an environment variable pointing to where your copy of the | ||||||
| After building, you can copy the above DLL files to a place in your |   Glide SDK has been installed. Adding this to your AUTOEXEC.BAT would do | ||||||
| PATH such as $SystemRoot/SYSTEM32.  If you don't like putting things |   so (change the directories to match): | ||||||
| in a system directory, place them in the same directory as the |  | ||||||
| executable(s).  Be careful about accidentially overwriting files of |        SET GLIDE2SDK=G:\SDK\GLIDE2X | ||||||
| the same name in the SYSTEM32 directory. |  | ||||||
|  | *** Legalese | ||||||
| The DLL files are built so that the external entry points use the |  | ||||||
| stdcall calling convention. | These build files are provided as-is and are submitted to be included with | ||||||
|  | the "Mesa 3-D Graphics Library" package as (currently) maintained by Brian | ||||||
| Static LIB files are not built.  The LIB files that are built with are | Paul. These project build files are free software; you can redistribute it | ||||||
| the linker import files associated with the DLL files. | and/or modify it under the terms of the GNU Library General Public License | ||||||
|  | as published by the Free Software Foundation; either version 2 of the | ||||||
| The si-glu sources are used to build the GLU libs.  This was done | License, or (at your option) any later version. | ||||||
| mainly to get the better tessellator code. |  | ||||||
|  | These project files are distributed in the hope that they will be useful, | ||||||
| If you have a Windows-related build problem or question, please post | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
| to the mesa-dev or mesa-users list. | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library | ||||||
|  | General Public License for more details. | ||||||
|  |  | ||||||
|  | You should have received a copy of the GNU Library General Public License | ||||||
|  | along with this library; if not, write to the Free Software Foundation, | ||||||
|  | Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||||
|  |  | ||||||
|  | *** Maintenance Responsiblity and Technical Support | ||||||
|  |  | ||||||
|  | While these files are now part of the Mesa core distribution please do NOT | ||||||
|  | contact Mr. Paul for help with them if you encounter problems as he can't | ||||||
|  | help you (currently).  I will, however, attempt my straightforward best in | ||||||
|  | assisting anyone with using these files on their system.  I can NOT | ||||||
|  | guarantee instant responses owing to other responsiblities, but I do try | ||||||
|  | dang hard to answer any mail w/in 24 hours.  I may be contacted at the | ||||||
|  | above email address for the forseeable future. | ||||||
|  |  | ||||||
|  | -Ted | ||||||
|  | mailto://tjump@tertius.com | ||||||
|  | http://www.tertius.com/tjump | ||||||
|  |  | ||||||
|  | *** General Information | ||||||
|  |  | ||||||
|  | These build files facilitate convenient building of many variants of Mesa, | ||||||
|  | both as static link libraries (including mesaglu) and as dynamic link | ||||||
|  | libraries that in some cases may be used as "drop-in" replacements for | ||||||
|  | OpenGL32.DLL on both Windows95 and Windows NT. | ||||||
|  |  | ||||||
|  | The construction of the Win32 command-line build files and projects has | ||||||
|  | been something of a pet project of mine, and is based upon my own | ||||||
|  | "standard" Win32 build environment as supplied by the "nmake.mif" file. | ||||||
|  | They have been tested under Windows95 OSR2, Windows NT 4.0SP3, and Windows | ||||||
|  | NT 5.0 beta 1.  The libraries that they generated have been tested (via the | ||||||
|  | demo programs) in a *limited* fashion on the above three systems, including | ||||||
|  | the 3Dfx versions. | ||||||
|  |  | ||||||
|  | The reason I went with command-line build environment instead of the more | ||||||
|  | convenient IDE-based project files is for two reasons: 1. These appear to | ||||||
|  | have some amount of portability between versions (the nmake syntax hasn't | ||||||
|  | changed much since Microsoft C 7.0) while the IDE project files seem to | ||||||
|  | change drastically each version. and 2. These are readable with any ascii | ||||||
|  | editor and such are better self-documentation of the file relationships for | ||||||
|  | more people such that it will facilitate supporting other Win32 compilers. | ||||||
|  |  | ||||||
|  | While these files only deal with building for x86 targeted code it *should* | ||||||
|  | be possible to add the necessary logic to them to build for the other MSVC | ||||||
|  | supported CPU targets, I simply have no hardware to test them on nor the | ||||||
|  | alternative compilers to build with. | ||||||
|  |  | ||||||
|  | *** Prerequisites for use | ||||||
|  |  | ||||||
|  | 1. You must have a 32-bit Microsoft compiler installed. I have tested | ||||||
|  | this with Visual C 5.0 (SP3) and Visual C 4.2, but with minor | ||||||
|  | (possibly no) modification to the nmake.mak and nmake.mif files this | ||||||
|  | sequence should work on Visual C 2.0 also. The workspace files | ||||||
|  | (mesalib.dsw and mesademos-*.dsw) and their included project files | ||||||
|  | (*.dsp) are specific to the DevStudio IDE - I have made no attempt at | ||||||
|  | building a VC4 IDE project set as I do not use that any more.  Note | ||||||
|  | that the VC workspace files NO LONGER use NORE are dependant upon the | ||||||
|  | nmake.mak and nmake.mif files for construction of definition (*.DEF) | ||||||
|  | and resource (*.RC) files. | ||||||
|  |  | ||||||
|  | *** Visual C 4.x Users Warning **** | ||||||
|  |  | ||||||
|  | Note that early editions of VC4 do NOT have header files current enough | ||||||
|  | for use building this code base. If you are using VC4 you will either need | ||||||
|  | to get an update to version 4.2 *or* you may download the Platform SDK | ||||||
|  | directly from Microsoft's web site (www.microsoft.com) and update your | ||||||
|  | build environment that way. | ||||||
|  |  | ||||||
|  | *** Visual C 4.x Users Warning **** | ||||||
|  |  | ||||||
|  | 2. You must have the PATH, INCLUDE, and LIB environment variables set | ||||||
|  | properly. With VC5 you can easily get this by executing the VCVARS32.BAT | ||||||
|  | file that was created for you upon installation. It is found in the | ||||||
|  | DevStudio\VC\BIN directory, wherever you installed DevStudio. VC4 provides | ||||||
|  | a similar batch file in it's BIN directory also. | ||||||
|  |  | ||||||
|  | 3. (optional) If you're going to build for 3Dfx/Voodoo you will need to | ||||||
|  | have previously installed the Glide SDK version 2.3 or later, if I | ||||||
|  | recall. This may be retrieved from www.3dfx.com for no money and some | ||||||
|  | download time. ;-) These build files assume that you have the Glide SDK | ||||||
|  | added to the respective environment variables (LIB and INCLUDE). | ||||||
|  |  | ||||||
|  | 4. (optional) If you're going to build for S3/Virge you will need the S3 | ||||||
|  | Developers Toolkit which may be downloaded from www.s3.com for the price of | ||||||
|  | registering on-line and some time. NOTE: I can build the s3mesa.dll file to | ||||||
|  | completion, however the compilation of s3mesa.c currently generates a large | ||||||
|  | amount of compiler warnings and between that and the fact that I can not at | ||||||
|  | all test it I can make no claims to it's ability to execute.  Again, like | ||||||
|  | the 3Dfx version before this, these build files assume you have the S3Dtk H | ||||||
|  | and LIB files in the path of their respective environment variables. | ||||||
|  | Note 2: As of Mesa3.0beta6 I have build files, both command-line and IDE, | ||||||
|  | which should be able to build the s3mesa code base if it weren't for updates | ||||||
|  | being required in the S3 DD code support (Mesa-3.0/src/s3 directory). | ||||||
|  |  | ||||||
|  | I advise putting any include and lib files for secondary toolkits (Glide, | ||||||
|  | S3Tk, whatever) in their respective environment variables *before* the | ||||||
|  | Microsoft-assigned default values. | ||||||
|  |  | ||||||
|  | *** FAQ: Frequenty Asked Questions and Other Important Information *** | ||||||
|  |  | ||||||
|  | - When running the 3Dfx demos under Windows NT, they crash on exit, what's | ||||||
|  |   up? | ||||||
|  |  | ||||||
|  |   This is apparently a problem in Glide itself. The workaround is to go to | ||||||
|  |   your C:\WINNT\SYSTEM32 directory and rename the file FXOEM2X.DLL to | ||||||
|  |   FXOEM2X.DL_ to prevent Glide from loading and initializing it upon | ||||||
|  |   startup.  This is known to be an issue with cards that do not have "TV | ||||||
|  |   out" and is known to cause crashes on Diamond Monster II 8M and 3Dfx | ||||||
|  |   Reference boards, all using 3Dfx Reference Drivers version 2.53. Other | ||||||
|  |   hardware/driver combinations will also likely exhibit this behavior. | ||||||
|  |  | ||||||
|  | - I'm having a problem building Mesa for static library linking. | ||||||
|  |  | ||||||
|  |   This was caused by some incomplete testing on my part, and a fix is now | ||||||
|  |   available in the form of an add-on to the base Mesa 3.0 release.  The | ||||||
|  |   file to get is: | ||||||
|  |  | ||||||
|  |        via FTP download from: iris.ssec.wisc.edu | ||||||
|  |          you want to go here: /pub/Mesa/patches_to_3.0/ | ||||||
|  |         you want to get file: Mesa-3.0-w32-static-fixes.tar.gz | ||||||
|  |  | ||||||
|  |   This required a minor addition to INCLUDE/GL for a clean solution, the | ||||||
|  |   file "include/gl/mesa_wgl.h" is automatically included by | ||||||
|  |   "include/gl/gl.h" when a Win32 non-DLL build is in progress to provide | ||||||
|  |   prototypes for the various wgl functions. | ||||||
|  |  | ||||||
|  |   The only remaining hitch in this setup is that the 3Dfx build is not yet | ||||||
|  |   running as a static build, because of problems with conflicts in | ||||||
|  |   existance of the various GDI functions like ChoosePixelFormat, | ||||||
|  |   etc. *sigh* | ||||||
|  |  | ||||||
|  |   Anyway, the "allstatic" target now works as expected and builds all | ||||||
|  |   book/sample/demos programs to boot. ;^) | ||||||
|  |  | ||||||
|  | - How do I get fxMesa to render in a window on the desktop instead of only | ||||||
|  |   full-screen? | ||||||
|  |  | ||||||
|  |   Use the Microsoft Windows fxMesa-in-a-window hack! | ||||||
|  |  | ||||||
|  |   Seriously, if you want fxMesaGL to render using the 3Dfx Voodoo1 or | ||||||
|  |   Voodoo2 hardware into a window on the desktop then all you need to do is | ||||||
|  |   set the MESA_WGL_FX environment variable to anything other than | ||||||
|  |   "fullscreen" and it will render into a window.  If you wish to go | ||||||
|  |   fullscreen then you only need to NOT have the environment variable, or | ||||||
|  |   have it set to "fullscreen".  You may also switch at runtime between | ||||||
|  |   fullscreen-mode and windowed by pressing ALT-ENTER on the keyboard | ||||||
|  |   (unless the application using Mesa does something with those keystrokes, | ||||||
|  |   of course). | ||||||
|  |  | ||||||
|  |   As of 8/13/98 this should be running a LOT better for more people as a | ||||||
|  |   low-compatability item was cleaned up which prevented it from working on | ||||||
|  |   many (most?) display drivers under Windows 9x. | ||||||
|  |  | ||||||
|  | - I have my 3Dfx card hooked to it's own monitor and I want the output to | ||||||
|  |   stay on even if I switch to another program, is this possible? | ||||||
|  |  | ||||||
|  |   If the Glide environment variable SST_DUALHEAD is set to '1' then fxMesa | ||||||
|  |   will never disable the Voodoo output on a Voodoo1 or Voodoo2 display | ||||||
|  |   regardless of whether the fxMesa application is "current" or not. This | ||||||
|  |   works regardless of whether it's rendering using the window hack | ||||||
|  |   mentioned above or not. | ||||||
|  |  | ||||||
|  | - I want to run the Mesa demos on my Intel740 card using it's own OpenGL | ||||||
|  |   acceleration, how do I do this? | ||||||
|  |  | ||||||
|  |   Build GLUT standalone for use with system OpenGL and GLU drivers! | ||||||
|  |  | ||||||
|  |   The Command-line project supports building all test/demo programs against | ||||||
|  |   these drivers also! This allows you full use of GLUT on Windows using | ||||||
|  |   hardware accelerated OpenGL. Wheee! This includes the "3dfx/demos" | ||||||
|  |   directory of which only two programs will not run on "standard" | ||||||
|  |   opengl. Note that there are a few of the sample programs which will NOT | ||||||
|  |   work without Mesa as they directly call into Mesa instead of using the | ||||||
|  |   extension mechanism. | ||||||
|  |  | ||||||
|  | *** Included programs that exhibit unfortunate or bad behavior | ||||||
|  |  | ||||||
|  | - demos/bounce - doesn't run on high-colors screens?  It's requesting an | ||||||
|  |   INDEX display from GLUT and that fails on my true-color desktop. Changing | ||||||
|  |   this to _RGB let's the program work, but it doesn't display | ||||||
|  |   properly. This is probably just an idiosyncracy of my machine though, as | ||||||
|  |   if I test the program using GLUT for System OpenGL on my Intel740 OpenGL | ||||||
|  |   accelerated machine it's just hunky-dory. | ||||||
|  |  | ||||||
|  | - demos/glutfx - runs, but crashes on exit (but not on my Intel740 machine) | ||||||
|  |  | ||||||
|  | - demos/texobj - runs, but crashes on exit if ESC is pressed. Exits cleanly | ||||||
|  |   if the Close box on the window frame is pressed with the mouse. Go figure. | ||||||
|  |  | ||||||
|  | - book/aaindex - doesn't run, can't get pixel format, because it wants an | ||||||
|  |   INDEX display maybe (but is okay on my Intel740 machine)? | ||||||
|  |  | ||||||
|  | - most of the book/* demos don't respond to ESC being pressed. | ||||||
|  |  | ||||||
|  | - 3dfx/demos/* - all demos run, however they all crash on exit. I've traced | ||||||
|  |   this so far as to determine the call it's happening with. The crash comes | ||||||
|  |   from within Glide during the processing of the grGlideShutdown() call, as | ||||||
|  |   in invalid memory reference exception. I'm wondering if this is because | ||||||
|  |   of some state or processing not being completed before the call. Dunno, | ||||||
|  |   but putting grSstIdle() in just before grGlideShutdown() does NOT fix the | ||||||
|  |   problem. | ||||||
|  |  | ||||||
|  | - 3dfx/demos/tunnel2 - does not run on my system even with SLI mode | ||||||
|  |   disabled. Hmmmm, maybe I need to disconnect my Voodoo2 cards? | ||||||
|  |  | ||||||
|  | *** Important Notes and Changing Default values | ||||||
|  |  | ||||||
|  | - The optimizer settings have been manually reworked in both command line | ||||||
|  |   and DevStudio IDE files to hopefully prevent possible irrational code on | ||||||
|  |   the part of the code generator.  Formerly, it was configured for "/Ox", | ||||||
|  |   now it is configured for safer handling at a slight potential performance | ||||||
|  |   cost. This may not be required for Visual Studio 6 but I can't test that | ||||||
|  |   (yet). | ||||||
|  |  | ||||||
|  | - These files build with the code targeted for Pentium processors and | ||||||
|  |   8-byte structure padding. | ||||||
|  |  | ||||||
|  | - The IDE-built programs seem to be "happier" in that the command line | ||||||
|  |   build of the 3Dfx demo "fire" will grenade on exit (?). Otherwise pretty | ||||||
|  |   much everything may be built with either interface. | ||||||
|  |  | ||||||
|  | - The currently configured Mesa version is 3.1, and MesaDemos version is | ||||||
|  |   the same. To change this permanently you will need to edit NMAKE.MAK and | ||||||
|  |   change the lines that look like this (they start o/a line 116): | ||||||
|  |  | ||||||
|  |     # Currently, Mesa is at rev 3.1 ... | ||||||
|  |     # | ||||||
|  |     !IF "$(MESAVER)" == "" | ||||||
|  |     MESAVER=3.1 | ||||||
|  |     !ENDIF | ||||||
|  |  | ||||||
|  |     # used in building all of the resource files for the Mesa DLLs | ||||||
|  |     # | ||||||
|  |     !IF "$(MESAFILEVER)" == "" | ||||||
|  |     MESAFILEVER=3,1,0,0 | ||||||
|  |     !ENDIF | ||||||
|  |  | ||||||
|  | - Currently the build files are configured to be used from a Win32 | ||||||
|  |   directory that is included inside the main Mesa-3.1 heirarchy. | ||||||
|  |  | ||||||
|  | - The build files are smart enough to find the files for the core lib, glu, | ||||||
|  |   glut, and the various demo programs if they are unpacked in the current | ||||||
|  |   Mesa-3.1 heirarchy, like this: | ||||||
|  |  | ||||||
|  |     \Mesa-3.1 | ||||||
|  |     \Mesa-3.1\src | ||||||
|  |     \Mesa-3.1\src-glu | ||||||
|  |     \Mesa-3.1\src-glut | ||||||
|  |     \Mesa-3.1\Win32 | ||||||
|  |     \Mesa-3.1\samples | ||||||
|  |     \Mesa-3.1\demos | ||||||
|  |     \Mesa-3.1\book | ||||||
|  |     \Mesa-3.1\3Dfx\demos | ||||||
|  |  | ||||||
|  |     ... should work.  This arose because my initial build tests for the | ||||||
|  |     demo files were done before MesaDemos 2.6 had been released. | ||||||
|  |  | ||||||
|  | - With the exception of the static link libraries generated by this file | ||||||
|  |   set (mesagl.lib, mesaglu.lib, mesaglut.lib) all DLLs and executables are | ||||||
|  |   built against the "Multithreaded DLL" runtime - this means that they | ||||||
|  |   require MSVCRT.DLL or MSVCRTD.DLL in the path to execute. | ||||||
|  |  | ||||||
|  |   ** CHANGED 8/11/98 *** | ||||||
|  |  | ||||||
|  |   Note also that the demos are all built aginst the "OpenGL32, GLU32, and | ||||||
|  |   GLUT32" and as such they are fairly agnostic wrt: building against Mesa | ||||||
|  |   for CPU-rendering, Mesa-for-3Dfx, Mesa-for-S3, or System OpenGL. | ||||||
|  |  | ||||||
|  |   If you want to build them for use on your system and your display card | ||||||
|  |   provides full OpenGL acceleration (Permedia, Intel740, Intergraph, | ||||||
|  |   whatever) then you only need to build GLUT prior to building any of the | ||||||
|  |   demo programs. For convenience, the GLUT project is included in each of | ||||||
|  |   the demo projects Workspace files for the DevStudio IDE builds BUT it is | ||||||
|  |   not automatically built - you still need to build it first manually. | ||||||
|  |  | ||||||
|  |   Note that if you have GLUT already installed on your system (gl/glut.h in | ||||||
|  |   yoru INCLUDE path, glut32.lib/glut32d.lib in your LIB path, and the DLL | ||||||
|  |   in your PATH) then you do NOT need to build GLUT prior to the test | ||||||
|  |   programs. | ||||||
|  |  | ||||||
|  | - The 3Dfx build of Mesa has primarily been tested with Quake 2 and it runs | ||||||
|  |   (mostly) fine on my PC (take that for what you want it)... | ||||||
|  |  | ||||||
|  |   ** CHANGED  8/11/98 *** | ||||||
|  |  | ||||||
|  |   There is still something going on that causes Glide to crash on shutdown, | ||||||
|  |   when I run fxMesa under Windows NT, however it does not appear to occur | ||||||
|  |   under Windows 9x on either Voodoo1 or Voodoo2 cards. *sigh* | ||||||
|  |  | ||||||
|  | - I can not test the S3 build as I have no machines available with Virge | ||||||
|  |   based display cards. | ||||||
|  |  | ||||||
|  | - The multithreaded test code is *not* built as it requires pthreads and I | ||||||
|  |   have as of yet spent not time trying to get that running. The latest word | ||||||
|  |   that I saw WRT threading support on win32 was that they are intending to | ||||||
|  |   support it natively within Win32 - so I'm waiting it out until they get | ||||||
|  |   it done. | ||||||
|  |  | ||||||
|  | - Similarly, the 'xdemos' are not currently built because I haven't gotten | ||||||
|  |   around to building the client libs for native win32 and getting it all | ||||||
|  |   setup for use. | ||||||
|  |  | ||||||
|  | *** Output Files | ||||||
|  |  | ||||||
|  | All final output files (DLL/LIB) are placed in the Mesa-3.1/lib directory, | ||||||
|  | with the exception of the fxMesaGL32 build which is placed in | ||||||
|  | Mesa-3./lib/FX and the executable images which are placed in their source | ||||||
|  | directories. | ||||||
|  |  | ||||||
|  | To be able to execute the various test programs, you will need to copy the | ||||||
|  | requisite DLL files into the same directory as the EXE files. Note that | ||||||
|  | most of the 3Dfx/demos/* programs WILL run with the non-FX build of Mesa - | ||||||
|  | just very slowly. The two programs which are hard-linked with the FX build | ||||||
|  | and will not run without it are "glbpaltx" which uses "gl3DfxSetPaletteEXT" | ||||||
|  | directly instead of via the extensions mechanism and "tunnel2" which uses | ||||||
|  | "fxMesaSelectCurrentBoard" API for selecting between multiple 3Dfx cards | ||||||
|  | installed in one system. Likewise, "paltex" directly uses the | ||||||
|  | "glColorTableEXT" extension and thus may not run on anything except | ||||||
|  | Mesa. If these applications used the proper extension mechanism they could | ||||||
|  | then be used on more than "just" fxMesa to good effect (for example, the | ||||||
|  | rest of the "3Dfx/demos" run just peachy on the Intel740 card in my test | ||||||
|  | machine) under WinNT. | ||||||
|  |  | ||||||
|  | Because I'm anal about my computer and it's organization, and I like to | ||||||
|  | prevent collision between builds, each of the subprojects has their own | ||||||
|  | intermediate file directory inside .\win32\release (for example, when | ||||||
|  | building mesagl.lib all of it's intermediate files will be found in | ||||||
|  | .\win32\release\lib.mesagl).  This makes it very easy to cleanup as you | ||||||
|  | only need to remove .\win32\release. | ||||||
|  |  | ||||||
|  | *** Okay, Enough, how do I build with this stuff already Ted! | ||||||
|  |  | ||||||
|  | Okay, no major calamity here. The basic way to use the project file is to | ||||||
|  | call it via NMAKE from the command line. The format is: | ||||||
|  |  | ||||||
|  |     nmake[.exe] /f nmake.mak [options] [target] | ||||||
|  |  | ||||||
|  | The most likely [options] values you will use may be any combination of the | ||||||
|  | following: | ||||||
|  |  | ||||||
|  |     DEBUG=1 or DEBUG=0 | ||||||
|  |     USE_CRTDLL=1 or USE_CRTDLL=0 | ||||||
|  |  | ||||||
|  |     Note that all three of these options are OFF by default. | ||||||
|  |  | ||||||
|  | The [target] includes but is not limited to the following (for full details | ||||||
|  | please peruse the NMAKE.MAK and NMAKE.MIF files - but be warned that | ||||||
|  | NMAKE.MIF is rather large and sometimes hard to follow): | ||||||
|  |  | ||||||
|  |     --- convenience targets --- | ||||||
|  |  | ||||||
|  |     all                 - builds everything | ||||||
|  |     libfiles            - builds all linking library files | ||||||
|  |     progs               - builds all executable images | ||||||
|  |  | ||||||
|  |     --- library files, static and dynamic --- | ||||||
|  |  | ||||||
|  |     mesagl              - static lib build of Mesa core. | ||||||
|  |     mesaglu             - static lib build of MesaGLU core. | ||||||
|  |     mesaglut            - static lib build of Mesa GLUT core. | ||||||
|  |  | ||||||
|  |     mesagl32            - dynamic lib build of Mesa core. | ||||||
|  |  | ||||||
|  |     mesaglu32           - dynamic lib build of GLU core, generates | ||||||
|  |                           GLU32.DLL and/or GLU32d.DLL. | ||||||
|  |  | ||||||
|  |     mesaglut32          - dynamic lib build of GLUT core, generates | ||||||
|  |                           GLUT32.DLL and/or GLUT32d.dll. | ||||||
|  |  | ||||||
|  |     --- hardware accelerated mesa builds --- | ||||||
|  |  | ||||||
|  |     fxmesagl32          - builds Mesa for use on top of the 3Dfx | ||||||
|  |                           Glide runtime libs | ||||||
|  |  | ||||||
|  |     s3mesagl32          - builds mesa for use on top of the S3 | ||||||
|  |                           'S3Tk' runtime libs. | ||||||
|  |  | ||||||
|  |     --- executable images --- | ||||||
|  |  | ||||||
|  |     progs.book          - builds all programs in \book directory | ||||||
|  |     progs.demos         - builds all programs in \demos directory | ||||||
|  |     progs.samples       - builds all programs in \samples directory | ||||||
|  |  | ||||||
|  |         These targets generate all of the programs in their respective | ||||||
|  |         directories and link the executables against OpenGL32.DLL, | ||||||
|  |         GLU32.DLL, and GLUT32.DLL (or their debug equivalents). | ||||||
|  |  | ||||||
|  |     progs.3dfx.demos    - builds all programs in \3dfx\demos directory | ||||||
|  |  | ||||||
|  |         This target generates the 3Dfx/Demo executables, linking them | ||||||
|  |         against GLUT32.DLL, GLU32.DLL, OPENGL32.DLL and are thus NOT | ||||||
|  |         hard-bound to using Mesa per-se as you can simply NOT build the | ||||||
|  |         Mesa core and GLU libraries. | ||||||
|  |  | ||||||
|  |    --- Microsoft/SGI OpenGL-based GLUT and Demo program builds ---- | ||||||
|  |  | ||||||
|  |    *** IMPORTANT SAFETY TIP: If you're going to build these variants of | ||||||
|  |        GLUT then DO NOT build any other target libraries in this package | ||||||
|  |        first, OR from the command line run the "nmake /f nmake.mak clean" | ||||||
|  |        command first!  This is because generation of the GLUT for SGI | ||||||
|  |        OpenGL target libraries conflicts in naming with the static build | ||||||
|  |        libraries of Mesa and it's supporting GLUT build. | ||||||
|  |  | ||||||
|  |    Currently, you may build GLUT as either GLUT32.DLL or GLUT.DLL for | ||||||
|  |    use running against either Microsoft or SGI OpenGL for Window, | ||||||
|  |    respectively.  This allows for the general use of GLUT 3.7 on Windows | ||||||
|  |    systems with fully compliant OpenGL. | ||||||
|  |  | ||||||
|  |    You can build the GLUT DLL files either with the command line by | ||||||
|  |    issuing either of these commands: | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak glut.sysgl | ||||||
|  |  | ||||||
|  |         <or> | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak glut.sgigl | ||||||
|  |  | ||||||
|  |    OR by using the DevStudio MesaLib Worksapce build the GLUT_SGIGL or | ||||||
|  |    GLUT_SYSGL projects within the DevStudio IDE. | ||||||
|  |  | ||||||
|  |    Unfortunately, the only way to build the test programs against this | ||||||
|  |    build of GLUT is via the command line, and I will NOT be making | ||||||
|  |    duplicate demo program projects for the IDE as it's just not worth it, | ||||||
|  |    sorry. | ||||||
|  |  | ||||||
|  |    To build the test programs against either MS or SGI OpenGL, you do so | ||||||
|  |    via either of these two commands: | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak progs.sysgl | ||||||
|  |  | ||||||
|  |         <or> | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak progs.sgigl | ||||||
|  |  | ||||||
|  |    To use the GLUT-for-system-OpenGL in your own programs, you need to do | ||||||
|  |    three things by way of preparation, after building GLUT of course: | ||||||
|  |  | ||||||
|  |          1. Copy include\gl\glut.h to somewhere in your %INCLUDE% path, one | ||||||
|  |             likely candidate location would be in your | ||||||
|  |             "DevStudio\VC\INCLUDE\GL" directory. | ||||||
|  |  | ||||||
|  |          2. Copy the linking libraries to somewhere in your %LIB% path, one | ||||||
|  |             likely candidate location would be in your "DevStudio\VC\LIB" | ||||||
|  |             directory. The linking libraries you need to copy are as | ||||||
|  |             follows: | ||||||
|  |  | ||||||
|  |                 .\Release\GLUT32.LIB | ||||||
|  |                 .\Release\GLUT.LIB | ||||||
|  |                 .\Debug\GLUT32.LIB | ||||||
|  |                 .\Debug\GLUT.LIB | ||||||
|  |  | ||||||
|  |         3. Copy the runtime libraries to somewhere in your %PATH%, one | ||||||
|  |            likely candidate location would be in WINDOWS\SYSTEM. the files | ||||||
|  |            that you should copy are as follows: | ||||||
|  |  | ||||||
|  |                 .\Release\GLUT32.DLL | ||||||
|  |                 .\Release\GLUT32.PDB | ||||||
|  |                 .\Release\GLUT.DLL | ||||||
|  |                 .\Release\GLUT.PDB | ||||||
|  |                 .\Debug\GLUT32d.DLL | ||||||
|  |                 .\Debug\GLUT32d.PDB | ||||||
|  |                 .\Debug\GLUTd.DLL | ||||||
|  |                 .\Debug\GLUTd.PDB | ||||||
|  |  | ||||||
|  | Some examples are in order ... | ||||||
|  |  | ||||||
|  |     ... build all dynamic-link libs using MSVCRT.DLL for C runtime: | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak USE_CRTDLL=1 alldynamic | ||||||
|  |  | ||||||
|  |     ... To build all library variants and all test and demonstration | ||||||
|  |         programs with the default settings you do this: | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak all | ||||||
|  |  | ||||||
|  |     ... to build all static link libs and nothing else you do this: | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak allstatic | ||||||
|  |  | ||||||
|  |     ... to build all non-accelerated dynamic link libs you do this: | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak alldynamic | ||||||
|  |  | ||||||
|  |     ... to build all 3Dfx targeted dynamic link libs you do this: | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak allaccel | ||||||
|  |  | ||||||
|  |     ... to build all S3 Virge targetd dynamic link libs you do this: | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak alls3 | ||||||
|  |  | ||||||
|  |     ... to build all libraries, static and dynamic, in all versions | ||||||
|  |         you do this: | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak libfiles | ||||||
|  |  | ||||||
|  |     ... to subsequently build all demo and test programs you do this: | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak progs | ||||||
|  |  | ||||||
|  |     ... to cleanup all intermediate files you do this: | ||||||
|  |  | ||||||
|  |         nmake /f clean | ||||||
|  |  | ||||||
|  | You get the picture. (I hope) ;^)  You may also specify specify | ||||||
|  | single targets in a convenient fashion. The rule is simple, any of the | ||||||
|  | above named lib files, static or dynamic, may be built by providing it's | ||||||
|  | name on the command line as the target. Examples: | ||||||
|  |  | ||||||
|  |     ... to build only Mesa as OpenGL32.DLL ... | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak opengl32 | ||||||
|  |  | ||||||
|  |     ... to build only Mesa on top of the 3Dfx Glide API ... | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak fxMesaGL32 | ||||||
|  |               <or> | ||||||
|  |         nmake /f nmake.mak fxMesaGL | ||||||
|  |  | ||||||
|  |     ... to build only Mesa on top of the S3 Toolkit ... | ||||||
|  |  | ||||||
|  |         nmake /f nmake.mak s3MesaGL32 | ||||||
|  |               <or> | ||||||
|  |         nmake /f nmake.mak s3mesaGL | ||||||
|  |  | ||||||
|  | *** Revision history for ./win32 project files | ||||||
|  |  | ||||||
|  | 1/18/98 - initial cut submitted and included with core mesa | ||||||
|  | 2/5/98  - fixed internal dependency within nmake.mif upon there being | ||||||
|  |           a $(DEVDIR) variable to make some temporary batch files | ||||||
|  |           dependant upon (thanks to Keven T. McDonnell for finding | ||||||
|  |           that there was this particular bug). I also updated the | ||||||
|  |           build files for 2.6beta6. | ||||||
|  | 2/8/98  - added DevStudio workspace and project files for all lib | ||||||
|  |           files and some test programs. Updated readme.win32. | ||||||
|  | 6/25/98 - initial revision for Mesa 3.0, does not include IDE files, | ||||||
|  |           not everything is running. *sigh* | ||||||
|  | 7/20/98 - Mesa 3.0beta6 rev of all build files, all libs built and | ||||||
|  |           minimally tested, all demo programs built and minimally | ||||||
|  |           tested to within limits of my PC. ;^) Eveything looks | ||||||
|  |           MUCH better now ... | ||||||
|  | 7/30/98 - Minor updates/edits based upon feedback from | ||||||
|  |           Eero Pajarre <epajarre@koti.tpo.fi>. These updates include a fix | ||||||
|  |           to the Mesa-on-3Dfx build such that Quake-II now runs almost | ||||||
|  |           properly on my system. It runs, just *very* slowly and with *no* | ||||||
|  |           textures. Hmmm. Doesn't make any difference whether Quake is set | ||||||
|  |           to use 8-bit textures or not. | ||||||
|  | 8/13/98 - Lots of build cleanups, minor bug fixes in fxwgl.c, and | ||||||
|  |           compatability fix in fxapi.c for in-window rendering using 3Dfx | ||||||
|  |           hardware. | ||||||
|  | 8/26/98 - Final revisions for Mesa 3 release checked | ||||||
|  | 9/22/98 - Fixed static builds for all but fxMesaGL32 and s3MesaGL32 targets | ||||||
|  | 9/29/98 - Reorganized FAQ information and added Added faq entry about Glide | ||||||
|  |           bug under NT (crash on exit) and a workaround. | ||||||
|  | 11/21/98 - Updated files for Mesa 3.1 beta 1 | ||||||
|  |            Updated fxMesa window-hack code | ||||||
|  |            Updated fxMesa resolution support to handle 1600x1200 & 1280x1024 | ||||||
|  | 7/9/99  - Rev'd for Mesa 3.1 beta 2 | ||||||
							
								
								
									
										326
									
								
								docs/README.X11
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										326
									
								
								docs/README.X11
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,326 @@ | |||||||
|  |  | ||||||
|  |                          Mesa 3.2 Unix/X11 Information | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Installation | ||||||
|  | ============ | ||||||
|  |  | ||||||
|  | There are two ways to compile Mesa on Unix/X11 systems: | ||||||
|  |  | ||||||
|  | 1. The old way: | ||||||
|  |     First type 'make' alone to see the list of system | ||||||
|  |     configurations currently supported.  If you see your configuration on the | ||||||
|  |     list, type 'make <config>'.  Most popular Unix/X workstations are currently | ||||||
|  |     supported. | ||||||
|  |  | ||||||
|  |     If your system configuration is not listed by 'make', you'll have to modify | ||||||
|  |     the top-level Makefile and Make-config files.  There are instructions in | ||||||
|  |     each file. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 2. The new way: | ||||||
|  |     Type './configure' and then 'make'.  This uses GNU autoconfig. | ||||||
|  |     See docs/INSTALL for more details. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | The top-level makefile will execute the makefiles in a number of sub- | ||||||
|  | directories.  When finished, the Mesa libraries will be in the Mesa-3.2/lib/ | ||||||
|  | directory.  A few GLUT demos in the demos/ directory should be ready to run. | ||||||
|  |  | ||||||
|  | If you also downloaded and unpacked the demos there should be executables | ||||||
|  | in the "xdemos/", "samples/", and "book/" directories for you to try out. | ||||||
|  |  | ||||||
|  | If you have compilation problems you should try to fix them and return the | ||||||
|  | patches to the author. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Notes on assembly language optimizations: | ||||||
|  |  | ||||||
|  |    When using the old-style Makefiles, you can specify a configuration | ||||||
|  |    that uses X86 assembly language optimizations (linux-3dnow for example). | ||||||
|  |  | ||||||
|  |    The detection of MMX, 3DNow!, PIII/SSE, etc capability is done at | ||||||
|  |    runtime.  That means you can compile Mesa for 3DNow! optimizations | ||||||
|  |    even if you don't have an AMD CPU. | ||||||
|  |  | ||||||
|  |    However, your Linux binutils and assembler must understand the | ||||||
|  |    special instructions in order to compile them.  If you have | ||||||
|  |    compilation problems, try upgrading your binutils. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Header and library files: | ||||||
|  |    After you've compiled Mesa and tried the demos I recommend the following | ||||||
|  |    procedure for "installing" Mesa. | ||||||
|  |  | ||||||
|  |    Copy the Mesa include/GL directory to /usr/local/include: | ||||||
|  | 	cp -r include/GL /usr/local/include | ||||||
|  |  | ||||||
|  |    Copy the Mesa library files to /usr/local/lib: | ||||||
|  | 	cp lib/* /usr/local/lib | ||||||
|  |  | ||||||
|  | 	(actually, use "cp -d" on Linux to preserve symbolic links) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Xt/Motif widgets: | ||||||
|  |    If you want to use Mesa or OpenGL in your Xt/Motif program you can build | ||||||
|  |    the widgets found in either the widgets-mesa or widgets-sgi directories. | ||||||
|  |    The former were written for Mesa and the later are the original SGI | ||||||
|  |    widgets.  Look in those directories for more information. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Notes: | ||||||
|  |    HP users:  a Mesa user reports that the HP-UX 10.01 C compiler has | ||||||
|  |    a bug which effects glReadPixels.  A patch for the compiler (PHSS_5743) is | ||||||
|  |    available.  Otherwise be sure your compiler is version 10.13 or later. | ||||||
|  |  | ||||||
|  |    QNX users:  if you have problems running the demos try setting the | ||||||
|  |    stack size to 200K or larger with -N200K, for example. | ||||||
|  |  | ||||||
|  |    SunOS 5.x users:  The X shared memory extension may not work | ||||||
|  |    correctly.  If Mesa prints an error message to the effect of "Shared memory | ||||||
|  |    error" then you'll have to append the following three lines to the end of | ||||||
|  |    your /etc/system file then reboot: | ||||||
|  |       set shmsys:shminfo_shmmax = 0x2000000 | ||||||
|  |       set shmsys:shminfo_shmmni = 0x1000 | ||||||
|  |       set shmsys:shminfo_shmseg = 0x100 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Using the library | ||||||
|  | ================= | ||||||
|  |  | ||||||
|  | Configuration options: | ||||||
|  |    The file src/config.h has many parameters which you can adjust such | ||||||
|  |    as maximum number of lights, clipping planes, maximum texture size, | ||||||
|  |    etc.  In particular, you may want to change DEPTH_BITS from 16 to 32 | ||||||
|  |    if a 16-bit depth buffer isn't precise enough for your application. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Shared libraries: | ||||||
|  |    If you compile shared libraries you may have to set an environment | ||||||
|  |    variable to specify where the Mesa libraries are located.  On Linux and | ||||||
|  |    Sun systems for example, set the LD_LIBRARY_PATH variable to include | ||||||
|  |    /your-dir/Mesa-2.6/lib.   Otherwise, when you try to run a demo it | ||||||
|  |    may fail with a message saying that one or more libraries couldn't be | ||||||
|  |    found. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Remote display of OpenGL/GLX programs: | ||||||
|  |    As of version 1.2.3, Mesa's header files use the same GLenum and GLUenum | ||||||
|  |    values as SGI's (and most/all other vendor's) OpenGL headers.  This means | ||||||
|  |    you can freely mix object files compiled with OpenGL or Mesa headers. | ||||||
|  |    In fact, on systems with dynamic runtime linkers it's possible to dynam- | ||||||
|  |    ically link with Mesa or OpenGL shared libraries at runtime, without | ||||||
|  |    recompiling or relinking anything! | ||||||
|  |  | ||||||
|  |    Using IRIX 5.x as an example, you can run SGI's OpenGL demos with the | ||||||
|  |    Mesa shared libraries as follows.  Let's assume you're installing Mesa | ||||||
|  |    in /usr/local/Mesa and using the C-shell: | ||||||
|  |        % cd /usr/local/Mesa | ||||||
|  |        % make irix5-dso | ||||||
|  |        % setenv _RLD_LIST "/usr/local/Mesa/lib/libGL.so:DEFAULT" | ||||||
|  |        % /usr/demos/bin/ideas_ogl      // this is a test | ||||||
|  |  | ||||||
|  |    You can now run OpenGL executables on almost any X display!  There may | ||||||
|  |    be some problems from the fact that Mesa supports many X visual types | ||||||
|  |    that an OpenGL client may not expect (grayscale for example).  In this | ||||||
|  |    case the application may abort, print error messages, or just behave | ||||||
|  |    strangely.  You may have to experiment with the MESA_RGB_VISUAL envi- | ||||||
|  |    ronment variable. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Xt/Motif Widgets: | ||||||
|  |    Two versions of the Xt/Motif OpenGL drawing area widgets are included: | ||||||
|  |  | ||||||
|  |       widgets-sgi/	SGI's stock widgets | ||||||
|  |       widgets-mesa/	Mesa-tuned widgets | ||||||
|  |  | ||||||
|  |    Look in those directories for details | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Togl: | ||||||
|  |    Togl is an OpenGL/Mesa widget for Tcl/Tk. | ||||||
|  |    See http://togl.sourceforge.net for more information. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | X Display Modes: | ||||||
|  |    Mesa supports RGB(A) rendering into almost any X visual type and depth. | ||||||
|  |  | ||||||
|  |    The glXChooseVisual function tries its best to pick an appropriate visual | ||||||
|  |    for the given attribute list.  However, if this doesn't suit your needs | ||||||
|  |    you can force Mesa to use any X visual you want (any supported by your | ||||||
|  |    X server that is) by setting the MESA_RGB_VISUAL and MESA_CI_VISUAL | ||||||
|  |    environment variables.  When an RGB visual is requested, glXChooseVisual | ||||||
|  |    will first look if the MESA_RGB_VISUAL variable is defined.  If so, it | ||||||
|  |    will try to use the specified visual.  Similarly, when a color index | ||||||
|  |    visual is requested, glXChooseVisual will look for the MESA_CI_VISUAL | ||||||
|  |    variable. | ||||||
|  |  | ||||||
|  |    The format of accepted values is:  <visual-class> <depth> | ||||||
|  |    Here are some examples: | ||||||
|  |  | ||||||
|  |    using the C-shell: | ||||||
|  | 	% setenv MESA_RGB_VISUAL "TrueColor 8"		// 8-bit TrueColor | ||||||
|  | 	% setenv MESA_CI_VISUAL "PseudoColor 12"	// 12-bit PseudoColor | ||||||
|  | 	% setenv MESA_RGB_VISUAL "PseudoColor 8"	// 8-bit PseudoColor | ||||||
|  |  | ||||||
|  |    using the KornShell: | ||||||
|  | 	$ export MESA_RGB_VISUAL="TrueColor 8" | ||||||
|  | 	$ export MESA_CI_VISUAL="PseudoColor 12" | ||||||
|  | 	$ export MESA_RGB_VISUAL="PseudoColor 8" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Double buffering: | ||||||
|  |    Mesa can use either an X Pixmap or XImage as the backbuffer when in | ||||||
|  |    double buffer mode.  Using GLX, the default is to use an XImage.  The | ||||||
|  |    MESA_BACK_BUFFER environment variable can override this.  The valid | ||||||
|  |    values for MESA_BACK_BUFFER are:  Pixmap and XImage (only the first | ||||||
|  |    letter is checked, case doesn't matter). | ||||||
|  |  | ||||||
|  |    A pixmap is faster when drawing simple lines and polygons while an | ||||||
|  |    XImage is faster when Mesa has to do pixel-by-pixel rendering.  If you | ||||||
|  |    need depth buffering the XImage will almost surely be faster.  Exper- | ||||||
|  |    iment with the MESA_BACK_BUFFER variable to see which is faster for | ||||||
|  |    your application.   | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Colormaps: | ||||||
|  |    When using Mesa directly or with GLX, it's up to the application writer | ||||||
|  |    to create a window with an appropriate colormap.  The aux, tk, and GLUT | ||||||
|  |    toolkits try to minimize colormap "flashing" by sharing colormaps when | ||||||
|  |    possible.  Specifically, if the visual and depth of the window matches | ||||||
|  |    that of the root window, the root window's colormap will be shared by | ||||||
|  |    the Mesa window.  Otherwise, a new, private colormap will be allocated. | ||||||
|  |  | ||||||
|  |    When sharing the root colormap, Mesa may be unable to allocate the colors | ||||||
|  |    it needs, resulting in poor color quality.  This can happen when a | ||||||
|  |    large number of colorcells in the root colormap are already allocated. | ||||||
|  |    To prevent colormap sharing in aux, tk and GLUT, define the environment | ||||||
|  |    variable MESA_PRIVATE_CMAP.  The value isn't significant. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Gamma correction: | ||||||
|  |    To compensate for the nonlinear relationship between pixel values | ||||||
|  |    and displayed intensities, there is a gamma correction feature in | ||||||
|  |    Mesa.  Some systems, such as Silicon Graphics, support gamma | ||||||
|  |    correction in hardware (man gamma) so you won't need to use Mesa's | ||||||
|  |    gamma facility.  Other systems, however, may need gamma adjustment | ||||||
|  |    to produce images which look correct.  If in the past you thought | ||||||
|  |    Mesa's images were too dim, read on. | ||||||
|  |  | ||||||
|  |    Gamma correction is controlled with the MESA_GAMMA environment | ||||||
|  |    variable.  Its value is of the form "Gr Gg Gb" or just "G" where | ||||||
|  |    Gr is the red gamma value, Gg is the green gamma value, Gb is the | ||||||
|  |    blue gamma value and G is one gamma value to use for all three | ||||||
|  |    channels.  Each value is a positive real number typically in the | ||||||
|  |    range 1.0 to 2.5.  The defaults are all 1.0, effectively disabling | ||||||
|  |    gamma correction.  Examples using csh: | ||||||
|  |  | ||||||
|  | 	% setenv MESA_GAMMA "2.3 2.2 2.4"	// separate R,G,B values | ||||||
|  | 	% setenv MESA_GAMMA "2.0"		// same gamma for R,G,B | ||||||
|  |  | ||||||
|  |    The demos/gamma.c program may help you to determine reasonable gamma | ||||||
|  |    value for your display.  With correct gamma values, the color intensities | ||||||
|  |    displayed in the top row (drawn by dithering) should nearly match those | ||||||
|  |    in the bottom row (drawn as grays). | ||||||
|  |  | ||||||
|  |    Alex De Bruyn reports that gamma values of 1.6, 1.6 and 1.9 work well | ||||||
|  |    on HP displays using the HP-ColorRecovery technology. | ||||||
|  |  | ||||||
|  |    Mesa implements gamma correction with a lookup table which translates | ||||||
|  |    a "linear" pixel value to a gamma-corrected pixel value.  There is a | ||||||
|  |    small performance penalty.  Gamma correction only works in RGB mode. | ||||||
|  |    Also be aware that pixel values read back from the frame buffer will | ||||||
|  |    not be "un-corrected" so glReadPixels may not return the same data | ||||||
|  |    drawn with glDrawPixels. | ||||||
|  |  | ||||||
|  |    For more information about gamma correction see: | ||||||
|  |    http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Overlay Planes | ||||||
|  |  | ||||||
|  |    Overlay planes in the frame buffer are supported by Mesa but require | ||||||
|  |    hardware and X server support.  To determine if your X server has | ||||||
|  |    overlay support you can test for the SERVER_OVERLAY_VISUALS property: | ||||||
|  |  | ||||||
|  | 	xprop -root | grep SERVER_OVERLAY_VISUALS | ||||||
|  |  | ||||||
|  |  | ||||||
|  | HPCR glClear(GL_COLOR_BUFFER_BIT) dithering | ||||||
|  |  | ||||||
|  |    If you set the MESA_HPCR_CLEAR environment variable then dithering | ||||||
|  |    will be used when clearing the color buffer.  This is only applicable | ||||||
|  |    to HP systems with the HPCR (Color Recovery) system. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Extensions: | ||||||
|  |    The following OpenGL GLX extensions are currently implemented: | ||||||
|  |  | ||||||
|  |       GLX_EXT_visual_info - GLX visual and transparent pixel extension | ||||||
|  |       GLX_EXT_visual_rating - GLX visual caveats | ||||||
|  |  | ||||||
|  |    For detailed information about the extensions see www.opengl.org | ||||||
|  |  | ||||||
|  |    There are four Mesa-specific GL/GLX extensions at this time. | ||||||
|  |  | ||||||
|  |    GLX_MESA_pixmap_colormap  | ||||||
|  |  | ||||||
|  |       This extension adds the GLX function: | ||||||
|  |  | ||||||
|  |          GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual, | ||||||
|  |                                            Pixmap pixmap, Colormap cmap ) | ||||||
|  |  | ||||||
|  |       It is an alternative to the standard glXCreateGLXPixmap() function. | ||||||
|  |       Since Mesa supports RGB rendering into any X visual, not just True- | ||||||
|  |       Color or DirectColor, Mesa needs colormap information to convert RGB | ||||||
|  |       values into pixel values.  An X window carries this information but a | ||||||
|  |       pixmap does not.  This function associates a colormap to a GLX pixmap. | ||||||
|  |       See the xdemos/glxpixmap.c file for an example of how to use this | ||||||
|  |       extension. | ||||||
|  |  | ||||||
|  |    GLX_MESA_release_buffers | ||||||
|  |  | ||||||
|  |       Mesa associates a set of ancillary (depth, accumulation, stencil and | ||||||
|  |       alpha) buffers with each X window it draws into.  These ancillary | ||||||
|  |       buffers are allocated for each X window the first time the X window | ||||||
|  |       is passed to glXMakeCurrent().  Mesa, however, can't detect when an | ||||||
|  |       X window has been destroyed in order to free the ancillary buffers. | ||||||
|  |  | ||||||
|  |       The best it can do is to check for recently destroyed windows whenever | ||||||
|  |       the client calls the glXCreateContext() or glXDestroyContext() | ||||||
|  |       functions.  This may not be sufficient in all situations though. | ||||||
|  |  | ||||||
|  |       The GLX_MESA_release_buffers extension allows a client to explicitly | ||||||
|  |       deallocate the ancillary buffers by calling glxReleaseBuffersMESA() | ||||||
|  |       just before an X window is destroyed.  For example: | ||||||
|  |  | ||||||
|  |          #ifdef GLX_MESA_release_buffers | ||||||
|  |             glXReleaseBuffersMESA( dpy, window ); | ||||||
|  |          #endif | ||||||
|  |          XDestroyWindow( dpy, window ); | ||||||
|  |  | ||||||
|  |       This extension is new in Mesa 2.0. | ||||||
|  |  | ||||||
|  |    GLX_MESA_copy_sub_buffer | ||||||
|  |  | ||||||
|  |       This extension adds the glXCopySubBufferMESA() function.  It works | ||||||
|  |       like glXSwapBuffers() but only copies a sub-region of the window | ||||||
|  |       instead of the whole window. | ||||||
|  |  | ||||||
|  |       This extension is new in Mesa version 2.6 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Summary of X-related environment variables: | ||||||
|  |    MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode (X only) | ||||||
|  |    MESA_CI_VISUAL - specifies the X visual and depth for CI mode (X only) | ||||||
|  |    MESA_BACK_BUFFER - specifies how to implement the back color buffer (X only) | ||||||
|  |    MESA_PRIVATE_CMAP - force aux/tk libraries to use private colormaps (X only) | ||||||
|  |    MESA_GAMMA - gamma correction coefficients (X only) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ---------------------------------------------------------------------- | ||||||
|  | $Id: README.X11,v 3.3.2.4 2000/04/04 15:13:41 brianp Exp $ | ||||||
							
								
								
									
										146
									
								
								docs/RELNOTES-3.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								docs/RELNOTES-3.1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,146 @@ | |||||||
|  |  | ||||||
|  |                          Mesa 3.1 release notes | ||||||
|  |  | ||||||
|  |                              PLEASE READ!!!! | ||||||
|  |  | ||||||
|  |  | ||||||
|  | New copyright | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | Mesa 3.1 will be distributed under an XFree86-style copyright instead | ||||||
|  | of the GNU LGPL. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | New directories | ||||||
|  | --------------- | ||||||
|  |  | ||||||
|  | All documentation files are now in the docs/ directory. | ||||||
|  | All shell scripts are now in the bin/ directory. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | New library names | ||||||
|  | ----------------- | ||||||
|  |  | ||||||
|  | Formerly, the main Mesa library was named libMesaGL.so (or libMesaGL.a) | ||||||
|  | and the GLU library was named libMesaGLU.so (or libMesaGLU.a). | ||||||
|  |  | ||||||
|  | Now, the main library is named libGL.so (or libGL.a) and the GLU library | ||||||
|  | is named libGLU.so (or libGLU.a). | ||||||
|  |  | ||||||
|  | The change allows Mesa to be more easily substituted for OpenGL. | ||||||
|  | Specifically, the linker/loader on some Unix-like systems won't | ||||||
|  | allow libMesaGL.so to be used instead of libGL.so if the application | ||||||
|  | was linked with the former. | ||||||
|  |  | ||||||
|  | Warning: if you have another OpenGL implementation installed on your | ||||||
|  | system (i.e. you have another OpenGL libGL.so) you'll have to be | ||||||
|  | carefull about which library (OpenGL or Mesa) you link against.  Be | ||||||
|  | aware of -L linker flags and the value of the LD_LIBRARY_PATH environment | ||||||
|  | variable. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | New library versioning | ||||||
|  | ---------------------- | ||||||
|  |  | ||||||
|  | Previously, the Mesa GL library was named libMesaGL.so.3.0 | ||||||
|  | To better support Linux/OpenGL standards, the Mesa GL library is now | ||||||
|  | named libGL.so.1.2.030100  This indicates version 1.2 of the OpenGL spec | ||||||
|  | and Mesa implementation 3.1.0 | ||||||
|  |  | ||||||
|  | In the long term this will allow better interoperability with other | ||||||
|  | OpenGL implementations, especially on Linux.  In the short term, | ||||||
|  | OpenGL apps may have to be relinked to use the new library naming. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | New makefiles | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | The old Makefiles found in the various directories have been renamed | ||||||
|  | to Makefile.X11 in order to prevent filename collisions with autoconfig- | ||||||
|  | generated Makefiles. | ||||||
|  |  | ||||||
|  | The top-level Makefile simply includes Makefile.X11 | ||||||
|  | If your top-level Makefile get's overwritten/destroyed you can restore | ||||||
|  | it by copying Makefile.X11 to Makefile | ||||||
|  |  | ||||||
|  |  | ||||||
|  | New extensions | ||||||
|  | -------------- | ||||||
|  |  | ||||||
|  | GL_EXT_stencil_wrap | ||||||
|  | 	Implements two new stencil operations: GL_INCR_WRAP_EXT and | ||||||
|  | 	GL_DECR_WRAP_EXT which allow stencil increment and decrement | ||||||
|  | 	without clamping. | ||||||
|  |  | ||||||
|  | GL_INGR_blend_func_separate | ||||||
|  | 	Allows specification of blend factors for RGB and Alpha independently. | ||||||
|  | 	(INGR = Intergraph) | ||||||
|  |  | ||||||
|  | GL_ARB_multitexture | ||||||
|  | 	Multiple simultaneous textures.  (ARB = Architecture Review Board) | ||||||
|  |  | ||||||
|  | GL_NV_texgen_reflection | ||||||
|  | 	nVidia texgen extension for better reflection mapping. | ||||||
|  |  | ||||||
|  | GL_PGI_misc_hints | ||||||
|  | 	Assorted transformation hints. | ||||||
|  |  | ||||||
|  | GL_EXT_compiled_vertex_array | ||||||
|  | 	Compiled vertex arrays. | ||||||
|  |  | ||||||
|  | GL_EXT_clip_volume_hint | ||||||
|  | 	Allows one to disable clip volume (frustum) testing. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Extensions removed | ||||||
|  | ------------------ | ||||||
|  |  | ||||||
|  | GL_EXT_multitexture - obsolete in favor of GL_ARB_multitexture | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Config file | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | By default, /etc/mesa.conf will be read when Mesa starts.  This | ||||||
|  | file controls default hints, enable/disable of extensions, and | ||||||
|  | more.  See the CONFIG file for documentation. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Optimizations | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | Keith Whitwell has contributed significant optimizations to Mesa's | ||||||
|  | vertex transformation code.  Basically, the whole transformation | ||||||
|  | stage of Mesa has been rewritten. | ||||||
|  |  | ||||||
|  | It's impossible to give a speedup factor.  You'll just have to | ||||||
|  | try your app and see how it performs. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Device Driver changes | ||||||
|  | --------------------- | ||||||
|  |  | ||||||
|  | A bunch of new device driver functions have been added.  See src/dd.h | ||||||
|  | Keith Harrison contributed many of them.  I've been planning on adding | ||||||
|  | a bunch of functions like these to make writing hardware drivers easier. | ||||||
|  | More such function will probably be added in the near future. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Miscellaneous | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | util/glstate.c has some handy functions for debugging.  Basically, it | ||||||
|  | offers a simple function for printing GL state variables.  It's not | ||||||
|  | finished yet.  There's a LOT more GLenum records to be added (see the | ||||||
|  | code).  Anyone want to help? | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ---------------------------------------------------------------------- | ||||||
|  | $Id: RELNOTES-3.1,v 1.1.2.1 2000/02/22 17:56:56 brianp Exp $ | ||||||
							
								
								
									
										12
									
								
								docs/RELNOTES-3.2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								docs/RELNOTES-3.2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  |  | ||||||
|  |                          Mesa 3.2 release notes | ||||||
|  |  | ||||||
|  |                              PLEASE READ!!!! | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Mesa 3.2 is a stabilization of the Mesa 3.1 release.  No new features | ||||||
|  | have been added.  For a list of bug fixes please read the VERSIONS file. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ---------------------------------------------------------------------- | ||||||
|  | $Id: RELNOTES-3.2,v 1.1.2.1 2000/04/06 02:34:31 brianp Exp $ | ||||||
							
								
								
									
										870
									
								
								docs/VERSIONS
									
									
									
									
									
								
							
							
						
						
									
										870
									
								
								docs/VERSIONS
									
									
									
									
									
								
							| @@ -1,3 +1,4 @@ | |||||||
|  | $Id: VERSIONS,v 1.13.2.34 2000/04/24 14:47:45 brianp Exp $ | ||||||
|  |  | ||||||
|  |  | ||||||
| Mesa Version History | Mesa Version History | ||||||
| @@ -103,7 +104,7 @@ Mesa Version History | |||||||
| 	- Stencil-related functions now work in display lists | 	- Stencil-related functions now work in display lists | ||||||
|     Changes: |     Changes: | ||||||
| 	- renamed aux.h as glaux.h (MS-DOS names can't start with aux) | 	- renamed aux.h as glaux.h (MS-DOS names can't start with aux) | ||||||
| 	- most filenames are in 8.3 format to accommodate MS-DOS | 	- most filenames are in 8.3 format to accomodate MS-DOS | ||||||
| 	- use GLubytes to store arrays of colors instead of GLints | 	- use GLubytes to store arrays of colors instead of GLints | ||||||
|  |  | ||||||
| 1.2.2   August 2, 1995 | 1.2.2   August 2, 1995 | ||||||
| @@ -665,12 +666,47 @@ Mesa Version History | |||||||
| 	- added demos/gloss.c | 	- added demos/gloss.c | ||||||
| 	- added xdemos/glxdpyinfo.c | 	- added xdemos/glxdpyinfo.c | ||||||
| 	- added GLX_ARB_get_proc_address extension | 	- added GLX_ARB_get_proc_address extension | ||||||
| 	- rewritten glTexImage code paths (faster, less memory, bug fixes) |     Bug fixes: | ||||||
|     Bug Fixes: |  | ||||||
| 	- several vertex array bug fixes | 	- several vertex array bug fixes | ||||||
| 	- overlapping glCopyPixels with pixel zooming now works | 	- overlapping glCopyPixels with pixel zooming now works | ||||||
| 	- glXUseXFont() bitmaps were vertically shifted by one pixel | 	- glXUseXFont() bitmaps were vertically shifted by one pixel | ||||||
| 	- glCopyPixels with pixel zooming now works |  | ||||||
|  |  | ||||||
|  | 3.2 beta 1  March 23, 2000 | ||||||
|  |     Bug fixes: | ||||||
|  | 	- mixed drawing of lines and bitmaps sometimes had wrong colors | ||||||
|  | 	- added missing glHintPGI() function | ||||||
|  | 	- fixed a polygon culling bug | ||||||
|  | 	- fixed bugs in gluPartialDisk() | ||||||
|  | 	- Z values in selection mode were wrong | ||||||
|  | 	- added missing tokens: | ||||||
|  | 		GL_SMOOTH_POINT_SIZE_RANGE | ||||||
|  | 		GL_SMOOTH_POINT_SIZE_GRANULARITY | ||||||
|  | 		GL_SMOOTH_LINE_WIDTH_RANGE | ||||||
|  | 		GL_SMOOTH_LINE_WIDTH_GRANULARITY | ||||||
|  | 		GL_ALIASED_POINT_SIZE_RANGE | ||||||
|  | 		GL_ALIASED_LINE_WIDTH_RANGE | ||||||
|  | 	- fixed glCopyPixels when copying from back to front buffer | ||||||
|  | 	- GL_EXT_compiled_vertex_array tokens had _SGI suffix instead of _EXT | ||||||
|  | 	- glDrawRangeElements(GL_LINES, 0, 1, 2, type, indices) was broken | ||||||
|  | 	- glDeleteTextures() didn't decrement reference count correctly | ||||||
|  | 	- GL_SRCA_ALPHA_SATURATE blend mode didn't work correctly | ||||||
|  | 	- Actual depth of transformation matrix stacks was off by one | ||||||
|  | 	- 24bpp visuals didn't address pixels correctly | ||||||
|  | 	- mipmap level of detail (lambda) calculation simplified, more accurate | ||||||
|  | 	- 101691 - Polygon clipping and GL_LINE | ||||||
|  | 	- 101928 - Polygon clipping and GL_LINE (same fix as above) | ||||||
|  | 	- 101808 - Non-glVertexArrays tristrip bug | ||||||
|  | 	- 101971 - find_last_3f on Dec OSF (worked around) | ||||||
|  | 	- 102369 - segv on dec osf (possibly a duplicate of the above) | ||||||
|  | 	- 102893 - orientations of modelview cause segfault | ||||||
|  |     New: | ||||||
|  | 	- updated SVGA Linux driver | ||||||
|  | 	- added the MESA_FX_NO_SIGNALS env var, see docs/README.3DFX | ||||||
|  | 	- build libGLw.a (Xt/OpenGL drawing area widget) library by default | ||||||
|  | 	- changed -O2 to -O3 for a number of gcc configs | ||||||
|  |     Changes: | ||||||
|  |         - glXCopyContext's mask parameter is now unsigned long, per GLX spec | ||||||
|  |  | ||||||
|  |  | ||||||
| 3.2 final  April 24, 2000 | 3.2 final  April 24, 2000 | ||||||
| @@ -686,829 +722,3 @@ Mesa Version History | |||||||
| 	- updated docs/README file | 	- updated docs/README file | ||||||
| 	- use bcopy() optimizations on FreeBSD | 	- use bcopy() optimizations on FreeBSD | ||||||
| 	- re-enabled the optimized persp_textured_triangle() function | 	- re-enabled the optimized persp_textured_triangle() function | ||||||
|  |  | ||||||
|  |  | ||||||
| 3.2.1  July 19, 2000 |  | ||||||
|     Bug fixes: |  | ||||||
| 	- gluBuild2DMipmaps() didn't accept GL_BGRA |  | ||||||
| 	- Fixed compile/makefile problems on IRIX |  | ||||||
| 	- fixed segfault in 3dfx driver when using GL selection/feedback |  | ||||||
| 	- no longer cull very, very tiny triangles |  | ||||||
| 	- blending w/ drawbuffer==GL_FRONT_BACK caused segfault (sw rendering) |  | ||||||
| 	- fixed Motif detection code in widgets-mesa/configure.in |  | ||||||
| 	- glColorMaterial and glMaterial updates to emissive and ambient |  | ||||||
| 	  didn't always work right |  | ||||||
| 	- Specular highlights weren't always in the right place |  | ||||||
| 	- clipped GL_LINE mode polygons had interior lines appear |  | ||||||
| 	- blend term GL_ONE_MINUS_CONSTANT_ALPHA was broken |  | ||||||
| 	- GL_NICEST fog didn't always work with flat shading |  | ||||||
| 	- glRect commands in display lists were sometimes miscolored |  | ||||||
| 	- Line Z offset didn't always work |  | ||||||
| 	- fixed texgen normal vector problem (gloss's teapot) |  | ||||||
| 	- numerous GL conformance bugs fixed |  | ||||||
|     Changes: |  | ||||||
| 	- glColorMask(false, false, false, false) handled better/faster |  | ||||||
| 	- reverted to old GLU polygon tessellator, GLU 1.1 |  | ||||||
| 	- updated Win32 build files |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 3.3  July 21, 2000 |  | ||||||
|     New: |  | ||||||
| 	- antialiased triangles now implemented |  | ||||||
| 	- GL_EXT_texture_env_add texture mode extension |  | ||||||
| 	- GLX 1.3 API |  | ||||||
| 	- support for separate draw/read buffers (ie GL_SGI_make_current_read) |  | ||||||
| 	- thread-safe API dispath |  | ||||||
| 	- improved glxinfo program |  | ||||||
| 	- demos/texdown program to measure texture download performance |  | ||||||
| 	- glext.h header file |  | ||||||
| 	- demos/geartrain program |  | ||||||
| 	- GL_EXT_texture_lod_bias extension |  | ||||||
| 	- demos/lodbias program |  | ||||||
| 	- further optimized glRead/DrawPixels for 16-bit TrueColor X visuals |  | ||||||
| 	- GLX_EXT_visual_rating extension (a no-op, however) |  | ||||||
| 	- GL_HP_occlusion_test extension (for X and OS/Mesa drivers) |  | ||||||
| 	- demos/occlude program |  | ||||||
| 	- GL_SGIS_pixel_texture and GL_SGIX_pixel_texture extensions |  | ||||||
| 	- demos/pixeltex program |  | ||||||
| 	- GL_SGI_color_matrix extension |  | ||||||
| 	- GL_SGI_color_table extension |  | ||||||
| 	- GL_EXT_histogram extension |  | ||||||
| 	- GL_ARB_texture_cube_map extension |  | ||||||
| 	- added xdemos/glxheads and xdemos/manywin |  | ||||||
| 	- demos/texenv.c demo |  | ||||||
| 	- GL_EXT_texture_env_combine extension (by Holger Waechtler) |  | ||||||
| 	- Xlib driver is now thread-safe (see xdemos/glthreads) |  | ||||||
|     Bug Fixes: |  | ||||||
| 	- various GL conformance failures fixed since 3.2.1 |  | ||||||
|     Changes: |  | ||||||
| 	- gl.h now uses #defines instead of C enums for all tokens |  | ||||||
| 	- glu.h now uses #defines instead of C enums for all tokens |  | ||||||
| 	- moved programs from 3Dfx/demos/ into demos/ directory |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 3.4  November 3, 2000 |  | ||||||
|     New: |  | ||||||
| 	- optimized glDrawPixels for glPixelZoom(1,-1) |  | ||||||
|     Bug Fixes: |  | ||||||
| 	- widgets-mesa/src/*.c files were missing from 3.3 distro |  | ||||||
| 	- include/GL/mesa_wgl.h file was missing from 3.3 distro |  | ||||||
| 	- fixed some Win32 compile problems |  | ||||||
| 	- texture object priorities weren't getting initialized to 1.0 |  | ||||||
| 	- glAreTexturesResident return value was wrong when using hardware |  | ||||||
| 	- glXUseXFont segfaulted when using 3dfx driver (via MESA_GLX_FX) |  | ||||||
| 	- glReadPixels with GLushort packed types was broken |  | ||||||
| 	- fixed a few bugs in the GL_EXT_texture_env_combine texture code |  | ||||||
| 	- glPush/PopAttrib(GL_ENABLE_BIT) mishandled multi-texture enables |  | ||||||
| 	- fixed some typos/bugs in the VB code |  | ||||||
| 	- glDrawPixels(GL_COLOR_INDEX) to RGB window didn't work |  | ||||||
| 	- optimized glDrawPixels paths weren't being used |  | ||||||
| 	- per-fragment fog calculation didn't work without a Z buffer |  | ||||||
| 	- improved blending accuracy, fixes Glean blendFunc test failures |  | ||||||
| 	- glPixelStore(GL_PACK/UNPACK_SKIP_IMAGES) wasn't handled correctly |  | ||||||
| 	- glXGetProcAddressARB() didn't always return the right address |  | ||||||
| 	- gluBuild[12]DMipmaps() didn't grok the GL_BGR pixel format |  | ||||||
| 	- texture matrix changes weren't always detected (GLUT projtex demo) |  | ||||||
| 	- fixed random color problem in vertex fog code |  | ||||||
| 	- fixed Glide-related bug that let Quake get a 24-bit Z buffer |  | ||||||
|     Changes: |  | ||||||
| 	- finished internal support for compressed textures for DRI |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 3.4.1  February 14, 2001 |  | ||||||
|     New: |  | ||||||
| 	- fixed some Linux build problems |  | ||||||
| 	- fixed some Windows build problems |  | ||||||
| 	- GL_EXT_texture_env_dot3 extension (Gareth Hughes) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- added RENDER_START/RENDER_FINISH macros for glCopyTexImage in DRI |  | ||||||
| 	- various state-update code changes needed for DRI bugs |  | ||||||
| 	- disabled pixel transfer ops in glColorTable commands, not needed |  | ||||||
| 	- fixed bugs in glCopyConvolutionFilter1D/2D, glGetConvolutionFilter |  | ||||||
| 	- updated sources and fixed compile problems in widgets-mesa/ |  | ||||||
| 	- GLX_PBUFFER enum value was wrong in glx.h |  | ||||||
| 	- fixed a glColorMaterial lighting bug |  | ||||||
| 	- fixed bad args to Read/WriteStencilSpan in h/w stencil clear function |  | ||||||
| 	- glXCopySubBufferMESA() Y position was off by one |  | ||||||
| 	- Error checking of glTexSubImage3D() was broken (bug 128775) |  | ||||||
| 	- glPopAttrib() didn't restore all derived Mesa state correctly |  | ||||||
| 	- Better glReadPixels accuracy for 16bpp color - fixes lots of OpenGL |  | ||||||
| 	  conformance problems at 16bpp. |  | ||||||
| 	- clearing depth buffer with scissoring was broken, would segfault |  | ||||||
| 	- OSMesaGetDepthBuffer() returned bad bytesPerValue value |  | ||||||
| 	- fixed a line clipping bug (reported by Craig McDaniel) |  | ||||||
| 	- fixed RGB color over/underflow bug for very tiny triangles |  | ||||||
|     Known problems: |  | ||||||
| 	- NURBS or evaluator surfaces inside display lists don't always work |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 3.4.2  May 17, 2001 |  | ||||||
|     Bug fixes: |  | ||||||
| 	- deleting the currently bound texture could cause bad problems |  | ||||||
| 	- using fog could result in random vertex alpha values |  | ||||||
| 	- AA triangle rendering could touch pixels outside right window bound |  | ||||||
| 	- fixed byteswapping problem in clear_32bit_ximage() function |  | ||||||
| 	- fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam |  | ||||||
| 	- fixed memory leak in glXUseXFont() |  | ||||||
| 	- fragment sampling in AA triangle function was off by 1/2 pixel |  | ||||||
| 	- Windows: reading pixels from framebuffer didn't always work |  | ||||||
| 	- glConvolutionFilter2D could segfault or cause FP exception |  | ||||||
| 	- fixed segfaults in FX and X drivers when using tex unit 1 but not 0 |  | ||||||
| 	- GL_NAND logicop didn't work right in RGBA mode |  | ||||||
| 	- fixed a memory corruption bug in vertex buffer reset code |  | ||||||
| 	- clearing the softwara alpha buffer with scissoring was broken |  | ||||||
| 	- fixed a few color index mode fog bugs |  | ||||||
| 	- fixed some bad assertions in color index mode |  | ||||||
| 	- fixed FX line 'stipple' bug #420091 |  | ||||||
| 	- fixed stencil buffer clear width/height typo |  | ||||||
| 	- fixed GL error glitches in gl[Client]ActiveTextureARB() |  | ||||||
| 	- fixed Windows compilation problem in texutil.c |  | ||||||
| 	- fixed 1/8-pixel AA triangle sampling error |  | ||||||
|     Changes: |  | ||||||
| 	- optimized writing mono-colored pixel spans to X pixmaps |  | ||||||
| 	- increased max viewport size to 2048 x 2048 |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 3.5  June 21, 2001 |  | ||||||
|     New: |  | ||||||
| 	- internals of Mesa divided into modular pieces (Keith Whitwell) |  | ||||||
| 	- 100% OpenGL 1.2 conformance (passes all conformance tests) |  | ||||||
| 	- new AA line algorithm |  | ||||||
| 	- GL_EXT_convolution extension |  | ||||||
| 	- GL_ARB_imaging subset |  | ||||||
| 	- OSMesaCreateContextExt() function |  | ||||||
| 	- GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add) |  | ||||||
| 	- GL_MAX_TEXTURE_UNITS_ARB now defaults to eight |  | ||||||
| 	- GL_EXT_fog_coord extension (Keith Whitwell) |  | ||||||
| 	- GL_EXT_secondary_color extension (Keith Whitwell) |  | ||||||
| 	- GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add) |  | ||||||
| 	- GL_SGIX_depth_texture extension |  | ||||||
| 	- GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions |  | ||||||
| 	- demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow |  | ||||||
| 	- GL_ARB_texture_env_combine extension |  | ||||||
| 	- GL_ARB_texture_env_dot3 extension |  | ||||||
| 	- GL_ARB_texture_border_clamp (aka GL_SGIS_texture_border_clamp) |  | ||||||
| 	- OSMesaCreateContextExt() function |  | ||||||
| 	- libOSMesa.so library, contains the OSMesa driver interface |  | ||||||
| 	- GL/glxext.h header file for GLX extensions |  | ||||||
| 	- somewhat faster software texturing, fogging, depth testing |  | ||||||
| 	- all color-index conformance tests now pass (only 8bpp tested) |  | ||||||
| 	- SPARC assembly language TCL optimizations (David Miller) |  | ||||||
| 	- GL_SGIS_generate_mipmap extension |  | ||||||
|     Bug Fixes: |  | ||||||
| 	- fbiRev and tmuRev were unitialized when using Glide3 |  | ||||||
| 	- fixed a few color index mode conformance failures; all pass now |  | ||||||
| 	- now appling antialiasing coverage to alpha after texturing |  | ||||||
| 	- colors weren't getting clamped to [0,1] before color table lookup |  | ||||||
| 	- fixed RISC alignment errors caused by COPY_4UBV macro |  | ||||||
| 	- drawing wide, flat-shaded lines could cause a segfault |  | ||||||
| 	- vertices now snapped to 1/16 pixel to fix rendering of tiny triangles |  | ||||||
|     Changes: |  | ||||||
| 	- SGI's Sample Implementation (SI) 1.3 GLU library replaces Mesa GLU |  | ||||||
| 	- new libOSMesa.so library, contains the OSMesa driver interface |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 4.0  October 22, 2001 |  | ||||||
|     New: |  | ||||||
| 	- Mesa 4.0 implements the OpenGL 1.3 specification |  | ||||||
| 	- GL_IBM_rasterpos_clip extension |  | ||||||
| 	- GL_EXT_texture_edge_clamp extension (aka GL_SGIS_texture_edge_clamp) |  | ||||||
| 	- GL_ARB_texture_mirrored_repeat extension |  | ||||||
| 	- WindML UGL driver (Stephane Raimbault) |  | ||||||
| 	- added OSMESA_MAX_WIDTH/HEIGHT queries |  | ||||||
| 	- attempted compiliation fixes for Solaris 5, 7 and 8 |  | ||||||
| 	- updated glext.h and glxext.h files |  | ||||||
| 	- updated Windows driver (Karl Schultz) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- added some missing GLX 1.3 tokens to include/GL/glx.h |  | ||||||
| 	- GL_COLOR_MATRIX changes weren't recognized by teximage functions |  | ||||||
| 	- glCopyPixels with scale and bias was broken |  | ||||||
| 	- glRasterPos with lighting could segfault |  | ||||||
| 	- glDeleteTextures could leave a dangling pointer |  | ||||||
| 	- Proxy textures for cube maps didn't work |  | ||||||
| 	- fixed a number of 16-bit color channel bugs |  | ||||||
| 	- fixed a few minor memory leaks |  | ||||||
| 	- GLX context sharing was broken in 3.5 |  | ||||||
| 	- fixed state-update bugs in glPopClientAttrib() |  | ||||||
| 	- fixed glDrawRangeElements() bug |  | ||||||
| 	- fixed a glPush/PopAttrib() bug related to texture binding |  | ||||||
| 	- flat-shaded, textured lines were broken |  | ||||||
| 	- fixed a dangling pointer problem in the XMesa code (Chris Burghart) |  | ||||||
| 	- lighting didn't always produce the correct alpha value |  | ||||||
| 	- fixed 3DNow! code to not read past end of arrays (Andrew Lewycky) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 4.0.1 December 17, 2001 |  | ||||||
|     New: |  | ||||||
| 	- better sub-pixel sample positions for AA triangles (Ray Tice) |  | ||||||
| 	- slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- added missing break statements in glGet*() for multisample cases |  | ||||||
| 	- fixed uninitialized hash table mutex bug (display lists / texobjs) |  | ||||||
| 	- fixed bad teximage error check conditional (bug 476846) |  | ||||||
| 	- fixed demos readtex.c compilation problem on Windows (Karl Schultz) |  | ||||||
| 	- added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT |  | ||||||
| 	- silence some compiler warnings (gcc 2.96) |  | ||||||
| 	- enable the #define GL_VERSION_1_3 in GL/gl.h |  | ||||||
| 	- added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h |  | ||||||
| 	- fixed glu.h typedef problem found with MSDev 6.0 |  | ||||||
| 	- build libGL.so with -Bsymbolic (fixes bug found with Chromium) |  | ||||||
| 	- added missing 'const' to glXGetContextIDEXT() in glxext.h |  | ||||||
| 	- fixed a few glXGetProcAddress() errors (texture compression, etc) |  | ||||||
| 	- fixed start index bug in compiled vertex arrays (Keith) |  | ||||||
| 	- fixed compilation problems in src/SPARC/glapi_sparc.S |  | ||||||
| 	- fixed triangle strip "parity" bug found in VTK medical1 demo (Keith) |  | ||||||
| 	- use glXGetProcAddressARB in GLUT to avoid extension linking problems |  | ||||||
| 	- provoking vertex of flat-shaded, color-index triangles was wrong |  | ||||||
| 	- fixed a few display list bugs (GLUT walker, molecule, etc) (Keith) |  | ||||||
| 	- glTexParameter didn't flush the vertex buffer (Ray Tice) |  | ||||||
| 	- feedback attributes for glDraw/CopyPixels and glBitmap were wrong |  | ||||||
| 	- fixed bug in normal length caching (ParaView lighting bug) |  | ||||||
| 	- fixed separate_specular color bug found in Chimera (18 Dec 2001) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 4.0.2  April 2, 2002 |  | ||||||
|     New: |  | ||||||
| 	- New DOS (DJGPP) driver written by Daniel Borca |  | ||||||
| 	- New driver interface functions for TCL drivers (such as Radeon DRI) |  | ||||||
| 	- GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32" |  | ||||||
| 	  if using deep color channels |  | ||||||
| 	- latest GL/glext.h and GL/glxext.h headers from SGI |  | ||||||
|     Bug fixes: |  | ||||||
| 	- GL_BLEND with non-black texture env color wasn't always correct |  | ||||||
| 	- GL_REPLACE with GL_RGB texture format wasn't always correct (alpha) |  | ||||||
| 	- glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken |  | ||||||
| 	- glReadPixels was sometimes mistakenly clipped by the scissor box |  | ||||||
| 	- glDraw/ReadPixels didn't catch all the errors that they should have |  | ||||||
| 	- Fixed 24bpp rendering problem in Windows driver (Karl Schultz) |  | ||||||
| 	- 16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c) |  | ||||||
| 	- Fixed 1-bit float->int conversion bug in glDrawPixels(GL_DEPTH_COMP) |  | ||||||
| 	- glColorMask as sometimes effecting glXSwapBuffers() |  | ||||||
| 	- fixed a potential bug in XMesaGarbageCollect() |  | ||||||
| 	- N threads rendering into one window didn't work reliably |  | ||||||
| 	- glCopyPixels didn't work for deep color channels |  | ||||||
| 	- improved 8 -> 16bit/channel texture image conversion (Gerk Huisma) |  | ||||||
| 	- glPopAttrib() didn't correctly restore user clip planes |  | ||||||
| 	- user clip planes failed for some perspective projections (Chromium) |  | ||||||
|     Known bugs: |  | ||||||
| 	- mipmap LOD computation |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 4.0.3  June 25, 2002 |  | ||||||
|     New: |  | ||||||
| 	- updated GL/glext.h file (version 15) |  | ||||||
| 	- corrected MMX blend code (Jose Fonseca) |  | ||||||
| 	- support for software-based alpha planes in Windows driver |  | ||||||
| 	- updated GGI driver (Filip Spacek) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens |  | ||||||
| 	- OSMesaMakeCurrent() didn't recognize buffer size changes |  | ||||||
| 	- assorted conformance fixes for 16-bit/channel rendering |  | ||||||
| 	- texcombine alpha subtraction mode was broken |  | ||||||
| 	- fixed lighting bug with non-uniform scaling and display lists |  | ||||||
| 	- fixed bug when deleting shared display lists |  | ||||||
| 	- disabled SPARC cliptest assembly code (Mesa bug 544665) |  | ||||||
| 	- fixed a couple Solaris compilation/link problems |  | ||||||
| 	- blending clipped glDrawPixels didn't always work |  | ||||||
| 	- glGetTexImage() didn't accept packed pixel types |  | ||||||
| 	- glPixelMapu[is]v() could explode given too large of pixelmap |  | ||||||
| 	- glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT |  | ||||||
| 	- glXCopyContext() could lead to segfaults |  | ||||||
| 	- glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665) |  | ||||||
|     Changes: |  | ||||||
| 	- lots of C++ (g++) code clean-ups |  | ||||||
| 	- lots of T&L updates for the Radeon DRI driver |  | ||||||
|     Known bugs: |  | ||||||
| 	- mipmap LOD computation (fixed for Mesa 4.1) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 4.0.4  October 3, 2002 |  | ||||||
|     New: |  | ||||||
| 	- GL_NV_texture_rectangle extension |  | ||||||
| 	- updated glext.h header (version 17) |  | ||||||
| 	- updated DOS driver (Daniel Borca) |  | ||||||
| 	- updated BeOS R5 driver (Philippe Houdoin) |  | ||||||
| 	- added GL_IBM_texture_mirror_repeat |  | ||||||
| 	- glxinfo now takes -l option to print interesting OpenGL limits info |  | ||||||
| 	- GL_MESA_ycbcr_texture extension |  | ||||||
| 	- GL_APPLE_client_storage extension (for some DRI drivers only) |  | ||||||
| 	- GL_MESA_pack_invert extension |  | ||||||
|     Bug fixes: |  | ||||||
| 	- fixed GL_LINEAR fog bug by adding clamping |  | ||||||
| 	- fixed FP exceptions found using Alpha CPU |  | ||||||
| 	- 3dfx MESA_GLX_FX=window (render to window) didn't work |  | ||||||
| 	- fixed memory leak in wglCreateContest (Karl Schultz) |  | ||||||
| 	- define GLAPIENTRY and GLAPI if undefined in glu.h |  | ||||||
| 	- wglGetProcAddress didn't handle all API functions |  | ||||||
| 	- when testing for OpenGL 1.2 vs 1.3, check for GL_ARB_texture_cube_map |  | ||||||
| 	- removed GL_MAX_CONVOLUTION_WIDTH/HEIGHT from glGetInteger/Float/etc() |  | ||||||
| 	- error checking in compressed tex image functions had some glitches |  | ||||||
| 	- fixed AIX compile problem in src/config.c |  | ||||||
| 	- glGetTexImage was using pixel unpacking instead of packing params |  | ||||||
| 	- auto-mipmap generation for cube maps was incorrect |  | ||||||
|     Changes: |  | ||||||
| 	- max texture units reduced to six to accommodate texture rectangles |  | ||||||
| 	- removed unfinished GL_MESA_sprite_point extension code |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 4.1  October 29, 2002 |  | ||||||
|     New: |  | ||||||
| 	- GL_NV_vertex_program extension |  | ||||||
| 	- GL_NV_vertex_program1_1 extension |  | ||||||
| 	- GL_ARB_window_pos extension |  | ||||||
| 	- GL_ARB_depth_texture extension |  | ||||||
| 	- GL_ARB_shadow extension |  | ||||||
| 	- GL_ARB_shadow_ambient extension |  | ||||||
| 	- GL_EXT_shadow_funcs extension |  | ||||||
| 	- GL_ARB_point_parameters extension |  | ||||||
| 	- GL_ARB_texture_env_crossbar |  | ||||||
| 	- GL_NV_point_sprite extension |  | ||||||
| 	- GL_NV_texture_rectangle extension |  | ||||||
| 	- GL_EXT_multi_draw_arrays extension |  | ||||||
| 	- GL_EXT_stencil_two_side extension |  | ||||||
| 	- GLX_SGIX_fbconfig and GLX_SGIX_pbuffer extensions |  | ||||||
| 	- GL_ATI_texture_mirror_once extension (Ian Romanick) |  | ||||||
| 	- massive overhaul/simplification of software rasterizer module, |  | ||||||
| 	  many contributions from Klaus Niederkrueger |  | ||||||
| 	- faster software texturing in some cases (i.e. trilinear filtering) |  | ||||||
| 	- new OSMesaGetProcAddress() function |  | ||||||
| 	- more blend modes implemented with MMX code (Jose Fonseca) |  | ||||||
| 	- added glutGetProcAddress() to GLUT |  | ||||||
| 	- added GLUT_FPS env var to compute frames/second in glutSwapBuffers() |  | ||||||
| 	- pbinfo and pbdemo PBuffer programs |  | ||||||
| 	- glxinfo -v prints transprent pixel info (Gerd Sussner) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- better mipmap LOD computation (prevents excessive blurriness) |  | ||||||
| 	- OSMesaMakeCurrent() didn't recognize buffer size changes |  | ||||||
| 	- assorted conformance fixes for 16-bit/channel rendering |  | ||||||
| 	- texcombine alpha subtraction mode was broken |  | ||||||
| 	- fixed some blend problems when GLchan==GLfloat (Gerk Huisma) |  | ||||||
| 	- clamp colors to [0,inf] in OSMesa if GLchan==GLfloat (Gerk Huisma) |  | ||||||
| 	- fixed divide by zero error in NURBS tessellator (Jon Perry) |  | ||||||
| 	- fixed GL_LINEAR fog bug by adding clamping |  | ||||||
| 	- fixed FP exceptions found using Alpha CPU |  | ||||||
| 	- 3dfx/glide driver render-to-window feature was broken |  | ||||||
| 	- added missing GLX_TRANSPARENT_RGB token to glx.h |  | ||||||
| 	- fixed error checking related to paletted textures |  | ||||||
| 	- fixed reference count error in glDeleteTextures (Randy Fayan) |  | ||||||
|     Changes: |  | ||||||
| 	- New spec file and Python code to generate some GL dispatch files |  | ||||||
| 	- Glide driver defaults to "no" with autoconf/automake |  | ||||||
| 	- updated demos/stex3d with new options |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 5.0  November 13, 2002 |  | ||||||
|     New: |  | ||||||
| 	- OpenGL 1.4 support (glGetString(GL_VERSION) returns "1.4") |  | ||||||
| 	- removed some overlooked debugging code |  | ||||||
| 	- glxinfo updated to support GLX_ARB_multisample |  | ||||||
| 	- GLUT now support GLX_ARB_multisample |  | ||||||
| 	- updated DOS driver (Daniel Borca) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- GL_POINT and GL_LINE-mode polygons didn't obey cull state |  | ||||||
| 	- fixed potential bug in _mesa_align_malloc/calloc() |  | ||||||
| 	- fixed missing triangle bug when running vertex programs |  | ||||||
| 	- fixed a few HPUX compilation problems |  | ||||||
| 	- FX (Glide) driver didn't compile |  | ||||||
| 	- setting GL_TEXTURE_BORDER_COLOR with glTexParameteriv() didn't work |  | ||||||
| 	- a few EXT functions, like glGenTexturesEXT, were no-ops |  | ||||||
| 	- a few OpenGL 1.4 functions like glFogCoord*, glBlendFuncSeparate, |  | ||||||
| 	  glMultiDrawArrays and glMultiDrawElements were missing |  | ||||||
| 	- glGet*(GL_ACTIVE_STENCIL_FACE_EXT) was broken |  | ||||||
| 	- Pentium 4 Mobile was mistakenly identified as having 3DNow! |  | ||||||
| 	- fixed one-bit error in point/line fragment Z calculation |  | ||||||
| 	- fixed potential segfault in fakeglx code |  | ||||||
| 	- fixed color overflow problem in DOT3 texture env mode |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 5.0.1  March 30, 2003 |  | ||||||
|     New: |  | ||||||
| 	- DOS driver updates from Daniel Borca |  | ||||||
| 	- updated GL/gl_mangle.h file (Bill Hoffman) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- auto mipmap generation for cube maps was broken (bug 641363) |  | ||||||
| 	- writing/clearing software alpha channels was unreliable |  | ||||||
| 	- minor compilation fixes for OS/2 (Evgeny Kotsuba) |  | ||||||
| 	- fixed some bad assertions found with shadowtex demo |  | ||||||
| 	- fixed error checking bug in glCopyTexSubImage2D (bug 659020) |  | ||||||
| 	- glRotate(angle, -x, 0, 0) was incorrect (bug 659677) |  | ||||||
| 	- fixed potential segfault in texture object validation (bug 659012) |  | ||||||
| 	- fixed some bogus code in _mesa_test_os_sse_exception_support (Linus) |  | ||||||
| 	- fix fog stride bug in tnl code for h/w drivers (Michel Danzer) |  | ||||||
| 	- fixed glActiveTexture / glMatrixMode(GL_TEXTURE) bug (#669080) |  | ||||||
| 	- glGet(GL_CURRENT_SECONDARY_COLOR) should return 4 values, not 3 |  | ||||||
| 	- fixed compilation problem on Solaris7/x86 (bug 536406) |  | ||||||
| 	- fixed prefetch bug in 3DNow! code (Felix Kuhling) |  | ||||||
| 	- fixed NeXT build problem (FABSF macro) |  | ||||||
| 	- glDrawPixels Z values when glPixelZoom!=1 were invalid (bug 687811) |  | ||||||
| 	- zoomed glDraw/CopyPixels with clipping sometimes failed (bug 689964) |  | ||||||
| 	- AA line and triangle Z values are now rounded, not truncated |  | ||||||
| 	- fixed color interpolation bug when GLchan==GLfloat (bug 694461) |  | ||||||
| 	- glArePrograms/TexturesResident() wasn't 100% correct (Jose Fonseca) |  | ||||||
| 	- fixed a minor GL_COLOR_MATERIAL bug |  | ||||||
| 	- NV vertex program EXP instruction was broken |  | ||||||
| 	- glColorMask misbehaved with X window / pixmap rendering |  | ||||||
| 	- fix autoconf/libtool GLU C++ linker problem on Linux (a total hack) |  | ||||||
| 	- attempt to fix GGI compilation problem when MesaDemos not present |  | ||||||
| 	- NV vertex program ARL-relative fetches didn't work |  | ||||||
|     Changes: |  | ||||||
| 	- use glPolygonOffset in gloss demo to avoid z-fighting artifacts |  | ||||||
| 	- updated winpos and pointblast demos to use ARB extensions |  | ||||||
| 	- disable SPARC normal transformation code (bug 673938) |  | ||||||
| 	- GLU fixes for OS/2 (Evgeny Kotsuba) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 5.0.2  September 5, 2003 |  | ||||||
|     Bug fixes: |  | ||||||
| 	- fixed texgen problem causing texcoord's Q to be zero (stex3d) |  | ||||||
| 	- default GL_TEXTURE_COMPARE_MODE_ARB was wrong |  | ||||||
| 	- GL_CURRENT_MATRIX_NV query was wrong |  | ||||||
| 	- GL_CURRENT_MATRIX_STACK_DEPTH_NV query was off by one |  | ||||||
| 	- GL_LIST_MODE query wasn't correct |  | ||||||
| 	- GL_FOG_COORDINATE_SOURCE_EXT query wasn't supported |  | ||||||
| 	- GL_SECONDARY_COLOR_ARRAY_SIZE_EXT query returned wrong value |  | ||||||
| 	- blended, wide lines didn't always work correctly (bug 711595) |  | ||||||
| 	- glVertexAttrib4svNV w component was always 1 |  | ||||||
| 	- fixed bug in GL_IBM_rasterpos_clip (missing return) |  | ||||||
| 	- GL_DEPTH_TEXTURE_MODE = GL_ALPHA didn't work correctly |  | ||||||
| 	- a few Solaris compilation fixes |  | ||||||
| 	- fixed glClear() problem for DRI drivers (non-existant stencil, etc) |  | ||||||
| 	- fixed int/REAL mixup in GLU NURBS curve evaluator (Eric Cazeaux) |  | ||||||
| 	- fixed delete [] bug in SI GLU (bug 721765) (Diego Santa Cruz) |  | ||||||
| 	- glFog() didn't clamp fog colors |  | ||||||
| 	- fixed bad float/int conversion for GL_TEXTURE_PRIORITY in the |  | ||||||
| 	  gl[Get]TexParameteri[v] functions |  | ||||||
| 	- fixed invalid memory references in glTexGen functions (bug 781602) |  | ||||||
| 	- integer-valued color arrays weren't handled correctly |  | ||||||
| 	- glDrawPixels(GL_DEPTH_COMPONENT) with glPixelZoom didn't work |  | ||||||
| 	- GL_EXT_texture_lod_bias is part of 1.4, overlooked in 5.0.1 |  | ||||||
|     Changes: |  | ||||||
| 	- build GLUT with -fexceptions so C++ apps propogate exceptions |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 5.1  December 17, 2003 |  | ||||||
|     New: |  | ||||||
| 	- reorganized directory tree |  | ||||||
| 	- GL_ARB_vertex/fragment_program extensions (Michal Krol & Karl Rasche) |  | ||||||
| 	- GL_ATI_texture_env_combine3 extension (Ian Romanick) |  | ||||||
| 	- GL_SGI_texture_color_table extension (Eric Plante) |  | ||||||
| 	- GL_NV_fragment_program extension |  | ||||||
| 	- GL_NV_light_max_exponent extension |  | ||||||
| 	- GL_EXT_texture_rectangle (identical to GL_NV_texture_rectangle) |  | ||||||
| 	- GL_ARB_occlusion_query extension |  | ||||||
| 	- GL_ARB_point_sprite extension |  | ||||||
| 	- GL_ARB_texture_non_power_of_two extension |  | ||||||
| 	- GL_IBM_multimode_draw_arrays extension |  | ||||||
| 	- GL_EXT_texture_mirror_clamp extension (Ian Romanick) |  | ||||||
| 	- GL_ARB_vertex_buffer_object extension |  | ||||||
| 	- new X86 feature detection code (Petr Sebor) |  | ||||||
| 	- less memory used for display lists and vertex buffers |  | ||||||
| 	- demo of per-pixel lighting with a fragment program (demos/fplight.c) |  | ||||||
| 	- new version (18) of glext.h header |  | ||||||
| 	- new spriteblast.c demo of GL_ARB_point_sprite |  | ||||||
| 	- faster glDrawPixels in X11 driver in some cases (see RELNOTES-5.1) |  | ||||||
| 	- faster glCopyPixels in X11 driver in some cases (see RELNOTES-5.1) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- really enable OpenGL 1.4 features in DOS driver. |  | ||||||
| 	- fixed issues in glDrawPixels and glCopyPixels for very wide images |  | ||||||
| 	- glPixelMapf/ui/usv()'s size parameter is GLsizei, not GLint |  | ||||||
| 	- fixed some texgen bugs reported by Daniel Borca |  | ||||||
| 	- fixed wglMakeCurrent(NULL, NULL) bug (#835861) |  | ||||||
| 	- fixed glTexSubImage3D z-offset bug (Cedric Gautier) |  | ||||||
| 	- fixed RGBA blend enable bug (Ville Syrjala) |  | ||||||
| 	- glAccum is supposed to be a no-op in selection/feedback mode |  | ||||||
| 	- fixed texgen bug #597589 (John Popplewell) |  | ||||||
|     Changes: |  | ||||||
| 	- dropped API trace feature (src/Trace/) |  | ||||||
| 	- documentation overhaul.  merged with website content.  more html. |  | ||||||
| 	- glxgears.c demo updated to use GLX swap rate extensions |  | ||||||
| 	- glTexImage1/2/3D now allows width/height/depth = 0 |  | ||||||
| 	- disable SPARC asm code on Linux (bug 852204) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.0  January 16, 2004 |  | ||||||
|     New: |  | ||||||
| 	- full OpenGL 1.5 support |  | ||||||
| 	- updated GL/glext.h file to version 21 |  | ||||||
|     Changes: |  | ||||||
| 	- changed max framebuffer size to 4Kx4K (MAX_WIDTH/HEIGHT in config.h) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- fixed bug in UNCLAMPED_FLOAT_TO_UBYTE macro; solves a color |  | ||||||
| 	  clamping issue |  | ||||||
| 	- updated suno5-gcc configs |  | ||||||
| 	- glColor3 functions sometimes resulted in undefined alpha values |  | ||||||
| 	- fixed FP divide by zero error seen on VMS with xlockmore, others |  | ||||||
| 	- fixed vertex/fragment program debug problem (bug 873011) |  | ||||||
| 	- building on AIX with gcc works now |  | ||||||
| 	- glDeleteProgramsARB failed for ARB fragment programs (bug 876160) |  | ||||||
| 	- glDrawRangeElements tried to modify potentially read-only storage |  | ||||||
| 	- updated files for building on Windows |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.0.1  April 2, 2004 |  | ||||||
|     New: |  | ||||||
| 	- upgraded glext.h to version 22 |  | ||||||
| 	- new build targets (Dan Schikore) |  | ||||||
| 	- new linux-x86-opteron build target (Heath Feather) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- glBindProgramARB didn't update all necessary state |  | ||||||
| 	- fixed build problems on OpenBSD |  | ||||||
| 	- omit CVS directories from tarballs |  | ||||||
| 	- glGetTexImage(GL_COLOR_INDEX) was broken |  | ||||||
| 	- fixed an infinite loop in t&l module |  | ||||||
| 	- silenced some valgrind warnings about using unitialized memory |  | ||||||
| 	- fixed some compilation/link glitches on IRIX (Mike Stephens) |  | ||||||
| 	- glBindProgram wasn't getting compiled into display lists |  | ||||||
| 	- GLX_FBCONFIG_ID wasn't recognized in glXChooseFBConfig() (bug 888079) |  | ||||||
| 	- two-sided lighting and vertex program didn't work (bug 887330) |  | ||||||
| 	- stores to program parameter registers in vertex state programs |  | ||||||
| 	  didn't work. |  | ||||||
| 	- fixed glOrtho bug found with gcc 3.2.2 (RH9) |  | ||||||
| 	- glXCreateWindow() wasn't fully implemented (bug 890894) |  | ||||||
| 	- generic vertex attribute arrays didn't work in display lists |  | ||||||
| 	- vertex buffer objects' default usage and access fields were wrong |  | ||||||
| 	- glDrawArrays with start!=0 was broken |  | ||||||
| 	- fragment program PK2H, UP2H, UP4B and UP4UB instructions were broken |  | ||||||
| 	- linux-osmesa16-static config didn't work |  | ||||||
| 	- fixed a few color index rendering problems (bug 910687) |  | ||||||
| 	- glInterleavedArrays didn't respect GL_CLIENT_ACTIVE_TEXTURE |  | ||||||
| 	- OSMesa RGB and BGR modes were broken |  | ||||||
| 	- glProgramStringARB mistakenly required a null-terminated string |  | ||||||
| 	- fragment program XPD instruction was incorrect |  | ||||||
| 	- glGetMaterial() didn't work reliably |  | ||||||
| 	- ARB_fragment_program KIL instruction was incorrect |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.1  August 18, 2004 |  | ||||||
|     New: |  | ||||||
| 	- Revamped Makefile system |  | ||||||
| 	- glXUseRotatedXFont() utility (see xdemos/xuserotfont.c) |  | ||||||
| 	- internal driver interface changes related to texture object |  | ||||||
| 	  allocation, vertex/fragment programs, BlendEquationSeparate, etc. |  | ||||||
| 	- option to walk triangle edges with double-precision floats |  | ||||||
| 	  (Justin Novosad of Discreet) (see config.h file) |  | ||||||
| 	- support for AUX buffers in software GLX driver |  | ||||||
| 	- updated glext.h to version 24 and glxext.h to version 6 |  | ||||||
| 	- new MESA_GLX_FORCE_ALPHA and MESA_GLX_DEPTH_BITS env vars |  | ||||||
| 	- updated BeOS support (Philippe Houdoin) |  | ||||||
|     Changes: |  | ||||||
| 	- fragment fog interpolation is perspective corrected now |  | ||||||
| 	- new glTexImage code, much cleaner, may be a bit faster |  | ||||||
|     Bug fixes: |  | ||||||
| 	- glArrayElement in display lists didn't handle generic vertex attribs |  | ||||||
| 	- glFogCoord didn't always work properly |  | ||||||
| 	- ARB_fragment_program fog options didn't work |  | ||||||
| 	- frag prog TEX instruction no longer incorrectly divides s,t,r by q |  | ||||||
| 	- ARB frag prog TEX and TEXP instructions now use LOD=0 |  | ||||||
| 	- glTexEnviv in display lists didn't work |  | ||||||
| 	- glRasterPos didn't do texgen or apply texture matrix |  | ||||||
| 	- GL_DOUBLE-valued vertex arrays were broken in some cases |  | ||||||
| 	- fixed texture rectangle edge/border sampling bugs |  | ||||||
| 	- sampling an incomplete texture in a fragment program would segfault |  | ||||||
| 	- glTexImage was missing a few error checks |  | ||||||
| 	- fixed some minor glGetTexParameter glitches |  | ||||||
| 	- GL_INTENSITY was mistakenly accepted as a <format> to glTexImage |  | ||||||
| 	- fragment program writes to RC/HC register were broken |  | ||||||
| 	- fixed a few glitches in GL_HP_occlusion_test extension |  | ||||||
| 	- glBeginQueryARB and glEndQueryARB didn't work inside display lists |  | ||||||
| 	- vertex program state references were broken |  | ||||||
| 	- fixed triangle color interpolation bug on AIX (Shane Blackett) |  | ||||||
| 	- fixed a number of minor memory leaks (bug #1002030) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.2  October 2, 2004 |  | ||||||
|     New: |  | ||||||
| 	- enabled GL_ARB_texture_rectangle (same as GL_NV_texture_rectangle) |  | ||||||
| 	- updated Doxygen support (Jose Fonseca) |  | ||||||
|     Changes: |  | ||||||
| 	- some GGI driver updates (Christoph Egger, bug 1025977) |  | ||||||
|     Bug fixes: |  | ||||||
| 	- Omit GL_ARB_texture_non_power_of_two from list of OpenGL 1.5 features |  | ||||||
| 	- fixed a few compilation issues on IRIX |  | ||||||
| 	- fixed a matrix classification bug (reported by Wes Bethel) |  | ||||||
| 	- we weren't reseting the vertex/fragment program error state |  | ||||||
| 	  before parsing (Dave Reveman) |  | ||||||
| 	- adjust texcoords for sampling texture rectangles (Dave Reveman) |  | ||||||
| 	- glGet*(GL_MAX_VERTEX_ATTRIBS_ARB) wasn't implemented |  | ||||||
| 	- repeated calls to glDeleteTexture(t) could lead to a crash |  | ||||||
| 	- fixed potential ref count bugs in VBOs and vertex/fragment programs |  | ||||||
| 	- spriteblast demo didn't handle window size changes correctly |  | ||||||
| 	- glTexSubImage didn't handle pixels=NULL correctly for PBOs |  | ||||||
| 	- fixed color index mode glDrawPixels bug (Karl Schultz) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.2.1  December 9, 2004 |  | ||||||
|     Bug fixes: |  | ||||||
| 	- don't apply regular fog or color sum when using a fragment program |  | ||||||
| 	- glProgramEnvParameter4fARB always generated an error on |  | ||||||
| 	  GL_FRAGMENT_PROGRAM_ARB (fdo bug 1645) |  | ||||||
| 	- glVertexAttrib3svNV and glVertexAttrib3svARB were broken |  | ||||||
| 	- fixed width/height mix-up in glSeparableFilter2D() |  | ||||||
| 	- fixed regression in glCopyPixels + convolution |  | ||||||
| 	- glReadPixels from a clipped front color buffer didn't always work |  | ||||||
| 	- glTexImage didn't accept GL_RED/GREEN/BLUE as the format |  | ||||||
| 	- Attempting queries/accesses of VBO 0 weren't detected as errors |  | ||||||
| 	- paletted textures failed if the palette had fewer than 256 entries |  | ||||||
|     Changes: |  | ||||||
| 	- fixed a bunch of compiler warnings found with gcc 3.4 |  | ||||||
| 	- bug reports should to go bugzilla.freedesktop.org |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.3  July 20, 2005 |  | ||||||
|     New: |  | ||||||
| 	- GL_EXT_framebuffer_object extension |  | ||||||
| 	- GL_ARB_draw_buffers extension |  | ||||||
| 	- GL_ARB_pixel_buffer_object extension |  | ||||||
| 	- GL_OES_read_format extension (Ian Romanick) |  | ||||||
| 	- DirectFB driver (Claudio Ciccani) |  | ||||||
| 	- x86_64 vertex transformation code (Mikko T.) |  | ||||||
| 	- Updated GL/glext.h to version 29 |  | ||||||
|     Changes: |  | ||||||
| 	- added -stereo option for glxgears demo (Jacek Rosik) |  | ||||||
| 	- updated the PBuffer demo code in xdemos/ directory |  | ||||||
| 	- glDeleteTextures/Programs/Buffers() now makes the object ID |  | ||||||
| 	  available for immediate re-use |  | ||||||
| 	- assorted 64-bit clean-ups fixes (x86_64 and Win64) |  | ||||||
| 	- lots of internal changes for GL_EXT_framebuffer_object |  | ||||||
|     Bug fixes: |  | ||||||
| 	- some functions didn't support PBO functionality |  | ||||||
| 	- glGetTexImage didn't convert color index images to RGBA as required |  | ||||||
| 	- fragment program texcoords were sometimes wrong for points and lines |  | ||||||
| 	- fixed problem with negative dot product in arbfplight, fplight demos |  | ||||||
| 	- fixed bug in perspective correction of antialiased, textured lines |  | ||||||
| 	- querying GL_POST_CONVOLUTION_ALPHA_BIAS_EXT returned wrong value |  | ||||||
| 	- fixed a couple per-pixel fog bugs (Soju Matsumoto) |  | ||||||
| 	- glGetBooleanv(GL_FRAGMENT_PROGRAM_BINDING_NV) was broken |  | ||||||
| 	- fixed float parsing bug in ARB frag/vert programs (bug 2520) |  | ||||||
| 	- XMesaGetDepthBuffer() returned incorrect value for bytesPerValue |  | ||||||
| 	- GL_COLOR_MATERIAL with glColor3 didn't properly set diffuse alpha |  | ||||||
| 	- glXChooseFBConfig() crashed if attribList pointer was NULL |  | ||||||
| 	- program state.light[n].spot.direction.w was wrong value (bug 3083) |  | ||||||
| 	- fragment program fog option required glEnable(GL_FOG) - wrong. |  | ||||||
| 	- glColorTable() could produce a Mesa implementation error (bug 3135) |  | ||||||
| 	- RasterPos could get corrupted by color index rendering path |  | ||||||
| 	- Removed bad XTranslateCoordinates call when rendering to Pixmaps |  | ||||||
| 	- glPopAttrib() didn't properly restore GL_TEXTURE_GEN enable state |  | ||||||
| 	- fixed a few Darwin compilation problems |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.3.1 |  | ||||||
|     This was an intermediate release for X.org which wasn't otherwise released. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.3.2  August 19, 2005 |  | ||||||
|     New: |  | ||||||
| 	- The distribution now includes the DRI drivers and GLX code |  | ||||||
|     Changes: |  | ||||||
| 	- Made the DRI "new" driver interface standard, remove old code |  | ||||||
|     Bug fixes: |  | ||||||
| 	- GL_ARB_vertex/fragment_shader were mistakenly listed in the |  | ||||||
| 	  extensions string |  | ||||||
| 	- negative relative addressing in vertex programs was broken |  | ||||||
| 	- update/fix SPARC assembly code for vertex transformation |  | ||||||
| 	- fixed memory leak when freeing GLX drawables/renderbuffers |  | ||||||
| 	- fixed display list memory leak |  | ||||||
| 	- the GL_PIXEL_MAP_I_TO_I table is now floating point, not integer |  | ||||||
| 	- wglGetProcAddress() didn't handle wgl-functions |  | ||||||
| 	- fixed glxext.h cross-compile issue (Colin Harrison) |  | ||||||
| 	- assorted DRI driver fixes |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.4  October 24, 2005 |  | ||||||
|     New: |  | ||||||
| 	- Added a fast XOR line drawing function in Xlib driver |  | ||||||
| 	- Added support for GL_ARB_texture_mirrored_repeat to savage |  | ||||||
| 	  driver (supported only on Savage4 hardware). |  | ||||||
|     Changes: |  | ||||||
| 	- Mesa now packaged in three parts: Library, Demos and GLUT |  | ||||||
|     Bug fixes: |  | ||||||
| 	- GLX_X_RENDERABLE token wasn't accepted by glXChooseFBConfig |  | ||||||
| 	- Some files were present multiple times in the 6.3.2 tarballs |  | ||||||
| 	- r200_vtxtmp_x86.S file was missing from 6.3.2 tarball (bug 4207) |  | ||||||
| 	- glxgears_fbconfig demo didn't work (bug 4237) |  | ||||||
| 	- fixed bug when bilinear sampling 2d textures with borders |  | ||||||
| 	- glXCreatePbuffer() could segfault instead of returning 0 (bug 4235) |  | ||||||
| 	- fixed undefined frexp and rand in X.org libGLcore.a (bug 4242) |  | ||||||
| 	- fixed a few problems with proxy color tables (bug 4270) |  | ||||||
| 	- fixed precision problem in Z clearing (bug 4395) |  | ||||||
| 	- glBitmap, glDraw/CopyPixels mistakenly generated selection hits |  | ||||||
| 	- fixed potential segfault caused by reading pixels outside |  | ||||||
| 	  of renderbuffer bounds |  | ||||||
| 	- glGetTexLevelParameter didn't accept GL_TEXTURE_DEPTH_SIZE_ARB |  | ||||||
| 	- fixed memory corruption bug involving software alpha buffers |  | ||||||
| 	- glReadPixels clipped by window bounds was sometimes broken |  | ||||||
| 	- glDraw/CopyPixels of stencil data ignored the stencil write mask |  | ||||||
| 	- glReadPixels from a texture bound to a framebuffer object didn't work |  | ||||||
| 	- glIsRender/FramebufferEXT weren't totally correct |  | ||||||
| 	- fixed a number of point size attenuation/fade bugs |  | ||||||
| 	- fixed glFogCoord bug 4729 |  | ||||||
| 	- GLX encoding for transpose matrix functions was broken |  | ||||||
| 	- fixed broken fragment program KIL and SWZ instructions |  | ||||||
| 	- fragment programs that wrote result.depth.z didn't work |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.4.1  November 30, 2005 |  | ||||||
|     Bug fixes: |  | ||||||
| 	- redefining a vertex program string didn't take effect in TNL module |  | ||||||
| 	- fixed occasional segfault upon vertex/fragment parsing error |  | ||||||
| 	- vertex program LIT instruction didn't handle 0^0=1 correctly |  | ||||||
| 	- fragment program fog option didn't work with glDrawPixels, glBitmap |  | ||||||
| 	- USE_MGL_NAMESPACE didn't work for x86-64 |  | ||||||
| 	- OSMesa demos were missing from previous release tarballs |  | ||||||
| 	- fixed problem with float->ushort conversion in glClear (bug 4992) |  | ||||||
| 	- popping of GL_EYE_PLANE texgen state was broken (bug 4996) |  | ||||||
| 	- popping of GL_SPOT_DIRECTION light state was broken (bug 5005) |  | ||||||
| 	- fixed occasional triangle color interpolation problem on VMS |  | ||||||
| 	- work around invalid free() call (bug 5131) |  | ||||||
| 	- fixed BSD X server compilation problem by including stdint.h |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.4.2  February 2, 2006 |  | ||||||
|     New: |  | ||||||
| 	- added OSMesaColorClamp() function/feature |  | ||||||
| 	- added wglGetExtensionStringARB() function |  | ||||||
|     Bug fixes: |  | ||||||
| 	- fixed some problems when building on Windows |  | ||||||
| 	- GLw header files weren't installed by installmesa script (bug 5396) |  | ||||||
| 	- GL/glfbdev.h file was missing from tarballs |  | ||||||
| 	- fixed TNL initialization bug which could lead to crash (bug 5791) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 6.5  March 31, 2006 |  | ||||||
|     New: |  | ||||||
| 	- OpenGL Shading Language support through GL_ARB_shader_objects, |  | ||||||
| 	  GL_ARB_shading_language_100, GL_ARB_vertex_shader and |  | ||||||
| 	  GL_ARB_fragment_shader (done by Michal Krol) |  | ||||||
| 	- GL_EXT_packed_depth_stencil extension |  | ||||||
| 	- GL_EXT_timer_query extension |  | ||||||
| 	- GL_EXT_framebuffer_blit extension |  | ||||||
| 	- GL_ARB_half_float_pixel |  | ||||||
| 	- reflect demo improved to support multiple windows |  | ||||||
| 	- singlebuffer demo (shows no/little-flicker single-buffered rendering) |  | ||||||
| 	- r200: enable GL_ARB_texture_env_crossbar, separate the texture |  | ||||||
| 	  sampling unit bits from the texture env combine enable bits |  | ||||||
| 	- r200: add support for GL_ATI_fragment_shader |  | ||||||
| 	- added fast XOR-mode line drawing optimization |  | ||||||
| 	- radeon: add support for all 3 tmus, GL_ARB_texture_cube_map |  | ||||||
| 	  and GL_EXT_fog_coord |  | ||||||
| 	- MESA_GLX_ALPHA_BITS env var for xlib driver |  | ||||||
| 	- many DRI driver updates (including screen rotation support |  | ||||||
| 	  for the Intel DRI driver) |  | ||||||
|     Changes: |  | ||||||
| 	- removed GL_HP_occlusion_test (use GL_ARB_occlusion_query instead) |  | ||||||
| 	- removed GL_SGIX/SGIS_pixel_texture extensions |  | ||||||
|     Bug fixes: |  | ||||||
| 	- fixed glxcontextmodes.c datatype problem (bug 5835) |  | ||||||
| 	- fixed aix-gcc build/install bugs (bug 5874) |  | ||||||
| 	- fixed some bugs in texture env program generation |  | ||||||
| 	- glXCopyContext() didn't handle texture object bindings properly |  | ||||||
| 	- glXCopyContext() didn't copy all lighting state |  | ||||||
| 	- fixed FreeBSD config (Pedro Giffuni) |  | ||||||
| 	- fixed some minor framebuffer object bugs |  | ||||||
| 	- replaced dprintf() with _glu_printf() in GLU (bug 6244) |  | ||||||
| 	- fixed a number of thread safety bugs/regressions |  | ||||||
| 	- fixed a number of GLU tesselator bugs (John Shell, bug 6339) |  | ||||||
| 	- paletted texturing was broken w/ floating point palettes (K. Schultz) |  | ||||||
| 	- lots of assorted framebuffer object bug fixes |  | ||||||
|  |  | ||||||
| 6.5.1  August 31, 2006 |  | ||||||
|     New: |  | ||||||
| 	- Intel i965 DRI driver |  | ||||||
| 	- GL_APPLE_vertex_array_object extension (Ian Romanick) |  | ||||||
| 	- GL_EXT_texture_sRGB extension |  | ||||||
| 	- GL_EXT_gpu_program_parameters (Ian Romanick) |  | ||||||
| 	- "engine" demo |  | ||||||
| 	- updated fbdev driver and GLUT for fbdev (Sean D'Epagnier) |  | ||||||
| 	- many updates to the DRI drivers |  | ||||||
|     Changes: |  | ||||||
| 	- The glVertexAttribARB functions no longer alias the conventional |  | ||||||
| 	  vertex attributes. |  | ||||||
| 	- glxinfo program prints more info with -l option |  | ||||||
| 	- GL_FRAGMENT_PROGRAM_NV and GL_FRAGMENT_PROGRAM_ARB are now |  | ||||||
| 	  compatible, in terms of glBindProgramARB() |  | ||||||
|     Bug fixes: |  | ||||||
| 	- fixed broken texture border handling for depth textures (bug 6498) |  | ||||||
| 	- removed the test for duplicated framebuffer attachments, per |  | ||||||
| 	  version 117 of the GL_EXT_framebuffer_object specification |  | ||||||
| 	- fixed a few render-to-texture bugs, including render to depth texture |  | ||||||
| 	- clipping of lines against user-defined clip planes was broken (6512) |  | ||||||
| 	- assembly language dispatch for SPARC was broken (bug 6484) |  | ||||||
| 	- assorted compilation fixes on various Unix platforms (Dan Schikore) |  | ||||||
| 	- glPopAttrib could restore an invalid value for GL_DRAW_BUFFER |  | ||||||
| 	- assorted minor fixes for 16 and 32 bit/channel modes |  | ||||||
| 	- fixed assorted bugs in texture compression paths |  | ||||||
| 	- fixed indirect rendering vertex array crashes (bug 6863) |  | ||||||
| 	- glDrawPixels GL_INDEX_OFFSET didn't always work |  | ||||||
| 	- fixed convolution memory leak (bug 7077) |  | ||||||
| 	- rectangular depth textures didn't work |  | ||||||
| 	- invalid mode to glBegin didn't generate an error (bug 7142) |  | ||||||
| 	- 'normalized' parameter to glVertexAttribPointerARB didn't work |  | ||||||
| 	- disable bogus GLX_SGI_video_sync extension in xlib driver |  | ||||||
| 	- fixed R128 driver locking bug (Martijn van Oosterhout) |  | ||||||
| 	- using evaluators with vertex programs caused crashes (bug 7564) |  | ||||||
| 	- fragment.position wasn't set correctly for point/line primitives |  | ||||||
| 	- fixed parser bug for scalar sources for GL_NV_fragment_program |  | ||||||
| 	- max fragment program length was incorrectly 128, now 1024 |  | ||||||
| 	- writes to result.depth in fragment programs weren't clamped to [0,1] |  | ||||||
| 	- fixed potential dangling pointer bug in glBindProgram() |  | ||||||
| 	- fixed some memory leaks (and potential crashes) in Xlib driver |  | ||||||
|   | |||||||
| @@ -1,85 +0,0 @@ | |||||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |  | ||||||
| <html lang="en"> |  | ||||||
| <head> |  | ||||||
|   <meta http-equiv="content-type" content="text/html; charset=utf-8"> |  | ||||||
|   <title>Application Issues</title> |  | ||||||
|   <link rel="stylesheet" type="text/css" href="mesa.css"> |  | ||||||
| </head> |  | ||||||
| <body> |  | ||||||
|  |  | ||||||
| <div class="header"> |  | ||||||
|   The Mesa 3D Graphics Library |  | ||||||
| </div> |  | ||||||
|  |  | ||||||
| <iframe src="contents.html"></iframe> |  | ||||||
| <div class="content"> |  | ||||||
|  |  | ||||||
| <h1>Application Issues</h1> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| This page documents known issues with some OpenGL applications. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <h2>Topogun</h2> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| <a href="http://www.topogun.com/">Topogun</a> for Linux (version 2, at least) |  | ||||||
| creates a GLX visual without requesting a depth buffer. |  | ||||||
| This causes bad rendering if the OpenGL driver happens to choose a visual |  | ||||||
| without a depth buffer. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| Mesa 9.1.2 and later (will) support a DRI configuration option to work around |  | ||||||
| this issue. |  | ||||||
| Using the <a href="https://dri.freedesktop.org/wiki/DriConf">driconf</a> tool, |  | ||||||
| set the "Create all visuals with a depth buffer" option before running Topogun. |  | ||||||
| Then, all GLX visuals will be created with a depth buffer. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <h2>Old OpenGL games</h2> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| Some old OpenGL games (approx. ten years or older) may crash during |  | ||||||
| start-up because of an extension string buffer-overflow problem. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| The problem is a modern OpenGL driver will return a very long string |  | ||||||
| for the <code>glGetString(GL_EXTENSIONS)</code> query and if the application |  | ||||||
| naively copies the string into a fixed-size buffer it can overflow the |  | ||||||
| buffer and crash the application. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| The work-around is to set the <code>MESA_EXTENSION_MAX_YEAR</code> |  | ||||||
| environment variable to the approximate release year of the game. |  | ||||||
| This will cause the <code>glGetString(GL_EXTENSIONS)</code> query to only report |  | ||||||
| extensions older than the given year. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| For example, if the game was released in 2001, do |  | ||||||
| </p> |  | ||||||
| <pre> |  | ||||||
| export MESA_EXTENSION_MAX_YEAR=2001 |  | ||||||
| </pre> |  | ||||||
| <p> |  | ||||||
| before running the game. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <h2>Viewperf</h2> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| See the <a href="viewperf.html">Viewperf issues</a> page for a detailed list |  | ||||||
| of Viewperf issues. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| </div> |  | ||||||
| </body> |  | ||||||
| </html> |  | ||||||
| @@ -1,64 +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>Report a Bug</title> |  | ||||||
|   <link rel="stylesheet" type="text/css" href="mesa.css"> |  | ||||||
| </head> |  | ||||||
| <body> |  | ||||||
|  |  | ||||||
| <div class="header"> |  | ||||||
|   The Mesa 3D Graphics Library |  | ||||||
| </div> |  | ||||||
|  |  | ||||||
| <iframe src="contents.html"></iframe> |  | ||||||
| <div class="content"> |  | ||||||
|  |  | ||||||
| <h1>Report a Bug</h1> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| The Mesa bug database is hosted on |  | ||||||
| <a href="https://freedesktop.org">freedesktop.org</a>. |  | ||||||
| The old bug database on SourceForge is no longer used. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| To file a Mesa bug, go to |  | ||||||
| <a href="https://gitlab.freedesktop.org/mesa/mesa/issues"> |  | ||||||
| GitLab on freedesktop.org</a> |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| Please follow these bug reporting guidelines: |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| <ul> |  | ||||||
| <li>Check if a new version of Mesa is available which might have fixed |  | ||||||
| the problem. |  | ||||||
| <li>Check if your bug is already reported in the database. |  | ||||||
| <li>Monitor your bug report for requests for additional information, etc. |  | ||||||
| <li>Attach the output of running glxinfo or wglinfo. |  | ||||||
| This will tell us the Mesa version, which device driver you're using, etc. |  | ||||||
| <li>If you're reporting a crash, try to use your debugger (gdb) to get a stack |  | ||||||
| trace. Also, recompile Mesa in debug mode to get more detailed information. |  | ||||||
| <li>Describe in detail how to reproduce the bug, especially with games |  | ||||||
| and applications that the Mesa developers might not be familiar with. |  | ||||||
| <li>Provide an <a href="https://github.com/apitrace/apitrace">apitrace</a> |  | ||||||
| or simple GLUT-based test program if possible. |  | ||||||
| </ul> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| Bug reports will automatically be forwarded by bugzilla to the Mesa |  | ||||||
| developer's mailing list. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| The easier a bug is to reproduce, the sooner it will be fixed. |  | ||||||
| Please do everything you can to facilitate quickly fixing bugs. |  | ||||||
| If your bug report is vague or your test program doesn't compile |  | ||||||
| easily, the problem may not be fixed very quickly. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| </div> |  | ||||||
| </body> |  | ||||||
| </html> |  | ||||||
| @@ -1,143 +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>Coding Style</title> |  | ||||||
|   <link rel="stylesheet" type="text/css" href="mesa.css"> |  | ||||||
| </head> |  | ||||||
| <body> |  | ||||||
|  |  | ||||||
| <div class="header"> |  | ||||||
|   The Mesa 3D Graphics Library |  | ||||||
| </div> |  | ||||||
|  |  | ||||||
| <iframe src="contents.html"></iframe> |  | ||||||
| <div class="content"> |  | ||||||
|  |  | ||||||
| <h1>Coding Style</h1> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| Mesa is over 20 years old and the coding style has evolved over time. |  | ||||||
| Some old parts use a style that's a bit out of date. |  | ||||||
|  |  | ||||||
| Different sections of mesa can use different coding style as set in the local |  | ||||||
| EditorConfig (.editorconfig) and/or Emacs (.dir-locals.el) file. |  | ||||||
|  |  | ||||||
| Alternatively the following is applicable. |  | ||||||
|  |  | ||||||
| If the guidelines below don't cover something, try following the format of |  | ||||||
| existing, neighboring code. |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| <p> |  | ||||||
| Basic formatting guidelines |  | ||||||
| </p> |  | ||||||
|  |  | ||||||
| <ul> |  | ||||||
| <li>3-space indentation, no tabs. |  | ||||||
| <li>Limit lines to 78 or fewer characters.  The idea is to prevent line |  | ||||||
| wrapping in 80-column editors and terminals.  There are exceptions, such |  | ||||||
| as if you're defining a large, static table of information. |  | ||||||
| <li>Opening braces go on the same line as the if/for/while statement. |  | ||||||
| For example: |  | ||||||
| <pre> |  | ||||||
|    if (condition) { |  | ||||||
|       foo; |  | ||||||
|    } else { |  | ||||||
|       bar; |  | ||||||
|    } |  | ||||||
| </pre> |  | ||||||
|  |  | ||||||
| <li>Put a space before/after operators.  For example, <code>a = b + c;</code> |  | ||||||
| and not <code>a=b+c;</code> |  | ||||||
|  |  | ||||||
| <li>This GNU indent command generally does the right thing for formatting: |  | ||||||
| <pre> |  | ||||||
|    indent -br -i3 -npcs --no-tabs infile.c -o outfile.c |  | ||||||
| </pre> |  | ||||||
|  |  | ||||||
| <li> |  | ||||||
| <p>Use comments wherever you think it would be helpful for other developers. |  | ||||||
| Several specific cases and style examples follow.  Note that we roughly |  | ||||||
| follow <a href="http://www.doxygen.nl">Doxygen</a> conventions. |  | ||||||
| </p> |  | ||||||
| Single-line comments: |  | ||||||
| <pre> |  | ||||||
|    /* null-out pointer to prevent dangling reference below */ |  | ||||||
|    bufferObj = NULL; |  | ||||||
| </pre> |  | ||||||
| Or, |  | ||||||
| <pre> |  | ||||||
|    bufferObj = NULL;  /* prevent dangling reference below */ |  | ||||||
| </pre> |  | ||||||
| Multi-line comment: |  | ||||||
| <pre> |  | ||||||
|    /* If this is a new buffer object id, or one which was generated but |  | ||||||
|     * never used before, allocate a buffer object now. |  | ||||||
|     */ |  | ||||||
| </pre> |  | ||||||
| We try to quote the OpenGL specification where prudent: |  | ||||||
| <pre> |  | ||||||
|    /* Page 38 of the PDF of the OpenGL ES 3.0 spec says: |  | ||||||
|     * |  | ||||||
|     *     "An INVALID_OPERATION error is generated for any of the following |  | ||||||
|     *     conditions: |  | ||||||
|     * |  | ||||||
|     *     * <length> is zero." |  | ||||||
|     * |  | ||||||
|     * Additionally, page 94 of the PDF of the OpenGL 4.5 core spec |  | ||||||
|     * (30.10.2014) also says this, so it's no longer allowed for desktop GL, |  | ||||||
|     * either. |  | ||||||
|     */ |  | ||||||
| </pre> |  | ||||||
| Function comment example: |  | ||||||
| <pre> |  | ||||||
|    /** |  | ||||||
|     * Create and initialize a new buffer object.  Called via the |  | ||||||
|     * ctx->Driver.CreateObject() driver callback function. |  | ||||||
|     * \param  name  integer name of the object |  | ||||||
|     * \param  type  one of GL_FOO, GL_BAR, etc. |  | ||||||
|     * \return  pointer to new object or NULL if error |  | ||||||
|     */ |  | ||||||
|    struct gl_object * |  | ||||||
|    _mesa_create_object(GLuint name, GLenum type) |  | ||||||
|    { |  | ||||||
|       /* function body */ |  | ||||||
|    } |  | ||||||
| </pre> |  | ||||||
|  |  | ||||||
| <li>Put the function return type and qualifiers on one line and the function |  | ||||||
| name and parameters on the next, as seen above.  This makes it easy to use |  | ||||||
| <code>grep ^function_name dir/*</code> to find function definitions.  Also, |  | ||||||
| the opening brace goes on the next line by itself (see above.) |  | ||||||
|  |  | ||||||
| <li>Function names follow various conventions depending on the type of function: |  | ||||||
| <pre> |  | ||||||
|    glFooBar()       - a public GL entry point (in glapi_dispatch.c) |  | ||||||
|    _mesa_FooBar()   - the internal immediate mode function |  | ||||||
|    save_FooBar()    - retained mode (display list) function in dlist.c |  | ||||||
|    foo_bar()        - a static (private) function |  | ||||||
|    _mesa_foo_bar()  - an internal non-static Mesa function |  | ||||||
| </pre> |  | ||||||
|  |  | ||||||
| <li>Constants, macros and enum names are <code>ALL_UPPERCASE</code>, with _ |  | ||||||
| between words. |  | ||||||
| <li>Mesa usually uses camel case for local variables (Ex: |  | ||||||
| <code>localVarname</code>) while gallium typically uses underscores (Ex: |  | ||||||
| <code>local_var_name</code>). |  | ||||||
| <li>Global variables are almost never used because Mesa should be thread-safe. |  | ||||||
|  |  | ||||||
| <li>Booleans.  Places that are not directly visible to the GL API |  | ||||||
| should prefer the use of <code>bool</code>, <code>true</code>, and |  | ||||||
| <code>false</code> over <code>GLboolean</code>, <code>GL_TRUE</code>, and |  | ||||||
| <code>GL_FALSE</code>.  In C code, this may mean that |  | ||||||
| <code>#include <stdbool.h></code> needs to be added.  The |  | ||||||
| <code>try_emit_*</code> methods in <code>src/mesa/program/ir_to_mesa.cpp</code> |  | ||||||
| and <code>src/mesa/state_tracker/st_glsl_to_tgsi.cpp</code> can serve as |  | ||||||
| examples. |  | ||||||
|  |  | ||||||
| </ul> |  | ||||||
|  |  | ||||||
| </div> |  | ||||||
| </body> |  | ||||||
| </html> |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user