Compare commits
	
		
			129 Commits
		
	
	
		
			mesa-20.1.
			...
			mesa_6_4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 7cd7a78d72 | ||
|  | 5c57efd6b4 | ||
|  | ea9ed5849f | ||
|  | 1ef0939a64 | ||
|  | d0f9c2887c | ||
|  | ed75287003 | ||
|  | c01c2fb542 | ||
|  | e1d7297812 | ||
|  | b4227f0d98 | ||
|  | c868c1ee14 | ||
|  | a1dcb43658 | ||
|  | cc7b6810e2 | ||
|  | 7b9fecee10 | ||
|  | 8856180e4f | ||
|  | df51dfbdc3 | ||
|  | 2fd1ed1b45 | ||
|  | 66b928e95e | ||
|  | d5e9cca0b2 | ||
|  | c072c17a8c | ||
|  | 8367420be9 | ||
|  | e2a2ed06b2 | ||
|  | 0cc3703188 | ||
|  | fb6c1492fb | ||
|  | 89ad797f9a | ||
|  | fa67028ae7 | ||
|  | 8e1724dfe9 | ||
|  | fbdb5c9b14 | ||
|  | 4b2728f95c | ||
|  | 3a7437399f | ||
|  | 3338f04be7 | ||
|  | 047f7bb11c | ||
|  | 5b25acdac7 | ||
|  | cb16208ec0 | ||
|  | 88107bea56 | ||
|  | b4d25157f2 | ||
|  | c6d1f32ebe | ||
|  | 281f388e03 | ||
|  | c0a0dfeb96 | ||
|  | ab07593563 | ||
|  | 5b08058604 | ||
|  | 3bf13d3c4b | ||
|  | 2b05784084 | ||
|  | 2292262de4 | ||
|  | a9358bb3b0 | ||
|  | b9d111f202 | ||
|  | 20fd105e2a | ||
|  | 1faaa0090a | ||
|  | 23803bd5fb | ||
|  | c000250504 | ||
|  | b854297bab | ||
|  | 3c1b44ad55 | ||
|  | bdab2cc216 | ||
|  | 91ade9ad68 | ||
|  | 7355bbce55 | ||
|  | 1d2671e6cb | ||
|  | 0a405dcc5f | ||
|  | b210ffaadf | ||
|  | b1e8471898 | ||
|  | aefe0dabec | ||
|  | 758c5b9a7e | ||
|  | 44db6d7cb8 | ||
|  | 04f1fdc755 | ||
|  | b181773d02 | ||
|  | 4218cddfb1 | ||
|  | a4e35c21d2 | ||
|  | 5d63323d34 | ||
|  | 419a350499 | ||
|  | db78ec7018 | ||
|  | 291911aeb5 | ||
|  | e15a7d4883 | ||
|  | 2e95fdc5d8 | ||
|  | 6e03f6ed43 | ||
|  | 97790948f6 | ||
|  | a882648023 | ||
|  | b7f8d69bb3 | ||
|  | 5bad790e56 | ||
|  | 382b00f483 | ||
|  | 718bd385ed | ||
|  | 402ca8903f | ||
|  | 25a9c9f370 | ||
|  | d73a838f01 | ||
|  | c72b2fb2db | ||
|  | 5a6ce051ef | ||
|  | e7c2fa9cff | ||
|  | 5919aec5c3 | ||
|  | f5a6175d83 | ||
|  | e41ea35fee | ||
|  | 38cf2b14f4 | ||
|  | 66725dca81 | ||
|  | 59ad040754 | ||
|  | 5e16f314d6 | ||
|  | 2376438410 | ||
|  | 1be13df2c3 | ||
|  | 1f6892527b | ||
|  | e5f6f26c87 | ||
|  | e14b3baca0 | ||
|  | 5eb129de76 | ||
|  | 3f27b6ffeb | ||
|  | 270572e543 | ||
|  | 7b56e1a443 | ||
|  | cfaac5dc4f | ||
|  | 1e5c3e977f | ||
|  | 831b4143f7 | ||
|  | b26b565f91 | ||
|  | f4d1dafc18 | ||
|  | db70c3f9b6 | ||
|  | 384b1d03e4 | ||
|  | e3c1b594ae | ||
|  | 453eb90128 | ||
|  | cb505bf744 | ||
|  | 133112c71a | ||
|  | a66eebc579 | ||
|  | 89ea47182d | ||
|  | 2efe639f26 | ||
|  | 39e4095560 | ||
|  | b19ec5009f | ||
|  | afed3e55ba | ||
|  | 46cf4fa1bd | ||
|  | b4198e821a | ||
|  | 5a1fb7db0e | ||
|  | f16fbf03bd | ||
|  | ec0c42a3be | ||
|  | a4c1895d07 | ||
|  | b2971358ad | ||
|  | 24a36c26fa | ||
|  | 247e27d0b8 | ||
|  | 912bcb2386 | ||
|  | cee416863f | ||
|  | 8e946792dc | 
| @@ -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=`cat $UNEXPECTED_RESULTSFILE.txt | wc -l` | ||||
|  | ||||
|     # 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=`cat $FLAKESFILE | wc -l` | ||||
|     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,156 +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 traces can be found in the `CWD/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.py](.gitlab-ci/tracie/tracie.py) accepts | ||||
| a traces definition file and the name of the device to be tested: | ||||
|  | ||||
|     tracie.py --file .gitlab-ci/traces.yml --device-name gl-vmware-llvmpipe | ||||
|  | ||||
| tracie.py copies the 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. | ||||
|  | ||||
| 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