Compare commits
	
		
			186 Commits
		
	
	
		
			20.1-branc
			...
			mesa-6.5.3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 03cdacfb6a | ||
|  | 30f3c3dfad | ||
|  | dee1b0d5bb | ||
|  | 6f2b0fe463 | ||
|  | 0c69176498 | ||
|  | 4e7a0385b5 | ||
|  | 4adbd94b10 | ||
|  | 4a2905b645 | ||
|  | 0638c6b530 | ||
|  | 7dd35ce013 | ||
|  | c8629c3178 | ||
|  | 77ccf51cb3 | ||
|  | 01197f0c77 | ||
|  | 69c86ff4fd | ||
|  | 9a42ffad81 | ||
|  | 0d8633bf8c | ||
|  | d79e80a3d0 | ||
|  | d890ebdd25 | ||
|  | 5ee9b3ce72 | ||
|  | 031b539a09 | ||
|  | 47c3c706e8 | ||
|  | 0d830a616c | ||
|  | e219bf8338 | ||
|  | 6c0fba2480 | ||
|  | f4cc159f53 | ||
|  | 04c002abc2 | ||
|  | 78fd17907e | ||
|  | 47edc83080 | ||
|  | 33e34f5bf4 | ||
|  | 3832ecadae | ||
|  | 285ed128ab | ||
|  | 048144074b | ||
|  | 856ae782c7 | ||
|  | 12e3f97541 | ||
|  | 30f6fe0710 | ||
|  | 0aa8f1df3c | ||
|  | d39147a8a1 | ||
|  | 7991f7e936 | ||
|  | 10011efcd7 | ||
|  | 0058815c8f | ||
|  | 02048984b7 | ||
|  | 544601e9f4 | ||
|  | 2634f06c20 | ||
|  | 7549426a16 | ||
|  | 6dcb9a3434 | ||
|  | e5a31c00ec | ||
|  | 00295242fd | ||
|  | 21b6ed7c29 | ||
|  | 01894cbf10 | ||
|  | 28cad2b9d9 | ||
|  | 71d7b7dbe7 | ||
|  | 4563723db1 | ||
|  | 0bce6a1899 | ||
|  | e71d6dbd9c | ||
|  | 132ecd19f3 | ||
|  | a404143f4c | ||
|  | 44467ca45e | ||
|  | f70ea0747d | ||
|  | c619abf18a | ||
|  | 6da1323437 | ||
|  | 1dd29785cf | ||
|  | 5681987ee4 | ||
|  | 6eeb18fc68 | ||
|  | 01c90575b4 | ||
|  | 32e9cb0275 | ||
|  | 017bade93c | ||
|  | c9c79e7cae | ||
|  | 777d41dd07 | ||
|  | 6238c30913 | ||
|  | db164ab514 | ||
|  | c72ef17731 | ||
|  | 8dbee7867f | ||
|  | f403108f5f | ||
|  | 223a97f92a | ||
|  | bb44a8ae1f | ||
|  | b5a5062176 | ||
|  | 50faa32ce3 | ||
|  | b6caed527c | ||
|  | d5ef77353b | ||
|  | 336beba81b | ||
|  | 5d23a7905c | ||
|  | 143dfcc904 | ||
|  | e076cd42f0 | ||
|  | 5bed38974e | ||
|  | 35bc4b82ff | ||
|  | 4e5d870f72 | ||
|  | 83def94db5 | ||
|  | 9d74c1ef2a | ||
|  | 6023d4bdb5 | ||
|  | 5e38f566f2 | ||
|  | b57341a78b | ||
|  | 910c32c0e9 | ||
|  | e49456d8d8 | ||
|  | c46becc9b3 | ||
|  | b6e637106f | ||
|  | 787cffe3d0 | ||
|  | 9d914e6809 | ||
|  | 4e183c66e9 | ||
|  | b1630fcbe8 | ||
|  | cd44f730cc | ||
|  | ce5a39559e | ||
|  | ccffaef603 | ||
|  | ae41f3a3ee | ||
|  | c7e576d6bf | ||
|  | f069b2812e | ||
|  | f20ff6213e | ||
|  | 24ff74bdcb | ||
|  | 230e79916f | ||
|  | 9f14b4db35 | ||
|  | ec916398e7 | ||
|  | 6befad112e | ||
|  | 55ce23b8db | ||
|  | 1292ec1ecf | ||
|  | 65a324062f | ||
|  | c9db617e0b | ||
|  | b43137d0cc | ||
|  | eeca642778 | ||
|  | 5cef6ca36a | ||
|  | be2b518f7b | ||
|  | 1b0d29afbc | ||
|  | 55cf480c0b | ||
|  | 84db6912f0 | ||
|  | 7495cc28a0 | ||
|  | 87744f786b | ||
|  | 5bcfa4c859 | ||
|  | 8ef731bcd1 | ||
|  | 8d02f3c68a | ||
|  | b1f8b49e8b | ||
|  | 75733e4237 | ||
|  | 6e318e2cd1 | ||
|  | 01e6b84b14 | ||
|  | 69705d22be | ||
|  | b16d1dcff5 | ||
|  | 10c5b5d5ba | ||
|  | d9c5c170f6 | ||
|  | 32c7138d86 | ||
|  | d29244d872 | ||
|  | 0fca6eda1e | ||
|  | 1ddf606332 | ||
|  | bc8084da74 | ||
|  | 5eed400862 | ||
|  | a37a0959ac | ||
|  | 53845c52e5 | ||
|  | d429f0b14f | ||
|  | 02339187ad | ||
|  | 827f778525 | ||
|  | d3fc85eea9 | ||
|  | 9a62963129 | ||
|  | a0b2543ba1 | ||
|  | 387acaac69 | ||
|  | 952b775dbe | ||
|  | eadb76b3f8 | ||
|  | b3f7313ae4 | ||
|  | 0c97d48027 | ||
|  | c4a678de9e | ||
|  | 2c834f4d29 | ||
|  | b93d290c9f | ||
|  | 32266bb21a | ||
|  | cab39103b7 | ||
|  | 5c56a80ac9 | ||
|  | d0bac31721 | ||
|  | 9258e54cfa | ||
|  | ccb68495e0 | ||
|  | db4236fe0b | ||
|  | a4e43427f8 | ||
|  | 829190abdd | ||
|  | 99688cd051 | ||
|  | 1ba0a92702 | ||
|  | 065d5a8d17 | ||
|  | 3b53c0ac19 | ||
|  | ed56fe4e82 | ||
|  | 1fbbe807ed | ||
|  | c3dccfa05b | ||
|  | 7703d9293f | ||
|  | bcf560e4b8 | ||
|  | 9d944b501a | ||
|  | cf013a5384 | ||
|  | 2f367491c4 | ||
|  | e7d93b62ec | ||
|  | a5b309c0c9 | ||
|  | df46b96ab0 | ||
|  | bda1e332ce | ||
|  | 53b2ad5fd0 | ||
|  | b44d9c657d | ||
|  | 92ef7527d1 | ||
|  | c37d6b4ca8 | 
| @@ -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 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,44 +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 |  | ||||||
|  |  | ||||||
| [*.html] |  | ||||||
| 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 |  | ||||||
							
								
								
									
										973
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
							
						
						
									
										973
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							| @@ -1,973 +0,0 @@ | |||||||
| variables: |  | ||||||
|   FDO_UPSTREAM_REPO: mesa/mesa |  | ||||||
|  |  | ||||||
| include: |  | ||||||
|   - project: 'freedesktop/ci-templates' |  | ||||||
|     ref: 4b2997287317808830e9cb4eb0f99b691787da88 |  | ||||||
|     file: '/templates/debian.yml' |  | ||||||
|   - local: '.gitlab-ci/lava-gitlab-ci.yml' |  | ||||||
|   - local: '.gitlab-ci/test-source-dep.yml' |  | ||||||
|  |  | ||||||
| stages: |  | ||||||
|   - container |  | ||||||
|   - meson-x86_64 |  | ||||||
|   - scons |  | ||||||
|   - meson-misc |  | ||||||
|   - llvmpipe |  | ||||||
|   - softpipe |  | ||||||
|   - freedreno |  | ||||||
|   - panfrost |  | ||||||
|   - radv |  | ||||||
|   - lima |  | ||||||
|   - virgl |  | ||||||
|   - success |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # When to automatically run the CI |  | ||||||
| .ci-run-policy: |  | ||||||
|   rules: |  | ||||||
|     # If any files affecting the pipeline are changed, build/test jobs run |  | ||||||
|     # automatically once all dependency jobs have passed |  | ||||||
|     - changes: &all_paths |  | ||||||
|       - VERSION |  | ||||||
|       - bin/**/* |  | ||||||
|       # GitLab CI |  | ||||||
|       - .gitlab-ci.yml |  | ||||||
|       - .gitlab-ci/**/* |  | ||||||
|       # Meson |  | ||||||
|       - meson* |  | ||||||
|       - build-support/**/* |  | ||||||
|       - subprojects/**/* |  | ||||||
|       # SCons |  | ||||||
|       - SConstruct |  | ||||||
|       - scons/**/* |  | ||||||
|       - common.py |  | ||||||
|       # Source code |  | ||||||
|       - include/**/* |  | ||||||
|       - src/**/* |  | ||||||
|       when: on_success |  | ||||||
|     # Otherwise, build/test jobs won't run |  | ||||||
|     - when: never |  | ||||||
|   retry: |  | ||||||
|     max: 2 |  | ||||||
|     when: |  | ||||||
|       - runner_system_failure |  | ||||||
|   # Cancel CI run if a newer commit is pushed to the same branch |  | ||||||
|   interruptible: true |  | ||||||
|  |  | ||||||
| success: |  | ||||||
|   stage: success |  | ||||||
|   image: debian:stable-slim |  | ||||||
|   only: |  | ||||||
|     - merge_requests |  | ||||||
|   except: |  | ||||||
|     changes: |  | ||||||
|       *all_paths |  | ||||||
|   variables: |  | ||||||
|     GIT_STRATEGY: none |  | ||||||
|   script: |  | ||||||
|     - echo "Dummy job to make sure every merge request pipeline runs at least one job" |  | ||||||
|  |  | ||||||
|  |  | ||||||
| .ci-deqp-artifacts: |  | ||||||
|   artifacts: |  | ||||||
|     name: "mesa_${CI_JOB_NAME}" |  | ||||||
|     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 CI docker images. |  | ||||||
| # |  | ||||||
| # FDO_DISTRIBUTION_TAG is the tag of the docker image used by later stage jobs. If the |  | ||||||
| # image doesn't exist yet, the container stage job 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. |  | ||||||
|  |  | ||||||
| .container: |  | ||||||
|   stage: container |  | ||||||
|   extends: |  | ||||||
|     - .ci-run-policy |  | ||||||
|   rules: |  | ||||||
|     # Run pipeline by default if it was triggered by Marge Bot, is for a |  | ||||||
|     # merge request, and any files affecting it were changed |  | ||||||
|     - if: '$GITLAB_USER_LOGIN == "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME' |  | ||||||
|       changes: |  | ||||||
|         *all_paths |  | ||||||
|       when: on_success |  | ||||||
|     # Run pipeline by default in the main project if any files affecting it were |  | ||||||
|     # changed |  | ||||||
|     - if: '$CI_PROJECT_PATH == "mesa/mesa"' |  | ||||||
|       changes: |  | ||||||
|         *all_paths |  | ||||||
|       when: on_success |  | ||||||
|     # Allow triggering jobs manually for MRs or branches of forked projects if |  | ||||||
|     # any files affecting the pipeline were changed |  | ||||||
|     - changes: |  | ||||||
|         *all_paths |  | ||||||
|       when: manual |  | ||||||
|     # Otherwise, container jobs won't run |  | ||||||
|     - when: never |  | ||||||
|   variables: |  | ||||||
|     FDO_DISTRIBUTION_VERSION: buster-slim |  | ||||||
|     FDO_REPO_SUFFIX: "debian/$CI_JOB_NAME" |  | ||||||
|     FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/container/${CI_JOB_NAME}.sh' |  | ||||||
|     # no need to pull the whole repo to build the container image |  | ||||||
|     GIT_STRATEGY: none |  | ||||||
|  |  | ||||||
| # Debian 10 based x86 build image |  | ||||||
| x86_build: |  | ||||||
|   extends: |  | ||||||
|     - .fdo.container-build@debian |  | ||||||
|     - .container |  | ||||||
|   variables: |  | ||||||
|     FDO_DISTRIBUTION_TAG: &x86_build "2020-04-22-winehq" |  | ||||||
|  |  | ||||||
| .use-x86_build: |  | ||||||
|   variables: |  | ||||||
|     TAG: *x86_build |  | ||||||
|   image: "$CI_REGISTRY_IMAGE/debian/x86_build:$TAG" |  | ||||||
|   needs: |  | ||||||
|     - x86_build |  | ||||||
|  |  | ||||||
| # Debian 10 based x86 test image for GL |  | ||||||
| x86_test-gl: |  | ||||||
|   extends: x86_build |  | ||||||
|   variables: |  | ||||||
|     FDO_DISTRIBUTION_TAG: &x86_test-gl "2020-04-21" |  | ||||||
|  |  | ||||||
| # Debian 10 based x86 test image for VK |  | ||||||
| x86_test-vk: |  | ||||||
|   extends: x86_build |  | ||||||
|   variables: |  | ||||||
|     FDO_DISTRIBUTION_TAG: &x86_test-vk "2020-04-09" |  | ||||||
|  |  | ||||||
| # Debian 9 based x86 build image (old LLVM) |  | ||||||
| x86_build_old: |  | ||||||
|   extends: x86_build |  | ||||||
|   variables: |  | ||||||
|     FDO_DISTRIBUTION_TAG: &x86_build_old "2019-03-18-jflags" |  | ||||||
|     FDO_DISTRIBUTION_VERSION: stretch-slim |  | ||||||
|  |  | ||||||
| .use-x86_build_old: |  | ||||||
|   variables: |  | ||||||
|     TAG: *x86_build_old |  | ||||||
|   image: "$CI_REGISTRY_IMAGE/debian/x86_build_old:$TAG" |  | ||||||
|   needs: |  | ||||||
|     - x86_build_old |  | ||||||
|  |  | ||||||
| # Debian 10 based ARM build image |  | ||||||
| arm_build: |  | ||||||
|   extends: |  | ||||||
|     - .fdo.container-build@debian@arm64v8 |  | ||||||
|     - .container |  | ||||||
|   variables: |  | ||||||
|     FDO_DISTRIBUTION_TAG: &arm_build "2020-04-01-jflags" |  | ||||||
|  |  | ||||||
| .use-arm_build: |  | ||||||
|   variables: |  | ||||||
|     TAG: *arm_build |  | ||||||
|   image: "$CI_REGISTRY_IMAGE/debian/arm_build:$TAG" |  | ||||||
|   needs: |  | ||||||
|     - arm_build |  | ||||||
|  |  | ||||||
| # Debian 10 based ARM test image |  | ||||||
| arm_test: |  | ||||||
|   extends: arm_build |  | ||||||
|   variables: |  | ||||||
|     FDO_DISTRIBUTION_TAG: &arm_test "2020-03-18-jflags" |  | ||||||
|  |  | ||||||
| .use-arm_test: |  | ||||||
|   variables: |  | ||||||
|     TAG: *arm_test |  | ||||||
|   image: "$CI_REGISTRY_IMAGE/debian/arm_test:$TAG" |  | ||||||
|   needs: |  | ||||||
|     - meson-arm64 |  | ||||||
|     - arm_test |  | ||||||
|  |  | ||||||
| # Native Windows docker builds |  | ||||||
| #  |  | ||||||
| # Unlike the above Linux-based builds - including MinGW/SCons builds which |  | ||||||
| # cross-compile for Windows - which use the freedesktop ci-templates, we |  | ||||||
| # cannot use the same scheme here. As Windows lacks support for |  | ||||||
| # Docker-in-Docker, and Podman does not run natively on Windows, we have |  | ||||||
| # to open-code much of the same ourselves. |  | ||||||
| # |  | ||||||
| # This is achieved by first running in a native Windows shell instance |  | ||||||
| # (host PowerShell) in the container stage to build and push the image, |  | ||||||
| # then in the build stage by executing inside Docker. |  | ||||||
|  |  | ||||||
| .windows-docker-vs2019: |  | ||||||
|   variables: |  | ||||||
|     WINDOWS_TAG: "2020-03-24" |  | ||||||
|     WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/windows/x64_build:$WINDOWS_TAG" |  | ||||||
|     WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows/x64_build:$WINDOWS_TAG" |  | ||||||
|  |  | ||||||
| windows_build_vs2019: |  | ||||||
|   extends: |  | ||||||
|     - .container |  | ||||||
|     - .windows-docker-vs2019 |  | ||||||
|   stage: container |  | ||||||
|   variables: |  | ||||||
|     GIT_STRATEGY: fetch # we do actually need the full repository though |  | ||||||
|   tags: |  | ||||||
|     - windows |  | ||||||
|     - shell |  | ||||||
|     - "1809" |  | ||||||
|     - mesa |  | ||||||
|   script: |  | ||||||
|     - .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $WINDOWS_IMAGE $WINDOWS_UPSTREAM_IMAGE |  | ||||||
|    |  | ||||||
| .use-windows_build_vs2019: |  | ||||||
|   extends: .windows-docker-vs2019 |  | ||||||
|   image: "$WINDOWS_IMAGE" |  | ||||||
|   needs: |  | ||||||
|     - windows_build_vs2019 |  | ||||||
|  |  | ||||||
| # BUILD |  | ||||||
|  |  | ||||||
| # Shared between windows and Linux |  | ||||||
| .build-common: |  | ||||||
|   extends: .ci-run-policy |  | ||||||
|   artifacts: |  | ||||||
|     name: "mesa_${CI_JOB_NAME}" |  | ||||||
|     when: always |  | ||||||
|     paths: |  | ||||||
|       - _build/meson-logs/*.txt |  | ||||||
|       # scons: |  | ||||||
|       - build/*/config.log |  | ||||||
|       - shader-db |  | ||||||
|  |  | ||||||
| # Just Linux |  | ||||||
| .build-linux: |  | ||||||
|   extends: .build-common |  | ||||||
|   variables: |  | ||||||
|     CCACHE_COMPILERCHECK: "content" |  | ||||||
|     CCACHE_COMPRESS: "true" |  | ||||||
|     CCACHE_DIR: /cache/mesa/ccache |  | ||||||
|   # Use ccache transparently, and print stats before/after |  | ||||||
|   before_script: |  | ||||||
|     - export PATH="/usr/lib/ccache:$PATH" |  | ||||||
|     - export CCACHE_BASEDIR="$PWD" |  | ||||||
|     - ccache --show-stats |  | ||||||
|   after_script: |  | ||||||
|     - ccache --show-stats |  | ||||||
|  |  | ||||||
| .build-windows: |  | ||||||
|   extends: .build-common |  | ||||||
|   tags: |  | ||||||
|     - windows |  | ||||||
|     - docker |  | ||||||
|     - "1809" |  | ||||||
|     - mesa |  | ||||||
|   cache: |  | ||||||
|     key: ${CI_JOB_NAME} |  | ||||||
|     paths: |  | ||||||
|       - subprojects/packagecache |  | ||||||
|  |  | ||||||
| .meson-build: |  | ||||||
|   extends: |  | ||||||
|     - .build-linux |  | ||||||
|     - .use-x86_build |  | ||||||
|   stage: meson-x86_64 |  | ||||||
|   variables: |  | ||||||
|     LLVM_VERSION: 9 |  | ||||||
|   script: |  | ||||||
|     - .gitlab-ci/meson-build.sh |  | ||||||
|  |  | ||||||
| .scons-build: |  | ||||||
|   extends: |  | ||||||
|     - .build-linux |  | ||||||
|     - .use-x86_build |  | ||||||
|   stage: scons |  | ||||||
|   variables: |  | ||||||
|     SCONSFLAGS: "-j4" |  | ||||||
|   script: |  | ||||||
|     - .gitlab-ci/scons-build.sh |  | ||||||
|  |  | ||||||
| meson-testing: |  | ||||||
|   extends: |  | ||||||
|     - .meson-build |  | ||||||
|     - .ci-deqp-artifacts |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "true" |  | ||||||
|     DRI_LOADERS: > |  | ||||||
|       -D glx=dri |  | ||||||
|       -D gbm=true |  | ||||||
|       -D egl=true |  | ||||||
|       -D platforms=x11,drm,surfaceless |  | ||||||
|     GALLIUM_ST: > |  | ||||||
|       -D dri3=true |  | ||||||
|     GALLIUM_DRIVERS: "swrast,virgl" |  | ||||||
|     VULKAN_DRIVERS: amd |  | ||||||
|     BUILDTYPE: "debugoptimized" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D werror=true |  | ||||||
|   script: |  | ||||||
|     - .gitlab-ci/meson-build.sh |  | ||||||
|     - .gitlab-ci/prepare-artifacts.sh |  | ||||||
|  |  | ||||||
| meson-gallium: |  | ||||||
|   extends: .meson-build |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "true" |  | ||||||
|     DRI_LOADERS: > |  | ||||||
|       -D glx=dri |  | ||||||
|       -D gbm=true |  | ||||||
|       -D egl=true |  | ||||||
|       -D platforms=x11,wayland,drm,surfaceless |  | ||||||
|     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,swr,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D osmesa=gallium |  | ||||||
|       -D tools=all |  | ||||||
|   script: |  | ||||||
|     - .gitlab-ci/meson-build.sh |  | ||||||
|     - .gitlab-ci/run-shader-db.sh |  | ||||||
|  |  | ||||||
| meson-classic: |  | ||||||
|   extends: .meson-build |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "true" |  | ||||||
|     DRI_LOADERS: > |  | ||||||
|       -D glx=dri |  | ||||||
|       -D gbm=true |  | ||||||
|       -D egl=true |  | ||||||
|       -D platforms=x11,wayland,drm,surfaceless |  | ||||||
|     DRI_DRIVERS: "auto" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D osmesa=classic |  | ||||||
|       -D tools=all |  | ||||||
|  |  | ||||||
| .meson-cross: |  | ||||||
|   extends: |  | ||||||
|     - .meson-build |  | ||||||
|   stage: meson-misc |  | ||||||
|   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 |  | ||||||
|     LLVM_VERSION: "8" |  | ||||||
|  |  | ||||||
| .meson-arm: |  | ||||||
|   extends: |  | ||||||
|     - .meson-cross |  | ||||||
|     - .use-arm_build |  | ||||||
|   variables: |  | ||||||
|     VULKAN_DRIVERS: freedreno |  | ||||||
|     GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4" |  | ||||||
|     BUILDTYPE: "debugoptimized" |  | ||||||
|   tags: |  | ||||||
|     - aarch64 |  | ||||||
|  |  | ||||||
| meson-armhf: |  | ||||||
|   extends: |  | ||||||
|     - .meson-arm |  | ||||||
|     - .ci-deqp-artifacts |  | ||||||
|   variables: |  | ||||||
|     CROSS: armhf |  | ||||||
|     LLVM_VERSION: "7" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D llvm=false |  | ||||||
|   script: |  | ||||||
|     - .gitlab-ci/meson-build.sh |  | ||||||
|     - .gitlab-ci/prepare-artifacts.sh |  | ||||||
|  |  | ||||||
| meson-arm64: |  | ||||||
|   extends: |  | ||||||
|     - .meson-arm |  | ||||||
|     - .ci-deqp-artifacts |  | ||||||
|   variables: |  | ||||||
|     VULKAN_DRIVERS: "freedreno" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D llvm=false |  | ||||||
|   script: |  | ||||||
|     - .gitlab-ci/meson-build.sh |  | ||||||
|     - .gitlab-ci/prepare-artifacts.sh |  | ||||||
|  |  | ||||||
| meson-arm64-build-test: |  | ||||||
|   extends: |  | ||||||
|     - .meson-arm |  | ||||||
|     - .ci-deqp-artifacts |  | ||||||
|   variables: |  | ||||||
|     VULKAN_DRIVERS: "amd" |  | ||||||
|   script: |  | ||||||
|     - .gitlab-ci/meson-build.sh |  | ||||||
|  |  | ||||||
| meson-clang: |  | ||||||
|   extends: .meson-build |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "true" |  | ||||||
|     DRI_LOADERS: > |  | ||||||
|       -D glvnd=true |  | ||||||
|     DRI_DRIVERS: "auto" |  | ||||||
|     GALLIUM_DRIVERS: "auto" |  | ||||||
|     VULKAN_DRIVERS: intel,amd,freedreno |  | ||||||
|     CC: "ccache clang-9" |  | ||||||
|     CXX: "ccache clang++-9" |  | ||||||
|  |  | ||||||
| meson-windows-vs2019: |  | ||||||
|   extends: |  | ||||||
|     - .build-windows |  | ||||||
|     - .use-windows_build_vs2019 |  | ||||||
|   stage: meson-misc |  | ||||||
|   script: |  | ||||||
|     - . .\.gitlab-ci\windows\mesa_build.ps1 |  | ||||||
|  |  | ||||||
| scons-win64: |  | ||||||
|   extends: .scons-build |  | ||||||
|   variables: |  | ||||||
|     SCONS_TARGET: platform=windows machine=x86_64 debug=1 |  | ||||||
|     SCONS_CHECK_COMMAND: "true" |  | ||||||
|   allow_failure: 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-x86_build_old |  | ||||||
|   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 |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D vulkan-overlay-layer=true |  | ||||||
|       -D werror=true |  | ||||||
|  |  | ||||||
| meson-i386: |  | ||||||
|   extends: .meson-cross |  | ||||||
|   variables: |  | ||||||
|     CROSS: i386 |  | ||||||
|     VULKAN_DRIVERS: intel,amd |  | ||||||
|     GALLIUM_DRIVERS: "iris,r300,radeonsi,swrast,virgl" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -D vulkan-overlay-layer=true |  | ||||||
|       -D werror=true |  | ||||||
|   script: |  | ||||||
|     - dpkg -i /var/cache/apt/archives/$CROSS/*.deb |  | ||||||
|     - .gitlab-ci/meson-build.sh |  | ||||||
|  |  | ||||||
| meson-s390x: |  | ||||||
|   extends: |  | ||||||
|     - .meson-cross |  | ||||||
|   tags: |  | ||||||
|     - kvm |  | ||||||
|   variables: |  | ||||||
|     CROSS: s390x |  | ||||||
|     GALLIUM_DRIVERS: "swrast" |  | ||||||
|   script: |  | ||||||
|     # For unknown reasons "too many" installed i386 libraries cause qemu to |  | ||||||
|     # crash while executing llvm-config for s390x. |  | ||||||
|     - apt-get purge -y winehq-stable |  | ||||||
|     - apt-get autoremove -y --purge |  | ||||||
|     - dpkg -i /var/cache/apt/archives/$CROSS/*.deb |  | ||||||
|     - .gitlab-ci/meson-build.sh |  | ||||||
|  |  | ||||||
| meson-ppc64el: |  | ||||||
|   extends: |  | ||||||
|     - meson-s390x |  | ||||||
|   variables: |  | ||||||
|     CROSS: ppc64el |  | ||||||
|     GALLIUM_DRIVERS: "nouveau,radeonsi,swrast,virgl" |  | ||||||
|     VULKAN_DRIVERS: "amd" |  | ||||||
|  |  | ||||||
| meson-mingw32-x86_64: |  | ||||||
|   extends: .meson-build |  | ||||||
|   stage: meson-misc |  | ||||||
|   variables: |  | ||||||
|     UNWIND: "false" |  | ||||||
|     DRI_DRIVERS: "" |  | ||||||
|     GALLIUM_DRIVERS: "swrast" |  | ||||||
|     EXTRA_OPTION: > |  | ||||||
|       -Dllvm=false |  | ||||||
|       -Dosmesa=gallium |  | ||||||
|       --cross-file=.gitlab-ci/x86_64-w64-mingw32 |  | ||||||
|  |  | ||||||
| .test: |  | ||||||
|   extends: |  | ||||||
|     - .ci-run-policy |  | ||||||
|   variables: |  | ||||||
|     GIT_STRATEGY: none # testing doesn't build anything from source |  | ||||||
|   before_script: |  | ||||||
|     # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY |  | ||||||
|     - rm -rf install |  | ||||||
|     - tar -xf artifacts/install.tar |  | ||||||
|     - LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \; |  | ||||||
|   artifacts: |  | ||||||
|     when: always |  | ||||||
|     name: "mesa_${CI_JOB_NAME}" |  | ||||||
|     paths: |  | ||||||
|       - results/ |  | ||||||
|   dependencies: |  | ||||||
|     - meson-testing |  | ||||||
|  |  | ||||||
| .test-gl: |  | ||||||
|   extends: |  | ||||||
|     - .test |  | ||||||
|   variables: |  | ||||||
|     TAG: *x86_test-gl |  | ||||||
|   image: "$CI_REGISTRY_IMAGE/debian/x86_test-gl:$TAG" |  | ||||||
|   needs: |  | ||||||
|     - meson-testing |  | ||||||
|     - x86_test-gl |  | ||||||
|  |  | ||||||
| .test-vk: |  | ||||||
|   extends: |  | ||||||
|     - .test |  | ||||||
|   variables: |  | ||||||
|     TAG: *x86_test-vk |  | ||||||
|   image: "$CI_REGISTRY_IMAGE/debian/x86_test-vk:$TAG" |  | ||||||
|   needs: |  | ||||||
|     - meson-testing |  | ||||||
|     - x86_test-vk |  | ||||||
|  |  | ||||||
| .piglit-test: |  | ||||||
|   extends: |  | ||||||
|     - .test-gl |  | ||||||
|     - .llvmpipe-rules |  | ||||||
|   artifacts: |  | ||||||
|     when: on_failure |  | ||||||
|     name: "mesa_${CI_JOB_NAME}" |  | ||||||
|     paths: |  | ||||||
|       - summary/ |  | ||||||
|   variables: |  | ||||||
|     LIBGL_ALWAYS_SOFTWARE: 1 |  | ||||||
|     PIGLIT_NO_WINDOW: 1 |  | ||||||
|   script: |  | ||||||
|     - install/piglit/run.sh |  | ||||||
|  |  | ||||||
| piglit-quick_gl: |  | ||||||
|   extends: .piglit-test |  | ||||||
|   variables: |  | ||||||
|     LP_NUM_THREADS: 0 |  | ||||||
|     NIR_VALIDATE: 0 |  | ||||||
|     PIGLIT_OPTIONS: > |  | ||||||
|       --process-isolation false |  | ||||||
|       -x arb_gpu_shader5 |  | ||||||
|       -x egl_ext_device_ |  | ||||||
|       -x egl_ext_platform_device |  | ||||||
|       -x ext_timer_query@time-elapsed |  | ||||||
|       -x glx-multithread-clearbuffer |  | ||||||
|       -x glx-multithread-shader-compile |  | ||||||
|       -x max-texture-size |  | ||||||
|       -x maxsize |  | ||||||
|     PIGLIT_PROFILES: quick_gl |  | ||||||
|  |  | ||||||
| piglit-glslparser: |  | ||||||
|   extends: .piglit-test |  | ||||||
|   variables: |  | ||||||
|     LP_NUM_THREADS: 0 |  | ||||||
|     NIR_VALIDATE: 0 |  | ||||||
|     PIGLIT_PROFILES: glslparser |  | ||||||
|  |  | ||||||
| piglit-quick_shader: |  | ||||||
|   extends: .piglit-test |  | ||||||
|   variables: |  | ||||||
|     LP_NUM_THREADS: 1 |  | ||||||
|     NIR_VALIDATE: 0 |  | ||||||
|     PIGLIT_PROFILES: quick_shader |  | ||||||
|  |  | ||||||
| .deqp-test: |  | ||||||
|   variables: |  | ||||||
|     DEQP_SKIPS: deqp-default-skips.txt |  | ||||||
|   script: |  | ||||||
|     - ./install/deqp-runner.sh |  | ||||||
|  |  | ||||||
| .deqp-test-gl: |  | ||||||
|   extends: |  | ||||||
|     - .test-gl |  | ||||||
|     - .deqp-test |  | ||||||
|  |  | ||||||
| .deqp-test-vk: |  | ||||||
|   extends: |  | ||||||
|     - .test-vk |  | ||||||
|     - .deqp-test |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: vk |  | ||||||
|  |  | ||||||
| .fossilize-test: |  | ||||||
|   extends: .test-vk |  | ||||||
|   script: |  | ||||||
|     - ./install/fossilize-runner.sh |  | ||||||
|  |  | ||||||
| llvmpipe-gles2: |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles2 |  | ||||||
|     DEQP_PARALLEL: 4 |  | ||||||
|     NIR_VALIDATE: 0 |  | ||||||
|     # Don't use threads inside llvmpipe, we've already got all 4 cores |  | ||||||
|     # busy with DEQP_PARALLEL. |  | ||||||
|     LP_NUM_THREADS: 0 |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt |  | ||||||
|     LIBGL_ALWAYS_SOFTWARE: "true" |  | ||||||
|     DEQP_EXPECTED_RENDERER: llvmpipe |  | ||||||
|   extends: |  | ||||||
|     - .deqp-test-gl |  | ||||||
|     - .llvmpipe-rules |  | ||||||
|  |  | ||||||
| softpipe-gles2: |  | ||||||
|   extends: |  | ||||||
|     - llvmpipe-gles2 |  | ||||||
|     - .softpipe-rules |  | ||||||
|   variables: |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt |  | ||||||
|     DEQP_SKIPS: deqp-softpipe-skips.txt |  | ||||||
|     GALLIUM_DRIVER: "softpipe" |  | ||||||
|     DEQP_EXPECTED_RENDERER: softpipe |  | ||||||
|  |  | ||||||
| softpipe-gles3: |  | ||||||
|   parallel: 2 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles3 |  | ||||||
|   extends: softpipe-gles2 |  | ||||||
|  |  | ||||||
| softpipe-gles31: |  | ||||||
|   parallel: 4 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles31 |  | ||||||
|   extends: softpipe-gles2 |  | ||||||
|  |  | ||||||
| virgl-gles2: |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles2 |  | ||||||
|     DEQP_PARALLEL: 4 |  | ||||||
|     NIR_VALIDATE: 0 |  | ||||||
|     DEQP_NO_SAVE_RESULTS: 1 |  | ||||||
|     # Don't use threads inside llvmpipe, we've already got all 4 cores |  | ||||||
|     # busy with DEQP_PARALLEL. |  | ||||||
|     LP_NUM_THREADS: 0 |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-virgl-fails.txt |  | ||||||
|     LIBGL_ALWAYS_SOFTWARE: "true" |  | ||||||
|     GALLIUM_DRIVER: "virpipe" |  | ||||||
|     DEQP_EXPECTED_RENDERER: virgl |  | ||||||
|   extends: |  | ||||||
|     - .deqp-test-gl |  | ||||||
|     - .virgl-rules |  | ||||||
|  |  | ||||||
| virgl-gles3: |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles3 |  | ||||||
|     CI_NODE_INDEX: 1 |  | ||||||
|     CI_NODE_TOTAL: 3 |  | ||||||
|     DEQP_RUNNER_OPTIONS: "--timeout 120" |  | ||||||
|   extends: virgl-gles2 |  | ||||||
|  |  | ||||||
| virgl-gles31: |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles31 |  | ||||||
|     CI_NODE_INDEX: 1 |  | ||||||
|     CI_NODE_TOTAL: 10 |  | ||||||
|     DEQP_OPTIONS: "--deqp-log-images=disable" |  | ||||||
|     DEQP_RUNNER_OPTIONS: "--timeout 120" |  | ||||||
|     MESA_GLES_VERSION_OVERRIDE: "3.1" |  | ||||||
|     MESA_GLSL_VERSION_OVERRIDE: "310" |  | ||||||
|   extends: virgl-gles2 |  | ||||||
|  |  | ||||||
| # Rules for tests that should not be present in MRs or the main |  | ||||||
| # project's pipeline (don't block marge or report red on |  | ||||||
| # mesa/mesamaster) but should be present on pipelines in personal |  | ||||||
| # branches (so you can opt in to running the flaky test when you want |  | ||||||
| # to). |  | ||||||
| .test-manual: |  | ||||||
|   rules: |  | ||||||
|     - if: '$CI_PROJECT_PATH != "mesa/mesa" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME' |  | ||||||
|       changes: |  | ||||||
|         *all_paths |  | ||||||
|       when: manual |  | ||||||
|     - when: never |  | ||||||
|  |  | ||||||
| arm64_a630_gles2: |  | ||||||
|   extends: |  | ||||||
|     - .deqp-test-gl |  | ||||||
|     - .use-arm_test |  | ||||||
|     - .freedreno-rules |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles2 |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt |  | ||||||
|     DEQP_SKIPS: deqp-freedreno-a630-skips.txt |  | ||||||
|     NIR_VALIDATE: 0 |  | ||||||
|     DEQP_PARALLEL: 4 |  | ||||||
|     FLAKES_CHANNEL: "#freedreno-ci" |  | ||||||
|     DEQP_EXPECTED_RENDERER: FD630 |  | ||||||
|   tags: |  | ||||||
|     - mesa-cheza |  | ||||||
|   dependencies: |  | ||||||
|     - meson-arm64 |  | ||||||
|  |  | ||||||
| arm64_a630_gles31: |  | ||||||
|   extends: arm64_a630_gles2 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles31 |  | ||||||
|  |  | ||||||
| arm64_a630_gles3: |  | ||||||
|   extends: arm64_a630_gles2 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles3 |  | ||||||
|  |  | ||||||
| arm64_a630_gles31_options: |  | ||||||
|   extends: arm64_a630_gles2 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles31 |  | ||||||
|     CI_NODE_INDEX: 1 |  | ||||||
|     CI_NODE_TOTAL: 5 |  | ||||||
|   script: |  | ||||||
|     # We almost always manage to lower UBOs back to constant uploads in |  | ||||||
|     # the test suite, so get a little testing for it here. |  | ||||||
|     - DEQP_RUN_SUFFIX=-nouboopt IR3_SHADER_DEBUG=nouboopt DEQP_EXPECTED_FAILS=deqp-freedreno-a630-noubo-fails.txt DEQP_CASELIST_FILTER="functional.\*ubo" ./install/deqp-runner.sh |  | ||||||
|     # The driver does some guessing as to whether to render using gmem |  | ||||||
|     # or bypass, and some GLES3.1 features interact with either one. |  | ||||||
|     # Do a little testing with gmem and bypass forced. |  | ||||||
|     - DEQP_RUN_SUFFIX=-bypass FD_MESA_DEBUG=nogmem DEQP_EXPECTED_FAILS=deqp-freedreno-a630-bypass-fails.txt ./install/deqp-runner.sh |  | ||||||
|     - DEQP_RUN_SUFFIX=-gmem FD_MESA_DEBUG=nobypass ./install/deqp-runner.sh |  | ||||||
|  |  | ||||||
| .baremetal-test: |  | ||||||
|   extends: |  | ||||||
|     - .ci-run-policy |  | ||||||
|   stage: test |  | ||||||
|  |  | ||||||
| arm64_a306_gles2: |  | ||||||
|   extends: |  | ||||||
|     - .baremetal-test |  | ||||||
|     - .use-arm_build |  | ||||||
|     - .freedreno-rules |  | ||||||
|   variables: |  | ||||||
|     BM_KERNEL: /lava-files/Image.gz |  | ||||||
|     BM_DTB: /lava-files/apq8016-sbc.dtb |  | ||||||
|     BM_ROOTFS: /lava-files/rootfs-arm64 |  | ||||||
|     BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8" |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-freedreno-a307-fails.txt |  | ||||||
|     DEQP_SKIPS: deqp-freedreno-a307-skips.txt |  | ||||||
|     DEQP_VER: gles2 |  | ||||||
|     DEQP_PARALLEL: 4 |  | ||||||
|     DEQP_EXPECTED_RENDERER: FD307 |  | ||||||
|   script: |  | ||||||
|     - .gitlab-ci/bare-metal/fastboot.sh |  | ||||||
|   needs: |  | ||||||
|     - meson-arm64 |  | ||||||
|   tags: |  | ||||||
|     - google-freedreno-db410c |  | ||||||
|  |  | ||||||
| # Disabled due to flaky results |  | ||||||
| arm64_a306_gles3: |  | ||||||
|   extends: |  | ||||||
|     - arm64_a306_gles2 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles3 |  | ||||||
|     DEQP_PARALLEL: 1 |  | ||||||
|     CI_NODE_INDEX: 1 |  | ||||||
|     CI_NODE_TOTAL: 50 |  | ||||||
|  |  | ||||||
| arm64_a530_gles2: |  | ||||||
|   extends: |  | ||||||
|     - arm64_a306_gles2 |  | ||||||
|   variables: |  | ||||||
|     BM_KERNEL: /lava-files/db820c-kernel |  | ||||||
|     BM_DTB: /lava-files/db820c.dtb |  | ||||||
|     BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8" |  | ||||||
|     DEQP_EXPECTED_FAILS: deqp-freedreno-a530-fails.txt |  | ||||||
|     DEQP_SKIPS: deqp-freedreno-a530-skips.txt |  | ||||||
|     DEQP_EXPECTED_RENDERER: FD530 |  | ||||||
|   tags: |  | ||||||
|     - google-freedreno-db820c |  | ||||||
|  |  | ||||||
| arm64_a530_gles3: |  | ||||||
|   extends: |  | ||||||
|     - arm64_a530_gles2 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles3 |  | ||||||
|     DEQP_PARALLEL: 1 |  | ||||||
|     CI_NODE_INDEX: 1 |  | ||||||
|     CI_NODE_TOTAL: 100 |  | ||||||
|  |  | ||||||
| arm64_a530_gles31: |  | ||||||
|   extends: |  | ||||||
|     - arm64_a530_gles3 |  | ||||||
|   variables: |  | ||||||
|     DEQP_VER: gles31 |  | ||||||
|  |  | ||||||
| # RADV CI |  | ||||||
| .test-radv: |  | ||||||
|   extends: .radv-rules |  | ||||||
|   stage: radv |  | ||||||
|   variables: |  | ||||||
|     VK_DRIVER: radeon |  | ||||||
|     RADV_DEBUG: checkir |  | ||||||
|  |  | ||||||
| .test-radv-fossilize: |  | ||||||
|   extends: |  | ||||||
|     - .fossilize-test |  | ||||||
|     - .test-radv |  | ||||||
|   script: |  | ||||||
|     - ./install/fossilize-runner.sh |  | ||||||
|     - ACO_DEBUG=validateir,validatera RADV_PERFTEST=aco ./install/fossilize-runner.sh |  | ||||||
|  |  | ||||||
| # Can only be triggered manually on personal branches because RADV is the only |  | ||||||
| # driver that does Vulkan testing at the moment. |  | ||||||
| radv_polaris10_vkcts: |  | ||||||
|   extends: |  | ||||||
|     - .deqp-test-vk |  | ||||||
|     - .test-radv |  | ||||||
|     - .test-manual |  | ||||||
|   variables: |  | ||||||
|     DEQP_SKIPS: deqp-radv-polaris10-skips.txt |  | ||||||
|   tags: |  | ||||||
|     - polaris10 |  | ||||||
|  |  | ||||||
| radv-fossils: |  | ||||||
|   extends: |  | ||||||
|     - .fossilize-test |  | ||||||
|     - .test-radv |  | ||||||
|   script: |  | ||||||
|     # Polaris10 |  | ||||||
|     - export RADV_FORCE_FAMILY="polaris10" |  | ||||||
|     - ./install/fossilize-runner.sh |  | ||||||
|     - ACO_DEBUG=validateir,validatera RADV_PERFTEST=aco ./install/fossilize-runner.sh |  | ||||||
|     # Vega10 |  | ||||||
|     - export RADV_FORCE_FAMILY="gfx900" |  | ||||||
|     - ./install/fossilize-runner.sh |  | ||||||
|     - ACO_DEBUG=validateir,validatera RADV_PERFTEST=aco ./install/fossilize-runner.sh |  | ||||||
|     # Navi10 |  | ||||||
|     - export RADV_FORCE_FAMILY="gfx1010" |  | ||||||
|     - ./install/fossilize-runner.sh |  | ||||||
|     - ACO_DEBUG=validateir,validatera RADV_PERFTEST=aco ./install/fossilize-runner.sh |  | ||||||
|  |  | ||||||
| # Traces CI |  | ||||||
| .traces-test: |  | ||||||
|   cache: |  | ||||||
|     key: ${CI_JOB_NAME} |  | ||||||
|     paths: |  | ||||||
|       - traces-db/ |  | ||||||
|  |  | ||||||
| .traces-test-gl: |  | ||||||
|   extends: |  | ||||||
|     - .test-gl |  | ||||||
|     - .traces-test |  | ||||||
|   script: |  | ||||||
|     - ./install/tracie-runner-gl.sh |  | ||||||
|  |  | ||||||
| .traces-test-vk: |  | ||||||
|   extends: |  | ||||||
|     - .test-vk |  | ||||||
|     - .traces-test |  | ||||||
|   script: |  | ||||||
|     - ./install/tracie-runner-vk.sh |  | ||||||
|  |  | ||||||
| llvmpipe-traces: |  | ||||||
|   extends: |  | ||||||
|     - .traces-test-gl |  | ||||||
|     - .llvmpipe-rules |  | ||||||
|   variables: |  | ||||||
|     LIBGL_ALWAYS_SOFTWARE: "true" |  | ||||||
|     GALLIUM_DRIVER: "llvmpipe" |  | ||||||
|     DEVICE_NAME: "gl-vmware-llvmpipe" |  | ||||||
|  |  | ||||||
| radv-polaris10-traces: |  | ||||||
|   extends: |  | ||||||
|     - .traces-test-vk |  | ||||||
|     - .test-radv |  | ||||||
|     - .test-manual |  | ||||||
|   variables: |  | ||||||
|     DEVICE_NAME: "vk-amd-polaris10" |  | ||||||
|   tags: |  | ||||||
|     - polaris10 |  | ||||||
|  |  | ||||||
| virgl-traces: |  | ||||||
|   extends: |  | ||||||
|     - .traces-test-gl |  | ||||||
|     - .virgl-rules |  | ||||||
|   variables: |  | ||||||
|     LIBGL_ALWAYS_SOFTWARE: "true" |  | ||||||
|     GALLIUM_DRIVER: "virpipe" |  | ||||||
|     DEVICE_NAME: "gl-virgl" |  | ||||||
|     MESA_GLES_VERSION_OVERRIDE: "3.1" |  | ||||||
|     MESA_GLSL_VERSION_OVERRIDE: "310" |  | ||||||
| @@ -1,212 +0,0 @@ | |||||||
| # Mesa testing |  | ||||||
|  |  | ||||||
| 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 |  | ||||||
| marge-bot. |  | ||||||
|  |  | ||||||
| There are currently 4 automated testing systems deployed for Mesa. |  | ||||||
| LAVA and gitlab-runner on the DUTs are used in pre-merge testing and |  | ||||||
| are described in this document.  Managing bare metal using |  | ||||||
| gitlab-runner is described under [bare-metal/README.md].  Intel also |  | ||||||
| has a jenkins-based CI system with restricted access that isn't |  | ||||||
| connected to gitlab. |  | ||||||
|  |  | ||||||
| ## Mesa testing using LAVA |  | ||||||
|  |  | ||||||
| [LAVA](https://lavasoftware.org/) is a system for functional testing |  | ||||||
| of boards including deploying custom bootloaders and kernels.  This is |  | ||||||
| particularly relevant to testing Mesa because we often need to change |  | ||||||
| kernels for UAPI changes (and this lets us do full testing of a new |  | ||||||
| kernel during development), and our workloads can easily take down |  | ||||||
| boards when mistakes are made (kernel oopses, OOMs that take out |  | ||||||
| critical system services). |  | ||||||
|  |  | ||||||
| ### Mesa-LAVA software architecture |  | ||||||
|  |  | ||||||
| The gitlab-runner will run on some host that has access to the LAVA |  | ||||||
| lab, with tags like "lava-mesa-boardname" to control only taking in |  | ||||||
| jobs for the hardware that the LAVA lab contains.  The gitlab-runner |  | ||||||
| spawns a docker container with lava-cli in it, and connects to the |  | ||||||
| LAVA lab using a predefined token to submit jobs under a specific |  | ||||||
| device type. |  | ||||||
|  |  | ||||||
| The LAVA instance manages scheduling those jobs to the boards present. |  | ||||||
| For a job, it will deploy the kernel, device tree, and the ramdisk |  | ||||||
| containing the CTS. |  | ||||||
|  |  | ||||||
| ### Deploying a new Mesa-LAVA lab |  | ||||||
|  |  | ||||||
| You'll want to start with setting up your LAVA instance and getting |  | ||||||
| some boards booting using test jobs.  Start with the stock QEMU |  | ||||||
| examples to make sure your instance works at all.  Then, you'll need |  | ||||||
| to define your actual boards. |  | ||||||
|  |  | ||||||
| The device type in lava-gitlab-ci.yml is the device type you create in |  | ||||||
| your LAVA instance, which doesn't have to match the board's name in |  | ||||||
| `/etc/lava-dispatcher/device-types`.  You create your boards under |  | ||||||
| that device type and the Mesa jobs will be scheduled to any of them. |  | ||||||
| Instantiate your boards by creating them in the UI or at the command |  | ||||||
| line attached to that device type, then populate their dictionary |  | ||||||
| (using an "extends" line probably referencing the board's template in |  | ||||||
| `/etc/lava-dispatcher/device-types`).  Now, go find a relevant |  | ||||||
| healthcheck job for your board as a test job definition, or cobble |  | ||||||
| something together from a board that boots using the same boot_method |  | ||||||
| and some public images, and figure out how to get your boards booting. |  | ||||||
|  |  | ||||||
| Once you can boot your board using a custom job definition, it's time |  | ||||||
| to connect Mesa CI to it.  Install gitlab-runner and register as a |  | ||||||
| shared runner (you'll need a gitlab admin for help with this).  The |  | ||||||
| runner *must* have a tag (like "mesa-lava-db410c") to restrict the |  | ||||||
| jobs it takes or it will grab random jobs from tasks across fd.o, and |  | ||||||
| your runner isn't ready for that. |  | ||||||
|  |  | ||||||
| The runner will be running an ARM docker image (we haven't done any |  | ||||||
| x86 LAVA yet, so that isn't documented).  If your host for the |  | ||||||
| gitlab-runner is x86, then you'll need to install qemu-user-static and |  | ||||||
| the binfmt support. |  | ||||||
|  |  | ||||||
| The docker image will need access to the lava instance.  If it's on a |  | ||||||
| public network it should be fine.  If you're running the LAVA instance |  | ||||||
| on localhost, you'll need to set `network_mode="host"` in |  | ||||||
| `/etc/gitlab-runner/config.toml` so it can access localhost.  Create a |  | ||||||
| gitlab-runner user in your LAVA instance, log in under that user on |  | ||||||
| the web interface, and create an API token.  Copy that into a |  | ||||||
| `lavacli.yaml`: |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| default: |  | ||||||
|   token: <token contents> |  | ||||||
|   uri: <url to the instance> |  | ||||||
|   username: gitlab-runner |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Add a volume mount of that `lavacli.yaml` to |  | ||||||
| `/etc/gitlab-runner/config.toml` so that the docker container can |  | ||||||
| access it.  You probably have a `volumes = ["/cache"]` already, so now it would be |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
|   volumes = ["/home/anholt/lava-config/lavacli.yaml:/root/.config/lavacli.yaml", "/cache"] |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Note that this token is visible to anybody that can submit MRs to |  | ||||||
| Mesa!  It is not an actual secret.  We could just bake it into the |  | ||||||
| gitlab CI yml, but this way the current method of connecting to the |  | ||||||
| LAVA instance is separated from the Mesa branches (particularly |  | ||||||
| relevant as we have many stable branches all using CI). |  | ||||||
|  |  | ||||||
| Now it's time to define your test runner in |  | ||||||
| `.gitlab-ci/lava-gitlab-ci.yml`. |  | ||||||
|  |  | ||||||
| ## Mesa testing using gitlab-runner on DUTs |  | ||||||
|  |  | ||||||
| ### 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,47 +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 |  | ||||||
|  |  | ||||||
| CONFIG_FW_LOADER_COMPRESS=y |  | ||||||
| @@ -1,96 +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_DRM_MSM=y |  | ||||||
| CONFIG_DRM_I2C_ADV7511=y |  | ||||||
| CONFIG_DRM_I2C_ADV7533=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 |  | ||||||
|  |  | ||||||
| # db410c ethernet |  | ||||||
| CONFIG_USB_RTL8152=y |  | ||||||
|  |  | ||||||
| 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_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 |  | ||||||
|  |  | ||||||
| # Strip out some stuff we don't need for graphics testing, to reduce |  | ||||||
| # the build. |  | ||||||
| CONFIG_CAN=n |  | ||||||
| CONFIG_SPI=n |  | ||||||
| CONFIG_WIRELESS=n |  | ||||||
| CONFIG_RFKILL=n |  | ||||||
| CONFIG_WLAN=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 |  | ||||||
|  |  | ||||||
| CONFIG_FW_LOADER_COMPRESS=y |  | ||||||
| @@ -1,2 +0,0 @@ | |||||||
| [*.sh] |  | ||||||
| indent_size = 2 |  | ||||||
| @@ -1,80 +0,0 @@ | |||||||
| # bare-metal Mesa testing |  | ||||||
|  |  | ||||||
| Testing Mesa with gitlab-runner running on the devices being tested |  | ||||||
| (DUTs) proved to be too unstable, so this set of scripts is for |  | ||||||
| running Mesa testing on bare-metal boards connected to a separate |  | ||||||
| system using gitlab-runner.  Currently only "fastboot" devices are |  | ||||||
| supported. |  | ||||||
|  |  | ||||||
| In comparison with LAVA, this doesn't involve maintaining a separate |  | ||||||
| webservice with its own job scheduler and replicating jobs between the |  | ||||||
| two.  It also places more of the board support in git, instead of |  | ||||||
| webservice configuration.  Most importantly, it doesn't download the |  | ||||||
| rootfs as artifacts on each job, so we can avoid traffic to |  | ||||||
| freedesktop.org.  On the other hand, the serial interactions and |  | ||||||
| bootloader support are more primitive. |  | ||||||
|  |  | ||||||
| ## Requirements |  | ||||||
|  |  | ||||||
| This testing requires power control of the DUTs by the gitlab-runner |  | ||||||
| machine, since this is what we use to reset the system and get back to |  | ||||||
| a pristine state at the start of testing. |  | ||||||
|  |  | ||||||
| We require access to the console output from the gitlb-runner system, |  | ||||||
| since that is how we get the final results back from te tests.  You |  | ||||||
| should probably have the console on a serial connection, so that you |  | ||||||
| can see bootloader progress. |  | ||||||
|  |  | ||||||
| The boards need to be able to have a kernel/initramfs supplied by the |  | ||||||
| gitlab-runner system, since the initramfs is what contains the Mesa |  | ||||||
| testing payload.  Currently only "fastboot" devices are supported. |  | ||||||
|  |  | ||||||
| The boards should have networking, so that (in a future iteration of |  | ||||||
| this code) we can extract the dEQP .xml results to artifacts on |  | ||||||
| gitlab. |  | ||||||
|  |  | ||||||
| ## Setup |  | ||||||
|  |  | ||||||
| Each board will be registered in fd.o gitlab.  You'll want something |  | ||||||
| like this to register: |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| sudo gitlab-runner register \ |  | ||||||
|      --url https://gitlab.freedesktop.org \ |  | ||||||
|      --registration-token $1 \ |  | ||||||
|      --name MY_BOARD_NAME \ |  | ||||||
|      --tag-list MY_BOARD_TAG \ |  | ||||||
|      --executor docker \ |  | ||||||
|      --docker-image "alpine:latest" \ |  | ||||||
|      --docker-volumes "/dev:/dev" \ |  | ||||||
|      --docker-network-mode "host" \ |  | ||||||
|      --docker-privileged \ |  | ||||||
|      --non-interactive |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| The registration token has to come from a fd.o gitlab admin going to |  | ||||||
| https://gitlab.freedesktop.org/admin/runners |  | ||||||
|  |  | ||||||
| The name scheme for Google's lab is google-freedreno-boardname-nn, and |  | ||||||
| our tag is google-freedreno-db410c.  The tag is what identifies a |  | ||||||
| board type so that board-specific jobs can be dispatched into that |  | ||||||
| pool. |  | ||||||
|  |  | ||||||
| We need privileged mode and the /dev bind mount in order to get at the |  | ||||||
| serial console and fastboot USB devices (--device arguments don't |  | ||||||
| apply to devices that show up after container start, which is the case |  | ||||||
| with fastboot).  We use host network mode so that we can (in the |  | ||||||
| future) spin up a server to collect XML results. |  | ||||||
|  |  | ||||||
| Once you've added your boards, you're going to need to specify the |  | ||||||
| board-specific env vars, adding something like this `environment` line |  | ||||||
| to each runner in `/etc/gitlab-runner/config.toml` |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| [[runners]] |  | ||||||
|   name = "google-freedreno-db410c-01" |  | ||||||
|   environment = ["BM_SERIAL=/dev/ttyDB410c8", "BM_POWERUP=google-power-up.sh 8", "BM_FASTBOOT_SERIAL=15e9e390"] |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Once you've updated your runners' configs, restart with `sudo service |  | ||||||
| gitlab-runner restart` |  | ||||||
| @@ -1,9 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
|  |  | ||||||
| echo "Waiting for $1 to say '$2'" |  | ||||||
|  |  | ||||||
| while ! grep -q "$2" $1; do |  | ||||||
|   sleep 2 |  | ||||||
| done |  | ||||||
| @@ -1,108 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| BM=$CI_PROJECT_DIR/.gitlab-ci/bare-metal |  | ||||||
|  |  | ||||||
| if [ -z "$BM_SERIAL" ]; then |  | ||||||
|   echo "Must set BM_SERIAL in your gitlab-runner config.toml [[runners]] environment" |  | ||||||
|   echo "This is the serial device to talk to for waiting for fastboot to be ready and logging from the kernel." |  | ||||||
|   exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ -z "$BM_POWERUP" ]; then |  | ||||||
|   echo "Must set BM_POWERUP in your gitlab-runner config.toml [[runners]] environment" |  | ||||||
|   echo "This is a shell script that should reset the device and begin its boot sequence" |  | ||||||
|   echo "such that it pauses at fastboot." |  | ||||||
|   exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ -z "$BM_POWERDOWN" ]; then |  | ||||||
|   echo "Must set BM_POWERDOWN in your gitlab-runner config.toml [[runners]] environment" |  | ||||||
|   echo "This is a shell script that should power off the device." |  | ||||||
|   exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ -z "$BM_FASTBOOT_SERIAL" ]; then |  | ||||||
|   echo "Must set BM_FASTBOOT_SERIAL in your gitlab-runner config.toml [[runners]] environment" |  | ||||||
|   echo "This must be the a stable-across-resets fastboot serial number." |  | ||||||
|   exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ -z "$BM_KERNEL" ]; then |  | ||||||
|   echo "Must set BM_KERNEL to your board's kernel vmlinuz or Image.gz in the job's variables:" |  | ||||||
|   exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ -z "$BM_DTB" ]; then |  | ||||||
|   echo "Must set BM_DTB to your board's DTB file in the job's variables:" |  | ||||||
|   exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ -z "$BM_ROOTFS" ]; then |  | ||||||
|   echo "Must set BM_ROOTFS to your board's rootfs directory in the job's variables:" |  | ||||||
|   exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| # Copy the rootfs to a temporary for our setup, as I believe changes to the |  | ||||||
| # container can end up impacting future runs. |  | ||||||
| cp -Rp $BM_ROOTFS rootfs |  | ||||||
|  |  | ||||||
| # Set up the init script that brings up the system. |  | ||||||
| cp $BM/init.sh rootfs/init |  | ||||||
| sed -i "s|DEQP_VER_REPLACE|$DEQP_VER|g" rootfs/init |  | ||||||
| sed -i "s|DEQP_PARALLEL_REPLACE|$DEQP_PARALLEL|g" rootfs/init |  | ||||||
| sed -i "s|DEQP_EXPECTED_RENDERER_REPLACE|$DEQP_EXPECTED_RENDERER|g" rootfs/init |  | ||||||
| sed -i "s|CI_NODE_INDEX_REPLACE|$CI_NODE_INDEX|g" rootfs/init |  | ||||||
| sed -i "s|CI_NODE_TOTAL_REPLACE|$CI_NODE_TOTAL|g" rootfs/init |  | ||||||
|  |  | ||||||
| # Add the Mesa drivers we built, and make a consistent symlink to them. |  | ||||||
| mkdir -p rootfs/$CI_PROJECT_DIR |  | ||||||
| tar -C rootfs/$CI_PROJECT_DIR/ -xf $CI_PROJECT_DIR/artifacts/install.tar |  | ||||||
| ln -sf $CI_PROJECT_DIR/install rootfs/install |  | ||||||
|  |  | ||||||
| # Copy the deqp runner script and metadata. |  | ||||||
| cp .gitlab-ci/deqp-runner.sh rootfs/deqp/. |  | ||||||
| cp .gitlab-ci/$DEQP_SKIPS rootfs/$CI_PROJECT_DIR/install/deqp-skips.txt |  | ||||||
| if [ -n "$DEQP_EXPECTED_FAILS" ]; then |  | ||||||
|   cp .gitlab-ci/$DEQP_EXPECTED_FAILS rootfs/$CI_PROJECT_DIR/install/deqp-expected-fails.txt |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # Finally, pack it up into a cpio rootfs. |  | ||||||
| pushd rootfs |  | ||||||
|   find -H | cpio -H newc -o | xz --check=crc32 -T4 - > $CI_PROJECT_DIR/rootfs.cpio.gz |  | ||||||
| popd |  | ||||||
|  |  | ||||||
| cat $BM_KERNEL $BM_DTB > Image.gz-dtb |  | ||||||
|  |  | ||||||
| abootimg \ |  | ||||||
|   --create artifacts/fastboot.img \ |  | ||||||
|   -k Image.gz-dtb \ |  | ||||||
|   -r rootfs.cpio.gz \ |  | ||||||
|   -c cmdline="$BM_CMDLINE" |  | ||||||
| rm Image.gz-dtb |  | ||||||
|  |  | ||||||
| # Start watching serial, and power up the device. |  | ||||||
| $BM/serial-buffer.py $BM_SERIAL | tee artifacts/serial-output.txt & |  | ||||||
| while [ ! -e artifacts/serial-output.txt ]; do |  | ||||||
|   sleep 1 |  | ||||||
| done |  | ||||||
| PATH=$BM:$PATH $BM_POWERUP |  | ||||||
|  |  | ||||||
| # Once fastboot is ready, boot our image. |  | ||||||
| $BM/expect-output.sh artifacts/serial-output.txt "fastboot: processing commands" |  | ||||||
| fastboot boot -s $BM_FASTBOOT_SERIAL artifacts/fastboot.img |  | ||||||
|  |  | ||||||
| # Wait for the device to complete the deqp run |  | ||||||
| $BM/expect-output.sh artifacts/serial-output.txt "DEQP RESULT" |  | ||||||
|  |  | ||||||
| # power down the device |  | ||||||
| PATH=$BM:$PATH $BM_POWERDOWN |  | ||||||
|  |  | ||||||
| set +e |  | ||||||
| if grep -q "DEQP RESULT: pass" artifacts/serial-output.txt; then |  | ||||||
|    exit 0 |  | ||||||
| else |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| relay=$1 |  | ||||||
|  |  | ||||||
| if [ -z "$relay" ]; then |  | ||||||
|     echo "Must supply a relay arg" |  | ||||||
|     exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| $CI_PROJECT_DIR/.gitlab-ci/bare-metal/google-power-relay.py off $relay |  | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| #!/usr/bin/python3 |  | ||||||
|  |  | ||||||
| import sys |  | ||||||
| import serial |  | ||||||
|  |  | ||||||
| mode = sys.argv[1] |  | ||||||
| relay = sys.argv[2] |  | ||||||
|  |  | ||||||
| # our relays are "off" means "board is powered". |  | ||||||
| mode_swap = { |  | ||||||
|      "on" : "off", |  | ||||||
|      "off" : "on", |  | ||||||
| } |  | ||||||
| mode = mode_swap[mode] |  | ||||||
|  |  | ||||||
| ser = serial.Serial('/dev/ttyACM0', 115200, timeout=2) |  | ||||||
| command = "relay {} {}\n\r".format(mode, relay) |  | ||||||
| ser.write(command.encode()) |  | ||||||
| ser.close() |  | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| relay=$1 |  | ||||||
|  |  | ||||||
| if [ -z "$relay" ]; then |  | ||||||
|     echo "Must supply a relay arg" |  | ||||||
|     exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| $CI_PROJECT_DIR/.gitlab-ci/bare-metal/google-power-relay.py off $relay |  | ||||||
| sleep 5 |  | ||||||
| $CI_PROJECT_DIR/.gitlab-ci/bare-metal/google-power-relay.py on $relay |  | ||||||
| @@ -1,30 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| mount -t proc none /proc |  | ||||||
| mount -t sysfs none /sys |  | ||||||
| mount -t devtmpfs none /dev || echo possibly already mounted |  | ||||||
| mkdir -p /dev/pts |  | ||||||
| mount -t devpts devpts /dev/pts |  | ||||||
|  |  | ||||||
| export DEQP_NO_SAVE_RESULTS=1 |  | ||||||
| export DEQP_VER=DEQP_VER_REPLACE |  | ||||||
| export DEQP_PARALLEL=DEQP_PARALLEL_REPLACE |  | ||||||
| export DEQP_EXPECTED_RENDERER=DEQP_EXPECTED_RENDERER_REPLACE |  | ||||||
| export CI_NODE_INDEX=CI_NODE_INDEX_REPLACE |  | ||||||
| export CI_NODE_TOTAL=CI_NODE_TOTAL_REPLACE |  | ||||||
| export DEQP_SKIPS=deqp-skips.txt |  | ||||||
| if [ -e /install/deqp-expected-fails.txt ]; then |  | ||||||
|   export DEQP_EXPECTED_FAILS=deqp-expected-fails.txt |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if sh /deqp/deqp-runner.sh; then |  | ||||||
|     echo "DEQP RESULT: pass" |  | ||||||
| else |  | ||||||
|     echo "DEQP RESULT: fail" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # Wait until the job would have timed out anyway, so we don't spew a "init |  | ||||||
| # exited" panic. |  | ||||||
| sleep 6000 |  | ||||||
| @@ -1,46 +0,0 @@ | |||||||
| #!/usr/bin/python3 |  | ||||||
|  |  | ||||||
| # Copyright © 2020 Google LLC |  | ||||||
| # |  | ||||||
| # Permission is hereby granted, free of charge, to any person obtaining a |  | ||||||
| # copy of this software and associated documentation files (the "Software"), |  | ||||||
| # to deal in the Software without restriction, including without limitation |  | ||||||
| # the rights to use, copy, modify, merge, publish, distribute, sublicense, |  | ||||||
| # and/or sell copies of the Software, and to permit persons to whom the |  | ||||||
| # Software is furnished to do so, subject to the following conditions: |  | ||||||
| # |  | ||||||
| # The above copyright notice and this permission notice (including the next |  | ||||||
| # paragraph) shall be included in all copies or substantial portions of the |  | ||||||
| # Software. |  | ||||||
| # |  | ||||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |  | ||||||
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |  | ||||||
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL |  | ||||||
| # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |  | ||||||
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |  | ||||||
| # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |  | ||||||
| # IN THE SOFTWARE. |  | ||||||
|  |  | ||||||
| # Tiny script to read bytes from serial, and write the output to stdout, with a |  | ||||||
| # buffer in between so we don't lose serial output from its buffer. |  | ||||||
| # |  | ||||||
| # We don't use 'cu' because it requires stdin to be hooked up and I never |  | ||||||
| # managed to make that work without getting blocked somewhere.  We don't use |  | ||||||
| # 'conserver' because it's non-free. |  | ||||||
|  |  | ||||||
| import sys |  | ||||||
| import serial |  | ||||||
| import select |  | ||||||
| import os |  | ||||||
| import posix |  | ||||||
|  |  | ||||||
| dev=sys.argv[1] |  | ||||||
|  |  | ||||||
| ser = serial.Serial(dev, 115200, timeout=10) |  | ||||||
|  |  | ||||||
| while True: |  | ||||||
|     bytes = ser.read() |  | ||||||
|     sys.stdout.buffer.write(bytes) |  | ||||||
|     sys.stdout.flush() |  | ||||||
|  |  | ||||||
| ser.close() |  | ||||||
| @@ -1,30 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| # Need an unreleased version of Waffle for surfaceless support in apitrace |  | ||||||
| # Replace this build with the Debian package once that's possible |  | ||||||
|  |  | ||||||
| WAFFLE_VERSION="e3c995d9a2693b687501715b6550619922346089" |  | ||||||
| git clone https://gitlab.freedesktop.org/mesa/waffle.git --single-branch --no-checkout /waffle |  | ||||||
| pushd /waffle |  | ||||||
| git checkout "$WAFFLE_VERSION" |  | ||||||
| cmake -B_build -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release . |  | ||||||
| make -C _build -j4 install |  | ||||||
| popd |  | ||||||
| rm -rf /waffle |  | ||||||
|  |  | ||||||
| APITRACE_VERSION="9.0" |  | ||||||
|  |  | ||||||
| git clone https://github.com/apitrace/apitrace.git --single-branch --no-checkout /apitrace |  | ||||||
| pushd /apitrace |  | ||||||
| git checkout "$APITRACE_VERSION" |  | ||||||
| cmake -G Ninja -B_build -H. -DCMAKE_BUILD_TYPE=Release -DENABLE_GUI=False -DENABLE_WAFFLE=on -DWaffle_DIR=/usr/local/lib/cmake/Waffle/ |  | ||||||
| ninja -C _build |  | ||||||
| mkdir build |  | ||||||
| cp _build/apitrace build |  | ||||||
| cp _build/glretrace build |  | ||||||
| cp _build/eglretrace build |  | ||||||
| strip build/* |  | ||||||
| find . -not -path './build' -not -path './build/*' -delete |  | ||||||
| popd |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| git clone https://gitlab.freedesktop.org/mesa/parallel-deqp-runner.git --depth 1 -b mesa-ci-2019-12-17 /parallel-deqp-runner |  | ||||||
| pushd /parallel-deqp-runner |  | ||||||
| meson build/ $EXTRA_MESON_ARGS |  | ||||||
| ninja -C build install |  | ||||||
| popd |  | ||||||
| rm -rf /parallel-deqp-runner |  | ||||||
| @@ -1,60 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| git config --global user.email "mesa@example.com" |  | ||||||
| git config --global user.name "Mesa CI" |  | ||||||
| git clone \ |  | ||||||
|     --depth 1 \ |  | ||||||
|     https://github.com/KhronosGroup/VK-GL-CTS.git \ |  | ||||||
|     -b opengl-es-cts-3.2.6.1 \ |  | ||||||
|     /VK-GL-CTS |  | ||||||
| pushd /VK-GL-CTS |  | ||||||
|  |  | ||||||
| # 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 |  | ||||||
|  |  | ||||||
| # Save the testlog stylesheets: |  | ||||||
| cp doc/testlog-stylesheet/testlog.{css,xsl} /deqp |  | ||||||
| popd |  | ||||||
|  |  | ||||||
| pushd /deqp |  | ||||||
| cmake -G Ninja \ |  | ||||||
|       -DDEQP_TARGET=surfaceless               \ |  | ||||||
|       -DCMAKE_BUILD_TYPE=Release              \ |  | ||||||
|       $EXTRA_CMAKE_ARGS                       \ |  | ||||||
|       /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.6.x/$gles-master.txt \ |  | ||||||
|         /deqp/mustpass/$gles-master.txt |  | ||||||
| done |  | ||||||
|  |  | ||||||
| # Save *some* executor utils, but otherwise strip things down |  | ||||||
| # to reduct deqp build size: |  | ||||||
| mkdir /deqp/executor.save |  | ||||||
| cp /deqp/executor/testlog-to-* /deqp/executor.save |  | ||||||
| rm -rf /deqp/executor |  | ||||||
| mv /deqp/executor.save /deqp/executor |  | ||||||
|  |  | ||||||
| rm -rf /deqp/external |  | ||||||
| rm -rf /deqp/modules/internal |  | ||||||
| rm -rf /deqp/execserver |  | ||||||
| rm -rf /deqp/modules/egl |  | ||||||
| rm -rf /deqp/framework |  | ||||||
| find -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' | xargs rm -rf |  | ||||||
| ${STRIP_CMD:-strip} modules/*/deqp-* |  | ||||||
| du -sh * |  | ||||||
| rm -rf /VK-GL-CTS |  | ||||||
| popd |  | ||||||
| @@ -1,42 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| git clone \ |  | ||||||
|     --depth 1 \ |  | ||||||
|     https://github.com/KhronosGroup/VK-GL-CTS.git \ |  | ||||||
|     -b vulkan-cts-1.2.1.0 \ |  | ||||||
|     /VK-GL-CTS |  | ||||||
| pushd /VK-GL-CTS |  | ||||||
|  |  | ||||||
| # --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 |  | ||||||
|  |  | ||||||
| popd |  | ||||||
|  |  | ||||||
| pushd /deqp |  | ||||||
| cmake -G Ninja \ |  | ||||||
|       -DDEQP_TARGET=x11_glx \ |  | ||||||
|       -DCMAKE_BUILD_TYPE=Release \ |  | ||||||
|       /VK-GL-CTS |  | ||||||
| ninja |  | ||||||
|  |  | ||||||
| # Copy out the mustpass list we want. |  | ||||||
| mkdir /deqp/mustpass |  | ||||||
| cp /VK-GL-CTS/external/vulkancts/mustpass/master/vk-default.txt \ |  | ||||||
|    /deqp/mustpass/vk-master.txt |  | ||||||
|  |  | ||||||
| rm -rf /deqp/modules/internal |  | ||||||
| rm -rf /deqp/executor |  | ||||||
| rm -rf /deqp/execserver |  | ||||||
| rm -rf /deqp/modules/egl |  | ||||||
| rm -rf /deqp/framework |  | ||||||
| find -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' | xargs rm -rf |  | ||||||
| strip external/vulkancts/modules/vulkan/deqp-vk |  | ||||||
| du -sh * |  | ||||||
| rm -rf /VK-GL-CTS |  | ||||||
| popd |  | ||||||
| @@ -1,14 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| git clone https://github.com/ValveSoftware/Fossilize.git |  | ||||||
| cd Fossilize |  | ||||||
| git checkout 6b5b570008c9ab5269e341f04c811fe49a1bb72c |  | ||||||
| git submodule update --init |  | ||||||
| mkdir build |  | ||||||
| cd build |  | ||||||
| cmake .. -DCMAKE_BUILD_TYPE=Release -G Ninja |  | ||||||
| ninja -C . install |  | ||||||
| cd ../.. |  | ||||||
| rm -rf Fossilize |  | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| # https://github.com/LunarG/gfxreconstruct/issues/328 |  | ||||||
| GFXRECONSTRUCT_VERSION=b66cd392a84b226cb60ad9d4130ddeb58a1559cb |  | ||||||
|  |  | ||||||
| git clone https://github.com/LunarG/gfxreconstruct.git --single-branch --no-checkout /gfxreconstruct |  | ||||||
| pushd /gfxreconstruct |  | ||||||
| git checkout "$GFXRECONSTRUCT_VERSION" |  | ||||||
| git submodule update --init |  | ||||||
| git submodule update |  | ||||||
| cmake -G Ninja -B_build -H. -DCMAKE_BUILD_TYPE=Release |  | ||||||
| ninja -C _build gfxrecon-replay |  | ||||||
| mkdir -p build/bin |  | ||||||
| install _build/tools/replay/gfxrecon-replay build/bin |  | ||||||
| strip build/bin/* |  | ||||||
| find . -not -path './build' -not -path './build/*' -delete |  | ||||||
| popd |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit |  | ||||||
| pushd /piglit |  | ||||||
| git checkout 8771c3860505db2bcf4877216221d774bf90af6b |  | ||||||
| patch -p1 <$OLDPWD/.gitlab-ci/piglit/disable-vs_in.diff |  | ||||||
| cmake -G Ninja -DCMAKE_BUILD_TYPE=Release |  | ||||||
| ninja |  | ||||||
| find -name .git -o -name '*ninja*' -o -iname '*cmake*' -o -name '*.[chao]' | xargs rm -rf |  | ||||||
| rm -rf target_api |  | ||||||
| popd |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| RENDERDOC_VERSION=da02e88201dc3b64316fc33ce6ff69cc729689aa |  | ||||||
|  |  | ||||||
| git clone https://github.com/baldurk/renderdoc.git --single-branch --no-checkout /renderdoc |  | ||||||
| pushd /renderdoc |  | ||||||
| git checkout "$RENDERDOC_VERSION" |  | ||||||
| cmake -G Ninja -B_build -H. -DENABLE_QRENDERDOC=false -DCMAKE_BUILD_TYPE=Release |  | ||||||
| ninja -C _build |  | ||||||
| mkdir -p build/lib |  | ||||||
| cp _build/lib/renderdoc.so build/lib |  | ||||||
| cp _build/lib/librenderdoc.so build/lib |  | ||||||
| strip build/lib/* |  | ||||||
| find . -not -path './build' -not -path './build/*' -delete |  | ||||||
| popd |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| mkdir -p /epoxy |  | ||||||
| pushd /epoxy |  | ||||||
| wget -qO- https://github.com/anholt/libepoxy/releases/download/1.5.4/libepoxy-1.5.4.tar.xz | tar -xJ --strip-components=1 |  | ||||||
| meson build/ $EXTRA_MESON_ARGS |  | ||||||
| ninja -C build install |  | ||||||
| popd |  | ||||||
| rm -rf /epoxy |  | ||||||
|  |  | ||||||
| VIRGLRENDERER_VERSION=70b18e56d5c3ed69c561c36e098e8aea71ebffc2 |  | ||||||
| git clone https://gitlab.freedesktop.org/virgl/virglrenderer.git --single-branch --no-checkout /virglrenderer |  | ||||||
| pushd /virglrenderer |  | ||||||
| git checkout "$VIRGLRENDERER_VERSION" |  | ||||||
| meson build/ $EXTRA_MESON_ARGS |  | ||||||
| ninja -C build install |  | ||||||
| popd |  | ||||||
| rm -rf /virglrenderer |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| VULKANTOOLS_VERSION=1862c6a47b64cd09156205d7f7e6b3bfcea76390 |  | ||||||
|  |  | ||||||
| git clone https://github.com/LunarG/VulkanTools.git --single-branch --no-checkout /VulkanTools |  | ||||||
| pushd /VulkanTools |  | ||||||
| git checkout "$VULKANTOOLS_VERSION" |  | ||||||
| ./update_external_sources.sh |  | ||||||
| mkdir _build |  | ||||||
| ./scripts/update_deps.py --dir=_build --config=release --generator=Ninja |  | ||||||
| cmake -G Ninja -B_build -H. \ |  | ||||||
|       -DCMAKE_BUILD_TYPE=Release \ |  | ||||||
|       -DCMAKE_INSTALL_PREFIX=/VulkanTools/build \ |  | ||||||
|       -DBUILD_TESTS=OFF \ |  | ||||||
|       -DBUILD_VLF=OFF \ |  | ||||||
|       -DBUILD_VKTRACE=OFF \ |  | ||||||
|       -DBUILD_VIA=OFF \ |  | ||||||
|       -DBUILD_VKTRACE_REPLAY=OFF \ |  | ||||||
|       -C_build/helper.cmake |  | ||||||
| ninja -C _build VkLayer_screenshot VkLayer_screenshot-staging-json |  | ||||||
| mkdir -p build/etc/vulkan/explicit_layer.d |  | ||||||
| mkdir build/lib |  | ||||||
| install _build/layersvt/staging-json/VkLayer_screenshot.json build/etc/vulkan/explicit_layer.d |  | ||||||
| install _build/layersvt/libVkLayer_screenshot.so build/lib |  | ||||||
| strip build/lib/* |  | ||||||
| find . -not -path './build' -not -path './build/*' -delete |  | ||||||
| popd |  | ||||||
| @@ -1,83 +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 \ |  | ||||||
| 	abootimg \ |  | ||||||
| 	android-sdk-ext4-utils \ |  | ||||||
| 	bc \ |  | ||||||
| 	bison \ |  | ||||||
| 	ccache \ |  | ||||||
| 	cmake \ |  | ||||||
| 	cpio \ |  | ||||||
| 	crossbuild-essential-armhf \ |  | ||||||
| 	debootstrap \ |  | ||||||
| 	fastboot \ |  | ||||||
| 	flex \ |  | ||||||
| 	g++ \ |  | ||||||
| 	gettext \ |  | ||||||
| 	git \ |  | ||||||
| 	lavacli \ |  | ||||||
| 	libdrm-dev:armhf \ |  | ||||||
| 	libegl1-mesa-dev \ |  | ||||||
| 	libegl1-mesa-dev:armhf \ |  | ||||||
| 	libelf-dev \ |  | ||||||
| 	libelf-dev:armhf \ |  | ||||||
| 	libexpat1-dev \ |  | ||||||
| 	libexpat1-dev:armhf \ |  | ||||||
| 	libgles2-mesa-dev \ |  | ||||||
| 	libgles2-mesa-dev:armhf \ |  | ||||||
| 	libpng-dev \ |  | ||||||
| 	libpng-dev:armhf \ |  | ||||||
| 	libssl-dev \ |  | ||||||
| 	libvulkan-dev \ |  | ||||||
| 	libvulkan-dev:armhf \ |  | ||||||
| 	llvm-7-dev:armhf \ |  | ||||||
| 	llvm-8-dev \ |  | ||||||
| 	meson \ |  | ||||||
| 	pkg-config \ |  | ||||||
| 	python \ |  | ||||||
| 	python3-distutils \ |  | ||||||
| 	python3-mako \ |  | ||||||
| 	python3-serial \ |  | ||||||
| 	unzip \ |  | ||||||
| 	wget \ |  | ||||||
| 	xz-utils \ |  | ||||||
| 	zlib1g-dev |  | ||||||
|  |  | ||||||
| . .gitlab-ci/container/container_pre_build.sh |  | ||||||
|  |  | ||||||
| # dependencies where we want a specific version |  | ||||||
| export LIBDRM_VERSION=libdrm-2.4.100 |  | ||||||
|  |  | ||||||
| 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 -D vc4=true -D freedreno=true -D etnaviv=true; ninja -C build install; cd .. |  | ||||||
| rm -rf $LIBDRM_VERSION |  | ||||||
|  |  | ||||||
| ############### 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" |  | ||||||
|  |  | ||||||
| ############### Generate kernel, ramdisk, test suites, etc for LAVA jobs |  | ||||||
|  |  | ||||||
| DEBIAN_ARCH=arm64 . .gitlab-ci/container/lava_arm.sh |  | ||||||
| DEBIAN_ARCH=armhf . .gitlab-ci/container/lava_arm.sh |  | ||||||
|  |  | ||||||
| apt-get purge -y \ |  | ||||||
|         python3-distutils \ |  | ||||||
|         wget |  | ||||||
|  |  | ||||||
| . .gitlab-ci/container/container_post_build.sh |  | ||||||
| @@ -1,72 +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 |  | ||||||
| apt-get update |  | ||||||
| apt-get -y install \ |  | ||||||
| 	bzip2 \ |  | ||||||
| 	ccache \ |  | ||||||
| 	cmake \ |  | ||||||
| 	g++ \ |  | ||||||
| 	gcc \ |  | ||||||
| 	git \ |  | ||||||
| 	libc6-dev \ |  | ||||||
| 	libdrm-nouveau2 \ |  | ||||||
| 	libexpat1 \ |  | ||||||
| 	libgbm-dev \ |  | ||||||
| 	libgbm-dev \ |  | ||||||
| 	libgles2-mesa-dev \ |  | ||||||
| 	libllvm8 \ |  | ||||||
| 	libpng16-16 \ |  | ||||||
| 	libpng-dev \ |  | ||||||
| 	libvulkan-dev \ |  | ||||||
| 	libvulkan1 \ |  | ||||||
| 	meson \ |  | ||||||
| 	netcat \ |  | ||||||
| 	pkg-config \ |  | ||||||
| 	procps \ |  | ||||||
| 	python \ |  | ||||||
| 	python3-distutils \ |  | ||||||
| 	waffle-utils \ |  | ||||||
| 	wget \ |  | ||||||
| 	zlib1g |  | ||||||
|  |  | ||||||
| . .gitlab-ci/container/container_pre_build.sh |  | ||||||
|  |  | ||||||
| ############### Build dEQP runner |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-cts-runner.sh |  | ||||||
|  |  | ||||||
| ############### Build dEQP GL |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-deqp-gl.sh |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Uninstall the build software |  | ||||||
|  |  | ||||||
| ccache --show-stats |  | ||||||
|  |  | ||||||
| apt-get purge -y \ |  | ||||||
|         bzip2 \ |  | ||||||
|         ccache \ |  | ||||||
|         cmake \ |  | ||||||
|         g++ \ |  | ||||||
|         gcc \ |  | ||||||
|         git \ |  | ||||||
|         libc6-dev \ |  | ||||||
|         libgbm-dev \ |  | ||||||
|         libgles2-mesa-dev \ |  | ||||||
|         libpng-dev \ |  | ||||||
|         libvulkan-dev \ |  | ||||||
|         meson \ |  | ||||||
|         pkg-config \ |  | ||||||
|         python \ |  | ||||||
|         python3-distutils \ |  | ||||||
|         wget |  | ||||||
|  |  | ||||||
| apt-get autoremove -y --purge |  | ||||||
| @@ -1,5 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| apt-get autoremove -y --purge |  | ||||||
|  |  | ||||||
| ccache --show-stats |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| # Common setup among container builds before we get to building code. |  | ||||||
|  |  | ||||||
| export CCACHE_COMPILERCHECK=content |  | ||||||
| export CCACHE_COMPRESS=true |  | ||||||
| export CCACHE_DIR=/cache/mesa/ccache |  | ||||||
| export PATH=/usr/lib/ccache:$PATH |  | ||||||
|  |  | ||||||
| # CMake ignores $PATH, so we have to force CC/GCC to the ccache versions. |  | ||||||
| # Watch out, you can't have spaces in here because the renderdoc build fails. |  | ||||||
| export CC="/usr/lib/ccache/gcc" |  | ||||||
| export CXX="/usr/lib/ccache/g++" |  | ||||||
|  |  | ||||||
| ccache --show-stats |  | ||||||
|  |  | ||||||
| if uname -m | grep -q arm || uname -m | grep -q aarch64; then |  | ||||||
|     export JFLAGS=-j8 |  | ||||||
| else |  | ||||||
|     export JFLAGS=-j4 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # Make a wrapper script for ninja to always include the -j flags |  | ||||||
| echo /usr/bin/ninja $JFLAGS '"$@"' > /usr/local/bin/ninja |  | ||||||
| chmod +x /usr/local/bin/ninja |  | ||||||
|  |  | ||||||
| # Set MAKEFLAGS so that all make invocations in container builds include the |  | ||||||
| # flags (doesn't apply to non-container builds, but we don't run make there) |  | ||||||
| export MAKEFLAGS=$JFLAGS |  | ||||||
| @@ -1,98 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| if [[ "$DEBIAN_ARCH" = "arm64" ]]; then |  | ||||||
|     GCC_ARCH="aarch64-linux-gnu" |  | ||||||
|     KERNEL_ARCH="arm64" |  | ||||||
|     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 arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb arch/arm64/boot/dts/qcom/apq8016-sbc.dtb" |  | ||||||
|     KERNEL_IMAGE_NAME="Image" |  | ||||||
| else |  | ||||||
|     GCC_ARCH="arm-linux-gnueabihf" |  | ||||||
|     KERNEL_ARCH="arm" |  | ||||||
|     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" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| ############### Build dEQP runner |  | ||||||
| if [[ "$DEBIAN_ARCH" = "armhf" ]]; then |  | ||||||
|     EXTRA_MESON_ARGS="--cross-file /cross_file-armhf.txt" |  | ||||||
| fi |  | ||||||
| . .gitlab-ci/build-cts-runner.sh |  | ||||||
| mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin |  | ||||||
| mv /usr/local/bin/deqp-runner /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin/. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Build dEQP |  | ||||||
| EXTRA_CMAKE_ARGS="-DCMAKE_C_COMPILER=${GCC_ARCH}-gcc -DCMAKE_CXX_COMPILER=${GCC_ARCH}-g++" |  | ||||||
| STRIP_CMD="${GCC_ARCH}-strip" |  | ||||||
| . .gitlab-ci/build-deqp-gl.sh |  | ||||||
| mv /deqp /lava-files/rootfs-${DEBIAN_ARCH}/. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Cross-build kernel |  | ||||||
| KERNEL_URL="https://gitlab.freedesktop.org/tomeu/linux/-/archive/v5.5-panfrost-fixes/linux-v5.5-panfrost-fixes.tar.gz" |  | ||||||
|  |  | ||||||
| if [[ "$DEBIAN_ARCH" = "armhf" ]]; then |  | ||||||
|     export ARCH=${KERNEL_ARCH} |  | ||||||
|     export CROSS_COMPILE="${GCC_ARCH}-" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| mkdir -p kernel |  | ||||||
| wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C kernel |  | ||||||
| pushd kernel |  | ||||||
| ./scripts/kconfig/merge_config.sh ${DEFCONFIG} ../.gitlab-ci/${KERNEL_ARCH}.config |  | ||||||
| make ${KERNEL_IMAGE_NAME} dtbs |  | ||||||
| cp arch/${KERNEL_ARCH}/boot/${KERNEL_IMAGE_NAME} /lava-files/. |  | ||||||
| cp ${DEVICE_TREES} /lava-files/. |  | ||||||
| popd |  | ||||||
| rm -rf kernel |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Create rootfs |  | ||||||
| set +e |  | ||||||
| debootstrap \ |  | ||||||
|     --variant=minbase \ |  | ||||||
|     --arch=${DEBIAN_ARCH} \ |  | ||||||
|      --components main,contrib,non-free \ |  | ||||||
|     testing \ |  | ||||||
|     /lava-files/rootfs-${DEBIAN_ARCH}/ \ |  | ||||||
|     http://deb.debian.org/debian |  | ||||||
|  |  | ||||||
| cat /lava-files/rootfs-${DEBIAN_ARCH}/debootstrap/debootstrap.log |  | ||||||
| set -e |  | ||||||
|  |  | ||||||
| cp .gitlab-ci/create-rootfs.sh /lava-files/rootfs-${DEBIAN_ARCH}/. |  | ||||||
| chroot /lava-files/rootfs-${DEBIAN_ARCH} sh /create-rootfs.sh |  | ||||||
| rm /lava-files/rootfs-${DEBIAN_ARCH}/create-rootfs.sh |  | ||||||
|  |  | ||||||
| if [ ${DEBIAN_ARCH} = arm64 ]; then |  | ||||||
|     # Pull down a specific build of qcomlt/release/qcomlt-5.4 8c79b3d12355 |  | ||||||
|     # ("Merge tag 'v5.4.23' into release/qcomlt-5.4"), where I used the |  | ||||||
|     # .config from |  | ||||||
|     # http://snapshots.linaro.org/96boards/dragonboard820c/linaro/debian/457/config-5.4.0-qcomlt-arm64 |  | ||||||
|     # with the following merged in: |  | ||||||
|     # |  | ||||||
|     # CONFIG_DRM=y |  | ||||||
|     # CONFIG_DRM_MSM=y |  | ||||||
|     # CONFIG_ATL1C=y |  | ||||||
|     # |  | ||||||
|     # Reason: 5.5 has a big stack of oopses and warns on db820c.  4.14-5.4 |  | ||||||
|     # linaro kernel binaries (see above .config link) have these as modules |  | ||||||
|     # and distributed the modules only in the debian system, not the initrd, |  | ||||||
|     # so they're very hard to extract (involving simg2img and loopback |  | ||||||
|     # mounting).  4.11 is missing d72fea538fe6 ("drm/msm: Fix the check for |  | ||||||
|     # the command size") so it can't actually run fredreno.  qcomlt-4.14 is |  | ||||||
|     # unstable at boot (~10% instaboot rate).  The 5.4 qcomlt kernel with msm |  | ||||||
|     # built in seems like the easiest way to go. |  | ||||||
|     wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/Image.gz -O Image.gz \ |  | ||||||
|          -O /lava-files/db820c-kernel |  | ||||||
|     wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/apq8096-db820c.dtb \ |  | ||||||
|          -O /lava-files/db820c.dtb |  | ||||||
|  |  | ||||||
|     # Make a gzipped copy of the Image for db410c. |  | ||||||
|     gzip -k /lava-files/Image |  | ||||||
| fi |  | ||||||
| @@ -1,52 +0,0 @@ | |||||||
| -----BEGIN PGP PUBLIC KEY BLOCK----- |  | ||||||
| Version: GnuPG v1.4.12 (GNU/Linux) |  | ||||||
|  |  | ||||||
| mQINBFE9lCwBEADi0WUAApM/mgHJRU8lVkkw0CHsZNpqaQDNaHefD6Rw3S4LxNmM |  | ||||||
| EZaOTkhP200XZM8lVdbfUW9xSjA3oPldc1HG26NjbqqCmWpdo2fb+r7VmU2dq3NM |  | ||||||
| R18ZlKixiLDE6OUfaXWKamZsXb6ITTYmgTO6orQWYrnW6ckYHSeaAkW0wkDAryl2 |  | ||||||
| B5v8aoFnQ1rFiVEMo4NGzw4UX+MelF7rxaaregmKVTPiqCOSPJ1McC1dHFN533FY |  | ||||||
| Wh/RVLKWo6npu+owtwYFQW+zyQhKzSIMvNujFRzhIxzxR9Gn87MoLAyfgKEzrbbT |  | ||||||
| DhqqNXTxS4UMUKCQaO93TzetX/EBrRpJj+vP640yio80h4Dr5pAd7+LnKwgpTDk1 |  | ||||||
| G88bBXJAcPZnTSKu9I2c6KY4iRNbvRz4i+ZdwwZtdW4nSdl2792L7Sl7Nc44uLL/ |  | ||||||
| ZqkKDXEBF6lsX5XpABwyK89S/SbHOytXv9o4puv+65Ac5/UShspQTMSKGZgvDauU |  | ||||||
| cs8kE1U9dPOqVNCYq9Nfwinkf6RxV1k1+gwtclxQuY7UpKXP0hNAXjAiA5KS5Crq |  | ||||||
| 7aaJg9q2F4bub0mNU6n7UI6vXguF2n4SEtzPRk6RP+4TiT3bZUsmr+1ktogyOJCc |  | ||||||
| Ha8G5VdL+NBIYQthOcieYCBnTeIH7D3Sp6FYQTYtVbKFzmMK+36ERreL/wARAQAB |  | ||||||
| tD1TeWx2ZXN0cmUgTGVkcnUgLSBEZWJpYW4gTExWTSBwYWNrYWdlcyA8c3lsdmVz |  | ||||||
| dHJlQGRlYmlhbi5vcmc+iQI4BBMBAgAiBQJRPZQsAhsDBgsJCAcDAgYVCAIJCgsE |  | ||||||
| FgIDAQIeAQIXgAAKCRAVz00Yr090Ibx+EADArS/hvkDF8juWMXxh17CgR0WZlHCC |  | ||||||
| 9CTBWkg5a0bNN/3bb97cPQt/vIKWjQtkQpav6/5JTVCSx2riL4FHYhH0iuo4iAPR |  | ||||||
| udC7Cvg8g7bSPrKO6tenQZNvQm+tUmBHgFiMBJi92AjZ/Qn1Shg7p9ITivFxpLyX |  | ||||||
| wpmnF1OKyI2Kof2rm4BFwfSWuf8Fvh7kDMRLHv+MlnK/7j/BNpKdozXxLcwoFBmn |  | ||||||
| l0WjpAH3OFF7Pvm1LJdf1DjWKH0Dc3sc6zxtmBR/KHHg6kK4BGQNnFKujcP7TVdv |  | ||||||
| gMYv84kun14pnwjZcqOtN3UJtcx22880DOQzinoMs3Q4w4o05oIF+sSgHViFpc3W |  | ||||||
| R0v+RllnH05vKZo+LDzc83DQVrdwliV12eHxrMQ8UYg88zCbF/cHHnlzZWAJgftg |  | ||||||
| hB08v1BKPgYRUzwJ6VdVqXYcZWEaUJmQAPuAALyZESw94hSo28FAn0/gzEc5uOYx |  | ||||||
| K+xG/lFwgAGYNb3uGM5m0P6LVTfdg6vDwwOeTNIExVk3KVFXeSQef2ZMkhwA7wya |  | ||||||
| KJptkb62wBHFE+o9TUdtMCY6qONxMMdwioRE5BYNwAsS1PnRD2+jtlI0DzvKHt7B |  | ||||||
| MWd8hnoUKhMeZ9TNmo+8CpsAtXZcBho0zPGz/R8NlJhAWpdAZ1CmcPo83EW86Yq7 |  | ||||||
| BxQUKnNHcwj2ebkCDQRRPZQsARAA4jxYmbTHwmMjqSizlMJYNuGOpIidEdx9zQ5g |  | ||||||
| zOr431/VfWq4S+VhMDhs15j9lyml0y4ok215VRFwrAREDg6UPMr7ajLmBQGau0Fc |  | ||||||
| bvZJ90l4NjXp5p0NEE/qOb9UEHT7EGkEhaZ1ekkWFTWCgsy7rRXfZLxB6sk7pzLC |  | ||||||
| DshyW3zjIakWAnpQ5j5obiDy708pReAuGB94NSyb1HoW/xGsGgvvCw4r0w3xPStw |  | ||||||
| F1PhmScE6NTBIfLliea3pl8vhKPlCh54Hk7I8QGjo1ETlRP4Qll1ZxHJ8u25f/ta |  | ||||||
| RES2Aw8Hi7j0EVcZ6MT9JWTI83yUcnUlZPZS2HyeWcUj+8nUC8W4N8An+aNps9l/ |  | ||||||
| 21inIl2TbGo3Yn1JQLnA1YCoGwC34g8QZTJhElEQBN0X29ayWW6OdFx8MDvllbBV |  | ||||||
| ymmKq2lK1U55mQTfDli7S3vfGz9Gp/oQwZ8bQpOeUkc5hbZszYwP4RX+68xDPfn+ |  | ||||||
| M9udl+qW9wu+LyePbW6HX90LmkhNkkY2ZzUPRPDHZANU5btaPXc2H7edX4y4maQa |  | ||||||
| xenqD0lGh9LGz/mps4HEZtCI5CY8o0uCMF3lT0XfXhuLksr7Pxv57yue8LLTItOJ |  | ||||||
| d9Hmzp9G97SRYYeqU+8lyNXtU2PdrLLq7QHkzrsloG78lCpQcalHGACJzrlUWVP/ |  | ||||||
| fN3Ht3kAEQEAAYkCHwQYAQIACQUCUT2ULAIbDAAKCRAVz00Yr090IbhWEADbr50X |  | ||||||
| OEXMIMGRLe+YMjeMX9NG4jxs0jZaWHc/WrGR+CCSUb9r6aPXeLo+45949uEfdSsB |  | ||||||
| pbaEdNWxF5Vr1CSjuO5siIlgDjmT655voXo67xVpEN4HhMrxugDJfCa6z97P0+ML |  | ||||||
| PdDxim57uNqkam9XIq9hKQaurxMAECDPmlEXI4QT3eu5qw5/knMzDMZj4Vi6hovL |  | ||||||
| wvvAeLHO/jsyfIdNmhBGU2RWCEZ9uo/MeerPHtRPfg74g+9PPfP6nyHD2Wes6yGd |  | ||||||
| oVQwtPNAQD6Cj7EaA2xdZYLJ7/jW6yiPu98FFWP74FN2dlyEA2uVziLsfBrgpS4l |  | ||||||
| tVOlrO2YzkkqUGrybzbLpj6eeHx+Cd7wcjI8CalsqtL6cG8cUEjtWQUHyTbQWAgG |  | ||||||
| 5VPEgIAVhJ6RTZ26i/G+4J8neKyRs4vz+57UGwY6zI4AB1ZcWGEE3Bf+CDEDgmnP |  | ||||||
| LSwbnHefK9IljT9XU98PelSryUO/5UPw7leE0akXKB4DtekToO226px1VnGp3Bov |  | ||||||
| 1GBGvpHvL2WizEwdk+nfk8LtrLzej+9FtIcq3uIrYnsac47Pf7p0otcFeTJTjSq3 |  | ||||||
| krCaoG4Hx0zGQG2ZFpHrSrZTVy6lxvIdfi0beMgY6h78p6M9eYZHQHc02DjFkQXN |  | ||||||
| bXb5c6gCHESH5PXwPU4jQEE7Ib9J6sbk7ZT2Mw== |  | ||||||
| =j+4q |  | ||||||
| -----END PGP PUBLIC KEY BLOCK----- |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| -----BEGIN PGP PUBLIC KEY BLOCK----- |  | ||||||
| Version: GnuPG v2.0.15 (GNU/Linux) |  | ||||||
|  |  | ||||||
| mQENBFu8fWQBCADM64J7qlcnI2KwxSKSdyaOi7hz44EUXDpC3+3hfFP8k28SgV3U |  | ||||||
| 4a/ydOdd2cDSne5w+yjrnJWYuS0sTiE7vQPtKfmCmQZfCStvoRe5Pt+AOy1GA/iu |  | ||||||
| U5wHIZD+/A9CeQcu5L3PkVkmijz0LmSCq7HnnVB0SdFA5eFlV98H875EasvpJ3xU |  | ||||||
| ziI3yvqdZ5/0LgKzOiFjk4rMXQS01a1dNpwFO7EXiq921ZjnXatdnsDQ/NAj7z8P |  | ||||||
| 3qnTAj6yvl7DtdlXXA2hiznEOZNCRLZ69vHq0hGIw+OKjpsUkCZK29AnY4wJxxzY |  | ||||||
| frjknVW7tyZ6Hxwz6R4vaVlZ6h5WR/OiAdqlABEBAAG0NEVtdWxhdG9ycyBPQlMg |  | ||||||
| UHJvamVjdCA8RW11bGF0b3JzQGJ1aWxkLm9wZW5zdXNlLm9yZz6JAT4EEwEIACgF |  | ||||||
| Alu8fWQCGwMFCQQesAAGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEN+hdadR |  | ||||||
| BJYOXVoH/Rd0dRx4SUx7KVjTrDfSuf6jXseyenkl4aQnp46n0MttatkoCdGVvyrq |  | ||||||
| VWvGfO3MI122MnFKqia7Hep1HlcYGe2a5tW/w1SGGEy+VZduxcZCMmVuSnl+3ioG |  | ||||||
| 2fRGx3uoNBEGQIbZ5VVlABUJC+c/Vq1m6kT9Edz4XWRPHW1Nwjjfn79618ebGZMc |  | ||||||
| R0fUM9L3GZw9V/kAK8kXmIL7rkglfewTbs6fByqAix79MjsNURAuCeIc5OmbxL4j |  | ||||||
| LxuoNhnxxucB7YGBhCa9ZL8LYEIbdeyaJmgdHDoUQjz4peXibz5v+Er8mGOwuSLl |  | ||||||
| y1U21T3huNf9Osjw52nxVcDmugBWqQKIRgQTEQIABgUCW7x9ZAAKCRA7MBG3a51l |  | ||||||
| IwayAJ9dHmDag9nFY9GujfMr+foKquFS9wCfQlvp6Sz0N5aKdW00NGnZZ/EKHIQ= |  | ||||||
| =uZyA |  | ||||||
| -----END PGP PUBLIC KEY BLOCK----- |  | ||||||
| @@ -1,249 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| export DEBIAN_FRONTEND=noninteractive |  | ||||||
|  |  | ||||||
| CROSS_ARCHITECTURES="i386 ppc64el s390x" |  | ||||||
| for arch in $CROSS_ARCHITECTURES; do |  | ||||||
|     dpkg --add-architecture $arch |  | ||||||
| done |  | ||||||
|  |  | ||||||
| apt-get install -y \ |  | ||||||
|       ca-certificates \ |  | ||||||
|       gnupg \ |  | ||||||
|       unzip \ |  | ||||||
|       wget |  | ||||||
|  |  | ||||||
| # Upstream LLVM package repository |  | ||||||
| apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key |  | ||||||
| echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list |  | ||||||
|  |  | ||||||
| # Upstream Wine (WineHQ) package repository. We use the OBS service |  | ||||||
| # instead of the repository at the winehq.org domain because: |  | ||||||
| # |  | ||||||
| #   " The WineHQ packages for Debian 10 and later require libfaudio0 |  | ||||||
| #     as a dependency. Since the distro does not provide it for Debian |  | ||||||
| #     10, users of that version can download libfaudio0 packages from |  | ||||||
| #     the OBS. See https://forum.winehq.org/viewtopic.php?f=8&t=32192 |  | ||||||
| #     for details." |  | ||||||
| # |  | ||||||
| # As explained at https://wiki.winehq.org/Debian |  | ||||||
| apt-key add .gitlab-ci/container/obs-emulators-wine-debian.gpg.key |  | ||||||
| echo 'deb https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/Debian_10/ ./' >/etc/apt/sources.list.d/obs-emulators-wine-debian.list |  | ||||||
|  |  | ||||||
| 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 |  | ||||||
| apt-get dist-upgrade -y |  | ||||||
|  |  | ||||||
| apt-get install -y --no-remove \ |  | ||||||
|       autoconf \ |  | ||||||
|       automake \ |  | ||||||
|       autotools-dev \ |  | ||||||
|       bison \ |  | ||||||
|       ccache \ |  | ||||||
|       clang-9 \ |  | ||||||
|       cmake \ |  | ||||||
|       flex \ |  | ||||||
|       g++ \ |  | ||||||
|       gcc \ |  | ||||||
|       gettext \ |  | ||||||
|       git \ |  | ||||||
|       libclang-6.0-dev \ |  | ||||||
|       libclang-7-dev \ |  | ||||||
|       libclang-8-dev \ |  | ||||||
|       libclang-9-dev \ |  | ||||||
|       libclc-dev \ |  | ||||||
|       libelf-dev \ |  | ||||||
|       libepoxy-dev \ |  | ||||||
|       libexpat1-dev \ |  | ||||||
|       libgbm-dev \ |  | ||||||
|       libgtk-3-dev \ |  | ||||||
|       libomxil-bellagio-dev \ |  | ||||||
|       libpciaccess-dev \ |  | ||||||
|       libtool \ |  | ||||||
|       libunwind-dev \ |  | ||||||
|       libva-dev \ |  | ||||||
|       libvdpau-dev \ |  | ||||||
|       libvulkan-dev \ |  | ||||||
|       libvulkan-dev:ppc64el \ |  | ||||||
|       libx11-dev \ |  | ||||||
|       libx11-xcb-dev \ |  | ||||||
|       libxdamage-dev \ |  | ||||||
|       libxext-dev \ |  | ||||||
|       libxml2-utils \ |  | ||||||
|       libxrandr-dev \ |  | ||||||
|       libxrender-dev \ |  | ||||||
|       libxshmfence-dev \ |  | ||||||
|       libxvmc-dev \ |  | ||||||
|       libxxf86vm-dev \ |  | ||||||
|       llvm-6.0-dev \ |  | ||||||
|       llvm-7-dev \ |  | ||||||
|       llvm-9-dev \ |  | ||||||
|       meson \ |  | ||||||
|       pkg-config \ |  | ||||||
|       python-mako \ |  | ||||||
|       python3-mako \ |  | ||||||
|       python3-pil \ |  | ||||||
|       python3-requests \ |  | ||||||
|       qemu-user \ |  | ||||||
|       scons \ |  | ||||||
|       x11proto-dri2-dev \ |  | ||||||
|       x11proto-gl-dev \ |  | ||||||
|       x11proto-randr-dev \ |  | ||||||
|       xz-utils \ |  | ||||||
|       zlib1g-dev |  | ||||||
|  |  | ||||||
| . .gitlab-ci/container/container_pre_build.sh |  | ||||||
|  |  | ||||||
| # Cross-build Mesa deps |  | ||||||
| for arch in $CROSS_ARCHITECTURES; do |  | ||||||
|     apt-get install -y --no-remove \ |  | ||||||
|             crossbuild-essential-${arch} \ |  | ||||||
|             libdrm-dev:${arch} \ |  | ||||||
|             libelf-dev:${arch} \ |  | ||||||
|             libexpat1-dev:${arch} \ |  | ||||||
|             libffi-dev:${arch} \ |  | ||||||
|             libllvm8:${arch} \ |  | ||||||
|             libstdc++6:${arch} \ |  | ||||||
|             libtinfo-dev:${arch} |  | ||||||
|  |  | ||||||
|     if [ "$arch" == "i386" ]; then |  | ||||||
|         # libpciaccess-dev is only needed for Intel. |  | ||||||
|         apt-get install -y --no-remove \ |  | ||||||
|             libpciaccess-dev:${arch} |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     mkdir /var/cache/apt/archives/${arch} |  | ||||||
|     # Download llvm-* packages, but don't install them yet, since they can |  | ||||||
|     # only be installed for one architecture at a time |  | ||||||
|     apt-get install -o Dir::Cache::archives=/var/cache/apt/archives/$arch --download-only -y --no-remove \ |  | ||||||
|        llvm-8-dev:${arch} |  | ||||||
| done |  | ||||||
|  |  | ||||||
| apt-get install -y --no-remove \ |  | ||||||
|       llvm-8-dev \ |  | ||||||
|  |  | ||||||
| # for 64bit windows cross-builds |  | ||||||
| apt-get install -y --no-remove \ |  | ||||||
|       libz-mingw-w64-dev \ |  | ||||||
|       mingw-w64 \ |  | ||||||
|       winehq-stable |  | ||||||
|  |  | ||||||
| # 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 |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # 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" |  | ||||||
|   fi |  | ||||||
|  |  | ||||||
|   # Rely on qemu-user being configured in binfmt_misc on the host |  | ||||||
|   sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file" |  | ||||||
| done |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # 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             LIBDRM_VERSION=libdrm-2.4.100 |  | ||||||
| export           XCBPROTO_VERSION=xcb-proto-1.13 |  | ||||||
| export             LIBXCB_VERSION=libxcb-1.13 |  | ||||||
| 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 $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 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 -D vc4=true -D freedreno=true -D etnaviv=true -D libdir=lib/x86_64-linux-gnu; ninja -C build install |  | ||||||
| rm -rf build; meson --cross-file=/cross_file-ppc64el.txt build -D libdir=lib/powerpc64le-linux-gnu; ninja -C build install |  | ||||||
| rm -rf build; meson --cross-file=/cross_file-i386.txt build -D libdir=lib/i386-linux-gnu; ninja -C build install |  | ||||||
| cd .. |  | ||||||
| rm -rf $LIBDRM_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 |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # The version of libglvnd-dev in debian is too old |  | ||||||
| # Check this page to see when this local compilation can be dropped in favour of the package: |  | ||||||
| # https://packages.debian.org/libglvnd-dev |  | ||||||
| GLVND_VERSION=1.2.0 |  | ||||||
| wget https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v$GLVND_VERSION/libglvnd-v$GLVND_VERSION.tar.gz |  | ||||||
| tar -xvf libglvnd-v$GLVND_VERSION.tar.gz && rm libglvnd-v$GLVND_VERSION.tar.gz |  | ||||||
| pushd libglvnd-v$GLVND_VERSION; ./autogen.sh; ./configure; make install; popd |  | ||||||
| rm -rf libglvnd-v$GLVND_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 |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ############### Uninstall the build software |  | ||||||
|  |  | ||||||
| apt-get purge -y \ |  | ||||||
|       autoconf \ |  | ||||||
|       automake \ |  | ||||||
|       autotools-dev \ |  | ||||||
|       cmake \ |  | ||||||
|       git \ |  | ||||||
|       gnupg \ |  | ||||||
|       libgbm-dev \ |  | ||||||
|       libtool \ |  | ||||||
|       unzip \ |  | ||||||
|       wget |  | ||||||
|  |  | ||||||
| . .gitlab-ci/container/container_post_build.sh |  | ||||||
| @@ -1,60 +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 \ |  | ||||||
|       bison \ |  | ||||||
|       bzip2 \ |  | ||||||
|       ccache \ |  | ||||||
|       flex \ |  | ||||||
|       g++ \ |  | ||||||
|       gcc \ |  | ||||||
|       gettext \ |  | ||||||
|       git \ |  | ||||||
|       libclang-3.9-dev \ |  | ||||||
|       libclang-4.0-dev \ |  | ||||||
|       libclang-5.0-dev \ |  | ||||||
|       libclc-dev \ |  | ||||||
|       libdrm-dev \ |  | ||||||
|       libelf-dev \ |  | ||||||
|       libepoxy-dev \ |  | ||||||
|       libexpat1-dev \ |  | ||||||
|       libpng-dev \ |  | ||||||
|       libunwind-dev \ |  | ||||||
|       llvm-3.9-dev \ |  | ||||||
|       llvm-4.0-dev \ |  | ||||||
|       llvm-5.0-dev \ |  | ||||||
|       meson \ |  | ||||||
|       pkg-config \ |  | ||||||
|       python-mako \ |  | ||||||
|       python3-mako \ |  | ||||||
|       scons \ |  | ||||||
|       xz-utils \ |  | ||||||
|       zlib1g-dev |  | ||||||
|  |  | ||||||
| . .gitlab-ci/container/container_pre_build.sh |  | ||||||
|  |  | ||||||
| ############### Uninstall unused packages |  | ||||||
|  |  | ||||||
| . .gitlab-ci/container/container_post_build.sh |  | ||||||
| @@ -1,137 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| export DEBIAN_FRONTEND=noninteractive |  | ||||||
|  |  | ||||||
| apt-get install -y \ |  | ||||||
|       ca-certificates \ |  | ||||||
|       gnupg |  | ||||||
|  |  | ||||||
| # Upstream LLVM package repository |  | ||||||
| apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key |  | ||||||
| echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list |  | ||||||
|  |  | ||||||
| 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 \ |  | ||||||
|       autoconf \ |  | ||||||
|       automake \ |  | ||||||
|       ccache \ |  | ||||||
|       cmake \ |  | ||||||
|       g++ \ |  | ||||||
|       gcc \ |  | ||||||
|       git \ |  | ||||||
|       libexpat1 \ |  | ||||||
|       libgbm-dev \ |  | ||||||
|       libgles2-mesa-dev \ |  | ||||||
|       libllvm9 \ |  | ||||||
|       libpcre3-dev \ |  | ||||||
|       libpcre32-3 \ |  | ||||||
|       libpng-dev \ |  | ||||||
|       libpng16-16 \ |  | ||||||
|       libpython3.7 \ |  | ||||||
|       libvulkan-dev \ |  | ||||||
|       libvulkan1 \ |  | ||||||
|       libwaffle-dev \ |  | ||||||
|       libwayland-server0 \ |  | ||||||
|       libxcb-keysyms1 \ |  | ||||||
|       libxcb-keysyms1-dev \ |  | ||||||
|       libxcb-xfixes0 \ |  | ||||||
|       libxkbcommon-dev \ |  | ||||||
|       libxkbcommon0 \ |  | ||||||
|       libxrender-dev \ |  | ||||||
|       libxrender1 \ |  | ||||||
|       make \ |  | ||||||
|       meson \ |  | ||||||
|       patch \ |  | ||||||
|       pkg-config \ |  | ||||||
|       python \ |  | ||||||
|       python3-distutils \ |  | ||||||
|       python3-mako \ |  | ||||||
|       python3-numpy \ |  | ||||||
|       python3-pil \ |  | ||||||
|       python3-requests \ |  | ||||||
|       python3-six \ |  | ||||||
|       python3-yaml \ |  | ||||||
|       python3.7 \ |  | ||||||
|       python3.7-dev \ |  | ||||||
|       qt5-default \ |  | ||||||
|       qt5-qmake \ |  | ||||||
|       waffle-utils \ |  | ||||||
|       wget \ |  | ||||||
|       xauth \ |  | ||||||
|       xvfb \ |  | ||||||
|       xz-utils \ |  | ||||||
|       zlib1g |  | ||||||
|  |  | ||||||
| . .gitlab-ci/container/container_pre_build.sh |  | ||||||
|  |  | ||||||
| ############### Build virglrenderer |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-virglrenderer.sh |  | ||||||
|  |  | ||||||
| ############### Build piglit |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-piglit.sh |  | ||||||
|  |  | ||||||
| ############### Build dEQP runner |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-cts-runner.sh |  | ||||||
|  |  | ||||||
| ############### Build dEQP GL |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-deqp-gl.sh |  | ||||||
|  |  | ||||||
| ############### Build apitrace |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-apitrace.sh |  | ||||||
|  |  | ||||||
| ############### Build renderdoc |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-renderdoc.sh |  | ||||||
|  |  | ||||||
| ############### Uninstall the build software |  | ||||||
|  |  | ||||||
| ccache --show-stats |  | ||||||
|  |  | ||||||
| apt-get purge -y \ |  | ||||||
|       autoconf \ |  | ||||||
|       automake \ |  | ||||||
|       ccache \ |  | ||||||
|       cmake \ |  | ||||||
|       g++ \ |  | ||||||
|       gcc \ |  | ||||||
|       gnupg \ |  | ||||||
|       libc6-dev \ |  | ||||||
|       libgbm-dev \ |  | ||||||
|       libgles2-mesa-dev \ |  | ||||||
|       libpcre3-dev \ |  | ||||||
|       libpng-dev \ |  | ||||||
|       libwaffle-dev \ |  | ||||||
|       libxcb-keysyms1-dev \ |  | ||||||
|       libxkbcommon-dev \ |  | ||||||
|       libxrender-dev \ |  | ||||||
|       make \ |  | ||||||
|       meson \ |  | ||||||
|       patch \ |  | ||||||
|       pkg-config \ |  | ||||||
|       python3-distutils \ |  | ||||||
|       python3.7-dev \ |  | ||||||
|       wget \ |  | ||||||
|       xz-utils |  | ||||||
|  |  | ||||||
| apt-get autoremove -y --purge |  | ||||||
| @@ -1,182 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| export DEBIAN_FRONTEND=noninteractive |  | ||||||
|  |  | ||||||
| apt-get install -y \ |  | ||||||
|       ca-certificates \ |  | ||||||
|       gnupg |  | ||||||
|  |  | ||||||
| # Upstream LLVM package repository |  | ||||||
| apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key |  | ||||||
| echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list |  | ||||||
|  |  | ||||||
| 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 |  | ||||||
|  |  | ||||||
| apt-get dist-upgrade -y |  | ||||||
|  |  | ||||||
| apt-get install -y --no-remove \ |  | ||||||
|       ccache \ |  | ||||||
|       cmake \ |  | ||||||
|       g++ \ |  | ||||||
|       gcc \ |  | ||||||
|       git \ |  | ||||||
|       git-lfs \ |  | ||||||
|       libexpat1 \ |  | ||||||
|       libgbm-dev \ |  | ||||||
|       libgles2-mesa-dev \ |  | ||||||
|       libllvm9 \ |  | ||||||
|       liblz4-1 \ |  | ||||||
|       liblz4-dev \ |  | ||||||
|       libpng-dev \ |  | ||||||
|       libpng16-16 \ |  | ||||||
|       libvulkan-dev \ |  | ||||||
|       libvulkan1 \ |  | ||||||
|       libwayland-client0 \ |  | ||||||
|       libwayland-server0 \ |  | ||||||
|       libxcb-ewmh-dev \ |  | ||||||
|       libxcb-ewmh2 \ |  | ||||||
|       libxcb-keysyms1 \ |  | ||||||
|       libxcb-keysyms1-dev \ |  | ||||||
|       libxcb-randr0 \ |  | ||||||
|       libxcb-xfixes0 \ |  | ||||||
|       libxkbcommon-dev \ |  | ||||||
|       libxkbcommon0 \ |  | ||||||
|       libxrandr-dev \ |  | ||||||
|       libxrandr2 \ |  | ||||||
|       libxrender-dev \ |  | ||||||
|       libxrender1 \ |  | ||||||
|       meson \ |  | ||||||
|       p7zip \ |  | ||||||
|       pkg-config \ |  | ||||||
|       python \ |  | ||||||
|       python3-distutils \ |  | ||||||
|       python3-pil \ |  | ||||||
|       python3-requests \ |  | ||||||
|       python3-yaml \ |  | ||||||
|       vulkan-tools \ |  | ||||||
|       wget \ |  | ||||||
|       xauth \ |  | ||||||
|       xvfb |  | ||||||
|  |  | ||||||
| # We need multiarch for Wine |  | ||||||
| dpkg --add-architecture i386 |  | ||||||
|  |  | ||||||
| apt-get update |  | ||||||
|  |  | ||||||
| apt-get install -y --no-remove \ |  | ||||||
|       wine \ |  | ||||||
|       wine32 \ |  | ||||||
|       wine64 |  | ||||||
|  |  | ||||||
| ############### Set up Wine env variables |  | ||||||
|  |  | ||||||
| export WINEDEBUG="-all" |  | ||||||
| export WINEPREFIX="/dxvk-wine64" |  | ||||||
|  |  | ||||||
| ############### Install DXVK |  | ||||||
|  |  | ||||||
| DXVK_VERSION="1.6" |  | ||||||
|  |  | ||||||
| # We don't want crash dialogs |  | ||||||
| cat >crashdialog.reg <<EOF |  | ||||||
| Windows Registry Editor Version 5.00 |  | ||||||
|  |  | ||||||
| [HKEY_CURRENT_USER\Software\Wine\WineDbg] |  | ||||||
| "ShowCrashDialog"=dword:00000000 |  | ||||||
|  |  | ||||||
| EOF |  | ||||||
|  |  | ||||||
| # Set the wine prefix and disable the crash dialog |  | ||||||
| wine regedit crashdialog.reg |  | ||||||
| rm crashdialog.reg |  | ||||||
|  |  | ||||||
| # DXVK's setup often fails with: |  | ||||||
| # "${WINEPREFIX}: Not a valid wine prefix." |  | ||||||
| # and that is just spit because of checking the existance of the |  | ||||||
| # system.reg file, which fails. |  | ||||||
| # Just giving it a bit more of time for it to be created solves the |  | ||||||
| # problem ... |  | ||||||
| test -f  "${WINEPREFIX}/system.reg" || sleep 2 |  | ||||||
|  |  | ||||||
| wget "https://github.com/doitsujin/dxvk/releases/download/v${DXVK_VERSION}/dxvk-${DXVK_VERSION}.tar.gz" |  | ||||||
| tar xzpf dxvk-"${DXVK_VERSION}".tar.gz |  | ||||||
| dxvk-"${DXVK_VERSION}"/setup_dxvk.sh install |  | ||||||
| rm -rf dxvk-"${DXVK_VERSION}" |  | ||||||
| rm dxvk-"${DXVK_VERSION}".tar.gz |  | ||||||
|  |  | ||||||
| ############### Install Windows' apitrace binaries |  | ||||||
|  |  | ||||||
| APITRACE_VERSION="9.0" |  | ||||||
| APITRACE_VERSION_DATE="20191126" |  | ||||||
|  |  | ||||||
| wget "https://github.com/apitrace/apitrace/releases/download/${APITRACE_VERSION}/apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64.7z" |  | ||||||
| 7zr x "apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64.7z" \ |  | ||||||
|       "apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64/bin/apitrace.exe" \ |  | ||||||
|       "apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64/bin/d3dretrace.exe" |  | ||||||
| mv "apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64" /apitrace-msvc-win64 |  | ||||||
| rm "apitrace-${APITRACE_VERSION}.${APITRACE_VERSION_DATE}-win64.7z" |  | ||||||
|  |  | ||||||
| # Add the apitrace path to the registry |  | ||||||
| wine \ |  | ||||||
|     reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" \ |  | ||||||
|     /v Path \ |  | ||||||
|     /t REG_EXPAND_SZ \ |  | ||||||
|     /d "C:\windows\system32;C:\windows;C:\windows\system32\wbem;Z:\apitrace-msvc-win64\bin" \ |  | ||||||
|     /f |  | ||||||
|  |  | ||||||
| ############### Building ... |  | ||||||
|  |  | ||||||
| . .gitlab-ci/container/container_pre_build.sh |  | ||||||
|  |  | ||||||
| ############### Build dEQP runner |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-cts-runner.sh |  | ||||||
|  |  | ||||||
| ############### Build Fossilize |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-fossilize.sh |  | ||||||
|  |  | ||||||
| ############### Build dEQP VK |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-deqp-vk.sh |  | ||||||
|  |  | ||||||
| ############### Build gfxreconstruct |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-gfxreconstruct.sh |  | ||||||
|  |  | ||||||
| ############### Build VulkanTools |  | ||||||
|  |  | ||||||
| . .gitlab-ci/build-vulkantools.sh |  | ||||||
|  |  | ||||||
| ############### Uninstall the build software |  | ||||||
|  |  | ||||||
| ccache --show-stats |  | ||||||
|  |  | ||||||
| apt-get purge -y \ |  | ||||||
|       ccache \ |  | ||||||
|       cmake \ |  | ||||||
|       g++ \ |  | ||||||
|       gcc \ |  | ||||||
|       gnupg \ |  | ||||||
|       libgbm-dev \ |  | ||||||
|       libgles2-mesa-dev \ |  | ||||||
|       liblz4-dev \ |  | ||||||
|       libpng-dev \ |  | ||||||
|       libvulkan-dev \ |  | ||||||
|       libxcb-ewmh-dev \ |  | ||||||
|       libxcb-keysyms1-dev \ |  | ||||||
|       libxkbcommon-dev \ |  | ||||||
|       libxrandr-dev \ |  | ||||||
|       libxrender-dev \ |  | ||||||
|       meson \ |  | ||||||
|       p7zip \ |  | ||||||
|       pkg-config \ |  | ||||||
|       wget |  | ||||||
|  |  | ||||||
| apt-get autoremove -y --purge |  | ||||||
| @@ -1,205 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| apt-get -y install --no-install-recommends \ |  | ||||||
|     ca-certificates \ |  | ||||||
|     initramfs-tools \ |  | ||||||
|     libpng16-16 \ |  | ||||||
|     strace \ |  | ||||||
|     libsensors5 \ |  | ||||||
|     libexpat1 \ |  | ||||||
|     libdrm2 \ |  | ||||||
|     libdrm-nouveau2 \ |  | ||||||
|     firmware-qcom-media \ |  | ||||||
|     wget \ |  | ||||||
|     xz-utils |  | ||||||
| passwd root -d |  | ||||||
| chsh -s /bin/sh |  | ||||||
|  |  | ||||||
| cat > /init <<EOF |  | ||||||
| #!/bin/sh |  | ||||||
| export PS1=lava-shell: |  | ||||||
| exec sh |  | ||||||
| EOF |  | ||||||
| chmod +x  /init |  | ||||||
|  |  | ||||||
| mkdir -p /lib/firmware/rtl_nic |  | ||||||
| wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/rtl_nic/rtl8153a-3.fw -O /lib/firmware/rtl_nic/rtl8153a-3.fw |  | ||||||
|  |  | ||||||
| ####################################################################### |  | ||||||
| # Strip the image to a small minimal system without removing the debian |  | ||||||
| # toolchain. |  | ||||||
|  |  | ||||||
| # xz compress firmware so it doesn't waste RAM at runtime.  Except db820c's |  | ||||||
| # GPU firmware, due to using a precompiled kernel without compression support. |  | ||||||
| find /lib/firmware -type f -print0 | \ |  | ||||||
|     grep -vz a530 | \ |  | ||||||
|     xargs -0r -P4 -n4 xz -T1 -C crc32 |  | ||||||
| ln -s /lib/firmware/qcom/a530* /lib/firmware/ |  | ||||||
|  |  | ||||||
| # 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 "\ |  | ||||||
| "xz-utils "\ |  | ||||||
| "passwd "\ |  | ||||||
| "libsemanage1 libsemanage-common "\ |  | ||||||
| "libsepol1 "\ |  | ||||||
| "gpgv "\ |  | ||||||
| "hostname "\ |  | ||||||
| "adduser "\ |  | ||||||
| "debian-archive-keyring "\ |  | ||||||
|  |  | ||||||
| # 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* |  | ||||||
| @@ -1 +0,0 @@ | |||||||
| u_format_test |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| lp_test_arit |  | ||||||
| roundeven |  | ||||||
| u_format_test |  | ||||||
| u_half_test |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| lp_test_arit |  | ||||||
| lp_test_format |  | ||||||
| lp_test_printf |  | ||||||
| u_format_test |  | ||||||
| @@ -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.* |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,23 +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.* |  | ||||||
|  |  | ||||||
| # Flaky results |  | ||||||
| dEQP-GLES3.functional.occlusion_query.stencil_write |  | ||||||
| dEQP-GLES3.functional.rasterization.fbo.rbo_.* |  | ||||||
| dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.triangles |  | ||||||
| dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.points |  | ||||||
| dEQP-GLES3.functional.rasterization.flatshading.lines_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.flatshading.triangles |  | ||||||
| dEQP-GLES3.functional.shaders.linkage.varying.interpolation.centroid |  | ||||||
| dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.* |  | ||||||
| dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.* |  | ||||||
| dEQP-GLES3.functional.texture.units.4_units.only_3d.* |  | ||||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.* |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,17 +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 results (probably related to the iommu faults). |  | ||||||
| dEQP-GLES3.functional.texture.filtering.3d.* |  | ||||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.* |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_stencil |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_stencil |  | ||||||
| dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.packed_instance_array_fragment |  | ||||||
| @@ -1,96 +0,0 @@ | |||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.colorburn |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.colordodge |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.darken |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.difference |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.exclusion |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.hardlight |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_color |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_hue |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_luminosity |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.hsl_saturation |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.lighten |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.multiply |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.overlay |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.screen |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.barrier.softlight |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.colorburn |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.colordodge |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.darken |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.difference |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.exclusion |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.hardlight |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_color |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_hue |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_luminosity |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.hsl_saturation |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.lighten |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.multiply |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.overlay |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.screen |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.basic.softlight |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.colorburn |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.colordodge |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.darken |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.difference |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.exclusion |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.hardlight |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_color |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_hue |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_luminosity |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.hsl_saturation |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.lighten |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.multiply |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.overlay |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.screen |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.msaa.softlight |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.colorburn |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.colordodge |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.darken |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.difference |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.exclusion |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.hardlight |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_color |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_hue |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_luminosity |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.hsl_saturation |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.lighten |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.multiply |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.overlay |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.screen |  | ||||||
| dEQP-GLES31.functional.blend_equation_advanced.srgb.softlight |  | ||||||
| dEQP-GLES31.functional.compute.basic.shared_var_single_group |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common.common_advanced_blend_eq_buffer_advanced_blend_eq |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common.common_blend_eq_buffer_advanced_blend_eq |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common.common_separate_blend_eq_buffer_advanced_blend_eq |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_advanced_blend_eq |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_blend_eq |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_separate_blend_eq |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_separate_blend_eq_buffer_blend_eq |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.11 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.15 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.17 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.18 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.2 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.3 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.6 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.7 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.19 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.3 |  | ||||||
| dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_depth_fbo |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.6 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.shared_instance_array |  | ||||||
| dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw |  | ||||||
| dEQP-GLES31.functional.stencil_texturing.render.depth32f_stencil8_clear |  | ||||||
| dEQP-GLES31.functional.stencil_texturing.render.depth32f_stencil8_draw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.inner_triangle_set.quads_fractional_even_spacing |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range.triangles_fractional_odd_spacing_cw |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_1.use_texture_depth_2d |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_1.use_texture_depth_2d_array |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_2.use_texture_depth_2d |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_2.use_texture_depth_2d_array |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_3.use_texture_depth_2d |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_3.use_texture_depth_2d_array |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_4.use_texture_depth_2d |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_4.use_texture_depth_2d_array |  | ||||||
| @@ -1,4 +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-GLES2.functional.clip_control.depth_mode_zero_to_one |  | ||||||
| dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_clear |  | ||||||
| dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw |  | ||||||
| @@ -1,18 +0,0 @@ | |||||||
| dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_clear |  | ||||||
| dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_per_block_buffers.11 |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_per_block_buffers.16 |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_per_block_buffers.21 |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_per_block_buffers.31 |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_per_block_buffers.6 |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_shared_buffer.12 |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_shared_buffer.17 |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_shared_buffer.2 |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_shared_buffer.27 |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_shared_buffer.37 |  | ||||||
| dEQP-GLES31.functional.ubo.random.all_shared_buffer.47 |  | ||||||
| dEQP-GLES31.functional.ubo.random.basic_type_arrays.1 |  | ||||||
| dEQP-GLES31.functional.ubo.random.basic_type_arrays.11 |  | ||||||
| dEQP-GLES31.functional.ubo.random.basic_type_arrays.16 |  | ||||||
| dEQP-GLES31.functional.ubo.random.basic_type_arrays.21 |  | ||||||
| dEQP-GLES31.functional.ubo.random.basic_type_arrays.6 |  | ||||||
| @@ -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.* |  | ||||||
|  |  | ||||||
| # Unstable test results |  | ||||||
| #dEQP-GLES3.functional.fragment_out.random.* |  | ||||||
| dEQP-GLES3.functional.transform_feedback.*points.* |  | ||||||
| dEQP-GLES3.functional.transform_feedback.*lines.* |  | ||||||
| dEQP-GLES31.functional.primitive_bounding_box.* |  | ||||||
| #dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_array.* |  | ||||||
|  |  | ||||||
| # Intermittent timeout |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.23 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.48 |  | ||||||
|  |  | ||||||
| # Flakes reported more than once during Jan-Feb 2020 |  | ||||||
| dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_array |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.0 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.1 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.12 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.13 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.17 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.24 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.27 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.28 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.32 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.34 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.35 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.36 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.40 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.44 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.47 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.5 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.50 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.51 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.55 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.58 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.59 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.61 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.63 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.66 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.67 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.69 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.70 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.71 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.80 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.82 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.86 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.88 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.91 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.93 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.95 |  | ||||||
| dEQP-GLES3.functional.fragment_out.random.96 |  | ||||||
| dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles.highp_mat2x3 |  | ||||||
| dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles.lowp_mat2x4 |  | ||||||
| dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles.lowp_mat2x4 |  | ||||||
| @@ -1,66 +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.triangle_vertex.clip_two.clip_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z |  | ||||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16 |  | ||||||
| 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.shared_depthbuffer.tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.0 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.1 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.10 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.11 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.12 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.13 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.14 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.15 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.16 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.17 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.18 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.19 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.2 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.20 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.21 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.22 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.23 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.24 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.3 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.4 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.5 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.6 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.7 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.8 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.9 |  | ||||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.stencil |  | ||||||
| dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.vector_counter_fragment |  | ||||||
| dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.vector_counter_fragment |  | ||||||
| dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.vector_counter_fragment |  | ||||||
| dEQP-GLES2.functional.shaders.random.all_features.fragment.37 |  | ||||||
| dEQP-GLES2.functional.shaders.random.exponential.fragment.11 |  | ||||||
| dEQP-GLES2.functional.shaders.random.exponential.fragment.12 |  | ||||||
| dEQP-GLES2.functional.shaders.random.exponential.fragment.14 |  | ||||||
| dEQP-GLES2.functional.shaders.random.exponential.fragment.37 |  | ||||||
| dEQP-GLES2.functional.shaders.random.exponential.fragment.5 |  | ||||||
| dEQP-GLES2.functional.shaders.random.exponential.fragment.74 |  | ||||||
| dEQP-GLES2.functional.shaders.random.texture.fragment.28 |  | ||||||
| dEQP-GLES2.functional.shaders.random.trigonometric.fragment.65 |  | ||||||
| dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2d_bias |  | ||||||
| dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec4_bias |  | ||||||
| dEQP-GLES2.functional.shaders.texture_functions.fragment.texturecube_bias |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_clamp_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_clamp_rgba8888 |  | ||||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_rgba8888 |  | ||||||
| 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.specification.basic_copytexsubimage2d.2d_rgb |  | ||||||
| dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_rgba |  | ||||||
| dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_rgb |  | ||||||
| dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_rgba |  | ||||||
| @@ -1,38 +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 |  | ||||||
|  |  | ||||||
| # Flaky |  | ||||||
| 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.default_vertex_attrib.* |  | ||||||
| dEQP-GLES2.functional.fbo.completeness.size.distinct |  | ||||||
| dEQP-GLES2.functional.negative_api.shader.uniform_matrixfv_invalid_transpose |  | ||||||
| dEQP-GLES2.functional.negative_api.texture.generatemipmap_zero_level_array_compressed |  | ||||||
| dEQP-GLES2.functional.shaders.builtin_variable.frontfacing |  | ||||||
| dEQP-GLES2.functional.shaders.random.exponential.fragment.94 |  | ||||||
| dEQP-GLES2.functional.shaders.random.all_features.fragment.55 |  | ||||||
| dEQP-GLES2.functional.shaders.random.trigonometric.fragment.1 |  | ||||||
| dEQP-GLES2.functional.shaders.random.trigonometric.fragment.69 |  | ||||||
|  |  | ||||||
| # Hangs / OOM |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_static_read |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_dynamic_read |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_static_loop_read |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_dynamic_loop_read |  | ||||||
|  |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_dynamic_read_vertex |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_loop_read_vertex |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_dynamic_loop_read_vertex |  | ||||||
|  |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_static_read_vertex |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_dynamic_read_vertex |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_static_loop_read_vertex |  | ||||||
| dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_dynamic_loop_read_vertex |  | ||||||
| @@ -1,123 +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.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,31 +0,0 @@ | |||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16 |  | ||||||
| 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.shared_depthbuffer.tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16 |  | ||||||
| @@ -1,14 +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.* |  | ||||||
|  |  | ||||||
| # XXX: Why does this flake? |  | ||||||
| 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 |  | ||||||
|  |  | ||||||
| @@ -1,31 +0,0 @@ | |||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16 |  | ||||||
| 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.shared_depthbuffer.tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16 |  | ||||||
| @@ -1,11 +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,31 +0,0 @@ | |||||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16 |  | ||||||
| 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.shared_depthbuffer.tex2d_rgb_depth_component16 |  | ||||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16 |  | ||||||
| @@ -1,13 +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.* |  | ||||||
|  |  | ||||||
| # XXX: Why does this flake? |  | ||||||
| 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 |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,20 +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.* |  | ||||||
|  |  | ||||||
| # XXX: Why does this flake? |  | ||||||
| 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 |  | ||||||
|  |  | ||||||
| # XXX: Causes irrecoverable GPU hangs when run in parallel with dEQP-GLES3.functional.transform_feedback.* |  | ||||||
| dEQP-GLES3.functional.rasterizer_discard.* |  | ||||||
|  |  | ||||||
| # XXX: Not completely implemented yet, behave flakily |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.* |  | ||||||
|  |  | ||||||
| @@ -1,3 +0,0 @@ | |||||||
| # Exclude WSI related tests. |  | ||||||
| dEQP-VK.image.swapchain_mutable.* |  | ||||||
| dEQP-VK.wsi.* |  | ||||||
| @@ -1,35 +0,0 @@ | |||||||
| # CTS bug (should be fixed in next version) |  | ||||||
| dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.draw |  | ||||||
| dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.draw |  | ||||||
|  |  | ||||||
| # SPIR-V->NIR issues. |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.scalar |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec2 |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec3 |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec4 |  | ||||||
|  |  | ||||||
| # CTS bug (list of extensions not up-to-date). |  | ||||||
| dEQP-VK.info.device_extensions |  | ||||||
|  |  | ||||||
| # ACO specific issues. |  | ||||||
| dEQP-VK.graphicsfuzz.loops-ifs-continues-call |  | ||||||
|  |  | ||||||
| # Interesting failures... |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint.stencil_max |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint.stencil_min |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint.stencil_zero |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint_separate_layouts.stencil_max |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint_separate_layouts.stencil_min |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint_separate_layouts.stencil_zero |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint.stencil_max |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint.stencil_min |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint.stencil_zero |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint_separate_layouts.stencil_max |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint_separate_layouts.stencil_min |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_4.d32_sfloat_s8_uint_separate_layouts.stencil_zero |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint.stencil_max |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint.stencil_min |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint.stencil_zero |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint_separate_layouts.stencil_max |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint_separate_layouts.stencil_min |  | ||||||
| dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint_separate_layouts.stencil_zero |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| # SPIR-V->NIR issues. |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.scalar |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec2 |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec3 |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec4 |  | ||||||
|  |  | ||||||
| # CTS bug (list of extensions not up-to-date). |  | ||||||
| dEQP-VK.info.device_extensions |  | ||||||
|  |  | ||||||
| # ACO specific issues. |  | ||||||
| dEQP-VK.transform_feedback.simple.multistreams_1 |  | ||||||
| dEQP-VK.transform_feedback.simple.multistreams_3 |  | ||||||
| dEQP-VK.graphicsfuzz.loops-ifs-continues-call |  | ||||||
| @@ -1,11 +0,0 @@ | |||||||
| # SPIR-V->NIR issues. |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.scalar |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec2 |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec3 |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec4 |  | ||||||
|  |  | ||||||
| # CTS bug (list of extensions not up-to-date). |  | ||||||
| dEQP-VK.info.device_extensions |  | ||||||
|  |  | ||||||
| # ACO specific issues. |  | ||||||
| dEQP-VK.graphicsfuzz.loops-ifs-continues-call |  | ||||||
| @@ -1,15 +0,0 @@ | |||||||
| # CTS bug (should be fixed in next version) |  | ||||||
| dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.draw |  | ||||||
| dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.draw |  | ||||||
|  |  | ||||||
| # SPIR-V->NIR issues. |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.scalar |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec2 |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec3 |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec4 |  | ||||||
|  |  | ||||||
| # CTS bug (list of extensions not up-to-date). |  | ||||||
| dEQP-VK.info.device_extensions |  | ||||||
|  |  | ||||||
| # ACO specific issues. |  | ||||||
| dEQP-VK.graphicsfuzz.loops-ifs-continues-call |  | ||||||
| @@ -1,31 +0,0 @@ | |||||||
| # Disable a TON of tests to keep the run around 5-10 minutes because my runner is |  | ||||||
| # slow. |  | ||||||
| dEQP-VK.api.* |  | ||||||
| dEQP-VK.binding_model.* |  | ||||||
| dEQP-VK.clipping.* |  | ||||||
| dEQP-VK.compute.* |  | ||||||
| dEQP-VK.conditional_rendering.* |  | ||||||
| dEQP-VK.descriptor_indexing.* |  | ||||||
| dEQP-VK.device_group.* |  | ||||||
| dEQP-VK.fragment_operations.* |  | ||||||
| dEQP-VK.fragment_shader_interlock.* |  | ||||||
| dEQP-VK.graphicsfuzz.* |  | ||||||
| dEQP-VK.image.* |  | ||||||
| dEQP-VK.imageless_framebuffer.* |  | ||||||
| dEQP-VK.info.* |  | ||||||
| dEQP-VK.memory.* |  | ||||||
| dEQP-VK.memory_model.* |  | ||||||
| dEQP-VK.multiview.* |  | ||||||
| dEQP-VK.pipeline.* |  | ||||||
| dEQP-VK.protected_memory.* |  | ||||||
| dEQP-VK.query_pool.* |  | ||||||
| dEQP-VK.robustness.* |  | ||||||
| dEQP-VK.sparse_resources.* |  | ||||||
| dEQP-VK.spirv_assembly.* |  | ||||||
| dEQP-VK.subgroups.* |  | ||||||
| dEQP-VK.synchronization.* |  | ||||||
| dEQP-VK.texture.* |  | ||||||
| dEQP-VK.transform_feedback.* |  | ||||||
| dEQP-VK.ubo.* |  | ||||||
| dEQP-VK.wsi.* |  | ||||||
| dEQP-VK.ycbcr.* |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| # SPIR-V->NIR issues. |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.scalar |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec2 |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec3 |  | ||||||
| dEQP-VK.glsl.builtin.precision.asin.highp.vec4 |  | ||||||
|  |  | ||||||
| # CTS bug (list of extensions not up-to-date). |  | ||||||
| dEQP-VK.info.device_extensions |  | ||||||
|  |  | ||||||
| # ACO specific issues. |  | ||||||
| dEQP-VK.transform_feedback.simple.multistreams_1 |  | ||||||
| dEQP-VK.transform_feedback.simple.multistreams_3 |  | ||||||
| dEQP-VK.graphicsfuzz.loops-ifs-continues-call |  | ||||||
| @@ -1,288 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-width=256 --deqp-surface-height=256" |  | ||||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-type=pbuffer" |  | ||||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-gl-config-name=rgba8888d24s8ms0" |  | ||||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-visibility=hidden" |  | ||||||
|  |  | ||||||
| # 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_OPTIONS --deqp-watchdog=enable" |  | ||||||
|  |  | ||||||
| if [ -z "$DEQP_VER" ]; then |  | ||||||
|    echo 'DEQP_VER must be set to something like "gles2", "gles31" or "vk" for the test run' |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ "$DEQP_VER" = "vk" ]; then |  | ||||||
|    if [ -z "$VK_DRIVER" ]; then |  | ||||||
|       echo 'VK_DRIVER must be to something like "radeon" or "intel" for the test run' |  | ||||||
|       exit 1 |  | ||||||
|    fi |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ -z "$DEQP_SKIPS" ]; then |  | ||||||
|    echo 'DEQP_SKIPS must be set to something like "deqp-default-skips.txt"' |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| INSTALL=`pwd`/install |  | ||||||
|  |  | ||||||
| # Set up the driver environment. |  | ||||||
| export LD_LIBRARY_PATH=`pwd`/install/lib/ |  | ||||||
| export EGL_PLATFORM=surfaceless |  | ||||||
| export VK_ICD_FILENAMES=`pwd`/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.x86_64.json |  | ||||||
|  |  | ||||||
| # 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 |  | ||||||
|  |  | ||||||
| # Generate test case list file. |  | ||||||
| if [ "$DEQP_VER" = "vk" ]; then |  | ||||||
|    cp /deqp/mustpass/vk-master.txt /tmp/case-list.txt |  | ||||||
|    DEQP=/deqp/external/vulkancts/modules/vulkan/deqp-vk |  | ||||||
| else |  | ||||||
|    cp /deqp/mustpass/$DEQP_VER-master.txt /tmp/case-list.txt |  | ||||||
|    DEQP=/deqp/modules/$DEQP_VER/deqp-$DEQP_VER |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # 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 [ -n "$DEQP_CASELIST_FILTER" ]; then |  | ||||||
|     sed -i "/$DEQP_CASELIST_FILTER/p" /tmp/case-list.txt |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ ! -s /tmp/case-list.txt ]; then |  | ||||||
|     echo "Caselist generation failed" |  | ||||||
|     exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ -n "$DEQP_EXPECTED_FAILS" ]; then |  | ||||||
|     XFAIL="--xfail-list $INSTALL/$DEQP_EXPECTED_FAILS" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| set +e |  | ||||||
|  |  | ||||||
| if [ -n "$DEQP_PARALLEL" ]; then |  | ||||||
|    JOB="--job $DEQP_PARALLEL" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| run_cts() { |  | ||||||
|     deqp=$1 |  | ||||||
|     caselist=$2 |  | ||||||
|     output=$3 |  | ||||||
|     deqp-runner \ |  | ||||||
|         --deqp $deqp \ |  | ||||||
|         --output $output \ |  | ||||||
|         --caselist $caselist \ |  | ||||||
|         --exclude-list $INSTALL/$DEQP_SKIPS \ |  | ||||||
|         --compact-display false \ |  | ||||||
|         $XFAIL \ |  | ||||||
|         $JOB \ |  | ||||||
| 	--allow-flakes true \ |  | ||||||
| 	$DEQP_RUNNER_OPTIONS \ |  | ||||||
|         -- \ |  | ||||||
|         $DEQP_OPTIONS |  | ||||||
| } |  | ||||||
|  |  | ||||||
| report_flakes() { |  | ||||||
|     if [ -z "$FLAKES_CHANNEL" ]; then |  | ||||||
|         return 0 |  | ||||||
|     fi |  | ||||||
|     flakes=$1 |  | ||||||
|     bot="$CI_RUNNER_DESCRIPTION-$CI_PIPELINE_ID" |  | ||||||
|     channel="$FLAKES_CHANNEL" |  | ||||||
|     ( |  | ||||||
|     echo NICK $bot |  | ||||||
|     echo USER $bot unused unused :Gitlab CI Notifier |  | ||||||
|     sleep 10 |  | ||||||
|     echo "JOIN $channel" |  | ||||||
|     sleep 1 |  | ||||||
|     desc="Flakes detected in job: $CI_JOB_URL on $CI_RUNNER_DESCRIPTION" |  | ||||||
|     if [ -n "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]; then |  | ||||||
|         desc="$desc on branch $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME ($CI_MERGE_REQUEST_TITLE)" |  | ||||||
|     fi |  | ||||||
|     echo "PRIVMSG $channel :$desc" |  | ||||||
|     for flake in `cat $flakes`; do |  | ||||||
|         echo "PRIVMSG $channel :$flake" |  | ||||||
|     done |  | ||||||
|     echo "PRIVMSG $channel :See $CI_JOB_URL/artifacts/browse/results/" |  | ||||||
|     echo "QUIT" |  | ||||||
|     ) | nc irc.freenode.net 6667 > /dev/null |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| extract_xml_result() { |  | ||||||
|     testcase=$1 |  | ||||||
|     shift 1 |  | ||||||
|     qpas=$* |  | ||||||
|     start="#beginTestCaseResult $testcase" |  | ||||||
|     for qpa in $qpas; do |  | ||||||
|         while IFS= read -r line; do |  | ||||||
|             if [ "$line" = "$start" ]; then |  | ||||||
|                 dst="$testcase.qpa" |  | ||||||
|                 echo "#beginSession" > $dst |  | ||||||
|                 echo $line >> $dst |  | ||||||
|                 while IFS= read -r line; do |  | ||||||
|                     if [ "$line" = "#endTestCaseResult" ]; then |  | ||||||
|                         echo $line >> $dst |  | ||||||
|                         echo "#endSession" >> $dst |  | ||||||
|                         /deqp/executor/testlog-to-xml $dst "$RESULTS/$testcase$DEQP_RUN_SUFFIX.xml" |  | ||||||
|                         # copy the stylesheets here so they only end up in artifacts |  | ||||||
|                         # if we have one or more result xml in artifacts |  | ||||||
|                         cp /deqp/testlog.css "$RESULTS/" |  | ||||||
|                         cp /deqp/testlog.xsl "$RESULTS/" |  | ||||||
|                         return 0 |  | ||||||
|                     fi |  | ||||||
|                     echo $line >> $dst |  | ||||||
|                 done |  | ||||||
|                 return 1 |  | ||||||
|             fi |  | ||||||
|         done < $qpa |  | ||||||
|     done |  | ||||||
| } |  | ||||||
|  |  | ||||||
| extract_xml_results() { |  | ||||||
|     qpas=$* |  | ||||||
|     while IFS= read -r testcase; do |  | ||||||
|         testcase=${testcase%,*} |  | ||||||
|         extract_xml_result $testcase $qpas |  | ||||||
|     done |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # Generate junit results |  | ||||||
| generate_junit() { |  | ||||||
|     results=$1 |  | ||||||
|     echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>" |  | ||||||
|     echo "<testsuites>" |  | ||||||
|     echo "<testsuite name=\"$DEQP_VER-$CI_NODE_INDEX\">" |  | ||||||
|     while read line; do |  | ||||||
|         testcase=${line%,*} |  | ||||||
|         result=${line#*,} |  | ||||||
|         # avoid counting Skip's in the # of tests: |  | ||||||
|         if [ "$result" = "Skip" ]; then |  | ||||||
|             continue; |  | ||||||
|         fi |  | ||||||
|         echo "<testcase name=\"$testcase\">" |  | ||||||
|         if [ "$result" != "Pass" ]; then |  | ||||||
|             echo "<failure type=\"$result\">" |  | ||||||
|             echo "$result: See $CI_JOB_URL/artifacts/results/$testcase.xml" |  | ||||||
|             echo "</failure>" |  | ||||||
|         fi |  | ||||||
|         echo "</testcase>" |  | ||||||
|     done < $results |  | ||||||
|     echo "</testsuite>" |  | ||||||
|     echo "</testsuites>" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| parse_renderer() { |  | ||||||
|     RENDERER=`grep -A1 TestCaseResult.\*info.renderer $RESULTS/deqp-info.qpa | grep '<Text' | sed 's|.*<Text>||g' | sed 's|</Text>||g'` |  | ||||||
|     VERSION=`grep -A1 TestCaseResult.\*info.version $RESULTS/deqp-info.qpa | grep '<Text' | sed 's|.*<Text>||g' | sed 's|</Text>||g'` |  | ||||||
|     echo "Renderer: $RENDERER" |  | ||||||
|     echo "Version: $VERSION " |  | ||||||
|  |  | ||||||
|     if ! echo $RENDERER | grep -q $DEQP_EXPECTED_RENDERER; then |  | ||||||
|         echo "Expected GL_RENDERER $DEQP_EXPECTED_RENDERER" |  | ||||||
|         exit 1 |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| check_renderer() { |  | ||||||
|     echo "Capturing renderer info for driver sanity checks" |  | ||||||
|     # If you're having trouble loading your driver, uncommenting this may help |  | ||||||
|     # debug. |  | ||||||
|     # export EGL_LOG_LEVEL=debug |  | ||||||
|     VERSION=`echo $DEQP_VER | tr '[a-z]' '[A-Z]'` |  | ||||||
|     $DEQP $DEQP_OPTIONS --deqp-case=dEQP-$VERSION.info.\* --deqp-log-filename=$RESULTS/deqp-info.qpa |  | ||||||
|     parse_renderer |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # wrapper to supress +x to avoid spamming the log |  | ||||||
| quiet() { |  | ||||||
|     set +x |  | ||||||
|     "$@" |  | ||||||
|     set -x |  | ||||||
| } |  | ||||||
|  |  | ||||||
| if [ "$GALLIUM_DRIVER" = "virpipe" ]; then |  | ||||||
|     # deqp is to use virpipe, and virgl_test_server llvmpipe |  | ||||||
|     export GALLIUM_DRIVER="$GALLIUM_DRIVER" |  | ||||||
|  |  | ||||||
|     GALLIUM_DRIVER=llvmpipe \ |  | ||||||
|     GALLIVM_PERF="nopt,no_filter_hacks" \ |  | ||||||
|     VTEST_USE_EGL_SURFACELESS=1 \ |  | ||||||
|     VTEST_USE_GLES=1 \ |  | ||||||
|     virgl_test_server >$RESULTS/vtest-log.txt 2>&1 & |  | ||||||
|  |  | ||||||
|     sleep 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ $DEQP_VER != vk ]; then |  | ||||||
|     quiet check_renderer |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| RESULTSFILE=$RESULTS/cts-runner-results$DEQP_RUN_SUFFIX.txt |  | ||||||
| UNEXPECTED_RESULTSFILE=$RESULTS/cts-runner-unexpected-results$DEQP_RUN_SUFFIX.txt |  | ||||||
| FLAKESFILE=$RESULTS/cts-runner-flakes$DEQP_RUN_SUFFIX.txt |  | ||||||
|  |  | ||||||
| run_cts $DEQP /tmp/case-list.txt $RESULTSFILE |  | ||||||
| DEQP_EXITCODE=$? |  | ||||||
|  |  | ||||||
| # junit is disabled, because it overloads gitlab.freedesktop.org to parse it. |  | ||||||
| #quiet generate_junit $RESULTSFILE > $RESULTS/results.xml |  | ||||||
|  |  | ||||||
| if [ $DEQP_EXITCODE -ne 0 ]; then |  | ||||||
|     # preserve caselist files in case of failures: |  | ||||||
|     cp /tmp/deqp_runner.*.txt $RESULTS/ |  | ||||||
|     egrep -v ",Pass|,Skip|,ExpectedFail" $RESULTSFILE > $UNEXPECTED_RESULTSFILE.txt |  | ||||||
|  |  | ||||||
|     if [ -z "$DEQP_NO_SAVE_RESULTS" ]; then |  | ||||||
|         echo "Some unexpected results found (see cts-runner-results.txt in artifacts for full results):" |  | ||||||
|         head -n 50 $UNEXPECTED_RESULTSFILE.txt |  | ||||||
|  |  | ||||||
|         # Save the logs for up to the first 50 unexpected results: |  | ||||||
|         head -n 50 $UNEXPECTED_RESULTSFILE.txt | quiet extract_xml_results /tmp/*.qpa |  | ||||||
|     else |  | ||||||
|         echo "Unexpected results found:" |  | ||||||
|         cat $UNEXPECTED_RESULTSFILE.txt |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     count=`wc -l $UNEXPECTED_RESULTSFILE.txt` |  | ||||||
|  |  | ||||||
|     # Re-run fails to detect flakes.  But use a small threshold, if |  | ||||||
|     # something was fundamentally broken, we don't want to re-run |  | ||||||
|     # the entire caselist |  | ||||||
| else |  | ||||||
|     grep ",Flake" $RESULTSFILE > $FLAKESFILE |  | ||||||
|  |  | ||||||
|     count=`wc -l $FLAKESFILE` |  | ||||||
|     if [ $count -gt 0 ]; then |  | ||||||
|         echo "Some flakes found (see cts-runner-flakes.txt in artifacts for full results):" |  | ||||||
|         head -n 50 $FLAKESFILE |  | ||||||
|  |  | ||||||
|         if [ -z "$DEQP_NO_SAVE_RESULTS" ]; then |  | ||||||
|             # Save the logs for up to the first 50 flakes: |  | ||||||
|             head -n 50 $FLAKESFILE | quiet extract_xml_results /tmp/*.qpa |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         # Report the flakes to IRC channel for monitoring (if configured): |  | ||||||
|         quiet report_flakes $FLAKESFILE |  | ||||||
|     else |  | ||||||
|         # no flakes, so clean-up: |  | ||||||
|         rm $FLAKESFILE |  | ||||||
|     fi |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| exit $DEQP_EXITCODE |  | ||||||
| @@ -1,843 +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 |  | ||||||
| dEQP-GLES31.functional.debug.error_filters.case_29 |  | ||||||
| dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer.read_pixels_fbo_format_mismatch |  | ||||||
| dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.blit_framebuffer_multisample |  | ||||||
| dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.read_pixels_fbo_format_mismatch |  | ||||||
| dEQP-GLES31.functional.debug.negative_coverage.log.buffer.read_pixels_fbo_format_mismatch |  | ||||||
| dEQP-GLES31.functional.draw_base_vertex.draw_elements_instanced_base_vertex.line_loop.instanced_attributes |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.0 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.1 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.10 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.11 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.12 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.14 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.16 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.17 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.19 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.2 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.3 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.4 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.5 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.6 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.7 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.8 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.9 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.0 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.1 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.14 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.15 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.16 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.17 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.19 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.2 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.4 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.5 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.7 |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.9 |  | ||||||
| dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip.multiple_attributes |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.interaction.17x512ms4_default_16x16ms2 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.interaction.1x1ms0_default_2048x2048ms4 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.interaction.2048x2048ms4_default_1x1ms0 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.interaction.256x256ms0_default_512x512ms2 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.interaction.256x256ms2_default_128x512ms0 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.multisample.samples2 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.multisample.samples3 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.multisample.samples4 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.random.1 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.random.11 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.random.14 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.random.15 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.random.4 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.random.9 |  | ||||||
| dEQP-GLES31.functional.geometry_shading.query.primitives_generated_amplification |  | ||||||
| dEQP-GLES31.functional.geometry_shading.query.primitives_generated_instanced |  | ||||||
| dEQP-GLES31.functional.geometry_shading.query.primitives_generated_no_amplification |  | ||||||
| dEQP-GLES31.functional.geometry_shading.query.primitives_generated_no_geometry |  | ||||||
| dEQP-GLES31.functional.geometry_shading.query.primitives_generated_partial_primitives |  | ||||||
| dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_stencil |  | ||||||
| dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_stencil_fbo |  | ||||||
| dEQP-GLES31.functional.image_load_store.early_fragment_tests.no_early_fragment_tests_depth |  | ||||||
| dEQP-GLES31.functional.image_load_store.early_fragment_tests.no_early_fragment_tests_depth_fbo |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.dynamically_uniform_geometry |  | ||||||
| dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getfloat |  | ||||||
| dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getinteger |  | ||||||
| dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getinteger64 |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_float |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_integer |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_pure_int |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_pure_uint |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_float |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_integer |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_pure_int |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_pure_uint |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_float |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_integer |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_pure_int |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_pure_uint |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_float |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_integer |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_pure_int |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_pure_uint |  | ||||||
| dEQP-GLES31.functional.texture.border_clamp.depth_compare_mode.depth32f_stencil8.linear_size_npot |  | ||||||
| dEQP-GLES31.functional.texture.border_clamp.depth_compare_mode.depth32f_stencil8.linear_size_pot |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_clamp_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_mirror_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_repeat_clamp |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_repeat_mirror |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_repeat_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_clamp_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_mirror_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_repeat_clamp |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_repeat_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_clamp_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_mirror_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_repeat_clamp |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_repeat_mirror |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_clamp_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_mirror_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_repeat_clamp |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_repeat_mirror |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_nearest_repeat_clamp |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_nearest_repeat_mirror |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_nearest_repeat_repeat |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_nearest_repeat_mirror |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_linear_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb565_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb565_nearest_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb5_a1_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb5_a1_nearest_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb9_e5_nearest_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb9_e5_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba16f_nearest_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba16f_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba4_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba4_nearest_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_nearest_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_snorm_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_snorm_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.sr8_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.srgb8_alpha8_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.formats.srgb8_alpha8_nearest_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_linear_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_linear_mipmap_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_nearest_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.sizes.63x63x18_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.sizes.64x64x12_nearest_mipmap_linear |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.sizes.64x64x12_nearest_mipmap_nearest |  | ||||||
| dEQP-GLES31.functional.texture.filtering.cube_array.sizes.8x8x6_nearest |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.base_level.level_1 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.base_level.level_2 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_linear_mipmap_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_linear_mipmap_nearest_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_nearest_mipmap_nearest_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.green_blue_alpha_zero |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.red_green_blue_alpha |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.green_blue_alpha_zero |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.red_green_blue_alpha |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.green_blue_alpha_zero |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.red_green_blue_alpha |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.base_level.level_1 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.base_level.level_2 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mipmap_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mipmap_nearest_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_nearest_mipmap_nearest_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.green_blue_alpha_zero |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.red_green_blue_alpha |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.green_blue_alpha_zero |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.red_green_blue_alpha |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2 |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.green_blue_alpha_zero |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.red_green_blue_alpha |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge |  | ||||||
| dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle.one_red_green_blue |  | ||||||
| dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle.zero_one_red_green |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_alpha_to_coverage |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_sample_coverage |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_sample_coverage_and_alpha_to_coverage |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_non_effective_bits |  | ||||||
| dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_only |  | ||||||
| @@ -1,19 +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.* |  | ||||||
|  |  | ||||||
| # Random failures |  | ||||||
| dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_color_mask_buffer_color_mask |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.maximums.all |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.maximums.size |  | ||||||
| dEQP-GLES31.functional.geometry_shading.input.basic_primitive.points |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.*geometry |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.geometry.usampler3d |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.geometry.sampler2darray |  | ||||||
| @@ -1,720 +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.draw.random.10 |  | ||||||
| dEQP-GLES2.functional.draw.random.42 |  | ||||||
| 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-GLES3.functional.clipping.line.wide_line_clip_viewport_corner |  | ||||||
| dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center |  | ||||||
| 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.draw.random.174 |  | ||||||
| dEQP-GLES3.functional.draw.random.31 |  | ||||||
| dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag |  | ||||||
| dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_x |  | ||||||
| dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_y |  | ||||||
| dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_x |  | ||||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component16 |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_color |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth_stencil |  | ||||||
| dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component16 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.r16f |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgb565 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgba4 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgba8 |  | ||||||
| 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.depth_component24 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.r11f_g11f_b10f |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.r8 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgb10_a2 |  | ||||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgb8 |  | ||||||
| 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_render_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.texture_2d.interpolation.lines_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide |  | ||||||
| dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_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.fbo_msaa2.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_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.vec4_mediump |  | ||||||
| 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.texture.msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_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.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_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_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_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.texture.msaa4.float_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.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.vec4_mediump |  | ||||||
| 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.vec4_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_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.nicest.fbo_msaa4.vec2_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_highp |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_mediump |  | ||||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_highp |  | ||||||
| dEQP-GLES3.functional.state_query.integers.max_samples_getinteger64 |  | ||||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads1 |  | ||||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int.components2_vec2_quads256 |  | ||||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int.components2_vec3_quads256 |  | ||||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int.components2_vec4_quads256 |  | ||||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int.components4_vec2_quads1 |  | ||||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int.components4_vec4_quads1 |  | ||||||
| dEQP-GLES31.functional.atomic_counter.dec.1_counter_100_calls_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.dec.8_counters_5_calls_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.dec_branch.4_counters_1_call_10_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get.1_counter_100_calls_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get.8_counters_5_calls_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_branch.4_counters_1_call_10_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_dec.1_counter_100_calls_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_dec.8_counters_5_calls_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_dec_branch.4_counters_1_call_10_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_inc.1_counter_1_call_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_inc.4_counters_5_calls_10_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_inc_branch.1_counter_1_call_5000_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_inc_branch.8_counters_1_call_10_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_inc_dec.1_counter_100_calls_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_inc_dec.8_counters_5_calls_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.4_counters_1_call_10_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.inc.1_counter_1_call_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.inc.4_counters_5_calls_10_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.inc_branch.1_counter_1_call_5000_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.inc_branch.8_counters_1_call_10_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.inc_dec.1_counter_1_call_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.inc_dec.4_counters_5_calls_10_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.inc_dec_branch.1_counter_1_call_5000_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.inc_dec_branch.8_counters_1_call_10_threads |  | ||||||
| dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_dec.8_counters_5_calls_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.inc_dec.8_counters_1_call_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_dec.8_counters_1_call_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_inc.8_counters_1_call_1_thread |  | ||||||
| dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.inc_dec.8_counters_5_calls_1_thread |  | ||||||
| dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_small |  | ||||||
| dEQP-GLES31.functional.compute.basic.shared_var_single_invocation |  | ||||||
| dEQP-GLES31.functional.compute.basic.ssbo_unsized_arr_multiple_groups |  | ||||||
| dEQP-GLES31.functional.compute.basic.ubo_to_ssbo_single_invocation |  | ||||||
| dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.large_offset_multiple_invocations |  | ||||||
| dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.large_offset |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.atomic.add.mediump_uint |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.atomic.and.highp_uint |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.atomic.compswap.lowp_uint |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.atomic.max.lowp_uint |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.atomic.xor.mediump_uint |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.basic_type.float_lowp |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.basic_type.int_mediump |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.basic_type.ivec4_highp |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.basic_type.mat2x4_highp |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.basic_type.mat4x2_lowp |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.basic_type.uvec4_lowp |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.basic_type.vec4_mediump |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.work_group_size.float_1_1_64 |  | ||||||
| dEQP-GLES31.functional.compute.shared_var.work_group_size.vec4_13_2_4 |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x10_khr.texture3d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x5_khr.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x6_khr.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x10_khr.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x12_khr.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x4_khr.texture3d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x5_khr.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x5_khr.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x6_khr.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x6_khr.texture3d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x8_khr.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr.texture3d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr.texture3d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr.texture3d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f.texture2d_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f.texture2d_array_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f.cubemap_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f.texture2d_array_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f.texture2d_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f.cubemap_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f.texture2d_array_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f.texture2d_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f.cubemap_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f.texture2d_array_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f.cubemap_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f.texture2d_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f.cubemap_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f.texture2d_array_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f.texture2d_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f.cubemap_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f.texture2d_array_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f.texture2d_array_to_texture3d |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f.texture2d_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f.cubemap_to_texture2d_array |  | ||||||
| dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f.texture2d_to_texture3d |  | ||||||
| dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.read_pixels_fbo_format_mismatch |  | ||||||
| dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_200x200_drawcount_8 |  | ||||||
| dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_200x200_drawcount_800 |  | ||||||
| dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_1000x1000_drawcount_5000 |  | ||||||
| dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_200x200_drawcount_1 |  | ||||||
| dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawelements_compute_data_and_indices |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.interaction.127x127ms0_default_129x129ms0 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.npot_size.15x511 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.npot_size.65x65 |  | ||||||
| dEQP-GLES31.functional.fbo.no_attachments.random.0 |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.atomic.comp_swap_r32ui_result |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.atomic.max_r32ui_result |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.atomic.or_r32i_return_value |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32f_r32i |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32i_rgba8ui |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32i_rgba32ui |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_rgba8_snorm |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8ui_r32i |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_7x1 |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.load_store.rgba8i |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.qualifiers.coherent_r32i |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.store.r32f |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d.store.rgba8_snorm |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.atomic.exchange_r32ui_return_value |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.atomic.min_r32ui_return_value |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.atomic.or_r32i_result |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32f_rgba8i |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32i_r32f |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba32i_rgba32f |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_r32i |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8ui_rgba8i |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.image_size.readonly_1x1x1 |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.load_store.r32i_single_layer |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba32f_single_layer |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8ui_single_layer |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.qualifiers.volatile_r32ui |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.store.rgba16i_single_layer |  | ||||||
| dEQP-GLES31.functional.image_load_store.2d_array.store.rgba32ui_single_layer |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.atomic.add_r32ui_result |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.atomic.max_r32i_return_value |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.atomic.xor_r32ui_result |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32ui_r32i |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16f_rgba16i |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16ui_rgba16i |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_rgba8ui |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_snorm_rgba8 |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8i_r32i |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_writeonly_12x34x56 |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.load_store.rgba16ui |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8i |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.qualifiers.coherent_r32f |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.store.r32f |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.store.rgba32i |  | ||||||
| dEQP-GLES31.functional.image_load_store.3d.store.rgba8_snorm |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.atomic.and_r32ui_return_value |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.atomic.exchange_r32i_result |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.atomic.min_r32i_result |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32i_rgba8 |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32ui_r32f |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32f_rgba32ui |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32ui_rgba32f |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_r32ui |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8i_r32f |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.image_size.writeonly_1x1 |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.load_store.r32f_single_layer |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.load_store.rgba32i_single_layer |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8_snorm_single_layer |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.store.r32i_single_layer |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.store.rgba32f_single_layer |  | ||||||
| dEQP-GLES31.functional.image_load_store.cube.store.rgba8ui_single_layer |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_image_uniforms |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_constants.core.max_draw_buffers |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_atomic_counter_buffers |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader.max_tess_control_total_output_components |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader.max_tess_evaluation_uniform_components |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.int_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uvec3_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec4_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec3_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute.vec2 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute.vec4 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute.vec4 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute.vec2 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_compute.vec4 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_compute.vec2 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_compute.vec4 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute.vec2 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat2 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat4 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute.vec4 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute.vec2 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute.vec4 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat3x2 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat2x3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat2x4 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute.vec4 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute.vec2 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.mediump_compute.scalar |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat4x2 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat3x4 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute.vec3 |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.texture_size.samples_1_texture_2d_array |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.uniform.findLSBMinusOne.mediump_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.uniform.findMSBMinusOne.highp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_functions.uniform.findMSBZero.lowp_tess_eval |  | ||||||
| dEQP-GLES31.functional.shaders.builtin_var.compute.global_invocation_id |  | ||||||
| dEQP-GLES31.functional.shaders.linkage.es31.tessellation.uniform.types.int |  | ||||||
| dEQP-GLES31.functional.shaders.linkage.es31.tessellation.uniform.types.vec4 |  | ||||||
| dEQP-GLES31.functional.shaders.linkage.es31.tessellation.varying.rules.internal_superfluous_declaration |  | ||||||
| dEQP-GLES31.functional.shaders.linkage.es31.tessellation.varying.types.ivec2 |  | ||||||
| dEQP-GLES31.functional.shaders.linkage.es31.tessellation.varying.types.mat2 |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_literal_tessellation_evaluation |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.samplercubeshadow |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.tessellation_control.isampler2d |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.tessellation_evaluation.isamplercube |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.isampler2darray |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.tessellation_control.samplercube |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.tessellation_control.usampler2d |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.tessellation_evaluation.sampler2darray |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.tessellation_evaluation.usamplercube |  | ||||||
| dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.const_expression_tessellation_evaluation |  | ||||||
| dEQP-GLES31.functional.ssbo.array_length.unsized_writeonly_array |  | ||||||
| dEQP-GLES31.functional.ssbo.atomic.add.mediump_uint |  | ||||||
| dEQP-GLES31.functional.ssbo.atomic.and.highp_uint |  | ||||||
| dEQP-GLES31.functional.ssbo.atomic.compswap.lowp_uint |  | ||||||
| dEQP-GLES31.functional.ssbo.atomic.max.lowp_uint |  | ||||||
| dEQP-GLES31.functional.ssbo.atomic.xor.mediump_uint |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.uint |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.uvec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.vec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.bvec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.ivec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat2x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.bool |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.vec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer.std140_instance_array |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.ivec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat2x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.uvec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.bvec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.vec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.float |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.uvec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.bvec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.int |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat2x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.ivec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.uvec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.vec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.uint |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.float |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.uvec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.bvec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.vec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat2x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.ivec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.bvec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.int |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.uint |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.uvec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.vec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.bvec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.ivec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat2x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.bool |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.vec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.shared_instance_array |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer.packed_instance_array |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer.std140_instance_array |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.12 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.22 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.32 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.42 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.12 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.22 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.32 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.42 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.12 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.22 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.12 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.22 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.17 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.7 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.basic_types.17 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.basic_types.7 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.nested_structs.12 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.nested_structs.2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.nested_structs.22 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.17 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.7 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.17 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.7 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.12 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.22 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.scalar_types.17 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.scalar_types.7 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.17 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.7 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.vector_types.12 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.vector_types.2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.random.vector_types.22 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.bool |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.vec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.bvec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.ivec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat2x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.uvec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.ivec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat2x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.bvec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_vec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_ivec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat2x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_uvec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.bvec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat2x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_uvec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_vec4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_ivec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.bvec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_ivec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat2x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_uvec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_vec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.bool |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat3x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_uint |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat2x4 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_vec3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_ivec2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat3x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat4x2 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat4x3 |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer.shared_instance_array |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer.std430_instance_array |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer.packed_instance_array |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer.std140_instance_array |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer.packed_instance_array |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer.packed_instance_array |  | ||||||
| dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.std430_instance_array |  | ||||||
| dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getinteger64 |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_pure_uint |  | ||||||
| dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_integer |  | ||||||
| dEQP-GLES31.functional.synchronization.in_invocation.image_atomic_read_write |  | ||||||
| dEQP-GLES31.functional.synchronization.in_invocation.ssbo_atomic_read_write |  | ||||||
| dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_multiple_unrelated_write_read_non_ordered |  | ||||||
| dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_atomic_multiple_unrelated_write_read_ordered |  | ||||||
| dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_overwrite |  | ||||||
| dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_2_calls_32_invocations |  | ||||||
| dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_5_calls_32_invocations |  | ||||||
| dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_100_calls_32k_invocations |  | ||||||
| dEQP-GLES31.functional.synchronization.inter_invocation.image_atomic_read_write |  | ||||||
| dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_atomic_read_write |  | ||||||
| dEQP-GLES31.functional.tessellation.common_edge.quads_fractional_odd_spacing |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component.isolines_fractional_odd_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component.quads_fractional_odd_spacing_cw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component.triangles_fractional_even_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence.quads_fractional_odd_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence.triangles_fractional_odd_spacing_cw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry.isolines_fractional_even_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry.quads_equal_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry.quads_fractional_even_spacing_cw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry.triangles_equal_spacing_cw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.outer_triangle_set.triangles_equal_spacing |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.primitive_set.isolines_equal_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.primitive_set.isolines_fractional_even_spacing_cw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.primitive_set.quads_equal_spacing_cw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.primitive_set.triangles_fractional_odd_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range.isolines_equal_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range.isolines_fractional_even_spacing_cw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range.quads_equal_spacing_cw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range.triangles_fractional_odd_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.invariance.triangle_set.triangles_fractional_even_spacing |  | ||||||
| dEQP-GLES31.functional.tessellation.misc_draw.fill_overlap_quads_equal_spacing |  | ||||||
| dEQP-GLES31.functional.tessellation.primitive_discard.isolines_fractional_odd_spacing_cw |  | ||||||
| dEQP-GLES31.functional.tessellation.primitive_discard.quads_fractional_even_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.primitive_discard.triangles_equal_spacing_ccw |  | ||||||
| dEQP-GLES31.functional.tessellation.primitive_discard.triangles_fractional_even_spacing_cw |  | ||||||
| dEQP-GLES31.functional.tessellation.shader_input_output.barrier |  | ||||||
| dEQP-GLES31.functional.tessellation.shader_input_output.patch_vertices_in_tes |  | ||||||
| dEQP-GLES31.functional.tessellation.tesscoord.isolines_fractional_even_spacing |  | ||||||
| dEQP-GLES31.functional.tessellation.user_defined_io.per_patch.vertex_io_array_size_implicit.isolines |  | ||||||
| dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_array.vertex_io_array_size_shader_builtin.triangles |  | ||||||
| dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_shader_builtin.quads |  | ||||||
| dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_shader_builtin.isolines |  | ||||||
| dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query.quads_explicit_tcs_out_size |  | ||||||
| dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin.triangles |  | ||||||
| dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin.isolines |  | ||||||
| dEQP-GLES31.functional.texture.border_clamp.range_clamp.nearest_float_depth |  | ||||||
| @@ -1,16 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| if [ -z "$VK_DRIVER" ]; then |  | ||||||
|    echo 'VK_DRIVER must be to something like "radeon" or "intel" for the test run' |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| INSTALL=`pwd`/install |  | ||||||
|  |  | ||||||
| # Set up the driver environment. |  | ||||||
| export LD_LIBRARY_PATH=`pwd`/install/lib/ |  | ||||||
| export VK_ICD_FILENAMES=`pwd`/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.x86_64.json |  | ||||||
|  |  | ||||||
| "$INSTALL/fossils/fossils.sh" "$INSTALL/fossils.yml" |  | ||||||
| @@ -1,6 +0,0 @@ | |||||||
| fossils-db: |  | ||||||
|   repo: "https://gitlab.freedesktop.org/hakzsam/fossils-db" |  | ||||||
|   commit: "59b11cd19e375c5871c512f73b1f8ecc33a5c417" |  | ||||||
|  |  | ||||||
| fossils: |  | ||||||
|   - path: sascha-willems/database.foz |  | ||||||
| @@ -1,71 +0,0 @@ | |||||||
| #!/usr/bin/env bash |  | ||||||
|  |  | ||||||
| FOSSILS_SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" |  | ||||||
| FOSSILS_YAML="$(readlink -f "$1")" |  | ||||||
|  |  | ||||||
| clone_fossils_db() |  | ||||||
| { |  | ||||||
|     local repo="$1" |  | ||||||
|     local commit="$2" |  | ||||||
|     rm -rf fossils-db |  | ||||||
|     git clone --no-checkout "$repo" fossils-db |  | ||||||
|     (cd fossils-db; git reset "$commit" || git reset "origin/$commit") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query_fossils_yaml() |  | ||||||
| { |  | ||||||
|     python3 "$FOSSILS_SCRIPT_DIR/query_fossils_yaml.py" \ |  | ||||||
|         --file "$FOSSILS_YAML" "$@" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| create_clean_git() |  | ||||||
| { |  | ||||||
|     rm -rf .clean_git |  | ||||||
|     cp -R .git .clean_git |  | ||||||
| } |  | ||||||
|  |  | ||||||
| restore_clean_git() |  | ||||||
| { |  | ||||||
|     rm -rf .git |  | ||||||
|     cp -R .clean_git .git |  | ||||||
| } |  | ||||||
|  |  | ||||||
| fetch_fossil() |  | ||||||
| { |  | ||||||
|     local fossil="${1//,/?}" |  | ||||||
|     echo -n "[fetch_fossil] Fetching $1... " |  | ||||||
|     local output=$(git lfs pull -I "$fossil" 2>&1) |  | ||||||
|     local ret=0 |  | ||||||
|     if [[ $? -ne 0 || ! -f "$1" ]]; then |  | ||||||
|         echo "ERROR" |  | ||||||
|         echo "$output" |  | ||||||
|         ret=1 |  | ||||||
|     else |  | ||||||
|         echo "OK" |  | ||||||
|     fi |  | ||||||
|     restore_clean_git |  | ||||||
|     return $ret |  | ||||||
| } |  | ||||||
|  |  | ||||||
| if [[ -n "$(query_fossils_yaml fossils_db_repo)" ]]; then |  | ||||||
|     clone_fossils_db "$(query_fossils_yaml fossils_db_repo)" \ |  | ||||||
|                      "$(query_fossils_yaml fossils_db_commit)" |  | ||||||
|     cd fossils-db |  | ||||||
| else |  | ||||||
|     echo "Warning: No fossils-db entry in $FOSSILS_YAML, assuming fossils-db is current directory" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # During git operations various git objects get created which |  | ||||||
| # may take up significant space. Store a clean .git instance, |  | ||||||
| # which we restore after various git operations to keep our |  | ||||||
| # storage consumption low. |  | ||||||
| create_clean_git |  | ||||||
|  |  | ||||||
| for fossil in $(query_fossils_yaml fossils) |  | ||||||
| do |  | ||||||
|     fetch_fossil "$fossil" || exit $? |  | ||||||
|     fossilize-replay $fossil || exit $? |  | ||||||
|     rm $fossil |  | ||||||
| done |  | ||||||
|  |  | ||||||
| exit $ret |  | ||||||
| @@ -1,69 +0,0 @@ | |||||||
| #!/usr/bin/python3 |  | ||||||
|  |  | ||||||
| # Copyright (c) 2019 Collabora Ltd |  | ||||||
| # Copyright (c) 2020 Valve 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. |  | ||||||
| # |  | ||||||
| # SPDX-License-Identifier: MIT |  | ||||||
|  |  | ||||||
| import argparse |  | ||||||
| import yaml |  | ||||||
|  |  | ||||||
| def cmd_fossils_db_repo(args): |  | ||||||
|     with open(args.file, 'r') as f: |  | ||||||
|         y = yaml.safe_load(f) |  | ||||||
|     print(y['fossils-db']['repo']) |  | ||||||
|  |  | ||||||
| def cmd_fossils_db_commit(args): |  | ||||||
|     with open(args.file, 'r') as f: |  | ||||||
|         y = yaml.safe_load(f) |  | ||||||
|     print(y['fossils-db']['commit']) |  | ||||||
|  |  | ||||||
| def cmd_fossils(args): |  | ||||||
|     with open(args.file, 'r') as f: |  | ||||||
|         y = yaml.safe_load(f) |  | ||||||
|  |  | ||||||
|     fossils = list(y['fossils']) |  | ||||||
|     if len(fossils) == 0: |  | ||||||
|         return |  | ||||||
|  |  | ||||||
|     print('\n'.join((t['path'] for t in fossils))) |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     parser = argparse.ArgumentParser() |  | ||||||
|     parser.add_argument('--file', required=True, |  | ||||||
|                         help='the name of the yaml file') |  | ||||||
|  |  | ||||||
|     subparsers = parser.add_subparsers(help='sub-command help') |  | ||||||
|  |  | ||||||
|     parser_fossils_db_repo = subparsers.add_parser('fossils_db_repo') |  | ||||||
|     parser_fossils_db_repo.set_defaults(func=cmd_fossils_db_repo) |  | ||||||
|  |  | ||||||
|     parser_fossils_db_commit = subparsers.add_parser('fossils_db_commit') |  | ||||||
|     parser_fossils_db_commit.set_defaults(func=cmd_fossils_db_commit) |  | ||||||
|  |  | ||||||
|     parser_fossils = subparsers.add_parser('fossils') |  | ||||||
|     parser_fossils.set_defaults(func=cmd_fossils) |  | ||||||
|  |  | ||||||
|     args = parser.parse_args() |  | ||||||
|     args.func(args) |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     main() |  | ||||||
| @@ -1,45 +0,0 @@ | |||||||
| #!/usr/bin/env python3 |  | ||||||
|  |  | ||||||
| from jinja2 import Environment, FileSystemLoader |  | ||||||
| import argparse |  | ||||||
| import os |  | ||||||
|  |  | ||||||
| parser = argparse.ArgumentParser() |  | ||||||
| parser.add_argument("--template") |  | ||||||
| parser.add_argument("--pipeline-info") |  | ||||||
| parser.add_argument("--base-artifacts-url") |  | ||||||
| parser.add_argument("--device-type") |  | ||||||
| parser.add_argument("--kernel-image-name") |  | ||||||
| parser.add_argument("--kernel-image-type", nargs='?', default="") |  | ||||||
| parser.add_argument("--gpu-version") |  | ||||||
| parser.add_argument("--boot-method") |  | ||||||
| parser.add_argument("--lava-tags", nargs='?', default="") |  | ||||||
| parser.add_argument("--env-vars", nargs='?', default="") |  | ||||||
| parser.add_argument("--deqp-version") |  | ||||||
| parser.add_argument("--arch") |  | ||||||
| parser.add_argument("--ci-node-index") |  | ||||||
| parser.add_argument("--ci-node-total") |  | ||||||
| args = parser.parse_args() |  | ||||||
|  |  | ||||||
| env = Environment(loader = FileSystemLoader(os.path.dirname(args.template)), trim_blocks=True, lstrip_blocks=True) |  | ||||||
| template = env.get_template(os.path.basename(args.template)) |  | ||||||
|  |  | ||||||
| env_vars = "%s CI_NODE_INDEX=%s CI_NODE_TOTAL=%s" % (args.env_vars, args.ci_node_index, args.ci_node_total) |  | ||||||
|  |  | ||||||
| values = {} |  | ||||||
| values['pipeline_info'] = args.pipeline_info |  | ||||||
| values['base_artifacts_url'] = args.base_artifacts_url |  | ||||||
| values['device_type'] = args.device_type |  | ||||||
| values['kernel_image_name'] = args.kernel_image_name |  | ||||||
| values['kernel_image_type'] = args.kernel_image_type |  | ||||||
| values['gpu_version'] = args.gpu_version |  | ||||||
| values['boot_method'] = args.boot_method |  | ||||||
| values['tags'] = args.lava_tags |  | ||||||
| values['env_vars'] = env_vars |  | ||||||
| values['deqp_version'] = args.deqp_version |  | ||||||
| values['arch'] = args.arch |  | ||||||
|  |  | ||||||
| f = open('lava-deqp.yml', "w") |  | ||||||
| f.write(template.render(values)) |  | ||||||
| f.close() |  | ||||||
|  |  | ||||||
| @@ -1,105 +0,0 @@ | |||||||
| job_name: mesa-deqp-{{ deqp_version }}-{{ gpu_version }} {{ pipeline_info }} |  | ||||||
| device_type: {{ device_type }} |  | ||||||
| timeouts: |  | ||||||
|   job: |  | ||||||
|     minutes: 40 |  | ||||||
|   action: |  | ||||||
|    minutes: 10 |  | ||||||
|   actions: |  | ||||||
|     power-off: |  | ||||||
|       seconds: 30 |  | ||||||
| priority: 75 |  | ||||||
| visibility: public |  | ||||||
| {% if tags %} |  | ||||||
| {% set lavatags = tags.split(',') %} |  | ||||||
| tags: |  | ||||||
| {% for tag in lavatags %} |  | ||||||
|   - {{ tag }} |  | ||||||
| {% endfor %} |  | ||||||
| {% endif %} |  | ||||||
| actions: |  | ||||||
| - deploy: |  | ||||||
|     timeout: |  | ||||||
|       minutes: 10 |  | ||||||
| {% if boot_method == "fastboot" %} |  | ||||||
| {# fastboot has just one boot image with the dtb and rootfs packed in #} |  | ||||||
|     to: fastboot |  | ||||||
|     images: |  | ||||||
|       boot: |  | ||||||
|         url: {{ base_artifacts_url }}/{{ kernel_image_name }} |  | ||||||
| {% else %} |  | ||||||
|     to: tftp |  | ||||||
|     kernel: |  | ||||||
|       url: {{ base_artifacts_url }}/{{ kernel_image_name }} |  | ||||||
| {% if kernel_image_type %} |  | ||||||
|       {{ kernel_image_type }} |  | ||||||
| {% endif %} |  | ||||||
|     ramdisk: |  | ||||||
|       url: {{ base_artifacts_url }}/lava-rootfs-{{ arch }}.cpio.gz |  | ||||||
|       compression: gz |  | ||||||
|     dtb: |  | ||||||
|       url: {{ base_artifacts_url }}/{{ device_type }}.dtb |  | ||||||
| {% endif %} |  | ||||||
|     os: oe |  | ||||||
| - boot: |  | ||||||
|     timeout: |  | ||||||
|       minutes: 5 |  | ||||||
|     method: {{ boot_method }} |  | ||||||
| {% if boot_method == "fastboot" %} |  | ||||||
| {# |  | ||||||
|    For fastboot, LAVA doesn't know how to unpack the rootfs/apply overlay/repack, |  | ||||||
|    so we transfer the overlay over the network after boot. |  | ||||||
| #} |  | ||||||
|     transfer_overlay: |  | ||||||
|       download_command: wget -S --progress=dot:giga |  | ||||||
|       unpack_command: tar -C / -xzf |  | ||||||
| {% else %} |  | ||||||
|     commands: ramdisk |  | ||||||
| {% endif %} |  | ||||||
|     prompts: |  | ||||||
|       - 'lava-shell:' |  | ||||||
| - 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 || echo possibly already mounted |  | ||||||
|           - mkdir -p /dev/pts |  | ||||||
|           - mount -t devpts devpts /dev/pts |  | ||||||
|  |  | ||||||
| {% if env_vars %} |  | ||||||
|           - export {{ env_vars }} |  | ||||||
| {% endif %} |  | ||||||
|  |  | ||||||
|           # deqp-runner.sh assumes some stuff is in pwd |  | ||||||
|           - cd / |  | ||||||
|  |  | ||||||
|           - export DEQP_NO_SAVE_RESULTS=1 |  | ||||||
|           - 'export DEQP_RUNNER_OPTIONS="--shuffle false"' |  | ||||||
|           - export DEQP_EXPECTED_FAILS=deqp-{{ gpu_version }}-fails.txt |  | ||||||
|           - export DEQP_SKIPS=deqp-{{ gpu_version }}-skips.txt |  | ||||||
|           - export DEQP_VER={{ deqp_version }} |  | ||||||
|           - export LIBGL_DRIVERS_PATH=`pwd`/install/lib/dri |  | ||||||
|  |  | ||||||
|           - "if sh /install/deqp-runner.sh; then |  | ||||||
|                   echo 'deqp: pass'; |  | ||||||
|              else |  | ||||||
|                   echo 'deqp: fail'; |  | ||||||
|              fi" |  | ||||||
|         parse: |  | ||||||
|           pattern: '(?P<test_case_id>\S*):\s+(?P<result>(pass|fail))' |  | ||||||
|       from: inline |  | ||||||
|       name: deqp |  | ||||||
|       path: inline/mesa-deqp.yaml |  | ||||||
| @@ -1,173 +0,0 @@ | |||||||
| .lava-test: |  | ||||||
|   extends: |  | ||||||
|     - .ci-run-policy |  | ||||||
|   variables: |  | ||||||
|     GIT_STRATEGY: none # testing doesn't build anything from source |  | ||||||
|     ENV_VARS: "DEQP_PARALLEL=6" |  | ||||||
|     DEQP_VERSION: gles2 |  | ||||||
|   script: |  | ||||||
|     - mkdir -p /srv/${FILES_HOST_NAME}/$CI_JOB_ID/ |  | ||||||
|     - cp /lava-files/${KERNEL_IMAGE_NAME} /srv/${FILES_HOST_NAME}/$CI_JOB_ID/. |  | ||||||
|     - cp /lava-files/${DEVICE_TYPE}.dtb /srv/${FILES_HOST_NAME}/$CI_JOB_ID/. |  | ||||||
|     - tar -C /lava-files/rootfs-${ARCH} -xf artifacts/install.tar |  | ||||||
|     - pushd /lava-files/rootfs-${ARCH} |  | ||||||
|     - find -H  |  cpio -H newc -o | gzip -c - > /srv/${FILES_HOST_NAME}/$CI_JOB_ID/lava-rootfs-${ARCH}.cpio.gz |  | ||||||
|     - popd |  | ||||||
|     - > |  | ||||||
|       artifacts/generate_lava.py \ |  | ||||||
|         --template artifacts/lava-deqp.yml.jinja2 \ |  | ||||||
|         --pipeline-info "$CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \ |  | ||||||
|         --base-artifacts-url ${FILES_HOST_URL}/$CI_JOB_ID \ |  | ||||||
|         --device-type ${DEVICE_TYPE} \ |  | ||||||
|         --env-vars "${ENV_VARS}" \ |  | ||||||
|         --arch ${ARCH} \ |  | ||||||
|         --deqp-version ${DEQP_VERSION} \ |  | ||||||
|         --kernel-image-name ${KERNEL_IMAGE_NAME} \ |  | ||||||
|         --kernel-image-type "${KERNEL_IMAGE_TYPE}" \ |  | ||||||
|         --gpu-version ${GPU_VERSION} \ |  | ||||||
|         --boot-method ${BOOT_METHOD} \ |  | ||||||
|         --lava-tags "${LAVA_TAGS}" \ |  | ||||||
|         --ci-node-index "${CI_NODE_INDEX}" \ |  | ||||||
|         --ci-node-total "${CI_NODE_TOTAL}" |  | ||||||
|     - lava_job_id=`lavacli jobs submit lava-deqp.yml` || lavacli jobs submit lava-deqp.yml |  | ||||||
|     - echo $lava_job_id |  | ||||||
|     - rm -rf artifacts/* |  | ||||||
|     - cp lava-deqp.yml artifacts/. |  | ||||||
|     - lavacli jobs logs $lava_job_id | tee artifacts/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" ]]' |  | ||||||
|   after_script: |  | ||||||
|     - rm -rf /srv/${FILES_HOST_NAME}/$CI_JOB_ID/ |  | ||||||
|   artifacts: |  | ||||||
|     name: "mesa_${CI_JOB_NAME}" |  | ||||||
|     when: always |  | ||||||
|     paths: |  | ||||||
|       - artifacts/ |  | ||||||
|  |  | ||||||
| .lava-test:armhf: |  | ||||||
|   variables: |  | ||||||
|     ARCH: armhf |  | ||||||
|     KERNEL_IMAGE_NAME: zImage |  | ||||||
|     KERNEL_IMAGE_TYPE: "type:\ zimage" |  | ||||||
|     BOOT_METHOD: u-boot |  | ||||||
|   extends: |  | ||||||
|     - .lava-test |  | ||||||
|     - .use-arm_build |  | ||||||
|   dependencies: |  | ||||||
|     - meson-armhf |  | ||||||
|   needs: |  | ||||||
|     - arm_build |  | ||||||
|     - meson-armhf |  | ||||||
|  |  | ||||||
| .lava-test:arm64: |  | ||||||
|   variables: |  | ||||||
|     ARCH: arm64 |  | ||||||
|     KERNEL_IMAGE_NAME: Image |  | ||||||
|     KERNEL_IMAGE_TYPE: "type:\ image" |  | ||||||
|     BOOT_METHOD: u-boot |  | ||||||
|   extends: |  | ||||||
|     - .lava-test |  | ||||||
|     - .use-arm_build |  | ||||||
|   dependencies: |  | ||||||
|     - meson-arm64 |  | ||||||
|   needs: |  | ||||||
|     - arm_build |  | ||||||
|     - meson-arm64 |  | ||||||
|  |  | ||||||
| panfrost-t720-gles2:arm64: |  | ||||||
|   extends: |  | ||||||
|     - .lava-test:arm64 |  | ||||||
|     - .panfrost-rules |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: sun50i-h6-pine-h64 |  | ||||||
|     GPU_VERSION: panfrost-t720 |  | ||||||
|     ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T720" |  | ||||||
|     FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org" |  | ||||||
|     FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org" |  | ||||||
|   tags: |  | ||||||
|     - mesa-ci-aarch64-lava-collabora |  | ||||||
|  |  | ||||||
| panfrost-t760-gles2:armhf: |  | ||||||
|   extends: |  | ||||||
|     - .lava-test:armhf |  | ||||||
|     - .panfrost-rules |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: rk3288-veyron-jaq |  | ||||||
|     GPU_VERSION: panfrost-t760 |  | ||||||
|     BOOT_METHOD: depthcharge |  | ||||||
|     KERNEL_IMAGE_TYPE: "" |  | ||||||
|     ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T760" |  | ||||||
|     FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org" |  | ||||||
|     FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org" |  | ||||||
|   tags: |  | ||||||
|     - mesa-ci-aarch64-lava-collabora |  | ||||||
|  |  | ||||||
| panfrost-t860-gles2:arm64: |  | ||||||
|   extends: |  | ||||||
|     - .lava-test:arm64 |  | ||||||
|     - .panfrost-rules |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: rk3399-gru-kevin |  | ||||||
|     GPU_VERSION: panfrost-t860 |  | ||||||
|     BOOT_METHOD: depthcharge |  | ||||||
|     KERNEL_IMAGE_TYPE: "" |  | ||||||
|     ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860" |  | ||||||
|     FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org" |  | ||||||
|     FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org" |  | ||||||
|   tags: |  | ||||||
|     - mesa-ci-aarch64-lava-collabora |  | ||||||
|  |  | ||||||
| panfrost-t860-gles3:arm64: |  | ||||||
|   extends: |  | ||||||
|     - .lava-test:arm64 |  | ||||||
|     - .panfrost-rules |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: rk3399-gru-kevin |  | ||||||
|     GPU_VERSION: panfrost-t860 |  | ||||||
|     BOOT_METHOD: depthcharge |  | ||||||
|     KERNEL_IMAGE_TYPE: "" |  | ||||||
|     DEQP_VERSION: gles3 |  | ||||||
|     ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860" |  | ||||||
|     CI_NODE_INDEX: 1 |  | ||||||
|     CI_NODE_TOTAL: 5 |  | ||||||
|     FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org" |  | ||||||
|     FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org" |  | ||||||
|   tags: |  | ||||||
|     - mesa-ci-aarch64-lava-collabora |  | ||||||
|  |  | ||||||
| .panfrost-t820-gles2:arm64: |  | ||||||
|   extends: |  | ||||||
|     - .lava-test:arm64 |  | ||||||
|     - .panfrost-rules |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: meson-gxm-khadas-vim2 |  | ||||||
|     GPU_VERSION: panfrost-t820 |  | ||||||
|     LAVA_TAGS: panfrost |  | ||||||
|     ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T820" |  | ||||||
|   tags: |  | ||||||
|     - mesa-ci-aarch64-lava-baylibre |  | ||||||
|  |  | ||||||
| .lima-mali400-test:armhf: |  | ||||||
|   parallel: 2 |  | ||||||
|   extends: |  | ||||||
|     - .lava-test:armhf |  | ||||||
|     - .lima-rules |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: sun8i-h3-libretech-all-h3-cc |  | ||||||
|     GPU_VERSION: lima |  | ||||||
|     ENV_VARS: "DEQP_PARALLEL=3 DEQP_EXPECTED_RENDERER=Mali400" |  | ||||||
|   tags: |  | ||||||
|     - mesa-ci-aarch64-lava-baylibre |  | ||||||
|  |  | ||||||
| .lima-mali450-test:arm64: |  | ||||||
|   extends: |  | ||||||
|     - .lava-test:arm64 |  | ||||||
|     - .lima-rules |  | ||||||
|   variables: |  | ||||||
|     DEVICE_TYPE: meson-gxl-s905x-libretech-cc |  | ||||||
|     GPU_VERSION: lima |  | ||||||
|     ENV_VARS: "DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=Mali450" |  | ||||||
|   tags: |  | ||||||
|     - mesa-ci-aarch64-lava-baylibre |  | ||||||
| @@ -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,63 +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:-[]} \ |  | ||||||
|       ${EXTRA_OPTION} |  | ||||||
| cd _build |  | ||||||
| meson configure |  | ||||||
| ninja |  | ||||||
| LC_ALL=C.UTF-8 ninja test |  | ||||||
| ninja install |  | ||||||
| cd .. |  | ||||||
| @@ -1,36 +0,0 @@ | |||||||
| diff --git a/generated_tests/CMakeLists.txt b/generated_tests/CMakeLists.txt |  | ||||||
| index 738526546..6f89048cd 100644 |  | ||||||
| --- a/generated_tests/CMakeLists.txt |  | ||||||
| +++ b/generated_tests/CMakeLists.txt |  | ||||||
| @@ -206,11 +206,6 @@ piglit_make_generated_tests( |  | ||||||
| 	templates/gen_variable_index_write_tests/vs.shader_test.mako |  | ||||||
| 	templates/gen_variable_index_write_tests/fs.shader_test.mako |  | ||||||
| 	templates/gen_variable_index_write_tests/helpers.mako) |  | ||||||
| -piglit_make_generated_tests( |  | ||||||
| -	vs_in_fp64.list |  | ||||||
| -	gen_vs_in_fp64.py |  | ||||||
| -	templates/gen_vs_in_fp64/columns.shader_test.mako |  | ||||||
| -	templates/gen_vs_in_fp64/regular.shader_test.mako) |  | ||||||
|  piglit_make_generated_tests( |  | ||||||
| 	shader_framebuffer_fetch_tests.list |  | ||||||
| 	gen_shader_framebuffer_fetch_tests.py) |  | ||||||
| @@ -279,7 +274,6 @@ add_custom_target(gen-gl-tests |  | ||||||
| 			gen_extensions_defined.list |  | ||||||
| 			vp-tex.list |  | ||||||
| 			variable_index_write_tests.list |  | ||||||
| -			vs_in_fp64.list |  | ||||||
| 			gpu_shader4_tests.list |  | ||||||
|  ) |  | ||||||
|  |  | ||||||
| diff --git a/tests/sanity.py b/tests/sanity.py |  | ||||||
| index 12f1614c9..9019087e2 100644 |  | ||||||
| --- a/tests/sanity.py |  | ||||||
| +++ b/tests/sanity.py |  | ||||||
| @@ -100,7 +100,6 @@ shader_tests = ( |  | ||||||
|      'spec/arb_tessellation_shader/execution/barrier-patch.shader_test', |  | ||||||
|      'spec/arb_tessellation_shader/execution/built-in-functions/tcs-any-bvec4-using-if.shader_test', |  | ||||||
|      'spec/arb_tessellation_shader/execution/sanity.shader_test', |  | ||||||
| -    'spec/arb_vertex_attrib_64bit/execution/vs_in/vs-input-uint_uvec4-double_dmat3x4_array2-position.shader_test', |  | ||||||
|      'spec/glsl-1.50/execution/geometry-basic.shader_test', |  | ||||||
|      'spec/oes_viewport_array/viewport-gs-write-simple.shader_test', |  | ||||||
|  ) |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,29 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| VERSION=`cat install/VERSION` |  | ||||||
|  |  | ||||||
| cd /piglit |  | ||||||
|  |  | ||||||
| PIGLIT_OPTIONS=$(echo $PIGLIT_OPTIONS | head -n 1) |  | ||||||
| xvfb-run --server-args="-noreset" sh -c \ |  | ||||||
|          "export LD_LIBRARY_PATH=$OLDPWD/install/lib; |  | ||||||
|          wflinfo --platform glx --api gl --profile core | grep \"Mesa $VERSION\\\$\" && |  | ||||||
|          ./piglit run -j4 $PIGLIT_OPTIONS $PIGLIT_PROFILES $OLDPWD/results" |  | ||||||
|  |  | ||||||
| PIGLIT_RESULTS=${PIGLIT_RESULTS:-$PIGLIT_PROFILES} |  | ||||||
| mkdir -p .gitlab-ci/piglit |  | ||||||
| cp $OLDPWD/install/piglit/$PIGLIT_RESULTS.txt .gitlab-ci/piglit/$PIGLIT_RESULTS.txt.baseline |  | ||||||
| ./piglit summary console $OLDPWD/results | head -n -1 | grep -v ": pass" >.gitlab-ci/piglit/$PIGLIT_RESULTS.txt |  | ||||||
|  |  | ||||||
| if diff -q .gitlab-ci/piglit/$PIGLIT_RESULTS.txt{.baseline,}; then |  | ||||||
|     exit 0 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| ./piglit summary html --exclude-details=pass $OLDPWD/summary $OLDPWD/results |  | ||||||
|  |  | ||||||
| echo Unexpected change in results: |  | ||||||
| diff -u .gitlab-ci/piglit/$PIGLIT_RESULTS.txt{.baseline,} |  | ||||||
| exit 1 |  | ||||||
| @@ -1,49 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| set -o xtrace |  | ||||||
|  |  | ||||||
| CROSS_FILE=/cross_file-"$CROSS".txt |  | ||||||
|  |  | ||||||
| # Delete unused bin and includes from artifacts to save space. |  | ||||||
| rm -rf install/bin 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. |  | ||||||
| cp VERSION install/ |  | ||||||
| cp -Rp .gitlab-ci/deqp* install/ |  | ||||||
| cp -Rp .gitlab-ci/piglit install/ |  | ||||||
| cp -Rp .gitlab-ci/traces.yml install/ |  | ||||||
| cp -Rp .gitlab-ci/tracie install/ |  | ||||||
| cp -Rp .gitlab-ci/tracie-runner-gl.sh install/ |  | ||||||
| cp -Rp .gitlab-ci/tracie-runner-vk.sh install/ |  | ||||||
| cp -Rp .gitlab-ci/fossils.yml install/ |  | ||||||
| cp -Rp .gitlab-ci/fossils install/ |  | ||||||
| cp -Rp .gitlab-ci/fossilize-runner.sh install/ |  | ||||||
| cp -Rp .gitlab-ci/deqp-runner.sh install/ |  | ||||||
| cp -Rp .gitlab-ci/deqp-*-fails.txt install/ |  | ||||||
| cp -Rp .gitlab-ci/deqp-*-skips.txt install/ |  | ||||||
|  |  | ||||||
| # Tar up the install dir so that symlinks and hardlinks aren't each |  | ||||||
| # packed separately in the zip file. |  | ||||||
| mkdir -p artifacts/ |  | ||||||
| tar -cf artifacts/install.tar install |  | ||||||
|  |  | ||||||
| # If the container has LAVA stuff, prepare the artifacts for LAVA jobs |  | ||||||
| if [ -d /lava-files ]; then |  | ||||||
|     # Pass needed files to the test stage |  | ||||||
|     cp $CI_PROJECT_DIR/.gitlab-ci/generate_lava.py artifacts/. |  | ||||||
|     cp $CI_PROJECT_DIR/.gitlab-ci/lava-deqp.yml.jinja2 artifacts/. |  | ||||||
| fi |  | ||||||
| @@ -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,146 +0,0 @@ | |||||||
| # This file list source dependencies to avoid creating/running jobs |  | ||||||
| # those outcome cannot be changed by the modifications from a branch. |  | ||||||
|  |  | ||||||
| # Mesa core source file dependencies |  | ||||||
| # ---------------------------------- |  | ||||||
| .mesa-rules: |  | ||||||
|   rules: |  | ||||||
|     - changes: &mesa_core_file_list |  | ||||||
|       - .gitlab-ci.yml |  | ||||||
|       - .gitlab-ci/**/* |  | ||||||
|       - include/**/* |  | ||||||
|       - meson.build |  | ||||||
|       - SConstruct |  | ||||||
|       - src/* |  | ||||||
|       - src/compiler/**/* |  | ||||||
|       - src/drm-shim/**/* |  | ||||||
|       - src/egl/**/* |  | ||||||
|       - src/gbm/**/* |  | ||||||
|       - src/glx/**/* |  | ||||||
|       - src/gtest/**/* |  | ||||||
|       - src/hgl/**/* |  | ||||||
|       - src/include/**/* |  | ||||||
|       - src/loader/**/* |  | ||||||
|       - src/mapi/**/* |  | ||||||
|       - src/mesa/**/* |  | ||||||
|       - src/util/**/* |  | ||||||
|  |  | ||||||
| # Gallium core source file dependencies |  | ||||||
| # ------------------------------------- |  | ||||||
| .gallium-rules: |  | ||||||
|   rules: |  | ||||||
|     - changes: &gallium_core_file_list |  | ||||||
|       - src/gallium/* |  | ||||||
|       - src/gallium/auxiliary/**/* |  | ||||||
|       - src/gallium/drivers/* |  | ||||||
|       - src/gallium/include/**/* |  | ||||||
|       - src/gallium/state_trackers/**/* |  | ||||||
|       - src/gallium/targets/**/* |  | ||||||
|       - src/gallium/tests/**/* |  | ||||||
|       - src/gallium/winsys/* |  | ||||||
|  |  | ||||||
| .softpipe-rules: |  | ||||||
|   stage: softpipe |  | ||||||
|   rules: |  | ||||||
|     - changes: |  | ||||||
|         *mesa_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|         *gallium_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|       - src/gallium/drivers/softpipe/**/* |  | ||||||
|       - src/gallium/winsys/sw/**/* |  | ||||||
|       when: on_success |  | ||||||
|     - when: never |  | ||||||
|  |  | ||||||
| .llvmpipe-rules: |  | ||||||
|   stage: llvmpipe |  | ||||||
|   rules: |  | ||||||
|     - changes: |  | ||||||
|         *mesa_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|         *gallium_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|       - src/gallium/drivers/llvmpipe/**/* |  | ||||||
|       - src/gallium/winsys/sw/**/* |  | ||||||
|       when: on_success |  | ||||||
|     - when: never |  | ||||||
|  |  | ||||||
| .freedreno-rules: |  | ||||||
|   stage: freedreno |  | ||||||
|   rules: |  | ||||||
|     - changes: |  | ||||||
|         *mesa_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|         *gallium_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|       - src/freedreno/**/* |  | ||||||
|       - src/gallium/drivers/freedreno/**/* |  | ||||||
|       - src/gallium/winsys/freedreno/**/* |  | ||||||
|       when: on_success |  | ||||||
|     - when: never |  | ||||||
|  |  | ||||||
| .panfrost-rules: |  | ||||||
|   stage: panfrost |  | ||||||
|   rules: |  | ||||||
|     - changes: |  | ||||||
|         *mesa_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|         *gallium_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|       - src/gallium/drivers/panfrost/**/* |  | ||||||
|       - src/gallium/winsys/panfrost/**/* |  | ||||||
|       - src/panfrost/**/* |  | ||||||
|       when: on_success |  | ||||||
|     - when: never |  | ||||||
|  |  | ||||||
| .lima-rules: |  | ||||||
|   stage: lima |  | ||||||
|   rules: |  | ||||||
|     - changes: |  | ||||||
|         *mesa_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|         *gallium_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|       - src/gallium/drivers/lima/**/* |  | ||||||
|       - src/gallium/winsys/lima/**/* |  | ||||||
|       - src/lima/**/* |  | ||||||
|       when: on_success |  | ||||||
|     - when: never |  | ||||||
|  |  | ||||||
| .radv-rules: |  | ||||||
|   rules: |  | ||||||
|     - changes: |  | ||||||
|         *mesa_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|       - src/amd/**/* |  | ||||||
|       - src/vulkan/**/* |  | ||||||
|       when: on_success |  | ||||||
|     - when: never |  | ||||||
|  |  | ||||||
| .virgl-rules: |  | ||||||
|   stage: virgl |  | ||||||
|   rules: |  | ||||||
|     - changes: |  | ||||||
|         *mesa_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|         *gallium_core_file_list |  | ||||||
|       when: on_success |  | ||||||
|     - changes: |  | ||||||
|       - src/gallium/drivers/llvmpipe/**/* |  | ||||||
|       - src/gallium/drivers/virgl/**/* |  | ||||||
|       - src/gallium/winsys/virgl/**/* |  | ||||||
|       - src/gallium/winsys/sw/**/* |  | ||||||
|       when: on_success |  | ||||||
|     - when: never |  | ||||||
| @@ -1,35 +0,0 @@ | |||||||
| traces-db: |  | ||||||
|   gitlab-project-url: "https://gitlab.freedesktop.org/gfx-ci/tracie/traces-db" |  | ||||||
|   commit: "d3b1efe0cd69ef6ae40a29a14ed733ee0ba0cb4c" |  | ||||||
|  |  | ||||||
| traces: |  | ||||||
|   - path: glmark2/desktop-blur-radius=5:effect=blur:passes=1:separable=true:windows=4.rdc |  | ||||||
|     expectations: |  | ||||||
|       - device: gl-vmware-llvmpipe |  | ||||||
|         checksum: 8867f3a41f180626d0d4b7661ff5c0f4 |  | ||||||
|       - device: gl-virgl |  | ||||||
|         checksum: 8867f3a41f180626d0d4b7661ff5c0f4 |  | ||||||
|   - path: glmark2/jellyfish.rdc |  | ||||||
|     expectations: |  | ||||||
|       - device: gl-vmware-llvmpipe |  | ||||||
|         checksum: e0fe979fee129c0ed42a3059d1a4e1c9 |  | ||||||
|       - device: gl-virgl |  | ||||||
|         checksum: e0fe979fee129c0ed42a3059d1a4e1c9 |  | ||||||
|   - path: glxgears/glxgears.trace |  | ||||||
|     expectations: |  | ||||||
|       - device: gl-vmware-llvmpipe |  | ||||||
|         checksum: 02aca9b4b4ad6fd60331df6e4f87f2cd |  | ||||||
|       - device: gl-virgl |  | ||||||
|         checksum: 02aca9b4b4ad6fd60331df6e4f87f2cd |  | ||||||
|   - path: KhronosGroup-Vulkan-Tools/vkcube.gfxr |  | ||||||
|     expectations: |  | ||||||
|       - device: vk-amd-polaris10 |  | ||||||
|         checksum: 29dc9e5e55c3de331407248737c23aa7 |  | ||||||
|   - path: LunarG-VulkanSamples/Hologram:-w:640:-h:480.gfxr |  | ||||||
|     expectations: |  | ||||||
|       - device: vk-amd-polaris10 |  | ||||||
|         checksum: 351710942ea93d511cef39ae2d7c68da |  | ||||||
|   - path: Wicked-Engine/Tests:Cloth_Physics_Test.trace-dxgi |  | ||||||
|     expectations: |  | ||||||
|       - device: vk-amd-polaris10 |  | ||||||
|         checksum: 6b6d27df609b8d086cc3335e6d103581 |  | ||||||
| @@ -1,49 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| INSTALL="$(pwd)/install" |  | ||||||
|  |  | ||||||
| # Set up the driver environment. |  | ||||||
| export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$(pwd)/install/lib/" |  | ||||||
|  |  | ||||||
| # Set environment for renderdoc libraries. |  | ||||||
| export PYTHONPATH="$PYTHONPATH:/renderdoc/build/lib" |  | ||||||
| export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/renderdoc/build/lib" |  | ||||||
|  |  | ||||||
| # Set environment for the waffle library. |  | ||||||
| export LD_LIBRARY_PATH="/waffle/build/lib:$LD_LIBRARY_PATH" |  | ||||||
|  |  | ||||||
| # Set environment for apitrace executable. |  | ||||||
| export PATH="/apitrace/build:$PATH" |  | ||||||
|  |  | ||||||
| # Use the surfaceless EGL platform. |  | ||||||
| export EGL_PLATFORM="surfaceless" |  | ||||||
| export DISPLAY= |  | ||||||
| export WAFFLE_PLATFORM="surfaceless_egl" |  | ||||||
|  |  | ||||||
| RESULTS=`pwd`/results |  | ||||||
| mkdir -p $RESULTS |  | ||||||
|  |  | ||||||
| # Perform a self-test to ensure tracie is working properly. |  | ||||||
| "$INSTALL/tracie/tests/test.sh" |  | ||||||
|  |  | ||||||
| if [ "$GALLIUM_DRIVER" = "virpipe" ]; then |  | ||||||
|     # tracie is to use virpipe, and virgl_test_server llvmpipe |  | ||||||
|     export GALLIUM_DRIVER="$GALLIUM_DRIVER" |  | ||||||
|  |  | ||||||
|     GALLIUM_DRIVER=llvmpipe \ |  | ||||||
|     GALLIVM_PERF="nopt,no_filter_hacks" \ |  | ||||||
|     VTEST_USE_EGL_SURFACELESS=1 \ |  | ||||||
|     VTEST_USE_GLES=1 \ |  | ||||||
|     virgl_test_server >$RESULTS/vtest-log.txt 2>&1 & |  | ||||||
|  |  | ||||||
|     sleep 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # Sanity check to ensure that our environment is sufficient to make our tests |  | ||||||
| # run against the Mesa built by CI, rather than any installed distro version. |  | ||||||
| MESA_VERSION=$(cat "$INSTALL/VERSION" | sed 's/\./\\./g') |  | ||||||
| wflinfo --platform surfaceless_egl --api gles2 | grep "Mesa $MESA_VERSION\(\s\|$\)" |  | ||||||
|  |  | ||||||
| python3 "$INSTALL/tracie/tracie.py" --file "$INSTALL/traces.yml" --device-name "$DEVICE_NAME" |  | ||||||
| @@ -1,37 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| set -ex |  | ||||||
|  |  | ||||||
| INSTALL="$(pwd)/install" |  | ||||||
|  |  | ||||||
| # Set the Vulkan driver to use. |  | ||||||
| export VK_ICD_FILENAMES="$(pwd)/install/share/vulkan/icd.d/${VK_DRIVER}_icd.x86_64.json" |  | ||||||
|  |  | ||||||
| # Set environment for VulkanTools' VK_LAYER_LUNARG_screenshot layer. |  | ||||||
| export VK_LAYER_PATH="$VK_LAYER_PATH:/VulkanTools/build/etc/vulkan/explicit_layer.d" |  | ||||||
| export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/VulkanTools/build/lib" |  | ||||||
|  |  | ||||||
| # Set environment for Wine |  | ||||||
| export WINEDEBUG="-all" |  | ||||||
| export WINEPREFIX="/dxvk-wine64" |  | ||||||
| export WINEESYNC=1 |  | ||||||
|  |  | ||||||
| # Set environment for DXVK |  | ||||||
| export DXVK_LOG_LEVEL="none" |  | ||||||
| export DXVK_STATE_CACHE=0 |  | ||||||
|  |  | ||||||
| # Perform a self-test to ensure tracie is working properly. |  | ||||||
| "$INSTALL/tracie/tests/test.sh" |  | ||||||
|  |  | ||||||
| # Sanity check to ensure that our environment is sufficient to make our tests |  | ||||||
| # run against the Mesa built by CI, rather than any installed distro version. |  | ||||||
| MESA_VERSION=$(cat "$INSTALL/VERSION" | sed 's/\./\\./g') |  | ||||||
| vulkaninfo | grep "Mesa $MESA_VERSION\(\s\|$\)" |  | ||||||
|  |  | ||||||
| # Run gfxreconstruct traces against the host's running X server (xvfb |  | ||||||
| # doesn't have DRI3 support). |  | ||||||
| # Set the DISPLAY env variable in each gitlab-runner's configuration |  | ||||||
| # file: |  | ||||||
| # https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runners-section |  | ||||||
| PATH="/gfxreconstruct/build/bin:$PATH" \ |  | ||||||
|     python3 "$INSTALL/tracie/tracie.py" --file "$INSTALL/traces.yml" --device-name "$DEVICE_NAME" |  | ||||||
| @@ -1,161 +0,0 @@ | |||||||
| Tracie - Mesa Traces Continuous Integration System |  | ||||||
| ================================================== |  | ||||||
|  |  | ||||||
| Home of the Mesa trace testing effort. |  | ||||||
|  |  | ||||||
| ### Traces definition file |  | ||||||
|  |  | ||||||
| The trace definition file contains information about the GitLab |  | ||||||
| project and git commit to get the traces from, and a list of the |  | ||||||
| traces to run along with their expected image checksums on each |  | ||||||
| device. An example: |  | ||||||
|  |  | ||||||
| ```yaml |  | ||||||
| traces-db: |  | ||||||
|   gitlab-project-url: https://gitlab.freedesktop.org/gfx-ci/tracie/traces-db |  | ||||||
|   commit: master |  | ||||||
|  |  | ||||||
| traces: |  | ||||||
|   - path: glmark2/jellyfish.rdc |  | ||||||
|     expectations: |  | ||||||
|       - device: gl-intel-0x3185 |  | ||||||
|         checksum: 58359ea4caf6ad44c6b65526881bbd17 |  | ||||||
|       - device: gl-vmware-llvmpipe |  | ||||||
|         checksum: d82267c25a0decdad7b563c56bb81106 |  | ||||||
|   - path: supertuxkart/supertuxkart-antediluvian-abyss.rdc |  | ||||||
|     expectations: |  | ||||||
|       - device: gl-intel-0x3185 |  | ||||||
|         checksum: ff827f7eb069afd87cc305a422cba939 |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| The traces-db entry can be absent, in which case it is assumed that the |  | ||||||
| current directory is the traces-db directory. |  | ||||||
|  |  | ||||||
| Traces that don't have an expectation for the current device are skipped |  | ||||||
| during trace replay. |  | ||||||
|  |  | ||||||
| Adding a new trace to the list involves commiting the trace to the git repo and |  | ||||||
| adding an entry to the `traces` list. The reference checksums can be calculated |  | ||||||
| with the [image_checksum.py](.gitlab-ci/tracie/image_checksum.py) script. |  | ||||||
| Alternatively, an arbitrary checksum can be used, and during replay (see below) |  | ||||||
| the scripts will report the mismatch and expected checksum. |  | ||||||
|  |  | ||||||
| ### Trace-db GitLab projects |  | ||||||
|  |  | ||||||
| The trace-db GitLab projects are assumed to have git repositories |  | ||||||
| using LFS for their trace files. This is so that trace files can be |  | ||||||
| potentially checked out and replayed individually, thus reducing |  | ||||||
| storage requirements during CI runs. |  | ||||||
|  |  | ||||||
| ### Enabling trace testing on a new device |  | ||||||
|  |  | ||||||
| To enable trace testing on a new device: |  | ||||||
|  |  | ||||||
| 1. Create a new job in .gitlab-ci.yml. The job will need to be tagged |  | ||||||
|    to run on runners with the appropriate hardware. |  | ||||||
|  |  | ||||||
|    1. If you mean to test GL traces, use the `.traces-test-gl` |  | ||||||
|       template jobs as a base, and make sure you set a unique value for the |  | ||||||
|      `DEVICE_NAME` variable: |  | ||||||
|  |  | ||||||
|    ```yaml |  | ||||||
|    my-hardware-gl-traces: |  | ||||||
|      extends: .traces-test-gl |  | ||||||
|      variables: |  | ||||||
|        DEVICE_NAME: "gl-myhardware" |  | ||||||
|    ``` |  | ||||||
|  |  | ||||||
|    2. If you mean to test Vulkan traces, use the `.traces-test-vk` |  | ||||||
|       template jobs as a base, set the `VK_DRIVER` variable, and make |  | ||||||
|       sure you set a unique value for the `DEVICE_NAME` variable: |  | ||||||
|  |  | ||||||
|    ```yaml |  | ||||||
|    my-hardware-vk-traces: |  | ||||||
|      extends: .traces-test-vk |  | ||||||
|      variables: |  | ||||||
|        VK_DRIVER: "radeon" |  | ||||||
|        DEVICE_NAME: "vk-myhardware" |  | ||||||
|    ``` |  | ||||||
|  |  | ||||||
| 2. Update the .gitlab-ci/traces.yml file with expectations for the new device. |  | ||||||
|    Ensure that the device name used in the expectations matches the one |  | ||||||
|    set in the job. For more information, and tips about how to calculate |  | ||||||
|    the checksums, see the section describing the trace definition files. |  | ||||||
|  |  | ||||||
| ### Trace files |  | ||||||
|  |  | ||||||
| Tracie supports renderdoc (.rdc), apitrace (.trace) and gfxreconstruct |  | ||||||
| (.gfxr) files. Trace files need to have the correct extension so that |  | ||||||
| tracie can detect them properly. |  | ||||||
|  |  | ||||||
| The trace files that are contained in public traces-db repositories must be |  | ||||||
| legally redistributable. This is typically true for FOSS games and |  | ||||||
| applications. Traces for proprietary games and application are typically not |  | ||||||
| redistributable, unless specific redistribution rights have been granted by the |  | ||||||
| publisher. |  | ||||||
|  |  | ||||||
| ### Replaying traces |  | ||||||
|  |  | ||||||
| Mesa traces CI uses a set of scripts to replay traces and check the output |  | ||||||
| against reference checksums. |  | ||||||
|  |  | ||||||
| The high level script [tracie.sh](.gitlab-ci/tracie/tracie.sh) accepts |  | ||||||
| a traces definition file and the type of traces |  | ||||||
| (apitrace/renderdoc/gfxreconstruct) to run: |  | ||||||
|  |  | ||||||
|     tracie.sh .gitlab-ci/traces.yml renderdoc |  | ||||||
|  |  | ||||||
| tracie.sh copies produced artifacts to the `$CI_PROJECT_DIR/result` |  | ||||||
| directory. By default, created images from traces are only stored in case of a |  | ||||||
| checksum mismatch. The `TRACIE_STORE_IMAGES` CI/environment variable can be set |  | ||||||
| to `1` to force storing images, e.g., to get a complete set of reference |  | ||||||
| images. |  | ||||||
|  |  | ||||||
| The `tracie.sh` script requires that the environment variable `DEVICE_NAME` is |  | ||||||
| properly set for the target machine, and matches the `device` field of the |  | ||||||
| relevant trace expectations in the used `traces.yml` file. |  | ||||||
|  |  | ||||||
| At a lower level the |  | ||||||
| [dump_trace_images.py](.gitlab-ci/tracie/dump_trace_images.py) script is |  | ||||||
| called, which replays a trace, dumping a set of images in the process. By |  | ||||||
| default only the image corresponding to the last frame of the trace is dumped, |  | ||||||
| but this can be changed with the `--calls` parameter. The dumped images are |  | ||||||
| stored in a subdirectory `test/<device-name>` next to the trace file itself, |  | ||||||
| with names of the form `tracefilename-callnum.png`.  The full log of any |  | ||||||
| commands used while dumping the images is also saved in a file in the |  | ||||||
| 'test/<device-name>' subdirectory, named after the trace name with '.log' |  | ||||||
| appended. |  | ||||||
|  |  | ||||||
| Examples: |  | ||||||
|  |  | ||||||
|     python3 dump_traces_images.py --device-name=gl-vmware-llvmpipe mytrace.trace |  | ||||||
|     python3 dump_traces_images.py --device-name=gl-vmware-llvmpipe --calls=2075,3300 mytrace.trace |  | ||||||
|  |  | ||||||
| ### Running the replay scripts locally |  | ||||||
|  |  | ||||||
| It's often useful, especially during development, to be able to run the scripts |  | ||||||
| locally. |  | ||||||
|  |  | ||||||
| Depending on the target 3D API, the scripts require a recent version |  | ||||||
| of apitrace being in the path, and also the renderdoc python module |  | ||||||
| being available, for GL traces. |  | ||||||
|  |  | ||||||
| To ensure python3 can find the renderdoc python module you need to set |  | ||||||
| `PYTHONPATH` to point to the location of `renderdoc.so` (binary python modules) |  | ||||||
| and `LD_LIBRARY_PATH` to point to the location of `librenderdoc.so`. In the |  | ||||||
| renderdoc build tree, both of these are in `renderdoc/<builddir>/lib`. Note |  | ||||||
| that renderdoc doesn't install the `renderdoc.so` python module. |  | ||||||
|  |  | ||||||
| In the case of Vulkan traces, the scripts need a recent version of |  | ||||||
| gfxrecon-replay being in the path, and also the |  | ||||||
| `VK_LAYER_LUNARG_screenshot` Vulkan layer from LunarG's VulkanTools. |  | ||||||
|  |  | ||||||
| To ensure that this layer can be found when running the trace you need |  | ||||||
| to set `VK_LAYER_PATH` to point to the location of |  | ||||||
| `VkLayer_screenshot.json` and `LD_LIBRARY_PATH` to point to the |  | ||||||
| location of `libVkLayer_screenshot.so`. |  | ||||||
|  |  | ||||||
| In the case of DXGI traces, the scripts require Wine, a recent version |  | ||||||
| of DXVK installed in the default `WINEPREFIX`, and a recent binary |  | ||||||
| version of apitrace for Windows which should be reachable through |  | ||||||
| Windows' `PATH` environment variable. |  | ||||||
| @@ -1,180 +0,0 @@ | |||||||
| #!/usr/bin/python3 |  | ||||||
|  |  | ||||||
| # Copyright (c) 2019 Collabora Ltd |  | ||||||
| # Copyright © 2019-2020 Valve 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. |  | ||||||
| # |  | ||||||
| # SPDX-License-Identifier: MIT |  | ||||||
|  |  | ||||||
| import argparse |  | ||||||
| import os |  | ||||||
| import sys |  | ||||||
| import subprocess |  | ||||||
| from pathlib import Path |  | ||||||
| from traceutil import trace_type_from_filename, TraceType |  | ||||||
|  |  | ||||||
| def log(severity, msg, end='\n'): |  | ||||||
|     print("[dump_trace_images] %s: %s" % (severity, msg), flush=True, end=end) |  | ||||||
|  |  | ||||||
| def log_result(msg): |  | ||||||
|     print(msg, flush=True) |  | ||||||
|  |  | ||||||
| def run_logged_command(cmd, env, log_path): |  | ||||||
|     ret = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, env=env) |  | ||||||
|     logoutput = ("[dump_trace_images] Running: %s\n" % " ".join(cmd)).encode() + \ |  | ||||||
|                 ret.stdout |  | ||||||
|     log_path.parent.mkdir(parents=True, exist_ok=True) |  | ||||||
|     with log_path.open(mode='wb') as log: |  | ||||||
|         log.write(logoutput) |  | ||||||
|     if ret.returncode: |  | ||||||
|         raise RuntimeError( |  | ||||||
|             logoutput.decode(errors='replace') + |  | ||||||
|             "[dump_traces_images] Process failed with error code: %d" % ret.returncode) |  | ||||||
|  |  | ||||||
| def get_last_apitrace_frame_call(cmd_wrapper, trace_path): |  | ||||||
|     cmd = cmd_wrapper + ["apitrace", "dump", "--calls=frame", str(trace_path)] |  | ||||||
|     ret = subprocess.run(cmd, stdout=subprocess.PIPE) |  | ||||||
|     for l in reversed(ret.stdout.decode(errors='replace').splitlines()): |  | ||||||
|         s = l.split(None, 1) |  | ||||||
|         if len(s) >= 1 and s[0].isnumeric(): |  | ||||||
|             return int(s[0]) |  | ||||||
|     return -1 |  | ||||||
|  |  | ||||||
| def get_last_gfxreconstruct_frame_call(trace_path): |  | ||||||
|     # FIXME: It would be great to have another way to get the amount of |  | ||||||
|     # traces which wouldn't imply replaying the whole trace: |  | ||||||
|     # https://github.com/LunarG/gfxreconstruct/issues/329 |  | ||||||
|     cmd = ["gfxrecon-replay", str(trace_path)] |  | ||||||
|     ret = subprocess.run(cmd, stdout=subprocess.PIPE) |  | ||||||
|     for l in reversed(ret.stdout.decode(errors='replace').splitlines()): |  | ||||||
|         s = l.split(", ", 2) |  | ||||||
|         if len(s) >= 3: |  | ||||||
|             c = s[2].split(None, 1) |  | ||||||
|             if len(c) >= 1 and c[0].isnumeric(): |  | ||||||
|                 return int(c[0]) |  | ||||||
|     return -1 |  | ||||||
|  |  | ||||||
| def dump_with_apitrace(retrace_cmd, trace_path, calls, device_name): |  | ||||||
|     outputdir = str(trace_path.parent / "test" / device_name) |  | ||||||
|     os.makedirs(outputdir, exist_ok=True) |  | ||||||
|     outputprefix = str(Path(outputdir) / trace_path.name) + "-" |  | ||||||
|     if len(calls) == 0: |  | ||||||
|         calls = [str(get_last_apitrace_frame_call(retrace_cmd[:-1], trace_path))] |  | ||||||
|     cmd = retrace_cmd + ["--headless", |  | ||||||
|                          "--snapshot=" + ','.join(calls), |  | ||||||
|                          "--snapshot-prefix=" + outputprefix, str(trace_path)] |  | ||||||
|     log_path = Path(outputdir) / (trace_path.name + ".log") |  | ||||||
|     run_logged_command(cmd, None, log_path) |  | ||||||
|  |  | ||||||
| def dump_with_renderdoc(trace_path, calls, device_name): |  | ||||||
|     outputdir = str(trace_path.parent / "test" / device_name) |  | ||||||
|     script_path = Path(os.path.dirname(os.path.abspath(__file__))) |  | ||||||
|     cmd = [str(script_path / "renderdoc_dump_images.py"), str(trace_path), outputdir] |  | ||||||
|     cmd.extend(calls) |  | ||||||
|     log_path = Path(outputdir) / (trace_path.name + ".log") |  | ||||||
|     run_logged_command(cmd, None, log_path) |  | ||||||
|  |  | ||||||
| def dump_with_gfxreconstruct(trace_path, calls, device_name): |  | ||||||
|     from PIL import Image |  | ||||||
|     outputdir_path = trace_path.parent / "test" / device_name |  | ||||||
|     outputdir_path.mkdir(parents=True, exist_ok=True) |  | ||||||
|     outputprefix = str(outputdir_path / trace_path.name) + "-" |  | ||||||
|     if len(calls) == 0: |  | ||||||
|         # FIXME: The VK_LAYER_LUNARG_screenshot numbers the calls from |  | ||||||
|         # 0 to (total-num-calls - 1) while gfxreconstruct does it from |  | ||||||
|         # 1 to total-num-calls: |  | ||||||
|         # https://github.com/LunarG/gfxreconstruct/issues/284 |  | ||||||
|         calls = [str(get_last_gfxreconstruct_frame_call(trace_path) - 1)] |  | ||||||
|     cmd = ["gfxrecon-replay", str(trace_path)] |  | ||||||
|     log_path = outputdir_path / (trace_path.name + ".log") |  | ||||||
|     env = os.environ.copy() |  | ||||||
|     env["VK_INSTANCE_LAYERS"] = "VK_LAYER_LUNARG_screenshot" |  | ||||||
|     env["VK_SCREENSHOT_FRAMES"] = ",".join(calls) |  | ||||||
|     env["VK_SCREENSHOT_DIR"] = str(outputdir_path) |  | ||||||
|     run_logged_command(cmd, env, log_path) |  | ||||||
|     for c in calls: |  | ||||||
|         ppm = str(outputdir_path / c) + ".ppm" |  | ||||||
|         outputfile = outputprefix + c + ".png" |  | ||||||
|         with log_path.open(mode='w') as log: |  | ||||||
|             log.write("Writing: %s to %s" % (ppm, outputfile)) |  | ||||||
|         Image.open(ppm).save(outputfile) |  | ||||||
|         os.remove(ppm) |  | ||||||
|  |  | ||||||
| def dump_with_testtrace(trace_path, calls, device_name): |  | ||||||
|     from PIL import Image |  | ||||||
|     outputdir_path = trace_path.parent / "test" / device_name |  | ||||||
|     outputdir_path.mkdir(parents=True, exist_ok=True) |  | ||||||
|     with trace_path.open() as f: |  | ||||||
|         rgba = f.read() |  | ||||||
|     color = [int(rgba[0:2], 16), int(rgba[2:4], 16), |  | ||||||
|              int(rgba[4:6], 16), int(rgba[6:8], 16)] |  | ||||||
|     if len(calls) == 0: calls = ["0"] |  | ||||||
|     for c in calls: |  | ||||||
|         outputfile = str(outputdir_path / trace_path.name) + "-" + c + ".png" |  | ||||||
|         log_path = outputdir_path / (trace_path.name + ".log") |  | ||||||
|         with log_path.open(mode='w') as log: |  | ||||||
|             log.write("Writing RGBA: %s to %s" % (rgba, outputfile)) |  | ||||||
|         Image.frombytes('RGBA', (32, 32), bytes(color * 32 * 32)).save(outputfile) |  | ||||||
|  |  | ||||||
| def dump_from_trace(trace_path, calls, device_name): |  | ||||||
|     log("Info", "Dumping trace %s" % trace_path, end='... ') |  | ||||||
|     trace_type = trace_type_from_filename(trace_path.name) |  | ||||||
|     try: |  | ||||||
|         if trace_type == TraceType.APITRACE: |  | ||||||
|             dump_with_apitrace(["eglretrace"], trace_path, calls, device_name) |  | ||||||
|         elif trace_type == TraceType.APITRACE_DXGI: |  | ||||||
|             dump_with_apitrace(["wine", "d3dretrace"], trace_path, calls, device_name) |  | ||||||
|         elif trace_type == TraceType.RENDERDOC: |  | ||||||
|             dump_with_renderdoc(trace_path, calls, device_name) |  | ||||||
|         elif trace_type == TraceType.GFXRECONSTRUCT: |  | ||||||
|             dump_with_gfxreconstruct(trace_path, calls, device_name) |  | ||||||
|         elif trace_type == TraceType.TESTTRACE: |  | ||||||
|             dump_with_testtrace(trace_path, calls, device_name) |  | ||||||
|         else: |  | ||||||
|             raise RuntimeError("Unknown tracefile extension") |  | ||||||
|         log_result("OK") |  | ||||||
|         return True |  | ||||||
|     except Exception as e: |  | ||||||
|         log_result("ERROR") |  | ||||||
|         log("Debug", "=== Failure log start ===") |  | ||||||
|         print(e) |  | ||||||
|         log("Debug", "=== Failure log end ===") |  | ||||||
|         return False |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     parser = argparse.ArgumentParser() |  | ||||||
|     parser.add_argument('tracepath', help="trace to dump") |  | ||||||
|     parser.add_argument('--device-name', required=True, |  | ||||||
|                         help="the name of the graphics device used to produce images") |  | ||||||
|     parser.add_argument('--calls', required=False, |  | ||||||
|                         help="the call numbers from the trace to dump (default: last frame)") |  | ||||||
|  |  | ||||||
|     args = parser.parse_args() |  | ||||||
|     if args.calls is not None: |  | ||||||
|         args.calls = args.calls.split(",") |  | ||||||
|     else: |  | ||||||
|         args.calls = [] |  | ||||||
|  |  | ||||||
|     success = dump_from_trace(Path(args.tracepath), args.calls, args.device_name) |  | ||||||
|  |  | ||||||
|     sys.exit(0 if success else 1) |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     main() |  | ||||||
| @@ -1,39 +0,0 @@ | |||||||
| #!/usr/bin/env python3 |  | ||||||
|  |  | ||||||
| # Copyright (c) 2019 Collabora Ltd |  | ||||||
| # |  | ||||||
| # 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. |  | ||||||
| # |  | ||||||
| # SPDX-License-Identifier: MIT |  | ||||||
|  |  | ||||||
| import argparse |  | ||||||
| import hashlib |  | ||||||
| from PIL import Image |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     parser = argparse.ArgumentParser() |  | ||||||
|     parser.add_argument('imagefile', help='image file to calculate checksum for') |  | ||||||
|  |  | ||||||
|     args = parser.parse_args() |  | ||||||
|  |  | ||||||
|     md5 = hashlib.md5(Image.open(args.imagefile).tobytes()) |  | ||||||
|     print(md5.hexdigest()) |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     main() |  | ||||||
| @@ -1,108 +0,0 @@ | |||||||
| #!/usr/bin/python3 |  | ||||||
|  |  | ||||||
| # Copyright (c) 2019 Collabora Ltd |  | ||||||
| # Copyright © 2020 Valve 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. |  | ||||||
| # |  | ||||||
| # SPDX-License-Identifier: MIT |  | ||||||
|  |  | ||||||
| import argparse |  | ||||||
| import yaml |  | ||||||
| from traceutil import all_trace_type_names, trace_type_from_name |  | ||||||
| from traceutil import trace_type_from_filename |  | ||||||
|  |  | ||||||
| def trace_devices(trace): |  | ||||||
|     return [e['device'] for e in trace['expectations']] |  | ||||||
|  |  | ||||||
| def cmd_traces_db_gitlab_project_url(args): |  | ||||||
|     with open(args.file, 'r') as f: |  | ||||||
|         y = yaml.safe_load(f) |  | ||||||
|     print(y['traces-db']['gitlab-project-url']) |  | ||||||
|  |  | ||||||
| def cmd_traces_db_commit(args): |  | ||||||
|     with open(args.file, 'r') as f: |  | ||||||
|         y = yaml.safe_load(f) |  | ||||||
|     print(y['traces-db']['commit']) |  | ||||||
|  |  | ||||||
| def cmd_traces(args): |  | ||||||
|     with open(args.file, 'r') as f: |  | ||||||
|         y = yaml.safe_load(f) |  | ||||||
|  |  | ||||||
|     traces = y['traces'] |  | ||||||
|     traces = filter(lambda t: trace_type_from_filename(t['path']) in args.trace_types, |  | ||||||
|                     traces) |  | ||||||
|     if args.device_name: |  | ||||||
|         traces = filter(lambda t: args.device_name in trace_devices(t), traces) |  | ||||||
|  |  | ||||||
|     traces = list(traces) |  | ||||||
|  |  | ||||||
|     if len(traces) == 0: |  | ||||||
|         return |  | ||||||
|  |  | ||||||
|     print('\n'.join((t['path'] for t in traces))) |  | ||||||
|  |  | ||||||
| def cmd_checksum(args): |  | ||||||
|     with open(args.file, 'r') as f: |  | ||||||
|         y = yaml.safe_load(f) |  | ||||||
|  |  | ||||||
|     traces = y['traces'] |  | ||||||
|     trace = next(t for t in traces if t['path'] == args.trace_path) |  | ||||||
|     expectation = next(e for e in trace['expectations'] if e['device'] == args.device_name) |  | ||||||
|  |  | ||||||
|     print(expectation['checksum']) |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     parser = argparse.ArgumentParser() |  | ||||||
|     parser.add_argument('--file', required=True, |  | ||||||
|                         help='the name of the yaml file') |  | ||||||
|  |  | ||||||
|     subparsers = parser.add_subparsers(help='sub-command help') |  | ||||||
|  |  | ||||||
|     parser_traces_db_gitlab_project_url = subparsers.add_parser('traces_db_gitlab_project_url') |  | ||||||
|     parser_traces_db_gitlab_project_url.set_defaults(func=cmd_traces_db_gitlab_project_url) |  | ||||||
|  |  | ||||||
|     parser_traces_db_commit = subparsers.add_parser('traces_db_commit') |  | ||||||
|     parser_traces_db_commit.set_defaults(func=cmd_traces_db_commit) |  | ||||||
|  |  | ||||||
|     parser_traces = subparsers.add_parser('traces') |  | ||||||
|     parser_traces.add_argument('--device-name', required=False, |  | ||||||
|                                help="the name of the graphics device used to " |  | ||||||
|                                      "produce images") |  | ||||||
|     parser_traces.add_argument('--trace-types', required=False, |  | ||||||
|                                default=",".join(all_trace_type_names()), |  | ||||||
|                                help="the types of traces to look for in recursive " |  | ||||||
|                                     "dir walks " "(by default all types)") |  | ||||||
|     parser_traces.set_defaults(func=cmd_traces) |  | ||||||
|  |  | ||||||
|     parser_checksum = subparsers.add_parser('checksum') |  | ||||||
|     parser_checksum.add_argument('--device-name', required=True, |  | ||||||
|                                help="the name of the graphics device used to " |  | ||||||
|                                      "produce images") |  | ||||||
|     parser_checksum.add_argument('trace_path') |  | ||||||
|     parser_checksum.set_defaults(func=cmd_checksum) |  | ||||||
|  |  | ||||||
|     args = parser.parse_args() |  | ||||||
|     if hasattr(args, 'trace_types'): |  | ||||||
|         args.trace_types = [trace_type_from_name(t) for t in args.trace_types.split(",")] |  | ||||||
|  |  | ||||||
|     args.func(args) |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     main() |  | ||||||
| @@ -1,126 +0,0 @@ | |||||||
| #!/usr/bin/env python3 |  | ||||||
|  |  | ||||||
| # Copyright (c) 2019 Collabora Ltd |  | ||||||
| # |  | ||||||
| # 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. |  | ||||||
| # |  | ||||||
| # SPDX-License-Identifier: MIT |  | ||||||
|  |  | ||||||
| import atexit |  | ||||||
| import os |  | ||||||
| import shutil |  | ||||||
| import sys |  | ||||||
| import tempfile |  | ||||||
| from pathlib import Path |  | ||||||
|  |  | ||||||
| def cleanup(dirpath): |  | ||||||
|         shutil.rmtree(dirpath) |  | ||||||
|  |  | ||||||
| dirpath = tempfile.mkdtemp() |  | ||||||
| atexit.register(cleanup, dirpath) |  | ||||||
| RENDERDOC_DEBUG_FILE = dirpath + "/renderdoc.log" |  | ||||||
|  |  | ||||||
| # Needs to be in the environment before importing the module |  | ||||||
| os.environ['RENDERDOC_DEBUG_LOG_FILE'] = RENDERDOC_DEBUG_FILE |  | ||||||
| import renderdoc as rd |  | ||||||
|  |  | ||||||
| def findDrawWithEventId(controller, eventId): |  | ||||||
|    for d in controller.GetDrawcalls(): |  | ||||||
|       if d.eventId == eventId: |  | ||||||
|          return d |  | ||||||
|  |  | ||||||
|    return None |  | ||||||
|  |  | ||||||
| def dumpImage(controller, eventId, outputDir, tracefile): |  | ||||||
|     draw = findDrawWithEventId(controller, eventId) |  | ||||||
|     if draw is None: |  | ||||||
|         raise RuntimeError("Couldn't find draw call with eventId " + str(eventId)) |  | ||||||
|  |  | ||||||
|     controller.SetFrameEvent(draw.eventId, True) |  | ||||||
|  |  | ||||||
|     texsave = rd.TextureSave() |  | ||||||
|  |  | ||||||
|     # Select the first color output |  | ||||||
|     texsave.resourceId = draw.outputs[0] |  | ||||||
|  |  | ||||||
|     if texsave.resourceId == rd.ResourceId.Null(): |  | ||||||
|         return |  | ||||||
|  |  | ||||||
|     filepath = Path(outputDir) |  | ||||||
|     filepath.mkdir(parents = True, exist_ok = True) |  | ||||||
|     filepath = filepath / (tracefile + "-" + str(int(draw.eventId)) + ".png") |  | ||||||
|  |  | ||||||
|     print("Saving image at eventId %d: %s to %s" % (draw.eventId, draw.name, filepath)) |  | ||||||
|  |  | ||||||
|     # Most formats can only display a single image per file, so we select the |  | ||||||
|     # first mip and first slice |  | ||||||
|     texsave.mip = 0 |  | ||||||
|     texsave.slice.sliceIndex = 0 |  | ||||||
|  |  | ||||||
|     # For formats with an alpha channel, preserve it |  | ||||||
|     texsave.alpha = rd.AlphaMapping.Preserve |  | ||||||
|     texsave.destType = rd.FileType.PNG |  | ||||||
|     controller.SaveTexture(texsave, str(filepath)) |  | ||||||
|  |  | ||||||
| def loadCapture(filename): |  | ||||||
|     cap = rd.OpenCaptureFile() |  | ||||||
|  |  | ||||||
|     status = cap.OpenFile(filename, '', None) |  | ||||||
|  |  | ||||||
|     if status != rd.ReplayStatus.Succeeded: |  | ||||||
|         raise RuntimeError("Couldn't open file: " + str(status)) |  | ||||||
|     if not cap.LocalReplaySupport(): |  | ||||||
|         raise RuntimeError("Capture cannot be replayed") |  | ||||||
|  |  | ||||||
|     status, controller = cap.OpenCapture(rd.ReplayOptions(), None) |  | ||||||
|  |  | ||||||
|     if status != rd.ReplayStatus.Succeeded: |  | ||||||
|         if os.path.exists(RENDERDOC_DEBUG_FILE): |  | ||||||
|             print(open(RENDERDOC_DEBUG_FILE, "r").read()) |  | ||||||
|         raise RuntimeError("Couldn't initialise replay: " + str(status)) |  | ||||||
|  |  | ||||||
|     if os.path.exists(RENDERDOC_DEBUG_FILE): |  | ||||||
|         open(RENDERDOC_DEBUG_FILE, "w").write("") |  | ||||||
|  |  | ||||||
|     return (cap, controller) |  | ||||||
|  |  | ||||||
| def renderdoc_dump_images(filename, eventIds, outputDir): |  | ||||||
|    rd.InitialiseReplay(rd.GlobalEnvironment(), []) |  | ||||||
|    cap, controller = loadCapture(filename); |  | ||||||
|  |  | ||||||
|    tracefile = Path(filename).name |  | ||||||
|  |  | ||||||
|    if len(eventIds) == 0: |  | ||||||
|       eventIds.append(controller.GetDrawcalls()[-1].eventId) |  | ||||||
|  |  | ||||||
|    for eventId in eventIds: |  | ||||||
|       dumpImage(controller, eventId, outputDir, tracefile) |  | ||||||
|  |  | ||||||
|    controller.Shutdown() |  | ||||||
|    cap.Shutdown() |  | ||||||
|  |  | ||||||
|    rd.ShutdownReplay() |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|    if len(sys.argv) < 3: |  | ||||||
|       raise RuntimeError("Usage: renderdoc_dump_images.py <trace> <outputdir> [<draw-id>...]") |  | ||||||
|  |  | ||||||
|    eventIds = [int(e) for e in sys.argv[3:]] |  | ||||||
|  |  | ||||||
|    renderdoc_dump_images(sys.argv[1], eventIds, sys.argv[2]) |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user