Compare commits
	
		
			3 Commits
		
	
	
		
			mesa-19.3.
			...
			i965-primi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | c7e77fcc31 | ||
|  | 5a13d321ff | ||
|  | c7ecc2e46c | 
| @@ -1,66 +0,0 @@ | ||||
| goto %1 | ||||
|  | ||||
| :install | ||||
| rem Check pip | ||||
| if "%buildsystem%" == "scons" ( | ||||
|     python --version | ||||
|     python -m pip --version | ||||
|     rem Install Mako | ||||
|     python -m pip install Mako==1.0.7 | ||||
|     rem Install pywin32 extensions, needed by SCons | ||||
|     python -m pip install pypiwin32 | ||||
|     rem Install python wheels, necessary to install SCons via pip | ||||
|     python -m pip install wheel | ||||
|     rem Install SCons | ||||
|     python -m pip install scons==3.0.1 | ||||
|     call scons --version | ||||
| ) else ( | ||||
|     python --version | ||||
|     python -m pip install Mako==1.0.7 meson | ||||
|     meson --version | ||||
|  | ||||
|     rem Install pkg-config, which meson requires even on windows | ||||
|     cinst -y pkgconfiglite | ||||
| ) | ||||
|  | ||||
| rem Install flex/bison | ||||
| set WINFLEXBISON_ARCHIVE=win_flex_bison-%WINFLEXBISON_VERSION%.zip | ||||
| if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://github.com/lexxmark/winflexbison/releases/download/v%WINFLEXBISON_VERSION%/%WINFLEXBISON_ARCHIVE%" | ||||
| 7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul | ||||
| set Path=%CD%\winflexbison;%Path% | ||||
| win_flex --version | ||||
| win_bison --version | ||||
| rem Download and extract LLVM | ||||
| if not exist "%LLVM_ARCHIVE%" appveyor DownloadFile "https://people.freedesktop.org/~jrfonseca/llvm/%LLVM_ARCHIVE%" | ||||
| 7z x -y "%LLVM_ARCHIVE%" > nul | ||||
| if "%buildsystem%" == "scons" ( | ||||
|     mkdir llvm\bin | ||||
|     set LLVM=%CD%\llvm | ||||
| ) else ( | ||||
|     move llvm subprojects\ | ||||
|     copy .appveyor\llvm-wrap.meson subprojects\llvm\meson.build | ||||
| ) | ||||
| goto :eof | ||||
|  | ||||
| :build_script | ||||
| if "%buildsystem%" == "scons" ( | ||||
|     call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 | ||||
| ) else ( | ||||
|     call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=x86 | ||||
|     rem We use default-library as static to affect any wraps (such as expat and zlib) | ||||
|     rem it would be better if we could set subprojects buildtype independently, | ||||
|     rem but I haven't written that patch yet :) | ||||
|     call meson builddir --backend=vs2017 --default-library=static -Dbuild-tests=true -Db_vscrt=mtd --buildtype=release -Dllvm=true -Dgallium-drivers=swrast -Dosmesa=gallium | ||||
|     pushd builddir | ||||
|     call msbuild mesa.sln /m | ||||
|     popd | ||||
| ) | ||||
| goto :eof | ||||
|  | ||||
| :test_script | ||||
| if "%buildsystem%" == "scons" ( | ||||
|     call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 check | ||||
| ) else ( | ||||
|     call meson test -C builddir | ||||
| ) | ||||
| goto :eof | ||||
| @@ -1,36 +0,0 @@ | ||||
| # A meson.build file for binary wrapping the LLVM used in the appvyeor CI | ||||
| project('llvm', ['cpp']) | ||||
|  | ||||
| cpp = meson.get_compiler('cpp') | ||||
|  | ||||
| _deps = [] | ||||
| _search = join_paths(meson.current_source_dir(), 'lib') | ||||
| foreach d : ['LLVMAnalysis', 'LLVMAsmParser', 'LLVMAsmPrinter', | ||||
|              'LLVMBinaryFormat', 'LLVMBitReader', 'LLVMBitWriter', | ||||
|              'LLVMCodeGen', 'LLVMCore', 'LLVMCoroutines', 'LLVMCoverage', | ||||
|              'LLVMDebugInfoCodeView', 'LLVMDebugInfoDWARF', | ||||
|              'LLVMDebugInfoMSF', 'LLVMDebugInfoPDB', 'LLVMDemangle', | ||||
|              'LLVMDlltoolDriver', 'LLVMExecutionEngine', 'LLVMGlobalISel', | ||||
|              'LLVMInstCombine', 'LLVMInstrumentation', 'LLVMInterpreter', | ||||
|              'LLVMipo', 'LLVMIRReader', 'LLVMLibDriver', 'LLVMLineEditor', | ||||
|              'LLVMLinker', 'LLVMLTO', 'LLVMMCDisassembler', 'LLVMMCJIT', | ||||
|              'LLVMMC', 'LLVMMCParser', 'LLVMMIRParser', 'LLVMObjCARCOpts', | ||||
|              'LLVMObject', 'LLVMObjectYAML', 'LLVMOption', 'LLVMOrcJIT', | ||||
|              'LLVMPasses', 'LLVMProfileData', 'LLVMRuntimeDyld', | ||||
|              'LLVMScalarOpts', 'LLVMSelectionDAG', 'LLVMSupport', | ||||
|              'LLVMSymbolize', 'LLVMTableGen', 'LLVMTarget', | ||||
|              'LLVMTransformUtils', 'LLVMVectorize', 'LLVMX86AsmParser', | ||||
|              'LLVMX86AsmPrinter', 'LLVMX86CodeGen', 'LLVMX86Desc', | ||||
|              'LLVMX86Disassembler', 'LLVMX86Info', 'LLVMX86Utils', | ||||
|              'LLVMXRay'] | ||||
|   _deps += cpp.find_library(d, dirs : _search) | ||||
| endforeach | ||||
|  | ||||
| dep_llvm = declare_dependency( | ||||
|   include_directories : include_directories('include'), | ||||
|   dependencies : _deps, | ||||
|   version : '5.0.1', | ||||
| ) | ||||
|  | ||||
| has_rtti = false | ||||
| irbuilder_h = files('include/llvm/IR/IRBuilder.h') | ||||
| @@ -1,18 +0,0 @@ | ||||
| ((nil . ((show-trailing-whitespace . t))) | ||||
|  (prog-mode | ||||
|   (indent-tabs-mode . nil) | ||||
|   (tab-width . 8) | ||||
|   (c-basic-offset . 3) | ||||
|   (c-file-style . "stroustrup") | ||||
|   (fill-column . 78) | ||||
|   (eval . (progn | ||||
| 	    (c-set-offset 'case-label '0) | ||||
| 	    (c-set-offset 'innamespace '0) | ||||
| 	    (c-set-offset 'inline-open '0))) | ||||
|   (whitespace-style face indentation) | ||||
|   (whitespace-line-column . 79) | ||||
|   (eval ignore-errors | ||||
|         (require 'whitespace) | ||||
|         (whitespace-mode 1))) | ||||
|  (makefile-mode (indent-tabs-mode . t)) | ||||
|  ) | ||||
| @@ -1,40 +0,0 @@ | ||||
| # To use this config on you editor, follow the instructions at: | ||||
| # http://editorconfig.org | ||||
|  | ||||
| root = true | ||||
|  | ||||
| [*] | ||||
| charset = utf-8 | ||||
| insert_final_newline = true | ||||
| tab_width = 8 | ||||
|  | ||||
| [*.{c,h,cpp,hpp,cc,hh}] | ||||
| indent_style = space | ||||
| indent_size = 3 | ||||
| max_line_length = 78 | ||||
|  | ||||
| [{Makefile*,*.mk}] | ||||
| indent_style = tab | ||||
|  | ||||
| [{*.py,SCons*}] | ||||
| indent_style = space | ||||
| indent_size = 4 | ||||
|  | ||||
| [*.pl] | ||||
| indent_style = space | ||||
| indent_size = 4 | ||||
|  | ||||
| [*.m4] | ||||
| indent_style = space | ||||
| indent_size = 2 | ||||
|  | ||||
| [*.yml] | ||||
| indent_style = space | ||||
| indent_size = 2 | ||||
|  | ||||
| [*.patch] | ||||
| trim_trailing_whitespace = false | ||||
|  | ||||
| [{meson.build,meson_options.txt}] | ||||
| indent_style = space | ||||
| indent_size = 2 | ||||
							
								
								
									
										10
									
								
								.emacs-dirvars
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								.emacs-dirvars
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| ;; -*- emacs-lisp -*- | ||||
| ;; | ||||
| ;; This file is processed by the dirvars emacs package.  Each variable | ||||
| ;; setting below is performed when this dirvars file is loaded. | ||||
| ;; | ||||
| indent-tabs-mode: nil | ||||
| tab-width: 8 | ||||
| c-basic-offset: 3 | ||||
| kde-emacs-after-parent-string: "" | ||||
| evaluate: (c-set-offset 'inline-open '0) | ||||
							
								
								
									
										4
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| *.dsp -crlf | ||||
| *.dsw -crlf | ||||
| *.sln -crlf | ||||
| *.vcproj -crlf | ||||
							
								
								
									
										40
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,42 @@ | ||||
| *.a | ||||
| *.dll | ||||
| *.exe | ||||
| *.ilk | ||||
| *.la | ||||
| *.lo | ||||
| *.o | ||||
| *.obj | ||||
| *.os | ||||
| *.pc | ||||
| *.pdb | ||||
| *.pyc | ||||
| *.pyo | ||||
| *.out | ||||
| *.so | ||||
| *.so.* | ||||
| *.sw[a-z] | ||||
| *.tar | ||||
| *.tar.bz2 | ||||
| *.tar.gz | ||||
| *.zip | ||||
| *~ | ||||
| depend | ||||
| depend.bak | ||||
| bin/ltmain.sh | ||||
| lib | ||||
| lib64 | ||||
| configure | ||||
| configure.lineno | ||||
| autom4te.cache | ||||
| aclocal.m4 | ||||
| config.log | ||||
| config.status | ||||
| cscope* | ||||
| .scon* | ||||
| config.py | ||||
| build | ||||
| libtool | ||||
| manifest.txt | ||||
| Makefile.in | ||||
| .dir-locals.el | ||||
| .deps/ | ||||
| .libs/ | ||||
|   | ||||
							
								
								
									
										532
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
							
						
						
									
										532
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							| @@ -1,532 +0,0 @@ | ||||
| # This is the tag of the docker image used for the build jobs. If the | ||||
| # image doesn't exist yet, the containers stage generates it. | ||||
| # | ||||
| # In order to generate a new image, one should generally change the tag. | ||||
| # While removing the image from the registry would also work, that's not | ||||
| # recommended except for ephemeral images during development: Replacing | ||||
| # an image after a significant amount of time might pull in newer | ||||
| # versions of gcc/clang or other packages, which might break the build | ||||
| # with older commits using the same tag. | ||||
| # | ||||
| # After merging a change resulting in generating a new image to the | ||||
| # main repository, it's recommended to remove the image from the source | ||||
| # repository's container registry, so that the image from the main | ||||
| # repository's registry will be used there as well. | ||||
| variables: | ||||
|   UPSTREAM_REPO: mesa/mesa | ||||
|   DEBIAN_TAG: "2019-10-29" | ||||
|   DEBIAN_ARM64_TAG: "arm64v8-2019-10-23" | ||||
|   STRETCH_TAG: "2019-09-18" | ||||
|   DEBIAN_VERSION: buster-slim | ||||
|   STRETCH_VERSION: stretch-slim | ||||
|   DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG" | ||||
|   DEBIAN_ARM64_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_ARM64_TAG" | ||||
|   STRETCH_IMAGE: "$CI_REGISTRY_IMAGE/debian/$STRETCH_VERSION:$STRETCH_TAG" | ||||
|  | ||||
| include: | ||||
|   - project: 'wayland/ci-templates' | ||||
|     ref: 1f7f57c64ff4ebbf7292e3b7a13600518b8cb24c | ||||
|     file: '/templates/debian.yml' | ||||
|  | ||||
| include: | ||||
|   - local: '.gitlab-ci/lava-gitlab-ci.yml' | ||||
|  | ||||
| stages: | ||||
|   - container | ||||
|   - build | ||||
|   - test | ||||
|  | ||||
|  | ||||
| # When to automatically run the CI | ||||
| .ci-run-policy: | ||||
|   only: | ||||
|     refs: | ||||
|       - branches@mesa/mesa | ||||
|       - merge_requests | ||||
|       - /^ci([-/].*)?$/ | ||||
|     changes: | ||||
|       - VERSION | ||||
|       - bin/**/* | ||||
|       # GitLab CI | ||||
|       - .gitlab-ci.yml | ||||
|       - .gitlab-ci/**/* | ||||
|       # Meson | ||||
|       - meson* | ||||
|       - build-support/**/* | ||||
|       - subprojects/**/* | ||||
|       # SCons | ||||
|       - SConstruct | ||||
|       - scons/**/* | ||||
|       - common.py | ||||
|       # Source code | ||||
|       - include/**/* | ||||
|       - src/**/* | ||||
|   retry: | ||||
|     max: 2 | ||||
|     when: | ||||
|       - runner_system_failure | ||||
|  | ||||
| .ci-deqp-artifacts: | ||||
|   artifacts: | ||||
|     when: always | ||||
|     untracked: false | ||||
|     paths: | ||||
|       # Watch out!  Artifacts are relative to the build dir. | ||||
|       # https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521 | ||||
|       - artifacts | ||||
|  | ||||
| # Build the normal CI native and cross-build docker images. | ||||
|  | ||||
| .container: | ||||
|   stage: container | ||||
|   extends: | ||||
|     - .ci-run-policy | ||||
|   variables: | ||||
|     # no need to pull the whole repo to build the container image | ||||
|     GIT_STRATEGY: none | ||||
|  | ||||
| debian-10:amd64: | ||||
|   extends: | ||||
|     - .debian@container-ifnot-exists | ||||
|     - .container | ||||
|   variables: | ||||
|     DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh' | ||||
|  | ||||
| .use-debian-10:amd64: | ||||
|   image: $DEBIAN_IMAGE | ||||
|   needs: | ||||
|     - debian-10:amd64 | ||||
|  | ||||
| debian-9:amd64: | ||||
|   extends: debian-10:amd64 | ||||
|   variables: | ||||
|     DEBIAN_TAG: $STRETCH_TAG | ||||
|     DEBIAN_VERSION: $STRETCH_VERSION | ||||
|     DEBIAN_IMAGE: $STRETCH_IMAGE | ||||
|     DEBIAN_EXEC: 'bash .gitlab-ci/debian-stretch-install.sh' | ||||
|  | ||||
| .use-debian-9:amd64: | ||||
|   image: $STRETCH_IMAGE | ||||
|   needs: | ||||
|     - debian-9:amd64 | ||||
|  | ||||
| debian-10:arm64: | ||||
|   extends: | ||||
|     - .debian@container-ifnot-exists@arm64v8 | ||||
|     - .container | ||||
|   variables: | ||||
|     DEBIAN_TAG: "$DEBIAN_ARM64_TAG" | ||||
|     DEBIAN_EXEC: 'bash .gitlab-ci/debian-arm64-install.sh' | ||||
|  | ||||
|  | ||||
| # BUILD | ||||
|  | ||||
| # Shared between windows and Linux | ||||
| .build-common: | ||||
|   extends: .ci-run-policy | ||||
|   stage: build | ||||
|   artifacts: | ||||
|     when: always | ||||
|     paths: | ||||
|       - _build/meson-logs/*.txt | ||||
|       # scons: | ||||
|       - build/*/config.log | ||||
|       - shader-db | ||||
|  | ||||
| # Just Linux | ||||
| .build-linux: | ||||
|   extends: .build-common | ||||
|   cache: | ||||
|     key: ${CI_JOB_NAME} | ||||
|     paths: | ||||
|       - ccache | ||||
|   variables: | ||||
|     CCACHE_COMPILERCHECK: "content" | ||||
|   # Use ccache transparently, and print stats before/after | ||||
|   before_script: | ||||
|     - export PATH="/usr/lib/ccache:$PATH" | ||||
|     - export CCACHE_BASEDIR="$PWD" | ||||
|     - export CCACHE_DIR="$PWD/ccache" | ||||
|     - ccache --max-size=1500M | ||||
|     - ccache --zero-stats || true | ||||
|     - ccache --show-stats || true | ||||
|   after_script: | ||||
|     # In case the install dir is being saved as artifacts, tar it up | ||||
|     # so that symlinks and hardlinks aren't each packed separately in | ||||
|     # the zip file. | ||||
|     - if [ -d install ]; then | ||||
|         tar -cf artifacts/install.tar install; | ||||
|       fi | ||||
|     - export CCACHE_DIR="$PWD/ccache" | ||||
|     - ccache --show-stats | ||||
|  | ||||
| .build-windows: | ||||
|   extends: .build-common | ||||
|   tags: | ||||
|     - mesa-windows | ||||
|   cache: | ||||
|     key: ${CI_JOB_NAME} | ||||
|     paths: | ||||
|       - subprojects/packagecache | ||||
|  | ||||
| .meson-build: | ||||
|   extends: | ||||
|     - .build-linux | ||||
|     - .use-debian-10:amd64 | ||||
|   script: | ||||
|     - .gitlab-ci/meson-build.sh | ||||
|  | ||||
| .scons-build: | ||||
|   extends: | ||||
|     - .build-linux | ||||
|     - .use-debian-10:amd64 | ||||
|   variables: | ||||
|     SCONSFLAGS: "-j4" | ||||
|   script: | ||||
|     - .gitlab-ci/scons-build.sh | ||||
|  | ||||
| meson-main: | ||||
|   extends: | ||||
|     - .meson-build | ||||
|     - .ci-deqp-artifacts | ||||
|   variables: | ||||
|     UNWIND: "true" | ||||
|     DRI_LOADERS: > | ||||
|       -D glx=dri | ||||
|       -D gbm=true | ||||
|       -D egl=true | ||||
|       -D platforms=x11,wayland,drm,surfaceless | ||||
|     DRI_DRIVERS: "i915,i965,r100,r200,nouveau" | ||||
|     GALLIUM_ST: > | ||||
|       -D dri3=true | ||||
|       -D gallium-extra-hud=true | ||||
|       -D gallium-vdpau=true | ||||
|       -D gallium-xvmc=true | ||||
|       -D gallium-omx=bellagio | ||||
|       -D gallium-va=true | ||||
|       -D gallium-xa=true | ||||
|       -D gallium-nine=true | ||||
|       -D gallium-opencl=disabled | ||||
|     GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink" | ||||
|     LLVM_VERSION: "7" | ||||
|     EXTRA_OPTION: > | ||||
|       -D osmesa=gallium | ||||
|       -D tools=all | ||||
|     MESON_SHADERDB: "true" | ||||
|     BUILDTYPE: "debugoptimized" | ||||
|  | ||||
| .meson-cross: | ||||
|   extends: | ||||
|     - .meson-build | ||||
|   variables: | ||||
|     UNWIND: "false" | ||||
|     DRI_LOADERS: > | ||||
|       -D glx=disabled | ||||
|       -D gbm=false | ||||
|       -D egl=true | ||||
|       -D platforms=surfaceless | ||||
|       -D osmesa=none | ||||
|     GALLIUM_ST: > | ||||
|       -D dri3=false | ||||
|       -D gallium-vdpau=false | ||||
|       -D gallium-xvmc=false | ||||
|       -D gallium-omx=disabled | ||||
|       -D gallium-va=false | ||||
|       -D gallium-xa=false | ||||
|       -D gallium-nine=false | ||||
|  | ||||
| .meson-arm: | ||||
|   extends: .meson-cross | ||||
|   image: $DEBIAN_ARM64_IMAGE | ||||
|   variables: | ||||
|     VULKAN_DRIVERS: freedreno | ||||
|     GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4" | ||||
|     EXTRA_OPTION: > | ||||
|       -D I-love-half-baked-turnips=true | ||||
|   needs: | ||||
|     - debian-10:arm64 | ||||
|   tags: | ||||
|     - aarch64 | ||||
|  | ||||
| meson-armhf: | ||||
|   extends: .meson-arm | ||||
|   variables: | ||||
|     CROSS: armhf | ||||
|     LLVM_VERSION: "7" | ||||
|  | ||||
| meson-arm64: | ||||
|   extends: | ||||
|     - .meson-arm | ||||
|     - .ci-deqp-artifacts | ||||
|   variables: | ||||
|     BUILDTYPE: "debugoptimized" | ||||
|  | ||||
| # NOTE: Building SWR is 2x (yes two) times slower than all the other | ||||
| # gallium drivers combined. | ||||
| # Start this early so that it doesn't limit the total run time. | ||||
| # | ||||
| # We also stick the glvnd build here, since we want non-glvnd in | ||||
| # meson-main for actual driver CI. | ||||
| meson-swr-glvnd: | ||||
|   extends: .meson-build | ||||
|   variables: | ||||
|     UNWIND: "true" | ||||
|     DRI_LOADERS: > | ||||
|       -D glvnd=true | ||||
|       -D egl=true | ||||
|     GALLIUM_ST: > | ||||
|       -D dri3=true | ||||
|       -D gallium-vdpau=false | ||||
|       -D gallium-xvmc=false | ||||
|       -D gallium-omx=disabled | ||||
|       -D gallium-va=false | ||||
|       -D gallium-xa=false | ||||
|       -D gallium-nine=false | ||||
|       -D gallium-opencl=disabled | ||||
|     GALLIUM_DRIVERS: "swr,iris" | ||||
|     LLVM_VERSION: "6.0" | ||||
|  | ||||
| meson-clang: | ||||
|   extends: .meson-build | ||||
|   variables: | ||||
|     UNWIND: "true" | ||||
|     DRI_DRIVERS: "auto" | ||||
|     GALLIUM_DRIVERS: "auto" | ||||
|     VULKAN_DRIVERS: intel,amd,freedreno | ||||
|     CC: "ccache clang-8" | ||||
|     CXX: "ccache clang++-8" | ||||
|  | ||||
| .meson-windows: | ||||
|   extends: | ||||
|     - .build-windows | ||||
|   before_script: | ||||
|     - $ENV:ARCH = "x86" | ||||
|     - $ENV:VERSION = "2019\Community" | ||||
|   script: | ||||
|     - cmd /C .gitlab-ci\meson-build.bat | ||||
|  | ||||
| scons-swr: | ||||
|   extends: .scons-build | ||||
|   variables: | ||||
|     SCONS_TARGET: "swr=1" | ||||
|     SCONS_CHECK_COMMAND: "true" | ||||
|     LLVM_VERSION: "6.0" | ||||
|  | ||||
| scons-win64: | ||||
|   extends: .scons-build | ||||
|   variables: | ||||
|     SCONS_TARGET: platform=windows machine=x86_64 | ||||
|     SCONS_CHECK_COMMAND: "true" | ||||
|  | ||||
| meson-clover: | ||||
|   extends: .meson-build | ||||
|   variables: | ||||
|     UNWIND: "true" | ||||
|     DRI_LOADERS: > | ||||
|       -D glx=disabled | ||||
|       -D egl=false | ||||
|       -D gbm=false | ||||
|     GALLIUM_ST: > | ||||
|       -D dri3=false | ||||
|       -D gallium-vdpau=false | ||||
|       -D gallium-xvmc=false | ||||
|       -D gallium-omx=disabled | ||||
|       -D gallium-va=false | ||||
|       -D gallium-xa=false | ||||
|       -D gallium-nine=false | ||||
|       -D gallium-opencl=icd | ||||
|   script: | ||||
|     - export GALLIUM_DRIVERS="r600,radeonsi" | ||||
|     - .gitlab-ci/meson-build.sh | ||||
|     - LLVM_VERSION=8 .gitlab-ci/meson-build.sh | ||||
|     - export GALLIUM_DRIVERS="i915,r600" | ||||
|     - LLVM_VERSION=6.0 .gitlab-ci/meson-build.sh | ||||
|     - LLVM_VERSION=7 .gitlab-ci/meson-build.sh | ||||
|  | ||||
| meson-clover-old-llvm: | ||||
|   extends: | ||||
|     - meson-clover | ||||
|     - .use-debian-9:amd64 | ||||
|   variables: | ||||
|     UNWIND: "false" | ||||
|     DRI_LOADERS: > | ||||
|       -D glx=disabled | ||||
|       -D egl=false | ||||
|       -D gbm=false | ||||
|       -D platforms=drm,surfaceless | ||||
|     GALLIUM_DRIVERS: "i915,r600" | ||||
|   script: | ||||
|     - LLVM_VERSION=3.9 .gitlab-ci/meson-build.sh | ||||
|     - LLVM_VERSION=4.0 .gitlab-ci/meson-build.sh | ||||
|     - LLVM_VERSION=5.0 .gitlab-ci/meson-build.sh | ||||
|  | ||||
| meson-vulkan: | ||||
|   extends: .meson-build | ||||
|   variables: | ||||
|     UNWIND: "false" | ||||
|     DRI_LOADERS: > | ||||
|       -D glx=disabled | ||||
|       -D gbm=false | ||||
|       -D egl=false | ||||
|       -D platforms=x11,wayland,drm | ||||
|       -D osmesa=none | ||||
|     GALLIUM_ST: > | ||||
|       -D dri3=true | ||||
|       -D gallium-vdpau=false | ||||
|       -D gallium-xvmc=false | ||||
|       -D gallium-omx=disabled | ||||
|       -D gallium-va=false | ||||
|       -D gallium-xa=false | ||||
|       -D gallium-nine=false | ||||
|       -D gallium-opencl=disabled | ||||
|       -D b_sanitize=undefined | ||||
|       -D c_args=-fno-sanitize-recover=all | ||||
|       -D cpp_args=-fno-sanitize-recover=all | ||||
|     UBSAN_OPTIONS: "print_stacktrace=1" | ||||
|     VULKAN_DRIVERS: intel,amd,freedreno | ||||
|     LLVM_VERSION: "8" | ||||
|     EXTRA_OPTION: > | ||||
|       -D vulkan-overlay-layer=true | ||||
|  | ||||
| # While the main point of this build is testing the i386 cross build, | ||||
| # we also use this one to test some other options that are exclusive | ||||
| # with meson-main's choices (classic swrast and osmesa) | ||||
| meson-i386: | ||||
|   extends: .meson-cross | ||||
|   variables: | ||||
|     CROSS: i386 | ||||
|     VULKAN_DRIVERS: intel | ||||
|     DRI_DRIVERS: "swrast" | ||||
|     GALLIUM_DRIVERS: "iris" | ||||
|     EXTRA_OPTION: > | ||||
|       -D vulkan-overlay-layer=true | ||||
|       -D llvm=false | ||||
|       -D osmesa=classic | ||||
|  | ||||
| meson-mingw32-x86_64: | ||||
|   extends: .meson-build | ||||
|   variables: | ||||
|     UNWIND: "false" | ||||
|     DRI_DRIVERS: "" | ||||
|     GALLIUM_DRIVERS: "swrast" | ||||
|     EXTRA_OPTION: > | ||||
|       -Dllvm=false | ||||
|       -Dosmesa=gallium | ||||
|       --cross-file=.gitlab-ci/x86_64-w64-mingw32 | ||||
|  | ||||
| scons: | ||||
|   extends: .scons-build | ||||
|   variables: | ||||
|     SCONS_TARGET: "llvm=1" | ||||
|     SCONS_CHECK_COMMAND: "scons llvm=1 force_scons=1 check" | ||||
|   script: | ||||
|     - SCONS_TARGET="" SCONS_CHECK_COMMAND="scons check force_scons=1" .gitlab-ci/scons-build.sh | ||||
|     - LLVM_VERSION=6.0 .gitlab-ci/scons-build.sh | ||||
|     - LLVM_VERSION=7 .gitlab-ci/scons-build.sh | ||||
|     - LLVM_VERSION=8 .gitlab-ci/scons-build.sh | ||||
|  | ||||
| scons-old-llvm: | ||||
|   extends: | ||||
|     - scons | ||||
|     - .use-debian-9:amd64 | ||||
|   script: | ||||
|     - LLVM_VERSION=3.9 .gitlab-ci/scons-build.sh | ||||
|     - LLVM_VERSION=4.0 .gitlab-ci/scons-build.sh | ||||
|     - LLVM_VERSION=5.0 .gitlab-ci/scons-build.sh | ||||
|  | ||||
| .test: | ||||
|   extends: .ci-run-policy | ||||
|   stage: test | ||||
|   variables: | ||||
|     GIT_STRATEGY: none # testing doesn't build anything from source | ||||
|  | ||||
| .deqp-test: | ||||
|   extends: | ||||
|     - .test | ||||
|     - .use-debian-10:amd64 | ||||
|   variables: | ||||
|     DEQP_SKIPS: deqp-default-skips.txt | ||||
|   script: | ||||
|     # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY | ||||
|     - rm -rf install | ||||
|     - tar -xf artifacts/install.tar | ||||
|     - ./artifacts/deqp-runner.sh | ||||
|   artifacts: | ||||
|     when: on_failure | ||||
|     name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME" | ||||
|     paths: | ||||
|       - results/ | ||||
|   dependencies: | ||||
|     - meson-main | ||||
|   needs: | ||||
|     - meson-main | ||||
|     - debian-10:amd64 | ||||
|  | ||||
| test-llvmpipe-gles2: | ||||
|   parallel: 4 | ||||
|   variables: | ||||
|     DEQP_VER: gles2 | ||||
|     DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt | ||||
|     LIBGL_ALWAYS_SOFTWARE: "true" | ||||
|     DEQP_RENDERER_MATCH: "llvmpipe" | ||||
|   extends: .deqp-test | ||||
|  | ||||
| test-softpipe-gles2: | ||||
|   extends: test-llvmpipe-gles2 | ||||
|   variables: | ||||
|     DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt | ||||
|     DEQP_RENDERER_MATCH: "softpipe" | ||||
|     GALLIUM_DRIVER: "softpipe" | ||||
|  | ||||
| # The GLES2 CTS run takes about 8 minutes of CPU time, while GLES3 is | ||||
| # 25 minutes.  Until we can get its runtime down, just do a partial | ||||
| # (every 10 tests) run. | ||||
| test-softpipe-gles3-limited: | ||||
|   variables: | ||||
|     DEQP_VER: gles3 | ||||
|     DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt | ||||
|     LIBGL_ALWAYS_SOFTWARE: "true" | ||||
|     DEQP_RENDERER_MATCH: "softpipe" | ||||
|     GALLIUM_DRIVER: "softpipe" | ||||
|     CI_NODE_INDEX: 1 | ||||
|     CI_NODE_TOTAL: 10 | ||||
|   extends: .deqp-test | ||||
|  | ||||
| arm64_a630_gles2: | ||||
|   extends: .deqp-test | ||||
|   image: $DEBIAN_ARM64_IMAGE | ||||
|   variables: | ||||
|     DEQP_VER: gles2 | ||||
|     DEQP_RENDERER_MATCH: "FD630" | ||||
|     DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt | ||||
|     DEQP_SKIPS: deqp-freedreno-a630-skips.txt | ||||
|     NIR_VALIDATE: 0 | ||||
|   tags: | ||||
|     - mesa-cheza | ||||
|   dependencies: | ||||
|     - meson-arm64 | ||||
|   needs: | ||||
|     - meson-arm64 | ||||
|     - debian-10:arm64 | ||||
|  | ||||
| arm64_a630_gles31: | ||||
|   extends: arm64_a630_gles2 | ||||
|   parallel: 4 | ||||
|   variables: | ||||
|     DEQP_VER: gles31 | ||||
|  | ||||
| arm64_a630_gles3: | ||||
|   parallel: 6 | ||||
|   extends: arm64_a630_gles2 | ||||
|   variables: | ||||
|     DEQP_VER: gles3 | ||||
|  | ||||
| arm64_a306_gles2: | ||||
|   parallel: 4 | ||||
|   extends: arm64_a630_gles2 | ||||
|   variables: | ||||
|     DEQP_EXPECTED_FAILS: deqp-freedreno-a307-fails.txt | ||||
|     DEQP_SKIPS: deqp-default-skips.txt | ||||
|     DEQP_RENDERER_MATCH: "FD307" | ||||
|   tags: | ||||
|     - db410c | ||||
| @@ -1,122 +0,0 @@ | ||||
| ## Mesa testing using gitlab-runner | ||||
|  | ||||
| The goal of the "test" stage of the .gitlab-ci.yml is to do pre-merge | ||||
| testing of Mesa drivers on various platforms, so that we can ensure no | ||||
| regressions are merged, as long as developers are merging code using | ||||
| the "Merge when pipeline completes" button. | ||||
|  | ||||
| This document only covers the CI from .gitlab-ci.yml and this | ||||
| directory.  For other CI systems, see Intel's [Mesa | ||||
| CI](https://gitlab.freedesktop.org/Mesa_CI) or panfrost's LAVA-based | ||||
| CI (`src/gallium/drivers/panfrost/ci/`) | ||||
|  | ||||
| ### Software architecture | ||||
|  | ||||
| For freedreno and llvmpipe CI, we're using gitlab-runner on the test | ||||
| devices (DUTs), cached docker containers with VK-GL-CTS, and the | ||||
| normal shared x86_64 runners to build the Mesa drivers to be run | ||||
| inside of those containers on the DUTs. | ||||
|  | ||||
| The docker containers are rebuilt from the debian-install.sh script | ||||
| when DEBIAN\_TAG is changed in .gitlab-ci.yml, and | ||||
| debian-test-install.sh when DEBIAN\_ARM64\_TAG is changed in | ||||
| .gitlab-ci.yml.  The resulting images are around 500MB, and are | ||||
| expected to change approximately weekly (though an individual | ||||
| developer working on them may produce many more images while trying to | ||||
| come up with a working MR!). | ||||
|  | ||||
| gitlab-runner is a client that polls gitlab.freedesktop.org for | ||||
| available jobs, with no inbound networking requirements.  Jobs can | ||||
| have tags, so we can have DUT-specific jobs that only run on runners | ||||
| with that tag marked in the gitlab UI. | ||||
|  | ||||
| Since dEQP takes a long time to run, we mark the job as "parallel" at | ||||
| some level, which spawns multiple jobs from one definition, and then | ||||
| deqp-runner.sh takes the corresponding fraction of the test list for | ||||
| that job. | ||||
|  | ||||
| To reduce dEQP runtime (or avoid tests with unreliable results), a | ||||
| deqp-runner.sh invocation can provide a list of tests to skip.  If | ||||
| your driver is not yet conformant, you can pass a list of expected | ||||
| failures, and the job will only fail on tests that aren't listed (look | ||||
| at the job's log for which specific tests failed). | ||||
|  | ||||
| ### DUT requirements | ||||
|  | ||||
| #### DUTs must have a stable kernel and GPU reset. | ||||
|  | ||||
| If the system goes down during a test run, that job will eventually | ||||
| time out and fail (default 1 hour).  However, if the kernel can't | ||||
| reliably reset the GPU on failure, bugs in one MR may leak into | ||||
| spurious failures in another MR.  This would be an unacceptable impact | ||||
| on Mesa developers working on other drivers. | ||||
|  | ||||
| #### DUTs must be able to run docker | ||||
|  | ||||
| The Mesa gitlab-runner based test architecture is built around docker, | ||||
| so that we can cache the debian package installation and CTS build | ||||
| step across multiple test runs.  Since the images are large and change | ||||
| approximately weekly, the DUTs also need to be running some script to | ||||
| prune stale docker images periodically in order to not run out of disk | ||||
| space as we rev those containers (perhaps [this | ||||
| script](https://gitlab.com/gitlab-org/gitlab-runner/issues/2980#note_169233611)). | ||||
|  | ||||
| Note that docker doesn't allow containers to be stored on NFS, and | ||||
| doesn't allow multiple docker daemons to interact with the same | ||||
| network block device, so you will probably need some sort of physical | ||||
| storage on your DUTs. | ||||
|  | ||||
| #### DUTs must be public | ||||
|  | ||||
| By including your device in .gitlab-ci.yml, you're effectively letting | ||||
| anyone on the internet run code on your device.  docker containers may | ||||
| provide some limited protection, but how much you trust that and what | ||||
| you do to mitigate hostile access is up to you. | ||||
|  | ||||
| #### DUTs must expose the dri device nodes to the containers. | ||||
|  | ||||
| Obviously, to get access to the HW, we need to pass the render node | ||||
| through.  This is done by adding `devices = ["/dev/dri"]` to the | ||||
| `runners.docker` section of /etc/gitlab-runner/config.toml. | ||||
|  | ||||
| ### HW CI farm expectations | ||||
|  | ||||
| To make sure that testing of one vendor's drivers doesn't block | ||||
| unrelated work by other vendors, we require that a given driver's test | ||||
| farm produces a spurious failure no more than once a week.  If every | ||||
| driver had CI and failed once a week, we would be seeing someone's | ||||
| code getting blocked on a spurious failure daily, which is an | ||||
| unacceptable cost to the project. | ||||
|  | ||||
| Additionally, the test farm needs to be able to provide a short enough | ||||
| turnaround time that people can regularly use the "Merge when pipeline | ||||
| succeeds" button successfully (until we get | ||||
| [marge-bot](https://github.com/smarkets/marge-bot) in place on | ||||
| freedesktop.org).  As a result, we require that the test farm be able | ||||
| to handle a whole pipeline's worth of jobs in less than 5 minutes (to | ||||
| compare, the build stage is about 10 minutes, if you could get all | ||||
| your jobs scheduled on the shared runners in time.). | ||||
|  | ||||
| If a test farm is short the HW to provide these guarantees, consider | ||||
| dropping tests to reduce runtime. | ||||
| `VK-GL-CTS/scripts/log/bottleneck_report.py` can help you find what | ||||
| tests were slow in a `results.qpa` file.  Or, you can have a job with | ||||
| no `parallel` field set and: | ||||
|  | ||||
| ``` | ||||
|   variables: | ||||
|     CI_NODE_INDEX: 1 | ||||
|     CI_NODE_TOTAL: 10 | ||||
| ``` | ||||
|  | ||||
| to just run 1/10th of the test list. | ||||
|  | ||||
| If a HW CI farm goes offline (network dies and all CI pipelines end up | ||||
| stalled) or its runners are consistenly spuriously failing (disk | ||||
| full?), and the maintainer is not immediately available to fix the | ||||
| issue, please push through an MR disabling that farm's jobs by adding | ||||
| '.' to the front of the jobs names until the maintainer can bring | ||||
| things back up.  If this happens, the farm maintainer should provide a | ||||
| report to mesa-dev@lists.freedesktop.org after the fact explaining | ||||
| what happened and what the mitigation plan is for that failure next | ||||
| time. | ||||
| @@ -1,46 +0,0 @@ | ||||
| CONFIG_LOCALVERSION="ccu" | ||||
|  | ||||
| CONFIG_DEBUG_KERNEL=y | ||||
|  | ||||
| CONFIG_DEVFREQ_GOV_PERFORMANCE=y | ||||
| CONFIG_DEVFREQ_GOV_POWERSAVE=y | ||||
| CONFIG_DEVFREQ_GOV_USERSPACE=y | ||||
| CONFIG_DEVFREQ_GOV_PASSIVE=y | ||||
| CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y | ||||
|  | ||||
| CONFIG_DRM=y | ||||
| CONFIG_DRM_ROCKCHIP=y | ||||
| CONFIG_DRM_PANFROST=y | ||||
| CONFIG_DRM_LIMA=y | ||||
| CONFIG_DRM_PANEL_SIMPLE=y | ||||
| CONFIG_PWM_CROS_EC=y | ||||
| CONFIG_BACKLIGHT_PWM=y | ||||
|  | ||||
| CONFIG_ROCKCHIP_CDN_DP=n | ||||
|  | ||||
| CONFIG_SPI_ROCKCHIP=y | ||||
| CONFIG_PWM_ROCKCHIP=y | ||||
| CONFIG_PHY_ROCKCHIP_DP=y | ||||
| CONFIG_DWMAC_ROCKCHIP=y | ||||
|  | ||||
| CONFIG_MFD_RK808=y | ||||
| CONFIG_REGULATOR_RK808=y | ||||
| CONFIG_RTC_DRV_RK808=y | ||||
| CONFIG_COMMON_CLK_RK808=y | ||||
|  | ||||
| CONFIG_REGULATOR_FAN53555=y | ||||
| CONFIG_REGULATOR=y | ||||
|  | ||||
| CONFIG_REGULATOR_VCTRL=y | ||||
|  | ||||
| CONFIG_KASAN=n | ||||
| CONFIG_KASAN_INLINE=n | ||||
| CONFIG_STACKTRACE=n | ||||
|  | ||||
| CONFIG_TMPFS=y | ||||
|  | ||||
| CONFIG_PROVE_LOCKING=n | ||||
| CONFIG_DEBUG_LOCKDEP=n | ||||
| CONFIG_SOFTLOCKUP_DETECTOR=n | ||||
| CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=n | ||||
|  | ||||
| @@ -1,84 +0,0 @@ | ||||
| CONFIG_LOCALVERSION="ccu" | ||||
|  | ||||
| CONFIG_DEBUG_KERNEL=y | ||||
|  | ||||
| CONFIG_DEVFREQ_GOV_PERFORMANCE=y | ||||
| CONFIG_DEVFREQ_GOV_POWERSAVE=y | ||||
| CONFIG_DEVFREQ_GOV_USERSPACE=y | ||||
| CONFIG_DEVFREQ_GOV_PASSIVE=y | ||||
|  | ||||
| CONFIG_DRM=y | ||||
| CONFIG_DRM_ROCKCHIP=y | ||||
| CONFIG_DRM_PANFROST=y | ||||
| CONFIG_DRM_LIMA=y | ||||
| CONFIG_DRM_PANEL_SIMPLE=y | ||||
| CONFIG_PWM_CROS_EC=y | ||||
| CONFIG_BACKLIGHT_PWM=y | ||||
|  | ||||
| CONFIG_ROCKCHIP_CDN_DP=n | ||||
|  | ||||
| CONFIG_SPI_ROCKCHIP=y | ||||
| CONFIG_PWM_ROCKCHIP=y | ||||
| CONFIG_PHY_ROCKCHIP_DP=y | ||||
| CONFIG_DWMAC_ROCKCHIP=y | ||||
| CONFIG_STMMAC_ETH=y | ||||
| CONFIG_TYPEC_FUSB302=y | ||||
| CONFIG_TYPEC=y | ||||
| CONFIG_TYPEC_TCPM=y | ||||
|  | ||||
| CONFIG_ARCH_SUNXI=n | ||||
| CONFIG_ARCH_ALPINE=n | ||||
| CONFIG_ARCH_BCM2835=n | ||||
| CONFIG_ARCH_BCM_IPROC=n | ||||
| CONFIG_ARCH_BERLIN=n | ||||
| CONFIG_ARCH_BRCMSTB=n | ||||
| CONFIG_ARCH_EXYNOS=n | ||||
| CONFIG_ARCH_K3=n | ||||
| CONFIG_ARCH_LAYERSCAPE=n | ||||
| CONFIG_ARCH_LG1K=n | ||||
| CONFIG_ARCH_HISI=n | ||||
| CONFIG_ARCH_MEDIATEK=n | ||||
| CONFIG_ARCH_MVEBU=n | ||||
| CONFIG_ARCH_QCOM=n | ||||
| CONFIG_ARCH_SEATTLE=n | ||||
| CONFIG_ARCH_SYNQUACER=n | ||||
| CONFIG_ARCH_RENESAS=n | ||||
| CONFIG_ARCH_R8A774A1=n | ||||
| CONFIG_ARCH_R8A774C0=n | ||||
| CONFIG_ARCH_R8A7795=n | ||||
| CONFIG_ARCH_R8A7796=n | ||||
| CONFIG_ARCH_R8A77965=n | ||||
| CONFIG_ARCH_R8A77970=n | ||||
| CONFIG_ARCH_R8A77980=n | ||||
| CONFIG_ARCH_R8A77990=n | ||||
| CONFIG_ARCH_R8A77995=n | ||||
| CONFIG_ARCH_STRATIX10=n | ||||
| CONFIG_ARCH_TEGRA=n | ||||
| CONFIG_ARCH_SPRD=n | ||||
| CONFIG_ARCH_THUNDER=n | ||||
| CONFIG_ARCH_THUNDER2=n | ||||
| CONFIG_ARCH_UNIPHIER=n | ||||
| CONFIG_ARCH_VEXPRESS=n | ||||
| CONFIG_ARCH_XGENE=n | ||||
| CONFIG_ARCH_ZX=n | ||||
| CONFIG_ARCH_ZYNQMP=n | ||||
|  | ||||
| CONFIG_ACPI=n | ||||
|  | ||||
| CONFIG_REGULATOR_FAN53555=y | ||||
| CONFIG_REGULATOR=y | ||||
|  | ||||
| CONFIG_REGULATOR_VCTRL=y | ||||
|  | ||||
| CONFIG_KASAN=n | ||||
| CONFIG_KASAN_INLINE=n | ||||
| CONFIG_STACKTRACE=n | ||||
|  | ||||
| CONFIG_TMPFS=y | ||||
|  | ||||
| CONFIG_PROVE_LOCKING=n | ||||
| CONFIG_DEBUG_LOCKDEP=n | ||||
| CONFIG_SOFTLOCKUP_DETECTOR=y | ||||
| CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y | ||||
|  | ||||
| CONFIG_DETECT_HUNG_TASK=y | ||||
| @@ -1,185 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| set -ex | ||||
|  | ||||
| apt-get -y install --no-install-recommends initramfs-tools libpng16-16 strace libsensors5 libexpat1 libdrm2 | ||||
| passwd root -d | ||||
| chsh -s /bin/sh | ||||
| ln -s /bin/sh /init | ||||
|  | ||||
| ####################################################################### | ||||
| # Strip the image to a small minimal system without removing the debian | ||||
| # toolchain. | ||||
|  | ||||
| # Copy timezone file and remove tzdata package | ||||
| rm -rf /etc/localtime | ||||
| cp /usr/share/zoneinfo/Etc/UTC /etc/localtime | ||||
|  | ||||
| UNNEEDED_PACKAGES="libfdisk1 | ||||
|                    tzdata | ||||
|                    diffutils" | ||||
|  | ||||
| export DEBIAN_FRONTEND=noninteractive | ||||
|  | ||||
| # Removing unused packages | ||||
| for PACKAGE in ${UNNEEDED_PACKAGES} | ||||
| do | ||||
| 	echo ${PACKAGE} | ||||
| 	if ! apt-get remove --purge --yes "${PACKAGE}" | ||||
| 	then | ||||
| 		echo "WARNING: ${PACKAGE} isn't installed" | ||||
| 	fi | ||||
| done | ||||
|  | ||||
| apt-get autoremove --yes || true | ||||
|  | ||||
| # Dropping logs | ||||
| rm -rf /var/log/* | ||||
|  | ||||
| # Dropping documentation, localization, i18n files, etc | ||||
| rm -rf /usr/share/doc/* | ||||
| rm -rf /usr/share/locale/* | ||||
| rm -rf /usr/share/man | ||||
| rm -rf /usr/share/i18n/* | ||||
| rm -rf /usr/share/info/* | ||||
| rm -rf /usr/share/lintian/* | ||||
| rm -rf /usr/share/common-licenses/* | ||||
| rm -rf /usr/share/mime/* | ||||
|  | ||||
| # Dropping reportbug scripts | ||||
| rm -rf /usr/share/bug | ||||
|  | ||||
| # Drop udev hwdb not required on a stripped system | ||||
| rm -rf /lib/udev/hwdb.bin /lib/udev/hwdb.d/* | ||||
|  | ||||
| # Drop all gconv conversions && binaries | ||||
| rm -rf usr/bin/iconv | ||||
| rm -rf usr/sbin/iconvconfig | ||||
| rm -rf usr/lib/*/gconv/ | ||||
|  | ||||
| # Remove libusb database | ||||
| rm -rf usr/sbin/update-usbids | ||||
| rm -rf var/lib/usbutils/usb.ids | ||||
| rm -rf usr/share/misc/usb.ids | ||||
|  | ||||
| ####################################################################### | ||||
| # Crush into a minimal production image to be deployed via some type of image | ||||
| # updating system. | ||||
| # IMPORTANT: The Debian system is not longer functional at this point, | ||||
| # for example, apt and dpkg will stop working | ||||
|  | ||||
| UNNEEDED_PACKAGES="apt libapt-pkg5.0 "\ | ||||
| "ncurses-bin ncurses-base libncursesw5 libncurses5 "\ | ||||
| "perl-base "\ | ||||
| "debconf libdebconfclient0 "\ | ||||
| "e2fsprogs e2fslibs libfdisk1 "\ | ||||
| "insserv "\ | ||||
| "udev "\ | ||||
| "init-system-helpers "\ | ||||
| "bash "\ | ||||
| "cpio "\ | ||||
| "passwd "\ | ||||
| "libsemanage1 libsemanage-common "\ | ||||
| "libsepol1 "\ | ||||
| "gzip "\ | ||||
| "gnupg "\ | ||||
| "gpgv "\ | ||||
| "hostname "\ | ||||
| "adduser "\ | ||||
| "debian-archive-keyring "\ | ||||
| "libgl1 libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libegl-mesa0 libgles2 "\ | ||||
| "libllvm7 "\ | ||||
| "libx11-data libthai-data "\ | ||||
| "systemd dbus "\ | ||||
|  | ||||
| # Removing unneeded packages | ||||
| for PACKAGE in ${UNNEEDED_PACKAGES} | ||||
| do | ||||
| 	echo "Forcing removal of ${PACKAGE}" | ||||
| 	if ! dpkg --purge --force-remove-essential --force-depends "${PACKAGE}" | ||||
| 	then | ||||
| 		echo "WARNING: ${PACKAGE} isn't installed" | ||||
| 	fi | ||||
| done | ||||
|  | ||||
| # Show what's left package-wise before dropping dpkg itself | ||||
| COLUMNS=300 dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n | ||||
|  | ||||
| # Drop dpkg | ||||
| dpkg --purge --force-remove-essential --force-depends  dpkg | ||||
|  | ||||
| # No apt or dpkg, no need for its configuration archives | ||||
| rm -rf etc/apt | ||||
| rm -rf etc/dpkg | ||||
|  | ||||
| # Drop directories not part of ostree | ||||
| # Note that /var needs to exist as ostree bind mounts the deployment /var over | ||||
| # it | ||||
| rm -rf var/* opt srv share | ||||
|  | ||||
| # ca-certificates are in /etc drop the source | ||||
| rm -rf usr/share/ca-certificates | ||||
|  | ||||
| # No bash, no need for completions | ||||
| rm -rf usr/share/bash-completion | ||||
|  | ||||
| # No zsh, no need for comletions | ||||
| rm -rf usr/share/zsh/vendor-completions | ||||
|  | ||||
| # drop gcc-6 python helpers | ||||
| rm -rf usr/share/gcc-6 | ||||
|  | ||||
| # Drop sysvinit leftovers | ||||
| rm -rf etc/init.d | ||||
| rm -rf etc/rc[0-6S].d | ||||
|  | ||||
| # Drop upstart helpers | ||||
| rm -rf etc/init | ||||
|  | ||||
| # Various xtables helpers | ||||
| rm -rf usr/lib/xtables | ||||
|  | ||||
| # Drop all locales | ||||
| # TODO: only remaining locale is actually "C". Should we really remove it? | ||||
| rm -rf usr/lib/locale/* | ||||
|  | ||||
| # partition helpers | ||||
| rm usr/sbin/*fdisk | ||||
|  | ||||
| # local compiler | ||||
| rm usr/bin/localedef | ||||
|  | ||||
| # Systemd dns resolver | ||||
| find usr etc -name '*systemd-resolve*' -prune -exec rm -r {} \; | ||||
|  | ||||
| # Systemd network configuration | ||||
| find usr etc -name '*networkd*' -prune -exec rm -r {} \; | ||||
|  | ||||
| # systemd ntp client | ||||
| find usr etc -name '*timesyncd*' -prune -exec rm -r {} \; | ||||
|  | ||||
| # systemd hw database manager | ||||
| find usr etc -name '*systemd-hwdb*' -prune -exec rm -r {} \; | ||||
|  | ||||
| # No need for fuse | ||||
| find usr etc -name '*fuse*' -prune -exec rm -r {} \; | ||||
|  | ||||
| # lsb init function leftovers | ||||
| rm -rf usr/lib/lsb | ||||
|  | ||||
| # Only needed when adding libraries | ||||
| rm usr/sbin/ldconfig* | ||||
|  | ||||
| # Games, unused | ||||
| rmdir usr/games | ||||
|  | ||||
| # Remove pam module to authenticate against a DB | ||||
| # plus libdb-5.3.so that is only used by this pam module | ||||
| rm usr/lib/*/security/pam_userdb.so | ||||
| rm usr/lib/*/libdb-5.3.so | ||||
|  | ||||
| # remove NSS support for nis, nisplus and hesiod | ||||
| rm usr/lib/*/libnss_hesiod* | ||||
| rm usr/lib/*/libnss_nis* | ||||
|  | ||||
| rm bin/tar | ||||
| @@ -1 +0,0 @@ | ||||
| u_format_test | ||||
| @@ -1,121 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -e | ||||
| set -o xtrace | ||||
|  | ||||
| ############### Install packages for building | ||||
| apt-get -y install ca-certificates | ||||
| sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list | ||||
| echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list | ||||
| dpkg --add-architecture armhf | ||||
| apt-get update | ||||
| apt-get -y install \ | ||||
| 	bc \ | ||||
| 	bison \ | ||||
| 	bzip2 \ | ||||
| 	ccache \ | ||||
| 	cmake \ | ||||
| 	crossbuild-essential-armhf \ | ||||
| 	curl \ | ||||
| 	flex \ | ||||
| 	g++ \ | ||||
| 	gettext \ | ||||
| 	git \ | ||||
| 	libdrm-dev \ | ||||
| 	libdrm-dev:armhf \ | ||||
| 	libelf-dev \ | ||||
| 	libelf-dev:armhf \ | ||||
| 	libexpat1-dev \ | ||||
| 	libexpat1-dev:armhf \ | ||||
| 	libgbm-dev \ | ||||
| 	libgles2-mesa-dev \ | ||||
| 	libpng-dev \ | ||||
| 	libssl-dev \ | ||||
| 	llvm-7-dev:armhf \ | ||||
| 	llvm-8-dev \ | ||||
| 	meson \ | ||||
| 	ninja-build \ | ||||
| 	pkg-config \ | ||||
| 	procps \ | ||||
| 	python \ | ||||
| 	python3-mako \ | ||||
| 	wget \ | ||||
| 	zlib1g-dev | ||||
|  | ||||
| ############### Generate cross build file for Meson | ||||
|  | ||||
| cross_file="/cross_file-armhf.txt" | ||||
| /usr/share/meson/debcrossgen --arch armhf -o "$cross_file" | ||||
| # Explicitly set ccache path for cross compilers | ||||
| sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file" | ||||
| # Don't need wrapper for armhf executables | ||||
| sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file" | ||||
|  | ||||
| export             LIBDRM_VERSION=libdrm-2.4.99 | ||||
|  | ||||
| ############### Build libdrm | ||||
|  | ||||
| wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2 | ||||
| tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2 | ||||
| cd $LIBDRM_VERSION; meson build/ -Detnaviv=true; ninja -C build/ install; cd .. | ||||
| rm -rf $LIBDRM_VERSION | ||||
|  | ||||
| ############### Build dEQP | ||||
|  | ||||
| git config --global user.email "mesa@example.com" | ||||
| git config --global user.name "Mesa CI" | ||||
| # XXX: Use --depth 1 once we can drop the cherry-picks. | ||||
| git clone \ | ||||
|     https://github.com/KhronosGroup/VK-GL-CTS.git \ | ||||
|     -b opengl-es-cts-3.2.5.1 \ | ||||
|     /VK-GL-CTS | ||||
| cd /VK-GL-CTS | ||||
| # Fix surfaceless build | ||||
| git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670 | ||||
| git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648 | ||||
|  | ||||
| # surfaceless links against libkms and such despite not using it. | ||||
| sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake | ||||
| sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake | ||||
| sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake | ||||
|  | ||||
| # --insecure is due to SSL cert failures hitting sourceforge for zlib and | ||||
| # libpng (sigh).  The archives get their checksums checked anyway, and git | ||||
| # always goes through ssh or https. | ||||
| python3 external/fetch_sources.py --insecure | ||||
|  | ||||
| mkdir -p /deqp | ||||
| cd /deqp | ||||
| cmake -G Ninja \ | ||||
|       -DDEQP_TARGET=surfaceless               \ | ||||
|       -DCMAKE_BUILD_TYPE=Release              \ | ||||
|       /VK-GL-CTS | ||||
| ninja | ||||
|  | ||||
| # Copy out the mustpass lists we want from a bunch of other junk. | ||||
| mkdir /deqp/mustpass | ||||
| for gles in gles2 gles3 gles31; do | ||||
|     cp \ | ||||
|         /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.5.x/$gles-master.txt \ | ||||
|         /deqp/mustpass/$gles-master.txt | ||||
| done | ||||
|  | ||||
| rm -rf /deqp/external | ||||
| rm -rf /deqp/modules/internal | ||||
| rm -rf /deqp/executor | ||||
| rm -rf /deqp/execserver | ||||
| rm -rf /deqp/modules/egl | ||||
| rm -rf /deqp/framework | ||||
| du -sh * | ||||
| rm -rf /VK-GL-CTS | ||||
|  | ||||
| ############### Uninstall the build software | ||||
|  | ||||
| apt-get purge -y \ | ||||
|         cmake \ | ||||
|         git \ | ||||
|         libgbm-dev \ | ||||
|         libgles2-mesa-dev \ | ||||
|         wget | ||||
|  | ||||
| apt-get autoremove -y --purge | ||||
| @@ -1,285 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -e | ||||
| set -o xtrace | ||||
|  | ||||
| export DEBIAN_FRONTEND=noninteractive | ||||
|  | ||||
| CROSS_ARCHITECTURES="i386" | ||||
| for arch in $CROSS_ARCHITECTURES; do | ||||
|     dpkg --add-architecture $arch | ||||
| done | ||||
|  | ||||
| apt-get install -y \ | ||||
|       ca-certificates \ | ||||
|       wget \ | ||||
|       unzip | ||||
|  | ||||
| sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list | ||||
| echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list | ||||
|  | ||||
| apt-get update | ||||
|  | ||||
| # Use newer packages from backports by default | ||||
| cat >/etc/apt/preferences <<EOF | ||||
| Package: * | ||||
| Pin: release a=buster-backports | ||||
| Pin-Priority: 500 | ||||
| EOF | ||||
|  | ||||
| apt-get dist-upgrade -y | ||||
|  | ||||
| apt-get install -y --no-remove \ | ||||
|       llvm-6.0-dev \ | ||||
|       libclang-6.0-dev \ | ||||
|       llvm-7-dev \ | ||||
|       libclang-7-dev \ | ||||
|       llvm-8-dev \ | ||||
|       libclang-8-dev \ | ||||
|       g++ \ | ||||
|       clang-8 \ | ||||
|       git \ | ||||
|       bzip2 \ | ||||
|       zlib1g-dev \ | ||||
|       pkg-config \ | ||||
|       libxrender-dev \ | ||||
|       libxdamage-dev \ | ||||
|       libxxf86vm-dev \ | ||||
|       gcc \ | ||||
|       git \ | ||||
|       libepoxy-dev \ | ||||
|       libegl1-mesa-dev \ | ||||
|       libgbm-dev \ | ||||
|       libclc-dev \ | ||||
|       libxvmc-dev \ | ||||
|       libomxil-bellagio-dev \ | ||||
|       xz-utils \ | ||||
|       libexpat1-dev \ | ||||
|       libx11-xcb-dev \ | ||||
|       libelf-dev \ | ||||
|       libunwind-dev \ | ||||
|       libglvnd-dev \ | ||||
|       libgtk-3-dev \ | ||||
|       libpng-dev \ | ||||
|       libgbm-dev \ | ||||
|       libgles2-mesa-dev \ | ||||
|       libvulkan-dev \ | ||||
|       python-mako \ | ||||
|       python3-mako \ | ||||
|       bison \ | ||||
|       flex \ | ||||
|       gettext \ | ||||
|       cmake \ | ||||
|       meson \ | ||||
|       scons | ||||
|  | ||||
| # Cross-build Mesa deps | ||||
| for arch in $CROSS_ARCHITECTURES; do | ||||
|     apt-get install -y --no-remove \ | ||||
|             libdrm-dev:${arch} \ | ||||
|             libexpat1-dev:${arch} \ | ||||
|             libelf-dev:${arch} \ | ||||
|             crossbuild-essential-${arch} | ||||
| done | ||||
|  | ||||
| # for 64bit windows cross-builds | ||||
| apt-get install -y --no-remove \ | ||||
|     mingw-w64 \ | ||||
|     libz-mingw-w64-dev \ | ||||
|     wine \ | ||||
|     wine32 \ | ||||
|     wine64 | ||||
|  | ||||
| # Debian's pkg-config wrapers for mingw are broken, and there's no sign that | ||||
| # they're going to be fixed, so we'll just have to fix it ourselves | ||||
| # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492 | ||||
| cat >/usr/local/bin/x86_64-w64-mingw32-pkg-config <<EOF | ||||
| #!/bin/sh | ||||
|  | ||||
| PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib/pkgconfig pkg-config \$@ | ||||
| EOF | ||||
| chmod +x /usr/local/bin/x86_64-w64-mingw32-pkg-config | ||||
|  | ||||
| # for the vulkan overlay layer | ||||
| wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip | ||||
| unzip glslang-master-linux-Release.zip bin/glslangValidator | ||||
| install -m755 bin/glslangValidator /usr/local/bin/ | ||||
| rm bin/glslangValidator glslang-master-linux-Release.zip | ||||
|  | ||||
|  | ||||
| # dependencies where we want a specific version | ||||
| export              XORG_RELEASES=https://xorg.freedesktop.org/releases/individual | ||||
| export               XCB_RELEASES=https://xcb.freedesktop.org/dist | ||||
| export           WAYLAND_RELEASES=https://wayland.freedesktop.org/releases | ||||
|  | ||||
| export         XORGMACROS_VERSION=util-macros-1.19.0 | ||||
| export            GLPROTO_VERSION=glproto-1.4.17 | ||||
| export          DRI2PROTO_VERSION=dri2proto-2.8 | ||||
| export       LIBPCIACCESS_VERSION=libpciaccess-0.13.4 | ||||
| export             LIBDRM_VERSION=libdrm-2.4.100 | ||||
| export           XCBPROTO_VERSION=xcb-proto-1.13 | ||||
| export         RANDRPROTO_VERSION=randrproto-1.5.0 | ||||
| export          LIBXRANDR_VERSION=libXrandr-1.5.0 | ||||
| export             LIBXCB_VERSION=libxcb-1.13 | ||||
| export       LIBXSHMFENCE_VERSION=libxshmfence-1.3 | ||||
| export           LIBVDPAU_VERSION=libvdpau-1.1 | ||||
| export              LIBVA_VERSION=libva-1.7.0 | ||||
| export         LIBWAYLAND_VERSION=wayland-1.15.0 | ||||
| export  WAYLAND_PROTOCOLS_VERSION=wayland-protocols-1.12 | ||||
|  | ||||
| wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2 | ||||
| tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2 | ||||
| cd $XORGMACROS_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $XORGMACROS_VERSION | ||||
|  | ||||
| wget $XORG_RELEASES/proto/$GLPROTO_VERSION.tar.bz2 | ||||
| tar -xvf $GLPROTO_VERSION.tar.bz2 && rm $GLPROTO_VERSION.tar.bz2 | ||||
| cd $GLPROTO_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $GLPROTO_VERSION | ||||
|  | ||||
| wget $XORG_RELEASES/proto/$DRI2PROTO_VERSION.tar.bz2 | ||||
| tar -xvf $DRI2PROTO_VERSION.tar.bz2 && rm $DRI2PROTO_VERSION.tar.bz2 | ||||
| cd $DRI2PROTO_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $DRI2PROTO_VERSION | ||||
|  | ||||
| wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2 | ||||
| tar -xvf $XCBPROTO_VERSION.tar.bz2 && rm $XCBPROTO_VERSION.tar.bz2 | ||||
| cd $XCBPROTO_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $XCBPROTO_VERSION | ||||
|  | ||||
| wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2 | ||||
| tar -xvf $LIBXCB_VERSION.tar.bz2 && rm $LIBXCB_VERSION.tar.bz2 | ||||
| cd $LIBXCB_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $LIBXCB_VERSION | ||||
|  | ||||
| wget $XORG_RELEASES/lib/$LIBPCIACCESS_VERSION.tar.bz2 | ||||
| tar -xvf $LIBPCIACCESS_VERSION.tar.bz2 && rm $LIBPCIACCESS_VERSION.tar.bz2 | ||||
| cd $LIBPCIACCESS_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $LIBPCIACCESS_VERSION | ||||
|  | ||||
| wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2 | ||||
| tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2 | ||||
| cd $LIBDRM_VERSION; ./configure --enable-vc4 --enable-freedreno --enable-etnaviv-experimental-api; make install; cd .. | ||||
| rm -rf $LIBDRM_VERSION | ||||
|  | ||||
| wget $XORG_RELEASES/proto/$RANDRPROTO_VERSION.tar.bz2 | ||||
| tar -xvf $RANDRPROTO_VERSION.tar.bz2 && rm $RANDRPROTO_VERSION.tar.bz2 | ||||
| cd $RANDRPROTO_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $RANDRPROTO_VERSION | ||||
|  | ||||
| wget $XORG_RELEASES/lib/$LIBXRANDR_VERSION.tar.bz2 | ||||
| tar -xvf $LIBXRANDR_VERSION.tar.bz2 && rm $LIBXRANDR_VERSION.tar.bz2 | ||||
| cd $LIBXRANDR_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $LIBXRANDR_VERSION | ||||
|  | ||||
| wget $XORG_RELEASES/lib/$LIBXSHMFENCE_VERSION.tar.bz2 | ||||
| tar -xvf $LIBXSHMFENCE_VERSION.tar.bz2 && rm $LIBXSHMFENCE_VERSION.tar.bz2 | ||||
| cd $LIBXSHMFENCE_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $LIBXSHMFENCE_VERSION | ||||
|  | ||||
| wget https://people.freedesktop.org/~aplattner/vdpau/$LIBVDPAU_VERSION.tar.bz2 | ||||
| tar -xvf $LIBVDPAU_VERSION.tar.bz2 && rm $LIBVDPAU_VERSION.tar.bz2 | ||||
| cd $LIBVDPAU_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $LIBVDPAU_VERSION | ||||
|  | ||||
| wget https://www.freedesktop.org/software/vaapi/releases/libva/$LIBVA_VERSION.tar.bz2 | ||||
| tar -xvf $LIBVA_VERSION.tar.bz2 && rm $LIBVA_VERSION.tar.bz2 | ||||
| cd $LIBVA_VERSION; ./configure --disable-wayland --disable-dummy-driver; make install; cd .. | ||||
| rm -rf $LIBVA_VERSION | ||||
|  | ||||
| wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz | ||||
| tar -xvf $LIBWAYLAND_VERSION.tar.xz && rm $LIBWAYLAND_VERSION.tar.xz | ||||
| cd $LIBWAYLAND_VERSION; ./configure --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make install; cd .. | ||||
| rm -rf $LIBWAYLAND_VERSION | ||||
|  | ||||
| wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz | ||||
| tar -xvf $WAYLAND_PROTOCOLS_VERSION.tar.xz && rm $WAYLAND_PROTOCOLS_VERSION.tar.xz | ||||
| cd $WAYLAND_PROTOCOLS_VERSION; ./configure; make install; cd .. | ||||
| rm -rf $WAYLAND_PROTOCOLS_VERSION | ||||
|  | ||||
| pushd /usr/local | ||||
| git clone https://gitlab.freedesktop.org/mesa/shader-db.git --depth 1 | ||||
| rm -rf shader-db/.git | ||||
| cd shader-db | ||||
| make | ||||
| popd | ||||
|  | ||||
| # Use ccache to speed up builds | ||||
| apt-get install -y --no-remove ccache | ||||
|  | ||||
| # We need xmllint to validate the XML files in Mesa | ||||
| apt-get install -y --no-remove libxml2-utils | ||||
|  | ||||
|  | ||||
| # Generate cross build files for Meson | ||||
| for arch in $CROSS_ARCHITECTURES; do | ||||
|   cross_file="/cross_file-$arch.txt" | ||||
|   /usr/share/meson/debcrossgen --arch "$arch" -o "$cross_file" | ||||
|   # Explicitly set ccache path for cross compilers | ||||
|   sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file" | ||||
|   if [ "$arch" = "i386" ]; then | ||||
|     # Work around a bug in debcrossgen that should be fixed in the next release | ||||
|     sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$cross_file" | ||||
|     # Don't need wrapper for i386 executables | ||||
|     sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file" | ||||
|   fi | ||||
| done | ||||
|  | ||||
|  | ||||
| ############### Build dEQP | ||||
| git config --global user.email "mesa@example.com" | ||||
| git config --global user.name "Mesa CI" | ||||
| # XXX: Use --depth 1 once we can drop the cherry-picks. | ||||
| git clone \ | ||||
|     https://github.com/KhronosGroup/VK-GL-CTS.git \ | ||||
|     -b opengl-es-cts-3.2.5.1 \ | ||||
|     /VK-GL-CTS | ||||
| cd /VK-GL-CTS | ||||
| # Fix surfaceless build | ||||
| git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670 | ||||
| git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648 | ||||
|  | ||||
| # surfaceless links against libkms and such despite not using it. | ||||
| sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake | ||||
| sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake | ||||
| sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake | ||||
|  | ||||
| python3 external/fetch_sources.py | ||||
|  | ||||
| mkdir -p /deqp | ||||
| cd /deqp | ||||
| cmake -G Ninja \ | ||||
|       -DDEQP_TARGET=surfaceless               \ | ||||
|       -DCMAKE_BUILD_TYPE=Release              \ | ||||
|       /VK-GL-CTS | ||||
| ninja | ||||
|  | ||||
| # Copy out the mustpass lists we want from a bunch of other junk. | ||||
| mkdir /deqp/mustpass | ||||
| for gles in gles2 gles3 gles31; do | ||||
|     cp \ | ||||
|         /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.5.x/$gles-master.txt \ | ||||
|         /deqp/mustpass/$gles-master.txt | ||||
| done | ||||
|  | ||||
| # Remove the rest of the build products that we don't need. | ||||
| rm -rf /deqp/external | ||||
| rm -rf /deqp/modules/internal | ||||
| rm -rf /deqp/executor | ||||
| rm -rf /deqp/execserver | ||||
| rm -rf /deqp/modules/egl | ||||
| rm -rf /deqp/framework | ||||
| du -sh * | ||||
| rm -rf /VK-GL-CTS | ||||
|  | ||||
| ############### Uninstall the build software | ||||
|  | ||||
| apt-get purge -y \ | ||||
|       wget \ | ||||
|       unzip \ | ||||
|       cmake \ | ||||
|       git \ | ||||
|       libgles2-mesa-dev \ | ||||
|       libgbm-dev | ||||
|  | ||||
| apt-get autoremove -y --purge | ||||
| @@ -1,59 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -e | ||||
| set -o xtrace | ||||
|  | ||||
| export DEBIAN_FRONTEND=noninteractive | ||||
|  | ||||
| apt-get install -y \ | ||||
|       apt-transport-https \ | ||||
|       ca-certificates | ||||
|  | ||||
| sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list | ||||
| echo 'deb https://deb.debian.org/debian stretch-backports main' >/etc/apt/sources.list.d/backports.list | ||||
|  | ||||
| apt-get update | ||||
|  | ||||
| # Use newer packages from backports by default | ||||
| cat >/etc/apt/preferences <<EOF | ||||
| Package: * | ||||
| Pin: release a=stretch-backports | ||||
| Pin-Priority: 500 | ||||
| EOF | ||||
|  | ||||
| apt-get dist-upgrade -y | ||||
|  | ||||
| apt-get install -y --no-remove \ | ||||
|       llvm-3.9-dev \ | ||||
|       libclang-3.9-dev \ | ||||
|       llvm-4.0-dev \ | ||||
|       libclang-4.0-dev \ | ||||
|       llvm-5.0-dev \ | ||||
|       libclang-5.0-dev \ | ||||
|       g++ \ | ||||
|       bzip2 \ | ||||
|       ccache \ | ||||
|       zlib1g-dev \ | ||||
|       pkg-config \ | ||||
|       gcc \ | ||||
|       git \ | ||||
|       libepoxy-dev \ | ||||
|       libclc-dev \ | ||||
|       xz-utils \ | ||||
|       libdrm-dev \ | ||||
|       libexpat1-dev \ | ||||
|       libelf-dev \ | ||||
|       libunwind-dev \ | ||||
|       libpng-dev \ | ||||
|       python-mako \ | ||||
|       python3-mako \ | ||||
|       bison \ | ||||
|       flex \ | ||||
|       gettext \ | ||||
|       scons \ | ||||
|       meson | ||||
|  | ||||
|  | ||||
| ############### Uninstall unused packages | ||||
|  | ||||
| apt-get autoremove -y --purge | ||||
| @@ -1,10 +0,0 @@ | ||||
| # Note: skips lists for CI are just a list of lines that, when | ||||
| # non-zero-length and not starting with '#', will regex match to | ||||
| # delete lines from the test list.  Be careful. | ||||
|  | ||||
| # Skip the perf/stress tests to keep runtime manageable | ||||
| dEQP-GLES[0-9]*.performance | ||||
| dEQP-GLES[0-9]*.stress | ||||
|  | ||||
| # These are really slow on tiling architectures (including llvmpipe). | ||||
| dEQP-GLES[0-9]*.functional.flush_finish | ||||
| @@ -1,33 +0,0 @@ | ||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center | ||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner | ||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip | ||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center | ||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner | ||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z | ||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgb565_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgb5_a1_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_tex2d_rgba_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_tex2d_rgb_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgb565_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgb5_a1_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_tex2d_rgba_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_tex2d_rgb_stencil_index8 | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_l8_npot | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgb888_npot | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba4444_npot | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba8888_npot | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_l8_npot | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgb888_npot | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgba4444_npot | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgba8888_npot | ||||
| dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_l8_npot | ||||
| dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgb888_npot | ||||
| dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba4444_npot | ||||
| dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba8888_npot | ||||
| dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_l8_npot | ||||
| dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgb888_npot | ||||
| dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgba4444_npot | ||||
| dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgba8888_npot | ||||
| @@ -1,3 +0,0 @@ | ||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z | ||||
| dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_clear | ||||
| dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw | ||||
| @@ -1,29 +0,0 @@ | ||||
| # Note: skips lists for CI are just a list of lines that, when | ||||
| # non-zero-length and not starting with '#', will regex match to | ||||
| # delete lines from the test list.  Be careful. | ||||
|  | ||||
| # Skip the perf/stress tests to keep runtime manageable | ||||
| dEQP-GLES[0-9]*.performance | ||||
| dEQP-GLES[0-9]*.stress | ||||
|  | ||||
| # These are really slow on tiling architectures (including llvmpipe). | ||||
| dEQP-GLES[0-9]*.functional.flush_finish | ||||
|  | ||||
| # Unstable test results | ||||
| dEQP-GLES3.functional.fragment_out.random.* | ||||
| dEQP-GLES3.functional.transform_feedback.* | ||||
| dEQP-GLES31.functional.primitive_bounding_box.* | ||||
| dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_array | ||||
|  | ||||
| # Seen a couple flakes on this one.  Note that valgrind complains about | ||||
| # some things in deqp reference renderer on this one.  Not sure if that | ||||
| # is a real problem or perhaps valgrind gets confused about unitialized | ||||
| # z24 channel in z24s8??  Let's just skip this one for now: | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8 | ||||
|  | ||||
| # Two reports of spurious failures on unrelated MRs (2019-09-27, 2019-10-05) | ||||
| dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo.r16ui_2d | ||||
|  | ||||
| # Layered rendering is sysmem only and needs working clears | ||||
| dEQP-GLES31.functional.geometry_shading.layered.* | ||||
| dEQP-GLES31.functional.geometry_shading.instanced.*layer.* | ||||
| @@ -1,982 +0,0 @@ | ||||
| dEQP-GLES2.functional.depth_stencil_clear.stencil Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.stencil_masked Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.stencil_scissored Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.stencil_scissored_masked Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored_masked Fail | ||||
| dEQP-GLES2.functional.buffer.write.use.index_array.array Fail | ||||
| dEQP-GLES2.functional.buffer.write.use.index_array.element_array Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_float2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_float2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_12_float3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_12_float3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_16_float4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_16_float4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_4_short2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_4_short2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_6_short3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_6_short3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_short4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_short4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_2_byte2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_3_byte3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_3_byte3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_4_byte4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_4_byte4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_fixed2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_8_fixed2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_12_fixed3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_12_fixed3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_16_fixed4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_16_fixed4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_fixed4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float2_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float2_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float3_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float3_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float4_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_float4_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short2_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short2_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short3_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short3_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short4_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_short4_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte2_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte2_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte3_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte3_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte4_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_byte4_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_short2_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_short3_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_short4_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_short4_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte2_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte2_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte3_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte3_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte4_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_unsigned_byte4_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed2_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed2_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed3_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed3_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed4_normalized_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.normalize.user_ptr_0_0_fixed4_normalized_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float4_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float4_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float4_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float4_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_float4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_short4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte3_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte3_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte3_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte3_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_byte4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short4_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short4_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short4_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_short4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_unsigned_byte4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec3_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec3_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed2_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed3_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec4_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.output_types.user_ptr_0_0_fixed4_vec4_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_float2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_float2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_fixed2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_8_fixed2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_fixed2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_4_short2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_static_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_stream_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_2_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_static_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_stream_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_8_float2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_float2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_8_float2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_float2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_8_float2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_float2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_8_float2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_float2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_2_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_17_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_32_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_2_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_17_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_32_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_2_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_17_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_2_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_17_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_2_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_17_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_32_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_2_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_17_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_32_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_2_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_17_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_byte2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_2_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_17_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_byte2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_8_fixed2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_fixed2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_8_fixed2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_fixed2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_8_fixed2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_fixed2_vec2_dynamic_draw_quads_1 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_8_fixed2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_fixed2_vec2_dynamic_draw_quads_256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first6_offset16_stride8_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first24_offset16_stride8_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first6_offset16_stride32_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first24_offset16_stride32_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first6_offset16_stride8_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first24_offset16_stride8_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first6_offset16_stride32_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first24_offset16_stride32_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride2_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride2_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride17_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride17_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride32_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride32_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride2_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride2_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride17_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride17_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset1_stride32_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset1_stride32_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride2_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride2_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride17_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride17_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride32_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride32_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride2_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride2_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride17_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride17_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset16_stride32_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset16_stride32_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride2_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride2_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride17_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride17_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride32_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride32_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride2_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride2_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride17_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride17_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first6_offset17_stride32_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first24_offset17_stride32_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first6_offset16_stride8_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first24_offset16_stride8_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first6_offset16_stride32_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first24_offset16_stride32_quads5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first6_offset16_stride8_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first24_offset16_stride8_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first6_offset16_stride32_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.single_attribute.first.fixed_first24_offset16_stride32_quads256 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.3 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.4 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.5 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.6 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.7 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.attribute_count.8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_user_ptr_user_ptr_buffer Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_user_ptr_buffer_user_ptr Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_user_ptr_buffer_buffer Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_buffer_user_ptr_user_ptr Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_buffer_user_ptr_buffer Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_buffer_buffer_user_ptr Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.storage.3_buffer_buffer_buffer Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_0_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_0_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_0_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_0_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_8_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_8_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_8_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_8_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_17_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_17_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_17_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_17_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_32_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_32_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_32_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_0_float2_32_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_0_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_0_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_0_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_0_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_8_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_8_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_8_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_8_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_17_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_17_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_17_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_17_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_32_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_32_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_32_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_8_float2_32_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_0_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_0_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_0_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_0_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_8_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_8_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_8_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_8_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_17_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_17_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_17_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_17_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_32_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_32_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_32_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_17_float2_32_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_0_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_0_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_0_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_0_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_8_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_8_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_8_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_8_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_17_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_17_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_17_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_17_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_32_float2_0 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_32_float2_8 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_32_float2_17 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.stride.3_float2_32_float2_32_float2_32 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_fixed2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_fixed2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_fixed2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_fixed2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_fixed2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_byte2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_byte2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_byte2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_byte2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_byte2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_short2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_short2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_short2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_short2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_short2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_byte2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_byte2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_byte2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_short2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_short2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_short2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_fixed2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_fixed2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_fixed2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_fixed2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_fixed2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_fixed2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_byte2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_byte2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_byte2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_byte2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_byte2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_short2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_short2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_short2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_short2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_short2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_byte2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_byte2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_byte2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_short2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_short2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_short2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_byte2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_fixed2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_fixed2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_fixed2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_fixed2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_fixed2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_byte2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_byte2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_byte2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_byte2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_byte2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_short2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_short2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_short2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_short2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_short2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_byte2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_byte2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_byte2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_short2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_short2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_short2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_short2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_fixed2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_fixed2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_fixed2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_fixed2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_fixed2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_byte2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_byte2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_byte2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_byte2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_byte2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_short2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_short2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_short2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_short2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_short2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_byte2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_byte2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_byte2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_short2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_short2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_short2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_byte2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_fixed2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_fixed2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_fixed2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_fixed2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_fixed2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_byte2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_byte2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_byte2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_byte2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_byte2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_short2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_short2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_short2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_short2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_short2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_byte2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_byte2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_byte2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_fixed2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail | ||||
| dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail | ||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_width_height_max_cube_neg_z BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_tex2d BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_x BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_y BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_z BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_x BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_y BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_z BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copyteximage2d_incomplete_framebuffer BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_invalid_target BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_level_tex2d BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_level_cube BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_level_max_tex2d BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_level_max_cube_pos BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_offset BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_offset_allowed BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_wdt_hgt BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_incomplete_framebuffer BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.deletetextures_invalid_number BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.deletetextures_invalid_number_bind BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.generatemipmap_invalid_target BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.generatemipmap_npot_wdt_hgt BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.generatemipmap_zero_level_array_compressed BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.generatemipmap_incomplete_cube BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.gentextures_invalid_size BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.pixelstorei_invalid_pname BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.pixelstorei_invalid_param BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_target BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_format BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_type BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_inequal_width_height_cube BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_neg_level_tex2d BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_width_height_max_cube_neg_y BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_width_height_max_cube_neg_z BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_border BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_format_mismatch BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.teximage2d_type_format_mismatch BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_target BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_format BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_type BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_level_tex2d BadTerminatePass | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_level_cube BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_level_max_tex2d BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_level_max_cube BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_offset BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_offset_allowed BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_wdt_hgt BadTerminate | ||||
| dEQP-GLES2.functional.negative_api.texture.texsubimage2d_type_format_mismatch BadTerminate | ||||
| dEQP-GLES2.functional.rasterization.primitives.triangles Fail | ||||
| dEQP-GLES2.functional.rasterization.primitives.triangle_strip Fail | ||||
| dEQP-GLES2.functional.rasterization.primitives.triangle_fan Fail | ||||
| dEQP-GLES2.functional.rasterization.primitives.lines Fail | ||||
| dEQP-GLES2.functional.rasterization.primitives.line_strip Fail | ||||
| dEQP-GLES2.functional.rasterization.primitives.line_loop Fail | ||||
| dEQP-GLES2.functional.rasterization.primitives.lines_wide Fail | ||||
| dEQP-GLES2.functional.rasterization.primitives.line_strip_wide Fail | ||||
| dEQP-GLES2.functional.rasterization.primitives.line_loop_wide Fail | ||||
| dEQP-GLES2.functional.rasterization.primitives.points Fail | ||||
| dEQP-GLES2.functional.rasterization.fill_rules.basic_quad Fail | ||||
| dEQP-GLES2.functional.rasterization.fill_rules.basic_quad_reverse Fail | ||||
| dEQP-GLES2.functional.rasterization.fill_rules.clipped_full Fail | ||||
| dEQP-GLES2.functional.rasterization.fill_rules.clipped_partly Fail | ||||
| dEQP-GLES2.functional.rasterization.fill_rules.projected Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.front_triangles Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.front_triangles_reverse Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.front_triangle_strip Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.front_triangle_strip_reverse Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.front_triangle_fan Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.front_triangle_fan_reverse Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.back_triangles Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.back_triangles_reverse Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.back_triangle_strip Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.back_triangle_strip_reverse Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.back_triangle_fan Fail | ||||
| dEQP-GLES2.functional.rasterization.culling.back_triangle_fan_reverse Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.triangles Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.triangle_strip Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.triangle_fan Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.lines Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.triangles Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.triangle_strip Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.triangle_fan Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.lines Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide Fail | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide Fail | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec2_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec3_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec3_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec3_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec4_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.float_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.float_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.float_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bool_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bool_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec2_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec2_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec2_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec3_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec3_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec3_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec4_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.int_ivec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.int_ivec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.bool_bvec4_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.bool_bvec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.bool_bvec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.int_ivec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.int_ivec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.int_ivec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.bool_bvec4_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.bool_bvec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.bool_bvec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.mat4_mat2_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.mat4_mat2_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.mat4_mat2_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic.float_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic.float_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec3_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec4_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.float_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.float_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.float_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.float_vec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.float_vec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.int_ivec4_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.int_ivec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.int_ivec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.bool_bvec4_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.bool_bvec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.bool_bvec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.int_ivec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.int_ivec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.int_ivec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.bool_bvec4_vertex BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.bool_bvec4_fragment BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.bool_bvec4_both BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_fragment BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_both BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.multiple_basic_array.vertex BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.40 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.41 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.42 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.43 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.44 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.45 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.46 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.47 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.48 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.49 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.50 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.51 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.52 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.53 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.54 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.55 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.88 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.89 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.90 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.91 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.92 BadTerminatePass | ||||
| dEQP-GLES2.functional.uniform_api.random.93 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.94 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.95 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.96 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.97 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.98 BadTerminate | ||||
| dEQP-GLES2.functional.uniform_api.random.99 BadTerminate | ||||
| dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_1 BadTerminate | ||||
| dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_2 BadTerminate | ||||
| dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_4 BadTerminate | ||||
| dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_8 BadTerminate | ||||
| dEQP-GLES2.functional.depth_range.write.reverse Fail | ||||
| dEQP-GLES2.functional.depth_range.write.half_to_zero Fail | ||||
| dEQP-GLES2.functional.depth_range.write.one_to_half Fail | ||||
| dEQP-GLES2.functional.depth_range.write.0_8_to_third Fail | ||||
| dEQP-GLES2.functional.depth_range.write.half_to_half Fail | ||||
| dEQP-GLES2.functional.depth_range.compare.reverse Fail | ||||
| dEQP-GLES2.functional.depth_range.compare.half_to_zero Fail | ||||
| dEQP-GLES2.functional.depth_range.compare.one_to_half Fail | ||||
| dEQP-GLES2.functional.depth_range.compare.0_8_to_third Fail | ||||
| dEQP-GLES2.functional.depth_range.compare.half_to_half Fail | ||||
| dEQP-GLES2.functional.dither.disabled.gradient_white Fail | ||||
| dEQP-GLES2.functional.dither.disabled.gradient_red Fail | ||||
| dEQP-GLES2.functional.dither.disabled.gradient_green Fail | ||||
| dEQP-GLES2.functional.dither.disabled.gradient_blue Fail | ||||
| dEQP-GLES2.functional.dither.disabled.gradient_alpha Fail | ||||
| dEQP-GLES2.functional.dither.disabled.unicolored_quad_white Fail | ||||
| dEQP-GLES2.functional.dither.disabled.unicolored_quad_red Fail | ||||
| dEQP-GLES2.functional.dither.disabled.unicolored_quad_green Fail | ||||
| dEQP-GLES2.functional.dither.disabled.unicolored_quad_blue Fail | ||||
| dEQP-GLES2.functional.dither.disabled.unicolored_quad_alpha Fail | ||||
| dEQP-GLES2.functional.state_query.fbo.framebuffer_attachment_texture_cube_map_face BadTerminate | ||||
| dEQP-GLES2.functional.state_query.rbo.renderbuffer_size BadTerminate | ||||
| dEQP-GLES2.functional.state_query.rbo.renderbuffer_internal_format BadTerminate | ||||
| dEQP-GLES2.functional.state_query.rbo.renderbuffer_component_size_color BadTerminate | ||||
| dEQP-GLES2.functional.draw.draw_arrays.first.first_0 Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.first.first_1 Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.first.first_17 Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.points.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.points.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.points.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.triangles.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.triangles.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.triangles.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_fan.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_fan.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_fan.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_strip.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_strip.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.triangle_strip.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.lines.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.lines.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.lines.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.line_strip.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.line_strip.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.line_strip.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.line_loop.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.line_loop.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_arrays.line_loop.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.indices.user_ptr.index_byte Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.indices.user_ptr.index_short Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.indices.unaligned_user_ptr.index_short Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.indices.buffer.index_byte Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.indices.buffer.index_short Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.points.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.points.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.points.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.triangles.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.triangles.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.triangles.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_fan.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_fan.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_fan.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_strip.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_strip.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.triangle_strip.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.lines.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.lines.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.lines.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.line_strip.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.line_strip.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.line_strip.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.line_loop.single_attribute Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.line_loop.multiple_attributes Fail | ||||
| dEQP-GLES2.functional.draw.draw_elements.line_loop.default_attribute Fail | ||||
| dEQP-GLES2.functional.draw.random.0 Fail | ||||
| dEQP-GLES2.functional.draw.random.1 Fail | ||||
| dEQP-GLES2.functional.draw.random.2 Fail | ||||
| dEQP-GLES2.functional.draw.random.6 Fail | ||||
| dEQP-GLES2.functional.draw.random.8 Fail | ||||
| dEQP-GLES2.functional.draw.random.9 Fail | ||||
| dEQP-GLES2.functional.draw.random.10 Fail | ||||
| dEQP-GLES2.functional.draw.random.12 Fail | ||||
| dEQP-GLES2.functional.draw.random.14 Fail | ||||
| dEQP-GLES2.functional.draw.random.16 Fail | ||||
| dEQP-GLES2.functional.draw.random.17 Fail | ||||
| dEQP-GLES2.functional.draw.random.18 Fail | ||||
| dEQP-GLES2.functional.draw.random.20 Fail | ||||
| dEQP-GLES2.functional.draw.random.21 Fail | ||||
| dEQP-GLES2.functional.draw.random.25 Fail | ||||
| dEQP-GLES2.functional.draw.random.26 Fail | ||||
| dEQP-GLES2.functional.draw.random.28 Fail | ||||
| dEQP-GLES2.functional.draw.random.30 Fail | ||||
| dEQP-GLES2.functional.draw.random.31 Fail | ||||
| dEQP-GLES2.functional.draw.random.32 Fail | ||||
| dEQP-GLES2.functional.draw.random.33 Fail | ||||
| dEQP-GLES2.functional.draw.random.34 Fail | ||||
| dEQP-GLES2.functional.draw.random.36 Fail | ||||
| dEQP-GLES2.functional.draw.random.37 Fail | ||||
| dEQP-GLES2.functional.draw.random.39 Fail | ||||
| dEQP-GLES2.functional.draw.random.40 Fail | ||||
| dEQP-GLES2.functional.draw.random.41 Fail | ||||
| dEQP-GLES2.functional.draw.random.42 Fail | ||||
| dEQP-GLES2.functional.draw.random.43 Fail | ||||
| dEQP-GLES2.functional.draw.random.44 Fail | ||||
| dEQP-GLES2.functional.draw.random.45 Fail | ||||
| dEQP-GLES2.functional.draw.random.46 Fail | ||||
| dEQP-GLES2.functional.draw.random.47 Fail | ||||
| dEQP-GLES2.functional.draw.random.48 Fail | ||||
| dEQP-GLES2.functional.draw.random.49 Fail | ||||
| dEQP-GLES2.functional.draw.random.50 Fail | ||||
| dEQP-GLES2.functional.draw.random.51 Fail | ||||
| dEQP-GLES2.functional.draw.random.52 Fail | ||||
| dEQP-GLES2.functional.draw.random.56 Fail | ||||
| dEQP-GLES2.functional.draw.random.58 Fail | ||||
| dEQP-GLES2.functional.draw.random.61 Fail | ||||
| dEQP-GLES2.functional.draw.random.62 Fail | ||||
| dEQP-GLES2.functional.draw.random.63 Fail | ||||
| dEQP-GLES2.functional.draw.random.65 Fail | ||||
| dEQP-GLES2.functional.draw.random.67 Fail | ||||
| dEQP-GLES2.functional.draw.random.69 Fail | ||||
| dEQP-GLES2.functional.draw.random.70 Fail | ||||
| dEQP-GLES2.functional.draw.random.71 Fail | ||||
| @@ -1,21 +0,0 @@ | ||||
| # Note: skips lists for CI are just a list of lines that, when | ||||
| # non-zero-length and not starting with '#', will regex match to | ||||
| # delete lines from the test list.  Be careful. | ||||
|  | ||||
| # Skip the perf/stress tests to keep runtime manageable | ||||
| dEQP-GLES[0-9]*.performance | ||||
| dEQP-GLES[0-9]*.stress | ||||
|  | ||||
| # These are really slow on tiling architectures (including llvmpipe). | ||||
| dEQP-GLES[0-9]*.functional.flush_finish | ||||
|  | ||||
| dEQP-GLES2.accuracy.texture.* | ||||
| dEQP-GLES2.functional.clipping.* | ||||
| dEQP-GLES2.functional.fbo.render.depth.* | ||||
| dEQP-GLES2.functional.fbo.render.* | ||||
| dEQP-GLES2.functional.fbo.completeness.* | ||||
| dEQP-GLES2.functional.fragment_ops.* | ||||
| dEQP-GLES2.functional.light_amount.* | ||||
| dEQP-GLES2.functional.polygon_offset.* | ||||
| dEQP-GLES2.functional.shaders.* | ||||
| dEQP-GLES2.functional.texture.* | ||||
| @@ -1,124 +0,0 @@ | ||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center | ||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner | ||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip | ||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center | ||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner | ||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z | ||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.depth.rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.no_rebind_rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.polygon_offset.default_displacement_with_units | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide | ||||
| dEQP-GLES2.functional.rasterization.limits.points | ||||
| dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2d_bias | ||||
| dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec3_bias | ||||
| dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec4_bias | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_clamp_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_etc1 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_repeat_etc1 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_repeat_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_clamp_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_etc1 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_etc1 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_l8 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgb888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgba4444 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_clamp_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_mirror_etc1 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_mirror_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_repeat_etc1 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_repeat_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_clamp_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_mirror_etc1 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_mirror_rgba8888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_etc1 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_l8 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgb888 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgba4444 | ||||
| dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgba8888 | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.affine.linear_linear_repeat | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_clamp | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_mirror | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_repeat | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.linear_linear_repeat | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.linear_linear_repeat_non_square | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_clamp | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_clamp_non_square | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_mirror | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_mirror_non_square | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_repeat | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_repeat_non_square | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.projected.linear_linear_repeat | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_clamp | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_mirror | ||||
| dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_repeat | ||||
| dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear | ||||
| dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest | ||||
| dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear | ||||
| dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest | ||||
| dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear | ||||
| dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat | ||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_clamp | ||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_mirror | ||||
| dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_repeat | ||||
| @@ -1,728 +0,0 @@ | ||||
| dEQP-GLES2.functional.depth_range.write.0_8_to_third Fail | ||||
| dEQP-GLES2.functional.depth_range.write.clamp_both Fail | ||||
| dEQP-GLES2.functional.depth_range.write.clamp_far Fail | ||||
| dEQP-GLES2.functional.depth_range.write.clamp_near Fail | ||||
| dEQP-GLES2.functional.depth_range.write.default Fail | ||||
| dEQP-GLES2.functional.depth_range.write.half_to_half Fail | ||||
| dEQP-GLES2.functional.depth_range.write.half_to_one Fail | ||||
| dEQP-GLES2.functional.depth_range.write.half_to_zero Fail | ||||
| dEQP-GLES2.functional.depth_range.write.one_to_half Fail | ||||
| dEQP-GLES2.functional.depth_range.write.one_to_one Fail | ||||
| dEQP-GLES2.functional.depth_range.write.reverse Fail | ||||
| dEQP-GLES2.functional.depth_range.write.third_to_0_8 Fail | ||||
| dEQP-GLES2.functional.depth_range.write.zero_to_half Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_scissored Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_scissored_masked Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored_masked Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_dst_color_one_minus_src_color Fail | ||||
| dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_zero_dst_alpha Fail | ||||
| dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_zero_dst_color Fail | ||||
| dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_zero_one Fail | ||||
| dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.dst.one_minus_src_color_one_minus_src_alpha Fail | ||||
| dEQP-GLES2.functional.fragment_ops.blend.rgb_func_alpha_func.dst.one_minus_src_color_one_minus_src_color Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.0 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.10 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.11 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.12 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.13 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.14 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.15 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.16 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.17 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.18 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.19 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.1 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.20 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.21 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.22 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.23 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.24 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.2 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.3 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.4 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.5 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.6 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.7 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.8 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.9 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.both Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.stencil Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.11 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.13 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.15 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.17 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.18 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.19 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.20 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.22 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.26 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.39 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.42 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.44 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.47 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.48 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.57 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.60 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.61 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.64 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.68 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.72 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.75 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.77 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.79 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.8 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.93 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.98 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.0 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.11 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.19 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.24 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.25 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.32 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.37 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.3 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.45 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.48 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.53 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.56 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.63 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.65 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.66 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.67 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.68 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.6 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.72 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.75 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.81 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.87 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.94 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.96 Fail | ||||
| dEQP-GLES2.functional.polygon_offset.default_render_with_units Fail | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope Fail | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units Fail | ||||
| dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_fragment Fail | ||||
| dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_vertex Fail | ||||
| @@ -1,63 +0,0 @@ | ||||
| # Note: skips lists for CI are just a list of lines that, when | ||||
| # non-zero-length and not starting with '#', will regex match to | ||||
| # delete lines from the test list.  Be careful. | ||||
|  | ||||
| # Skip the perf/stress tests to keep runtime manageable | ||||
| dEQP-GLES[0-9]*.performance | ||||
| dEQP-GLES[0-9]*.stress | ||||
|  | ||||
| # These are really slow on tiling architectures (including llvmpipe). | ||||
| dEQP-GLES[0-9]*.functional.flush_finish | ||||
|  | ||||
| dEQP-GLES2.functional.fbo.render.depth.* | ||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z | ||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_pos_y_pos_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.* | ||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.* | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgb5_a1 | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgb | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgba | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1 | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.stencil_clear.rbo_rgb5_a1_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgb5_a1_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.stencil.rbo_rgb5_a1_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.stencil.rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.lifetime.attach.deleted_input.renderbuffer_framebuffer | ||||
| dEQP-GLES2.functional.lifetime.attach.deleted_output.renderbuffer_framebuffer | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_0_slope | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope | ||||
| dEQP-GLES2.functional.shaders.invariance.highp.loop_4 | ||||
| dEQP-GLES2.functional.shaders.matrix.mul.dynamic_highp_mat4_vec4_vertex | ||||
| dEQP-GLES2.functional.shaders.matrix.mul.dynamic_highp_vec4_mat4_fragment | ||||
| dEQP-GLES2.functional.shaders.operator.common_functions.smoothstep.mediump_vec3_vertex | ||||
| dEQP-GLES2.functional.shaders.random.all_features.fragment.12 | ||||
| dEQP-GLES2.functional.shaders.random.all_features.fragment.37 | ||||
| dEQP-GLES2.functional.texture.units.2_units.mixed.1 | ||||
| dEQP-GLES2.functional.texture.units.2_units.mixed.3 | ||||
| dEQP-GLES2.functional.texture.units.2_units.only_2d.2 | ||||
| dEQP-GLES2.functional.texture.units.4_units.mixed.5 | ||||
| dEQP-GLES2.functional.texture.units.4_units.only_2d.0 | ||||
| dEQP-GLES2.functional.texture.units.8_units.only_cube.2 | ||||
| dEQP-GLES2.functional.texture.units.all_units.mixed.6 | ||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.4 | ||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.7 | ||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.8 | ||||
|  | ||||
| @@ -1,722 +0,0 @@ | ||||
| dEQP-GLES2.functional.depth_range.write.0_8_to_third Fail | ||||
| dEQP-GLES2.functional.depth_range.write.clamp_both Fail | ||||
| dEQP-GLES2.functional.depth_range.write.clamp_far Fail | ||||
| dEQP-GLES2.functional.depth_range.write.clamp_near Fail | ||||
| dEQP-GLES2.functional.depth_range.write.default Fail | ||||
| dEQP-GLES2.functional.depth_range.write.half_to_half Fail | ||||
| dEQP-GLES2.functional.depth_range.write.half_to_one Fail | ||||
| dEQP-GLES2.functional.depth_range.write.half_to_zero Fail | ||||
| dEQP-GLES2.functional.depth_range.write.one_to_half Fail | ||||
| dEQP-GLES2.functional.depth_range.write.one_to_one Fail | ||||
| dEQP-GLES2.functional.depth_range.write.reverse Fail | ||||
| dEQP-GLES2.functional.depth_range.write.third_to_0_8 Fail | ||||
| dEQP-GLES2.functional.depth_range.write.zero_to_half Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_scissored Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_scissored_masked Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored Fail | ||||
| dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_scissored_masked Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.0 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.10 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.11 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.12 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.13 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.14 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.15 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.16 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.17 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.18 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.19 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.1 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.20 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.21 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.22 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.23 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.24 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.2 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.3 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.4 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.5 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.6 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.7 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.8 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.random.9 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.no_stencil_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_always_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_equal_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_gequal_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_greater_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_lequal_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_less_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_never_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_always Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_equal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_gequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_greater Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_lequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_less Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_never Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_depth_notequal Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_notequal_no_depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_wrap_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.decr_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_wrap_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.incr_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.invert_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.keep_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.replace_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_decr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_wrap_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_incr_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_invert_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_keep_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_replace_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_decr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_decr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_incr Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_incr_wrap Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_invert Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_keep Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_replace Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.zero_zero_zero Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.both Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.depth Fail | ||||
| dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.stencil Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.11 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.13 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.15 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.17 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.18 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.19 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.20 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.22 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.26 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.39 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.42 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.44 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.47 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.48 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.57 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.60 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.61 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.64 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.68 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.72 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.75 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.77 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.79 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.8 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.93 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.98 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.0 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.11 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.19 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.24 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.25 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.32 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.37 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.3 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.45 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.48 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.53 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.56 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.63 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.65 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.66 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.67 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.68 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.6 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.72 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.75 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.81 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.87 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.94 Fail | ||||
| dEQP-GLES2.functional.fragment_ops.random.96 Fail | ||||
| dEQP-GLES2.functional.polygon_offset.default_render_with_units Fail | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope Fail | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units Fail | ||||
| dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_fragment Fail | ||||
| dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_vertex Fail | ||||
| @@ -1,63 +0,0 @@ | ||||
| # Note: skips lists for CI are just a list of lines that, when | ||||
| # non-zero-length and not starting with '#', will regex match to | ||||
| # delete lines from the test list.  Be careful. | ||||
|  | ||||
| # Skip the perf/stress tests to keep runtime manageable | ||||
| dEQP-GLES[0-9]*.performance | ||||
| dEQP-GLES[0-9]*.stress | ||||
|  | ||||
| # These are really slow on tiling architectures (including llvmpipe). | ||||
| dEQP-GLES[0-9]*.functional.flush_finish | ||||
|  | ||||
| dEQP-GLES2.functional.fbo.render.depth.* | ||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z | ||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_pos_y_pos_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.* | ||||
| dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.* | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgb5_a1 | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgb | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgba | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1 | ||||
| dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4 | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16 | ||||
| dEQP-GLES2.functional.fbo.render.stencil_clear.rbo_rgb5_a1_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgb5_a1_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.stencil.rbo_rgb5_a1_stencil_index8 | ||||
| dEQP-GLES2.functional.fbo.render.stencil.rbo_rgba4_stencil_index8 | ||||
| dEQP-GLES2.functional.lifetime.attach.deleted_input.renderbuffer_framebuffer | ||||
| dEQP-GLES2.functional.lifetime.attach.deleted_output.renderbuffer_framebuffer | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_0_slope | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope | ||||
| dEQP-GLES2.functional.shaders.invariance.highp.loop_4 | ||||
| dEQP-GLES2.functional.shaders.matrix.mul.dynamic_highp_mat4_vec4_vertex | ||||
| dEQP-GLES2.functional.shaders.matrix.mul.dynamic_highp_vec4_mat4_fragment | ||||
| dEQP-GLES2.functional.shaders.operator.common_functions.smoothstep.mediump_vec3_vertex | ||||
| dEQP-GLES2.functional.shaders.random.all_features.fragment.12 | ||||
| dEQP-GLES2.functional.shaders.random.all_features.fragment.37 | ||||
| dEQP-GLES2.functional.texture.units.2_units.mixed.1 | ||||
| dEQP-GLES2.functional.texture.units.2_units.mixed.3 | ||||
| dEQP-GLES2.functional.texture.units.2_units.only_2d.2 | ||||
| dEQP-GLES2.functional.texture.units.4_units.mixed.5 | ||||
| dEQP-GLES2.functional.texture.units.4_units.only_2d.0 | ||||
| dEQP-GLES2.functional.texture.units.8_units.only_cube.2 | ||||
| dEQP-GLES2.functional.texture.units.all_units.mixed.6 | ||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.4 | ||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.7 | ||||
| dEQP-GLES2.functional.texture.units.all_units.only_cube.8 | ||||
|  | ||||
| @@ -1,136 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -ex | ||||
|  | ||||
| DEQP_OPTIONS=(--deqp-surface-width=256 --deqp-surface-height=256) | ||||
| DEQP_OPTIONS+=(--deqp-surface-type=pbuffer) | ||||
| DEQP_OPTIONS+=(--deqp-gl-config-name=rgba8888d24s8ms0) | ||||
| DEQP_OPTIONS+=(--deqp-visibility=hidden) | ||||
| DEQP_OPTIONS+=(--deqp-log-images=disable) | ||||
| DEQP_OPTIONS+=(--deqp-crashhandler=enable) | ||||
|  | ||||
| # It would be nice to be able to enable the watchdog, so that hangs in a test | ||||
| # don't need to wait the full hour for the run to time out.  However, some | ||||
| # shaders end up taking long enough to compile | ||||
| # (dEQP-GLES31.functional.ubo.random.all_per_block_buffers.20 for example) | ||||
| # that they'll sporadically trigger the watchdog. | ||||
| #DEQP_OPTIONS+=(--deqp-watchdog=enable) | ||||
|  | ||||
| if [ -z "$DEQP_VER" ]; then | ||||
|    echo 'DEQP_VER must be set to something like "gles2" or "gles31" for the test run' | ||||
|    exit 1 | ||||
| fi | ||||
|  | ||||
| if [ -z "$DEQP_SKIPS" ]; then | ||||
|    echo 'DEQP_SKIPS must be set to something like "deqp-default-skips.txt"' | ||||
|    exit 1 | ||||
| fi | ||||
|  | ||||
| # Prep the expected failure list | ||||
| if [ -n "$DEQP_EXPECTED_FAILS" ]; then | ||||
|    export DEQP_EXPECTED_FAILS=`pwd`/artifacts/$DEQP_EXPECTED_FAILS | ||||
| else | ||||
|    export DEQP_EXPECTED_FAILS=/tmp/expect-no-failures.txt | ||||
|    touch $DEQP_EXPECTED_FAILS | ||||
| fi | ||||
| sort < $DEQP_EXPECTED_FAILS > /tmp/expected-fails.txt | ||||
|  | ||||
| # Fix relative paths on inputs. | ||||
| export DEQP_SKIPS=`pwd`/artifacts/$DEQP_SKIPS | ||||
|  | ||||
| # Be a good citizen on the shared runners. | ||||
| export LP_NUM_THREADS=4 | ||||
|  | ||||
| # Set up the driver environment. | ||||
| export LD_LIBRARY_PATH=`pwd`/install/lib/ | ||||
| export EGL_PLATFORM=surfaceless | ||||
|  | ||||
| # the runner was failing to look for libkms in /usr/local/lib for some reason | ||||
| # I never figured out. | ||||
| export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib | ||||
|  | ||||
| RESULTS=`pwd`/results | ||||
| mkdir -p $RESULTS | ||||
|  | ||||
| cd /deqp/modules/$DEQP_VER | ||||
|  | ||||
| # Generate test case list file | ||||
| cp /deqp/mustpass/$DEQP_VER-master.txt /tmp/case-list.txt | ||||
|  | ||||
| # Note: not using sorted input and comm, becuase I want to run the tests in | ||||
| # the same order that dEQP would. | ||||
| while read -r line; do | ||||
|    if echo "$line" | grep -q '^[^#]'; then | ||||
|        sed -i "/$line/d" /tmp/case-list.txt | ||||
|    fi | ||||
| done < $DEQP_SKIPS | ||||
|  | ||||
| # If the job is parallel, take the corresponding fraction of the caselist. | ||||
| # Note: N~M is a gnu sed extension to match every nth line (first line is #1). | ||||
| if [ -n "$CI_NODE_INDEX" ]; then | ||||
|    sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" /tmp/case-list.txt | ||||
| fi | ||||
|  | ||||
| if [ ! -s /tmp/case-list.txt ]; then | ||||
|     echo "Caselist generation failed" | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| # Cannot use tee because dash doesn't have pipefail | ||||
| touch /tmp/result.txt | ||||
| tail -f /tmp/result.txt & | ||||
|  | ||||
| ./deqp-$DEQP_VER "${DEQP_OPTIONS[@]}" --deqp-log-filename=$RESULTS/results.qpa --deqp-caselist-file=/tmp/case-list.txt >> /tmp/result.txt | ||||
| DEQP_EXITCODE=$? | ||||
|  | ||||
| sed -ne \ | ||||
|     '/StatusCode="Fail"/{x;p}; s/#beginTestCaseResult //; T; h' \ | ||||
|     $RESULTS/results.qpa \ | ||||
|     > /tmp/unsorted-fails.txt | ||||
|  | ||||
| # Scrape out the renderer that the test run used, so we can validate that the | ||||
| # right driver was used. | ||||
| if grep -q "dEQP-.*.info.renderer" /tmp/case-list.txt; then | ||||
|     # This is an ugly dependency on the .qpa format: Print 3 lines after the | ||||
|     # match, which happens to contain the result. | ||||
|     RENDERER=`sed -n '/#beginTestCaseResult dEQP-.*.info.renderer/{n;n;n;p}' $RESULTS/results.qpa | sed -n -E "s|<Text>(.*)</Text>|\1|p"` | ||||
|  | ||||
|     echo "GL_RENDERER for this test run: $RENDERER" | ||||
|  | ||||
|     if [ -n "$DEQP_RENDERER_MATCH" ]; then | ||||
|         echo $RENDERER | grep -q $DEQP_RENDERER_MATCH > /dev/null | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| if grep -q "dEQP-.*.info.version" /tmp/case-list.txt; then | ||||
|     # This is an ugly dependency on the .qpa format: Print 3 lines after the | ||||
|     # match, which happens to contain the result. | ||||
|     VERSION=`sed -n '/#beginTestCaseResult dEQP-.*.info.version/{n;n;n;p}' $RESULTS/results.qpa | sed -n -E "s|<Text>(.*)</Text>|\1|p"` | ||||
|     echo "Driver version tested: $VERSION" | ||||
| fi | ||||
|  | ||||
| if [ $DEQP_EXITCODE -ne 0 ]; then | ||||
|    exit $DEQP_EXITCODE | ||||
| fi | ||||
|  | ||||
| sort < /tmp/unsorted-fails.txt > $RESULTS/fails.txt | ||||
|  | ||||
| comm -23 $RESULTS/fails.txt /tmp/expected-fails.txt > /tmp/new-fails.txt | ||||
| if [ -s /tmp/new-fails.txt ]; then | ||||
|     echo "Unexpected failures:" | ||||
|     cat /tmp/new-fails.txt | ||||
|     exit 1 | ||||
| else | ||||
|     echo "No new failures" | ||||
| fi | ||||
|  | ||||
| sort /tmp/case-list.txt > /tmp/sorted-case-list.txt | ||||
| comm -12 /tmp/sorted-case-list.txt /tmp/expected-fails.txt > /tmp/expected-fails-in-caselist.txt | ||||
| comm -13 $RESULTS/fails.txt /tmp/expected-fails-in-caselist.txt > /tmp/new-passes.txt | ||||
| if [ -s /tmp/new-passes.txt ]; then | ||||
|     echo "Unexpected passes, please update $DEQP_EXPECTED_FAILS (or add flaky tests to $DEQP_SKIPS):" | ||||
|     cat /tmp/new-passes.txt | ||||
|     exit 1 | ||||
| else | ||||
|     echo "No new passes" | ||||
| fi | ||||
| @@ -1,445 +0,0 @@ | ||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center | ||||
| dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner | ||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip | ||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center | ||||
| dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner | ||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z | ||||
| dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z | ||||
| dEQP-GLES2.functional.polygon_offset.default_displacement_with_units | ||||
| dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide | ||||
| dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide | ||||
| dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide | ||||
| dEQP-GLES2.functional.rasterization.limits.points | ||||
| dEQP-GLES2.functional.rasterization.primitives.points | ||||
| dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_center | ||||
| dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_corner | ||||
| dEQP-GLES3.functional.clipping.point.wide_point_clip | ||||
| dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center | ||||
| dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner | ||||
| dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z | ||||
| dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z | ||||
| dEQP-GLES3.functional.draw.random.124 | ||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth24_stencil8 | ||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8 | ||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component16 | ||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component24 | ||||
| dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f | ||||
| dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8 | ||||
| dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f | ||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_color | ||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth | ||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth_stencil | ||||
| dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_stencil | ||||
| dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_color | ||||
| dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth | ||||
| dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth_stencil | ||||
| dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_stencil | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth24_stencil8 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth32f_stencil8 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component16 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component24 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component32f | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.r11f_g11f_b10f | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.r16f | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.r8 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rg16f | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rg8 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgb10_a2 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgb565 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgb5_a1 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgb8 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgba4 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.rgba8 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.srgb8_alpha8 | ||||
| dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.depth24_stencil8 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.depth32f_stencil8 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component16 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component24 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component32f | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.r11f_g11f_b10f | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.r16f | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.r8 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rg16f | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rg8 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgb10_a2 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgb565 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgb5_a1 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgb8 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgba4 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.rgba8 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.srgb8_alpha8 | ||||
| dEQP-GLES3.functional.fbo.msaa.4_samples.stencil_index8 | ||||
| dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_alpha_to_coverage | ||||
| dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage | ||||
| dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage_inverted | ||||
| dEQP-GLES3.functional.multisample.fbo_max_samples.sample_coverage_invert | ||||
| dEQP-GLES3.functional.negative_api.buffer.blit_framebuffer_multisample | ||||
| dEQP-GLES3.functional.negative_api.buffer.read_pixels_fbo_format_mismatch | ||||
| dEQP-GLES3.functional.polygon_offset.default_displacement_with_units | ||||
| dEQP-GLES3.functional.polygon_offset.fixed16_displacement_with_units | ||||
| dEQP-GLES3.functional.polygon_offset.fixed24_displacement_with_units | ||||
| dEQP-GLES3.functional.polygon_offset.float32_displacement_with_units | ||||
| dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines_wide | ||||
| dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines_wide | ||||
| dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide | ||||
| dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.points | ||||
| dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide | ||||
| dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.points | ||||
| dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide | ||||
| dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide | ||||
| dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide | ||||
| dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide | ||||
| dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide | ||||
| dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide | ||||
| dEQP-GLES3.functional.rasterization.primitives.points | ||||
| dEQP-GLES3.functional.rasterizer_discard.basic.write_depth_points | ||||
| dEQP-GLES3.functional.rasterizer_discard.basic.write_stencil_points | ||||
| dEQP-GLES3.functional.rasterizer_discard.fbo.write_depth_points | ||||
| dEQP-GLES3.functional.rasterizer_discard.fbo.write_stencil_points | ||||
| dEQP-GLES3.functional.rasterizer_discard.scissor.write_depth_points | ||||
| dEQP-GLES3.functional.rasterizer_discard.scissor.write_stencil_points | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec2_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec2_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_mediump | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_highp | ||||
| dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_mediump | ||||
| dEQP-GLES3.functional.state_query.integers.max_samples_getfloat | ||||
| dEQP-GLES3.functional.state_query.integers.max_samples_getinteger64 | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_nearest_mipmap_linear | ||||
| dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_nearest_mipmap_nearest | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_clamp | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_clamp | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_clamp | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_nearest_linear_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_clamp | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_linear_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_mipmap_linear_linear_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_mipmap_nearest_linear_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_clamp | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_clamp | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_clamp | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_clamp | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_repeat | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_clamp | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_mirror | ||||
| dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_repeat | ||||
| dEQP-GLES3.functional.texture.wrap.astc_8x8.repeat_repeat_linear_divisible | ||||
| dEQP-GLES3.functional.texture.wrap.astc_8x8.repeat_repeat_linear_not_divisible | ||||
| dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb.repeat_repeat_linear_divisible | ||||
| dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb.repeat_repeat_linear_not_divisible | ||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads1 | ||||
| dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads256 | ||||
| @@ -1,58 +0,0 @@ | ||||
| #!/usr/bin/env python3 | ||||
|  | ||||
| from jinja2 import Environment, FileSystemLoader | ||||
| import argparse | ||||
|  | ||||
| device_types = { | ||||
|     "rk3288-veyron-jaq": { | ||||
|         "gpu_version": "panfrost-t760", | ||||
|         "boot_method": "depthcharge", | ||||
|         "lava_device_type": "rk3288-veyron-jaq", | ||||
|         "kernel_image_type": "", | ||||
|     }, | ||||
|     "rk3399-gru-kevin": { | ||||
|         "gpu_version": "panfrost-t860", | ||||
|         "boot_method": "depthcharge", | ||||
|         "lava_device_type": "rk3399-gru-kevin", | ||||
|         "kernel_image_type": "", | ||||
|     }, | ||||
|     "sun8i-h3-libretech-all-h3-cc": { | ||||
|         "gpu_version": "lima", | ||||
|         "boot_method": "u-boot", | ||||
|         "lava_device_type": "sun8i-h3-libretech-all-h3-cc", | ||||
|         "kernel_image_type": "type: zimage", | ||||
|     }, | ||||
|     "meson-gxl-s905x-libretech-cc": { | ||||
|         "gpu_version": "lima", | ||||
|         "boot_method": "u-boot", | ||||
|         "lava_device_type": "meson-gxl-s905x-libretech-cc", | ||||
|         "kernel_image_type": "type: image", | ||||
|     }, | ||||
| } | ||||
|  | ||||
| parser = argparse.ArgumentParser() | ||||
| parser.add_argument("--template") | ||||
| parser.add_argument("--base-artifacts-url") | ||||
| parser.add_argument("--arch") | ||||
| parser.add_argument("--device-types", nargs="+") | ||||
| parser.add_argument("--kernel-image-name") | ||||
| args = parser.parse_args() | ||||
|  | ||||
| env = Environment(loader = FileSystemLoader('.'), trim_blocks=True, lstrip_blocks=True) | ||||
| template = env.get_template(args.template) | ||||
|  | ||||
| for device_type in args.device_types: | ||||
|     values = {} | ||||
|     values['base_artifacts_url'] = args.base_artifacts_url | ||||
|     values['arch'] = args.arch | ||||
|     values['device_type'] = device_type | ||||
|     values['kernel_image_name'] = args.kernel_image_name | ||||
|     values['lava_device_type'] = device_types[device_type]['lava_device_type'] | ||||
|     values['gpu_version'] = device_types[device_type]['gpu_version'] | ||||
|     values['boot_method'] = device_types[device_type]['boot_method'] | ||||
|     values['kernel_image_type'] = device_types[device_type]['kernel_image_type'] | ||||
|  | ||||
|     f = open('results/lava-deqp-%s.yml' % device_type, "w") | ||||
|     f.write(template.render(values)) | ||||
|     f.close() | ||||
|  | ||||
| @@ -1,187 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -e | ||||
| set -o xtrace | ||||
|  | ||||
| ############### Install packages for building | ||||
| dpkg --add-architecture ${DEBIAN_ARCH} | ||||
| echo 'deb-src https://deb.debian.org/debian testing main' > /etc/apt/sources.list.d/deb-src.list | ||||
| apt-get update | ||||
| apt-get -y install ca-certificates | ||||
| apt-get -y install --no-install-recommends \ | ||||
| 	crossbuild-essential-${DEBIAN_ARCH} \ | ||||
| 	meson \ | ||||
| 	g++ \ | ||||
| 	git \ | ||||
| 	ccache \ | ||||
| 	pkg-config \ | ||||
| 	python3-mako \ | ||||
| 	python-numpy \ | ||||
| 	python-six \ | ||||
| 	python-mako \ | ||||
| 	python3-pip \ | ||||
| 	python3-setuptools \ | ||||
| 	python3-six \ | ||||
| 	python3-wheel \ | ||||
| 	python3-jinja2 \ | ||||
| 	bison \ | ||||
| 	flex \ | ||||
| 	gettext \ | ||||
| 	cmake \ | ||||
| 	bc \ | ||||
| 	libssl-dev \ | ||||
| 	lqa \ | ||||
| 	csvkit \ | ||||
| 	curl \ | ||||
| 	unzip \ | ||||
| 	wget \ | ||||
| 	debootstrap \ | ||||
| 	procps \ | ||||
| 	qemu-user-static \ | ||||
| 	cpio \ | ||||
| 	clang-8 \ | ||||
| 	llvm-8 \ | ||||
| 	libclang-8-dev \ | ||||
| 	llvm-8-dev \ | ||||
| 	gdc-9 \ | ||||
| 	lld-8 \ | ||||
| 	nasm \ | ||||
| 	libegl1-mesa-dev \ | ||||
| 	\ | ||||
| 	libdrm-dev:${DEBIAN_ARCH} \ | ||||
| 	libx11-dev:${DEBIAN_ARCH} \ | ||||
| 	libxxf86vm-dev:${DEBIAN_ARCH} \ | ||||
| 	libexpat1-dev:${DEBIAN_ARCH} \ | ||||
| 	libsensors-dev:${DEBIAN_ARCH} \ | ||||
| 	libxfixes-dev:${DEBIAN_ARCH} \ | ||||
| 	libxdamage-dev:${DEBIAN_ARCH} \ | ||||
| 	libxext-dev:${DEBIAN_ARCH} \ | ||||
| 	x11proto-dev:${DEBIAN_ARCH} \ | ||||
| 	libx11-xcb-dev:${DEBIAN_ARCH} \ | ||||
| 	libxcb-dri2-0-dev:${DEBIAN_ARCH} \ | ||||
| 	libxcb-glx0-dev:${DEBIAN_ARCH} \ | ||||
| 	libxcb-xfixes0-dev:${DEBIAN_ARCH} \ | ||||
| 	libxcb-dri3-dev:${DEBIAN_ARCH} \ | ||||
| 	libxcb-present-dev:${DEBIAN_ARCH} \ | ||||
| 	libxcb-randr0-dev:${DEBIAN_ARCH} \ | ||||
| 	libxcb-sync-dev:${DEBIAN_ARCH} \ | ||||
| 	libxrandr-dev:${DEBIAN_ARCH} \ | ||||
| 	libxshmfence-dev:${DEBIAN_ARCH} \ | ||||
| 	libelf-dev:${DEBIAN_ARCH} \ | ||||
| 	zlib1g-dev:${DEBIAN_ARCH} \ | ||||
| 	libglvnd-core-dev:${DEBIAN_ARCH} \ | ||||
| 	libgles2-mesa-dev:${DEBIAN_ARCH} \ | ||||
| 	libegl1-mesa-dev:${DEBIAN_ARCH} \ | ||||
| 	libpng-dev:${DEBIAN_ARCH} | ||||
|  | ||||
|  | ||||
| ############### Install lavacli (remove after it's back into Debian testing) | ||||
| mkdir -p lavacli | ||||
| wget -qO- https://git.lavasoftware.org/lava/lavacli/-/archive/v0.9.8/lavacli-v0.9.8.tar.gz | tar -xz --strip-components=1 -C lavacli | ||||
| pushd lavacli | ||||
| python3 ./setup.py install | ||||
| popd | ||||
|  | ||||
|  | ||||
| ############### Cross-build dEQP | ||||
| mkdir -p /artifacts/rootfs/deqp | ||||
|  | ||||
| git config --global user.email "mesa@example.com" | ||||
| git config --global user.name "Mesa CI" | ||||
| # XXX: Use --depth 1 once we can drop the cherry-picks. | ||||
| git clone \ | ||||
|     https://github.com/KhronosGroup/VK-GL-CTS.git \ | ||||
|     -b opengl-es-cts-3.2.5.1 \ | ||||
|     /VK-GL-CTS | ||||
| cd /VK-GL-CTS | ||||
| # Fix surfaceless build | ||||
| git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670 | ||||
| git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648 | ||||
|  | ||||
| # surfaceless links against libkms and such despite not using it. | ||||
| sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake | ||||
| sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake | ||||
| sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake | ||||
|  | ||||
| python3 external/fetch_sources.py | ||||
|  | ||||
| cd /artifacts/rootfs/deqp | ||||
| cmake -G Ninja                                \ | ||||
|       -DDEQP_TARGET=surfaceless               \ | ||||
|       -DCMAKE_BUILD_TYPE=Release              \ | ||||
|       -DCMAKE_C_COMPILER=${GCC_ARCH}-gcc      \ | ||||
|       -DCMAKE_CXX_COMPILER=${GCC_ARCH}-g++    \ | ||||
|       /VK-GL-CTS | ||||
| ninja | ||||
| rm -rf /artifacts/rootfs/deqp/external | ||||
| rm -rf /artifacts/rootfs/deqp/modules/gles31 | ||||
| rm -rf /artifacts/rootfs/deqp/modules/internal | ||||
| rm -rf /artifacts/rootfs/deqp/executor | ||||
| rm -rf /artifacts/rootfs/deqp/execserver | ||||
| rm -rf /artifacts/rootfs/deqp/modules/egl | ||||
| rm -rf /artifacts/rootfs/deqp/framework | ||||
| find . -name CMakeFiles | xargs rm -rf | ||||
| find . -name lib\*.a | xargs rm -rf | ||||
| du -sh * | ||||
| rm -rf /VK-GL-CTS-opengl-es-cts-3.2.5.0 | ||||
|  | ||||
|  | ||||
| ############### Cross-build Volt dEQP runner | ||||
| mkdir -p /battery | ||||
| cd /battery | ||||
| wget https://github.com/VoltLang/Battery/releases/download/v0.1.23/battery-0.1.23-x86_64-linux.tar.gz | ||||
| tar xzvf battery-0.1.23-x86_64-linux.tar.gz | ||||
| rm battery-0.1.23-x86_64-linux.tar.gz | ||||
| mv battery /usr/local/bin | ||||
| rm -rf /battery | ||||
|  | ||||
| mkdir -p /volt | ||||
| cd /volt | ||||
| mkdir -p Watt Volta dEQP | ||||
| wget -qO- https://github.com/VoltLang/Watt/archive/v0.1.3.tar.gz | tar -xz --strip-components=1 -C ./Watt | ||||
| wget -qO- https://github.com/VoltLang/Volta/archive/v0.1.3.tar.gz | tar -xz --strip-components=1 -C ./Volta | ||||
| wget -qO- https://github.com/Wallbraker/dEQP/archive/v0.1.4.tar.gz | tar -xz --strip-components=1 -C ./dEQP | ||||
| battery config --release --lto Volta Watt | ||||
| battery build | ||||
| battery config --arch ${VOLT_ARCH} --cmd-volta Volta/volta Volta/rt Watt dEQP | ||||
| battery build | ||||
| rm /usr/local/bin/battery | ||||
| cp dEQP/deqp /artifacts/rootfs/deqp/deqp-volt | ||||
| rm -rf /volt | ||||
|  | ||||
|  | ||||
| ############### Remove LLVM now, so the container image is smaller | ||||
| apt-get -y remove \*llvm\* | ||||
|  | ||||
|  | ||||
| ############### Cross-build kernel | ||||
| KERNEL_URL="https://gitlab.freedesktop.org/tomeu/linux/-/archive/panfrost-veyron-fix/linux-panfrost-veyron-fix.tar.gz" | ||||
| export ARCH=${KERNEL_ARCH} | ||||
| export CROSS_COMPILE="${GCC_ARCH}-" | ||||
|  | ||||
| mkdir -p /kernel | ||||
| wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C /kernel | ||||
| cd /kernel | ||||
| ./scripts/kconfig/merge_config.sh ${DEFCONFIG} /tmp/clone/.gitlab-ci/${KERNEL_ARCH}.config | ||||
| make -j12 ${KERNEL_IMAGE_NAME} dtbs | ||||
| cp arch/${KERNEL_ARCH}/boot/${KERNEL_IMAGE_NAME} /artifacts/. | ||||
| cp ${DEVICE_TREES} /artifacts/. | ||||
| rm -rf /kernel | ||||
|  | ||||
|  | ||||
| ############### Create rootfs | ||||
| cp /tmp/clone/.gitlab-ci/create-rootfs.sh /artifacts/rootfs/. | ||||
| mkdir -p /artifacts/rootfs/bin | ||||
| cp /usr/bin/qemu-aarch64-static /artifacts/rootfs/bin | ||||
| cp /usr/bin/qemu-arm-static /artifacts/rootfs/bin | ||||
|  | ||||
| set +e | ||||
| debootstrap --variant=minbase --arch=${DEBIAN_ARCH} testing /artifacts/rootfs/ http://deb.debian.org/debian | ||||
| cat /artifacts/rootfs/debootstrap/debootstrap.log | ||||
| set -e | ||||
| chroot /artifacts/rootfs sh /create-rootfs.sh | ||||
|  | ||||
| rm /artifacts/rootfs/bin/qemu-arm-static | ||||
| rm /artifacts/rootfs/bin/qemu-aarch64-static | ||||
| rm /artifacts/rootfs/create-rootfs.sh | ||||
|  | ||||
| @@ -1,51 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| GPU_VERSION="$1" | ||||
|  | ||||
| DEQP_OPTIONS="--deqp-surface-width=256 --deqp-surface-height=256" | ||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-visibility=hidden" | ||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-log-images=disable" | ||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-watchdog=enable" | ||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-crashhandler=enable" | ||||
| DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-type=pbuffer" | ||||
|  | ||||
| export LIBGL_DRIVERS_PATH=/mesa/lib/dri/ | ||||
| export LD_LIBRARY_PATH=/mesa/lib/ | ||||
| export MESA_GLES_VERSION_OVERRIDE=3.0 | ||||
|  | ||||
| DEVFREQ_GOVERNOR=`echo /sys/devices/platform/*.gpu/devfreq/devfreq0/governor` | ||||
| echo performance > $DEVFREQ_GOVERNOR | ||||
|  | ||||
| cd /deqp/modules/gles2 | ||||
|  | ||||
| # Generate test case list file | ||||
| ./deqp-gles2 $DEQP_OPTIONS --deqp-runmode=stdout-caselist | grep "TEST: dEQP-GLES2" | cut -d ' ' -f 2 > /tmp/case-list.txt | ||||
|  | ||||
| # Note: not using sorted input and comm, becuase I want to run the tests in | ||||
| # the same order that dEQP would. | ||||
| while read -r line; do | ||||
|    if echo "$line" | grep -q '^[^#]'; then | ||||
|        sed -i "/$line/d" /tmp/case-list.txt | ||||
|    fi | ||||
| done < /deqp/deqp-$GPU_VERSION-skips.txt | ||||
|  | ||||
| /deqp/deqp-volt --cts-build-dir=/deqp \ | ||||
|                 --threads=8 \ | ||||
|                 --test-names-file=/tmp/case-list.txt \ | ||||
|                 --results-file=/tmp/results.txt \ | ||||
|                 --no-passed-results \ | ||||
|                 --regression-file=/deqp/deqp-$GPU_VERSION-fails.txt \ | ||||
|                 --no-rerun-tests \ | ||||
|                 --print-regression \ | ||||
|                 --no-print-fail \ | ||||
|                 --no-print-quality \ | ||||
|                 --no-colour-term \ | ||||
|                  $DEQP_OPTIONS | ||||
|  | ||||
| if [ $? -ne 0 ]; then | ||||
|     echo "Regressions detected" | ||||
|     echo "deqp: fail" | ||||
| else | ||||
|     echo "No regressions detected" | ||||
|     echo "deqp: pass" | ||||
| fi | ||||
| @@ -1,61 +0,0 @@ | ||||
| job_name: mesa-deqp-{{ gpu_version }} | ||||
| device_type: {{ lava_device_type }} | ||||
| timeouts: | ||||
|   job: | ||||
|     minutes: 40 | ||||
|   action: | ||||
|    minutes: 10 | ||||
|   actions: | ||||
|     power-off: | ||||
|       seconds: 30 | ||||
| priority: 75 | ||||
| visibility: public | ||||
| actions: | ||||
| - deploy: | ||||
|     timeout: | ||||
|       minutes: 10 | ||||
|     to: tftp | ||||
|     kernel: | ||||
|       url: {{ base_artifacts_url }}/{{ kernel_image_name }} | ||||
|       {{ kernel_image_type }} | ||||
|     ramdisk: | ||||
|       url: {{ base_artifacts_url }}/lava-rootfs-{{ arch }}.cpio.gz | ||||
|       compression: gz | ||||
|     dtb: | ||||
|       url: {{ base_artifacts_url }}/{{ device_type }}.dtb | ||||
|     os: oe | ||||
| - boot: | ||||
|     timeout: | ||||
|       minutes: 5 | ||||
|     method: {{ boot_method }} | ||||
|     commands: ramdisk | ||||
|     prompts: | ||||
|       - '#'  | ||||
| - test: | ||||
|     timeout: | ||||
|       minutes: 60 | ||||
|     definitions: | ||||
|     - repository: | ||||
|         metadata: | ||||
|           format: Lava-Test Test Definition 1.0 | ||||
|           name: deqp | ||||
|           description: "Mesa dEQP test plan" | ||||
|           os: | ||||
|           - oe | ||||
|           scope: | ||||
|           - functional | ||||
|         run: | ||||
|           steps: | ||||
|           - mount -t proc none /proc | ||||
|           - mount -t sysfs none /sys  | ||||
|           - mount -t devtmpfs none /dev | ||||
|           - mkdir -p /dev/pts | ||||
|           - mount -t devpts devpts /dev/pts | ||||
|           - echo 3 > /proc/sys/kernel/printk | ||||
|           - sh /deqp/lava-deqp-runner.sh {{ gpu_version }} | ||||
|           - cat /proc/loadavg | ||||
|         parse: | ||||
|           pattern: '(?P<test_case_id>\S*):\s+(?P<result>(pass|fail))' | ||||
|       from: inline | ||||
|       name: deqp | ||||
|       path: inline/mesa-deqp.yaml | ||||
| @@ -1,209 +0,0 @@ | ||||
| variables: | ||||
|     LAVA_DEBIAN_VERSION: testing-slim | ||||
|     LAVA_IMAGE_TAG: "lava-2019-10-23-1" | ||||
|  | ||||
| include: | ||||
|   - project: 'wayland/ci-templates' | ||||
|     ref: 1f7f57c64ff4ebbf7292e3b7a13600518b8cb24c | ||||
|     file: '/templates/debian.yml' | ||||
|  | ||||
| # When to automatically run the CI | ||||
| .ci-run-policy: | ||||
|   only: | ||||
|     - branches@mesa/mesa | ||||
|     - merge_requests | ||||
|     - /^ci([-/].*)?$/ | ||||
|   retry: | ||||
|     max: 2 | ||||
|     when: | ||||
|       - runner_system_failure | ||||
|  | ||||
| # Build Docker image with deqp, the rootfs and the build deps for Mesa | ||||
| .lava-container: | ||||
|   extends: | ||||
|     - .debian@container-ifnot-exists | ||||
|     - .container | ||||
|   variables: | ||||
|     DEBIAN_TAG: '${DEBIAN_ARCH}-${LAVA_IMAGE_TAG}' | ||||
|     DEBIAN_EXEC: 'DEBIAN_ARCH=${DEBIAN_ARCH} | ||||
|                   GCC_ARCH=${GCC_ARCH} | ||||
|                   KERNEL_ARCH=${KERNEL_ARCH} | ||||
|                   VOLT_ARCH=${VOLT_ARCH} | ||||
|                   DEFCONFIG=${DEFCONFIG} | ||||
|                   DEVICE_TREES="${DEVICE_TREES}" | ||||
|                   KERNEL_IMAGE_NAME=${KERNEL_IMAGE_NAME} | ||||
|                   bash .gitlab-ci/lava-debian-install.sh' | ||||
|     DEBIAN_VERSION: ${LAVA_DEBIAN_VERSION} | ||||
|  | ||||
| lava-container:armhf: | ||||
|   extends: .lava-container | ||||
|   variables: | ||||
|     DEBIAN_ARCH: "armhf" | ||||
|     GCC_ARCH: "arm-linux-gnueabihf" | ||||
|     KERNEL_ARCH: "arm" | ||||
|     VOLT_ARCH: "armhf" | ||||
|     DEFCONFIG: "arch/arm/configs/multi_v7_defconfig" | ||||
|     DEVICE_TREES: "arch/arm/boot/dts/rk3288-veyron-jaq.dtb arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb" | ||||
|     KERNEL_IMAGE_NAME: "zImage" | ||||
|  | ||||
| lava-container:arm64: | ||||
|   extends: .lava-container | ||||
|   variables: | ||||
|     DEBIAN_ARCH: "arm64" | ||||
|     GCC_ARCH: "aarch64-linux-gnu" | ||||
|     KERNEL_ARCH: "arm64" | ||||
|     VOLT_ARCH: "aarch64" | ||||
|     DEFCONFIG: "arch/arm64/configs/defconfig" | ||||
|     DEVICE_TREES: "arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dtb" | ||||
|     KERNEL_IMAGE_NAME: "Image" | ||||
|  | ||||
| .lava-build: | ||||
|   image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:$DEBIAN_ARCH-$LAVA_IMAGE_TAG | ||||
|   extends: | ||||
|     - .build-linux | ||||
|   # Use ccache transparently, and print stats before/after | ||||
|   before_script: | ||||
|     - mkdir -p results mesa-build | ||||
|     - mkdir -p ccache | ||||
|     - export PATH="/usr/lib/ccache:$PATH" | ||||
|     - export CCACHE_BASEDIR="$PWD" | ||||
|     - export CCACHE_DIR="$PWD/ccache" | ||||
|     - ccache --max-size=1500M | ||||
|     - ccache --zero-stats || true | ||||
|     - ccache --show-stats || true | ||||
|   script: | ||||
|     # Build Mesa | ||||
|     - /usr/share/meson/debcrossgen --arch ${DEBIAN_ARCH} -o /tmp/cross_file.txt | ||||
|     - meson . mesa-build | ||||
|         --cross-file /tmp/cross_file.txt | ||||
|         --libdir /artifacts/rootfs/mesa/lib/ | ||||
|         --buildtype debugoptimized | ||||
|         -D gallium-drivers=kmsro,panfrost,lima | ||||
|         -D dri-drivers= | ||||
|         -D prefix=/artifacts/rootfs/mesa | ||||
|         -D glx=disabled | ||||
|         -D gbm=false | ||||
|         -D egl=true | ||||
|         -D platforms=surfaceless | ||||
|         -D osmesa=none | ||||
|         -D dri3=false | ||||
|         -D gallium-vdpau=false | ||||
|         -D gallium-xvmc=false | ||||
|         -D gallium-omx=disabled | ||||
|         -D gallium-va=false | ||||
|         -D gallium-xa=false | ||||
|         -D gallium-nine=false | ||||
|         -D llvm=false | ||||
|     - ninja -C mesa-build -j4 | ||||
|     - ninja -C mesa-build install | ||||
|     - find /artifacts/rootfs/mesa/lib -name \*.so -exec ${GCC_ARCH}-strip {} \; | ||||
|  | ||||
|     - du -sh /artifacts/rootfs/mesa/* | ||||
|     - rm -rf /artifacts/rootfs/mesa/include | ||||
|  | ||||
|     # Pack rootfs | ||||
|     - cp .gitlab-ci/lava-deqp-runner.sh /artifacts/rootfs/deqp/. | ||||
|     - cp .gitlab-ci/deqp-*-fails.txt /artifacts/rootfs/deqp/. | ||||
|     - cp .gitlab-ci/deqp-*-skips.txt /artifacts/rootfs/deqp/. | ||||
|     - du -sh /artifacts/rootfs/deqp/* | ||||
|     - find /artifacts/rootfs/ -type f -printf "%s\t%p\n" | sort -n | ||||
|     - pushd /artifacts/rootfs/ ; find -H  |  cpio -H newc -v -o | gzip -c - > $CI_PROJECT_DIR/results/lava-rootfs-${DEBIAN_ARCH}.cpio.gz; popd | ||||
|  | ||||
|     # Copy kernel and DT | ||||
|     - cp /artifacts/${KERNEL_IMAGE_NAME} /artifacts/*.dtb $CI_PROJECT_DIR/results/. | ||||
|  | ||||
|     # Generate LAVA job | ||||
|     - cd $CI_PROJECT_DIR | ||||
|     - .gitlab-ci/generate_lava.py | ||||
|         --template .gitlab-ci/lava-deqp.yml.jinja2 | ||||
|         --arch ${DEBIAN_ARCH} | ||||
|         --base-artifacts-url $CI_PROJECT_URL/-/jobs/$CI_JOB_ID/artifacts/raw/results | ||||
|         --device-types ${DEVICE_TYPES} | ||||
|         --kernel-image-name ${KERNEL_IMAGE_NAME} | ||||
|   after_script: | ||||
|     - export CCACHE_DIR="$PWD/ccache" | ||||
|     - ccache --show-stats | ||||
|   artifacts: | ||||
|     when: always | ||||
|     paths: | ||||
|       - results/ | ||||
|  | ||||
| lava-build:armhf: | ||||
|   extends: .lava-build | ||||
|   needs: ["lava-container:armhf"] | ||||
|   variables: | ||||
|     DEBIAN_ARCH: "armhf" | ||||
|     GCC_ARCH: "arm-linux-gnueabihf" | ||||
|     DEVICE_TYPES: "rk3288-veyron-jaq sun8i-h3-libretech-all-h3-cc" | ||||
|     KERNEL_IMAGE_NAME: "zImage" | ||||
|  | ||||
| lava-build:arm64: | ||||
|   extends: .lava-build | ||||
|   needs: ["lava-container:arm64"] | ||||
|   variables: | ||||
|     DEBIAN_ARCH: "arm64" | ||||
|     GCC_ARCH: "aarch64-linux-gnu" | ||||
|     DEVICE_TYPES: "rk3399-gru-kevin meson-gxl-s905x-libretech-cc" | ||||
|     KERNEL_IMAGE_NAME: "Image" | ||||
|  | ||||
| .lava-test: | ||||
|   extends: | ||||
|     - .test | ||||
|   script: | ||||
|     - lava_job_id=`lavacli jobs submit $CI_PROJECT_DIR/results/lava-deqp-$DEVICE_TYPE.yml` | ||||
|     - echo $lava_job_id | ||||
|     - lavacli jobs logs $lava_job_id | grep -a -v "{'case':" | tee results/lava-deqp-$lava_job_id.log | ||||
|     - lavacli jobs show $lava_job_id | ||||
|     - result=`lavacli results $lava_job_id 0_deqp deqp | head -1` | ||||
|     - echo $result | ||||
|     - '[[ "$result" == "pass" ]]' | ||||
|   artifacts: | ||||
|     when: always | ||||
|     paths: | ||||
|       - results/ | ||||
|  | ||||
| .lava-test:armhf: | ||||
|   image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:armhf-$LAVA_IMAGE_TAG | ||||
|   extends: .lava-test | ||||
|   needs: | ||||
|     - lava-container:armhf | ||||
|     - lava-build:armhf | ||||
|   dependencies: | ||||
|     - lava-build:armhf | ||||
|  | ||||
| .lava-test:arm64: | ||||
|   image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:arm64-$LAVA_IMAGE_TAG | ||||
|   extends: .lava-test | ||||
|   needs: | ||||
|     - lava-container:arm64 | ||||
|     - lava-build:arm64 | ||||
|   dependencies: | ||||
|     - lava-build:arm64 | ||||
|  | ||||
| panfrost-t760-test:armhf: | ||||
|   extends: .lava-test:armhf | ||||
|   variables: | ||||
|     DEVICE_TYPE: rk3288-veyron-jaq | ||||
|   tags: | ||||
|     - lava-rk3288-veyron-jaq | ||||
|  | ||||
| panfrost-t860-test:arm64: | ||||
|   extends: .lava-test:arm64 | ||||
|   variables: | ||||
|     DEVICE_TYPE: rk3399-gru-kevin | ||||
|   tags: | ||||
|     - lava-rk3399-gru-kevin | ||||
|  | ||||
| lima-test:armhf: | ||||
|   extends: .lava-test:armhf | ||||
|   variables: | ||||
|     DEVICE_TYPE: sun8i-h3-libretech-all-h3-cc | ||||
|   tags: | ||||
|     - lava-sun8i-h3-libretech-all-h3-cc | ||||
|  | ||||
| lima-test:arm64: | ||||
|   extends: .lava-test:arm64 | ||||
|   variables: | ||||
|     DEVICE_TYPE: meson-gxl-s905x-libretech-cc | ||||
|   tags: | ||||
|     - lava-meson-gxl-s905x-libretech-cc | ||||
| @@ -1,13 +0,0 @@ | ||||
| call "C:\Program Files (x86)\Microsoft Visual Studio\%VERSION%\Common7\Tools\VsDevCmd.bat" -arch=%ARCH% | ||||
|  | ||||
| del /Q /S _build | ||||
| meson _build ^ | ||||
|         -Dbuild-tests=true ^ | ||||
|         -Db_vscrt=mtd ^ | ||||
|         -Dbuildtype=release ^ | ||||
|         -Dllvm=false ^ | ||||
|         -Dgallium-drivers=swrast ^ | ||||
|         -Dosmesa=gallium | ||||
| meson configure _build | ||||
| ninja -C _build | ||||
| ninja -C _build test | ||||
| @@ -1,89 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -e | ||||
| set -o xtrace | ||||
|  | ||||
| CROSS_FILE=/cross_file-"$CROSS".txt | ||||
|  | ||||
| # We need to control the version of llvm-config we're using, so we'll | ||||
| # tweak the cross file or generate a native file to do so. | ||||
| if test -n "$LLVM_VERSION"; then | ||||
|     LLVM_CONFIG="llvm-config-${LLVM_VERSION}" | ||||
|     echo -e "[binaries]\nllvm-config = '`which $LLVM_CONFIG`'" > native.file | ||||
|     if [ -n "$CROSS" ]; then | ||||
|         sed -i -e '/\[binaries\]/a\' -e "llvm-config = '`which $LLVM_CONFIG`'" $CROSS_FILE | ||||
|     fi | ||||
|     $LLVM_CONFIG --version | ||||
| else | ||||
|     rm -f native.file | ||||
|     touch native.file | ||||
| fi | ||||
|  | ||||
| # cross-xfail-$CROSS, if it exists, contains a list of tests that are expected | ||||
| # to fail for the $CROSS configuration, one per line. you can then mark those | ||||
| # tests in their meson.build with: | ||||
| # | ||||
| # test(..., | ||||
| #      should_fail: meson.get_cross_property('xfail', '').contains(t), | ||||
| #     ) | ||||
| # | ||||
| # where t is the name of the test, and the '' is the string to search when | ||||
| # not cross-compiling (which is empty, because for amd64 everything is | ||||
| # expected to pass). | ||||
| if [ -n "$CROSS" ]; then | ||||
|     CROSS_XFAIL=.gitlab-ci/cross-xfail-"$CROSS" | ||||
|     if [ -s "$CROSS_XFAIL" ]; then | ||||
|         sed -i \ | ||||
|             -e '/\[properties\]/a\' \ | ||||
|             -e "xfail = '$(tr '\n' , < $CROSS_XFAIL)'" \ | ||||
|             "$CROSS_FILE" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| rm -rf _build | ||||
| meson _build --native-file=native.file \ | ||||
|       --wrap-mode=nofallback \ | ||||
|       ${CROSS+--cross "$CROSS_FILE"} \ | ||||
|       -D prefix=`pwd`/install \ | ||||
|       -D libdir=lib \ | ||||
|       -D buildtype=${BUILDTYPE:-debug} \ | ||||
|       -D build-tests=true \ | ||||
|       -D libunwind=${UNWIND} \ | ||||
|       ${DRI_LOADERS} \ | ||||
|       -D dri-drivers=${DRI_DRIVERS:-[]} \ | ||||
|       ${GALLIUM_ST} \ | ||||
|       -D gallium-drivers=${GALLIUM_DRIVERS:-[]} \ | ||||
|       -D vulkan-drivers=${VULKAN_DRIVERS:-[]} \ | ||||
|       -D I-love-half-baked-turnips=true \ | ||||
|       ${EXTRA_OPTION} | ||||
| cd _build | ||||
| meson configure | ||||
| ninja -j4 | ||||
| LC_ALL=C.UTF-8 ninja test | ||||
| ninja install | ||||
| cd .. | ||||
|  | ||||
| if test -n "$MESON_SHADERDB"; then | ||||
|     ./.gitlab-ci/run-shader-db.sh; | ||||
| fi | ||||
|  | ||||
| # Delete 2MB of includes from artifacts. | ||||
| rm -rf install/include | ||||
|  | ||||
| # Strip the drivers in the artifacts to cut 80% of the artifacts size. | ||||
| if [ -n "$CROSS" ]; then | ||||
|     STRIP=`sed -n -E "s/strip\s*=\s*'(.*)'/\1/p" "$CROSS_FILE"` | ||||
|     if [ -z "$STRIP" ]; then | ||||
|         echo "Failed to find strip command in cross file" | ||||
|         exit 1 | ||||
|     fi | ||||
| else | ||||
|     STRIP="strip" | ||||
| fi | ||||
| find install -name \*.so -exec $STRIP {} \; | ||||
|  | ||||
| # Test runs don't pull down the git tree, so put the dEQP helper | ||||
| # script and associated bits there. | ||||
| mkdir -p artifacts/ | ||||
| cp -Rp .gitlab-ci/deqp* artifacts/ | ||||
| # cp -Rp src/freedreno/ci/expected* artifacts/ | ||||
| @@ -1,17 +0,0 @@ | ||||
| set -e | ||||
| set -v | ||||
|  | ||||
| ARTIFACTSDIR=`pwd`/shader-db | ||||
| mkdir -p $ARTIFACTSDIR | ||||
| export DRM_SHIM_DEBUG=true | ||||
|  | ||||
| LIBDIR=`pwd`/install/lib | ||||
| export LD_LIBRARY_PATH=$LIBDIR | ||||
|  | ||||
| cd /usr/local/shader-db | ||||
|  | ||||
| for driver in freedreno v3d; do | ||||
|     env LD_PRELOAD=$LIBDIR/lib${driver}_noop_drm_shim.so \ | ||||
|         ./run -j 4 ./shaders \ | ||||
|             > $ARTIFACTSDIR/${driver}-shader-db.txt | ||||
| done | ||||
| @@ -1,12 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -e | ||||
| set -o xtrace | ||||
|  | ||||
| if test -n "$LLVM_VERSION"; then | ||||
|     export LLVM_CONFIG="llvm-config-${LLVM_VERSION}" | ||||
| fi | ||||
|  | ||||
| rm -rf build | ||||
| scons $SCONS_TARGET force_scons=on | ||||
| eval $SCONS_CHECK_COMMAND  | ||||
| @@ -1,20 +0,0 @@ | ||||
| [binaries] | ||||
| c = ['ccache', 'x86_64-w64-mingw32-gcc'] | ||||
| cpp = ['ccache', 'x86_64-w64-mingw32-g++'] | ||||
| ar = 'x86_64-w64-mingw32-ar' | ||||
| strip = 'x86_64-w64-mingw32-strip' | ||||
| pkgconfig = '/usr/local/bin/x86_64-w64-mingw32-pkg-config' | ||||
| windres = 'x86_64-w64-mingw32-windres' | ||||
| exe_wrapper = ['wine64'] | ||||
|  | ||||
| [properties] | ||||
| needs_exe_wrapper = True | ||||
| sys_root = '/usr/x86_64-w64-mingw32/' | ||||
|  | ||||
| [host_machine] | ||||
| system = 'windows' | ||||
| cpu_family = 'x86_64' | ||||
| cpu = 'x86_64' | ||||
| endian = 'little' | ||||
|  | ||||
| ; vim: ft=dosini | ||||
							
								
								
									
										490
									
								
								.mailmap
									
									
									
									
									
								
							
							
						
						
									
										490
									
								
								.mailmap
									
									
									
									
									
								
							| @@ -1,490 +0,0 @@ | ||||
| Aapo Tahkola <aet@rasterburn.org> <aapo@aapo-desktop.(none)> | ||||
|  | ||||
| Adam Jackson <ajax@redhat.com> <ajax@benzedrine.nwnk.net> | ||||
| Adam Jackson <ajax@redhat.com> <ajax@freedesktop.org> | ||||
|  | ||||
| Adrian Marius Negreanu <adrian.m.negreanu@intel.com> Adrian Negreanu <adrian.m.negreanu@intel.com> | ||||
| Adrian Marius Negreanu <adrian.m.negreanu@intel.com> Negreanu Marius Adrian <adrian.m.negreanu@intel.com> | ||||
|  | ||||
| Dave Airlie <airlied@redhat.com> <airliedfreedesktop.org> | ||||
| Dave Airlie <airlied@redhat.com> airlied <airlied@unused-12-215.bne.redhat.com> | ||||
| Dave Airlie <airlied@redhat.com> <airlied@dhcp-1-203.bne.redhat.com> | ||||
| Dave Airlie <airlied@redhat.com> <airlied@gmail.com> | ||||
| Dave Airlie <airlied@redhat.com> <airlied@itt42.(none)> | ||||
| Dave Airlie <airlied@redhat.com> <airlied@linux.ie> | ||||
| Dave Airlie <airlied@redhat.com> <airlied@nx6125b.(none)> | ||||
| Dave Airlie <airlied@redhat.com> <airlied@panoply-rh.(none)> | ||||
| Dave Airlie <airlied@redhat.com> <airlied@ppcg5.localdomain> | ||||
|  | ||||
| Alan Coopersmith <alan.coopersmith@oracle.com> <alan.coopersmith@sun.com> | ||||
|  | ||||
| Alan Hourihane <alanh@vmware.com> <alanh@tungstengraphics.com> | ||||
| Alan Hourihane <alanh@vmware.com> <alanh@fairlite.demon.co.uk> | ||||
| Alan Hourihane <alanh@vmware.com> <alanh@jetpack.(none)> | ||||
|  | ||||
| Alexander Monakov <amonakov@gmail.com> <amonakov@ispras.ru> | ||||
|  | ||||
| Alexander von Gluck IV <kallisti5@unixzen.com> Alexander von Gluck <kallisti5@unixzen.com> | ||||
|  | ||||
| Alexandros Frantzis <alexandros.frantzis@collabora.com> <Alexandros.Frantzis@canonical.com> | ||||
|  | ||||
| Alex Corscadden <alexc@vmware.com> <alexc@alexc-dev1.prom.eng.vmware.com> | ||||
| Alex Corscadden <alexc@vmware.com> <alexc@alexc-dev1.vmware.com> | ||||
|  | ||||
| Alex Deucher <alexdeucher@gmail.com> <alexander.deucher@amd.com> | ||||
| Alex Deucher <alexdeucher@gmail.com> <agd5f@yahoo.com> | ||||
| Alex Deucher <alexdeucher@gmail.com> <alex@botch2.com> | ||||
| Alex Deucher <alexdeucher@gmail.com> <alex@botch2.(none)> | ||||
| Alex Deucher <alexdeucher@gmail.com> <alex@cube.(none)> | ||||
| Alex Deucher <alexdeucher@gmail.com> <alex@samba.(none)> | ||||
|  | ||||
| Andreas Fänger <a.faenger@e-sign.com> <a.faenger@e-sign.com> | ||||
|  | ||||
| Andreas Hartmetz <ahartmetz@gmail.com> <andreas.hartmetz@kdab.com> | ||||
|  | ||||
| Andre Heider <a.heider@gmail.com> | ||||
| Andreas Heider <andreas@heider.io> | ||||
|  | ||||
| Andreas Pokorny <andreas.pokorny@canonical.com> <andreas.pokorny@elektrobit.com> | ||||
|  | ||||
| Andrew Randrianasulu <randrianasulu@gmail.com> <randrik_a@yahoo.com> | ||||
| Andrew Randrianasulu <randrianasulu@gmail.com> <randrik@mail.ru> | ||||
|  | ||||
| Arthur Huillet <arthur.huillet@free.fr> Arthur HUILLET <arthur.huillet@free.fr> | ||||
|  | ||||
| Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> <basni@chromium.org> | ||||
|  | ||||
| Benjamin Franzke <benjaminfranzke@googlemail.com> ben <benjaminfranzke@googlemail.com> | ||||
|  | ||||
| Ben Skeggs <bskeggs@redhat.com> <darktama@beleth.(none)> | ||||
| Ben Skeggs <bskeggs@redhat.com> <darktama@iinet.net.au> | ||||
| Ben Skeggs <bskeggs@redhat.com> <darktama@nisroch.keine.ath.cx> | ||||
| Ben Skeggs <bskeggs@redhat.com> <skeggsb-at-gmail.com> | ||||
| Ben Skeggs <bskeggs@redhat.com> <skeggsb@gmail.com> | ||||
| Ben Skeggs <bskeggs@redhat.com> <skeggsb@localhost.localdomain> | ||||
| Ben Skeggs <bskeggs@redhat.com> <skeggsb@nisroch.keine.ath.cx> | ||||
|  | ||||
| Ben Widawsky <benjamin.widawsky@intel.com> Ben Widawsky <ben@bwidawsk.net> | ||||
|  | ||||
| Blair Sadewitz <blair.sadewitz@gmail.com> Blair Sadewitz <blair.sadewitz.gmail.com> | ||||
|  | ||||
| Boris Peterbarg <reist@users.sourceforge.net> reist <reist> | ||||
|  | ||||
| Brian Paul <brianp@vmware.com> Brian <brian.paul@tungstengraphics.com> | ||||
| Brian Paul <brianp@vmware.com> <brian.paul@tungstengraphics.com> | ||||
| Brian Paul <brianp@vmware.com> <brian.e.paul@gmail.com> | ||||
| Brian Paul <brianp@vmware.com> <brianp@kemper.freedesktop.org> | ||||
| Brian Paul <brianp@vmware.com> brian <brian@cvp965.(none)> | ||||
| Brian Paul <brianp@vmware.com> Brian <brian@i915.localnet.net> | ||||
| Brian Paul <brianp@vmware.com> Brian <brian@nostromo.localnet.net> | ||||
| Brian Paul <brianp@vmware.com> Brian <brian@poulsbo.localnet.net> | ||||
| Brian Paul <brianp@vmware.com> Brian <brian@ps3.localnet.net> | ||||
| Brian Paul <brianp@vmware.com> Brian <brianp@vmware.com> | ||||
| Brian Paul <brianp@vmware.com> Brian <brian@yutani.localnet.net> | ||||
| Brian Paul <brianp@vmware.com> root <brian.paul@tungstengraphics.com> | ||||
| Brian Paul <brianp@vmware.com> root <root@i915.localnet.net> | ||||
| Brian Paul <brianp@vmware.com> root <root@nostromo.localnet.net> | ||||
| Brian Paul <brianp@vmware.com> root <root@i965.localnet.net> | ||||
|  | ||||
| Bruce Merry <bmerry@users.sourceforge.net> <bmerry@gmail.com> | ||||
|  | ||||
| Carl-Philip Hänsch <cphaensch@googlemail.com> Carl-Philip Haensch <s3734770@mail.zih.tu-dresden.de> | ||||
| Carl-Philip Hänsch <cphaensch@googlemail.com> Carl-Philip Haensch <carli@carli-laptop.(none)> | ||||
| Carl-Philip Hänsch <cphaensch@googlemail.com> Carl-Philip Haensch <Carl-Philip.Haensch@mailbox.tu-dresden.de> | ||||
|  | ||||
| Chad Versace <chadversary@chromium.org> <chad@kiwitree.net> | ||||
| Chad Versace <chadversary@chromium.org> <chad@chad-versace.us> | ||||
| Chad Versace <chadversary@chromium.org> <Chad Versace chad@chad-versace.us> | ||||
| Chad Versace <chadversary@chromium.org> <chad.versace@intel.com> | ||||
| Chad Versace <chadversary@chromium.org> <chad.versace@linux.intel.com> | ||||
|  | ||||
| Chia-I Wu <olvaffe@gmail.com> <olv@lunarg.com> | ||||
| Chia-I Wu <olvaffe@gmail.com> Chia-Wu <olvaffe@gmail.com> | ||||
|  | ||||
| Chih-Wei Huang <cwhuang@linux.org.tw> Chih-Wei Huang <cwhuang@android-x86.org> | ||||
|  | ||||
| Christian König <christian.koenig@amd.com> Christian Koenig <christian.koenig@amd.com> | ||||
| Christian König <christian.koenig@amd.com> Christian König <christian.koenig at amd.com> | ||||
| Christian König <christian.koenig@amd.com> Christian König <deathsimple@vodafone.de> | ||||
|  | ||||
| Christoph Brill <egore911@egore911.de> Christoph Bill <egore@gmx.de> | ||||
| Christoph Brill <egore911@egore911.de> <egore@gmx.de> | ||||
|  | ||||
| Christoph Bumiller <christoph.bumiller@speed.at> <e0425955@student.tuwien.ac.at> | ||||
|  | ||||
| Christopher James Halse Rogers <christopher.halse.rogers@canonical.com> Christopher James Halse Rogers <raof@ubuntu.com> | ||||
|  | ||||
| Claudio Ciccani <klan@directfb.org> <klan@users.sf.net> | ||||
| Claudio Ciccani <klan@directfb.org> <klan@users.sourceforge.net> | ||||
|  | ||||
| Connor Abbott <cwabbott0@gmail.com> <connor.w.abbott@intel.com> | ||||
| Connor Abbott <cwabbott0@gmail.com> <connor.abbott@intel.com> | ||||
|  | ||||
| Corbin Simpson <MostAwesomeDude@gmail.com> <mostawesomed...@gmail.com> | ||||
| Corbin Simpson <MostAwesomeDude@gmail.com> <mostawesomedude@gmail.com> | ||||
|  | ||||
| Courtney Goeltzenleuchter <courtney@lunarg.com> <courtney@LunarG.com> | ||||
|  | ||||
| Daniel Skinner <sio@users.sourceforge.net> sio <sio> | ||||
|  | ||||
| Daniel Stone <daniels@collabora.com> <daniel@fooishbar.org> | ||||
|  | ||||
| David Miller <davem@davemloft.net> David S. Miller <davem@davemloft.net> | ||||
| David Miller <davem@davemloft.net> Dave Miller <davem@davemloft.net> | ||||
| David Miller <davem@davemloft.net> davem69 <davem69> | ||||
|  | ||||
| David Heidelberger <david.heidelberger@ixit.cz> David Heidelberg <david@ixit.cz> | ||||
| David Heidelberger <david.heidelberger@ixit.cz> <d.okias@gmail.com> | ||||
|  | ||||
| David Reveman <reveman@chromium.org> <c99drn@cs.umu.se> | ||||
|  | ||||
| Dieter Nützel <Dieter@nuetzel-hh.de> Dieter Nützel <dieter@nuetzel-hh.de> | ||||
|  | ||||
| Dmitry Cherkassov <dcherkassov@gmail.com> Dmitry Cherkasov <dcherkassov@gmail.com> | ||||
|  | ||||
| Dylan Baker <dylanx.c.baker@intel.com> <baker.dylan.c@gmail.com> | ||||
|  | ||||
| Edward O'Callaghan <funfunctor@folklore1984.net> <eocallaghan@alterapraxis.com> | ||||
|  | ||||
| Elie Tournier <tournier.elie@gmail.com> | ||||
|  | ||||
| Emeric Grange <emeric.grange@gmail.com> Emeric <emeric.grange@gmail.com> | ||||
|  | ||||
| Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@collabora.com> | ||||
| Emil Velikov <emil.l.velikov@gmail.com> <emil.veliko@collabora.com> | ||||
| Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@collabora.co.uk> | ||||
| Emil Velikov <emil.l.velikov@gmail.com> <emil.veliikov@collabora.com> | ||||
| Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@gmail.com> | ||||
| Emil Velikov <emil.l.velikov@gmail.com> <emmil.velikov@collabora.com> | ||||
|  | ||||
| Eric Anholt <eric@anholt.net> Eric Anholt <anholt@FreeBSD.org> | ||||
|  | ||||
| Eric Engestrom <eric@engestrom.ch> <eric.engestrom@imgtec.com> | ||||
| Eric Engestrom <eric@engestrom.ch> <eric.engestrom@intel.com> | ||||
|  | ||||
| Eugeni Dodonov <eugeni.dodonov@intel.com> <eugeni@mandriva.com> | ||||
|  | ||||
| Fabian Bieler <der.fabe@gmx.net> <fabianbieler@fastmail.fm> | ||||
| Fabian Bieler <der.fabe@gmx.net> <<der.fabe@gmx.net>> | ||||
|  | ||||
| Feng, Haitao <haitao.feng@intel.com> Haitao Feng <haitao.feng@intel.com> | ||||
|  | ||||
| Frank Binns <frank.binns@imgtec.com> <francisbinns@gmail.com> | ||||
|  | ||||
| Frank Henigman <fjhenigman@google.com> <fjhenigman@chromium.org> | ||||
|  | ||||
| George Sapountzis <gsapountzis@gmail.com> George Sapountzis <gsap7@yahoo.gr> | ||||
|  | ||||
| Gert Wollny <gert.wollny@collabora.com> <gw.fossdev@gmail.com> | ||||
|  | ||||
| Gwenole Beauchesne <gwenole.beauchesne@intel.com> <gb.devel@gmail.com> | ||||
|  | ||||
| Hamish Marson <hmarson@users.sourceforge.net> hmarson <hmarson> | ||||
|  | ||||
| Hans de Goede <hdegoede@redhat.com> Hans de Goede <j.w..r..degoede@hhs.nl> | ||||
|  | ||||
| Homer Hsing <dongsheng.xing@intel.com> <homer.hsing@gmail.com> | ||||
|  | ||||
| Hui Qi Tay <hqtay@vmware.com> <tayhuiqithq@gmail.com> | ||||
|  | ||||
| Ian Romanick <ian.d.romanick@intel.com> <idr@freedesktop.org> | ||||
| Ian Romanick <ian.d.romanick@intel.com> <idr@us.ibm.com> | ||||
|  | ||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob@vmware.com> | ||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob@aurora.(none)> | ||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob@aurora.walkyrie.se> | ||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob@tungstengraphics.com> | ||||
| Jakob Bornecrantz <wallbraker@gmail.com> <wallbraker 'at' gmail 'dot' com> | ||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob.bornecrantz@collabora.com> | ||||
| Jakob Bornecrantz <wallbraker@gmail.com> <jakob@collabora.com> | ||||
|  | ||||
| Jakub Bogusz <qboosh@pld-linux.org> <gboosh@pld-linux.org> | ||||
|  | ||||
| James Legg <jlegg@feralinteractive.com> <lankyleggy@gmail.com> | ||||
|  | ||||
| Jan Vesely <jano.vesely@gmail.com> Jan Vesely <jan.vesely@rutgers.edu> | ||||
|  | ||||
| Jason Ekstrand <jason@jlekstrand.net> <jason.ekstrand@intel.com> | ||||
|  | ||||
| Jeremy Huddleston <jeremyhu@apple.com> <jeremyhu@freedesktop.org> | ||||
| Jeremy Huddleston <jeremyhu@apple.com> <jeremy@tifa.local> | ||||
| Jeremy Huddleston <jeremyhu@apple.com> <jeremy@vincent.local> | ||||
| Jeremy Huddleston <jeremyhu@apple.com> <jeremy@yuffie.local> | ||||
| Jeremy Huddleston <jeremyhu@apple.com> Jeremy Huddleston Sequoia <jeremyhu@apple.com> | ||||
|  | ||||
| Jeremy Kolb <jkolb@freedesktop.org> <jkolb@brandeis.edu> | ||||
|  | ||||
| Jerome Glisse <jglisse@redhat.com> <glisse@freedesktop.org> | ||||
| Jerome Glisse <jglisse@redhat.com> <glisse@kemper.freedesktop.org> | ||||
| Jerome Glisse <jglisse@redhat.com> John Doe <glisse@barney.(none)> | ||||
| Jerome Glisse <jglisse@redhat.com> John Doe <glisse@localhost.localdomain> | ||||
|  | ||||
| Jesse Barnes <jesse.barnes@intel.com> <jbarnes@hobbes.lan> | ||||
| Jesse Barnes <jesse.barnes@intel.com> <jbarnes@hobbes.(none)> | ||||
| Jesse Barnes <jesse.barnes@intel.com> <jbarnes@jbarnes-desktop.localdomain> | ||||
| Jesse Barnes <jesse.barnes@intel.com> <jbarnes@jbarnes-t61.(none)> | ||||
| Jesse Barnes <jesse.barnes@intel.com> <jbarnes@virtuousgeek.org> | ||||
|  | ||||
| Joakim Sindholt <bacn@zhasha.com> <opensource@zhasha.com> | ||||
| Joakim Sindholt <bacn@zhasha.com> <zhasha@gallium-dev.(none)> | ||||
|  | ||||
| Jochen Gerlach <jtg@users.sourceforge.net> jtg <jtg> | ||||
|  | ||||
| Joel Bosveld <joel.bosveld@gmail.com> <Joel.Bosveld@gmail.com> | ||||
|  | ||||
| Jonathan Adamczewski <jadamcze@utas.edu.au> <jadamcze@utas.edu.a> | ||||
|  | ||||
| Jon Turney <jon.turney@dronecode.org.uk> Jon TURNEY <jon.turney@dronecode.org.uk> | ||||
|  | ||||
| José Fonseca <jfonseca@vmware.com> Jose Fonseca <jfonseca@vmware.com> | ||||
| José Fonseca <jfonseca@vmware.com> Jose Fonseca <jrfonseca@tungstengraphics.com> | ||||
| José Fonseca <jfonseca@vmware.com> <jfonseca@pegasus.(none)> | ||||
| José Fonseca <jfonseca@vmware.com> <jfonseca@titan.(none)> | ||||
| José Fonseca <jfonseca@vmware.com> <jose.r.fonseca@gmail.com> | ||||
| José Fonseca <jfonseca@vmware.com> <jrfonseca@tungstengraphics.com> | ||||
| José Fonseca <jfonseca@vmware.com> <j_r_fonseca@yahoo.co.uk> | ||||
|  | ||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> Jouk Jansen <jouk@hrem.nano.tudelft.nl> | ||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> Jouk Jansen <joukj@hrem.stm.tudelft.nl> | ||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> joukj <joukj@tarantella.(none)> | ||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> Jouk <joukj@tarantella.nano.tudelft.nl> | ||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> Jouk <joukj@tarantella.(none)> | ||||
| Jouk Jansen <joukj@hrem.nano.tudelft.nl> J.Jansen <joukj@tarantella.nano.tudelft.nl> | ||||
|  | ||||
| Juan Zhao <juan.j.zhao@intel.com> <juan.j.zhao@linux.intel.com> | ||||
|  | ||||
| Julien Cristau <jcristau@debian.org> <julien.cristau@logilab.fr> | ||||
|  | ||||
| Julien Isorce <j.isorce@samsung.com> <julien.isorce@gmail.com> | ||||
|  | ||||
| Kalyan Kondapally <kalyan.kondapally@intel.com> <kondapallykalyancontribute@gmail.com> | ||||
|  | ||||
| Karl Schultz <karl.w.schultz@gmail.com> Karl Schultze <k.w.schultz@comcast.net> | ||||
| Karl Schultz <karl.w.schultz@gmail.com> unknown <kwschult@.na.qualcomm.com> | ||||
| Karl Schultz <karl.w.schultz@gmail.com> <k.w.schultz@comcast.net> | ||||
| Karl Schultz <karl.w.schultz@gmail.com> <Karl.W.Schultz@gmail.com> | ||||
| Karl Schultz <karl.w.schultz@gmail.com> <kschultz@freedesktop.org> | ||||
|  | ||||
| Keith Harrison <sio2@users.sourceforge.net> sio2 <sio2> | ||||
|  | ||||
| Keith Packard <keithp@keithp.com> <keithp@koto.keithp.com> | ||||
| Keith Packard <keithp@keithp.com> <keithp@neko.keithp.com> | ||||
|  | ||||
| Keith Whitwell <keithw@vmware.com> <keith@tungstengraphics.com> | ||||
| Keith Whitwell <keithw@vmware.com> keithw <keithw@keithw-laptop.(none)> | ||||
|  | ||||
| Kristian Høgsberg <krh@bitplanet.net> <krh@redhat.com> | ||||
| Kristian Høgsberg <krh@bitplanet.net> <krh@hinata.boston.redhat.com> | ||||
| Kristian Høgsberg <krh@bitplanet.net> <krh@sasori.boston.redhat.com> | ||||
| Kristian Høgsberg <krh@bitplanet.net> <krh@temari.boston.redhat.com> | ||||
| Kristian Høgsberg <krh@bitplanet.net> <kristian.h.kristensen@intel.com> | ||||
| Kristian Høgsberg <krh@bitplanet.net> <hoegsberg@chromium.org> | ||||
| Kristian Høgsberg <krh@bitplanet.net> <hoegsberg@google.com> | ||||
| Kristian Høgsberg <krh@bitplanet.net> <hoegsberg@gmail.com> | ||||
|  | ||||
| Krzesimir Nowak <qdlacz@gmail.com> <krzesimir@kinvolk.io> | ||||
|  | ||||
| Li Peng <peng.li@intel.com> <peng.li@linux.intel.com> | ||||
|  | ||||
| Lucas Stach <dev@lynxeye.de> <l.stach@pengutronix.de> | ||||
|  | ||||
| Maarten Lankhorst <maarten.lankhorst@ubuntu.com> <dev@mblankhorst.nl> | ||||
| Maarten Lankhorst <maarten.lankhorst@ubuntu.com> <m.b.lankhorst@gmail.com> | ||||
| Maarten Lankhorst <maarten.lankhorst@ubuntu.com> <maarten.lankhorst@canonical.com> | ||||
|  | ||||
| Maciej Cencora <m.cencora@gmail.com> <maciej@osiris.(none)> | ||||
|  | ||||
| Marc-André Lureau <marcandre.lureau@gmail.com> Marc-Andre Lureau <marcandre.lureau@gmail.com> | ||||
|  | ||||
| Marc Dietrich <marvin24@gmx.de> Marc <marvin24@gmx.de> | ||||
| Marc Dietrich <marvin24@gmx.de> marvin24 <marvin24@gmx.de> | ||||
|  | ||||
| Marcin Ślusarz <marcin.slusarz@gmail.com> Marcin Slusarz <marcin.slusarz@gmail.com> | ||||
|  | ||||
| Marek Olšák <maraeo@gmail.com> <marek.olsak@amd.com> | ||||
|  | ||||
| Mario Kleiner <mario.kleiner.de@gmail.com> kleinerm <mario.kleiner@tuebingen.mpg.de> | ||||
| Mario Kleiner <mario.kleiner.de@gmail.com> <mario.kleiner@tuebingen.mpg.de> | ||||
|  | ||||
| Mark Mueller <markkmueller@gmail.com> <MarkKMueller@gmail.com> | ||||
|  | ||||
| Marta Lofstedt <marta.lofstedt@intel.com> <marta.lofstedt@linux.intel.com> | ||||
|  | ||||
| Martin Peres <martin.peres@linux.intel.com> <martin.peres@labri.fr> | ||||
|  | ||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> Mathias Froehlich <Mathias.Froehlich@gmx.net> | ||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> Mathias Froehlich <Mathias.Froehlich@web.de> | ||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> Mathias Frohlich <M.Froehlich@science-computing.de> | ||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> <frohlich8@users.sourceforge.net> | ||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> <Mathias.Froehlich@gmx.net> | ||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> <Mathias.Froehlich@web.de> | ||||
| Mathias Fröhlich <mathias.froehlich@gmx.net> M.Froehlich@science-computing.de <M.Froehlich@science-computing.de> | ||||
|  | ||||
| Matthew W. S. Bell <matthew@bells23.org.uk> Matthew Bell <matthew@bells23.org.uk> | ||||
|  | ||||
| Maxence Le Doré <maxence.ledore@gmail.com> Maxence Le Dore <maxence.ledore@gmail.com> | ||||
|  | ||||
| Micah Fedke <micah.fedke@collabora.co.uk> <M.Fedke@Astronautics.com> | ||||
|  | ||||
| Michal Krol <michal@vmware.com> <michal@tungstengraphics.com> | ||||
| Michal Krol <michal@vmware.com> Michal Krol <michal@ubuntu-vbox.(none)> | ||||
| Michal Krol <michal@vmware.com> Michal Krol <mjkrol@gmail.org> | ||||
| Michal Krol <michal@vmware.com> michal <michal@capacitor.(none)> | ||||
| Michal Krol <michal@vmware.com> michal <michal@michal-laptop.(none)> | ||||
| Michal Krol <michal@vmware.com> michal <michal@quad.(none)> | ||||
| Michal Krol <michal@vmware.com> michal <michal@transistor.(none)> | ||||
| Michal Krol <michal@vmware.com> Michal <michal@tungstengraphics.com> | ||||
| Michal Krol <michal@vmware.com> michal <michal@wmvare.com> | ||||
|  | ||||
| Michel Dänzer <michel@daenzer.net> <michel.daenzer@amd.com> | ||||
| Michel Dänzer <michel@daenzer.net> <daenzer@vmware.com> | ||||
| Michel Dänzer <michel@daenzer.net> <michel@tungstengraphics.com> | ||||
| Michel Dänzer <michel@daenzer.net> Michel Daenzer <michel.daenzer@amd.com> | ||||
| Michel Dänzer <michel@daenzer.net> Michel Daenzer <daenzer@localhost.(none)> | ||||
| Michel Dänzer <michel@daenzer.net> <mdaenzer@redhat.com> | ||||
|  | ||||
| Mike Kaplinskiy <mike.kaplinskiy@gmail.com> Mike Kaplinksiy <mike.kaplinskiy@gmail.com> | ||||
| Mike Kaplinskiy <mike.kaplinskiy@gmail.com> <mike.kaplinskiy@gmai.com> | ||||
|  | ||||
| Mike Stroyan <mike@lunarg.com> <mike@LunarG.com> | ||||
|  | ||||
| Nian Wu <nian.wu@intel.com> <nian@graphics.(none)> | ||||
| Nian Wu <nian.wu@intel.com> <nian@tinderbox.sh.intel.com> | ||||
|  | ||||
| Nick Bowler <nbowler@draconx.ca> | ||||
|  | ||||
| Nick Sarnie <commendsarnex@gmail.com> | ||||
|  | ||||
| Nicolai Hähnle <nicolai.haehnle@amd.com> <nhaehnle@gmail.com> | ||||
| Nicolai Hähnle <nicolai.haehnle@amd.com> Nicolai Haehnle <nhaehnle@gmail.com> | ||||
| Nicolai Hähnle <nicolai.haehnle@amd.com> Nicolai Haehnle <prefect_@gmx.net> | ||||
| Nicolai Hähnle <nicolai.haehnle@amd.com> Nicolai Haehnle <prefect@upb.de> | ||||
|  | ||||
| Nigel Stewart <nigels@users.sourceforge.net> <nigels@sourceforge.net> | ||||
| Nigel Stewart <nigels@users.sourceforge.net> <nstewart@nvidia.com> | ||||
|  | ||||
| nobled <nobled@dreamwidth.org> <nobled2@nobled2-karmic.(none)> | ||||
|  | ||||
| Oliver McFadden <oliver.mcfadden@linux.intel.com> <z3ro.geek@gmail.com> | ||||
|  | ||||
| Owain Ainsworth <zerooa@googlemail.com> Owain G. Ainsworth <oga@openbsd.org> | ||||
|  | ||||
| Owen W. Taylor <otaylor@fishsoup.net> Owen Taylor <otaylor@snell.localdomain> | ||||
|  | ||||
| Patrice Mandin <patmandin@gmail.com> <patrice@manoir.racoon.city> | ||||
| Patrice Mandin <patmandin@gmail.com> <pmandin@caramail.com> | ||||
| Patrice Mandin <patmandin@gmail.com> <pmandin@freedesktop.org> | ||||
|  | ||||
| Pauli Nieminen <pauli.nieminen@linux.intel.com> <suokkos@gmail.com> | ||||
|  | ||||
| Paulo Zanoni <paulo.r.zanoni@intel.com> Paulo Zanoni <pzanoni@mandriva.com> | ||||
|  | ||||
| Paul Seidler <sepek@exherbo.org> Paul Seidler <pl.seidler@googlemail.com> | ||||
|  | ||||
| Pekka Paalanen <pekka.paalanen@collabora.co.uk> <ppaalanen@gmail.com> | ||||
| Pekka Paalanen <pekka.paalanen@collabora.co.uk> <pq@iki.fi> | ||||
|  | ||||
| Peter Hutterer <peter.hutterer@who-t.net> <peter@cs.unisa.edu.au> | ||||
|  | ||||
| Pierre-Eric Pelloux-Prayer <pelloux@gmail.com> pepp <pelloux@gmail.com> | ||||
|  | ||||
| Pierre Willenbrock <pierre@pirsoft.de> Pierre Willenbrok <pierre@pirsoft.de> | ||||
|  | ||||
| Quentin Glidic <sardemff7+git@sardemff7.net> <sardemff7@sardemff7.net> | ||||
|  | ||||
| RALOVICH, Kristóf <tade60@freemail.hu> <kristof.ralovich@gmail.com> | ||||
|  | ||||
| Richard Li <richardradeon@gmail.com> <RichardZ.Li@amd.com> | ||||
| # The next ones are not 100% sure | ||||
| Richard Li <richardradeon@gmail.com> richard <richard@richard-desktop3.(none)> | ||||
| Richard Li <richardradeon@gmail.com> richard <richard@richard-desktop.(none)> | ||||
| Richard Li <richardradeon@gmail.com> root <root@richard-desktop.(none)> | ||||
|  | ||||
| Richard Sandiford <rsandifo@linux.vnet.ibm.com> <r.sandiford@uk.ibm.com> | ||||
|  | ||||
| Rob Clark <robclark@freedesktop.org> <Rob Clark robdclark@freedesktop.org> | ||||
| Rob Clark <robclark@freedesktop.org> <robdclark@gmail.com> | ||||
|  | ||||
| Robert Bragg <robert@sixbynine.org> <robert@linux.intel.com> | ||||
|  | ||||
| Robert Ellison <papillo@vmware.com> <papillo@i965-laptop.(none)> | ||||
| Robert Ellison <papillo@vmware.com> <papillo@tungstengraphics.com> | ||||
|  | ||||
| Robert Hooker <sarvatt@ubuntu.com> <robert.hooker@canonical.com> | ||||
|  | ||||
| Roland Scheidegger <sroland@vmware.com> <rscheidegger@gmx.ch> | ||||
| Roland Scheidegger <sroland@vmware.com> <sroland@tungstengraphics.com> | ||||
|  | ||||
| Roy Spliet <rspliet@eclipso.eu> <r.spliet@student.tudelft.nl> | ||||
|  | ||||
| Rune Petersen <rune@megahurts.dk> Rune Peterson <rune@megahurts.dk> | ||||
|  | ||||
| Ryan Houdek <sonicadvance1@gmail.com> <Sonicadvance1@gmail.com> | ||||
|  | ||||
| Sam Hocevar <sam@hocevar.net> Sam Hocevar <sam@zoy.org> | ||||
|  | ||||
| Samuel Iglesias Gonsálvez <siglesias@igalia.com> Samuel Iglesias Gonsalvez <siglesias@igalia.com> | ||||
|  | ||||
| Sean D'Epagnier <sean@depagnier.com> <geckosenator@freedesktop.org> | ||||
|  | ||||
| Serge Martin <edb+mesa@sigluy.net> Serge Martin (EdB) <edb+mesa@sigluy.net> | ||||
| Serge Martin <edb+mesa@sigluy.net> EdB <edb+mesa@sigluy.net> | ||||
|  | ||||
| Sinclair Yeh <syeh@vmware.com> <sinclair.yeh@intel.com> | ||||
|  | ||||
| Stefan Brüns <stefan.bruens@rwth-aachen.de> <Stefan.Bruens@rwth-aachen.de> | ||||
|  | ||||
| Stéphane Marchesin <marcheu@chromium.org> Stephane Marchesin <marchesin@icps.u-strasbg.fr> | ||||
| Stéphane Marchesin <marcheu@chromium.org> Stephane Marchesin <stephane.marchesin@gmail.com> | ||||
|  | ||||
| Sven M. Hallberg <pesco@users.sourceforge.net> pesco <pesco> | ||||
|  | ||||
| Tapani Pälli <tapani.palli@intel.com> <tapani.palli@gmail.com> | ||||
| Tapani Pälli <tapani.palli@intel.com> Tapani <tapani.palli@intel.com> | ||||
|  | ||||
| Thierry Reding <treding@nvidia.com> <thierry@gilfi.de> | ||||
| Thierry Reding <treding@nvidia.com> <thierry.reding@avionic-design.de> | ||||
|  | ||||
| Thierry Vignaud <thierry.vignaud@gmail.com> <tvignaud@mandriva.com> | ||||
|  | ||||
| Thomas Balling Sørensen <tball@io.dk> <tball@tball-laptop.(none)> | ||||
|  | ||||
| Thomas Hellstrom <thellstrom@vmware.com> Thomas <thellstrom@vmware.com> | ||||
| Thomas Hellstrom <thellstrom@vmware.com> Thomas Hellstrom <thellstrom-at-vmware-dot-com> | ||||
| Thomas Hellstrom <thellstrom@vmware.com> Thomas Hellstrom <thomas-at-tungstengraphics-dot-com> | ||||
| Thomas Hellstrom <thellstrom@vmware.com> Thomas Hellstrom <thomas@tungstengraphics.com> | ||||
| Thomas Hellstrom <thellstrom@vmware.com> Thomas Hellström <thomas@tungstengraphics.com> | ||||
|  | ||||
| Thomas Tanner <tanner@gmx.net> tanner <tanner> | ||||
|  | ||||
| Tilman Sauerbeck <tilman@code-monkey.de> <tilman@freedesktop.org> | ||||
|  | ||||
| Timothy Arceri <timothy.arceri@collabora.com> <t_arceri@yahoo.com.au> | ||||
| Timothy Arceri <timothy.arceri@collabora.com> Timothy <t_arceri@yahoo.com.au> | ||||
|  | ||||
| Tom Fogal <tfogal@alumni.unh.edu> <tfogal@sci.utah.edu> | ||||
|  | ||||
| Tom Stellard <thomas.stellard@amd.com> <tstellar@gmail.com> | ||||
| Tom Stellard <thomas.stellard@amd.com> Thomas Stellard <tom.stellard@amd.com> | ||||
|  | ||||
| Tomeu Vizoso <tomeu.vizoso@collabora.com> <tomeu@tomeuvizoso.net> | ||||
|  | ||||
| Tormod Volden <debian.tormod@gmail.com> <lists.tormod@gmail.com> | ||||
|  | ||||
| Török Edwin <edwin+mesa@etorok.net> Török Edvin <edwintorok@gmail.com> | ||||
| Török Edwin <edwin+mesa@etorok.net> <edwintorok@gmail.com> | ||||
|  | ||||
| Ville Syrjälä <ville.syrjala@linux.intel.com> Ville Syrjala <syrjala@freedesktop.org> | ||||
| Ville Syrjälä <ville.syrjala@linux.intel.com> Ville Syrjala <syrjala@sci.fi> | ||||
|  | ||||
| Vincent Lejeune <vljn@ovi.com> <peluche.canard@gmail.com> | ||||
|  | ||||
| Vinson Lee <vlee@freedesktop.org> <vlee@vmware.com> | ||||
|  | ||||
| Zhenyu Wang <zhenyuw@linux.intel.com> Wang Zhenyu <zhenyu.z.wang@intel.com> | ||||
|  | ||||
| Zack Rusin <zackr@vmware.com> <zack@kde.org> | ||||
| Zack Rusin <zackr@vmware.com> <zack@pixel.(none)> | ||||
| Zack Rusin <zackr@vmware.com> <zack@tungstengraphics.com> | ||||
|  | ||||
| Zhang <zxpmyth@yahoo.com.cn> zhang <zxpmyth@yahoo.com.cn> | ||||
							
								
								
									
										63
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -1,63 +0,0 @@ | ||||
| language: c | ||||
|  | ||||
| os: osx | ||||
|  | ||||
| cache: | ||||
|   ccache: true | ||||
|  | ||||
| env: | ||||
|   global: | ||||
|     - PKG_CONFIG_PATH="" | ||||
|  | ||||
| matrix: | ||||
|   include: | ||||
|     - env: | ||||
|       - BUILD=meson | ||||
|     - env: | ||||
|       - BUILD=scons | ||||
|  | ||||
| before_install: | ||||
|   - HOMEBREW_NO_AUTO_UPDATE=1 brew install expat gettext | ||||
|   - if test "x$BUILD" = xmeson; then | ||||
|       HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja; | ||||
|     fi | ||||
|   - if test "x$BUILD" = xscons; then | ||||
|       HOMEBREW_NO_AUTO_UPDATE=1 brew install scons; | ||||
|     fi | ||||
|  | ||||
|   # Set PATH for homebrew pip3 installs | ||||
|   - PATH="$HOME/Library/Python/3.6/bin:${PATH}" | ||||
|   # Set PKG_CONFIG_PATH for keg-only expat | ||||
|   - PKG_CONFIG_PATH="/usr/local/opt/expat/lib/pkgconfig:${PKG_CONFIG_PATH}" | ||||
|   # Set PATH for keg-only gettext | ||||
|   - PATH="/usr/local/opt/gettext/bin:${PATH}" | ||||
|  | ||||
|   # Install xquartz for prereqs ... | ||||
|   - XQUARTZ_VERSION="2.7.11" | ||||
|   - wget -nv https://dl.bintray.com/xquartz/downloads/XQuartz-${XQUARTZ_VERSION}.dmg | ||||
|   - hdiutil attach XQuartz-${XQUARTZ_VERSION}.dmg | ||||
|   - sudo installer -pkg /Volumes/XQuartz-${XQUARTZ_VERSION}/XQuartz.pkg -target / | ||||
|   - hdiutil detach /Volumes/XQuartz-${XQUARTZ_VERSION} | ||||
|   # ... and set paths | ||||
|   - PKG_CONFIG_PATH="/opt/X11/share/pkgconfig:/opt/X11/lib/pkgconfig:${PKG_CONFIG_PATH}" | ||||
|  | ||||
| install: | ||||
|   - if test "x$BUILD" = xmeson; then | ||||
|       pip3 install --user meson; | ||||
|       pip3 install --user mako; | ||||
|     fi | ||||
|   - if test "x$BUILD" = xscons; then | ||||
|       pip2 install --user mako; | ||||
|     fi | ||||
|  | ||||
| script: | ||||
|   - if test "x$BUILD" = xmeson; then | ||||
|       meson _build -Dbuild-tests=true; | ||||
|       ninja -C _build || travis_terminate 1; | ||||
|       ninja -C _build test || travis_terminate 1; | ||||
|       ninja -C _build install || travis_terminate 1; | ||||
|     fi | ||||
|   - if test "x$BUILD" = xscons; then | ||||
|       scons force_scons=1 || travis_terminate 1; | ||||
|       scons force_scons=1 check || travis_terminate 1; | ||||
|     fi | ||||
| @@ -21,108 +21,39 @@ | ||||
| # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||
| # DEALINGS IN THE SOFTWARE. | ||||
|  | ||||
| # use c99 compiler by default | ||||
| ifeq ($(LOCAL_CC),) | ||||
| ifeq ($(LOCAL_IS_HOST_MODULE),true) | ||||
| LOCAL_CFLAGS += -D_GNU_SOURCE | ||||
| LOCAL_CC := $(HOST_CC) -std=c99 | ||||
| else | ||||
| LOCAL_CC := $(TARGET_CC) -std=c99 | ||||
| endif | ||||
| endif | ||||
|  | ||||
| LOCAL_C_INCLUDES += \ | ||||
| 	$(MESA_TOP)/src \ | ||||
| 	$(MESA_TOP)/include | ||||
|  | ||||
| MESA_VERSION := $(shell cat $(MESA_TOP)/VERSION) | ||||
| # define ANDROID_VERSION (e.g., 4.0.x => 0x0400) | ||||
| major := $(word 1, $(subst ., , $(PLATFORM_VERSION))) | ||||
| minor := $(word 2, $(subst ., , $(PLATFORM_VERSION))) | ||||
| LOCAL_CFLAGS += \ | ||||
| 	-Wno-error \ | ||||
| 	-Werror=incompatible-pointer-types \ | ||||
| 	-Wno-unused-parameter \ | ||||
| 	-Wno-pointer-arith \ | ||||
| 	-Wno-missing-field-initializers \ | ||||
| 	-Wno-initializer-overrides \ | ||||
| 	-Wno-mismatched-tags \ | ||||
| 	-DPACKAGE_VERSION=\"$(MESA_VERSION)\" \ | ||||
| 	-DPACKAGE_BUGREPORT=\"https://gitlab.freedesktop.org/mesa/mesa/issues\" | ||||
| 	-DANDROID_VERSION=0x0$(major)0$(minor) | ||||
|  | ||||
| # XXX: The following __STDC_*_MACROS defines should not be needed. | ||||
| # It's likely due to a bug elsewhere, but let's temporarily add them | ||||
| # here to fix the radeonsi build. | ||||
| LOCAL_CFLAGS += \ | ||||
| 	-DANDROID_API_LEVEL=$(PLATFORM_SDK_VERSION) \ | ||||
| 	-DENABLE_SHADER_CACHE \ | ||||
| 	-D__STDC_CONSTANT_MACROS \ | ||||
| 	-D__STDC_LIMIT_MACROS \ | ||||
| 	-DHAVE___BUILTIN_EXPECT \ | ||||
| 	-DHAVE___BUILTIN_FFS \ | ||||
| 	-DHAVE___BUILTIN_FFSLL \ | ||||
| 	-DHAVE_DLFCN_H \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_FLATTEN \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_UNUSED \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_FORMAT \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_PACKED \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_ALIAS \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_NORETURN \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL \ | ||||
| 	-DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT \ | ||||
| 	-DHAVE___BUILTIN_CTZ \ | ||||
| 	-DHAVE___BUILTIN_POPCOUNT \ | ||||
| 	-DHAVE___BUILTIN_POPCOUNTLL \ | ||||
| 	-DHAVE___BUILTIN_CLZ \ | ||||
| 	-DHAVE___BUILTIN_CLZLL \ | ||||
| 	-DHAVE___BUILTIN_UNREACHABLE \ | ||||
| 	-DHAVE_PTHREAD=1 \ | ||||
| 	-DHAVE_DLADDR \ | ||||
| 	-DHAVE_DL_ITERATE_PHDR \ | ||||
| 	-DHAVE_LINUX_FUTEX_H \ | ||||
| 	-DHAVE_ENDIAN_H \ | ||||
| 	-DHAVE_ZLIB \ | ||||
| 	-DMAJOR_IN_SYSMACROS \ | ||||
| 	-DVK_USE_PLATFORM_ANDROID_KHR \ | ||||
| 	-DPTHREADS \ | ||||
| 	-fvisibility=hidden \ | ||||
| 	-fno-math-errno \ | ||||
| 	-fno-trapping-math \ | ||||
| 	-Wno-sign-compare | ||||
|  | ||||
| LOCAL_CPPFLAGS += \ | ||||
| 	-D__STDC_CONSTANT_MACROS \ | ||||
| 	-D__STDC_FORMAT_MACROS \ | ||||
| 	-D__STDC_LIMIT_MACROS \ | ||||
| 	-Wno-error=non-virtual-dtor \ | ||||
| 	-Wno-non-virtual-dtor | ||||
|  | ||||
| # mesa requires at least c99 compiler | ||||
| LOCAL_CONLYFLAGS += \ | ||||
| 	-std=c99 | ||||
|  | ||||
| # c11 timespec_get is part of bionic as well | ||||
| # https://android-review.googlesource.com/c/718518 | ||||
| # This means releases from P and earlier won't need this | ||||
| ifeq ($(filter 5 6 7 8 9, $(MESA_ANDROID_MAJOR_VERSION)),) | ||||
| LOCAL_CFLAGS += -DHAVE_TIMESPEC_GET | ||||
| endif | ||||
|  | ||||
| # Android's libc began supporting shm in Oreo | ||||
| ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 26 && echo true),true) | ||||
| LOCAL_CFLAGS += -DHAVE_SYS_SHM_H | ||||
| endif | ||||
|  | ||||
| ifeq ($(strip $(MESA_ENABLE_ASM)),true) | ||||
| ifeq ($(TARGET_ARCH),x86) | ||||
| LOCAL_CFLAGS += \ | ||||
| 	-DUSE_X86_ASM | ||||
|  | ||||
| endif | ||||
| endif | ||||
| ifeq ($(ARCH_ARM_HAVE_NEON),true) | ||||
| LOCAL_CFLAGS_arm += -DUSE_ARM_ASM | ||||
| endif | ||||
| LOCAL_CFLAGS_arm64 += -DUSE_AARCH64_ASM | ||||
|  | ||||
| ifneq ($(LOCAL_IS_HOST_MODULE),true) | ||||
| LOCAL_CFLAGS += -DHAVE_LIBDRM | ||||
| LOCAL_SHARED_LIBRARIES += libdrm | ||||
| endif | ||||
|  | ||||
| LOCAL_CFLAGS_32 += -DDEFAULT_DRIVER_DIR=\"/vendor/lib/$(MESA_DRI_MODULE_REL_PATH)\" | ||||
| LOCAL_CFLAGS_64 += -DDEFAULT_DRIVER_DIR=\"/vendor/lib64/$(MESA_DRI_MODULE_REL_PATH)\" | ||||
| LOCAL_PROPRIETARY_MODULE := true | ||||
| LOCAL_CPPFLAGS += \ | ||||
| 	-Wno-error=non-virtual-dtor \ | ||||
| 	-Wno-non-virtual-dtor | ||||
|  | ||||
| # uncomment to keep the debug symbols | ||||
| #LOCAL_STRIP_MODULE := false | ||||
| @@ -130,6 +61,3 @@ LOCAL_PROPRIETARY_MODULE := true | ||||
| ifeq ($(strip $(LOCAL_MODULE_TAGS)),) | ||||
| LOCAL_MODULE_TAGS := optional | ||||
| endif | ||||
|  | ||||
| # Quiet down the build system and remove any .h files from the sources | ||||
| LOCAL_SRC_FILES := $(patsubst %.h, , $(LOCAL_SRC_FILES)) | ||||
|   | ||||
							
								
								
									
										119
									
								
								Android.mk
									
									
									
									
									
								
							
							
						
						
									
										119
									
								
								Android.mk
									
									
									
									
									
								
							| @@ -24,64 +24,31 @@ | ||||
| # BOARD_GPU_DRIVERS should be defined.  The valid values are | ||||
| # | ||||
| #   classic drivers: i915 i965 | ||||
| #   gallium drivers: swrast freedreno i915g nouveau kmsro r300g r600g radeonsi vc4 virgl vmwgfx etnaviv iris lima | ||||
| #   gallium drivers: swrast i915g nouveau r300g r600g radeonsi vmwgfx | ||||
| # | ||||
| # The main target is libGLES_mesa.  For each classic driver enabled, a DRI | ||||
| # module will also be built.  DRI modules will be loaded by libGLES_mesa. | ||||
|  | ||||
| MESA_TOP := $(call my-dir) | ||||
|  | ||||
| MESA_ANDROID_MAJOR_VERSION := $(word 1, $(subst ., , $(PLATFORM_VERSION))) | ||||
| ifneq ($(filter 2 4, $(MESA_ANDROID_MAJOR_VERSION)),) | ||||
| $(error "Android 4.4 and earlier not supported") | ||||
| endif | ||||
|  | ||||
| MESA_DRI_MODULE_REL_PATH := dri | ||||
| MESA_DRI_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/$(MESA_DRI_MODULE_REL_PATH) | ||||
| MESA_DRI_MODULE_UNSTRIPPED_PATH := $(TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED)/$(MESA_DRI_MODULE_REL_PATH) | ||||
| MESA_DRI_LDFLAGS := -Wl,--build-id=sha1 | ||||
|  | ||||
| MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk | ||||
| MESA_PYTHON2 := python | ||||
|  | ||||
| # Lists to convert driver names to boolean variables | ||||
| # in form of <driver name>.<boolean make variable> | ||||
| classic_drivers := i915.HAVE_I915_DRI i965.HAVE_I965_DRI | ||||
| gallium_drivers := \ | ||||
| 	swrast.HAVE_GALLIUM_SOFTPIPE \ | ||||
| 	freedreno.HAVE_GALLIUM_FREEDRENO \ | ||||
| 	i915g.HAVE_GALLIUM_I915 \ | ||||
| 	nouveau.HAVE_GALLIUM_NOUVEAU \ | ||||
| 	kmsro.HAVE_GALLIUM_KMSRO \ | ||||
| 	r300g.HAVE_GALLIUM_R300 \ | ||||
| 	r600g.HAVE_GALLIUM_R600 \ | ||||
| 	radeonsi.HAVE_GALLIUM_RADEONSI \ | ||||
| 	vmwgfx.HAVE_GALLIUM_VMWGFX \ | ||||
| 	vc4.HAVE_GALLIUM_VC4 \ | ||||
| 	virgl.HAVE_GALLIUM_VIRGL \ | ||||
| 	etnaviv.HAVE_GALLIUM_ETNAVIV \ | ||||
| 	iris.HAVE_GALLIUM_IRIS \ | ||||
| 	lima.HAVE_GALLIUM_LIMA | ||||
| DRM_TOP := external/drm | ||||
| DRM_GRALLOC_TOP := hardware/drm_gralloc | ||||
|  | ||||
| ifeq ($(BOARD_GPU_DRIVERS),all) | ||||
| MESA_BUILD_CLASSIC := $(filter HAVE_%, $(subst ., , $(classic_drivers))) | ||||
| MESA_BUILD_GALLIUM := $(filter HAVE_%, $(subst ., , $(gallium_drivers))) | ||||
| else | ||||
| # Warn if we have any invalid driver names | ||||
| $(foreach d, $(BOARD_GPU_DRIVERS), \ | ||||
| 	$(if $(findstring $(d).,$(classic_drivers) $(gallium_drivers)), \ | ||||
| 		, \ | ||||
| 		$(warning invalid GPU driver: $(d)) \ | ||||
| 	) \ | ||||
| ) | ||||
| MESA_BUILD_CLASSIC := $(strip $(foreach d, $(BOARD_GPU_DRIVERS), $(patsubst $(d).%,%, $(filter $(d).%, $(classic_drivers))))) | ||||
| MESA_BUILD_GALLIUM := $(strip $(foreach d, $(BOARD_GPU_DRIVERS), $(patsubst $(d).%,%, $(filter $(d).%, $(gallium_drivers))))) | ||||
| endif | ||||
| ifeq ($(filter x86%,$(TARGET_ARCH)),) | ||||
| 	MESA_BUILD_CLASSIC := | ||||
| endif | ||||
| classic_drivers := i915 i965 | ||||
| gallium_drivers := swrast i915g nouveau r300g r600g radeonsi vmwgfx | ||||
|  | ||||
| $(foreach d, $(MESA_BUILD_CLASSIC) $(MESA_BUILD_GALLIUM), $(eval $(d) := true)) | ||||
| MESA_GPU_DRIVERS := $(strip $(BOARD_GPU_DRIVERS)) | ||||
|  | ||||
| # warn about invalid drivers | ||||
| invalid_drivers := $(filter-out \ | ||||
| 	$(classic_drivers) $(gallium_drivers), $(MESA_GPU_DRIVERS)) | ||||
| ifneq ($(invalid_drivers),) | ||||
| $(warning invalid GPU drivers: $(invalid_drivers)) | ||||
| # tidy up | ||||
| MESA_GPU_DRIVERS := $(filter-out $(invalid_drivers), $(MESA_GPU_DRIVERS)) | ||||
| endif | ||||
|  | ||||
| # host and target must be the same arch to generate matypes.h | ||||
| ifeq ($(TARGET_ARCH),$(HOST_ARCH)) | ||||
| @@ -90,34 +57,38 @@ else | ||||
| MESA_ENABLE_ASM := false | ||||
| endif | ||||
|  | ||||
| ifneq ($(filter true, $(HAVE_GALLIUM_RADEONSI)),) | ||||
| MESA_ENABLE_LLVM := true | ||||
| ifneq ($(filter $(classic_drivers), $(MESA_GPU_DRIVERS)),) | ||||
| MESA_BUILD_CLASSIC := true | ||||
| else | ||||
| MESA_BUILD_CLASSIC := false | ||||
| endif | ||||
|  | ||||
| define mesa-build-with-llvm | ||||
|   $(if $(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5 6 7), \ | ||||
|     $(warning Unsupported LLVM version in Android $(MESA_ANDROID_MAJOR_VERSION)),) \ | ||||
|   $(eval LOCAL_CFLAGS += -DLLVM_AVAILABLE -DMESA_LLVM_VERSION_STRING=\"3.9\") \ | ||||
|   $(eval LOCAL_SHARED_LIBRARIES += libLLVM) | ||||
| endef | ||||
| ifneq ($(filter $(gallium_drivers), $(MESA_GPU_DRIVERS)),) | ||||
| MESA_BUILD_GALLIUM := true | ||||
| else | ||||
| MESA_BUILD_GALLIUM := false | ||||
| endif | ||||
|  | ||||
| # add subdirectories | ||||
| SUBDIRS := \ | ||||
| 	src/freedreno \ | ||||
| 	src/gbm \ | ||||
| 	src/loader \ | ||||
| 	src/mapi \ | ||||
| 	src/compiler \ | ||||
| 	src/mesa \ | ||||
| 	src/util \ | ||||
| 	src/egl \ | ||||
| 	src/amd \ | ||||
| 	src/broadcom \ | ||||
| 	src/intel \ | ||||
| 	src/mesa/drivers/dri \ | ||||
| 	src/vulkan \ | ||||
| 	src/panfrost \ | ||||
| ifneq ($(strip $(MESA_GPU_DRIVERS)),) | ||||
|  | ||||
| INC_DIRS := $(call all-named-subdir-makefiles,$(SUBDIRS)) | ||||
| INC_DIRS += $(call all-named-subdir-makefiles,src/gallium) | ||||
| include $(INC_DIRS) | ||||
| SUBDIRS := \ | ||||
| 	src/mapi \ | ||||
| 	src/glsl \ | ||||
| 	src/mesa \ | ||||
| 	src/egl/main | ||||
|  | ||||
| ifeq ($(strip $(MESA_BUILD_CLASSIC)),true) | ||||
| SUBDIRS += \ | ||||
| 	src/egl/drivers/dri2 \ | ||||
| 	src/mesa/drivers/dri | ||||
| endif | ||||
|  | ||||
| ifeq ($(strip $(MESA_BUILD_GALLIUM)),true) | ||||
| SUBDIRS += src/gallium | ||||
| endif | ||||
|  | ||||
| mkfiles := $(patsubst %,$(MESA_TOP)/%/Android.mk,$(SUBDIRS)) | ||||
| include $(mkfiles) | ||||
|  | ||||
| endif | ||||
|   | ||||
							
								
								
									
										16
									
								
								CleanSpec.mk
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								CleanSpec.mk
									
									
									
									
									
								
							| @@ -1,16 +0,0 @@ | ||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libmesa_*_intermediates) | ||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/i9*5_dri_intermediates) | ||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libglapi_intermediates) | ||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libGLES_mesa_intermediates) | ||||
| $(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_OS)-$(HOST_ARCH)/obj/EXECUTABLES/mesa_*_intermediates) | ||||
| $(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_OS)-$(HOST_ARCH)/obj/EXECUTABLES/glsl_compiler_intermediates) | ||||
| $(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_OS)-$(HOST_ARCH)/obj/STATIC_LIBRARIES/libmesa_glsl_utils_intermediates) | ||||
|  | ||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/STATIC_LIBRARIES/libmesa_*_intermediates) | ||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/i9?5_dri_intermediates) | ||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/libglapi_intermediates) | ||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/libGLES_mesa_intermediates) | ||||
| $(call add-clean-step, rm -rf $(HOST_OUT)/*/EXECUTABLES/mesa_*_intermediates) | ||||
| $(call add-clean-step, rm -rf $(HOST_OUT)/*/EXECUTABLES/glsl_compiler_intermediates) | ||||
| $(call add-clean-step, rm -rf $(HOST_OUT)/*/STATIC_LIBRARIES/libmesa_*_intermediates) | ||||
| $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/*_dri_intermediates) | ||||
							
								
								
									
										271
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										271
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,271 @@ | ||||
| # Top-level Mesa makefile | ||||
|  | ||||
| TOP = . | ||||
|  | ||||
| SUBDIRS = src | ||||
|  | ||||
|  | ||||
| # The git command below generates an empty string when we're not | ||||
| # building in a GIT tree (i.e., building from a release tarball). | ||||
| default: $(TOP)/configs/current | ||||
| 	@$(TOP)/bin/extract_git_sha1 | ||||
| 	@for dir in $(SUBDIRS) ; do \ | ||||
| 		if [ -d $$dir ] ; then \ | ||||
| 			(cd $$dir && $(MAKE)) || exit 1 ; \ | ||||
| 		fi \ | ||||
| 	done | ||||
|  | ||||
| all: default | ||||
|  | ||||
|  | ||||
| doxygen: | ||||
| 	cd doxygen && $(MAKE) | ||||
|  | ||||
| check: | ||||
| 	make -C src/glsl/tests check | ||||
| 	make -C tests check | ||||
|  | ||||
| clean: | ||||
| 	-@touch $(TOP)/configs/current | ||||
| 	-@for dir in $(SUBDIRS) ; do \ | ||||
| 		if [ -d $$dir ] ; then \ | ||||
| 			(cd $$dir && $(MAKE) clean) ; \ | ||||
| 		fi \ | ||||
| 	done | ||||
| 	-@test -s $(TOP)/configs/current || rm -f $(TOP)/configs/current | ||||
|  | ||||
|  | ||||
| realclean: clean | ||||
| 	-rm -rf lib* | ||||
| 	-rm -f $(TOP)/configs/current | ||||
| 	-rm -f $(TOP)/configs/autoconf | ||||
| 	-rm -rf autom4te.cache | ||||
| 	-find . '(' -name '*.o' -o -name '*.a' -o -name '*.so' -o \ | ||||
| 	  -name depend -o -name depend.bak ')' -exec rm -f '{}' ';' | ||||
|  | ||||
|  | ||||
| distclean: realclean | ||||
|  | ||||
|  | ||||
| install: | ||||
| 	@for dir in $(SUBDIRS) ; do \ | ||||
| 		if [ -d $$dir ] ; then \ | ||||
| 			(cd $$dir && $(MAKE) install) || exit 1 ; \ | ||||
| 		fi \ | ||||
| 	done | ||||
|  | ||||
|  | ||||
| .PHONY: default doxygen clean realclean distclean install check | ||||
|  | ||||
| # If there's no current configuration file | ||||
| $(TOP)/configs/current: | ||||
| 	@echo | ||||
| 	@echo | ||||
| 	@echo "Please choose a configuration from the following list:" | ||||
| 	@ls -1 $(TOP)/configs | grep -v "current\|default\|CVS\|autoconf.*" | ||||
| 	@echo | ||||
| 	@echo "Then type 'make <config>' (ex: 'make linux-x86')" | ||||
| 	@echo | ||||
| 	@echo "Or, run './configure' then 'make'" | ||||
| 	@echo "See './configure --help' for details" | ||||
| 	@echo | ||||
| 	@echo "(ignore the following error message)" | ||||
| 	@exit 1 | ||||
|  | ||||
|  | ||||
| # Rules to set/install a specific build configuration | ||||
| aix \ | ||||
| aix-64 \ | ||||
| aix-64-static \ | ||||
| aix-gcc \ | ||||
| aix-static \ | ||||
| autoconf \ | ||||
| bluegene-osmesa \ | ||||
| bluegene-xlc-osmesa \ | ||||
| catamount-osmesa-pgi \ | ||||
| darwin \ | ||||
| darwin-fat-32bit \ | ||||
| darwin-fat-all \ | ||||
| freebsd \ | ||||
| freebsd-dri \ | ||||
| freebsd-dri-amd64 \ | ||||
| freebsd-dri-x86 \ | ||||
| hpux10 \ | ||||
| hpux10-gcc \ | ||||
| hpux10-static \ | ||||
| hpux11-32 \ | ||||
| hpux11-32-static \ | ||||
| hpux11-32-static-nothreads \ | ||||
| hpux11-64 \ | ||||
| hpux11-64-static \ | ||||
| hpux11-ia64 \ | ||||
| hpux11-ia64-static \ | ||||
| hpux9 \ | ||||
| hpux9-gcc \ | ||||
| irix6-64 \ | ||||
| irix6-64-static \ | ||||
| irix6-n32 \ | ||||
| irix6-n32-static \ | ||||
| irix6-o32 \ | ||||
| irix6-o32-static \ | ||||
| linux \ | ||||
| linux-i965 \ | ||||
| linux-alpha \ | ||||
| linux-alpha-static \ | ||||
| linux-debug \ | ||||
| linux-dri \ | ||||
| linux-dri-debug \ | ||||
| linux-dri-x86 \ | ||||
| linux-dri-x86-64 \ | ||||
| linux-dri-ppc \ | ||||
| linux-dri-xcb \ | ||||
| linux-egl \ | ||||
| linux-indirect \ | ||||
| linux-fbdev \ | ||||
| linux-ia64-icc \ | ||||
| linux-ia64-icc-static \ | ||||
| linux-icc \ | ||||
| linux-icc-static \ | ||||
| linux-llvm \ | ||||
| linux-llvm-debug \ | ||||
| linux-opengl-es \ | ||||
| linux-osmesa \ | ||||
| linux-osmesa-static \ | ||||
| linux-osmesa16 \ | ||||
| linux-osmesa16-static \ | ||||
| linux-osmesa32 \ | ||||
| linux-ppc \ | ||||
| linux-ppc-static \ | ||||
| linux-profile \ | ||||
| linux-sparc \ | ||||
| linux-sparc5 \ | ||||
| linux-static \ | ||||
| linux-ultrasparc \ | ||||
| linux-tcc \ | ||||
| linux-x86 \ | ||||
| linux-x86-debug \ | ||||
| linux-x86-32 \ | ||||
| linux-x86-64 \ | ||||
| linux-x86-64-debug \ | ||||
| linux-x86-64-profile \ | ||||
| linux-x86-64-static \ | ||||
| linux-x86-profile \ | ||||
| linux-x86-static \ | ||||
| netbsd \ | ||||
| openbsd \ | ||||
| osf1 \ | ||||
| osf1-static \ | ||||
| solaris-x86 \ | ||||
| solaris-x86-gcc \ | ||||
| solaris-x86-gcc-static \ | ||||
| sunos4 \ | ||||
| sunos4-gcc \ | ||||
| sunos4-static \ | ||||
| sunos5 \ | ||||
| sunos5-gcc \ | ||||
| sunos5-64-gcc \ | ||||
| sunos5-smp \ | ||||
| sunos5-v8 \ | ||||
| sunos5-v8-static \ | ||||
| sunos5-v9 \ | ||||
| sunos5-v9-static \ | ||||
| sunos5-v9-cc-g++ \ | ||||
| ultrix-gcc: | ||||
| 	@ if test -f configs/current -o -L configs/current; then \ | ||||
| 		if ! cmp configs/$@ configs/current > /dev/null; then \ | ||||
| 			echo "Please run 'make realclean' before changing configs" ; \ | ||||
| 			exit 1 ; \ | ||||
| 		fi ; \ | ||||
| 	else \ | ||||
| 		cd configs && rm -f current && ln -s $@ current ; \ | ||||
| 	fi | ||||
| 	$(MAKE) default | ||||
|  | ||||
|  | ||||
| # Rules for making release tarballs | ||||
|  | ||||
| PACKAGE_VERSION=8.1-devel | ||||
| PACKAGE_DIR = Mesa-$(PACKAGE_VERSION) | ||||
| PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION) | ||||
|  | ||||
| EXTRA_FILES = \ | ||||
| 	aclocal.m4					\ | ||||
| 	configure					\ | ||||
| 	tests/Makefile.in				\ | ||||
| 	tests/glx/Makefile.in				\ | ||||
| 	src/glsl/glsl_parser.cpp			\ | ||||
| 	src/glsl/glsl_parser.h				\ | ||||
| 	src/glsl/glsl_lexer.cpp				\ | ||||
| 	src/glsl/glcpp/glcpp-lex.c			\ | ||||
| 	src/glsl/glcpp/glcpp-parse.c			\ | ||||
| 	src/glsl/glcpp/glcpp-parse.h			\ | ||||
| 	src/mesa/main/api_exec_es1.c			\ | ||||
| 	src/mesa/main/api_exec_es1_dispatch.h		\ | ||||
| 	src/mesa/main/api_exec_es1_remap_helper.h	\ | ||||
| 	src/mesa/main/api_exec_es2.c			\ | ||||
| 	src/mesa/main/api_exec_es2_dispatch.h		\ | ||||
| 	src/mesa/main/api_exec_es2_remap_helper.h	\ | ||||
| 	src/mesa/program/lex.yy.c			\ | ||||
| 	src/mesa/program/program_parse.tab.c		\ | ||||
| 	src/mesa/program/program_parse.tab.h | ||||
|  | ||||
| IGNORE_FILES = \ | ||||
| 	-x autogen.sh | ||||
|  | ||||
|  | ||||
| parsers: configure | ||||
| 	-@touch $(TOP)/configs/current | ||||
| 	$(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp | ||||
| 	$(MAKE) -C src/glsl/glcpp glcpp-lex.c glcpp-parse.c glcpp-parse.h | ||||
| 	$(MAKE) -C src/mesa program/lex.yy.c program/program_parse.tab.c program/program_parse.tab.h | ||||
|  | ||||
| # Everything for new a Mesa release: | ||||
| ARCHIVES = $(PACKAGE_NAME).tar.gz \ | ||||
| 	$(PACKAGE_NAME).tar.bz2 \ | ||||
| 	$(PACKAGE_NAME).zip \ | ||||
|  | ||||
| tarballs: md5 | ||||
| 	rm -f ../$(PACKAGE_DIR) $(PACKAGE_NAME).tar | ||||
|  | ||||
| # Helper for autoconf builds | ||||
| ACLOCAL = aclocal | ||||
| ACLOCAL_FLAGS = | ||||
| AUTOCONF = autoconf | ||||
| AC_FLAGS = | ||||
| aclocal.m4: configure.ac acinclude.m4 | ||||
| 	$(ACLOCAL) $(ACLOCAL_FLAGS) | ||||
| configure: configure.ac aclocal.m4 acinclude.m4 | ||||
| 	$(AUTOCONF) $(AC_FLAGS) | ||||
|  | ||||
| manifest.txt: .git | ||||
| 	( \ | ||||
| 		ls -1 $(EXTRA_FILES) ; \ | ||||
| 		git ls-files $(IGNORE_FILES) \ | ||||
| 	) | sed -e '/^\(.*\/\)\?\./d' -e "s@^@$(PACKAGE_DIR)/@" > $@ | ||||
|  | ||||
| ../$(PACKAGE_DIR): | ||||
| 	ln -s $(PWD) $@ | ||||
|  | ||||
| $(PACKAGE_NAME).tar: parsers ../$(PACKAGE_DIR) manifest.txt | ||||
| 	cd .. ; tar -cf $(PACKAGE_DIR)/$(PACKAGE_NAME).tar -T $(PACKAGE_DIR)/manifest.txt | ||||
|  | ||||
| $(PACKAGE_NAME).tar.gz: $(PACKAGE_NAME).tar ../$(PACKAGE_DIR) | ||||
| 	gzip --stdout --best $(PACKAGE_NAME).tar > $(PACKAGE_NAME).tar.gz | ||||
|  | ||||
| $(PACKAGE_NAME).tar.bz2: $(PACKAGE_NAME).tar | ||||
| 	bzip2 --stdout --best $(PACKAGE_NAME).tar > $(PACKAGE_NAME).tar.bz2 | ||||
|  | ||||
| $(PACKAGE_NAME).zip: parsers ../$(PACKAGE_DIR) manifest.txt | ||||
| 	rm -f $(PACKAGE_NAME).zip ; \ | ||||
| 	cd .. ; \ | ||||
| 	zip -q -@ $(PACKAGE_NAME).zip < $(PACKAGE_DIR)/manifest.txt ; \ | ||||
| 	mv $(PACKAGE_NAME).zip $(PACKAGE_DIR) | ||||
|  | ||||
| md5: $(ARCHIVES) | ||||
| 	@-md5sum $(PACKAGE_NAME).tar.gz | ||||
| 	@-md5sum $(PACKAGE_NAME).tar.bz2 | ||||
| 	@-md5sum $(PACKAGE_NAME).zip | ||||
|  | ||||
| am--refresh: | ||||
|  | ||||
| .PHONY: tarballs md5 am--refresh | ||||
							
								
								
									
										60
									
								
								README.rst
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								README.rst
									
									
									
									
									
								
							| @@ -1,60 +0,0 @@ | ||||
| `Mesa <https://mesa3d.org>`_ - The 3D Graphics Library | ||||
| ====================================================== | ||||
|  | ||||
|  | ||||
| Source | ||||
| ------ | ||||
|  | ||||
| This repository lives at https://gitlab.freedesktop.org/mesa/mesa. | ||||
| Other repositories are likely forks, and code found there is not supported. | ||||
|  | ||||
|  | ||||
| Build & install | ||||
| --------------- | ||||
|  | ||||
| You can find more information in our documentation (`docs/install.html | ||||
| <https://mesa3d.org/install.html>`_), but the recommended way is to use | ||||
| Meson (`docs/meson.html <https://mesa3d.org/meson.html>`_): | ||||
|  | ||||
| .. code-block:: sh | ||||
|  | ||||
|   $ mkdir build | ||||
|   $ cd build | ||||
|   $ meson .. | ||||
|   $ sudo ninja install | ||||
|  | ||||
|  | ||||
| Support | ||||
| ------- | ||||
|  | ||||
| Many Mesa devs hang on IRC; if you're not sure which channel is | ||||
| appropriate, you should ask your question on `Freenode's #dri-devel | ||||
| <irc://chat.freenode.net#dri-devel>`_, someone will redirect you if | ||||
| necessary. | ||||
| Remember that not everyone is in the same timezone as you, so it might | ||||
| take a while before someone qualified sees your question. | ||||
| To figure out who you're talking to, or which nick to ping for your | ||||
| question, check out `Who's Who on IRC | ||||
| <https://dri.freedesktop.org/wiki/WhosWho/>`_. | ||||
|  | ||||
| The next best option is to ask your question in an email to the | ||||
| mailing lists: `mesa-dev\@lists.freedesktop.org | ||||
| <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`_ | ||||
|  | ||||
|  | ||||
| Bug reports | ||||
| ----------- | ||||
|  | ||||
| If you think something isn't working properly, please file a bug report | ||||
| (`docs/bugs.html <https://mesa3d.org/bugs.html>`_). | ||||
|  | ||||
|  | ||||
| Contributing | ||||
| ------------ | ||||
|  | ||||
| Contributions are welcome, and step-by-step instructions can be found in our | ||||
| documentation (`docs/submittingpatches.html | ||||
| <https://mesa3d.org/submittingpatches.html>`_). | ||||
|  | ||||
| Note that Mesa uses email mailing-lists for patches submission, review and | ||||
| discussions. | ||||
							
								
								
									
										120
									
								
								REVIEWERS
									
									
									
									
									
								
							
							
						
						
									
										120
									
								
								REVIEWERS
									
									
									
									
									
								
							| @@ -1,120 +0,0 @@ | ||||
| Overview: | ||||
|  | ||||
| 	This file is similar in syntax (or more precisly a subset) of what is | ||||
| 	used by the MAINTAINERS file in the linux kernel. | ||||
| 	The purpose is not exactly the same the MAINTAINERS file in the linux | ||||
| 	kernel, as there are not official/formal maintainers of different | ||||
| 	subsystems in mesa, but is meant to give an idea of who to CC for | ||||
| 	various patches for review. | ||||
|  | ||||
| Descriptions of section entries: | ||||
|  | ||||
| 	R: Designated reviewer: FullName <address@domain> | ||||
| 	   These reviewers should be CCed on patches. | ||||
| 	F: Files and directories with wildcard patterns. | ||||
| 	   A trailing slash includes all files and subdirectory files. | ||||
| 	   F:	drivers/net/	all files in and below drivers/net | ||||
| 	   F:	drivers/net/*	all files in drivers/net, but not below | ||||
| 	   F:	*/net/*		all files in "any top level directory"/net | ||||
| 	   One pattern per line.  Multiple F: lines acceptable. | ||||
|  | ||||
| Maintainers List (try to look for most precise areas first) | ||||
|  | ||||
| Note: this is an opt-in system, I have not tried to add anyone who hasn't | ||||
| either asked me or sent a patch to add themselves. | ||||
|  | ||||
| 		----------------------------------- | ||||
|  | ||||
| NIR | ||||
| R:	Jason Ekstrand <jason@jlekstrand.net> | ||||
| F:	src/compiler/nir/ | ||||
|  | ||||
| DOCUMENTATION | ||||
| R: Emil Velikov <emil.l.velikov@gmail.com> | ||||
| R: Eric Engestrom <eric@engestrom.ch> | ||||
| F: docs/ | ||||
| F: doxygen/ | ||||
|  | ||||
| COMPATIBILITY HEADERS | ||||
| R: Emil Velikov <emil.l.velikov@gmail.com> | ||||
| F: include/c99* | ||||
|  | ||||
| DRI LOADER | ||||
| R: Emil Velikov <emil.l.velikov@gmail.com> | ||||
| F: src/loader/ | ||||
|  | ||||
| EGL | ||||
| R: Eric Engestrom <eric@engestrom.ch> | ||||
| R: Emil Velikov <emil.l.velikov@gmail.com> | ||||
| F: src/egl/ | ||||
| F: include/EGL/ | ||||
|  | ||||
| HAIKU | ||||
| R: Alexander von Gluck IV <kallisti5@unixzen.com> | ||||
| F: include/HaikuGL/ | ||||
| F: src/egl/drivers/haiku/ | ||||
| F: src/gallium/state_trackers/hgl/ | ||||
| F: src/gallium/targets/haiku-softpipe/ | ||||
| F: src/gallium/winsys/sw/hgl/ | ||||
| F: src/hgl/ | ||||
|  | ||||
| GALLIUM LOADER | ||||
| R: Emil Velikov <emil.l.velikov@gmail.com> | ||||
| F: src/gallium/auxiliary/pipe-loader/ | ||||
| F: src/gallium/auxiliary/target-helpers/ | ||||
|  | ||||
| GALLIUM TARGETS | ||||
| R: Emil Velikov <emil.l.velikov@gmail.com> | ||||
| F: src/gallium/targets/ | ||||
|  | ||||
| SCONS BUILD | ||||
| F: scons/ | ||||
| F: */SConscript* | ||||
| F: */Makefile.sources | ||||
|  | ||||
| ANDROID BUILD | ||||
| R: Emil Velikov <emil.l.velikov@gmail.com> | ||||
| R: Rob Herring <robh@kernel.org> | ||||
| F: CleanSpec.mk | ||||
| F: */Android.*mk | ||||
| F: */Makefile.sources | ||||
|  | ||||
| MESON BUILD | ||||
| R: Dylan Baker <dylan@pnwbakers.com> | ||||
| R: Eric Engestrom <eric@engestrom.ch> | ||||
| F: */meson.build | ||||
| F: meson.build | ||||
| F: meson_options.txt | ||||
|  | ||||
| ANDROID EGL SUPPORT | ||||
| R: Rob Herring <robh@kernel.org> | ||||
| R: Tomasz Figa <tfiga@chromium.org> | ||||
| F: src/egl/drivers/dri2/platform_android.c | ||||
|  | ||||
| WAYLAND EGL SUPPORT | ||||
| R: Daniel Stone <daniels@collabora.com> | ||||
| F: src/egl/wayland/* | ||||
| F: src/egl/drivers/dri2/platform_wayland.c | ||||
|  | ||||
| FREEDRENO | ||||
| R:	Rob Clark <robclark@freedesktop.org> | ||||
| F:	src/gallium/drivers/freedreno/ | ||||
|  | ||||
| GLX | ||||
| R: Adam Jackson <ajax@redhat.com> | ||||
| F: src/glx/ | ||||
|  | ||||
| VULKAN | ||||
| R: Eric Engestrom <eric@engestrom.ch> | ||||
| F: src/vulkan/ | ||||
| F: include/vulkan/ | ||||
|  | ||||
| VMWARE DRIVER | ||||
| R: Brian Paul <brianp@vmware.com> | ||||
| R: Charmaine Lee <charmainel@vmware.com> | ||||
| F: src/gallium/drivers/svga/ | ||||
|  | ||||
| VMWARE WINSYS CODE | ||||
| R: Thomas Hellstrom <thellstrom@vmware.com> | ||||
| R: Deepak Rawat <drawat@vmware.com> | ||||
| F: src/gallium/winsys/svga/ | ||||
							
								
								
									
										74
									
								
								SConstruct
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								SConstruct
									
									
									
									
									
								
							| @@ -1,7 +1,7 @@ | ||||
| ####################################################################### | ||||
| # Top-level SConstruct | ||||
| # | ||||
| # For example, invoke scons as | ||||
| # For example, invoke scons as  | ||||
| # | ||||
| #   scons build=debug llvm=yes machine=x86 | ||||
| # | ||||
| @@ -12,15 +12,14 @@ | ||||
| #   build='debug' | ||||
| #   llvm=True | ||||
| #   machine='x86' | ||||
| # | ||||
| #  | ||||
| # Invoke | ||||
| # | ||||
| #   scons -h | ||||
| # | ||||
| # to get the full list of options. See scons manpage for more info. | ||||
| # | ||||
| #   | ||||
|  | ||||
| from __future__ import print_function | ||||
| import os | ||||
| import os.path | ||||
| import sys | ||||
| @@ -28,13 +27,6 @@ import SCons.Util | ||||
|  | ||||
| import common | ||||
|  | ||||
| ####################################################################### | ||||
| # Minimal scons version | ||||
|  | ||||
| EnsureSConsVersion(2, 4) | ||||
| EnsurePythonVersion(2, 7) | ||||
|  | ||||
|  | ||||
| ####################################################################### | ||||
| # Configuration options | ||||
|  | ||||
| @@ -44,7 +36,7 @@ common.AddOptions(opts) | ||||
| env = Environment( | ||||
| 	options = opts, | ||||
| 	tools = ['gallium'], | ||||
| 	toolpath = ['#scons'], | ||||
| 	toolpath = ['#scons'],	 | ||||
| 	ENV = os.environ, | ||||
| ) | ||||
|  | ||||
| @@ -58,45 +50,25 @@ except KeyError: | ||||
|     pass | ||||
| else: | ||||
|     targets = targets.split(',') | ||||
|     print('scons: warning: targets option is deprecated; pass the targets on their own such as') | ||||
|     print() | ||||
|     print('  scons %s' % ' '.join(targets)) | ||||
|     print() | ||||
|     print 'scons: warning: targets option is deprecated; pass the targets on their own such as' | ||||
|     print | ||||
|     print '  scons %s' % ' '.join(targets) | ||||
|     print  | ||||
|     COMMAND_LINE_TARGETS.append(targets) | ||||
|  | ||||
|  | ||||
| Help(opts.GenerateHelpText(env)) | ||||
|  | ||||
|  | ||||
| ####################################################################### | ||||
| # Print a deprecation warning for using scons on non-windows | ||||
|  | ||||
| if common.host_platform != 'windows' and env['platform'] != 'windows': | ||||
|     if env['force_scons']: | ||||
|         print("WARNING: Scons is deprecated for non-windows platforms (including cygwin) " | ||||
|               "please use meson instead.", file=sys.stderr) | ||||
|     else: | ||||
|         print("ERROR: Scons is deprecated for non-windows platforms (including cygwin) " | ||||
|               "please use meson instead. If you really need to use scons you " | ||||
|               "can add `force_scons=1` to the scons command line.", file=sys.stderr) | ||||
|         sys.exit(1) | ||||
| else: | ||||
|     print("WARNING: Scons support is in the process of being deprecated on " | ||||
|           "on windows platforms (including mingw). If you haven't already " | ||||
|           "please try using meson for windows builds. Be sure to report any " | ||||
|           "issues you run into", file=sys.stderr) | ||||
|  | ||||
| # fail early for a common error on windows | ||||
| if env['gles']: | ||||
|     try: | ||||
|         import libxml2 | ||||
|     except ImportError: | ||||
|         raise SCons.Errors.UserError, "GLES requires libxml2-python to build" | ||||
|  | ||||
| ####################################################################### | ||||
| # Environment setup | ||||
|  | ||||
| with open("VERSION") as f: | ||||
|   mesa_version = f.read().strip() | ||||
| env.Append(CPPDEFINES = [ | ||||
|     ('PACKAGE_VERSION', '\\"%s\\"' % mesa_version), | ||||
|     ('PACKAGE_BUGREPORT', '\\"https://gitlab.freedesktop.org/mesa/mesa/issues\\"'), | ||||
| ]) | ||||
|  | ||||
| # Includes | ||||
| env.Prepend(CPPPATH = [ | ||||
| 	'#/include', | ||||
| @@ -108,18 +80,16 @@ env.Append(CPPPATH = [ | ||||
| 	'#/src/gallium/winsys', | ||||
| ]) | ||||
|  | ||||
| if env['msvc']: | ||||
|     env.Append(CPPPATH = ['#include/c99']) | ||||
|  | ||||
| # for debugging | ||||
| #print env.Dump() | ||||
|  | ||||
|  | ||||
| # Add a check target for running tests | ||||
| check = env.Alias('check') | ||||
| env.AlwaysBuild(check) | ||||
|  | ||||
|  | ||||
| ####################################################################### | ||||
| # Invoke host SConscripts | ||||
| # | ||||
| # Invoke host SConscripts  | ||||
| #  | ||||
| # For things that are meant to be run on the native host build machine, instead | ||||
| # of the target machine. | ||||
| # | ||||
| @@ -145,6 +115,9 @@ if env['crosscompile'] and not env['embedded']: | ||||
|     host_env['hostonly'] = True | ||||
|     assert host_env['crosscompile'] == False | ||||
|  | ||||
|     if host_env['msvc']: | ||||
|         host_env.Append(CPPPATH = ['#include/c99']) | ||||
|  | ||||
|     target_env = env | ||||
|     env = host_env | ||||
|     Export('env') | ||||
| @@ -180,7 +153,8 @@ try: | ||||
| except ImportError: | ||||
|     pass | ||||
| else: | ||||
|     aliases = sorted(default_ans.keys()) | ||||
|     aliases = default_ans.keys() | ||||
|     aliases.sort() | ||||
|     env.Help('\n') | ||||
|     env.Help('Recognized targets:\n') | ||||
|     for alias in aliases: | ||||
|   | ||||
							
								
								
									
										119
									
								
								acinclude.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								acinclude.m4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,119 @@ | ||||
| # A few convenience macros for Mesa, mostly to keep all the platform | ||||
| # specifics out of configure.ac. | ||||
|  | ||||
| # MESA_PIC_FLAGS() | ||||
| # | ||||
| # Find out whether to build PIC code using the option --enable-pic and | ||||
| # the configure enable_static/enable_shared settings. If PIC is needed, | ||||
| # figure out the necessary flags for the platform and compiler. | ||||
| # | ||||
| # The platform checks have been shamelessly taken from libtool and | ||||
| # stripped down to just what's needed for Mesa. See _LT_COMPILER_PIC in | ||||
| # /usr/share/aclocal/libtool.m4 or | ||||
| # http://git.savannah.gnu.org/gitweb/?p=libtool.git;a=blob;f=libltdl/m4/libtool.m4;hb=HEAD | ||||
| # | ||||
| AC_DEFUN([MESA_PIC_FLAGS], | ||||
| [AC_REQUIRE([AC_PROG_CC])dnl | ||||
| AC_ARG_VAR([PIC_FLAGS], [compiler flags for PIC code]) | ||||
| AC_ARG_ENABLE([pic], | ||||
|     [AS_HELP_STRING([--disable-pic], | ||||
|         [compile PIC objects @<:@default=enabled for shared builds | ||||
|         on supported platforms@:>@])], | ||||
|     [enable_pic="$enableval" | ||||
|     test "x$enable_pic" = x && enable_pic=auto], | ||||
|     [enable_pic=auto]) | ||||
| # disable PIC by default for static builds | ||||
| if test "$enable_pic" = auto && test "$enable_static" = yes; then | ||||
|     enable_pic=no | ||||
| fi | ||||
| # if PIC hasn't been explicitly disabled, try to figure out the flags | ||||
| if test "$enable_pic" != no; then | ||||
|     AC_MSG_CHECKING([for $CC option to produce PIC]) | ||||
|     # allow the user's flags to override | ||||
|     if test "x$PIC_FLAGS" = x; then | ||||
|         # see if we're using GCC | ||||
|         if test "x$GCC" = xyes; then | ||||
|             case "$host_os" in | ||||
|             aix*|beos*|cygwin*|irix5*|irix6*|osf3*|osf4*|osf5*) | ||||
|                 # PIC is the default for these OSes. | ||||
|                 ;; | ||||
|             mingw*|os2*|pw32*) | ||||
|                 # This hack is so that the source file can tell whether | ||||
|                 # it is being built for inclusion in a dll (and should | ||||
|                 # export symbols for example). | ||||
|                 PIC_FLAGS="-DDLL_EXPORT" | ||||
|                 ;; | ||||
|             darwin*|rhapsody*) | ||||
|                 # PIC is the default on this platform | ||||
|                 # Common symbols not allowed in MH_DYLIB files | ||||
|                 PIC_FLAGS="-fno-common" | ||||
|                 ;; | ||||
|             hpux*) | ||||
|                 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, | ||||
|                 # but not for PA HP-UX. | ||||
|                 case $host_cpu in | ||||
|                 hppa*64*|ia64*) | ||||
|                     ;; | ||||
|                 *) | ||||
|                     PIC_FLAGS="-fPIC" | ||||
|                     ;; | ||||
|                 esac | ||||
|                 ;; | ||||
|             *) | ||||
|                 # Everyone else on GCC uses -fPIC | ||||
|                 PIC_FLAGS="-fPIC" | ||||
|                 ;; | ||||
|             esac | ||||
|         else # !GCC | ||||
|             case "$host_os" in | ||||
|             hpux9*|hpux10*|hpux11*) | ||||
|                 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, | ||||
|                 # but not for PA HP-UX. | ||||
|                 case "$host_cpu" in | ||||
|                 hppa*64*|ia64*) | ||||
|                     # +Z the default | ||||
|                     ;; | ||||
|                 *) | ||||
|                     PIC_FLAGS="+Z" | ||||
|                     ;; | ||||
|                 esac | ||||
|                 ;; | ||||
|             linux*|k*bsd*-gnu) | ||||
|                 case `basename "$CC"` in | ||||
|                 icc*|ecc*|ifort*) | ||||
|                     PIC_FLAGS="-KPIC" | ||||
|                     ;; | ||||
|                 pgcc*|pgf77*|pgf90*|pgf95*) | ||||
|                     # Portland Group compilers (*not* the Pentium gcc | ||||
|                     # compiler, which looks to be a dead project) | ||||
|                     PIC_FLAGS="-fpic" | ||||
|                     ;; | ||||
|                 ccc*) | ||||
|                     # All Alpha code is PIC. | ||||
|                     ;; | ||||
|                 xl*) | ||||
|                     # IBM XL C 8.0/Fortran 10.1 on PPC | ||||
|                     PIC_FLAGS="-qpic" | ||||
|                     ;; | ||||
|                 *) | ||||
|                     case `$CC -V 2>&1 | sed 5q` in | ||||
|                     *Sun\ C*|*Sun\ F*) | ||||
|                         # Sun C 5.9 or Sun Fortran | ||||
|                         PIC_FLAGS="-KPIC" | ||||
|                         ;; | ||||
|                     esac | ||||
|                 esac | ||||
|                 ;; | ||||
|             solaris*) | ||||
|                 PIC_FLAGS="-KPIC" | ||||
|                 ;; | ||||
|             sunos4*) | ||||
|                 PIC_FLAGS="-PIC" | ||||
|                 ;; | ||||
|             esac | ||||
|         fi # GCC | ||||
|     fi # PIC_FLAGS | ||||
|     AC_MSG_RESULT([$PIC_FLAGS]) | ||||
| fi | ||||
| AC_SUBST([PIC_FLAGS]) | ||||
| ])# MESA_PIC_FLAGS | ||||
							
								
								
									
										73
									
								
								appveyor.yml
									
									
									
									
									
								
							
							
						
						
									
										73
									
								
								appveyor.yml
									
									
									
									
									
								
							| @@ -1,73 +0,0 @@ | ||||
| # http://www.appveyor.com/docs/appveyor-yml | ||||
| # | ||||
| # To setup AppVeyor for your own personal repositories do the following: | ||||
| # - Sign up | ||||
| # - Add a new project | ||||
| # - Select Git and fill in the Git clone URL | ||||
| # - Setup a Git hook as explained in | ||||
| #   https://github.com/appveyor/webhooks#installing-git-hook | ||||
| # - Check 'Settings > General > Skip branches without appveyor.yml' | ||||
| # - Check 'Settings > General > Rolling builds' | ||||
| # - Setup the global or project notifications to your liking | ||||
| # | ||||
| # Note that kicking (or restarting) a build via the web UI will not work, as it | ||||
| # will fail to find appveyor.yml .  The Git hook is the most practical way to | ||||
| # kick a build. | ||||
| # | ||||
| # See also: | ||||
| # - http://help.appveyor.com/discussions/problems/2209-node-grunt-build-specify-a-project-or-solution-file-the-directory-does-not-contain-a-project-or-solution-file | ||||
| # - http://help.appveyor.com/discussions/questions/1184-build-config-vs-appveyoryaml | ||||
|  | ||||
| version: '{build}' | ||||
|  | ||||
| branches: | ||||
|   except: | ||||
|   - /^travis.*$/ | ||||
|  | ||||
| # Don't download the full Mesa history to speed up cloning.  However the clone | ||||
| # depth must not be too small, otherwise builds might fail when lots of patches | ||||
| # are committed in succession, because the desired commit is not found on the | ||||
| # truncated history. | ||||
| # | ||||
| # See also: | ||||
| # - https://www.appveyor.com/blog/2014/06/04/shallow-clone-for-git-repositories | ||||
| clone_depth: 100 | ||||
|  | ||||
| # https://www.appveyor.com/docs/build-cache/ | ||||
| cache: | ||||
| - '%LOCALAPPDATA%\pip\Cache -> appveyor.yml' | ||||
| - win_flex_bison-2.5.15.zip | ||||
| - llvm-5.0.1-msvc2017-mtd.7z | ||||
| - subprojects\packagecache -> subprojects\*.wrap | ||||
|  | ||||
| os: Visual Studio 2017 | ||||
|  | ||||
| init: | ||||
| # Appveyor defaults core.autocrlf to input instead of the default (true), but | ||||
| # that can hide problems processing CRLF text on Windows | ||||
| - git config --global core.autocrlf true | ||||
|  | ||||
| environment: | ||||
|   WINFLEXBISON_VERSION: 2.5.15 | ||||
|   LLVM_ARCHIVE: llvm-5.0.1-msvc2017-mtd.7z | ||||
|   matrix: | ||||
|   - compiler: msvc | ||||
|     buildsystem: scons | ||||
|   - compiler: msvc | ||||
|     buildsystem: meson | ||||
|     path: C:\Python37-x64;C:\Python37-x64\Scripts;%path% | ||||
|  | ||||
| install: | ||||
| - cmd: .appveyor\appveyor_msvc.bat install | ||||
|  | ||||
| build_script: | ||||
| - cmd: .appveyor\appveyor_msvc.bat build_script | ||||
|  | ||||
| test_script: | ||||
| - cmd: .appveyor\appveyor_msvc.bat test_script | ||||
|  | ||||
| # It's possible to setup notification here, as described in | ||||
| # http://www.appveyor.com/docs/notifications#appveyor-yml-configuration , but | ||||
| # doing so would cause the notification settings to be replicated across all | ||||
| # repos, which is most likely undesired.  So it's better to rely on the | ||||
| # Appveyor global/project notification settings. | ||||
							
								
								
									
										20
									
								
								autogen.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								autogen.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| #! /bin/sh | ||||
|  | ||||
| srcdir=`dirname "$0"` | ||||
| test -z "$srcdir" && srcdir=. | ||||
|  | ||||
| SRCDIR=`(cd "$srcdir" && pwd)` | ||||
| ORIGDIR=`pwd` | ||||
|  | ||||
| if test "x$SRCDIR" != "x$ORIGDIR"; then | ||||
| 	echo "Mesa cannot be built when srcdir != builddir" 1>&2 | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| MAKEFLAGS="" | ||||
|  | ||||
| autoreconf -v --install || exit 1 | ||||
|  | ||||
| if test -z "$NOCONFIGURE"; then | ||||
|     "$srcdir"/configure "$@" | ||||
| fi | ||||
| @@ -1,6 +0,0 @@ | ||||
| # This is reverted shortly after landing | ||||
| 4432a2d14d80081d062f7939a950d65ea3a16eed | ||||
|  | ||||
| # This was manually backported | ||||
| 21be5c8edd3ad156f6cbfbceb96e7939716d9f2c | ||||
| 4b392ced2d744fccffe95490ff57e6b41033c266 | ||||
| @@ -1,2 +0,0 @@ | ||||
| [*.sh] | ||||
| indent_style = tab | ||||
							
								
								
									
										7
									
								
								bin/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								bin/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| config.guess | ||||
| config.sub | ||||
| install-sh | ||||
| /depcomp | ||||
| /missing | ||||
| ylwrap | ||||
| compile | ||||
							
								
								
									
										48
									
								
								bin/confdiff.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										48
									
								
								bin/confdiff.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| #!/bin/bash -e | ||||
|  | ||||
| usage() | ||||
| { | ||||
| 	echo "Usage: $0 <target1> <target2>" | ||||
| 	echo "Highlight differences between Mesa configs" | ||||
| 	echo "Example:" | ||||
| 	echo "  $0 linux linux-x86" | ||||
| } | ||||
|  | ||||
| die() | ||||
| { | ||||
| 	echo "$@" >&2 | ||||
| 	return 1 | ||||
| } | ||||
|  | ||||
| case "$1" in | ||||
| -h|--help) usage; exit 0;; | ||||
| esac | ||||
|  | ||||
| [ $# -lt 2 ] && die 2 targets needed. See $0 --help | ||||
| target1=$1 | ||||
| target2=$2 | ||||
|  | ||||
| topdir=$(cd "`dirname $0`"/..; pwd) | ||||
| cd "$topdir" | ||||
|  | ||||
| [ -f "./configs/$target1" ] || die Missing configs/$target1 | ||||
| [ -f "./configs/$target2" ] || die Missing configs/$target2 | ||||
|  | ||||
| trap 'rm -f "$t1" "$t2"' 0 | ||||
|  | ||||
| t1=$(mktemp) | ||||
| t2=$(mktemp) | ||||
|  | ||||
| make -f- -n -p <<EOF | sed '/^# Not a target/,/^$/d' > $t1 | ||||
| TOP = . | ||||
| include \$(TOP)/configs/$target1 | ||||
| default: | ||||
| EOF | ||||
|  | ||||
| make -f- -n -p <<EOF | sed '/^# Not a target/,/^$/d' > $t2 | ||||
| TOP = . | ||||
| include \$(TOP)/configs/$target2 | ||||
| default: | ||||
| EOF | ||||
|  | ||||
| diff -pu -I'^#' $t1 $t2 | ||||
							
								
								
									
										20
									
								
								bin/extract_git_sha1
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								bin/extract_git_sha1
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| #!/bin/sh | ||||
| if [ ! -f src/mesa/main/git_sha1.h ]; then | ||||
| 	touch src/mesa/main/git_sha1.h | ||||
| fi | ||||
|  | ||||
| if [ ! -d .git ]; then | ||||
| 	exit | ||||
| fi | ||||
|  | ||||
| if which git > /dev/null; then | ||||
|     # Extract the 7-digit "short" SHA1 for the current HEAD, convert | ||||
|     # it to a string, and wrap it in a #define.  This is used in | ||||
|     # src/mesa/main/version.c to put the GIT SHA1 in the GL_VERSION string. | ||||
|     git log -n 1 --oneline |\ | ||||
| 	sed 's/^\([^ ]*\) .*/#define MESA_GIT_SHA1 "git-\1"/' \ | ||||
| 	> src/mesa/main/git_sha1.h.tmp | ||||
|     if ! cmp -s src/mesa/main/git_sha1.h.tmp src/mesa/main/git_sha1.h; then | ||||
|     	mv src/mesa/main/git_sha1.h.tmp src/mesa/main/git_sha1.h | ||||
|     fi | ||||
| fi | ||||
| @@ -1,272 +0,0 @@ | ||||
| #!/usr/bin/env python3 | ||||
| # Copyright © 2019 Intel Corporation | ||||
|  | ||||
| # Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| # of this software and associated documentation files (the "Software"), to deal | ||||
| # in the Software without restriction, including without limitation the rights | ||||
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| # copies of the Software, and to permit persons to whom the Software is | ||||
| # furnished to do so, subject to the following conditions: | ||||
|  | ||||
| # The above copyright notice and this permission notice shall be included in | ||||
| # all copies or substantial portions of the Software. | ||||
|  | ||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| # SOFTWARE. | ||||
|  | ||||
| """Generates release notes for a given version of mesa.""" | ||||
|  | ||||
| import asyncio | ||||
| import datetime | ||||
| import os | ||||
| import pathlib | ||||
| import sys | ||||
| import textwrap | ||||
| import typing | ||||
| import urllib.parse | ||||
|  | ||||
| import aiohttp | ||||
| from mako.template import Template | ||||
| from mako import exceptions | ||||
|  | ||||
|  | ||||
| CURRENT_GL_VERSION = '4.6' | ||||
| CURRENT_VK_VERSION = '1.1' | ||||
|  | ||||
| TEMPLATE = Template(textwrap.dedent("""\ | ||||
|     <%! | ||||
|         import html | ||||
|     %> | ||||
|     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | ||||
|     <html lang="en"> | ||||
|     <head> | ||||
|     <meta http-equiv="content-type" content="text/html; charset=utf-8"> | ||||
|     <title>Mesa Release Notes</title> | ||||
|     <link rel="stylesheet" type="text/css" href="../mesa.css"> | ||||
|     </head> | ||||
|     <body> | ||||
|  | ||||
|     <div class="header"> | ||||
|     <h1>The Mesa 3D Graphics Library</h1> | ||||
|     </div> | ||||
|  | ||||
|     <iframe src="../contents.html"></iframe> | ||||
|     <div class="content"> | ||||
|  | ||||
|     <h1>Mesa ${next_version} Release Notes / ${today}</h1> | ||||
|  | ||||
|     <p> | ||||
|     %if not bugfix: | ||||
|         Mesa ${next_version} is a new development release. People who are concerned | ||||
|         with stability and reliability should stick with a previous release or | ||||
|         wait for Mesa ${version[:-1]}1. | ||||
|     %else: | ||||
|         Mesa ${next_version} is a bug fix release which fixes bugs found since the ${version} release. | ||||
|     %endif | ||||
|     </p> | ||||
|     <p> | ||||
|     Mesa ${next_version} implements the OpenGL ${gl_version} API, but the version reported by | ||||
|     glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / | ||||
|     glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. | ||||
|     Some drivers don't support all the features required in OpenGL ${gl_version}. OpenGL | ||||
|     ${gl_version} is <strong>only</strong> available if requested at context creation. | ||||
|     Compatibility contexts may report a lower version depending on each driver. | ||||
|     </p> | ||||
|     <p> | ||||
|     Mesa ${next_version} implements the Vulkan ${vk_version} API, but the version reported by | ||||
|     the apiVersion property of the VkPhysicalDeviceProperties struct | ||||
|     depends on the particular driver being used. | ||||
|     </p> | ||||
|  | ||||
|     <h2>SHA256 checksum</h2> | ||||
|     <pre> | ||||
|     TBD. | ||||
|     </pre> | ||||
|  | ||||
|  | ||||
|     <h2>New features</h2> | ||||
|  | ||||
|     <ul> | ||||
|     %for f in features: | ||||
|         <li>${html.escape(f)}</li> | ||||
|     %endfor | ||||
|     </ul> | ||||
|  | ||||
|     <h2>Bug fixes</h2> | ||||
|  | ||||
|     <ul> | ||||
|     %for b in bugs: | ||||
|         <li>${html.escape(b)}</li> | ||||
|     %endfor | ||||
|     </ul> | ||||
|  | ||||
|     <h2>Changes</h2> | ||||
|  | ||||
|     <ul> | ||||
|     %for c, author in changes: | ||||
|       %if author: | ||||
|         <p>${html.escape(c)}</p> | ||||
|       %else: | ||||
|         <li>${html.escape(c)}</li> | ||||
|       %endif | ||||
|     %endfor | ||||
|     </ul> | ||||
|  | ||||
|     </div> | ||||
|     </body> | ||||
|     </html> | ||||
|     """)) | ||||
|  | ||||
|  | ||||
| async def gather_commits(version: str) -> str: | ||||
|     p = await asyncio.create_subprocess_exec( | ||||
|         'git', 'log', f'mesa-{version}..', '--grep', r'Closes: \(https\|#\).*', | ||||
|         stdout=asyncio.subprocess.PIPE) | ||||
|     out, _ = await p.communicate() | ||||
|     assert p.returncode == 0, f"git log didn't work: {version}" | ||||
|     return out.decode().strip() | ||||
|  | ||||
|  | ||||
| async def gather_bugs(version: str) -> typing.List[str]: | ||||
|     commits = await gather_commits(version) | ||||
|  | ||||
|     issues: typing.List[str] = [] | ||||
|     for commit in commits.split('\n'): | ||||
|         sha, message = commit.split(maxsplit=1) | ||||
|         p = await asyncio.create_subprocess_exec( | ||||
|             'git', 'log', '--max-count', '1', r'--format=%b', sha, | ||||
|             stdout=asyncio.subprocess.PIPE) | ||||
|         _out, _ = await p.communicate() | ||||
|         out = _out.decode().split('\n') | ||||
|         for line in reversed(out): | ||||
|             if line.startswith('Closes:'): | ||||
|                 bug = line.lstrip('Closes:').strip() | ||||
|                 break | ||||
|         else: | ||||
|             raise Exception('No closes found?') | ||||
|         if bug.startswith('h'): | ||||
|             # This means we have a bug in the form "Closes: https://..." | ||||
|             issues.append(os.path.basename(urllib.parse.urlparse(bug).path)) | ||||
|         else: | ||||
|             issues.append(bug.lstrip('#')) | ||||
|  | ||||
|     loop = asyncio.get_event_loop() | ||||
|     async with aiohttp.ClientSession(loop=loop) as session: | ||||
|         results = await asyncio.gather(*[get_bug(session, i) for i in issues]) | ||||
|     typing.cast(typing.Tuple[str, ...], results) | ||||
|     return list(results) | ||||
|  | ||||
|  | ||||
| async def get_bug(session: aiohttp.ClientSession, bug_id: str) -> str: | ||||
|     """Query gitlab to get the name of the issue that was closed.""" | ||||
|     # Mesa's gitlab id is 176, | ||||
|     url = 'https://gitlab.freedesktop.org/api/v4/projects/176/issues' | ||||
|     params = {'iids[]': bug_id} | ||||
|     async with session.get(url, params=params) as response: | ||||
|         content = await response.json() | ||||
|     return content[0]['title'] | ||||
|  | ||||
|  | ||||
| async def get_shortlog(version: str) -> str: | ||||
|     """Call git shortlog.""" | ||||
|     p = await asyncio.create_subprocess_exec('git', 'shortlog', f'mesa-{version}..', | ||||
|                                              stdout=asyncio.subprocess.PIPE) | ||||
|     out, _ = await p.communicate() | ||||
|     assert p.returncode == 0, 'error getting shortlog' | ||||
|     assert out is not None, 'just for mypy' | ||||
|     return out.decode() | ||||
|  | ||||
|  | ||||
| def walk_shortlog(log: str) -> typing.Generator[typing.Tuple[str, bool], None, None]: | ||||
|     for l in log.split('\n'): | ||||
|         if l.startswith(' '): # this means we have a patch description | ||||
|             yield l, False | ||||
|         else: | ||||
|             yield l, True | ||||
|  | ||||
|  | ||||
| def calculate_next_version(version: str, is_point: bool) -> str: | ||||
|     """Calculate the version about to be released.""" | ||||
|     if '-' in version: | ||||
|         version = version.split('-')[0] | ||||
|     if is_point: | ||||
|         base = version.split('.') | ||||
|         base[2] = str(int(base[2]) + 1) | ||||
|         return '.'.join(base) | ||||
|     return version | ||||
|  | ||||
|  | ||||
| def calculate_previous_version(version: str, is_point: bool) -> str: | ||||
|     """Calculate the previous version to compare to. | ||||
|  | ||||
|     In the case of -rc to final that verison is the previous .0 release, | ||||
|     (19.3.0 in the case of 20.0.0, for example). for point releases that is | ||||
|     the last point release. This value will be the same as the input value | ||||
|     for a point release, but different for a major release. | ||||
|     """ | ||||
|     if '-' in version: | ||||
|         version = version.split('-')[0] | ||||
|     if is_point: | ||||
|         return version | ||||
|     base = version.split('.') | ||||
|     if base[1] == '0': | ||||
|         base[0] = str(int(base[0]) - 1) | ||||
|         base[1] = '3' | ||||
|     else: | ||||
|         base[1] = str(int(base[1]) - 1) | ||||
|     return '.'.join(base) | ||||
|  | ||||
|  | ||||
| def get_features(is_point_release: bool) -> typing.Generator[str, None, None]: | ||||
|     p = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes' / 'new_features.txt' | ||||
|     if p.exists(): | ||||
|         if is_point_release: | ||||
|             print("WARNING: new features being introduced in a point release", file=sys.stderr) | ||||
|         with p.open('rt') as f: | ||||
|             for line in f: | ||||
|                 yield line | ||||
|     else: | ||||
|         yield "None" | ||||
|  | ||||
|  | ||||
| async def main() -> None: | ||||
|     v = pathlib.Path(__file__).parent.parent / 'VERSION' | ||||
|     with v.open('rt') as f: | ||||
|         raw_version = f.read().strip() | ||||
|     is_point_release = '-rc' not in raw_version | ||||
|     assert '-devel' not in raw_version, 'Do not run this script on -devel' | ||||
|     version = raw_version.split('-')[0] | ||||
|     previous_version = calculate_previous_version(version, is_point_release) | ||||
|     next_version = calculate_next_version(version, is_point_release) | ||||
|  | ||||
|     shortlog, bugs = await asyncio.gather( | ||||
|         get_shortlog(previous_version), | ||||
|         gather_bugs(previous_version), | ||||
|     ) | ||||
|  | ||||
|     final = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes' / f'{next_version}.html' | ||||
|     with final.open('wt') as f: | ||||
|         try: | ||||
|             f.write(TEMPLATE.render( | ||||
|                 bugfix=is_point_release, | ||||
|                 bugs=bugs, | ||||
|                 changes=walk_shortlog(shortlog), | ||||
|                 features=get_features(is_point_release), | ||||
|                 gl_version=CURRENT_GL_VERSION, | ||||
|                 next_version=next_version, | ||||
|                 today=datetime.date.today(), | ||||
|                 version=previous_version, | ||||
|                 vk_version=CURRENT_VK_VERSION, | ||||
|             )) | ||||
|         except: | ||||
|             print(exceptions.text_error_template().render()) | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     loop = asyncio.get_event_loop() | ||||
|     loop.run_until_complete(main()) | ||||
| @@ -1,62 +0,0 @@ | ||||
| # Copyright © 2019 Intel Corporation | ||||
|  | ||||
| # Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| # of this software and associated documentation files (the "Software"), to deal | ||||
| # in the Software without restriction, including without limitation the rights | ||||
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| # copies of the Software, and to permit persons to whom the Software is | ||||
| # furnished to do so, subject to the following conditions: | ||||
|  | ||||
| # The above copyright notice and this permission notice shall be included in | ||||
| # all copies or substantial portions of the Software. | ||||
|  | ||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| # SOFTWARE. | ||||
|  | ||||
| from unittest import mock | ||||
|  | ||||
| import pytest | ||||
|  | ||||
| from .gen_release_notes import * | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize( | ||||
|     'current, is_point, expected', | ||||
|     [ | ||||
|         ('19.2.0', True, '19.2.1'), | ||||
|         ('19.3.6', True, '19.3.7'), | ||||
|         ('20.0.0-rc4', False, '20.0.0'), | ||||
|     ]) | ||||
| def test_next_version(current: str, is_point: bool, expected: str) -> None: | ||||
|     assert calculate_next_version(current, is_point) == expected | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize( | ||||
|     'current, is_point, expected', | ||||
|     [ | ||||
|         ('19.3.6', True, '19.3.6'), | ||||
|         ('20.0.0-rc4', False, '19.3.0'), | ||||
|     ]) | ||||
| def test_previous_version(current: str, is_point: bool, expected: str) -> None: | ||||
|     assert calculate_previous_version(current, is_point) == expected | ||||
|  | ||||
|  | ||||
| @pytest.mark.asyncio | ||||
| async def test_get_shortlog(): | ||||
|     # Certainly not perfect, but it's something | ||||
|     version = '19.2.0' | ||||
|     out = await get_shortlog(version) | ||||
|     assert out | ||||
|  | ||||
|  | ||||
| @pytest.mark.asyncio | ||||
| async def test_gather_commits(): | ||||
|     # Certainly not perfect, but it's something | ||||
|     version = '19.2.0' | ||||
|     out = await gather_commits(version) | ||||
|     assert out | ||||
| @@ -1,45 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # Script for generating a list of candidates which fix commits that have been | ||||
| # previously cherry-picked to a stable branch. | ||||
| # | ||||
| # Usage examples: | ||||
| # | ||||
| # $ bin/get-extra-pick-list.sh | ||||
| # $ bin/get-extra-pick-list.sh > picklist | ||||
| # $ bin/get-extra-pick-list.sh | tee picklist | ||||
|  | ||||
| # Use the last branchpoint as our limit for the search | ||||
| latest_branchpoint=`git merge-base origin/master HEAD` | ||||
|  | ||||
| # Grep for commits with "cherry picked from commit" in the commit message. | ||||
| git log --reverse --grep="cherry picked from commit" $latest_branchpoint..HEAD |\ | ||||
| 	grep "cherry picked from commit" |\ | ||||
| 	sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//'  > already_picked | ||||
|  | ||||
| # For each cherry-picked commit... | ||||
| cat already_picked | cut -c -8 |\ | ||||
| while read sha | ||||
| do | ||||
| 	# ... check if it's referenced (fixed by another) patch | ||||
| 	git log -n1 --pretty=oneline --grep=$sha $latest_branchpoint..origin/master |\ | ||||
| 		cut -c -8 |\ | ||||
| 	while read candidate | ||||
| 	do | ||||
| 		# And flag up if it hasn't landed in branch yet. | ||||
| 		if grep -q ^$candidate already_picked ; then | ||||
| 			continue | ||||
| 		fi | ||||
| 		# Or if it isn't in the ignore list. | ||||
| 		if [ -f bin/.cherry-ignore ] ; then | ||||
| 			if grep -q ^$candidate bin/.cherry-ignore ; then | ||||
| 				continue | ||||
| 			fi | ||||
| 		fi | ||||
| 		printf "Commit \"%s\" references %s\n" \ | ||||
| 		       "`git log -n1 --pretty=oneline $candidate`" \ | ||||
| 		       "$sha" | ||||
| 	done | ||||
| done | ||||
|  | ||||
| rm -f already_picked | ||||
| @@ -1,150 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # Script for generating a list of candidates for cherry-picking to a stable branch | ||||
| # | ||||
| # Usage examples: | ||||
| # | ||||
| # $ bin/get-pick-list.sh | ||||
| # $ bin/get-pick-list.sh > picklist | ||||
| # $ bin/get-pick-list.sh | tee picklist | ||||
| # | ||||
| # The output is as follows: | ||||
| # [nomination_type] commit_sha commit summary | ||||
|  | ||||
| is_stable_nomination() | ||||
| { | ||||
| 	git show --pretty=medium --summary "$1" | grep -q -i -o "CC:.*mesa-stable" | ||||
| } | ||||
|  | ||||
| is_typod_nomination() | ||||
| { | ||||
| 	git show --pretty=medium --summary "$1" | grep -q -i -o "CC:.*mesa-dev" | ||||
| } | ||||
|  | ||||
| fixes= | ||||
|  | ||||
| # Helper to handle various mistypos of the fixes tag. | ||||
| # The tag string itself is passed as argument and normalised within. | ||||
| # | ||||
| # Resulting string in the global variable "fixes" and contains entries | ||||
| # in the form "fixes:$sha" | ||||
| is_sha_nomination() | ||||
| { | ||||
| 	fixes=`git show --pretty=medium -s $1 | tr -d "\n" | \ | ||||
| 		sed -e 's/'"$2"'/\nfixes:/Ig' | \ | ||||
| 		grep -Eo 'fixes:[a-f0-9]{4,40}'` | ||||
|  | ||||
| 	fixes_count=`echo "$fixes" | grep "fixes:" | wc -l` | ||||
| 	if test $fixes_count -eq 0; then | ||||
| 		return 1 | ||||
| 	fi | ||||
|  | ||||
| 	# Throw a warning for each invalid sha | ||||
| 	while test $fixes_count -gt 0; do | ||||
| 		# Treat only the current line | ||||
| 		id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : -f 2` | ||||
| 		fixes_count=$(($fixes_count-1)) | ||||
| 		if ! git show $id >/dev/null 2>&1; then | ||||
| 			echo WARNING: Commit $1 lists invalid sha $id | ||||
| 		fi | ||||
| 	done | ||||
|  | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| # Checks if at least one of offending commits, listed in the global | ||||
| # "fixes", is in branch. | ||||
| sha_in_range() | ||||
| { | ||||
| 	fixes_count=`echo "$fixes" | grep "fixes:" | wc -l` | ||||
| 	while test $fixes_count -gt 0; do | ||||
| 		# Treat only the current line | ||||
| 		id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : -f 2` | ||||
| 		fixes_count=$(($fixes_count-1)) | ||||
|  | ||||
| 		# Be that cherry-picked ... | ||||
| 		# ... or landed before the branchpoint. | ||||
| 		if grep -q ^$id already_picked || | ||||
| 		   grep -q ^$id already_landed ; then | ||||
| 			return 0 | ||||
| 		fi | ||||
| 	done | ||||
| 	return 1 | ||||
| } | ||||
|  | ||||
| is_fixes_nomination() | ||||
| { | ||||
| 	is_sha_nomination "$1" "fixes:[[:space:]]*" | ||||
| 	if test $? -eq 0; then | ||||
| 		return 0 | ||||
| 	fi | ||||
| 	is_sha_nomination "$1" "fixes[[:space:]]\+" | ||||
| } | ||||
|  | ||||
| is_brokenby_nomination() | ||||
| { | ||||
| 	is_sha_nomination "$1" "broken by" | ||||
| } | ||||
|  | ||||
| is_revert_nomination() | ||||
| { | ||||
| 	is_sha_nomination "$1" "This reverts commit " | ||||
| } | ||||
|  | ||||
| # Use the last branchpoint as our limit for the search | ||||
| latest_branchpoint=`git merge-base upstream/master HEAD` | ||||
|  | ||||
| # List all the commits between day 1 and the branch point... | ||||
| git log --reverse --pretty=%H $latest_branchpoint > already_landed | ||||
|  | ||||
| # ... and the ones cherry-picked. | ||||
| git log --reverse --pretty=medium --grep="cherry picked from commit" $latest_branchpoint..HEAD |\ | ||||
| 	grep "cherry picked from commit" |\ | ||||
| 	sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked | ||||
|  | ||||
| # Grep for potential candidates | ||||
| git log --reverse --pretty=%H -i --grep='^CC:.*mesa-stable\|^CC:.*mesa-dev\|\<fixes\>\|\<broken by\>\|This reverts commit' $latest_branchpoint..upstream/master |\ | ||||
| while read sha | ||||
| do | ||||
| 	# Check to see whether the patch is on the ignore list. | ||||
| 	if test -f bin/.cherry-ignore; then | ||||
| 		if grep -q ^$sha bin/.cherry-ignore ; then | ||||
| 			continue | ||||
| 		fi | ||||
| 	fi | ||||
|  | ||||
| 	# Check to see if it has already been picked over. | ||||
| 	if grep -q ^$sha already_picked ; then | ||||
| 		continue | ||||
| 	fi | ||||
|  | ||||
| 	if is_fixes_nomination "$sha"; then | ||||
| 		tag=fixes | ||||
| 	elif is_brokenby_nomination "$sha"; then | ||||
| 		tag=brokenby | ||||
| 	elif is_revert_nomination "$sha"; then | ||||
| 		tag=revert | ||||
| 	elif is_stable_nomination "$sha"; then | ||||
| 		tag=stable | ||||
| 	elif is_typod_nomination "$sha"; then | ||||
| 		tag=typod | ||||
| 	else | ||||
| 		continue | ||||
| 	fi | ||||
|  | ||||
| 	case "$tag" in | ||||
| 	fixes | brokenby | revert ) | ||||
| 		if ! sha_in_range; then | ||||
| 			continue | ||||
| 		fi | ||||
| 		;; | ||||
| 	* ) | ||||
| 		;; | ||||
| 	esac | ||||
|  | ||||
| 	printf "[ %8s ] " "$tag" | ||||
| 	git --no-pager show --no-patch --pretty=oneline $sha | ||||
| done | ||||
|  | ||||
| rm -f already_picked | ||||
| rm -f already_landed | ||||
| @@ -1,50 +0,0 @@ | ||||
| """ | ||||
| Generate the contents of the git_sha1.h file. | ||||
| The output of this script goes to stdout. | ||||
| """ | ||||
|  | ||||
|  | ||||
| import argparse | ||||
| import os | ||||
| import os.path | ||||
| import subprocess | ||||
| import sys | ||||
|  | ||||
|  | ||||
| def get_git_sha1(): | ||||
|     """Try to get the git SHA1 with git rev-parse.""" | ||||
|     git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git') | ||||
|     try: | ||||
|         git_sha1 = subprocess.check_output([ | ||||
|             'git', | ||||
|             '--git-dir=' + git_dir, | ||||
|             'rev-parse', | ||||
|             'HEAD', | ||||
|         ], stderr=open(os.devnull, 'w')).decode("ascii") | ||||
|     except: | ||||
|         # don't print anything if it fails | ||||
|         git_sha1 = '' | ||||
|     return git_sha1 | ||||
|  | ||||
| def write_if_different(contents): | ||||
|     """ | ||||
|     Avoid touching the output file if it doesn't need modifications | ||||
|     Useful to avoid triggering rebuilds when nothing has changed. | ||||
|     """ | ||||
|     if os.path.isfile(args.output): | ||||
|         with open(args.output, 'r') as file: | ||||
|             if file.read() == contents: | ||||
|                 return | ||||
|     with open(args.output, 'w') as file: | ||||
|         file.write(contents) | ||||
|  | ||||
| parser = argparse.ArgumentParser() | ||||
| parser.add_argument('--output', help='File to write the #define in', | ||||
|                     required=True) | ||||
| args = parser.parse_args() | ||||
|  | ||||
| git_sha1 = os.environ.get('MESA_GIT_SHA1_OVERRIDE', get_git_sha1())[:10] | ||||
| if git_sha1: | ||||
|     write_if_different('#define MESA_GIT_SHA1 " (git-' + git_sha1 + ')"') | ||||
| else: | ||||
|     write_if_different('#define MESA_GIT_SHA1 ""') | ||||
| @@ -1,83 +0,0 @@ | ||||
| # encoding=utf-8 | ||||
| # Copyright © 2017-2018 Intel Corporation | ||||
|  | ||||
| # Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| # of this software and associated documentation files (the "Software"), to deal | ||||
| # in the Software without restriction, including without limitation the rights | ||||
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| # copies of the Software, and to permit persons to whom the Software is | ||||
| # furnished to do so, subject to the following conditions: | ||||
|  | ||||
| # The above copyright notice and this permission notice shall be included in | ||||
| # all copies or substantial portions of the Software. | ||||
|  | ||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| # SOFTWARE. | ||||
|  | ||||
| """Script to install megadriver symlinks for meson.""" | ||||
|  | ||||
| from __future__ import print_function | ||||
| import argparse | ||||
| import os | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     parser = argparse.ArgumentParser() | ||||
|     parser.add_argument('megadriver') | ||||
|     parser.add_argument('libdir') | ||||
|     parser.add_argument('drivers', nargs='+') | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     if os.path.isabs(args.libdir): | ||||
|         destdir = os.environ.get('DESTDIR') | ||||
|         if destdir: | ||||
|             to = os.path.join(destdir, args.libdir[1:]) | ||||
|         else: | ||||
|             to = args.libdir | ||||
|     else: | ||||
|         to = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], args.libdir) | ||||
|  | ||||
|     master = os.path.join(to, os.path.basename(args.megadriver)) | ||||
|  | ||||
|     if not os.path.exists(to): | ||||
|         if os.path.lexists(to): | ||||
|             os.unlink(to) | ||||
|         os.makedirs(to) | ||||
|  | ||||
|     for driver in args.drivers: | ||||
|         abs_driver = os.path.join(to, driver) | ||||
|  | ||||
|         if os.path.lexists(abs_driver): | ||||
|             os.unlink(abs_driver) | ||||
|         print('installing {} to {}'.format(args.megadriver, abs_driver)) | ||||
|         os.link(master, abs_driver) | ||||
|  | ||||
|         try: | ||||
|             ret = os.getcwd() | ||||
|             os.chdir(to) | ||||
|  | ||||
|             name, ext = os.path.splitext(driver) | ||||
|             while ext != '.so': | ||||
|                 if os.path.lexists(name): | ||||
|                     os.unlink(name) | ||||
|                 os.symlink(driver, name) | ||||
|                 name, ext = os.path.splitext(name) | ||||
|         finally: | ||||
|             os.chdir(ret) | ||||
|  | ||||
|     # Remove meson-created master .so and symlinks | ||||
|     os.unlink(master) | ||||
|     name, ext = os.path.splitext(master) | ||||
|     while ext != '.so': | ||||
|         if os.path.lexists(name): | ||||
|             os.unlink(name) | ||||
|         name, ext = os.path.splitext(name) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
							
								
								
									
										74
									
								
								bin/installmesa
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										74
									
								
								bin/installmesa
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,74 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # | ||||
| # Simple shell script for installing Mesa's header and library files. | ||||
| # If the copy commands below don't work on a particular system (i.e. the | ||||
| # -f or -d flags), we may need to branch on `uname` to do the right thing. | ||||
| # | ||||
|  | ||||
|  | ||||
| TOP=. | ||||
|  | ||||
| INCLUDE_DIR="/usr/local/include" | ||||
| LIB_DIR="/usr/local/lib" | ||||
|  | ||||
| if [ "x$#" = "x0" ] ; then | ||||
| echo | ||||
| echo "***** Mesa installation - You may need root privileges to do this *****" | ||||
| echo | ||||
| echo "Default directory for header files is:" ${INCLUDE_DIR} | ||||
| echo "Enter new directory or press <Enter> to accept this default." | ||||
|  | ||||
| read INPUT | ||||
| if [ "x${INPUT}" != "x" ] ; then | ||||
| 	INCLUDE_DIR=${INPUT} | ||||
| fi | ||||
|  | ||||
| echo | ||||
| echo "Default directory for library files is:" ${LIB_DIR} | ||||
| echo "Enter new directory or press <Enter> to accept this default." | ||||
|  | ||||
| read INPUT | ||||
| if [ "x${INPUT}" != "x" ] ; then | ||||
| 	LIB_DIR=${INPUT} | ||||
| fi | ||||
|  | ||||
| echo | ||||
| echo "About to install Mesa header files (GL/*.h) in: " ${INCLUDE_DIR}/GL | ||||
| echo "and Mesa library files (libGL.*, etc) in: " ${LIB_DIR} | ||||
| echo "Press <Enter> to continue, or <ctrl>-C to abort." | ||||
|  | ||||
| read INPUT | ||||
|  | ||||
| else | ||||
| INCLUDE_DIR=$1/include | ||||
| LIB_DIR=$1/lib | ||||
| fi | ||||
|  | ||||
| # flags: | ||||
| #  -f = force | ||||
| #  -d = preserve symlinks (does not work on BSD) | ||||
|  | ||||
| if [ `uname` = "FreeBSD" ] ; then | ||||
| 	CP_FLAGS="-f" | ||||
| elif [ `uname` = "Darwin" ] ; then | ||||
| 	CP_FLAGS="-f" | ||||
| elif [ `uname` = "AIX" ] ; then | ||||
| 	CP_FLAGS="-fh" | ||||
| else | ||||
| 	CP_FLAGS="-fd" | ||||
| fi | ||||
|  | ||||
|  | ||||
| set -v | ||||
|  | ||||
| mkdir -p ${INCLUDE_DIR} | ||||
| mkdir -p ${INCLUDE_DIR}/GL | ||||
| # NOT YET: mkdir -p ${INCLUDE_DIR}/GLES | ||||
| mkdir -p ${LIB_DIR} | ||||
| cp -f ${TOP}/include/GL/*.h ${INCLUDE_DIR}/GL | ||||
| cp -f ${TOP}/src/glw/*.h ${INCLUDE_DIR}/GL | ||||
| # NOT YET: cp -f ${TOP}/include/GLES/*.h ${INCLUDE_DIR}/GLES | ||||
| cp ${CP_FLAGS} ${TOP}/lib*/lib* ${LIB_DIR} | ||||
|  | ||||
| echo "Done." | ||||
| @@ -1,88 +0,0 @@ | ||||
| #!/usr/bin/env python3 | ||||
| # Copyright © 2019 Intel Corporation | ||||
|  | ||||
| # Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| # of this software and associated documentation files (the "Software"), to deal | ||||
| # in the Software without restriction, including without limitation the rights | ||||
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| # copies of the Software, and to permit persons to whom the Software is | ||||
| # furnished to do so, subject to the following conditions: | ||||
|  | ||||
| # The above copyright notice and this permission notice shall be included in | ||||
| # all copies or substantial portions of the Software. | ||||
|  | ||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| # SOFTWARE. | ||||
|  | ||||
| """This script reads a meson build directory and gives back the command line it | ||||
| was configured with. | ||||
|  | ||||
| This only works for meson 0.49.0 and newer. | ||||
| """ | ||||
|  | ||||
| import argparse | ||||
| import ast | ||||
| import configparser | ||||
| import pathlib | ||||
| import sys | ||||
|  | ||||
|  | ||||
| def parse_args() -> argparse.Namespace: | ||||
|     """Parse arguments.""" | ||||
|     parser = argparse.ArgumentParser() | ||||
|     parser.add_argument( | ||||
|         'build_dir', | ||||
|         help='Path the meson build directory') | ||||
|     args = parser.parse_args() | ||||
|     return args | ||||
|  | ||||
|  | ||||
| def load_config(path: pathlib.Path) -> configparser.ConfigParser: | ||||
|     """Load config file.""" | ||||
|     conf = configparser.ConfigParser() | ||||
|     with path.open() as f: | ||||
|         conf.read_file(f) | ||||
|     return conf | ||||
|  | ||||
|  | ||||
| def build_cmd(conf: configparser.ConfigParser) -> str: | ||||
|     """Rebuild the command line.""" | ||||
|     args = [] | ||||
|     for k, v in conf['options'].items(): | ||||
|         if ' ' in v: | ||||
|             args.append(f'-D{k}="{v}"') | ||||
|         else: | ||||
|             args.append(f'-D{k}={v}') | ||||
|  | ||||
|     cf = conf['properties'].get('cross_file') | ||||
|     if cf: | ||||
|         args.append('--cross-file={}'.format(cf)) | ||||
|     nf = conf['properties'].get('native_file') | ||||
|     if nf: | ||||
|         # this will be in the form "['str', 'str']", so use ast.literal_eval to | ||||
|         # convert it to a list of strings. | ||||
|         nf = ast.literal_eval(nf) | ||||
|         args.extend(['--native-file={}'.format(f) for f in nf]) | ||||
|     return ' '.join(args) | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     args = parse_args() | ||||
|     path = pathlib.Path(args.build_dir, 'meson-private', 'cmd_line.txt') | ||||
|     if not path.exists(): | ||||
|         print('Cannot find the necessary file to rebuild command line. ' | ||||
|               'Is your meson version >= 0.49.0?', file=sys.stderr) | ||||
|         sys.exit(1) | ||||
|  | ||||
|     conf = load_config(path) | ||||
|     cmd = build_cmd(conf) | ||||
|     print(cmd) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
| @@ -1,63 +0,0 @@ | ||||
| #!/usr/bin/env python3 | ||||
|  | ||||
| from os import get_terminal_size | ||||
| from textwrap import wrap | ||||
| from mesonbuild import coredata | ||||
| from mesonbuild import optinterpreter | ||||
|  | ||||
| (COLUMNS, _) = get_terminal_size() | ||||
|  | ||||
| def describe_option(option_name: str, option_default_value: str, | ||||
|                     option_type: str, option_message: str) -> None: | ||||
|     print('name:    ' + option_name) | ||||
|     print('default: ' + option_default_value) | ||||
|     print('type:    ' + option_type) | ||||
|     for line in wrap(option_message, width=COLUMNS - 9): | ||||
|         print('         ' + line) | ||||
|     print('---') | ||||
|  | ||||
| oi = optinterpreter.OptionInterpreter('') | ||||
| oi.process('meson_options.txt') | ||||
|  | ||||
| for (name, value) in oi.options.items(): | ||||
|     if isinstance(value, coredata.UserStringOption): | ||||
|         describe_option(name, | ||||
|                         value.value, | ||||
|                         'string', | ||||
|                         "You can type what you want, but make sure it makes sense") | ||||
|     elif isinstance(value, coredata.UserBooleanOption): | ||||
|         describe_option(name, | ||||
|                         'true' if value.value else 'false', | ||||
|                         'boolean', | ||||
|                         "You can set it to 'true' or 'false'") | ||||
|     elif isinstance(value, coredata.UserIntegerOption): | ||||
|         describe_option(name, | ||||
|                         str(value.value), | ||||
|                         'integer', | ||||
|                         "You can set it to any integer value between '{}' and '{}'".format(value.min_value, value.max_value)) | ||||
|     elif isinstance(value, coredata.UserUmaskOption): | ||||
|         describe_option(name, | ||||
|                         str(value.value), | ||||
|                         'umask', | ||||
|                         "You can set it to 'preserve' or a value between '0000' and '0777'") | ||||
|     elif isinstance(value, coredata.UserComboOption): | ||||
|         choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']' | ||||
|         describe_option(name, | ||||
|                         value.value, | ||||
|                         'combo', | ||||
|                         "You can set it to any one of those values: " + choices) | ||||
|     elif isinstance(value, coredata.UserArrayOption): | ||||
|         choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']' | ||||
|         value = '[' + ', '.join(["'" + v + "'" for v in value.value]) + ']' | ||||
|         describe_option(name, | ||||
|                         value, | ||||
|                         'array', | ||||
|                         "You can set it to one or more of those values: " + choices) | ||||
|     elif isinstance(value, coredata.UserFeatureOption): | ||||
|         describe_option(name, | ||||
|                         value.value, | ||||
|                         'feature', | ||||
|                         "You can set it to 'auto', 'enabled', or 'disabled'") | ||||
|     else: | ||||
|         print(name + ' is an option of a type unknown to this script') | ||||
|         print('---') | ||||
| @@ -1,22 +0,0 @@ | ||||
| # Copyright © 2017 Eric Engestrom | ||||
|  | ||||
| # Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| # of this software and associated documentation files (the "Software"), to deal | ||||
| # in the Software without restriction, including without limitation the rights | ||||
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| # copies of the Software, and to permit persons to whom the Software is | ||||
| # furnished to do so, subject to the following conditions: | ||||
|  | ||||
| # The above copyright notice and this permission notice shall be included in | ||||
| # all copies or substantial portions of the Software. | ||||
|  | ||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| # SOFTWARE. | ||||
|  | ||||
| git_sha1_gen_py = files('git_sha1_gen.py') | ||||
| symbols_check = find_program('symbols-check.py') | ||||
| @@ -1,35 +0,0 @@ | ||||
| #!/usr/bin/env python | ||||
| # encoding=utf-8 | ||||
| # Copyright © 2017 Intel Corporation | ||||
|  | ||||
| # Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| # of this software and associated documentation files (the "Software"), to deal | ||||
| # in the Software without restriction, including without limitation the rights | ||||
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| # copies of the Software, and to permit persons to whom the Software is | ||||
| # furnished to do so, subject to the following conditions: | ||||
|  | ||||
| # The above copyright notice and this permission notice shall be included in | ||||
| # all copies or substantial portions of the Software. | ||||
|  | ||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| # SOFTWARE. | ||||
|  | ||||
| from __future__ import print_function | ||||
| import os | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     filename = os.path.join(os.environ['MESON_SOURCE_ROOT'], 'VERSION') | ||||
|     with open(filename) as f: | ||||
|         version = f.read().strip() | ||||
|     print(version, end='') | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
							
								
								
									
										112
									
								
								bin/minstall
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										112
									
								
								bin/minstall
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,112 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
|  | ||||
| # A minimal replacement for 'install' that supports installing symbolic links. | ||||
| # Only a limited number of options are supported: | ||||
| # -d dir          Create a directory | ||||
| # -m mode         Sets a file's mode when installing | ||||
|  | ||||
|  | ||||
| # If these commands aren't portable, we'll need some "if (arch)" type stuff | ||||
| SYMLINK="ln -s" | ||||
| MKDIR="mkdir -p" | ||||
| RM="rm -f" | ||||
|  | ||||
| MODE="" | ||||
|  | ||||
| if [ "$1" = "-d" ] ; then | ||||
| 	# make a directory path | ||||
| 	$MKDIR "$2" | ||||
| 	exit 0 | ||||
| fi | ||||
|  | ||||
| if [ "$1" = "-m" ] ; then | ||||
| 	# set file mode | ||||
| 	MODE=$2 | ||||
| 	shift 2 | ||||
| fi | ||||
|  | ||||
| # install file(s) into destination | ||||
| if [ $# -ge 2 ] ; then | ||||
|  | ||||
| 	# Last cmd line arg is the dest dir | ||||
| 	for FILE in $@ ; do | ||||
| 		DESTDIR="$FILE" | ||||
| 	done | ||||
|  | ||||
| 	# Loop over args, moving them to DEST directory | ||||
| 	I=1 | ||||
| 	for FILE in $@ ; do | ||||
| 		if [ $I = $# ] ; then | ||||
| 			# stop, don't want to install $DEST into $DEST | ||||
| 			exit 0 | ||||
| 		fi | ||||
|  | ||||
|                 DEST=$DESTDIR | ||||
|  | ||||
|                 # On CYGWIN, because DLLs are loaded by the native Win32 loader, | ||||
|                 # they are installed in the executable path.  Stub libraries used | ||||
|                 # only for linking are installed in the library path | ||||
|                 case `uname` in | ||||
|                     CYGWIN*) | ||||
|                         case $FILE in | ||||
|                             *.dll) | ||||
|                                 DEST="$DEST/../bin" | ||||
|                                 ;; | ||||
|                             *) | ||||
|                                 ;; | ||||
|                         esac | ||||
| 	                ;; | ||||
|                     *) | ||||
|                         ;; | ||||
|                 esac | ||||
|  | ||||
| 		PWDSAVE=`pwd` | ||||
|  | ||||
| 		# determine file's type | ||||
| 		if [ -h "$FILE" ] ; then | ||||
| 			#echo $FILE is a symlink | ||||
| 			# Unfortunately, cp -d isn't universal so we have to | ||||
| 			# use a work-around. | ||||
|  | ||||
| 			# Use ls -l to find the target that the link points to | ||||
| 			LL=`ls -l "$FILE"` | ||||
| 			for L in $LL ; do | ||||
| 				TARGET=$L | ||||
| 			done | ||||
| 			#echo $FILE is a symlink pointing to $TARGET | ||||
|  | ||||
| 			FILE=`basename "$FILE"` | ||||
| 			# Go to $DEST and make the link | ||||
| 			cd "$DEST"        # pushd | ||||
| 				$RM "$FILE" | ||||
| 				$SYMLINK "$TARGET" "$FILE" | ||||
| 			cd "$PWDSAVE"     # popd | ||||
|  | ||||
| 		elif [ -f "$FILE" ] ; then | ||||
| 			#echo "$FILE" is a regular file | ||||
| 			# Only copy if the files differ | ||||
| 			if ! cmp -s $FILE $DEST/`basename $FILE`; then | ||||
| 				$RM "$DEST/`basename $FILE`" | ||||
| 				cp "$FILE" "$DEST" | ||||
| 			fi | ||||
| 			if [ $MODE ] ; then | ||||
| 				FILE=`basename "$FILE"` | ||||
| 				chmod $MODE "$DEST/$FILE" | ||||
| 			fi | ||||
| 		else | ||||
| 			echo "Unknown type of argument: " "$FILE" | ||||
| 			exit 1 | ||||
| 		fi | ||||
|  | ||||
| 		I=`expr $I + 1` | ||||
| 	done | ||||
|  | ||||
| 	exit 0 | ||||
| fi | ||||
|  | ||||
| # If we get here, we didn't find anything to do | ||||
| echo "Usage:" | ||||
| echo "  install -d dir                      Create named directory" | ||||
| echo "  install [-m mode] file [...] dest   Install files in destination" | ||||
|  | ||||
| @@ -1,251 +0,0 @@ | ||||
| #!/usr/bin/env python | ||||
| # | ||||
| # Copyright 2012 VMware Inc | ||||
| # Copyright 2008-2009 Jose Fonseca | ||||
| # | ||||
| # Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| # of this software and associated documentation files (the "Software"), to deal | ||||
| # in the Software without restriction, including without limitation the rights | ||||
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| # copies of the Software, and to permit persons to whom the Software is | ||||
| # furnished to do so, subject to the following conditions: | ||||
| # | ||||
| # The above copyright notice and this permission notice shall be included in | ||||
| # all copies or substantial portions of the Software. | ||||
| # | ||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| # THE SOFTWARE. | ||||
| # | ||||
|  | ||||
| """Perf annotate for JIT code. | ||||
|  | ||||
| Linux `perf annotate` does not work with JIT code.  This script takes the data | ||||
| produced by `perf script` command, plus the diassemblies outputed by gallivm | ||||
| into /tmp/perf-XXXXX.map.asm and produces output similar to `perf annotate`. | ||||
|  | ||||
| See docs/llvmpipe.html for usage instructions. | ||||
|  | ||||
| The `perf script` output parser was derived from the gprof2dot.py script. | ||||
| """ | ||||
|  | ||||
|  | ||||
| import sys | ||||
| import os.path | ||||
| import re | ||||
| import optparse | ||||
| import subprocess | ||||
|  | ||||
|  | ||||
| class Parser: | ||||
|     """Parser interface.""" | ||||
|  | ||||
|     def __init__(self): | ||||
|         pass | ||||
|  | ||||
|     def parse(self): | ||||
|         raise NotImplementedError | ||||
|  | ||||
|  | ||||
| class LineParser(Parser): | ||||
|     """Base class for parsers that read line-based formats.""" | ||||
|  | ||||
|     def __init__(self, file): | ||||
|         Parser.__init__(self) | ||||
|         self._file = file | ||||
|         self.__line = None | ||||
|         self.__eof = False | ||||
|         self.line_no = 0 | ||||
|  | ||||
|     def readline(self): | ||||
|         line = self._file.readline() | ||||
|         if not line: | ||||
|             self.__line = '' | ||||
|             self.__eof = True | ||||
|         else: | ||||
|             self.line_no += 1 | ||||
|         self.__line = line.rstrip('\r\n') | ||||
|  | ||||
|     def lookahead(self): | ||||
|         assert self.__line is not None | ||||
|         return self.__line | ||||
|  | ||||
|     def consume(self): | ||||
|         assert self.__line is not None | ||||
|         line = self.__line | ||||
|         self.readline() | ||||
|         return line | ||||
|  | ||||
|     def eof(self): | ||||
|         assert self.__line is not None | ||||
|         return self.__eof | ||||
|  | ||||
|  | ||||
| mapFile = None | ||||
|  | ||||
| def lookupMap(filename, matchSymbol): | ||||
|     global mapFile | ||||
|     mapFile = filename | ||||
|     stream = open(filename, 'rt') | ||||
|     for line in stream: | ||||
|         start, length, symbol = line.split() | ||||
|  | ||||
|         start = int(start, 16) | ||||
|         length = int(length,16) | ||||
|  | ||||
|         if symbol == matchSymbol: | ||||
|             return start | ||||
|  | ||||
|     return None | ||||
|  | ||||
| def lookupAsm(filename, desiredFunction): | ||||
|     stream = open(filename + '.asm', 'rt') | ||||
|     while stream.readline() != desiredFunction + ':\n': | ||||
|         pass | ||||
|  | ||||
|     asm = [] | ||||
|     line = stream.readline().strip() | ||||
|     while line: | ||||
|         addr, instr = line.split(':', 1) | ||||
|         addr = int(addr) | ||||
|         asm.append((addr, instr)) | ||||
|         line = stream.readline().strip() | ||||
|  | ||||
|     return asm | ||||
|  | ||||
|  | ||||
|  | ||||
| samples = {} | ||||
|  | ||||
|  | ||||
| class PerfParser(LineParser): | ||||
|     """Parser for linux perf callgraph output. | ||||
|  | ||||
|     It expects output generated with | ||||
|  | ||||
|         perf record -g | ||||
|         perf script | ||||
|     """ | ||||
|  | ||||
|     def __init__(self, infile, symbol): | ||||
|         LineParser.__init__(self, infile) | ||||
|         self.symbol = symbol | ||||
|  | ||||
|     def readline(self): | ||||
|         # Override LineParser.readline to ignore comment lines | ||||
|         while True: | ||||
|             LineParser.readline(self) | ||||
|             if self.eof() or not self.lookahead().startswith('#'): | ||||
|                 break | ||||
|  | ||||
|     def parse(self): | ||||
|         # read lookahead | ||||
|         self.readline() | ||||
|  | ||||
|         while not self.eof(): | ||||
|             self.parse_event() | ||||
|  | ||||
|         asm = lookupAsm(mapFile, self.symbol) | ||||
|  | ||||
|         addresses = samples.keys() | ||||
|         addresses.sort() | ||||
|         total_samples = 0 | ||||
|  | ||||
|         sys.stdout.write('%s:\n' % self.symbol) | ||||
|         for address, instr in asm: | ||||
|             try: | ||||
|                 sample = samples.pop(address) | ||||
|             except KeyError: | ||||
|                 sys.stdout.write(6*' ') | ||||
|             else: | ||||
|                 sys.stdout.write('%6u' % (sample)) | ||||
|                 total_samples += sample | ||||
|             sys.stdout.write('%6u: %s\n' % (address, instr)) | ||||
|         print 'total:', total_samples | ||||
|         assert len(samples) == 0 | ||||
|  | ||||
|         sys.exit(0) | ||||
|  | ||||
|     def parse_event(self): | ||||
|         if self.eof(): | ||||
|             return | ||||
|  | ||||
|         line = self.consume() | ||||
|         assert line | ||||
|  | ||||
|         callchain = self.parse_callchain() | ||||
|         if not callchain: | ||||
|             return | ||||
|  | ||||
|     def parse_callchain(self): | ||||
|         callchain = [] | ||||
|         while self.lookahead(): | ||||
|             function = self.parse_call(len(callchain) == 0) | ||||
|             if function is None: | ||||
|                 break | ||||
|             callchain.append(function) | ||||
|         if self.lookahead() == '': | ||||
|             self.consume() | ||||
|         return callchain | ||||
|  | ||||
|     call_re = re.compile(r'^\s+(?P<address>[0-9a-fA-F]+)\s+(?P<symbol>.*)\s+\((?P<module>[^)]*)\)$') | ||||
|  | ||||
|     def parse_call(self, first): | ||||
|         line = self.consume() | ||||
|         mo = self.call_re.match(line) | ||||
|         assert mo | ||||
|         if not mo: | ||||
|             return None | ||||
|  | ||||
|         if not first: | ||||
|             return None | ||||
|  | ||||
|         function_name = mo.group('symbol') | ||||
|         if not function_name: | ||||
|             function_name = mo.group('address') | ||||
|  | ||||
|         module = mo.group('module') | ||||
|  | ||||
|         function_id = function_name + ':' + module | ||||
|  | ||||
|         address = mo.group('address') | ||||
|         address = int(address, 16) | ||||
|  | ||||
|         if function_name != self.symbol: | ||||
|             return None | ||||
|  | ||||
|         start_address = lookupMap(module, function_name) | ||||
|         address -= start_address | ||||
|  | ||||
|         #print function_name, module, address | ||||
|  | ||||
|         samples[address] = samples.get(address, 0) + 1 | ||||
|  | ||||
|         return True | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     """Main program.""" | ||||
|  | ||||
|     optparser = optparse.OptionParser( | ||||
|         usage="\n\t%prog [options] symbol_name") | ||||
|     (options, args) = optparser.parse_args(sys.argv[1:]) | ||||
|     if len(args) != 1: | ||||
|         optparser.error('wrong number of arguments') | ||||
|  | ||||
|     symbol = args[0] | ||||
|  | ||||
|     p = subprocess.Popen(['perf', 'script'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) | ||||
|     parser = PerfParser(p.stdout, symbol) | ||||
|     parser.parse() | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
|  | ||||
|  | ||||
| # vim: set sw=4 et: | ||||
| @@ -1,117 +0,0 @@ | ||||
| #!/usr/bin/env python3 | ||||
| # Copyright © 2019 Intel Corporation | ||||
|  | ||||
| # Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| # of this software and associated documentation files (the "Software"), to deal | ||||
| # in the Software without restriction, including without limitation the rights | ||||
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| # copies of the Software, and to permit persons to whom the Software is | ||||
| # furnished to do so, subject to the following conditions: | ||||
|  | ||||
| # The above copyright notice and this permission notice shall be included in | ||||
| # all copies or substantial portions of the Software. | ||||
|  | ||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| # SOFTWARE. | ||||
|  | ||||
| """Update the main page, release notes, and calendar.""" | ||||
|  | ||||
| import argparse | ||||
| import calendar | ||||
| import datetime | ||||
| import pathlib | ||||
| from lxml import ( | ||||
|     etree, | ||||
|     html, | ||||
| ) | ||||
|  | ||||
|  | ||||
| def calculate_previous_version(version: str, is_point: bool) -> str: | ||||
|     """Calculate the previous version to compare to. | ||||
|  | ||||
|     In the case of -rc to final that verison is the previous .0 release, | ||||
|     (19.3.0 in the case of 20.0.0, for example). for point releases that is | ||||
|     the last point release. This value will be the same as the input value | ||||
|     for a poiont release, but different for a major release. | ||||
|     """ | ||||
|     if '-' in version: | ||||
|         version = version.split('-')[0] | ||||
|     if is_point: | ||||
|         return version | ||||
|     base = version.split('.') | ||||
|     if base[1] == '0': | ||||
|         base[0] = str(int(base[0]) - 1) | ||||
|         base[1] = '3' | ||||
|     else: | ||||
|         base[1] = str(int(base[1]) - 1) | ||||
|     return '.'.join(base) | ||||
|  | ||||
|  | ||||
| def is_point_release(version: str) -> bool: | ||||
|     return not version.endswith('.0') | ||||
|  | ||||
|  | ||||
| def update_index(is_point: bool, version: str, previous_version: str) -> None: | ||||
|     p = pathlib.Path(__file__).parent.parent / 'docs' / 'index.html' | ||||
|     with p.open('rt') as f: | ||||
|         tree = html.parse(f) | ||||
|  | ||||
|     news = tree.xpath('.//h1')[0] | ||||
|  | ||||
|     date = datetime.date.today() | ||||
|     month = calendar.month_name[date.month] | ||||
|     header = etree.Element('h2') | ||||
|     header.text = f"{month} {date.day}, {date.year}" | ||||
|  | ||||
|     body = etree.Element('p') | ||||
|     a = etree.SubElement( | ||||
|         body, 'a', attrib={'href': f'relnotes/{previous_version}.html'}) | ||||
|     a.text = f"Mesa {previous_version}" | ||||
|     if is_point: | ||||
|         a.tail = " is released. This is a bug fix release." | ||||
|     else: | ||||
|         a.tail = (" is released. This is a new development release. " | ||||
|                   "See the release notes for mor information about this release.") | ||||
|  | ||||
|     root = news.getparent() | ||||
|     index = root.index(news) + 1 | ||||
|     root.insert(index, body) | ||||
|     root.insert(index, header) | ||||
|  | ||||
|     tree.write(p.as_posix(), method='html') | ||||
|  | ||||
|  | ||||
| def update_release_notes(previous_version: str) -> None: | ||||
|     p = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes.html' | ||||
|     with p.open('rt') as f: | ||||
|         tree = html.parse(f) | ||||
|  | ||||
|     li = etree.Element('li') | ||||
|     a = etree.SubElement(li, 'a', href=f'relnotes/{previous_version}.html') | ||||
|     a.text = f'{previous_version} release notes' | ||||
|  | ||||
|     ul = tree.xpath('.//ul')[0] | ||||
|     ul.insert(0, li) | ||||
|  | ||||
|     tree.write(p.as_posix(), method='html') | ||||
|  | ||||
|  | ||||
| def main() -> None: | ||||
|     parser = argparse.ArgumentParser() | ||||
|     parser.add_argument('version', help="The released version.") | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     is_point = is_point_release(args.version) | ||||
|     previous_version = calculate_previous_version(args.version, is_point) | ||||
|  | ||||
|     update_index(is_point, args.version, previous_version) | ||||
|     update_release_notes(previous_version) | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     main() | ||||
| @@ -1,134 +0,0 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| import argparse | ||||
| import os | ||||
| import platform | ||||
| import subprocess | ||||
|  | ||||
| # This list contains symbols that _might_ be exported for some platforms | ||||
| PLATFORM_SYMBOLS = [ | ||||
|     '__bss_end__', | ||||
|     '__bss_start__', | ||||
|     '__bss_start', | ||||
|     '__end__', | ||||
|     '_bss_end__', | ||||
|     '_edata', | ||||
|     '_end', | ||||
|     '_fini', | ||||
|     '_init', | ||||
| ] | ||||
|  | ||||
|  | ||||
| def get_symbols(nm, lib): | ||||
|     ''' | ||||
|     List all the (non platform-specific) symbols exported by the library | ||||
|     ''' | ||||
|     symbols = [] | ||||
|     platform_name = platform.system() | ||||
|     output = subprocess.check_output([nm, '-gP', lib], | ||||
|                                      stderr=open(os.devnull, 'w')).decode("ascii") | ||||
|     for line in output.splitlines(): | ||||
|         fields = line.split() | ||||
|         if len(fields) == 2 or fields[1] == 'U': | ||||
|             continue | ||||
|         symbol_name = fields[0] | ||||
|         if platform_name == 'Linux': | ||||
|             if symbol_name in PLATFORM_SYMBOLS: | ||||
|                 continue | ||||
|         elif platform_name == 'Darwin': | ||||
|             assert symbol_name[0] == '_' | ||||
|             symbol_name = symbol_name[1:] | ||||
|         symbols.append(symbol_name) | ||||
|  | ||||
|     return symbols | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     parser = argparse.ArgumentParser() | ||||
|     parser.add_argument('--symbols-file', | ||||
|                         action='store', | ||||
|                         required=True, | ||||
|                         help='path to file containing symbols') | ||||
|     parser.add_argument('--lib', | ||||
|                         action='store', | ||||
|                         required=True, | ||||
|                         help='path to library') | ||||
|     parser.add_argument('--nm', | ||||
|                         action='store', | ||||
|                         required=True, | ||||
|                         help='path to binary (or name in $PATH)') | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     try: | ||||
|         lib_symbols = get_symbols(args.nm, args.lib) | ||||
|     except: | ||||
|         # We can't run this test, but we haven't technically failed it either | ||||
|         # Return the GNU "skip" error code | ||||
|         exit(77) | ||||
|     mandatory_symbols = [] | ||||
|     optional_symbols = [] | ||||
|     with open(args.symbols_file) as symbols_file: | ||||
|         qualifier_optional = '(optional)' | ||||
|         for line in symbols_file.readlines(): | ||||
|  | ||||
|             # Strip comments | ||||
|             line = line.split('#')[0] | ||||
|             line = line.strip() | ||||
|             if not line: | ||||
|                 continue | ||||
|  | ||||
|             # Line format: | ||||
|             # [qualifier] symbol | ||||
|             qualifier = None | ||||
|             symbol = None | ||||
|  | ||||
|             fields = line.split() | ||||
|             if len(fields) == 1: | ||||
|                 symbol = fields[0] | ||||
|             elif len(fields) == 2: | ||||
|                 qualifier = fields[0] | ||||
|                 symbol = fields[1] | ||||
|             else: | ||||
|                 print(args.symbols_file + ': invalid format: ' + line) | ||||
|                 exit(1) | ||||
|  | ||||
|             # The only supported qualifier is 'optional', which means the | ||||
|             # symbol doesn't have to be exported by the library | ||||
|             if qualifier and not qualifier == qualifier_optional: | ||||
|                 print(args.symbols_file + ': invalid qualifier: ' + qualifier) | ||||
|                 exit(1) | ||||
|  | ||||
|             if qualifier == qualifier_optional: | ||||
|                 optional_symbols.append(symbol) | ||||
|             else: | ||||
|                 mandatory_symbols.append(symbol) | ||||
|  | ||||
|     unknown_symbols = [] | ||||
|     for symbol in lib_symbols: | ||||
|         if symbol in mandatory_symbols: | ||||
|             continue | ||||
|         if symbol in optional_symbols: | ||||
|             continue | ||||
|         if symbol[:2] == '_Z': | ||||
|             # Ignore random C++ symbols | ||||
|             #TODO: figure out if there's any way to avoid exporting them in the first place | ||||
|             continue | ||||
|         unknown_symbols.append(symbol) | ||||
|  | ||||
|     missing_symbols = [ | ||||
|         sym for sym in mandatory_symbols if sym not in lib_symbols | ||||
|     ] | ||||
|  | ||||
|     for symbol in unknown_symbols: | ||||
|         print(args.lib + ': unknown symbol exported: ' + symbol) | ||||
|  | ||||
|     for symbol in missing_symbols: | ||||
|         print(args.lib + ': missing symbol: ' + symbol) | ||||
|  | ||||
|     if unknown_symbols or missing_symbols: | ||||
|         exit(1) | ||||
|     exit(0) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
							
								
								
									
										17
									
								
								bin/version.mk
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										17
									
								
								bin/version.mk
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| #!/usr/bin/make -sf | ||||
| # Print the various Mesa version fields. This is mostly used to add the | ||||
| # version to configure. | ||||
|  | ||||
| # This reflects that this script is usually called from the toplevel | ||||
| TOP = . | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| version: | ||||
| 	@echo $(MESA_VERSION) | ||||
| major: | ||||
| 	@echo $(MESA_MAJOR) | ||||
| minor: | ||||
| 	@echo $(MESA_MINOR) | ||||
| tiny: | ||||
| 	@echo $(MESA_TINY) | ||||
| @@ -1,3 +0,0 @@ | ||||
| { | ||||
| 	radeon_drm_winsys_create; | ||||
| }; | ||||
| @@ -1,6 +0,0 @@ | ||||
| VERSION_1 { | ||||
|     global: | ||||
|         main; | ||||
|     local: | ||||
|         *; | ||||
| }; | ||||
							
								
								
									
										108
									
								
								common.py
									
									
									
									
									
								
							
							
						
						
									
										108
									
								
								common.py
									
									
									
									
									
								
							| @@ -17,9 +17,6 @@ import SCons.Script.SConscript | ||||
| host_platform = _platform.system().lower() | ||||
| if host_platform.startswith('cygwin'): | ||||
|     host_platform = 'cygwin' | ||||
| # MSYS2 default platform selection. | ||||
| if host_platform.startswith('mingw'): | ||||
|     host_platform = 'windows' | ||||
|  | ||||
| # Search sys.argv[] for a "platform=foo" argument since we don't have | ||||
| # an 'env' variable at this point. | ||||
| @@ -29,41 +26,32 @@ else: | ||||
|     target_platform = host_platform | ||||
|  | ||||
| _machine_map = { | ||||
|     'x86': 'x86', | ||||
|     'i386': 'x86', | ||||
|     'i486': 'x86', | ||||
|     'i586': 'x86', | ||||
|     'i686': 'x86', | ||||
|     'BePC': 'x86', | ||||
|     'Intel': 'x86', | ||||
|     'ppc': 'ppc', | ||||
|     'BeBox': 'ppc', | ||||
|     'BeMac': 'ppc', | ||||
|     'AMD64': 'x86_64', | ||||
|     'x86_64': 'x86_64', | ||||
|     'sparc': 'sparc', | ||||
|     'sun4u': 'sparc', | ||||
| 	'x86': 'x86', | ||||
| 	'i386': 'x86', | ||||
| 	'i486': 'x86', | ||||
| 	'i586': 'x86', | ||||
| 	'i686': 'x86', | ||||
| 	'BePC': 'x86', | ||||
| 	'Intel': 'x86', | ||||
| 	'ppc' : 'ppc', | ||||
| 	'BeBox': 'ppc', | ||||
| 	'BeMac': 'ppc', | ||||
| 	'AMD64': 'x86_64', | ||||
| 	'x86_64': 'x86_64', | ||||
| 	'sparc': 'sparc', | ||||
| 	'sun4u': 'sparc', | ||||
| } | ||||
|  | ||||
|  | ||||
| # find host_machine value | ||||
| if 'PROCESSOR_ARCHITECTURE' in os.environ: | ||||
|     host_machine = os.environ['PROCESSOR_ARCHITECTURE'] | ||||
| 	host_machine = os.environ['PROCESSOR_ARCHITECTURE'] | ||||
| else: | ||||
|     host_machine = _platform.machine() | ||||
| 	host_machine = _platform.machine() | ||||
| host_machine = _machine_map.get(host_machine, 'generic') | ||||
| # MSYS2 default machine selection. | ||||
| if _platform.system().lower().startswith('mingw') and 'MSYSTEM' in os.environ: | ||||
|     if os.environ['MSYSTEM'] == 'MINGW32': | ||||
|         host_machine = 'x86' | ||||
|     if os.environ['MSYSTEM'] == 'MINGW64': | ||||
|         host_machine = 'x86_64' | ||||
|  | ||||
| default_machine = host_machine | ||||
| default_toolchain = 'default' | ||||
| # MSYS2 default toolchain selection. | ||||
| if _platform.system().lower().startswith('mingw'): | ||||
|     default_toolchain = 'mingw' | ||||
|  | ||||
| if target_platform == 'windows' and host_platform != 'windows': | ||||
|     default_machine = 'x86' | ||||
| @@ -71,14 +59,13 @@ if target_platform == 'windows' and host_platform != 'windows': | ||||
|  | ||||
|  | ||||
| # find default_llvm value | ||||
| if 'LLVM' in os.environ or 'LLVM_CONFIG' in os.environ: | ||||
| if 'LLVM' in os.environ: | ||||
|     default_llvm = 'yes' | ||||
| else: | ||||
|     default_llvm = 'no' | ||||
|     try: | ||||
|         if target_platform != 'windows' and \ | ||||
|            subprocess.call(['llvm-config', '--version'], | ||||
|                            stdout=subprocess.PIPE) == 0: | ||||
|            subprocess.call(['llvm-config', '--version'], stdout=subprocess.PIPE) == 0: | ||||
|             default_llvm = 'yes' | ||||
|     except: | ||||
|         pass | ||||
| @@ -88,37 +75,28 @@ else: | ||||
| # Common options | ||||
|  | ||||
| def AddOptions(opts): | ||||
|     try: | ||||
|         from SCons.Variables.BoolVariable import BoolVariable as BoolOption | ||||
|     except ImportError: | ||||
|         from SCons.Options.BoolOption import BoolOption | ||||
|     try: | ||||
|         from SCons.Variables.EnumVariable import EnumVariable as EnumOption | ||||
|     except ImportError: | ||||
|         from SCons.Options.EnumOption import EnumOption | ||||
|     opts.Add(EnumOption('build', 'build type', 'debug', | ||||
|                         allowed_values=('debug', 'checked', 'profile', | ||||
|                                         'release'))) | ||||
|     opts.Add(BoolOption('verbose', 'verbose output', 'no')) | ||||
|     opts.Add(EnumOption('machine', 'use machine-specific assembly code', | ||||
|                         default_machine, | ||||
|                         allowed_values=('generic', 'ppc', 'x86', 'x86_64'))) | ||||
|     opts.Add(EnumOption('platform', 'target platform', host_platform, | ||||
|                         allowed_values=('cygwin', 'darwin', 'freebsd', 'haiku', | ||||
|                                         'linux', 'sunos', 'windows'))) | ||||
|     opts.Add(BoolOption('embedded', 'embedded build', 'no')) | ||||
|     opts.Add(BoolOption('analyze', | ||||
|                         'enable static code analysis where available', 'no')) | ||||
|     opts.Add(BoolOption('asan', 'enable Address Sanitizer', 'no')) | ||||
|     opts.Add('toolchain', 'compiler toolchain', default_toolchain) | ||||
|     opts.Add(BoolOption('llvm', 'use LLVM', default_llvm)) | ||||
|     opts.Add(BoolOption('force_scons', 'Force enable scons on deprecated platforms', 'false')) | ||||
|     opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)', | ||||
|                         'no')) | ||||
|     opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes')) | ||||
|     opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no')) | ||||
|     opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes')) | ||||
|     opts.Add(BoolOption('swr', 'Build OpenSWR', 'no')) | ||||
|     if host_platform == 'windows': | ||||
|         opts.Add('MSVC_VERSION', 'Microsoft Visual C/C++ version') | ||||
|         opts.Add('MSVC_USE_SCRIPT', 'Microsoft Visual C/C++ vcvarsall script', True) | ||||
| 	try: | ||||
| 		from SCons.Variables.BoolVariable import BoolVariable as BoolOption | ||||
| 	except ImportError: | ||||
| 		from SCons.Options.BoolOption import BoolOption | ||||
| 	try: | ||||
| 		from SCons.Variables.EnumVariable import EnumVariable as EnumOption | ||||
| 	except ImportError: | ||||
| 		from SCons.Options.EnumOption import EnumOption | ||||
| 	opts.Add(EnumOption('build', 'build type', 'debug', | ||||
| 	                  allowed_values=('debug', 'checked', 'profile', 'release'))) | ||||
| 	opts.Add(BoolOption('verbose', 'verbose output', 'no')) | ||||
| 	opts.Add(EnumOption('machine', 'use machine-specific assembly code', default_machine, | ||||
| 											 allowed_values=('generic', 'ppc', 'x86', 'x86_64'))) | ||||
| 	opts.Add(EnumOption('platform', 'target platform', host_platform, | ||||
| 											 allowed_values=('linux', 'windows', 'darwin', 'cygwin', 'sunos', 'freebsd8', 'haiku'))) | ||||
| 	opts.Add(BoolOption('embedded', 'embedded build', 'no')) | ||||
| 	opts.Add('toolchain', 'compiler toolchain', default_toolchain) | ||||
| 	opts.Add(BoolOption('gles', 'EXPERIMENTAL: enable OpenGL ES support', 'no')) | ||||
| 	opts.Add(BoolOption('llvm', 'use LLVM', default_llvm)) | ||||
| 	opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)', 'no')) | ||||
| 	opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes')) | ||||
| 	opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no')) | ||||
| 	opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes')) | ||||
| 	if host_platform == 'windows': | ||||
| 		opts.Add(EnumOption('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0'))) | ||||
|   | ||||
							
								
								
									
										2
									
								
								configs/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								configs/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| current | ||||
| autoconf | ||||
							
								
								
									
										27
									
								
								configs/aix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								configs/aix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| # Configuration for AIX, dynamic libs | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = aix | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = cc | ||||
| CXX = xlC | ||||
|  | ||||
| CFLAGS = -O -DAIXV3 -DPTHREADS | ||||
| CXXFLAGS = -O -DAIXV3 -DPTHREADS | ||||
|  | ||||
| # Misc tools and flags | ||||
| MKLIB_OPTIONS = | ||||
|  | ||||
| # Library names (actual file names) | ||||
| GL_LIB_NAME = libGL.a | ||||
| GLU_LIB_NAME = libGLU.a | ||||
| GLW_LIB_NAME = libGLw.a | ||||
| OSMESA_LIB_NAME = libOSMesa.a | ||||
|  | ||||
| GL_LIB_DEPS = -lX11 -lXext -lpthread -lm | ||||
| GLU_LIB_DEPS = -L$(TOP)/lib -l$(GL_LIB) -lm -lC | ||||
| GLW_LIB_DEPS = -L$(TOP)/lib -l$(GL_LIB) -lXm -lXt -lX11 | ||||
| OSMESA_LIB_DEPS = -L$(TOP)/lib -l$(GL_LIB) | ||||
|  | ||||
							
								
								
									
										24
									
								
								configs/aix-64
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								configs/aix-64
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| # Configuration for AIX 64-bit, dynamic libs | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = aix-64 | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = xlc | ||||
| CXX = xlC | ||||
|  | ||||
| CFLAGS = -q64 -qmaxmem=16384 -O -DAIXV3 -DPTHREADS | ||||
| CXXFLAGS = -q64 -qmaxmem=16384 -O -DAIXV3 -DPTHREADS | ||||
| LIB_DIR = lib64 | ||||
|  | ||||
| # Library names (actual file names) | ||||
| GL_LIB_NAME = libGL.a | ||||
| GLU_LIB_NAME = libGLU.a | ||||
| GLW_LIB_NAME = libGLw.a | ||||
| OSMESA_LIB_NAME = libOSMesa.a | ||||
|  | ||||
| GL_LIB_DEPS = -lX11 -lXext -lm -lpthread | ||||
| GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm -lC | ||||
| GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lXm -lXt -lX11 | ||||
|  | ||||
							
								
								
									
										21
									
								
								configs/aix-64-static
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								configs/aix-64-static
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| # Configuration for AIX, static libs | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = aix-64-static | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = cc | ||||
| CXX = xlC | ||||
|  | ||||
| CFLAGS = -q64 -O -DAIXV3 -DPTHREADS | ||||
| CXXFLAGS = -q64 -O -DAIXV3 -DPTHREADS | ||||
| MKLIB_OPTIONS = -static | ||||
| LIB_DIR = lib64 | ||||
|  | ||||
| # Library names (actual file names) | ||||
| GL_LIB_NAME = libGL.a | ||||
| GLU_LIB_NAME = libGLU.a | ||||
| GLW_LIB_NAME = libGLw.a | ||||
| OSMESA_LIB_NAME = libOSMesa.a | ||||
|  | ||||
							
								
								
									
										21
									
								
								configs/aix-gcc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								configs/aix-gcc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| # Configuration for AIX with gcc | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = aix-gcc | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = gcc | ||||
| CXX = g++ | ||||
|  | ||||
| CFLAGS = -O2 -DAIXV3 | ||||
| CXXFLAGS = -O2 -DAIXV3 | ||||
|  | ||||
| # Work around aliasing bugs - developers should comment this out | ||||
| CFLAGS += -fno-strict-aliasing | ||||
| CXXFLAGS += -fno-strict-aliasing | ||||
|  | ||||
| MKLIB_OPTIONS = -arch aix-gcc | ||||
| GL_LIB_DEPS = -lX11 -lXext -lm | ||||
| GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm | ||||
|  | ||||
							
								
								
									
										20
									
								
								configs/aix-static
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								configs/aix-static
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| # Configuration for AIX, static libs | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = aix-static | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = cc | ||||
| CXX = xlC | ||||
|  | ||||
| CFLAGS = -O -DAIXV3 -DPTHREADS | ||||
| CXXFLAGS = -O -DAIXV3 -DPTHREADS | ||||
| MKLIB_OPTIONS = -static | ||||
|  | ||||
| # Library names (actual file names) | ||||
| GL_LIB_NAME = libGL.a | ||||
| GLU_LIB_NAME = libGLU.a | ||||
| GLW_LIB_NAME = libGLw.a | ||||
| OSMESA_LIB_NAME = libOSMesa.a | ||||
|  | ||||
							
								
								
									
										224
									
								
								configs/autoconf.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										224
									
								
								configs/autoconf.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,224 @@ | ||||
| # Autoconf configuration | ||||
|  | ||||
| # Pull in the defaults | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| # This is generated by configure | ||||
| CONFIG_NAME = autoconf | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = @CC@ | ||||
| CXX = @CXX@ | ||||
| OPT_FLAGS = @OPT_FLAGS@ | ||||
| ARCH_FLAGS = @ARCH_FLAGS@ | ||||
| ASM_FLAGS = @ASM_FLAGS@ | ||||
| PIC_FLAGS = @PIC_FLAGS@ | ||||
| DEFINES = @DEFINES@ | ||||
| API_DEFINES = @API_DEFINES@ | ||||
| SHARED_GLAPI = @SHARED_GLAPI@ | ||||
| CFLAGS_NOVISIBILITY = @CPPFLAGS@ @CFLAGS@ \ | ||||
| 	$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES) | ||||
| CXXFLAGS_NOVISIBILITY = @CPPFLAGS@ @CXXFLAGS@ \ | ||||
| 	$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES) | ||||
| CFLAGS = $(CFLAGS_NOVISIBILITY) @VISIBILITY_CFLAGS@ | ||||
| CXXFLAGS = $(CXXFLAGS_NOVISIBILITY) @VISIBILITY_CXXFLAGS@ | ||||
| LDFLAGS = @LDFLAGS@ | ||||
| EXTRA_LIB_PATH = @EXTRA_LIB_PATH@ | ||||
| RADEON_CFLAGS = @RADEON_CFLAGS@ | ||||
| RADEON_LIBS = @RADEON_LIBS@ | ||||
| NOUVEAU_CFLAGS = @NOUVEAU_CFLAGS@ | ||||
| NOUVEAU_LIBS = @NOUVEAU_LIBS@ | ||||
| INTEL_LIBS = @INTEL_LIBS@ | ||||
| INTEL_CFLAGS = @INTEL_CFLAGS@ | ||||
| X11_LIBS = @X11_LIBS@ | ||||
| X11_CFLAGS = @X11_CFLAGS@ | ||||
| LLVM_BINDIR = @LLVM_BINDIR@ | ||||
| LLVM_CFLAGS = @LLVM_CFLAGS@ | ||||
| LLVM_CXXFLAGS = @LLVM_CXXFLAGS@ | ||||
| LLVM_LDFLAGS = @LLVM_LDFLAGS@ | ||||
| LLVM_LIBS = @LLVM_LIBS@ | ||||
| LLVM_INCLUDEDIR = @LLVM_INCLUDEDIR@ | ||||
| GLW_CFLAGS = @GLW_CFLAGS@ | ||||
| GLX_TLS = @GLX_TLS@ | ||||
| DRI_CFLAGS = @DRI_CFLAGS@ | ||||
| DRI_CXXFLAGS = @DRI_CXXFLAGS@ | ||||
|  | ||||
| # dlopen | ||||
| DLOPEN_LIBS = @DLOPEN_LIBS@ | ||||
|  | ||||
| # Source selection | ||||
| MESA_ASM_SOURCES = @MESA_ASM_SOURCES@ | ||||
| GLAPI_ASM_SOURCES = @GLAPI_ASM_SOURCES@ | ||||
|  | ||||
| # Misc tools and flags | ||||
| MAKE = @MAKE@ | ||||
| SHELL = @SHELL@ | ||||
| MKLIB_OPTIONS = @MKLIB_OPTIONS@ | ||||
| MKDEP = @MKDEP@ | ||||
| MKDEP_OPTIONS = @MKDEP_OPTIONS@ | ||||
| INSTALL = @INSTALL@ | ||||
| AWK = @AWK@ | ||||
| GREP = @GREP@ | ||||
| NM = @NM@ | ||||
|  | ||||
| # Perl | ||||
| PERL = @PERL@ | ||||
|  | ||||
| # Python and flags (generally only needed by the developers) | ||||
| PYTHON2 = @PYTHON2@ | ||||
| PYTHON_FLAGS = -t -O -O | ||||
|  | ||||
| # Flex and Bison for GLSL compiler | ||||
| FLEX = @LEX@ | ||||
| BISON = @YACC@ | ||||
|  | ||||
| # Library names (base name) | ||||
| GL_LIB = @GL_LIB@ | ||||
| GLU_LIB = @GLU_LIB@ | ||||
| GLW_LIB = GLw | ||||
| OSMESA_LIB = @OSMESA_LIB@ | ||||
| GLESv1_CM_LIB = GLESv1_CM | ||||
| GLESv2_LIB = GLESv2 | ||||
| VG_LIB = OpenVG | ||||
| GLAPI_LIB = glapi | ||||
|  | ||||
| # Library names (actual file names) | ||||
| GL_LIB_NAME = @GL_LIB_NAME@ | ||||
| GLU_LIB_NAME = @GLU_LIB_NAME@ | ||||
| GLW_LIB_NAME = @GLW_LIB_NAME@ | ||||
| OSMESA_LIB_NAME = @OSMESA_LIB_NAME@ | ||||
| EGL_LIB_NAME = @EGL_LIB_NAME@ | ||||
| GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@ | ||||
| GLESv2_LIB_NAME = @GLESv2_LIB_NAME@ | ||||
| VG_LIB_NAME = @VG_LIB_NAME@ | ||||
| GLAPI_LIB_NAME = @GLAPI_LIB_NAME@ | ||||
|  | ||||
| # Globs used to install the lib and all symlinks | ||||
| GL_LIB_GLOB = @GL_LIB_GLOB@ | ||||
| GLU_LIB_GLOB = @GLU_LIB_GLOB@ | ||||
| GLW_LIB_GLOB = @GLW_LIB_GLOB@ | ||||
| OSMESA_LIB_GLOB = @OSMESA_LIB_GLOB@ | ||||
| EGL_LIB_GLOB = @EGL_LIB_GLOB@ | ||||
| GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@ | ||||
| GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@ | ||||
| VG_LIB_GLOB = @VG_LIB_GLOB@ | ||||
| GLAPI_LIB_GLOB = @GLAPI_LIB_GLOB@ | ||||
|  | ||||
| # Directories to build | ||||
| LIB_DIR = @LIB_DIR@ | ||||
| SRC_DIRS = @SRC_DIRS@ | ||||
| GLU_DIRS = @GLU_DIRS@ | ||||
| DRIVER_DIRS = @DRIVER_DIRS@ | ||||
| GALLIUM_DIRS = @GALLIUM_DIRS@ | ||||
| GALLIUM_DRIVERS_DIRS = @GALLIUM_DRIVERS_DIRS@ | ||||
| GALLIUM_WINSYS_DIRS = @GALLIUM_WINSYS_DIRS@ | ||||
| GALLIUM_TARGET_DIRS = @GALLIUM_TARGET_DIRS@ | ||||
| GALLIUM_STATE_TRACKERS_DIRS = @GALLIUM_STATE_TRACKERS_DIRS@ | ||||
| GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a | ||||
| GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a) | ||||
|  | ||||
| # Driver specific build vars | ||||
| DRI_DIRS = @DRI_DIRS@ | ||||
| DRICORE_GLSL_LIBS = @DRICORE_GLSL_LIBS@ | ||||
| DRICORE_LIBS = @DRICORE_LIBS@ | ||||
| DRICORE_LIB_DEPS = @DRICORE_LIB_DEPS@ | ||||
| EGL_PLATFORMS = @EGL_PLATFORMS@ | ||||
| EGL_CLIENT_APIS = @EGL_CLIENT_APIS@ | ||||
|  | ||||
| # Dependencies | ||||
| X11_INCLUDES = @X11_INCLUDES@ | ||||
|  | ||||
| # GLw motif setup | ||||
| GLW_SOURCES = @GLW_SOURCES@ | ||||
| MOTIF_CFLAGS = @MOTIF_CFLAGS@ | ||||
|  | ||||
| # Library/program dependencies | ||||
| GL_LIB_DEPS = $(EXTRA_LIB_PATH) @GL_LIB_DEPS@ | ||||
| OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @OSMESA_MESA_DEPS@ \ | ||||
| 	$(EXTRA_LIB_PATH) @OSMESA_LIB_DEPS@ | ||||
| EGL_LIB_DEPS = $(EXTRA_LIB_PATH) @EGL_LIB_DEPS@ | ||||
| GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLU_MESA_DEPS@ \ | ||||
| 	$(EXTRA_LIB_PATH) @GLU_LIB_DEPS@ | ||||
| GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \ | ||||
| 	$(EXTRA_LIB_PATH) @GLW_LIB_DEPS@ | ||||
| GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv1_CM_LIB_DEPS@ | ||||
| GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv2_LIB_DEPS@ | ||||
| VG_LIB_DEPS = $(EXTRA_LIB_PATH) @VG_LIB_DEPS@ | ||||
| GLAPI_LIB_DEPS = $(EXTRA_LIB_PATH) @GLAPI_LIB_DEPS@ | ||||
|  | ||||
| # DRI dependencies | ||||
| MESA_MODULES = @MESA_MODULES@ | ||||
| DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @DRI_LIB_DEPS@ | ||||
| LIBDRM_CFLAGS = @LIBDRM_CFLAGS@ | ||||
| LIBDRM_LIB = @LIBDRM_LIBS@ | ||||
| DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@ | ||||
| GLPROTO_CFLAGS = @GLPROTO_CFLAGS@ | ||||
| EXPAT_INCLUDES = @EXPAT_INCLUDES@ | ||||
|  | ||||
| # Autoconf directories | ||||
| prefix = @prefix@ | ||||
| exec_prefix = @exec_prefix@ | ||||
| libdir = @libdir@ | ||||
| includedir = @includedir@ | ||||
|  | ||||
| # Installation directories (for make install) | ||||
| INSTALL_DIR = $(prefix) | ||||
| INSTALL_LIB_DIR = $(libdir) | ||||
| INSTALL_INC_DIR = $(includedir) | ||||
|  | ||||
| # DRI installation directories | ||||
| DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@ | ||||
|  | ||||
| # Where libGL will look for DRI hardware drivers | ||||
| DRI_DRIVER_SEARCH_DIR = @DRI_DRIVER_SEARCH_DIR@ | ||||
|  | ||||
| # EGL driver install directory | ||||
| EGL_DRIVER_INSTALL_DIR = @EGL_DRIVER_INSTALL_DIR@ | ||||
|  | ||||
| # XVMC library install directory | ||||
| XVMC_LIB_INSTALL_DIR=@XVMC_LIB_INSTALL_DIR@ | ||||
|  | ||||
| # VDPAU library install directory | ||||
| VDPAU_LIB_INSTALL_DIR=@VDPAU_LIB_INSTALL_DIR@ | ||||
|  | ||||
| # VA library install directory | ||||
| VA_LIB_INSTALL_DIR=@VA_LIB_INSTALL_DIR@ | ||||
|  | ||||
| # Xorg driver install directory (for xorg state-tracker) | ||||
| XORG_DRIVER_INSTALL_DIR = @XORG_DRIVER_INSTALL_DIR@ | ||||
|  | ||||
| # pkg-config substitutions | ||||
| GL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@ | ||||
| GL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@ | ||||
| GL_PC_CFLAGS = @GL_PC_CFLAGS@ | ||||
| DRI_PC_REQ_PRIV = @DRI_PC_REQ_PRIV@ | ||||
| GLU_PC_REQ = @GLU_PC_REQ@ | ||||
| GLU_PC_REQ_PRIV = @GLU_PC_REQ_PRIV@ | ||||
| GLU_PC_LIB_PRIV = @GLU_PC_LIB_PRIV@ | ||||
| GLU_PC_CFLAGS = @GLU_PC_CFLAGS@ | ||||
| GLW_PC_REQ_PRIV = @GLW_PC_REQ_PRIV@ | ||||
| GLW_PC_LIB_PRIV = @GLW_PC_LIB_PRIV@ | ||||
| GLW_PC_CFLAGS = @GLW_PC_CFLAGS@ | ||||
| OSMESA_PC_REQ = @OSMESA_PC_REQ@ | ||||
| OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@ | ||||
| GLESv1_CM_PC_LIB_PRIV = @GLESv1_CM_PC_LIB_PRIV@ | ||||
| GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@ | ||||
| EGL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@ | ||||
| EGL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@ | ||||
| EGL_PC_CFLAGS = @GL_PC_CFLAGS@ | ||||
|  | ||||
| XCB_DRI2_CFLAGS = @XCB_DRI2_CFLAGS@ | ||||
| XCB_DRI2_LIBS = @XCB_DRI2_LIBS@ | ||||
| LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@ | ||||
| LIBUDEV_LIBS = @LIBUDEV_LIBS@ | ||||
| WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ | ||||
| WAYLAND_LIBS = @WAYLAND_LIBS@ | ||||
|  | ||||
| MESA_LLVM = @MESA_LLVM@ | ||||
|  | ||||
| LLVM_VERSION = @LLVM_VERSION@ | ||||
|  | ||||
| HAVE_XF86VIDMODE = @HAVE_XF86VIDMODE@ | ||||
|  | ||||
| GALLIUM_PIPE_LOADER_DEFINES = @GALLIUM_PIPE_LOADER_DEFINES@ | ||||
| GALLIUM_PIPE_LOADER_LIBS = @GALLIUM_PIPE_LOADER_LIBS@ | ||||
							
								
								
									
										31
									
								
								configs/bluegene-osmesa
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								configs/bluegene-osmesa
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| # Configuration for building only libOSMesa on BlueGene, no Xlib driver | ||||
| # This doesn't really have a lot of dependencies, so it should be usable | ||||
| # on other (gcc-based) systems too. | ||||
| # It uses static linking and disables multithreading. | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = bluegene-osmesa | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = /bgl/BlueLight/ppcfloor/blrts-gnu/bin/powerpc-bgl-blrts-gnu-gcc | ||||
| CXX = /bgl/BlueLight/ppcfloor/blrts-gnu/bin/powerpc-bgl-blrts-gnu-g++ | ||||
| CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE | ||||
| CXXFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURC | ||||
|  | ||||
| # Work around aliasing bugs - developers should comment this out | ||||
| CFLAGS += -fno-strict-aliasing | ||||
| CXXFLAGS += -fno-strict-aliasing | ||||
|  | ||||
| MKLIB_OPTIONS = -static | ||||
|  | ||||
| OSMESA_LIB_NAME = libOSMesa.a | ||||
|  | ||||
| # Directories | ||||
| SRC_DIRS = mesa glu | ||||
| DRIVER_DIRS = osmesa | ||||
|  | ||||
|  | ||||
| # Dependencies | ||||
| OSMESA_LIB_DEPS = -lm | ||||
| GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(OSMESA_LIB) | ||||
							
								
								
									
										27
									
								
								configs/bluegene-xlc-osmesa
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								configs/bluegene-xlc-osmesa
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| # Configuration for building only libOSMesa on BlueGene using the IBM xlc compiler | ||||
| # This doesn't really have a lot of dependencies, so it should be usable | ||||
| # on similar systems too. | ||||
| # It uses static linking and disables multithreading. | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = bluegene-osmesa | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = /opt/ibmcmp/vacpp/bg/8.0/bin/blrts_xlc | ||||
| CXX = /opt/ibmcmp/vacpp/bg/8.0/bin/blrts_xlC | ||||
| CFLAGS = -O3 -pedantic -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE | ||||
| CXXFLAGS = -O3 -pedantic -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE | ||||
|  | ||||
| MKLIB_OPTIONS = -static | ||||
|  | ||||
| OSMESA_LIB_NAME = libOSMesa.a | ||||
|  | ||||
| # Directories | ||||
| SRC_DIRS = mesa glu | ||||
| DRIVER_DIRS = osmesa | ||||
|  | ||||
|  | ||||
| # Dependencies | ||||
| OSMESA_LIB_DEPS = -lm | ||||
| GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(OSMESA_LIB) | ||||
							
								
								
									
										30
									
								
								configs/catamount-osmesa-pgi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								configs/catamount-osmesa-pgi
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| # Configuration for building only libOSMesa on Cray Xt3 | ||||
| # for the compute nodes running Catamount using the  | ||||
| # Portland Group compiler. The Portland Group toolchain has to be  | ||||
| # enabled before using "module switch PrgEnv-gnu PrgEnv-pgi" . | ||||
| # This doesn't really have a lot of dependencies, so it should be usable | ||||
| # on other similar systems too. | ||||
| # It uses static linking and disables multithreading. | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = catamount-osmesa-pgi | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = cc | ||||
| CXX = CC | ||||
| CFLAGS = -target=catamount -fastsse -O3 -Mnontemporal -Mprefetch=distance:8,nta   -fPIC -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE | ||||
| CXXFLAGS = -target=catamount -fastsse -O3 -Mnontemporal -Mprefetch=distance:8,nta -fPIC -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE | ||||
|  | ||||
| MKLIB_OPTIONS = -static | ||||
|  | ||||
| OSMESA_LIB_NAME = libOSMesa.a | ||||
|  | ||||
| # Directories | ||||
| SRC_DIRS = mesa glu | ||||
| DRIVER_DIRS = osmesa | ||||
|  | ||||
|  | ||||
| # Dependencies | ||||
| OSMESA_LIB_DEPS = -lm | ||||
| GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(OSMESA_LIB) | ||||
							
								
								
									
										61
									
								
								configs/darwin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								configs/darwin
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | ||||
| # Configuration for Darwin / MacOS X, making dynamic libs | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = darwin | ||||
|  | ||||
| INSTALL_DIR = /usr/X11 | ||||
|  | ||||
| X11_DIR = $(INSTALL_DIR) | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = $(shell xcrun -find cc) | ||||
| CXX = $(shell xcrun -find c++) | ||||
| PIC_FLAGS = -fPIC | ||||
| DEFINES =  -D_DARWIN_C_SOURCE -DPTHREADS -D_GNU_SOURCE \ | ||||
| 	   -DGLX_ALIAS_UNSUPPORTED \ | ||||
| 	   -DGLX_DIRECT_RENDERING -DGLX_USE_APPLEGL | ||||
|  | ||||
| # -DGLX_INDIRECT_RENDERING \ | ||||
|  | ||||
| # -D_GNU_SOURCE          - for src/mesa/main ... | ||||
| # -DGLX_DIRECT_RENDERING - pulls in libdrm stuff in glx | ||||
| # -DGLX_USE_APPLEGL      - supposed to be used with GLX_DIRECT_RENDERING to use AGL rather than DRM, but doesn't compile | ||||
| # -DIN_DRI_DRIVER | ||||
|  | ||||
| ARCH_FLAGS += $(RC_CFLAGS) | ||||
| INCLUDE_FLAGS = -I$(INSTALL_DIR)/include -I$(X11_DIR)/include | ||||
| OPT_FLAGS = -g3 -gdwarf-2 -Os -ffast-math -fno-strict-aliasing | ||||
| WARN_FLAGS = -Wall -Wmissing-prototypes | ||||
|  | ||||
| CFLAGS = -std=c99 -fvisibility=hidden \ | ||||
| 	$(OPT_FLAGS) $(WARN_FLAGS) $(INCLUDE_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES) $(EXTRA_CFLAGS) | ||||
| CXXFLAGS = -fvisibility=hidden \ | ||||
| 	$(OPT_FLAGS) $(WARN_FLAGS) $(INCLUDE_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES) $(EXTRA_CFLAGS) | ||||
|  | ||||
| # Library names (actual file names) | ||||
| GL_LIB_NAME = lib$(GL_LIB).dylib | ||||
| GLU_LIB_NAME = lib$(GLU_LIB).dylib | ||||
| GLW_LIB_NAME = lib$(GLW_LIB).dylib | ||||
| OSMESA_LIB_NAME = lib$(OSMESA_LIB).dylib | ||||
| VG_LIB_NAME = lib$(VG_LIB).dylib | ||||
|  | ||||
| # globs used to install the lib and all symlinks | ||||
| GL_LIB_GLOB = lib$(GL_LIB).*dylib | ||||
| GLU_LIB_GLOB = lib$(GLU_LIB).*dylib | ||||
| GLW_LIB_GLOB = lib$(GLW_LIB).*dylib | ||||
| OSMESA_LIB_GLOB = lib$(OSMESA_LIB).*dylib | ||||
| VG_LIB_GLOB = lib$(VG_LIB).*dylib | ||||
|  | ||||
| GL_LIB_DEPS = -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11-xcb -lxcb -lX11 -lXext $(EXTRA_LDFLAGS) | ||||
| OSMESA_LIB_DEPS = $(EXTRA_LDFLAGS) | ||||
| GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) $(EXTRA_LDFLAGS) | ||||
| GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXt $(EXTRA_LDFLAGS) | ||||
|  | ||||
| SRC_DIRS = glsl mapi/glapi mapi/vgapi glx/apple mesa glu | ||||
| GLU_DIRS = sgi | ||||
| DRIVER_DIRS = osmesa | ||||
| #DRIVER_DIRS = dri | ||||
| DRI_DIRS = swrast | ||||
| #GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad | ||||
| #GALLIUM_DRIVERS_DIRS += llvmpipe | ||||
							
								
								
									
										7
									
								
								configs/darwin-fat-32bit
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								configs/darwin-fat-32bit
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| # Configuration for Darwin / MacOS X, making 32bit fat dynamic libs | ||||
|  | ||||
| RC_CFLAGS=-arch ppc -arch i386 | ||||
|  | ||||
| include $(TOP)/configs/darwin | ||||
|  | ||||
| CONFIG_NAME = darwin-fat-32bit | ||||
							
								
								
									
										7
									
								
								configs/darwin-fat-all
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								configs/darwin-fat-all
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| # Configuration for Darwin / MacOS X, making 32bit and 64bit fat dynamic libs | ||||
|  | ||||
| RC_CFLAGS=-arch ppc -arch i386 -arch ppc64 -arch x86_64 | ||||
|  | ||||
| include $(TOP)/configs/darwin | ||||
|  | ||||
| CONFIG_NAME = darwin-fat-all | ||||
							
								
								
									
										7
									
								
								configs/darwin-fat-intel
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								configs/darwin-fat-intel
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| # Configuration for Darwin / MacOS X, making 32bit and 64bit fat dynamic libs for intel | ||||
|  | ||||
| RC_CFLAGS=-arch i386 -arch x86_64 | ||||
|  | ||||
| include $(TOP)/configs/darwin | ||||
|  | ||||
| CONFIG_NAME = darwin-fat-intel | ||||
							
								
								
									
										174
									
								
								configs/default
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								configs/default
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,174 @@ | ||||
| # Default/template configuration | ||||
|  | ||||
| # This is included by other config files which may override some | ||||
| # of these variables. | ||||
| # Think of this as a base class from which configs are derived. | ||||
|  | ||||
|  | ||||
| CONFIG_NAME = default | ||||
|  | ||||
| # Version info | ||||
| MESA_MAJOR=8 | ||||
| MESA_MINOR=1 | ||||
| MESA_TINY=0 | ||||
| MESA_VERSION = $(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY) | ||||
|  | ||||
| # external projects.  This should be useless now that we use libdrm. | ||||
| DRM_SOURCE_PATH=$(TOP)/../drm | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = cc | ||||
| CXX = CC | ||||
| HOST_CC = $(CC) | ||||
| CFLAGS = -O | ||||
| CXXFLAGS = -O | ||||
| LDFLAGS = | ||||
| HOST_CFLAGS = $(CFLAGS) | ||||
| GLU_CFLAGS =  | ||||
| GLX_TLS = no | ||||
|  | ||||
| # Compiler for building demos/tests/etc | ||||
| APP_CC = $(CC) | ||||
| APP_CXX = $(CXX) | ||||
|  | ||||
| # Misc tools and flags | ||||
| SHELL = /bin/sh | ||||
| MKLIB = $(SHELL) $(TOP)/bin/mklib | ||||
| MKLIB_OPTIONS =  | ||||
| MKDEP = makedepend | ||||
| MKDEP_OPTIONS = -fdepend | ||||
| MAKE = make | ||||
| FLEX = flex | ||||
| BISON = bison | ||||
| PKG_CONFIG = pkg-config | ||||
|  | ||||
| # Use MINSTALL for installing libraries, INSTALL for everything else | ||||
| MINSTALL = $(SHELL) $(TOP)/bin/minstall | ||||
| INSTALL = $(MINSTALL) | ||||
|  | ||||
| # Tools for regenerating glapi (generally only needed by the developers) | ||||
| PYTHON2 = python | ||||
| PYTHON_FLAGS = -t -O -O | ||||
| INDENT = indent | ||||
| INDENT_FLAGS = -i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool | ||||
|  | ||||
| # Library names (base name) | ||||
| GL_LIB = GL | ||||
| GLU_LIB = GLU | ||||
| GLW_LIB = GLw | ||||
| OSMESA_LIB = OSMesa | ||||
| EGL_LIB = EGL | ||||
| GLESv1_CM_LIB = GLESv1_CM | ||||
| GLESv2_LIB = GLESv2 | ||||
| VG_LIB = OpenVG | ||||
| GLAPI_LIB = glapi | ||||
|  | ||||
| # Library names (actual file names) | ||||
| GL_LIB_NAME = lib$(GL_LIB).so | ||||
| GLU_LIB_NAME = lib$(GLU_LIB).so | ||||
| GLW_LIB_NAME = lib$(GLW_LIB).so | ||||
| OSMESA_LIB_NAME = lib$(OSMESA_LIB).so | ||||
| EGL_LIB_NAME = lib$(EGL_LIB).so | ||||
| GLESv1_CM_LIB_NAME = lib$(GLESv1_CM_LIB).so | ||||
| GLESv2_LIB_NAME = lib$(GLESv2_LIB).so | ||||
| VG_LIB_NAME = lib$(VG_LIB).so | ||||
| GLAPI_LIB_NAME = lib$(GLAPI_LIB).so | ||||
|  | ||||
| # globs used to install the lib and all symlinks | ||||
| GL_LIB_GLOB = $(GL_LIB_NAME)* | ||||
| GLU_LIB_GLOB = $(GLU_LIB_NAME)* | ||||
| GLW_LIB_GLOB = $(GLW_LIB_NAME)* | ||||
| OSMESA_LIB_GLOB = $(OSMESA_LIB_NAME)* | ||||
| EGL_LIB_GLOB = $(EGL_LIB_NAME)* | ||||
| GLESv1_CM_LIB_GLOB = $(GLESv1_CM_LIB_NAME)* | ||||
| GLESv2_LIB_GLOB = $(GLESv2_LIB_NAME)* | ||||
| VG_LIB_GLOB = $(VG_LIB_NAME)* | ||||
| GLAPI_LIB_GLOB = $(GLAPI_LIB_NAME)* | ||||
|  | ||||
| DRI_CFLAGS = $(CFLAGS) | ||||
| DRI_CXXFLAGS = $(CXXFLAGS) | ||||
|  | ||||
| # Optional assembly language optimization files for libGL | ||||
| MESA_ASM_SOURCES =  | ||||
|  | ||||
| # GLw widget sources (Append "GLwMDrawA.c" here and add -lXm to GLW_LIB_DEPS in | ||||
| # order to build the Motif widget too) | ||||
| GLW_SOURCES = GLwDrawA.c | ||||
| MOTIF_CFLAGS = -I/usr/include/Motif1.2 | ||||
|  | ||||
|  | ||||
| # Directories to build | ||||
| LIB_DIR = lib | ||||
| SRC_DIRS = glsl mapi/glapi mapi/vgapi mesa \ | ||||
| 	gallium egl gallium/winsys gallium/targets glu | ||||
| GLU_DIRS = sgi | ||||
| DRIVER_DIRS = x11 osmesa | ||||
|  | ||||
| # Gallium directories and | ||||
| GALLIUM_DIRS = auxiliary drivers state_trackers | ||||
| GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a | ||||
| GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad i915 svga r300 nvfx nv50 | ||||
| GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a) | ||||
| GALLIUM_WINSYS_DIRS = sw sw/xlib | ||||
| GALLIUM_TARGET_DIRS = libgl-xlib | ||||
| GALLIUM_STATE_TRACKERS_DIRS = glx vega | ||||
|  | ||||
| # native platforms EGL should support | ||||
| EGL_PLATFORMS = x11 | ||||
| EGL_CLIENT_APIS = $(GL_LIB) | ||||
|  | ||||
| # Library dependencies | ||||
| #EXTRA_LIB_PATH ?= | ||||
| GL_LIB_DEPS     = $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread | ||||
| EGL_LIB_DEPS    = $(EXTRA_LIB_PATH) -ldl -lpthread | ||||
| OSMESA_LIB_DEPS = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) | ||||
| GLU_LIB_DEPS    = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm | ||||
| GLW_LIB_DEPS    = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lXt -lX11 | ||||
| GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread | ||||
| GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread | ||||
| VG_LIB_DEPS    = $(EXTRA_LIB_PATH) -lpthread | ||||
| GLAPI_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread | ||||
|  | ||||
| # Program dependencies - specific GL libraries added in Makefiles | ||||
| X11_LIBS = -lX11 | ||||
|  | ||||
| DLOPEN_LIBS = -ldl | ||||
|  | ||||
| # Installation directories (for make install) | ||||
| INSTALL_DIR = /usr/local | ||||
| INSTALL_LIB_DIR = $(INSTALL_DIR)/$(LIB_DIR) | ||||
| INSTALL_INC_DIR = $(INSTALL_DIR)/include | ||||
| DRI_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/dri | ||||
|  | ||||
| # Where libGL will look for DRI hardware drivers | ||||
| DRI_DRIVER_SEARCH_DIR = $(DRI_DRIVER_INSTALL_DIR) | ||||
|  | ||||
| # EGL driver install directory | ||||
| EGL_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/egl | ||||
|  | ||||
| # Xorg driver install directory (for xorg state-tracker) | ||||
| XORG_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/xorg/modules/drivers | ||||
|  | ||||
| # pkg-config substitutions | ||||
| GL_PC_REQ_PRIV = | ||||
| GL_PC_LIB_PRIV = | ||||
| GL_PC_CFLAGS = | ||||
| DRI_PC_REQ_PRIV = | ||||
| GLU_PC_REQ = gl | ||||
| GLU_PC_REQ_PRIV = | ||||
| GLU_PC_LIB_PRIV = | ||||
| GLU_PC_CFLAGS = | ||||
| GLW_PC_REQ_PRIV = | ||||
| GLW_PC_LIB_PRIV = | ||||
| GLW_PC_CFLAGS = | ||||
| OSMESA_PC_REQ = | ||||
| OSMESA_PC_LIB_PRIV = | ||||
| GLESv1_CM_PC_REQ_PRIV = | ||||
| GLESv1_CM_PC_LIB_PRIV = | ||||
| GLESv1_CM_PC_CFLAGS = | ||||
| GLESv2_PC_REQ_PRIV = | ||||
| GLESv2_PC_LIB_PRIV = | ||||
| GLESv2_PC_CFLAGS = | ||||
| VG_PC_REQ_PRIV = | ||||
| VG_PC_LIB_PRIV = | ||||
| VG_PC_CFLAGS = | ||||
							
								
								
									
										29
									
								
								configs/freebsd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								configs/freebsd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| # Configuration for FreeBSD | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = FreeBSD | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = cc | ||||
| CXX = c++ | ||||
| MAKE = gmake | ||||
|  | ||||
| OPT_FLAGS  = -O2 | ||||
| PIC_FLAGS  = -fPIC | ||||
|  | ||||
| DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -DUSE_XSHM \ | ||||
| 	-DHZ=100 | ||||
|  | ||||
| X11_INCLUDES = -I/usr/local/include | ||||
|  | ||||
| CFLAGS += $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) $(DEFINES) $(X11_INCLUDES) -ffast-math -pedantic | ||||
|  | ||||
| CXXFLAGS += $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) $(DEFINES) $(X11_INCLUDES) | ||||
|  | ||||
|  | ||||
| # Work around aliasing bugs - developers should comment this out | ||||
| CFLAGS += -fno-strict-aliasing | ||||
| CXXFLAGS += -fno-strict-aliasing | ||||
|  | ||||
| EXTRA_LIB_PATH = -L/usr/local/lib | ||||
							
								
								
									
										48
									
								
								configs/freebsd-dri
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								configs/freebsd-dri
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| # -*-makefile-*- | ||||
| # Configuration for freebsd-dri: FreeBSD DRI hardware drivers | ||||
|  | ||||
| include $(TOP)/configs/freebsd | ||||
|  | ||||
| CONFIG_NAME = freebsd-dri | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = gcc | ||||
| CXX = g++ | ||||
| WARN_FLAGS = -Wall | ||||
| OPT_FLAGS = -O -g | ||||
|  | ||||
| EXPAT_INCLUDES = -I/usr/local/include | ||||
| X11_INCLUDES = -I/usr/local/include | ||||
| DEFINES = -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER \ | ||||
| 	-DGLX_DIRECT_RENDERING -DGLX_INDIRECT_RENDERING \ | ||||
| 	-DHAVE_ALIAS | ||||
|  | ||||
| CFLAGS = $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) -Wmissing-prototypes -std=c99 -Wundef -ffast-math \ | ||||
| 	$(ASM_FLAGS) $(X11_INCLUDES) $(DEFINES) | ||||
|  | ||||
| CXXFLAGS = $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) $(DEFINES) -Wall -ansi -pedantic $(ASM_FLAGS) $(X11_INCLUDES)  | ||||
|  | ||||
| # Work around aliasing bugs - developers should comment this out | ||||
| CFLAGS += -fno-strict-aliasing | ||||
| CXXFLAGS += -fno-strict-aliasing | ||||
|  | ||||
| ASM_SOURCES =  | ||||
| MESA_ASM_SOURCES =  | ||||
|  | ||||
| # Library/program dependencies | ||||
| MESA_MODULES  = $(TOP)/src/mesa/libmesa.a | ||||
|  | ||||
| LIBDRM_CFLAGS = `$(PKG_CONFIG) --cflags libdrm` | ||||
| LIBDRM_LIB = `$(PKG_CONFIG) --libs libdrm` | ||||
| DRI_LIB_DEPS = $(MESA_MODULES) -L/usr/local/lib -lm -pthread -lexpat $(LIBDRM_LIB) | ||||
| GL_LIB_DEPS = -L/usr/local/lib -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \ | ||||
| 	-lm -pthread $(LIBDRM_LIB) | ||||
|  | ||||
| GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -L/usr/local/lib -lGL -lXt -lX11 | ||||
|  | ||||
|  | ||||
| # Directories | ||||
| SRC_DIRS = glx gallium mesa glu | ||||
| DRIVER_DIRS = dri | ||||
|  | ||||
| DRM_SOURCE_PATH=$(TOP)/../drm | ||||
							
								
								
									
										10
									
								
								configs/freebsd-dri-amd64
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								configs/freebsd-dri-amd64
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| # -*-makefile-*- | ||||
| # Configuration for freebsd-dri-amd64: FreeBSD DRI hardware drivers | ||||
|  | ||||
| include $(TOP)/configs/freebsd-dri | ||||
|  | ||||
| CONFIG_NAME = freebsd-dri-x86-64 | ||||
|  | ||||
| ASM_FLAGS = -DUSE_X86_64_ASM | ||||
| MESA_ASM_SOURCES = $(X86-64_SOURCES) | ||||
| GLAPI_ASM_SOURCES = $(X86-64_API) | ||||
							
								
								
									
										13
									
								
								configs/freebsd-dri-x86
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								configs/freebsd-dri-x86
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| # -*-makefile-*- | ||||
| # Configuration for freebsd-dri: FreeBSD DRI hardware drivers | ||||
|  | ||||
| include $(TOP)/configs/freebsd-dri | ||||
|  | ||||
| CONFIG_NAME = freebsd-dri-x86 | ||||
|  | ||||
| # Unnecessary on x86, generally. | ||||
| PIC_FLAGS =  | ||||
|  | ||||
| ASM_FLAGS = -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM | ||||
| MESA_ASM_SOURCES = $(X86_SOURCES) | ||||
| GLAPI_ASM_SOURCES = $(X86_API) | ||||
							
								
								
									
										13
									
								
								configs/hpux10
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								configs/hpux10
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| # Configuration for HPUX v10, shared libs | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = hpux10 | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = cc | ||||
| CXX = aCC | ||||
|  | ||||
| CFLAGS = -O +DAportable +z -Ae -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DUSE_XSHM | ||||
| CXXFLAGS = -O +DAportable +Z -Ae -D_HPUX_SOURCE | ||||
|  | ||||
							
								
								
									
										18
									
								
								configs/hpux10-gcc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								configs/hpux10-gcc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| # Configuration for HPUX v10, with gcc | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = hpux10-gcc | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = gcc | ||||
| CXX = g++ | ||||
|  | ||||
| CFLAGS = -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include  -DUSE_XSHM | ||||
| CXXFLAGS = -ansi -O3 -D_HPUX_SOURCE | ||||
|  | ||||
| # Work around aliasing bugs - developers should comment this out | ||||
| CFLAGS += -fno-strict-aliasing | ||||
| CXXFLAGS += -fno-strict-aliasing | ||||
|  | ||||
|  | ||||
							
								
								
									
										26
									
								
								configs/hpux10-static
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								configs/hpux10-static
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| # Configuration for HPUX v10, static libs | ||||
|  | ||||
| include $(TOP)/configs/default | ||||
|  | ||||
| CONFIG_NAME = hpux10-static | ||||
|  | ||||
| # Compiler and flags | ||||
| CC = cc | ||||
| CXX = aCC | ||||
|  | ||||
| CFLAGS = -O +DAportable +z -Ae -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DUSE_XSHM | ||||
| CXXFLAGS = -O +DAportable +Z -Ae -D_HPUX_SOURCE | ||||
|  | ||||
| MKLIB_OPTIONS = -static | ||||
|  | ||||
| # Library names (actual file names) | ||||
| GL_LIB_NAME = libGL.a | ||||
| GLU_LIB_NAME = libGLU.a | ||||
| GLW_LIB_NAME = libGLw.a | ||||
| OSMESA_LIB_NAME = libOSMesa.a | ||||
|  | ||||
| # Library/program dependencies (static libs don't have dependencies) | ||||
| GL_LIB_DEPS =  | ||||
| OSMESA_LIB_DEPS =  | ||||
| GLU_LIB_DEPS =  | ||||
| GLW_LIB_DEPS =  | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user