Compare commits
	
		
			1 Commits
		
	
	
		
			mesa-19.2.
			...
			mesa-10.1-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					9f4366f1ac | 
@@ -1,18 +1,11 @@
 | 
			
		||||
((nil . ((show-trailing-whitespace . t)))
 | 
			
		||||
 (prog-mode
 | 
			
		||||
((nil
 | 
			
		||||
  (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
 | 
			
		||||
							
								
								
									
										44
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +1,46 @@
 | 
			
		||||
*.a
 | 
			
		||||
*.dll
 | 
			
		||||
*.exe
 | 
			
		||||
*.ilk
 | 
			
		||||
*.la
 | 
			
		||||
*.lo
 | 
			
		||||
*.log
 | 
			
		||||
*.o
 | 
			
		||||
*.obj
 | 
			
		||||
*.os
 | 
			
		||||
*.pc
 | 
			
		||||
*.pdb
 | 
			
		||||
*.pyc
 | 
			
		||||
*.pyo
 | 
			
		||||
*.out
 | 
			
		||||
*.so
 | 
			
		||||
*.so.*
 | 
			
		||||
*.sw[a-z]
 | 
			
		||||
*.tar
 | 
			
		||||
*.tar.bz2
 | 
			
		||||
*.tar.gz
 | 
			
		||||
*.trs
 | 
			
		||||
*.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
 | 
			
		||||
.dir-locals.el
 | 
			
		||||
.deps/
 | 
			
		||||
.dirstamp
 | 
			
		||||
.libs/
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										382
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
							
						
						
									
										382
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							@@ -1,382 +0,0 @@
 | 
			
		||||
# This is the tag of the docker image used for the build jobs. If the
 | 
			
		||||
# image doesn't exist yet, the containers-build 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-08-09"
 | 
			
		||||
  DEBIAN_VERSION: stretch-slim
 | 
			
		||||
  DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
 | 
			
		||||
 | 
			
		||||
include:
 | 
			
		||||
  - project: 'wayland/ci-templates'
 | 
			
		||||
    ref: c73dae8b84697ef18e2dbbf4fed7386d9652b0cd
 | 
			
		||||
    file: '/templates/debian.yml'
 | 
			
		||||
 | 
			
		||||
stages:
 | 
			
		||||
  - containers-build
 | 
			
		||||
  - build+test
 | 
			
		||||
  - test
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# When to automatically run the CI
 | 
			
		||||
.ci-run-policy: &ci-run-policy
 | 
			
		||||
  only:
 | 
			
		||||
    - branches@mesa/mesa
 | 
			
		||||
    - merge_requests
 | 
			
		||||
    - /^ci([-/].*)?$/
 | 
			
		||||
  retry:
 | 
			
		||||
    max: 2
 | 
			
		||||
    when:
 | 
			
		||||
      - runner_system_failure
 | 
			
		||||
 | 
			
		||||
.ci-deqp-artifacts: &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
 | 
			
		||||
 | 
			
		||||
# CONTAINERS
 | 
			
		||||
 | 
			
		||||
debian:
 | 
			
		||||
  extends: .debian@container-ifnot-exists
 | 
			
		||||
  stage: containers-build
 | 
			
		||||
  <<: *ci-run-policy
 | 
			
		||||
  variables:
 | 
			
		||||
    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
 | 
			
		||||
    DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# BUILD
 | 
			
		||||
 | 
			
		||||
.build:
 | 
			
		||||
  <<: *ci-run-policy
 | 
			
		||||
  image: $DEBIAN_IMAGE
 | 
			
		||||
  stage: build+test
 | 
			
		||||
  cache:
 | 
			
		||||
    paths:
 | 
			
		||||
      - ccache
 | 
			
		||||
  artifacts:
 | 
			
		||||
    when: always
 | 
			
		||||
    paths:
 | 
			
		||||
      - _build/meson-logs/*.txt
 | 
			
		||||
      # scons:
 | 
			
		||||
      - build/*/config.log
 | 
			
		||||
      - shader-db
 | 
			
		||||
  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 --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
 | 
			
		||||
 | 
			
		||||
.meson-build:
 | 
			
		||||
  extends: .build
 | 
			
		||||
  script:
 | 
			
		||||
    - .gitlab-ci/meson-build.sh
 | 
			
		||||
 | 
			
		||||
.scons-build:
 | 
			
		||||
  extends: .build
 | 
			
		||||
  variables:
 | 
			
		||||
    SCONSFLAGS: "-j4"
 | 
			
		||||
  script:
 | 
			
		||||
    - if test -n "$LLVM_VERSION"; then
 | 
			
		||||
        export LLVM_CONFIG="llvm-config-${LLVM_VERSION}";
 | 
			
		||||
      fi
 | 
			
		||||
    - scons $SCONS_TARGET
 | 
			
		||||
    - eval $SCONS_CHECK_COMMAND
 | 
			
		||||
 | 
			
		||||
# 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"
 | 
			
		||||
  before_script:
 | 
			
		||||
    - export CCACHE_BASEDIR="$PWD" CCACHE_DIR="$PWD/ccache"
 | 
			
		||||
    - ccache --zero-stats --show-stats || true
 | 
			
		||||
     # clang++ breaks if it picks up the GCC 8 directory without libstdc++.so
 | 
			
		||||
    - apt-get remove -y libgcc-8-dev
 | 
			
		||||
 | 
			
		||||
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-main:
 | 
			
		||||
  extends: .meson-build
 | 
			
		||||
  variables:
 | 
			
		||||
    UNWIND: "true"
 | 
			
		||||
    DRI_LOADERS: >
 | 
			
		||||
      -D glx=dri
 | 
			
		||||
      -D gbm=true
 | 
			
		||||
      -D egl=true
 | 
			
		||||
      -D platforms=x11,wayland,drm,surfaceless
 | 
			
		||||
    DRI_DRIVERS: "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"
 | 
			
		||||
    LLVM_VERSION: "7"
 | 
			
		||||
    EXTRA_OPTION: >
 | 
			
		||||
      -D osmesa=gallium
 | 
			
		||||
      -D tools=all
 | 
			
		||||
    MESON_SHADERDB: "true"
 | 
			
		||||
    BUILDTYPE: "debugoptimized"
 | 
			
		||||
  <<: *ci-deqp-artifacts
 | 
			
		||||
 | 
			
		||||
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=7 .gitlab-ci/meson-build.sh
 | 
			
		||||
    - export GALLIUM_DRIVERS="i915,r600"
 | 
			
		||||
    - 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
 | 
			
		||||
    - LLVM_VERSION=6.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
 | 
			
		||||
    VULKAN_DRIVERS: intel,amd,freedreno
 | 
			
		||||
    LLVM_VERSION: "7"
 | 
			
		||||
    EXTRA_OPTION: >
 | 
			
		||||
      -D vulkan-overlay-layer=true
 | 
			
		||||
 | 
			
		||||
.meson-cross:
 | 
			
		||||
  extends: .meson-build
 | 
			
		||||
  variables:
 | 
			
		||||
    UNWIND: "false"
 | 
			
		||||
    DRI_LOADERS: >
 | 
			
		||||
      -D glx=disabled
 | 
			
		||||
      -D gbm=false
 | 
			
		||||
      -D egl=false
 | 
			
		||||
      -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
 | 
			
		||||
      -D llvm=false
 | 
			
		||||
  <<: *ci-deqp-artifacts
 | 
			
		||||
  script:
 | 
			
		||||
    - .gitlab-ci/meson-build.sh
 | 
			
		||||
 | 
			
		||||
meson-armhf:
 | 
			
		||||
  extends: .meson-cross
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: armhf
 | 
			
		||||
    VULKAN_DRIVERS: freedreno
 | 
			
		||||
    GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,tegra,v3d,vc4"
 | 
			
		||||
    # Disable the tests since we're cross compiling.
 | 
			
		||||
    EXTRA_OPTION: >
 | 
			
		||||
      -D build-tests=false
 | 
			
		||||
      -D I-love-half-baked-turnips=true
 | 
			
		||||
      -D vulkan-overlay-layer=true
 | 
			
		||||
 | 
			
		||||
meson-arm64:
 | 
			
		||||
  extends: .meson-cross
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: arm64
 | 
			
		||||
    VULKAN_DRIVERS: freedreno
 | 
			
		||||
    GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,tegra,v3d,vc4"
 | 
			
		||||
    # Disable the tests since we're cross compiling.
 | 
			
		||||
    EXTRA_OPTION: >
 | 
			
		||||
      -D build-tests=false
 | 
			
		||||
      -D I-love-half-baked-turnips=true
 | 
			
		||||
      -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"
 | 
			
		||||
    # Disable i386 tests, because u_format_tests gets precision
 | 
			
		||||
    # failures in dxtn unpacking
 | 
			
		||||
    EXTRA_OPTION: >
 | 
			
		||||
      -D build-tests=false
 | 
			
		||||
      -D vulkan-overlay-layer=true
 | 
			
		||||
      -D llvm=false
 | 
			
		||||
      -D osmesa=classic
 | 
			
		||||
 | 
			
		||||
scons-nollvm:
 | 
			
		||||
  extends: .scons-build
 | 
			
		||||
  variables:
 | 
			
		||||
    SCONS_TARGET: "llvm=0"
 | 
			
		||||
    SCONS_CHECK_COMMAND: "scons llvm=0 check"
 | 
			
		||||
 | 
			
		||||
scons-llvm:
 | 
			
		||||
  extends: .scons-build
 | 
			
		||||
  variables:
 | 
			
		||||
    SCONS_TARGET: "llvm=1"
 | 
			
		||||
    SCONS_CHECK_COMMAND: "scons llvm=1 check"
 | 
			
		||||
    LLVM_VERSION: "3.4"
 | 
			
		||||
    # LLVM 3.4 packages were built with an old libstdc++ ABI
 | 
			
		||||
    CXX: "g++ -D_GLIBCXX_USE_CXX11_ABI=0"
 | 
			
		||||
 | 
			
		||||
.deqp-test:
 | 
			
		||||
  <<: *ci-run-policy
 | 
			
		||||
  stage: test
 | 
			
		||||
  image: $DEBIAN_IMAGE
 | 
			
		||||
  variables:
 | 
			
		||||
    GIT_STRATEGY: none # testing doesn't build anything from source
 | 
			
		||||
    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/
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
  dependencies:
 | 
			
		||||
    - meson-main
 | 
			
		||||
 | 
			
		||||
test-softpipe-gles2:
 | 
			
		||||
  parallel: 4
 | 
			
		||||
  variables:
 | 
			
		||||
    DEQP_VER: gles2
 | 
			
		||||
    DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
 | 
			
		||||
    LIBGL_ALWAYS_SOFTWARE: "true"
 | 
			
		||||
    DEQP_RENDERER_MATCH: "softpipe"
 | 
			
		||||
    GALLIUM_DRIVER: "softpipe"
 | 
			
		||||
  extends: .deqp-test
 | 
			
		||||
  dependencies:
 | 
			
		||||
    - meson-main
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
  dependencies:
 | 
			
		||||
    - meson-main
 | 
			
		||||
@@ -1,285 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
 | 
			
		||||
CROSS_ARCHITECTURES="armhf arm64 i386"
 | 
			
		||||
for arch in $CROSS_ARCHITECTURES; do
 | 
			
		||||
    dpkg --add-architecture $arch
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
apt-get install -y \
 | 
			
		||||
      apt-transport-https \
 | 
			
		||||
      ca-certificates \
 | 
			
		||||
      curl \
 | 
			
		||||
      wget \
 | 
			
		||||
      unzip \
 | 
			
		||||
      gnupg
 | 
			
		||||
 | 
			
		||||
curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
 | 
			
		||||
echo "deb [trusted=yes] https://apt.llvm.org/stretch/ llvm-toolchain-stretch-7 main" >/etc/apt/sources.list.d/llvm7.list
 | 
			
		||||
echo "deb [trusted=yes] https://apt.llvm.org/stretch/ llvm-toolchain-stretch-8 main" >/etc/apt/sources.list.d/llvm8.list
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
echo 'deb https://deb.debian.org/debian jessie main' >/etc/apt/sources.list.d/jessie.list
 | 
			
		||||
 | 
			
		||||
apt-get update
 | 
			
		||||
apt-get install -y -t stretch-backports \
 | 
			
		||||
      llvm-3.4-dev \
 | 
			
		||||
      llvm-3.9-dev \
 | 
			
		||||
      libclang-3.9-dev \
 | 
			
		||||
      llvm-4.0-dev \
 | 
			
		||||
      libclang-4.0-dev \
 | 
			
		||||
      llvm-5.0-dev \
 | 
			
		||||
      libclang-5.0-dev \
 | 
			
		||||
      llvm-6.0-dev \
 | 
			
		||||
      libclang-6.0-dev \
 | 
			
		||||
      llvm-7-dev \
 | 
			
		||||
      libclang-7-dev \
 | 
			
		||||
      llvm-8-dev \
 | 
			
		||||
      libclang-8-dev \
 | 
			
		||||
      g++ \
 | 
			
		||||
      clang-8
 | 
			
		||||
 | 
			
		||||
# Install remaining packages from Debian buster to get newer versions
 | 
			
		||||
echo "deb https://deb.debian.org/debian/ buster main" >/etc/apt/sources.list.d/buster.list
 | 
			
		||||
echo "deb https://deb.debian.org/debian/ buster-updates main" >/etc/apt/sources.list.d/buster-updates.list
 | 
			
		||||
apt-get update
 | 
			
		||||
apt-get install -y \
 | 
			
		||||
      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 \
 | 
			
		||||
      python-mako \
 | 
			
		||||
      python3-mako \
 | 
			
		||||
      bison \
 | 
			
		||||
      flex \
 | 
			
		||||
      gettext \
 | 
			
		||||
      cmake \
 | 
			
		||||
      meson \
 | 
			
		||||
      scons
 | 
			
		||||
 | 
			
		||||
# Cross-build Mesa deps
 | 
			
		||||
for arch in $CROSS_ARCHITECTURES; do
 | 
			
		||||
    apt-get install -y \
 | 
			
		||||
            libdrm-dev:${arch} \
 | 
			
		||||
            libexpat1-dev:${arch} \
 | 
			
		||||
            libelf-dev:${arch}
 | 
			
		||||
done
 | 
			
		||||
apt-get install -y \
 | 
			
		||||
        dpkg-dev \
 | 
			
		||||
        gcc-aarch64-linux-gnu \
 | 
			
		||||
        g++-aarch64-linux-gnu \
 | 
			
		||||
        gcc-arm-linux-gnueabihf \
 | 
			
		||||
        g++-arm-linux-gnueabihf \
 | 
			
		||||
        gcc-i686-linux-gnu \
 | 
			
		||||
        g++-i686-linux-gnu
 | 
			
		||||
 | 
			
		||||
# for 64bit windows cross-builds
 | 
			
		||||
apt-get install -y mingw-w64
 | 
			
		||||
 | 
			
		||||
# 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.99
 | 
			
		||||
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 ccache
 | 
			
		||||
 | 
			
		||||
# We need xmllint to validate the XML files in Mesa
 | 
			
		||||
apt-get install -y 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"
 | 
			
		||||
  # Work around a bug in debcrossgen that should be fixed in the next release
 | 
			
		||||
  if [ "$arch" = "i386" ]; then
 | 
			
		||||
    sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$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 \
 | 
			
		||||
      git \
 | 
			
		||||
      curl \
 | 
			
		||||
      unzip \
 | 
			
		||||
      gnupg \
 | 
			
		||||
      cmake \
 | 
			
		||||
      git \
 | 
			
		||||
      libgles2-mesa-dev \
 | 
			
		||||
      libgbm-dev
 | 
			
		||||
 | 
			
		||||
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,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,112 +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-watchdog=enable)
 | 
			
		||||
DEQP_OPTIONS+=(--deqp-crashhandler=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 [ $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
 | 
			
		||||
@@ -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,62 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -o xtrace
 | 
			
		||||
 | 
			
		||||
# We need to control the version of llvm-config we're using, so we'll
 | 
			
		||||
# generate a native file to do so. This requires meson >=0.49
 | 
			
		||||
if test -n "$LLVM_VERSION"; then
 | 
			
		||||
    LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
 | 
			
		||||
    echo -e "[binaries]\nllvm-config = '`which $LLVM_CONFIG`'" > native.file
 | 
			
		||||
    $LLVM_CONFIG --version
 | 
			
		||||
else
 | 
			
		||||
    rm -f native.file
 | 
			
		||||
    touch native.file
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
rm -rf _build
 | 
			
		||||
meson _build --native-file=native.file \
 | 
			
		||||
      ${CROSS+--cross /cross_file-$CROSS.txt} \
 | 
			
		||||
      -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-$CROSS.txt`
 | 
			
		||||
    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
 | 
			
		||||
							
								
								
									
										474
									
								
								.mailmap
									
									
									
									
									
								
							
							
						
						
									
										474
									
								
								.mailmap
									
									
									
									
									
								
							@@ -1,474 +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>
 | 
			
		||||
 | 
			
		||||
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>
 | 
			
		||||
 | 
			
		||||
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>
 | 
			
		||||
 | 
			
		||||
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>
 | 
			
		||||
 | 
			
		||||
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 Henigman <fjhenigman@google.com> <fjhenigman@chromium.org>
 | 
			
		||||
 | 
			
		||||
George Sapountzis <gsapountzis@gmail.com> George Sapountzis <gsap7@yahoo.gr>
 | 
			
		||||
 | 
			
		||||
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>
 | 
			
		||||
 | 
			
		||||
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)>
 | 
			
		||||
 | 
			
		||||
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>
 | 
			
		||||
 | 
			
		||||
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>
 | 
			
		||||
							
								
								
									
										62
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										62
									
								
								.travis.yml
									
									
									
									
									
								
							@@ -1,62 +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 python3 ninja;
 | 
			
		||||
    fi
 | 
			
		||||
  - if test "x$BUILD" = xscons; then
 | 
			
		||||
      HOMEBREW_NO_AUTO_UPDATE=1 brew install python2 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;
 | 
			
		||||
      ninja -C _build test;
 | 
			
		||||
    fi
 | 
			
		||||
  - if test "x$BUILD" = xscons; then
 | 
			
		||||
      scons;
 | 
			
		||||
      scons check;
 | 
			
		||||
    fi
 | 
			
		||||
@@ -21,105 +21,42 @@
 | 
			
		||||
# 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)
 | 
			
		||||
MESA_VERSION=$(shell cat $(MESA_TOP)/VERSION)
 | 
			
		||||
# define ANDROID_VERSION (e.g., 4.0.x => 0x0400)
 | 
			
		||||
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://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"
 | 
			
		||||
	-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\" \
 | 
			
		||||
	-DANDROID_VERSION=0x0$(MESA_ANDROID_MAJOR_VERSION)0$(MESA_ANDROID_MINOR_VERSION)
 | 
			
		||||
 | 
			
		||||
# XXX: The following __STDC_*_MACROS defines should not be needed.
 | 
			
		||||
# It's likely due to a bug elsewhere, but let's temporarily add them
 | 
			
		||||
# here to fix the radeonsi build.
 | 
			
		||||
LOCAL_CFLAGS += \
 | 
			
		||||
	-DANDROID_API_LEVEL=$(PLATFORM_SDK_VERSION) \
 | 
			
		||||
	-DENABLE_SHADER_CACHE \
 | 
			
		||||
	-D__STDC_CONSTANT_MACROS \
 | 
			
		||||
	-D__STDC_LIMIT_MACROS \
 | 
			
		||||
	-DHAVE___BUILTIN_EXPECT \
 | 
			
		||||
	-DHAVE___BUILTIN_FFS \
 | 
			
		||||
	-DHAVE___BUILTIN_FFSLL \
 | 
			
		||||
	-DHAVE_DLFCN_H \
 | 
			
		||||
	-DHAVE_FUNC_ATTRIBUTE_FLATTEN \
 | 
			
		||||
	-DHAVE_FUNC_ATTRIBUTE_UNUSED \
 | 
			
		||||
	-DHAVE_FUNC_ATTRIBUTE_FORMAT \
 | 
			
		||||
	-DHAVE_FUNC_ATTRIBUTE_PACKED \
 | 
			
		||||
	-DHAVE_FUNC_ATTRIBUTE_ALIAS \
 | 
			
		||||
	-DHAVE_FUNC_ATTRIBUTE_NORETURN \
 | 
			
		||||
	-DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL \
 | 
			
		||||
	-DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT \
 | 
			
		||||
	-DHAVE___BUILTIN_CTZ \
 | 
			
		||||
	-DHAVE___BUILTIN_POPCOUNT \
 | 
			
		||||
	-DHAVE___BUILTIN_POPCOUNTLL \
 | 
			
		||||
	-DHAVE___BUILTIN_CLZ \
 | 
			
		||||
	-DHAVE___BUILTIN_CLZLL \
 | 
			
		||||
	-DHAVE___BUILTIN_UNREACHABLE \
 | 
			
		||||
	-DHAVE_PTHREAD=1 \
 | 
			
		||||
	-DHAVE_DLADDR \
 | 
			
		||||
	-DHAVE_DL_ITERATE_PHDR \
 | 
			
		||||
	-DHAVE_LINUX_FUTEX_H \
 | 
			
		||||
	-DHAVE_ENDIAN_H \
 | 
			
		||||
	-DHAVE_ZLIB \
 | 
			
		||||
	-DMAJOR_IN_SYSMACROS \
 | 
			
		||||
	-DVK_USE_PLATFORM_ANDROID_KHR \
 | 
			
		||||
	-fvisibility=hidden \
 | 
			
		||||
	-fno-math-errno \
 | 
			
		||||
	-fno-trapping-math \
 | 
			
		||||
	-Wno-sign-compare
 | 
			
		||||
 | 
			
		||||
LOCAL_CPPFLAGS += \
 | 
			
		||||
	-D__STDC_CONSTANT_MACROS \
 | 
			
		||||
	-D__STDC_FORMAT_MACROS \
 | 
			
		||||
	-D__STDC_LIMIT_MACROS \
 | 
			
		||||
	-Wno-error=non-virtual-dtor \
 | 
			
		||||
	-Wno-non-virtual-dtor
 | 
			
		||||
 | 
			
		||||
# mesa requires at least c99 compiler
 | 
			
		||||
LOCAL_CONLYFLAGS += \
 | 
			
		||||
	-std=c99
 | 
			
		||||
 | 
			
		||||
# c11 timespec_get is part of bionic as well
 | 
			
		||||
# https://android-review.googlesource.com/c/718518
 | 
			
		||||
# This means releases from P and earlier won't need this
 | 
			
		||||
ifeq ($(filter 5 6 7 8 9, $(MESA_ANDROID_MAJOR_VERSION)),)
 | 
			
		||||
LOCAL_CFLAGS += -DHAVE_TIMESPEC_GET
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# Android's libc began supporting shm in Oreo
 | 
			
		||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 26 && echo true),true)
 | 
			
		||||
LOCAL_CFLAGS += -DHAVE_SYS_SHM_H
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(strip $(MESA_ENABLE_ASM)),true)
 | 
			
		||||
ifeq ($(TARGET_ARCH),x86)
 | 
			
		||||
LOCAL_CFLAGS += \
 | 
			
		||||
	-DUSE_X86_ASM
 | 
			
		||||
endif
 | 
			
		||||
ifeq ($(ARCH_ARM_HAVE_NEON),true)
 | 
			
		||||
LOCAL_CFLAGS_arm += -DUSE_ARM_ASM
 | 
			
		||||
endif
 | 
			
		||||
LOCAL_CFLAGS_arm64 += -DUSE_AARCH64_ASM
 | 
			
		||||
	-DUSE_X86_ASM \
 | 
			
		||||
	-DHAVE_DLOPEN \
 | 
			
		||||
 | 
			
		||||
ifneq ($(LOCAL_IS_HOST_MODULE),true)
 | 
			
		||||
LOCAL_CFLAGS += -DHAVE_LIBDRM
 | 
			
		||||
LOCAL_SHARED_LIBRARIES += libdrm
 | 
			
		||||
endif
 | 
			
		||||
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
 | 
			
		||||
@@ -127,6 +64,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))
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										130
									
								
								Android.mk
									
									
									
									
									
								
							
							
						
						
									
										130
									
								
								Android.mk
									
									
									
									
									
								
							@@ -24,7 +24,7 @@
 | 
			
		||||
# 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 ilo 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.
 | 
			
		||||
@@ -32,92 +32,68 @@
 | 
			
		||||
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_ANDROID_MINOR_VERSION := $(word 2, $(subst ., , $(PLATFORM_VERSION)))
 | 
			
		||||
MESA_ANDROID_VERSION := $(MESA_ANDROID_MAJOR_VERSION).$(MESA_ANDROID_MINOR_VERSION)
 | 
			
		||||
 | 
			
		||||
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)))
 | 
			
		||||
classic_drivers := i915 i965
 | 
			
		||||
gallium_drivers := swrast i915g ilo nouveau r300g r600g radeonsi vmwgfx
 | 
			
		||||
 | 
			
		||||
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))
 | 
			
		||||
MESA_ENABLE_ASM := true
 | 
			
		||||
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 :=
 | 
			
		||||
MESA_ENABLE_ASM := false
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
$(foreach d, $(MESA_BUILD_CLASSIC) $(MESA_BUILD_GALLIUM), $(eval $(d) := true))
 | 
			
		||||
 | 
			
		||||
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), \
 | 
			
		||||
    $(warning Unsupported LLVM version in Android $(MESA_ANDROID_MAJOR_VERSION)),) \
 | 
			
		||||
  $(if $(filter 6,$(MESA_ANDROID_MAJOR_VERSION)), \
 | 
			
		||||
    $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0307 -DMESA_LLVM_VERSION_STRING=\"3.7\")) \
 | 
			
		||||
  $(if $(filter 7,$(MESA_ANDROID_MAJOR_VERSION)), \
 | 
			
		||||
    $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0308 -DMESA_LLVM_VERSION_STRING=\"3.8\")) \
 | 
			
		||||
  $(if $(filter 8,$(MESA_ANDROID_MAJOR_VERSION)), \
 | 
			
		||||
    $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0309 -DMESA_LLVM_VERSION_STRING=\"3.9\")) \
 | 
			
		||||
  $(if $(filter P,$(MESA_ANDROID_MAJOR_VERSION)), \
 | 
			
		||||
    $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0309 -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)
 | 
			
		||||
							
								
								
									
										106
									
								
								Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
			
		||||
# Copyright © 2012 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 (including the next
 | 
			
		||||
# paragraph) shall be included in all copies or substantial portions of the
 | 
			
		||||
# Software.
 | 
			
		||||
#
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 | 
			
		||||
# IN THE SOFTWARE.
 | 
			
		||||
 | 
			
		||||
SUBDIRS = src
 | 
			
		||||
 | 
			
		||||
ACLOCAL_AMFLAGS = -I m4
 | 
			
		||||
 | 
			
		||||
doxygen:
 | 
			
		||||
	cd doxygen && $(MAKE)
 | 
			
		||||
 | 
			
		||||
.PHONY: doxygen
 | 
			
		||||
 | 
			
		||||
# Rules for making release tarballs
 | 
			
		||||
 | 
			
		||||
PACKAGE_DIR = Mesa-$(PACKAGE_VERSION)
 | 
			
		||||
PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION)
 | 
			
		||||
 | 
			
		||||
EXTRA_FILES = \
 | 
			
		||||
	aclocal.m4					\
 | 
			
		||||
	configure					\
 | 
			
		||||
	VERSION					\
 | 
			
		||||
	bin/ar-lib					\
 | 
			
		||||
	bin/compile					\
 | 
			
		||||
	bin/config.sub					\
 | 
			
		||||
	bin/config.guess				\
 | 
			
		||||
	bin/depcomp					\
 | 
			
		||||
	bin/install-sh					\
 | 
			
		||||
	bin/ltmain.sh					\
 | 
			
		||||
	bin/missing					\
 | 
			
		||||
	bin/ylwrap					\
 | 
			
		||||
	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/program/lex.yy.c			\
 | 
			
		||||
	src/mesa/program/program_parse.tab.c		\
 | 
			
		||||
	src/mesa/program/program_parse.tab.h		\
 | 
			
		||||
	`git ls-files | grep "Makefile.am" | sed -e "s/Makefile.am/Makefile.in/"`
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
IGNORE_FILES = \
 | 
			
		||||
	-x autogen.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
parsers: configure
 | 
			
		||||
	$(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp glcpp/glcpp-lex.c glcpp/glcpp-parse.c glcpp/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
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
.PHONY: tarballs md5
 | 
			
		||||
							
								
								
									
										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.
 | 
			
		||||
							
								
								
									
										137
									
								
								REVIEWERS
									
									
									
									
									
								
							
							
						
						
									
										137
									
								
								REVIEWERS
									
									
									
									
									
								
							@@ -1,137 +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.  Some fields do not
 | 
			
		||||
	apply, for example, in all cases, send patches to:
 | 
			
		||||
 | 
			
		||||
		mesa-dev@lists.freedesktop.org
 | 
			
		||||
 | 
			
		||||
	and in all cases the patchwork instance is:
 | 
			
		||||
 | 
			
		||||
		https://patchwork.freedesktop.org/project/mesa/
 | 
			
		||||
 | 
			
		||||
	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, and to allow the use of
 | 
			
		||||
	scripts/get_reviewer.pl as git --cc-cmd.
 | 
			
		||||
 | 
			
		||||
Usage:
 | 
			
		||||
 | 
			
		||||
	When sending patches:
 | 
			
		||||
 | 
			
		||||
		git send-email --cc-cmd ./scripts/get_reviewer.pl ...
 | 
			
		||||
 | 
			
		||||
	Or to configure as default:
 | 
			
		||||
 | 
			
		||||
		git config sendemail.cccmd ./scripts/get_reviewer.pl
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
	N: Files and directories with regex patterns.
 | 
			
		||||
	   N:	[^a-z]tegra	all files whose path contains the word tegra
 | 
			
		||||
	   One pattern per line.  Multiple N: lines acceptable.
 | 
			
		||||
	   scripts/get_maintainer.pl has different behavior for files that
 | 
			
		||||
	   match F: pattern and matches of N: patterns.  By default,
 | 
			
		||||
	   get_maintainer will not look at git log history when an F: pattern
 | 
			
		||||
	   match occurs.  When an N: match occurs, git log history is used
 | 
			
		||||
	   to also notify the people that have git commit signatures.
 | 
			
		||||
 | 
			
		||||
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/
 | 
			
		||||
							
								
								
									
										48
									
								
								SConstruct
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								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,13 +12,13 @@
 | 
			
		||||
#   build='debug'
 | 
			
		||||
#   llvm=True
 | 
			
		||||
#   machine='x86'
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# Invoke
 | 
			
		||||
#
 | 
			
		||||
#   scons -h
 | 
			
		||||
#
 | 
			
		||||
# to get the full list of options. See scons manpage for more info.
 | 
			
		||||
#
 | 
			
		||||
#  
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
import os.path
 | 
			
		||||
@@ -27,13 +27,6 @@ import SCons.Util
 | 
			
		||||
 | 
			
		||||
import common
 | 
			
		||||
 | 
			
		||||
#######################################################################
 | 
			
		||||
# Minimal scons version
 | 
			
		||||
 | 
			
		||||
EnsureSConsVersion(2, 4)
 | 
			
		||||
EnsurePythonVersion(2, 7)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#######################################################################
 | 
			
		||||
# Configuration options
 | 
			
		||||
 | 
			
		||||
@@ -43,7 +36,7 @@ common.AddOptions(opts)
 | 
			
		||||
env = Environment(
 | 
			
		||||
	options = opts,
 | 
			
		||||
	tools = ['gallium'],
 | 
			
		||||
	toolpath = ['#scons'],
 | 
			
		||||
	toolpath = ['#scons'],	
 | 
			
		||||
	ENV = os.environ,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -57,15 +50,22 @@ 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))
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
@@ -87,18 +87,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.
 | 
			
		||||
#
 | 
			
		||||
@@ -124,6 +122,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')
 | 
			
		||||
@@ -159,7 +160,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:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										92
									
								
								appveyor.yml
									
									
									
									
									
								
							
							
						
						
									
										92
									
								
								appveyor.yml
									
									
									
									
									
								
							@@ -1,92 +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
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
install:
 | 
			
		||||
# Check git config
 | 
			
		||||
- git config core.autocrlf
 | 
			
		||||
# Check pip
 | 
			
		||||
- python --version
 | 
			
		||||
- python -m pip --version
 | 
			
		||||
# Install Mako
 | 
			
		||||
- python -m pip install Mako==1.0.7
 | 
			
		||||
# Install pywin32 extensions, needed by SCons
 | 
			
		||||
- python -m pip install pypiwin32
 | 
			
		||||
# Install python wheels, necessary to install SCons via pip
 | 
			
		||||
- python -m pip install wheel
 | 
			
		||||
# Install SCons
 | 
			
		||||
- python -m pip install scons==3.0.1
 | 
			
		||||
- scons --version
 | 
			
		||||
# 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
 | 
			
		||||
# 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
 | 
			
		||||
- mkdir llvm\bin
 | 
			
		||||
- set LLVM=%CD%\llvm
 | 
			
		||||
 | 
			
		||||
build_script:
 | 
			
		||||
- scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1
 | 
			
		||||
 | 
			
		||||
after_build:
 | 
			
		||||
- scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 check
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# 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.
 | 
			
		||||
							
								
								
									
										14
									
								
								autogen.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								autogen.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
#! /bin/sh
 | 
			
		||||
 | 
			
		||||
srcdir=`dirname "$0"`
 | 
			
		||||
test -z "$srcdir" && srcdir=.
 | 
			
		||||
 | 
			
		||||
ORIGDIR=`pwd`
 | 
			
		||||
cd "$srcdir"
 | 
			
		||||
 | 
			
		||||
autoreconf -v --install || exit 1
 | 
			
		||||
cd $ORIGDIR || exit $?
 | 
			
		||||
 | 
			
		||||
if test -z "$NOCONFIGURE"; then
 | 
			
		||||
    "$srcdir"/configure "$@"
 | 
			
		||||
fi
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
[*.sh]
 | 
			
		||||
indent_style = tab
 | 
			
		||||
							
								
								
									
										9
									
								
								bin/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								bin/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
config.guess
 | 
			
		||||
config.sub
 | 
			
		||||
install-sh
 | 
			
		||||
/depcomp
 | 
			
		||||
/missing
 | 
			
		||||
ylwrap
 | 
			
		||||
compile
 | 
			
		||||
ar-lib
 | 
			
		||||
/test-driver
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# This script is used to generate the list of fixed bugs that
 | 
			
		||||
# appears in the release notes files, with HTML formatting.
 | 
			
		||||
@@ -11,25 +11,42 @@
 | 
			
		||||
# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3
 | 
			
		||||
# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 > bugfixes
 | 
			
		||||
# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 | tee bugfixes
 | 
			
		||||
# $ DRYRUN=yes bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3
 | 
			
		||||
# $ DRYRUN=yes bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 | wc -l
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# regex pattern: trim before bug number
 | 
			
		||||
trim_before='s/.*show_bug.cgi?id=\([0-9]*\).*/\1/'
 | 
			
		||||
# regex pattern: trim before url
 | 
			
		||||
trim_before='s/.*\(http\)/\1/'
 | 
			
		||||
 | 
			
		||||
# regex pattern: reconstruct the url
 | 
			
		||||
use_after='s,^,https://bugs.freedesktop.org/show_bug.cgi?id=,'
 | 
			
		||||
# regex pattern: trim after url
 | 
			
		||||
trim_after='s/\(show_bug.cgi?id=[0-9]*\).*/\1/'
 | 
			
		||||
 | 
			
		||||
echo "<ul>"
 | 
			
		||||
echo ""
 | 
			
		||||
# regex pattern: always use https
 | 
			
		||||
use_https='s/http:/https:/'
 | 
			
		||||
 | 
			
		||||
# extract fdo urls from commit log
 | 
			
		||||
git log --pretty=medium $* | grep 'bugs.freedesktop.org/show_bug' | sed -e $trim_before | sort -n -u | sed -e $use_after |\
 | 
			
		||||
while read url
 | 
			
		||||
do
 | 
			
		||||
	id=$(echo $url | cut -d'=' -f2)
 | 
			
		||||
	summary=$(wget --quiet -O - $url | grep -e '<title>.*</title>' | sed -e 's/ *<title>[0-9]\+ – \(.*\)<\/title>/\1/')
 | 
			
		||||
	echo "<li><a href=\"$url\">Bug $id</a> - $summary</li>"
 | 
			
		||||
	echo ""
 | 
			
		||||
done
 | 
			
		||||
urls=$(git log $* | grep 'bugs.freedesktop.org/show_bug' | sed -e $trim_before -e $trim_after -e $use_https | sort | uniq)
 | 
			
		||||
 | 
			
		||||
echo "</ul>"
 | 
			
		||||
# if DRYRUN is set to "yes", simply print the URLs and don't fetch the
 | 
			
		||||
# details from fdo bugzilla.
 | 
			
		||||
#DRYRUN=yes
 | 
			
		||||
 | 
			
		||||
if [ "x$DRYRUN" = xyes ]; then
 | 
			
		||||
	for i in $urls
 | 
			
		||||
	do
 | 
			
		||||
		echo $i
 | 
			
		||||
	done
 | 
			
		||||
else
 | 
			
		||||
	echo "<ul>"
 | 
			
		||||
	echo ""
 | 
			
		||||
 | 
			
		||||
	for i in $urls
 | 
			
		||||
	do
 | 
			
		||||
		id=$(echo $i | cut -d'=' -f2)
 | 
			
		||||
		summary=$(wget --quiet -O - $i | grep -e '<title>.*</title>' | sed -e 's/ *<title>Bug [0-9]\+ – \(.*\)<\/title>/\1/')
 | 
			
		||||
		echo "<li><a href=\"$i\">Bug $id</a> - $summary</li>"
 | 
			
		||||
		echo ""
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	echo "</ul>"
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -7,107 +7,18 @@
 | 
			
		||||
# $ 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]{8,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 origin/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 for commits with "cherry picked from commit" in the commit message.
 | 
			
		||||
git log --reverse --grep="cherry picked from commit" origin/master..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..origin/master |\
 | 
			
		||||
# Grep for commits that were marked as a candidate for the stable tree.
 | 
			
		||||
git log --reverse --pretty=%H -i --grep='^\([[:space:]]*NOTE: .*[Cc]andidate\|CC:.*mesa-stable\)' HEAD..origin/master |\
 | 
			
		||||
while read sha
 | 
			
		||||
do
 | 
			
		||||
	# Check to see whether the patch is on the ignore list.
 | 
			
		||||
	if test -f bin/.cherry-ignore; then
 | 
			
		||||
	if [ -f bin/.cherry-ignore ] ; then
 | 
			
		||||
		if grep -q ^$sha bin/.cherry-ignore ; then
 | 
			
		||||
			continue
 | 
			
		||||
		fi
 | 
			
		||||
@@ -118,33 +29,7 @@ do
 | 
			
		||||
		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 --oneline $sha
 | 
			
		||||
	git log -n1 --pretty=oneline $sha | cat
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
rm -f already_picked
 | 
			
		||||
rm -f already_landed
 | 
			
		||||
 
 | 
			
		||||
@@ -1,50 +0,0 @@
 | 
			
		||||
"""
 | 
			
		||||
Generate the contents of the git_sha1.h file.
 | 
			
		||||
The output of this script goes to stdout.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
import os
 | 
			
		||||
import os.path
 | 
			
		||||
import subprocess
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_git_sha1():
 | 
			
		||||
    """Try to get the git SHA1 with git rev-parse."""
 | 
			
		||||
    git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git')
 | 
			
		||||
    try:
 | 
			
		||||
        git_sha1 = subprocess.check_output([
 | 
			
		||||
            'git',
 | 
			
		||||
            '--git-dir=' + git_dir,
 | 
			
		||||
            'rev-parse',
 | 
			
		||||
            'HEAD',
 | 
			
		||||
        ], stderr=open(os.devnull, 'w')).decode("ascii")
 | 
			
		||||
    except:
 | 
			
		||||
        # don't print anything if it fails
 | 
			
		||||
        git_sha1 = ''
 | 
			
		||||
    return git_sha1
 | 
			
		||||
 | 
			
		||||
def write_if_different(contents):
 | 
			
		||||
    """
 | 
			
		||||
    Avoid touching the output file if it doesn't need modifications
 | 
			
		||||
    Useful to avoid triggering rebuilds when nothing has changed.
 | 
			
		||||
    """
 | 
			
		||||
    if os.path.isfile(args.output):
 | 
			
		||||
        with open(args.output, 'r') as file:
 | 
			
		||||
            if file.read() == contents:
 | 
			
		||||
                return
 | 
			
		||||
    with open(args.output, 'w') as file:
 | 
			
		||||
        file.write(contents)
 | 
			
		||||
 | 
			
		||||
parser = argparse.ArgumentParser()
 | 
			
		||||
parser.add_argument('--output', help='File to write the #define in',
 | 
			
		||||
                    required=True)
 | 
			
		||||
args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
git_sha1 = os.environ.get('MESA_GIT_SHA1_OVERRIDE', get_git_sha1())[:10]
 | 
			
		||||
if git_sha1:
 | 
			
		||||
    write_if_different('#define MESA_GIT_SHA1 " (git-' + git_sha1 + ')"')
 | 
			
		||||
else:
 | 
			
		||||
    write_if_different('#define MESA_GIT_SHA1 ""')
 | 
			
		||||
@@ -1,83 +0,0 @@
 | 
			
		||||
# encoding=utf-8
 | 
			
		||||
# Copyright © 2017-2018 Intel Corporation
 | 
			
		||||
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
# of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
# in the Software without restriction, including without limitation the rights
 | 
			
		||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
# copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
# furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
# The above copyright notice and this permission notice shall be included in
 | 
			
		||||
# all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
# SOFTWARE.
 | 
			
		||||
 | 
			
		||||
"""Script to install megadriver symlinks for meson."""
 | 
			
		||||
 | 
			
		||||
from __future__ import print_function
 | 
			
		||||
import argparse
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    parser = argparse.ArgumentParser()
 | 
			
		||||
    parser.add_argument('megadriver')
 | 
			
		||||
    parser.add_argument('libdir')
 | 
			
		||||
    parser.add_argument('drivers', nargs='+')
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    if os.path.isabs(args.libdir):
 | 
			
		||||
        destdir = os.environ.get('DESTDIR')
 | 
			
		||||
        if destdir:
 | 
			
		||||
            to = os.path.join(destdir, args.libdir[1:])
 | 
			
		||||
        else:
 | 
			
		||||
            to = args.libdir
 | 
			
		||||
    else:
 | 
			
		||||
        to = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], args.libdir)
 | 
			
		||||
 | 
			
		||||
    master = os.path.join(to, os.path.basename(args.megadriver))
 | 
			
		||||
 | 
			
		||||
    if not os.path.exists(to):
 | 
			
		||||
        if os.path.lexists(to):
 | 
			
		||||
            os.unlink(to)
 | 
			
		||||
        os.makedirs(to)
 | 
			
		||||
 | 
			
		||||
    for driver in args.drivers:
 | 
			
		||||
        abs_driver = os.path.join(to, driver)
 | 
			
		||||
 | 
			
		||||
        if os.path.lexists(abs_driver):
 | 
			
		||||
            os.unlink(abs_driver)
 | 
			
		||||
        print('installing {} to {}'.format(args.megadriver, abs_driver))
 | 
			
		||||
        os.link(master, abs_driver)
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
            ret = os.getcwd()
 | 
			
		||||
            os.chdir(to)
 | 
			
		||||
 | 
			
		||||
            name, ext = os.path.splitext(driver)
 | 
			
		||||
            while ext != '.so':
 | 
			
		||||
                if os.path.lexists(name):
 | 
			
		||||
                    os.unlink(name)
 | 
			
		||||
                os.symlink(driver, name)
 | 
			
		||||
                name, ext = os.path.splitext(name)
 | 
			
		||||
        finally:
 | 
			
		||||
            os.chdir(ret)
 | 
			
		||||
 | 
			
		||||
    # Remove meson-created master .so and symlinks
 | 
			
		||||
    os.unlink(master)
 | 
			
		||||
    name, ext = os.path.splitext(master)
 | 
			
		||||
    while ext != '.so':
 | 
			
		||||
        if os.path.lexists(name):
 | 
			
		||||
            os.unlink(name)
 | 
			
		||||
        name, ext = os.path.splitext(name)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
@@ -1,88 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
# Copyright © 2019 Intel Corporation
 | 
			
		||||
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
# of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
# in the Software without restriction, including without limitation the rights
 | 
			
		||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
# copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
# furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
# The above copyright notice and this permission notice shall be included in
 | 
			
		||||
# all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
# SOFTWARE.
 | 
			
		||||
 | 
			
		||||
"""This script reads a meson build directory and gives back the command line it
 | 
			
		||||
was configured with.
 | 
			
		||||
 | 
			
		||||
This only works for meson 0.49.0 and newer.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
import ast
 | 
			
		||||
import configparser
 | 
			
		||||
import pathlib
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def parse_args() -> argparse.Namespace:
 | 
			
		||||
    """Parse arguments."""
 | 
			
		||||
    parser = argparse.ArgumentParser()
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        'build_dir',
 | 
			
		||||
        help='Path the meson build directory')
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
    return args
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def load_config(path: pathlib.Path) -> configparser.ConfigParser:
 | 
			
		||||
    """Load config file."""
 | 
			
		||||
    conf = configparser.ConfigParser()
 | 
			
		||||
    with path.open() as f:
 | 
			
		||||
        conf.read_file(f)
 | 
			
		||||
    return conf
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def build_cmd(conf: configparser.ConfigParser) -> str:
 | 
			
		||||
    """Rebuild the command line."""
 | 
			
		||||
    args = []
 | 
			
		||||
    for k, v in conf['options'].items():
 | 
			
		||||
        if ' ' in v:
 | 
			
		||||
            args.append(f'-D{k}="{v}"')
 | 
			
		||||
        else:
 | 
			
		||||
            args.append(f'-D{k}={v}')
 | 
			
		||||
 | 
			
		||||
    cf = conf['properties'].get('cross_file')
 | 
			
		||||
    if cf:
 | 
			
		||||
        args.append('--cross-file={}'.format(cf))
 | 
			
		||||
    nf = conf['properties'].get('native_file')
 | 
			
		||||
    if nf:
 | 
			
		||||
        # this will be in the form "['str', 'str']", so use ast.literal_eval to
 | 
			
		||||
        # convert it to a list of strings.
 | 
			
		||||
        nf = ast.literal_eval(nf)
 | 
			
		||||
        args.extend(['--native-file={}'.format(f) for f in nf])
 | 
			
		||||
    return ' '.join(args)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    args = parse_args()
 | 
			
		||||
    path = pathlib.Path(args.build_dir, 'meson-private', 'cmd_line.txt')
 | 
			
		||||
    if not path.exists():
 | 
			
		||||
        print('Cannot find the necessary file to rebuild command line. '
 | 
			
		||||
              'Is your meson version >= 0.49.0?', file=sys.stderr)
 | 
			
		||||
        sys.exit(1)
 | 
			
		||||
 | 
			
		||||
    conf = load_config(path)
 | 
			
		||||
    cmd = build_cmd(conf)
 | 
			
		||||
    print(cmd)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
@@ -1,63 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
 | 
			
		||||
from os import get_terminal_size
 | 
			
		||||
from textwrap import wrap
 | 
			
		||||
from mesonbuild import coredata
 | 
			
		||||
from mesonbuild import optinterpreter
 | 
			
		||||
 | 
			
		||||
(COLUMNS, _) = get_terminal_size()
 | 
			
		||||
 | 
			
		||||
def describe_option(option_name: str, option_default_value: str,
 | 
			
		||||
                    option_type: str, option_message: str) -> None:
 | 
			
		||||
    print('name:    ' + option_name)
 | 
			
		||||
    print('default: ' + option_default_value)
 | 
			
		||||
    print('type:    ' + option_type)
 | 
			
		||||
    for line in wrap(option_message, width=COLUMNS - 9):
 | 
			
		||||
        print('         ' + line)
 | 
			
		||||
    print('---')
 | 
			
		||||
 | 
			
		||||
oi = optinterpreter.OptionInterpreter('')
 | 
			
		||||
oi.process('meson_options.txt')
 | 
			
		||||
 | 
			
		||||
for (name, value) in oi.options.items():
 | 
			
		||||
    if isinstance(value, coredata.UserStringOption):
 | 
			
		||||
        describe_option(name,
 | 
			
		||||
                        value.value,
 | 
			
		||||
                        'string',
 | 
			
		||||
                        "You can type what you want, but make sure it makes sense")
 | 
			
		||||
    elif isinstance(value, coredata.UserBooleanOption):
 | 
			
		||||
        describe_option(name,
 | 
			
		||||
                        'true' if value.value else 'false',
 | 
			
		||||
                        'boolean',
 | 
			
		||||
                        "You can set it to 'true' or 'false'")
 | 
			
		||||
    elif isinstance(value, coredata.UserIntegerOption):
 | 
			
		||||
        describe_option(name,
 | 
			
		||||
                        str(value.value),
 | 
			
		||||
                        'integer',
 | 
			
		||||
                        "You can set it to any integer value between '{}' and '{}'".format(value.min_value, value.max_value))
 | 
			
		||||
    elif isinstance(value, coredata.UserUmaskOption):
 | 
			
		||||
        describe_option(name,
 | 
			
		||||
                        str(value.value),
 | 
			
		||||
                        'umask',
 | 
			
		||||
                        "You can set it to 'preserve' or a value between '0000' and '0777'")
 | 
			
		||||
    elif isinstance(value, coredata.UserComboOption):
 | 
			
		||||
        choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']'
 | 
			
		||||
        describe_option(name,
 | 
			
		||||
                        value.value,
 | 
			
		||||
                        'combo',
 | 
			
		||||
                        "You can set it to any one of those values: " + choices)
 | 
			
		||||
    elif isinstance(value, coredata.UserArrayOption):
 | 
			
		||||
        choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']'
 | 
			
		||||
        value = '[' + ', '.join(["'" + v + "'" for v in value.value]) + ']'
 | 
			
		||||
        describe_option(name,
 | 
			
		||||
                        value,
 | 
			
		||||
                        'array',
 | 
			
		||||
                        "You can set it to one or more of those values: " + choices)
 | 
			
		||||
    elif isinstance(value, coredata.UserFeatureOption):
 | 
			
		||||
        describe_option(name,
 | 
			
		||||
                        value.value,
 | 
			
		||||
                        'feature',
 | 
			
		||||
                        "You can set it to 'auto', 'enabled', or 'disabled'")
 | 
			
		||||
    else:
 | 
			
		||||
        print(name + ' is an option of a type unknown to this script')
 | 
			
		||||
        print('---')
 | 
			
		||||
@@ -1,22 +0,0 @@
 | 
			
		||||
# Copyright © 2017 Eric Engestrom
 | 
			
		||||
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
# of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
# in the Software without restriction, including without limitation the rights
 | 
			
		||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
# copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
# furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
# The above copyright notice and this permission notice shall be included in
 | 
			
		||||
# all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
# SOFTWARE.
 | 
			
		||||
 | 
			
		||||
git_sha1_gen_py = files('git_sha1_gen.py')
 | 
			
		||||
symbols_check = find_program('symbols-check.py')
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
# encoding=utf-8
 | 
			
		||||
# Copyright © 2017 Intel Corporation
 | 
			
		||||
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
# of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
# in the Software without restriction, including without limitation the rights
 | 
			
		||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
# copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
# furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
# The above copyright notice and this permission notice shall be included in
 | 
			
		||||
# all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
# SOFTWARE.
 | 
			
		||||
 | 
			
		||||
from __future__ import print_function
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    filename = os.path.join(os.environ['MESON_SOURCE_ROOT'], 'VERSION')
 | 
			
		||||
    with open(filename) as f:
 | 
			
		||||
        version = f.read().strip()
 | 
			
		||||
    print(version, end='')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
							
								
								
									
										251
									
								
								bin/perf-annotate-jit
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										251
									
								
								bin/perf-annotate-jit
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,251 @@
 | 
			
		||||
#!/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,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,4 +1,4 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# This script is used to generate the list of changes that
 | 
			
		||||
# appears in the release notes files, with HTML formatting.
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
# $ bin/shortlog_mesa.sh mesa-9.0.2..mesa-9.0.3 | tee changes
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
in_log=0
 | 
			
		||||
typeset -i in_log=0
 | 
			
		||||
 | 
			
		||||
git shortlog $* | while read l
 | 
			
		||||
do
 | 
			
		||||
 
 | 
			
		||||
@@ -1,130 +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
 | 
			
		||||
        unknown_symbols.append(symbol)
 | 
			
		||||
 | 
			
		||||
    missing_symbols = [
 | 
			
		||||
        sym for sym in mandatory_symbols if sym not in lib_symbols
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    for symbol in unknown_symbols:
 | 
			
		||||
        print(args.lib + ': unknown symbol exported: ' + symbol)
 | 
			
		||||
 | 
			
		||||
    for symbol in missing_symbols:
 | 
			
		||||
        print(args.lib + ': missing symbol: ' + symbol)
 | 
			
		||||
 | 
			
		||||
    if unknown_symbols or missing_symbols:
 | 
			
		||||
        exit(1)
 | 
			
		||||
    exit(0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
	radeon_drm_winsys_create;
 | 
			
		||||
};
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
VERSION_1 {
 | 
			
		||||
    global:
 | 
			
		||||
        main;
 | 
			
		||||
    local:
 | 
			
		||||
        *;
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										96
									
								
								common.py
									
									
									
									
									
								
							
							
						
						
									
										96
									
								
								common.py
									
									
									
									
									
								
							@@ -26,28 +26,28 @@ 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')
 | 
			
		||||
 | 
			
		||||
default_machine = host_machine
 | 
			
		||||
@@ -59,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
 | 
			
		||||
@@ -76,36 +75,29 @@ 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('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=('cygwin', 'darwin', 'freebsd', 'haiku', 'linux', 'sunos', 'windows')))
 | 
			
		||||
	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'))
 | 
			
		||||
	opts.Add(BoolOption('texture_float', 'enable floating-point textures and renderbuffers', 'no'))
 | 
			
		||||
	if host_platform == 'windows':
 | 
			
		||||
		opts.Add(EnumOption('MSVC_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0', '10.0', '11.0')))
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2196
									
								
								configure.ac
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2196
									
								
								configure.ac
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										490
									
								
								docs/COPYING
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										490
									
								
								docs/COPYING
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,490 @@
 | 
			
		||||
 | 
			
		||||
Some parts of Mesa are copyrighted under the GNU LGPL.  See the
 | 
			
		||||
Mesa/docs/COPYRIGHT file for details.
 | 
			
		||||
 | 
			
		||||
The following is the standard GNU copyright file.
 | 
			
		||||
----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		  GNU LIBRARY GENERAL PUBLIC LICENSE
 | 
			
		||||
		       Version 2, June 1991
 | 
			
		||||
 | 
			
		||||
 Copyright (C) 1991 Free Software Foundation, Inc.
 | 
			
		||||
                    675 Mass Ave, Cambridge, MA 02139, USA
 | 
			
		||||
 Everyone is permitted to copy and distribute verbatim copies
 | 
			
		||||
 of this license document, but changing it is not allowed.
 | 
			
		||||
 | 
			
		||||
[This is the first released version of the library GPL.  It is
 | 
			
		||||
 numbered 2 because it goes with version 2 of the ordinary GPL.]
 | 
			
		||||
 | 
			
		||||
			    Preamble
 | 
			
		||||
 | 
			
		||||
  The licenses for most software are designed to take away your
 | 
			
		||||
freedom to share and change it.  By contrast, the GNU General Public
 | 
			
		||||
Licenses are intended to guarantee your freedom to share and change
 | 
			
		||||
free software--to make sure the software is free for all its users.
 | 
			
		||||
 | 
			
		||||
  This license, the Library General Public License, applies to some
 | 
			
		||||
specially designated Free Software Foundation software, and to any
 | 
			
		||||
other libraries whose authors decide to use it.  You can use it for
 | 
			
		||||
your libraries, too.
 | 
			
		||||
 | 
			
		||||
  When we speak of free software, we are referring to freedom, not
 | 
			
		||||
price.  Our General Public Licenses are designed to make sure that you
 | 
			
		||||
have the freedom to distribute copies of free software (and charge for
 | 
			
		||||
this service if you wish), that you receive source code or can get it
 | 
			
		||||
if you want it, that you can change the software or use pieces of it
 | 
			
		||||
in new free programs; and that you know you can do these things.
 | 
			
		||||
 | 
			
		||||
  To protect your rights, we need to make restrictions that forbid
 | 
			
		||||
anyone to deny you these rights or to ask you to surrender the rights.
 | 
			
		||||
These restrictions translate to certain responsibilities for you if
 | 
			
		||||
you distribute copies of the library, or if you modify it.
 | 
			
		||||
 | 
			
		||||
  For example, if you distribute copies of the library, whether gratis
 | 
			
		||||
or for a fee, you must give the recipients all the rights that we gave
 | 
			
		||||
you.  You must make sure that they, too, receive or can get the source
 | 
			
		||||
code.  If you link a program with the library, you must provide
 | 
			
		||||
complete object files to the recipients so that they can relink them
 | 
			
		||||
with the library, after making changes to the library and recompiling
 | 
			
		||||
it.  And you must show them these terms so they know their rights.
 | 
			
		||||
 | 
			
		||||
  Our method of protecting your rights has two steps: (1) copyright
 | 
			
		||||
the library, and (2) offer you this license which gives you legal
 | 
			
		||||
permission to copy, distribute and/or modify the library.
 | 
			
		||||
 | 
			
		||||
  Also, for each distributor's protection, we want to make certain
 | 
			
		||||
that everyone understands that there is no warranty for this free
 | 
			
		||||
library.  If the library is modified by someone else and passed on, we
 | 
			
		||||
want its recipients to know that what they have is not the original
 | 
			
		||||
version, so that any problems introduced by others will not reflect on
 | 
			
		||||
the original authors' reputations.
 | 
			
		||||
 | 
			
		||||
  Finally, any free program is threatened constantly by software
 | 
			
		||||
patents.  We wish to avoid the danger that companies distributing free
 | 
			
		||||
software will individually obtain patent licenses, thus in effect
 | 
			
		||||
transforming the program into proprietary software.  To prevent this,
 | 
			
		||||
we have made it clear that any patent must be licensed for everyone's
 | 
			
		||||
free use or not licensed at all.
 | 
			
		||||
 | 
			
		||||
  Most GNU software, including some libraries, is covered by the ordinary
 | 
			
		||||
GNU General Public License, which was designed for utility programs.  This
 | 
			
		||||
license, the GNU Library General Public License, applies to certain
 | 
			
		||||
designated libraries.  This license is quite different from the ordinary
 | 
			
		||||
one; be sure to read it in full, and don't assume that anything in it is
 | 
			
		||||
the same as in the ordinary license.
 | 
			
		||||
 | 
			
		||||
  The reason we have a separate public license for some libraries is that
 | 
			
		||||
they blur the distinction we usually make between modifying or adding to a
 | 
			
		||||
program and simply using it.  Linking a program with a library, without
 | 
			
		||||
changing the library, is in some sense simply using the library, and is
 | 
			
		||||
analogous to running a utility program or application program.  However, in
 | 
			
		||||
a textual and legal sense, the linked executable is a combined work, a
 | 
			
		||||
derivative of the original library, and the ordinary General Public License
 | 
			
		||||
treats it as such.
 | 
			
		||||
 | 
			
		||||
  Because of this blurred distinction, using the ordinary General
 | 
			
		||||
Public License for libraries did not effectively promote software
 | 
			
		||||
sharing, because most developers did not use the libraries.  We
 | 
			
		||||
concluded that weaker conditions might promote sharing better.
 | 
			
		||||
 | 
			
		||||
  However, unrestricted linking of non-free programs would deprive the
 | 
			
		||||
users of those programs of all benefit from the free status of the
 | 
			
		||||
libraries themselves.  This Library General Public License is intended to
 | 
			
		||||
permit developers of non-free programs to use free libraries, while
 | 
			
		||||
preserving your freedom as a user of such programs to change the free
 | 
			
		||||
libraries that are incorporated in them.  (We have not seen how to achieve
 | 
			
		||||
this as regards changes in header files, but we have achieved it as regards
 | 
			
		||||
changes in the actual functions of the Library.)  The hope is that this
 | 
			
		||||
will lead to faster development of free libraries.
 | 
			
		||||
 | 
			
		||||
  The precise terms and conditions for copying, distribution and
 | 
			
		||||
modification follow.  Pay close attention to the difference between a
 | 
			
		||||
"work based on the library" and a "work that uses the library".  The
 | 
			
		||||
former contains code derived from the library, while the latter only
 | 
			
		||||
works together with the library.
 | 
			
		||||
 | 
			
		||||
  Note that it is possible for a library to be covered by the ordinary
 | 
			
		||||
General Public License rather than by this special one.
 | 
			
		||||
 | 
			
		||||
		  GNU LIBRARY GENERAL PUBLIC LICENSE
 | 
			
		||||
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 | 
			
		||||
 | 
			
		||||
  0. This License Agreement applies to any software library which
 | 
			
		||||
contains a notice placed by the copyright holder or other authorized
 | 
			
		||||
party saying it may be distributed under the terms of this Library
 | 
			
		||||
General Public License (also called "this License").  Each licensee is
 | 
			
		||||
addressed as "you".
 | 
			
		||||
 | 
			
		||||
  A "library" means a collection of software functions and/or data
 | 
			
		||||
prepared so as to be conveniently linked with application programs
 | 
			
		||||
(which use some of those functions and data) to form executables.
 | 
			
		||||
 | 
			
		||||
  The "Library", below, refers to any such software library or work
 | 
			
		||||
which has been distributed under these terms.  A "work based on the
 | 
			
		||||
Library" means either the Library or any derivative work under
 | 
			
		||||
copyright law: that is to say, a work containing the Library or a
 | 
			
		||||
portion of it, either verbatim or with modifications and/or translated
 | 
			
		||||
straightforwardly into another language.  (Hereinafter, translation is
 | 
			
		||||
included without limitation in the term "modification".)
 | 
			
		||||
 | 
			
		||||
  "Source code" for a work means the preferred form of the work for
 | 
			
		||||
making modifications to it.  For a library, complete source code means
 | 
			
		||||
all the source code for all modules it contains, plus any associated
 | 
			
		||||
interface definition files, plus the scripts used to control compilation
 | 
			
		||||
and installation of the library.
 | 
			
		||||
 | 
			
		||||
  Activities other than copying, distribution and modification are not
 | 
			
		||||
covered by this License; they are outside its scope.  The act of
 | 
			
		||||
running a program using the Library is not restricted, and output from
 | 
			
		||||
such a program is covered only if its contents constitute a work based
 | 
			
		||||
on the Library (independent of the use of the Library in a tool for
 | 
			
		||||
writing it).  Whether that is true depends on what the Library does
 | 
			
		||||
and what the program that uses the Library does.
 | 
			
		||||
  
 | 
			
		||||
  1. You may copy and distribute verbatim copies of the Library's
 | 
			
		||||
complete source code as you receive it, in any medium, provided that
 | 
			
		||||
you conspicuously and appropriately publish on each copy an
 | 
			
		||||
appropriate copyright notice and disclaimer of warranty; keep intact
 | 
			
		||||
all the notices that refer to this License and to the absence of any
 | 
			
		||||
warranty; and distribute a copy of this License along with the
 | 
			
		||||
Library.
 | 
			
		||||
 | 
			
		||||
  You may charge a fee for the physical act of transferring a copy,
 | 
			
		||||
and you may at your option offer warranty protection in exchange for a
 | 
			
		||||
fee.
 | 
			
		||||
 | 
			
		||||
  2. You may modify your copy or copies of the Library or any portion
 | 
			
		||||
of it, thus forming a work based on the Library, and copy and
 | 
			
		||||
distribute such modifications or work under the terms of Section 1
 | 
			
		||||
above, provided that you also meet all of these conditions:
 | 
			
		||||
 | 
			
		||||
    a) The modified work must itself be a software library.
 | 
			
		||||
 | 
			
		||||
    b) You must cause the files modified to carry prominent notices
 | 
			
		||||
    stating that you changed the files and the date of any change.
 | 
			
		||||
 | 
			
		||||
    c) You must cause the whole of the work to be licensed at no
 | 
			
		||||
    charge to all third parties under the terms of this License.
 | 
			
		||||
 | 
			
		||||
    d) If a facility in the modified Library refers to a function or a
 | 
			
		||||
    table of data to be supplied by an application program that uses
 | 
			
		||||
    the facility, other than as an argument passed when the facility
 | 
			
		||||
    is invoked, then you must make a good faith effort to ensure that,
 | 
			
		||||
    in the event an application does not supply such function or
 | 
			
		||||
    table, the facility still operates, and performs whatever part of
 | 
			
		||||
    its purpose remains meaningful.
 | 
			
		||||
 | 
			
		||||
    (For example, a function in a library to compute square roots has
 | 
			
		||||
    a purpose that is entirely well-defined independent of the
 | 
			
		||||
    application.  Therefore, Subsection 2d requires that any
 | 
			
		||||
    application-supplied function or table used by this function must
 | 
			
		||||
    be optional: if the application does not supply it, the square
 | 
			
		||||
    root function must still compute square roots.)
 | 
			
		||||
 | 
			
		||||
These requirements apply to the modified work as a whole.  If
 | 
			
		||||
identifiable sections of that work are not derived from the Library,
 | 
			
		||||
and can be reasonably considered independent and separate works in
 | 
			
		||||
themselves, then this License, and its terms, do not apply to those
 | 
			
		||||
sections when you distribute them as separate works.  But when you
 | 
			
		||||
distribute the same sections as part of a whole which is a work based
 | 
			
		||||
on the Library, the distribution of the whole must be on the terms of
 | 
			
		||||
this License, whose permissions for other licensees extend to the
 | 
			
		||||
entire whole, and thus to each and every part regardless of who wrote
 | 
			
		||||
it.
 | 
			
		||||
 | 
			
		||||
Thus, it is not the intent of this section to claim rights or contest
 | 
			
		||||
your rights to work written entirely by you; rather, the intent is to
 | 
			
		||||
exercise the right to control the distribution of derivative or
 | 
			
		||||
collective works based on the Library.
 | 
			
		||||
 | 
			
		||||
In addition, mere aggregation of another work not based on the Library
 | 
			
		||||
with the Library (or with a work based on the Library) on a volume of
 | 
			
		||||
a storage or distribution medium does not bring the other work under
 | 
			
		||||
the scope of this License.
 | 
			
		||||
 | 
			
		||||
  3. You may opt to apply the terms of the ordinary GNU General Public
 | 
			
		||||
License instead of this License to a given copy of the Library.  To do
 | 
			
		||||
this, you must alter all the notices that refer to this License, so
 | 
			
		||||
that they refer to the ordinary GNU General Public License, version 2,
 | 
			
		||||
instead of to this License.  (If a newer version than version 2 of the
 | 
			
		||||
ordinary GNU General Public License has appeared, then you can specify
 | 
			
		||||
that version instead if you wish.)  Do not make any other change in
 | 
			
		||||
these notices.
 | 
			
		||||
 | 
			
		||||
  Once this change is made in a given copy, it is irreversible for
 | 
			
		||||
that copy, so the ordinary GNU General Public License applies to all
 | 
			
		||||
subsequent copies and derivative works made from that copy.
 | 
			
		||||
 | 
			
		||||
  This option is useful when you wish to copy part of the code of
 | 
			
		||||
the Library into a program that is not a library.
 | 
			
		||||
 | 
			
		||||
  4. You may copy and distribute the Library (or a portion or
 | 
			
		||||
derivative of it, under Section 2) in object code or executable form
 | 
			
		||||
under the terms of Sections 1 and 2 above provided that you accompany
 | 
			
		||||
it with the complete corresponding machine-readable source code, which
 | 
			
		||||
must be distributed under the terms of Sections 1 and 2 above on a
 | 
			
		||||
medium customarily used for software interchange.
 | 
			
		||||
 | 
			
		||||
  If distribution of object code is made by offering access to copy
 | 
			
		||||
from a designated place, then offering equivalent access to copy the
 | 
			
		||||
source code from the same place satisfies the requirement to
 | 
			
		||||
distribute the source code, even though third parties are not
 | 
			
		||||
compelled to copy the source along with the object code.
 | 
			
		||||
 | 
			
		||||
  5. A program that contains no derivative of any portion of the
 | 
			
		||||
Library, but is designed to work with the Library by being compiled or
 | 
			
		||||
linked with it, is called a "work that uses the Library".  Such a
 | 
			
		||||
work, in isolation, is not a derivative work of the Library, and
 | 
			
		||||
therefore falls outside the scope of this License.
 | 
			
		||||
 | 
			
		||||
  However, linking a "work that uses the Library" with the Library
 | 
			
		||||
creates an executable that is a derivative of the Library (because it
 | 
			
		||||
contains portions of the Library), rather than a "work that uses the
 | 
			
		||||
library".  The executable is therefore covered by this License.
 | 
			
		||||
Section 6 states terms for distribution of such executables.
 | 
			
		||||
 | 
			
		||||
  When a "work that uses the Library" uses material from a header file
 | 
			
		||||
that is part of the Library, the object code for the work may be a
 | 
			
		||||
derivative work of the Library even though the source code is not.
 | 
			
		||||
Whether this is true is especially significant if the work can be
 | 
			
		||||
linked without the Library, or if the work is itself a library.  The
 | 
			
		||||
threshold for this to be true is not precisely defined by law.
 | 
			
		||||
 | 
			
		||||
  If such an object file uses only numerical parameters, data
 | 
			
		||||
structure layouts and accessors, and small macros and small inline
 | 
			
		||||
functions (ten lines or less in length), then the use of the object
 | 
			
		||||
file is unrestricted, regardless of whether it is legally a derivative
 | 
			
		||||
work.  (Executables containing this object code plus portions of the
 | 
			
		||||
Library will still fall under Section 6.)
 | 
			
		||||
 | 
			
		||||
  Otherwise, if the work is a derivative of the Library, you may
 | 
			
		||||
distribute the object code for the work under the terms of Section 6.
 | 
			
		||||
Any executables containing that work also fall under Section 6,
 | 
			
		||||
whether or not they are linked directly with the Library itself.
 | 
			
		||||
 | 
			
		||||
  6. As an exception to the Sections above, you may also compile or
 | 
			
		||||
link a "work that uses the Library" with the Library to produce a
 | 
			
		||||
work containing portions of the Library, and distribute that work
 | 
			
		||||
under terms of your choice, provided that the terms permit
 | 
			
		||||
modification of the work for the customer's own use and reverse
 | 
			
		||||
engineering for debugging such modifications.
 | 
			
		||||
 | 
			
		||||
  You must give prominent notice with each copy of the work that the
 | 
			
		||||
Library is used in it and that the Library and its use are covered by
 | 
			
		||||
this License.  You must supply a copy of this License.  If the work
 | 
			
		||||
during execution displays copyright notices, you must include the
 | 
			
		||||
copyright notice for the Library among them, as well as a reference
 | 
			
		||||
directing the user to the copy of this License.  Also, you must do one
 | 
			
		||||
of these things:
 | 
			
		||||
 | 
			
		||||
    a) Accompany the work with the complete corresponding
 | 
			
		||||
    machine-readable source code for the Library including whatever
 | 
			
		||||
    changes were used in the work (which must be distributed under
 | 
			
		||||
    Sections 1 and 2 above); and, if the work is an executable linked
 | 
			
		||||
    with the Library, with the complete machine-readable "work that
 | 
			
		||||
    uses the Library", as object code and/or source code, so that the
 | 
			
		||||
    user can modify the Library and then relink to produce a modified
 | 
			
		||||
    executable containing the modified Library.  (It is understood
 | 
			
		||||
    that the user who changes the contents of definitions files in the
 | 
			
		||||
    Library will not necessarily be able to recompile the application
 | 
			
		||||
    to use the modified definitions.)
 | 
			
		||||
 | 
			
		||||
    b) Accompany the work with a written offer, valid for at
 | 
			
		||||
    least three years, to give the same user the materials
 | 
			
		||||
    specified in Subsection 6a, above, for a charge no more
 | 
			
		||||
    than the cost of performing this distribution.
 | 
			
		||||
 | 
			
		||||
    c) If distribution of the work is made by offering access to copy
 | 
			
		||||
    from a designated place, offer equivalent access to copy the above
 | 
			
		||||
    specified materials from the same place.
 | 
			
		||||
 | 
			
		||||
    d) Verify that the user has already received a copy of these
 | 
			
		||||
    materials or that you have already sent this user a copy.
 | 
			
		||||
 | 
			
		||||
  For an executable, the required form of the "work that uses the
 | 
			
		||||
Library" must include any data and utility programs needed for
 | 
			
		||||
reproducing the executable from it.  However, as a special exception,
 | 
			
		||||
the source code distributed need not include anything that is normally
 | 
			
		||||
distributed (in either source or binary form) with the major
 | 
			
		||||
components (compiler, kernel, and so on) of the operating system on
 | 
			
		||||
which the executable runs, unless that component itself accompanies
 | 
			
		||||
the executable.
 | 
			
		||||
 | 
			
		||||
  It may happen that this requirement contradicts the license
 | 
			
		||||
restrictions of other proprietary libraries that do not normally
 | 
			
		||||
accompany the operating system.  Such a contradiction means you cannot
 | 
			
		||||
use both them and the Library together in an executable that you
 | 
			
		||||
distribute.
 | 
			
		||||
 | 
			
		||||
  7. You may place library facilities that are a work based on the
 | 
			
		||||
Library side-by-side in a single library together with other library
 | 
			
		||||
facilities not covered by this License, and distribute such a combined
 | 
			
		||||
library, provided that the separate distribution of the work based on
 | 
			
		||||
the Library and of the other library facilities is otherwise
 | 
			
		||||
permitted, and provided that you do these two things:
 | 
			
		||||
 | 
			
		||||
    a) Accompany the combined library with a copy of the same work
 | 
			
		||||
    based on the Library, uncombined with any other library
 | 
			
		||||
    facilities.  This must be distributed under the terms of the
 | 
			
		||||
    Sections above.
 | 
			
		||||
 | 
			
		||||
    b) Give prominent notice with the combined library of the fact
 | 
			
		||||
    that part of it is a work based on the Library, and explaining
 | 
			
		||||
    where to find the accompanying uncombined form of the same work.
 | 
			
		||||
 | 
			
		||||
  8. You may not copy, modify, sublicense, link with, or distribute
 | 
			
		||||
the Library except as expressly provided under this License.  Any
 | 
			
		||||
attempt otherwise to copy, modify, sublicense, link with, or
 | 
			
		||||
distribute the Library is void, and will automatically terminate your
 | 
			
		||||
rights under this License.  However, parties who have received copies,
 | 
			
		||||
or rights, from you under this License will not have their licenses
 | 
			
		||||
terminated so long as such parties remain in full compliance.
 | 
			
		||||
 | 
			
		||||
  9. You are not required to accept this License, since you have not
 | 
			
		||||
signed it.  However, nothing else grants you permission to modify or
 | 
			
		||||
distribute the Library or its derivative works.  These actions are
 | 
			
		||||
prohibited by law if you do not accept this License.  Therefore, by
 | 
			
		||||
modifying or distributing the Library (or any work based on the
 | 
			
		||||
Library), you indicate your acceptance of this License to do so, and
 | 
			
		||||
all its terms and conditions for copying, distributing or modifying
 | 
			
		||||
the Library or works based on it.
 | 
			
		||||
 | 
			
		||||
  10. Each time you redistribute the Library (or any work based on the
 | 
			
		||||
Library), the recipient automatically receives a license from the
 | 
			
		||||
original licensor to copy, distribute, link with or modify the Library
 | 
			
		||||
subject to these terms and conditions.  You may not impose any further
 | 
			
		||||
restrictions on the recipients' exercise of the rights granted herein.
 | 
			
		||||
You are not responsible for enforcing compliance by third parties to
 | 
			
		||||
this License.
 | 
			
		||||
 | 
			
		||||
  11. If, as a consequence of a court judgment or allegation of patent
 | 
			
		||||
infringement or for any other reason (not limited to patent issues),
 | 
			
		||||
conditions are imposed on you (whether by court order, agreement or
 | 
			
		||||
otherwise) that contradict the conditions of this License, they do not
 | 
			
		||||
excuse you from the conditions of this License.  If you cannot
 | 
			
		||||
distribute so as to satisfy simultaneously your obligations under this
 | 
			
		||||
License and any other pertinent obligations, then as a consequence you
 | 
			
		||||
may not distribute the Library at all.  For example, if a patent
 | 
			
		||||
license would not permit royalty-free redistribution of the Library by
 | 
			
		||||
all those who receive copies directly or indirectly through you, then
 | 
			
		||||
the only way you could satisfy both it and this License would be to
 | 
			
		||||
refrain entirely from distribution of the Library.
 | 
			
		||||
 | 
			
		||||
If any portion of this section is held invalid or unenforceable under any
 | 
			
		||||
particular circumstance, the balance of the section is intended to apply,
 | 
			
		||||
and the section as a whole is intended to apply in other circumstances.
 | 
			
		||||
 | 
			
		||||
It is not the purpose of this section to induce you to infringe any
 | 
			
		||||
patents or other property right claims or to contest validity of any
 | 
			
		||||
such claims; this section has the sole purpose of protecting the
 | 
			
		||||
integrity of the free software distribution system which is
 | 
			
		||||
implemented by public license practices.  Many people have made
 | 
			
		||||
generous contributions to the wide range of software distributed
 | 
			
		||||
through that system in reliance on consistent application of that
 | 
			
		||||
system; it is up to the author/donor to decide if he or she is willing
 | 
			
		||||
to distribute software through any other system and a licensee cannot
 | 
			
		||||
impose that choice.
 | 
			
		||||
 | 
			
		||||
This section is intended to make thoroughly clear what is believed to
 | 
			
		||||
be a consequence of the rest of this License.
 | 
			
		||||
 | 
			
		||||
  12. If the distribution and/or use of the Library is restricted in
 | 
			
		||||
certain countries either by patents or by copyrighted interfaces, the
 | 
			
		||||
original copyright holder who places the Library under this License may add
 | 
			
		||||
an explicit geographical distribution limitation excluding those countries,
 | 
			
		||||
so that distribution is permitted only in or among countries not thus
 | 
			
		||||
excluded.  In such case, this License incorporates the limitation as if
 | 
			
		||||
written in the body of this License.
 | 
			
		||||
 | 
			
		||||
  13. The Free Software Foundation may publish revised and/or new
 | 
			
		||||
versions of the Library General Public License from time to time.
 | 
			
		||||
Such new versions will be similar in spirit to the present version,
 | 
			
		||||
but may differ in detail to address new problems or concerns.
 | 
			
		||||
 | 
			
		||||
Each version is given a distinguishing version number.  If the Library
 | 
			
		||||
specifies a version number of this License which applies to it and
 | 
			
		||||
"any later version", you have the option of following the terms and
 | 
			
		||||
conditions either of that version or of any later version published by
 | 
			
		||||
the Free Software Foundation.  If the Library does not specify a
 | 
			
		||||
license version number, you may choose any version ever published by
 | 
			
		||||
the Free Software Foundation.
 | 
			
		||||
 | 
			
		||||
  14. If you wish to incorporate parts of the Library into other free
 | 
			
		||||
programs whose distribution conditions are incompatible with these,
 | 
			
		||||
write to the author to ask for permission.  For software which is
 | 
			
		||||
copyrighted by the Free Software Foundation, write to the Free
 | 
			
		||||
Software Foundation; we sometimes make exceptions for this.  Our
 | 
			
		||||
decision will be guided by the two goals of preserving the free status
 | 
			
		||||
of all derivatives of our free software and of promoting the sharing
 | 
			
		||||
and reuse of software generally.
 | 
			
		||||
 | 
			
		||||
			    NO WARRANTY
 | 
			
		||||
 | 
			
		||||
  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
 | 
			
		||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
 | 
			
		||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
 | 
			
		||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
 | 
			
		||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 | 
			
		||||
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
 | 
			
		||||
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
 | 
			
		||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 | 
			
		||||
 | 
			
		||||
  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
 | 
			
		||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
 | 
			
		||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
 | 
			
		||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
 | 
			
		||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
 | 
			
		||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
 | 
			
		||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
 | 
			
		||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
 | 
			
		||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 | 
			
		||||
DAMAGES.
 | 
			
		||||
 | 
			
		||||
		     END OF TERMS AND CONDITIONS
 | 
			
		||||
 | 
			
		||||
     Appendix: How to Apply These Terms to Your New Libraries
 | 
			
		||||
 | 
			
		||||
  If you develop a new library, and you want it to be of the greatest
 | 
			
		||||
possible use to the public, we recommend making it free software that
 | 
			
		||||
everyone can redistribute and change.  You can do so by permitting
 | 
			
		||||
redistribution under these terms (or, alternatively, under the terms of the
 | 
			
		||||
ordinary General Public License).
 | 
			
		||||
 | 
			
		||||
  To apply these terms, attach the following notices to the library.  It is
 | 
			
		||||
safest to attach them to the start of each source file to most effectively
 | 
			
		||||
convey the exclusion of warranty; and each file should have at least the
 | 
			
		||||
"copyright" line and a pointer to where the full notice is found.
 | 
			
		||||
 | 
			
		||||
    <one line to give the library's name and a brief idea of what it does.>
 | 
			
		||||
    Copyright (C) <year>  <name of author>
 | 
			
		||||
 | 
			
		||||
    This library is free software; you can redistribute it and/or
 | 
			
		||||
    modify it under the terms of the GNU Library General Public
 | 
			
		||||
    License as published by the Free Software Foundation; either
 | 
			
		||||
    version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
    This library is distributed in the hope that it will be useful,
 | 
			
		||||
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
    Library General Public License for more details.
 | 
			
		||||
 | 
			
		||||
    You should have received a copy of the GNU Library General Public
 | 
			
		||||
    License along with this library; if not, write to the Free
 | 
			
		||||
    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 | 
			
		||||
Also add information on how to contact you by electronic and paper mail.
 | 
			
		||||
 | 
			
		||||
You should also get your employer (if you work as a programmer) or your
 | 
			
		||||
school, if any, to sign a "copyright disclaimer" for the library, if
 | 
			
		||||
necessary.  Here is a sample; alter the names:
 | 
			
		||||
 | 
			
		||||
  Yoyodyne, Inc., hereby disclaims all copyright interest in the
 | 
			
		||||
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
 | 
			
		||||
 | 
			
		||||
  <signature of Ty Coon>, 1 April 1990
 | 
			
		||||
  Ty Coon, President of Vice
 | 
			
		||||
 | 
			
		||||
That's all there is to it!
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										182
									
								
								docs/GL3.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										182
									
								
								docs/GL3.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,182 @@
 | 
			
		||||
 | 
			
		||||
Status of OpenGL 3.x features in Mesa
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Note: when an item is marked as "DONE" it means all the core Mesa
 | 
			
		||||
infrastructure is complete but it may be the case that few (if any) drivers
 | 
			
		||||
implement the features.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
OpenGL Core and Compatibility context support
 | 
			
		||||
 | 
			
		||||
OpenGL 3.1 and later versions are only supported with the Core profile.
 | 
			
		||||
There are no plans to support GL_ARB_compatibility. The last supported OpenGL
 | 
			
		||||
version with all deprecated features is 3.0. Some of the later GL features
 | 
			
		||||
are exposed in the 3.0 context as extensions.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Feature                                               Status
 | 
			
		||||
----------------------------------------------------- ------------------------
 | 
			
		||||
 | 
			
		||||
GL 3.0:
 | 
			
		||||
 | 
			
		||||
GLSL 1.30                                             DONE (i965, r600, radeonsi)
 | 
			
		||||
glBindFragDataLocation, glGetFragDataLocation         DONE
 | 
			
		||||
Conditional rendering (GL_NV_conditional_render)      DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Map buffer subranges (GL_ARB_map_buffer_range)        DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Clamping controls (GL_ARB_color_buffer_float)         DONE (i965, r300, r600, radeonsi)
 | 
			
		||||
Float textures, renderbuffers (GL_ARB_texture_float)  DONE (i965, r300, r600, radeonsi)
 | 
			
		||||
GL_EXT_packed_float                                   DONE (i965, r600, radeonsi)
 | 
			
		||||
GL_EXT_texture_shared_exponent                        DONE (i965, r600, radeonsi, swrast)
 | 
			
		||||
Float depth buffers (GL_ARB_depth_buffer_float)       DONE (i965, r600, radeonsi)
 | 
			
		||||
Framebuffer objects (GL_ARB_framebuffer_object)       DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Half-float                                            DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Non-normalized Integer texture/framebuffer formats    DONE (i965, r600, radeonsi)
 | 
			
		||||
1D/2D Texture arrays                                  DONE (i965, r600, radeonsi)
 | 
			
		||||
Per-buffer blend and masks (GL_EXT_draw_buffers2)     DONE (i965, r600, radeonsi, swrast)
 | 
			
		||||
GL_EXT_texture_compression_rgtc                       DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Red and red/green texture formats                     DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Transform feedback (GL_EXT_transform_feedback)        DONE (i965, r600, radeonsi)
 | 
			
		||||
Vertex array objects (GL_APPLE_vertex_array_object)   DONE (all drivers)
 | 
			
		||||
sRGB framebuffer format (GL_EXT_framebuffer_sRGB)     DONE (i965, r600, radeonsi)
 | 
			
		||||
glClearBuffer commands                                DONE
 | 
			
		||||
glGetStringi command                                  DONE
 | 
			
		||||
glTexParameterI, glGetTexParameterI commands          DONE
 | 
			
		||||
glVertexAttribI commands                              DONE
 | 
			
		||||
Depth format cube textures                            DONE (i965, r600, radeonsi)
 | 
			
		||||
GLX_ARB_create_context (GLX 1.4 is required)          DONE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 3.1:
 | 
			
		||||
 | 
			
		||||
GLSL 1.40                                             DONE (i965, r600, radeonsi)
 | 
			
		||||
Forward compatible context support/deprecations       DONE (i965, r600, radeonsi)
 | 
			
		||||
Instanced drawing (GL_ARB_draw_instanced)             DONE (i965, r600, radeonsi, swrast)
 | 
			
		||||
Buffer copying (GL_ARB_copy_buffer)                   DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Primitive restart (GL_NV_primitive_restart)           DONE (i965, r300, r600, radeonsi)
 | 
			
		||||
16 vertex texture image units                         DONE (i965, r600, radeonsi)
 | 
			
		||||
Texture buffer objs (GL_ARB_texture_buffer_object)    DONE for OpenGL 3.1 contexts (i965, r600, radeonsi)
 | 
			
		||||
Rectangular textures (GL_ARB_texture_rectangle)       DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Uniform buffer objs (GL_ARB_uniform_buffer_object)    DONE (i965, r600, radeonsi, swrast)
 | 
			
		||||
Signed normalized textures (GL_EXT_texture_snorm)     DONE (i965, r300, r600, radeonsi)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 3.2:
 | 
			
		||||
 | 
			
		||||
Core/compatibility profiles                           DONE
 | 
			
		||||
GLSL 1.50                                             DONE (i965)
 | 
			
		||||
Geometry shaders                                      DONE (i965)
 | 
			
		||||
BGRA vertex order (GL_ARB_vertex_array_bgra)          DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Base vertex offset(GL_ARB_draw_elements_base_vertex)  DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Provoking vertex (GL_ARB_provoking_vertex)            DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
Seamless cubemaps (GL_ARB_seamless_cube_map)          DONE (i965, r600, radeonsi)
 | 
			
		||||
Multisample textures (GL_ARB_texture_multisample)     DONE (i965, r600, radeonsi)
 | 
			
		||||
Frag depth clamp (GL_ARB_depth_clamp)                 DONE (i965, r600, swrast, radeonsi)
 | 
			
		||||
Fence objects (GL_ARB_sync)                           DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
GLX_ARB_create_context_profile                        DONE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 3.3:
 | 
			
		||||
 | 
			
		||||
GLSL 3.30                                             DONE (i965)
 | 
			
		||||
GL_ARB_blend_func_extended                            DONE (i965, r600, radeonsi, softpipe)
 | 
			
		||||
GL_ARB_explicit_attrib_location                       DONE (i915, i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
GL_ARB_occlusion_query2                               DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
GL_ARB_sampler_objects                                DONE (i965, r300, r600, radeonsi)
 | 
			
		||||
GL_ARB_shader_bit_encoding                            DONE (i965, r600, radeonsi)
 | 
			
		||||
GL_ARB_texture_rgb10_a2ui                             DONE (i965, r600, radeonsi)
 | 
			
		||||
GL_ARB_texture_swizzle                                DONE (i965, r300, r600, radeonsi, swrast)
 | 
			
		||||
GL_ARB_timer_query                                    DONE (i965, r600, radeonsi)
 | 
			
		||||
GL_ARB_instanced_arrays                               DONE (i965, r300, r600, radeonsi)
 | 
			
		||||
GL_ARB_vertex_type_2_10_10_10_rev                     DONE (i965, r600, radeonsi)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.0:
 | 
			
		||||
 | 
			
		||||
GLSL 4.0                                             not started
 | 
			
		||||
GL_ARB_texture_query_lod                             DONE (i965)
 | 
			
		||||
GL_ARB_draw_buffers_blend                            DONE (i965, r600, radeonsi, softpipe)
 | 
			
		||||
GL_ARB_draw_indirect                                 started (Christoph)
 | 
			
		||||
GL_ARB_gpu_shader5                                   started
 | 
			
		||||
GL_ARB_gpu_shader_fp64                               not started
 | 
			
		||||
GL_ARB_sample_shading                                DONE (i965)
 | 
			
		||||
GL_ARB_shader_subroutine                             not started
 | 
			
		||||
GL_ARB_tessellation_shader                           not started
 | 
			
		||||
GL_ARB_texture_buffer_object_rgb32                   DONE (i965, r600, radeonsi, softpipe)
 | 
			
		||||
GL_ARB_texture_cube_map_array                        DONE (i965, r600, softpipe)
 | 
			
		||||
GL_ARB_texture_gather                                DONE (i965)
 | 
			
		||||
GL_ARB_transform_feedback2                           DONE (i965, r600, radeonsi)
 | 
			
		||||
GL_ARB_transform_feedback3                           DONE (i965, r600, radeonsi)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.1:
 | 
			
		||||
 | 
			
		||||
GLSL 4.1                                             not started
 | 
			
		||||
GL_ARB_ES2_compatibility                             DONE (i965, r300, r600, radeonsi)
 | 
			
		||||
GL_ARB_get_program_binary                            DONE (0 binary formats)
 | 
			
		||||
GL_ARB_separate_shader_objects                       some infrastructure done
 | 
			
		||||
GL_ARB_shader_precision                              not started
 | 
			
		||||
GL_ARB_vertex_attrib_64bit                           not started
 | 
			
		||||
GL_ARB_viewport_array                                not started
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.2:
 | 
			
		||||
 | 
			
		||||
GLSL 4.2                                             not started
 | 
			
		||||
GL_ARB_texture_compression_bptc                      not started
 | 
			
		||||
GL_ARB_compressed_texture_pixel_storage              not started
 | 
			
		||||
GL_ARB_shader_atomic_counters                        DONE (i965)
 | 
			
		||||
GL_ARB_texture_storage                               DONE (all drivers)
 | 
			
		||||
GL_ARB_transform_feedback_instanced                  DONE (i965, r600, radeonsi)
 | 
			
		||||
GL_ARB_base_instance                                 DONE (i965, nv50, nvc0, r600, radeonsi)
 | 
			
		||||
GL_ARB_shader_image_load_store                       not started
 | 
			
		||||
GL_ARB_conservative_depth                            DONE (all drivers that support GLSL 1.30)
 | 
			
		||||
GL_ARB_shading_language_420pack                      DONE (all drivers that support GLSL 1.30)
 | 
			
		||||
GL_ARB_internalformat_query                          DONE (i965, r300, r600, radeonsi)
 | 
			
		||||
GL_ARB_map_buffer_alignment                          DONE (r300, r600, radeonsi)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.3:
 | 
			
		||||
 | 
			
		||||
GLSL 4.3                                             not started
 | 
			
		||||
GL_ARB_arrays_of_arrays                              not started
 | 
			
		||||
GL_ARB_ES3_compatibility                             DONE (i965)
 | 
			
		||||
GL_ARB_clear_buffer_object                           not started
 | 
			
		||||
GL_ARB_compute_shader                                not started
 | 
			
		||||
GL_ARB_copy_image                                    not started
 | 
			
		||||
GL_KHR_debug                                         DONE (all drivers)
 | 
			
		||||
GL_ARB_explicit_uniform_location                     not started
 | 
			
		||||
GL_ARB_fragment_layer_viewport                       not started
 | 
			
		||||
GL_ARB_framebuffer_no_attachments                    not started
 | 
			
		||||
GL_ARB_internalformat_query2                         not started
 | 
			
		||||
GL_ARB_invalidate_subdata                            DONE (all drivers)
 | 
			
		||||
GL_ARB_multi_draw_indirect                           not started
 | 
			
		||||
GL_ARB_program_interface_query                       not started
 | 
			
		||||
GL_ARB_robust_buffer_access_behavior                 not started
 | 
			
		||||
GL_ARB_shader_image_size                             not started
 | 
			
		||||
GL_ARB_shader_storage_buffer_object                  not started
 | 
			
		||||
GL_ARB_stencil_texturing                             not started
 | 
			
		||||
GL_ARB_texture_buffer_range                          DONE (nv50, nvc0, i965, r600, radeonsi)
 | 
			
		||||
GL_ARB_texture_query_levels                          DONE (i965)
 | 
			
		||||
GL_ARB_texture_storage_multisample                   DONE (all drivers that support GL_ARB_texture_multisample)
 | 
			
		||||
GL_ARB_texture_view                                  not started
 | 
			
		||||
GL_ARB_vertex_attrib_binding                         DONE (all drivers)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.4:
 | 
			
		||||
 | 
			
		||||
GLSL 4.4                                             not started
 | 
			
		||||
GL_MAX_VERTEX_ATTRIB_STRIDE                          not started
 | 
			
		||||
GL_ARB_buffer_storage                                not started
 | 
			
		||||
GL_ARB_clear_texture                                 not started
 | 
			
		||||
GL_ARB_enhanced_layouts                              not started
 | 
			
		||||
GL_ARB_multi_bind                                    not started
 | 
			
		||||
GL_ARB_query_buffer_object                           not started
 | 
			
		||||
GL_ARB_texture_mirror_clamp_to_edge                  DONE (i965, nv30, nv50, nvc0, r300, r600, radeonsi, swrast)
 | 
			
		||||
GL_ARB_texture_stencil8                              not started
 | 
			
		||||
GL_ARB_vertex_type_10f_11f_11f_rev                   DONE (i965, r600)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
More info about these features and the work involved can be found at
 | 
			
		||||
http://dri.freedesktop.org/wiki/MissingFunctionality
 | 
			
		||||
							
								
								
									
										256
									
								
								docs/README.CYGWIN
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										256
									
								
								docs/README.CYGWIN
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,256 @@
 | 
			
		||||
 | 
			
		||||
                          Mesa Cygwin/X11 Information
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
WARNING
 | 
			
		||||
=======
 | 
			
		||||
 | 
			
		||||
If you installed X11 (packages xorg-x11-devel and xorg-x11-bin-dlls ) with the 
 | 
			
		||||
latest setup.exe from Cygwin the GL (Mesa) libraries and include are already 
 | 
			
		||||
installed in /usr/X11R6. 
 | 
			
		||||
 | 
			
		||||
The following will explain how to "replace" them.
 | 
			
		||||
 | 
			
		||||
Installation
 | 
			
		||||
============
 | 
			
		||||
 | 
			
		||||
How to compile Mesa on Cygwin/X11 systems:
 | 
			
		||||
 | 
			
		||||
1. Shared libs:
 | 
			
		||||
    type 'make cygwin-sl'.
 | 
			
		||||
 | 
			
		||||
    When finished, the Mesa DLL will be in the Mesa-x.y/lib/ and 
 | 
			
		||||
    Mesa-x.y/bin directories.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
2. Static libs:
 | 
			
		||||
    type 'make cygwin-static'.
 | 
			
		||||
    When finished, the Mesa libraries will be in the Mesa-x.y/lib/ directory.
 | 
			
		||||
 | 
			
		||||
Header and library files:
 | 
			
		||||
   After you've compiled Mesa and tried the demos I recommend the following
 | 
			
		||||
   procedure for "installing" Mesa.
 | 
			
		||||
 | 
			
		||||
   Copy the Mesa include/GL directory to /usr/X11R6/include:
 | 
			
		||||
	cp -a include/GL /usr/X11R6/include
 | 
			
		||||
 | 
			
		||||
   Copy the Mesa library files to /usr/X11R6/lib:
 | 
			
		||||
	cp -a lib/* /usr/X11R6ocal/lib
 | 
			
		||||
 | 
			
		||||
   Copy the Mesa bin files (used by the DLL stuff) to /usr/X11R6/bin:
 | 
			
		||||
	cp -a lib/cyg* /usr/X11R6/bin
 | 
			
		||||
 | 
			
		||||
Xt/Motif widgets:
 | 
			
		||||
   If you want to use Mesa or OpenGL in your Xt/Motif program you can build
 | 
			
		||||
   the widgets found in either the widgets-mesa or widgets-sgi directories.
 | 
			
		||||
   The former were written for Mesa and the later are the original SGI
 | 
			
		||||
   widgets.  Look in those directories for more information.
 | 
			
		||||
   For the Motif widgets you must have downloaded the lesstif package.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Using the library
 | 
			
		||||
=================
 | 
			
		||||
 | 
			
		||||
Configuration options:
 | 
			
		||||
   The file src/mesa/main/config.h has many parameters which you can adjust
 | 
			
		||||
   such as maximum number of lights, clipping planes, maximum texture size,
 | 
			
		||||
   etc.  In particular, you may want to change DEPTH_BITS from 16 to 32
 | 
			
		||||
   if a 16-bit depth buffer isn't precise enough for your application.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Shared libraries:
 | 
			
		||||
   If you compile shared libraries (Win32 DLLS) you may have to set an 
 | 
			
		||||
   environment variable to specify where the Mesa libraries are located.  
 | 
			
		||||
   Set the PATH variable to include /your-dir/Mesa-2.6/bin.   
 | 
			
		||||
   Otherwise, when you try to run a demo it may fail with a message saying 
 | 
			
		||||
   that one or more DLL couldn't be found.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Xt/Motif Widgets:
 | 
			
		||||
   Two versions of the Xt/Motif OpenGL drawing area widgets are included:
 | 
			
		||||
 | 
			
		||||
      widgets-sgi/	SGI's stock widgets
 | 
			
		||||
      widgets-mesa/	Mesa-tuned widgets
 | 
			
		||||
 | 
			
		||||
   Look in those directories for details
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Togl:
 | 
			
		||||
   Togl is an OpenGL/Mesa widget for Tcl/Tk.
 | 
			
		||||
   See http://togl.sourceforge.net for more information.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
X Display Modes:
 | 
			
		||||
   Mesa supports RGB(A) rendering into almost any X visual type and depth.
 | 
			
		||||
 | 
			
		||||
   The glXChooseVisual function tries its best to pick an appropriate visual
 | 
			
		||||
   for the given attribute list.  However, if this doesn't suit your needs
 | 
			
		||||
   you can force Mesa to use any X visual you want (any supported by your
 | 
			
		||||
   X server that is) by setting the MESA_RGB_VISUAL and MESA_CI_VISUAL
 | 
			
		||||
   environment variables.  When an RGB visual is requested, glXChooseVisual
 | 
			
		||||
   will first look if the MESA_RGB_VISUAL variable is defined.  If so, it
 | 
			
		||||
   will try to use the specified visual.  Similarly, when a color index
 | 
			
		||||
   visual is requested, glXChooseVisual will look for the MESA_CI_VISUAL
 | 
			
		||||
   variable.
 | 
			
		||||
 | 
			
		||||
   The format of accepted values is:  <visual-class> <depth>
 | 
			
		||||
   Here are some examples:
 | 
			
		||||
 | 
			
		||||
   using the C-shell:
 | 
			
		||||
	% setenv MESA_RGB_VISUAL "TrueColor 8"		// 8-bit TrueColor
 | 
			
		||||
	% setenv MESA_CI_VISUAL "PseudoColor 12"	// 12-bit PseudoColor
 | 
			
		||||
	% setenv MESA_RGB_VISUAL "PseudoColor 8"	// 8-bit PseudoColor
 | 
			
		||||
 | 
			
		||||
   using the KornShell:
 | 
			
		||||
	$ export MESA_RGB_VISUAL="TrueColor 8"
 | 
			
		||||
	$ export MESA_CI_VISUAL="PseudoColor 12"
 | 
			
		||||
	$ export MESA_RGB_VISUAL="PseudoColor 8"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Double buffering:
 | 
			
		||||
   Mesa can use either an X Pixmap or XImage as the backbuffer when in
 | 
			
		||||
   double buffer mode.  Using GLX, the default is to use an XImage.  The
 | 
			
		||||
   MESA_BACK_BUFFER environment variable can override this.  The valid
 | 
			
		||||
   values for MESA_BACK_BUFFER are:  Pixmap and XImage (only the first
 | 
			
		||||
   letter is checked, case doesn't matter).
 | 
			
		||||
 | 
			
		||||
   A pixmap is faster when drawing simple lines and polygons while an
 | 
			
		||||
   XImage is faster when Mesa has to do pixel-by-pixel rendering.  If you
 | 
			
		||||
   need depth buffering the XImage will almost surely be faster.  Exper-
 | 
			
		||||
   iment with the MESA_BACK_BUFFER variable to see which is faster for
 | 
			
		||||
   your application.  
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Colormaps:
 | 
			
		||||
   When using Mesa directly or with GLX, it's up to the application writer
 | 
			
		||||
   to create a window with an appropriate colormap.  The aux, tk, and GLUT
 | 
			
		||||
   toolkits try to minimize colormap "flashing" by sharing colormaps when
 | 
			
		||||
   possible.  Specifically, if the visual and depth of the window matches
 | 
			
		||||
   that of the root window, the root window's colormap will be shared by
 | 
			
		||||
   the Mesa window.  Otherwise, a new, private colormap will be allocated.
 | 
			
		||||
 | 
			
		||||
   When sharing the root colormap, Mesa may be unable to allocate the colors
 | 
			
		||||
   it needs, resulting in poor color quality.  This can happen when a
 | 
			
		||||
   large number of colorcells in the root colormap are already allocated.
 | 
			
		||||
   To prevent colormap sharing in aux, tk and GLUT, define the environment
 | 
			
		||||
   variable MESA_PRIVATE_CMAP.  The value isn't significant.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Gamma correction:
 | 
			
		||||
   To compensate for the nonlinear relationship between pixel values
 | 
			
		||||
   and displayed intensities, there is a gamma correction feature in
 | 
			
		||||
   Mesa.  Some systems, such as Silicon Graphics, support gamma
 | 
			
		||||
   correction in hardware (man gamma) so you won't need to use Mesa's
 | 
			
		||||
   gamma facility.  Other systems, however, may need gamma adjustment
 | 
			
		||||
   to produce images which look correct.  If in the past you thought
 | 
			
		||||
   Mesa's images were too dim, read on.
 | 
			
		||||
 | 
			
		||||
   Gamma correction is controlled with the MESA_GAMMA environment
 | 
			
		||||
   variable.  Its value is of the form "Gr Gg Gb" or just "G" where
 | 
			
		||||
   Gr is the red gamma value, Gg is the green gamma value, Gb is the
 | 
			
		||||
   blue gamma value and G is one gamma value to use for all three
 | 
			
		||||
   channels.  Each value is a positive real number typically in the
 | 
			
		||||
   range 1.0 to 2.5.  The defaults are all 1.0, effectively disabling
 | 
			
		||||
   gamma correction.  Examples using csh:
 | 
			
		||||
 | 
			
		||||
	% setenv MESA_GAMMA "2.3 2.2 2.4"	// separate R,G,B values
 | 
			
		||||
	% setenv MESA_GAMMA "2.0"		// same gamma for R,G,B
 | 
			
		||||
 | 
			
		||||
   The demos/gamma.c program may help you to determine reasonable gamma
 | 
			
		||||
   value for your display.  With correct gamma values, the color intensities
 | 
			
		||||
   displayed in the top row (drawn by dithering) should nearly match those
 | 
			
		||||
   in the bottom row (drawn as grays).
 | 
			
		||||
 | 
			
		||||
   Alex De Bruyn reports that gamma values of 1.6, 1.6 and 1.9 work well
 | 
			
		||||
   on HP displays using the HP-ColorRecovery technology.
 | 
			
		||||
 | 
			
		||||
   Mesa implements gamma correction with a lookup table which translates
 | 
			
		||||
   a "linear" pixel value to a gamma-corrected pixel value.  There is a
 | 
			
		||||
   small performance penalty.  Gamma correction only works in RGB mode.
 | 
			
		||||
   Also be aware that pixel values read back from the frame buffer will
 | 
			
		||||
   not be "un-corrected" so glReadPixels may not return the same data
 | 
			
		||||
   drawn with glDrawPixels.
 | 
			
		||||
 | 
			
		||||
   For more information about gamma correction see:
 | 
			
		||||
   http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Overlay Planes
 | 
			
		||||
 | 
			
		||||
   Overlay planes in the frame buffer are supported by Mesa but require
 | 
			
		||||
   hardware and X server support.  To determine if your X server has
 | 
			
		||||
   overlay support you can test for the SERVER_OVERLAY_VISUALS property:
 | 
			
		||||
 | 
			
		||||
	xprop -root | grep SERVER_OVERLAY_VISUALS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
HPCR glClear(GL_COLOR_BUFFER_BIT) dithering
 | 
			
		||||
 | 
			
		||||
   If you set the MESA_HPCR_CLEAR environment variable then dithering
 | 
			
		||||
   will be used when clearing the color buffer.  This is only applicable
 | 
			
		||||
   to HP systems with the HPCR (Color Recovery) system.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Extensions
 | 
			
		||||
==========
 | 
			
		||||
   There are three Mesa-specific GLX extensions at this time.
 | 
			
		||||
 | 
			
		||||
   GLX_MESA_pixmap_colormap 
 | 
			
		||||
 | 
			
		||||
      This extension adds the GLX function:
 | 
			
		||||
 | 
			
		||||
         GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
 | 
			
		||||
                                           Pixmap pixmap, Colormap cmap )
 | 
			
		||||
 | 
			
		||||
      It is an alternative to the standard glXCreateGLXPixmap() function.
 | 
			
		||||
      Since Mesa supports RGB rendering into any X visual, not just True-
 | 
			
		||||
      Color or DirectColor, Mesa needs colormap information to convert RGB
 | 
			
		||||
      values into pixel values.  An X window carries this information but a
 | 
			
		||||
      pixmap does not.  This function associates a colormap to a GLX pixmap.
 | 
			
		||||
      See the xdemos/glxpixmap.c file for an example of how to use this
 | 
			
		||||
      extension.
 | 
			
		||||
 | 
			
		||||
   GLX_MESA_release_buffers
 | 
			
		||||
 | 
			
		||||
      Mesa associates a set of ancillary (depth, accumulation, stencil and
 | 
			
		||||
      alpha) buffers with each X window it draws into.  These ancillary
 | 
			
		||||
      buffers are allocated for each X window the first time the X window
 | 
			
		||||
      is passed to glXMakeCurrent().  Mesa, however, can't detect when an
 | 
			
		||||
      X window has been destroyed in order to free the ancillary buffers.
 | 
			
		||||
 | 
			
		||||
      The best it can do is to check for recently destroyed windows whenever
 | 
			
		||||
      the client calls the glXCreateContext() or glXDestroyContext()
 | 
			
		||||
      functions.  This may not be sufficient in all situations though.
 | 
			
		||||
 | 
			
		||||
      The GLX_MESA_release_buffers extension allows a client to explicitly
 | 
			
		||||
      deallocate the ancillary buffers by calling glxReleaseBuffersMESA()
 | 
			
		||||
      just before an X window is destroyed.  For example:
 | 
			
		||||
 | 
			
		||||
         #ifdef GLX_MESA_release_buffers
 | 
			
		||||
            glXReleaseBuffersMESA( dpy, window );
 | 
			
		||||
         #endif
 | 
			
		||||
         XDestroyWindow( dpy, window );
 | 
			
		||||
 | 
			
		||||
      This extension is new in Mesa 2.0.
 | 
			
		||||
 | 
			
		||||
   GLX_MESA_copy_sub_buffer
 | 
			
		||||
 | 
			
		||||
      This extension adds the glXCopySubBufferMESA() function.  It works
 | 
			
		||||
      like glXSwapBuffers() but only copies a sub-region of the window
 | 
			
		||||
      instead of the whole window.
 | 
			
		||||
 | 
			
		||||
      This extension is new in Mesa version 2.6
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Summary of X-related environment variables:
 | 
			
		||||
   MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode (X only)
 | 
			
		||||
   MESA_CI_VISUAL - specifies the X visual and depth for CI mode (X only)
 | 
			
		||||
   MESA_BACK_BUFFER - specifies how to implement the back color buffer (X only)
 | 
			
		||||
   MESA_PRIVATE_CMAP - force aux/tk libraries to use private colormaps (X only)
 | 
			
		||||
   MESA_GAMMA - gamma correction coefficients (X only)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------
 | 
			
		||||
README.CYGWIN - lassauge April 2004 - based on README.X11
 | 
			
		||||
							
								
								
									
										102
									
								
								docs/README.MITS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								docs/README.MITS
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,102 @@
 | 
			
		||||
 | 
			
		||||
			Mesa 3.0 MITS Information
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
This software is distributed under the terms of the GNU Library
 | 
			
		||||
General Public License, see the LICENSE file for details.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
This document is a preliminary introduction to help you get
 | 
			
		||||
started. For more detaile information consult the web page.
 | 
			
		||||
 | 
			
		||||
http://10-dencies.zkm.de/~mesa/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Version 0.1 (Yes it's very alpha code so be warned!)
 | 
			
		||||
Contributors: 
 | 
			
		||||
  Emil Briggs    	(briggs@bucky.physics.ncsu.edu)
 | 
			
		||||
  David Bucciarelli 	(tech.hmw@plus.it)
 | 
			
		||||
  Andreas Schiffler 	(schiffler@zkm.de)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
1. Requirements:
 | 
			
		||||
     Mesa 3.0.
 | 
			
		||||
     An SMP capable machine running Linux 2.x
 | 
			
		||||
     libpthread installed on your machine.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
2. What does MITS stand for?
 | 
			
		||||
     MITS stands for Mesa Internal Threading System. By adding
 | 
			
		||||
     internal threading to Mesa it should be possible to improve
 | 
			
		||||
     performance of OpenGL applications on SMP machines.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
3. Do applications have to be recoded to take advantage of MITS?
 | 
			
		||||
     No. The threading is internal to Mesa and transparent to
 | 
			
		||||
     applications.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
4. Will all applications benefit from the current implementation of MITS?
 | 
			
		||||
     No. This implementation splits the processing of the vertex buffer
 | 
			
		||||
     over two threads. There is a certain amount of overhead involved
 | 
			
		||||
     with the thread synchronization and if there is not enough work
 | 
			
		||||
     to be done the extra overhead outweighs any speedup from using
 | 
			
		||||
     dual processors. You will not for example see any speedup when
 | 
			
		||||
     running Quake because it uses GL_POLYGON and there is only one
 | 
			
		||||
     polygon for each vertex buffer processed. Test results on a
 | 
			
		||||
     dual 200 Mhz. Pentium Pro system show that one needs around
 | 
			
		||||
     100-200 vertices in the vertex buffer before any there is any
 | 
			
		||||
     appreciable benefit from the threading.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
5. Are there any parameters that I can tune to try to improve performance.
 | 
			
		||||
     Yes. You can try to vary the size of the vertex buffer which is
 | 
			
		||||
     define in VB_MAX located in the file src/vb.h from your top level
 | 
			
		||||
     Mesa distribution. The number needs to be a multiple of 12 and
 | 
			
		||||
     the optimum value will probably depend on the capabilities of
 | 
			
		||||
     your machine and the particular application you are running.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
6. Are there any ways I can modify the application to improve its
 | 
			
		||||
   performance with the MITS?
 | 
			
		||||
     Yes. Try to use as many vertices between each Begin/End pair
 | 
			
		||||
     as possbile. This will reduce the thread synchronization
 | 
			
		||||
     overhead.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
7. What sort of speedups can I expect?
 | 
			
		||||
     On some benchmarks performance gains of up to 30% have been
 | 
			
		||||
     observerd. Others may see no gain at all and in a few rare
 | 
			
		||||
     cases even some degradation.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
8. What still needs to be done?
 | 
			
		||||
     Lots of testing and benchmarking.
 | 
			
		||||
     A portable implementation that works within the Mesa thread API.
 | 
			
		||||
     Threading of additional areas of Mesa to improve performance
 | 
			
		||||
     even more.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Installation:
 | 
			
		||||
 | 
			
		||||
   1. This assumes that you already have a working Mesa 3.0 installation
 | 
			
		||||
      from source.
 | 
			
		||||
   2. Place the tarball MITS.tar.gz in your top level Mesa directory.
 | 
			
		||||
   3. Unzip it and untar it. It will replace the following files in
 | 
			
		||||
      your Mesa source tree so back them up if you want to save them.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	 README.MITS
 | 
			
		||||
         Make-config
 | 
			
		||||
	 Makefile
 | 
			
		||||
	 mklib.glide
 | 
			
		||||
         src/vbxform.c
 | 
			
		||||
	 src/vb.h
 | 
			
		||||
 | 
			
		||||
   4. Rebuild Mesa using the command
 | 
			
		||||
 | 
			
		||||
          make linux-386-glide-mits
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										207
									
								
								docs/README.QUAKE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								docs/README.QUAKE
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,207 @@
 | 
			
		||||
 | 
			
		||||
             Info on using Mesa 3.0 with Linux Quake I and Quake II
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Disclaimer
 | 
			
		||||
----------
 | 
			
		||||
 | 
			
		||||
I am _not_ a Quake expert by any means.  I pretty much only run it to
 | 
			
		||||
test Mesa.  There have been a lot of questions about Linux Quake and
 | 
			
		||||
Mesa so I'm trying to provide some useful info here.  If this file
 | 
			
		||||
doesn't help you then you should look elsewhere for help.  The Mesa
 | 
			
		||||
mailing list or the news://news.3dfx.com/3dfx.linux.glide newsgroup
 | 
			
		||||
might be good.
 | 
			
		||||
 | 
			
		||||
Again, all the information I have is in this file.  Please don't email
 | 
			
		||||
me with questions.
 | 
			
		||||
 | 
			
		||||
If you have information to contribute to this file please send it to
 | 
			
		||||
me at brianp@elastic.avid.com
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linux Quake
 | 
			
		||||
-----------
 | 
			
		||||
 | 
			
		||||
You can get Linux Quake from http://www.idsoftware.com/
 | 
			
		||||
 | 
			
		||||
Quake I and II for Linux were tested with, and include, Mesa 2.6.  You
 | 
			
		||||
shouldn't have too many problems if you simply follow the instructions
 | 
			
		||||
in the Quake distribution.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
RedHat 5.0 Linux problems
 | 
			
		||||
-------------------------
 | 
			
		||||
 | 
			
		||||
RedHat Linux 5.x uses the GNU C library ("glibc" or "libc6") whereas
 | 
			
		||||
previous RedHat and other Linux distributions use "libc5" for its
 | 
			
		||||
runtime C library.
 | 
			
		||||
 | 
			
		||||
Linux Quake I and II were compiled for libc5.  If you compile Mesa
 | 
			
		||||
on a RedHat 5.x system the resulting libMesaGL.so file will not work
 | 
			
		||||
with Linux Quake because of the different C runtime libraries.
 | 
			
		||||
The symptom of this is a segmentation fault soon after starting Quake.
 | 
			
		||||
 | 
			
		||||
If you want to use a newer version of Mesa (like 3.x) with Quake on
 | 
			
		||||
RedHat 5.x then read on.
 | 
			
		||||
 | 
			
		||||
The solution to the C library problem is to force Mesa to use libc5.
 | 
			
		||||
libc5 is in /usr/i486-linux-libc5/lib on RedHat 5.x systems.
 | 
			
		||||
 | 
			
		||||
Emil Briggs (briggs@tick.physics.ncsu.edu) nicely gave me the following
 | 
			
		||||
info:
 | 
			
		||||
 | 
			
		||||
>   I only know what works on a RedHat 5.0 distribution. RH5 includes
 | 
			
		||||
> a full set of libraries for both libc5 and glibc. The loader ld.so
 | 
			
		||||
> uses the libc5 libraries in /usr/i486-linux-libc5/lib for programs
 | 
			
		||||
> linked against libc5 while it uses the glibc libraries in /lib and
 | 
			
		||||
> /usr/lib for programs linked against glibc.
 | 
			
		||||
> 
 | 
			
		||||
> Anyway I changed line 41 of mklib.glide to
 | 
			
		||||
>     GLIDELIBS="-L/usr/local/glide/lib -lglide2x -L/usr/i486-linux-libc5/lib"
 | 
			
		||||
> 
 | 
			
		||||
> And I started quake2 up with a script like this
 | 
			
		||||
> #!/bin/csh
 | 
			
		||||
> setenv LD_LIBRARY_PATH /usr/i486-linux-libc5/lib
 | 
			
		||||
> setenv MESA_GLX_FX f
 | 
			
		||||
> ./quake2 +set vid_ref gl
 | 
			
		||||
> kbd_mode -a
 | 
			
		||||
> reset
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
I've already patched the mklib.glide file.  You'll have to start Quake
 | 
			
		||||
with the script shown above though.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
**********************
 | 
			
		||||
 | 
			
		||||
Daryll Strauss writes:
 | 
			
		||||
 | 
			
		||||
Here's my thoughts on the problem. On a RH 5.x system, you can NOT build
 | 
			
		||||
a libc5 executable or library. Red Hat just doesn't include the right
 | 
			
		||||
stuff to do it.
 | 
			
		||||
 | 
			
		||||
Since Quake is a libc5 based application, you are in trouble. You need
 | 
			
		||||
libc5 libraries.
 | 
			
		||||
 | 
			
		||||
What can you do about it? Well there's a package called gcc5 that does
 | 
			
		||||
MOST of the right stuff to compile with libc5. (It brings back older
 | 
			
		||||
header files, makes appropriate symbolic links for libraries, and sets
 | 
			
		||||
up the compiler to use the correct directories) You can find gcc5 here: 
 | 
			
		||||
ftp://ecg.mit.edu/pub/linux/gcc5-1.0-1.i386.rpm
 | 
			
		||||
 | 
			
		||||
No, this isn't quite enough. There are still a few tricks to getting
 | 
			
		||||
Mesa to compile as a libc5 application. First you have to make sure that
 | 
			
		||||
every compile uses gcc5 instead of gcc. Second, in some cases the link
 | 
			
		||||
line actually lists -L/usr/lib which breaks gcc5 (because it forces you
 | 
			
		||||
to use the glibc version of things)
 | 
			
		||||
 | 
			
		||||
If you get all the stuff correctly compiled with gcc5 it should work.
 | 
			
		||||
I've run Mesa 3.0B6  and its demos in a window with my Rush on a Red Hat
 | 
			
		||||
5.1 system. It is a big hassle, but it can be done. I've only made Quake
 | 
			
		||||
segfault, but I think that's from my libRush using the wrong libc. 
 | 
			
		||||
 | 
			
		||||
Yes, mixing libc5 and glibc is a major pain. I've been working to get
 | 
			
		||||
all my libraries compiling correctly with this setup. Someone should
 | 
			
		||||
make an RPM out of it and feed changes back to Brian once they get it
 | 
			
		||||
all working. If no one else has done so by the time I get the rest of my
 | 
			
		||||
stuff straightened out, I'll try to do it myself.
 | 
			
		||||
 | 
			
		||||
							- |Daryll
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
*********************
 | 
			
		||||
 | 
			
		||||
David Bucciarelli (tech.hmw@plus.it) writes:
 | 
			
		||||
 | 
			
		||||
I'm using the Mesa-3.0beta7 and the RedHat 5.1 and QuakeII is
 | 
			
		||||
working fine for me.  I had only to make a small change to the
 | 
			
		||||
Mesa-3.0/mklib.glide file, from:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    GLIDELIBS="-L/usr/local/glide/lib -lglide2x
 | 
			
		||||
-L/usr/i486-linux-libc5/lib -lm"
 | 
			
		||||
 | 
			
		||||
to:
 | 
			
		||||
 | 
			
		||||
    GLIDELIBS="-L/usr/i486-linux-libc5/lib -lglide2x"
 | 
			
		||||
 | 
			
		||||
and to make two symbolic links:
 | 
			
		||||
 | 
			
		||||
[david@localhost Mesa]$ ln -s libMesaGL.so libMesaGL.so.2
 | 
			
		||||
[david@localhost Mesa]$ ln -s libMesaGLU.so libMesaGLU.so.2
 | 
			
		||||
 | 
			
		||||
I'm using the Daryll's Linux glide rpm for the Voodoo2 and glibc (it
 | 
			
		||||
includes also the Glide for the libc5). I'm not using the /dev/3Dfx and
 | 
			
		||||
running QuakeII as root with the following env. var:
 | 
			
		||||
 | 
			
		||||
export
 | 
			
		||||
LD_LIBRARY_PATH=/dsk1/home/david/src/gl/Mesa/lib:/usr/i486-linux-libc5/lib
 | 
			
		||||
 | 
			
		||||
I think that all problems are related to the glibc, Quake will never
 | 
			
		||||
work if you get the following output:
 | 
			
		||||
 | 
			
		||||
[david@localhost Mesa]$ ldd lib/libMesaGL.so
 | 
			
		||||
        libglide2x.so => /usr/lib/libglide2x.so (0x400f8000)
 | 
			
		||||
        libm.so.6 => /lib/libm.so.6 (0x40244000)
 | 
			
		||||
        libc.so.6 => /lib/libc.so.6 (0x4025d000)
 | 
			
		||||
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)
 | 
			
		||||
 | 
			
		||||
You must get the following outputs:
 | 
			
		||||
 | 
			
		||||
[david@localhost Mesa]# ldd lib/libMesaGL.so
 | 
			
		||||
        libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
 | 
			
		||||
(0x400f3000)
 | 
			
		||||
 | 
			
		||||
[root@localhost quake2]# ldd quake2
 | 
			
		||||
        libdl.so.1 => /lib/libdl.so.1 (0x40005000)
 | 
			
		||||
        libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x40008000)
 | 
			
		||||
        libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x40010000)
 | 
			
		||||
 | 
			
		||||
[root@localhost quake2]# ldd ref_gl.so
 | 
			
		||||
        libMesaGL.so.2 =>
 | 
			
		||||
/dsk1/home/david/src/gl/Mesa/lib/libMesaGL.so.2 (0x400eb000)
 | 
			
		||||
        libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
 | 
			
		||||
(0x401d9000)
 | 
			
		||||
        libX11.so.6 => /usr/i486-linux-libc5/lib/libX11.so.6
 | 
			
		||||
(0x40324000)
 | 
			
		||||
        libXext.so.6 => /usr/i486-linux-libc5/lib/libXext.so.6
 | 
			
		||||
(0x403b7000)
 | 
			
		||||
        libvga.so.1 => /usr/i486-linux-libc5/lib/libvga.so.1
 | 
			
		||||
(0x403c1000)
 | 
			
		||||
        libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x403f5000)
 | 
			
		||||
        libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x403fd000)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
***********************
 | 
			
		||||
 | 
			
		||||
Steve Davies (steve@one47.demon.co.uk) writes:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Try using:
 | 
			
		||||
 | 
			
		||||
    export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib
 | 
			
		||||
    ./quake2 +set vid_ref gl
 | 
			
		||||
 | 
			
		||||
to start the game... Works for me, but assumes that you have the
 | 
			
		||||
compatability libc5 RPMs installed.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
***************************
 | 
			
		||||
 | 
			
		||||
WWW resources - you may find additional Linux Quake help at these URLs:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
http://quake.medina.net/howto
 | 
			
		||||
 | 
			
		||||
http://webpages.mr.net/bobz
 | 
			
		||||
 | 
			
		||||
http://www.linuxgames.com/quake2/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------
 | 
			
		||||
							
								
								
									
										52
									
								
								docs/README.THREADS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								docs/README.THREADS
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Mesa Threads README
 | 
			
		||||
-------------------
 | 
			
		||||
 | 
			
		||||
Thread safety was introduced in Mesa 2.6 by John Stone and
 | 
			
		||||
Christoph Poliwoda.
 | 
			
		||||
 | 
			
		||||
It was redesigned in Mesa 3.3 so that thread safety is
 | 
			
		||||
supported by default (on systems which support threads,
 | 
			
		||||
that is).  There is no measurable penalty on single
 | 
			
		||||
threaded applications.
 | 
			
		||||
 | 
			
		||||
NOTE that the only _driver_ which is thread safe at this time
 | 
			
		||||
is the OS/Mesa driver!
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
At present the mthreads code supports three thread APIS:
 | 
			
		||||
  1) POSIX threads (aka pthreads).
 | 
			
		||||
  2) Solaris / Unix International threads.
 | 
			
		||||
  3) Win32 threads (Win 95/NT).
 | 
			
		||||
 | 
			
		||||
Support for other thread libraries can be added src/glthread.[ch]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
In order to guarantee proper operation, it is
 | 
			
		||||
necessary for both Mesa and application code to use the same threads API.
 | 
			
		||||
So, if your application uses Sun's thread API, then you should build Mesa
 | 
			
		||||
using one of the targets for Sun threads.
 | 
			
		||||
 | 
			
		||||
The mtdemos directory contains some example programs which use 
 | 
			
		||||
multiple threads to render to osmesa rendering context(s).
 | 
			
		||||
 | 
			
		||||
Linux users should be aware that there exist many different POSIX
 | 
			
		||||
threads packages. The best solution is the linuxthreads package
 | 
			
		||||
(http://pauillac.inria.fr/~xleroy/linuxthreads/) as this package is the
 | 
			
		||||
only one that really supports multiprocessor machines (AFAIK). See
 | 
			
		||||
http://pauillac.inria.fr/~xleroy/linuxthreads/README for further
 | 
			
		||||
information about the usage of linuxthreads.
 | 
			
		||||
 | 
			
		||||
If you are interested in helping with thread safety work in Mesa
 | 
			
		||||
join the Mesa developers mailing list and post your proposal.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Regards,
 | 
			
		||||
  John Stone           -- j.stone@acm.org  johns@cs.umr.edu
 | 
			
		||||
  Christoph Poliwoda   -- poliwoda@volumegraphics.com
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Version info:
 | 
			
		||||
   Mesa 2.6 - initial thread support.
 | 
			
		||||
   Mesa 3.3 - thread support mostly rewritten (Brian Paul)
 | 
			
		||||
@@ -2,8 +2,8 @@ The software may implement third party technologies (e.g. third party
 | 
			
		||||
libraries) that are not licensed to you by AMD and for which you may need
 | 
			
		||||
to obtain licenses from other parties.  Unless explicitly stated otherwise,
 | 
			
		||||
these third party technologies are not licensed hereunder.  Such third
 | 
			
		||||
party technologies include, but are not limited, to H.264, H.265, HEVC, MPEG-2,
 | 
			
		||||
MPEG-4, AVC, and VC-1.
 | 
			
		||||
party technologies include, but are not limited, to H.264, MPEG-2, MPEG-4,
 | 
			
		||||
AVC, and VC-1.
 | 
			
		||||
 | 
			
		||||
For MPEG-2 Encoding Products ANY USE OF THIS PRODUCT IN ANY MANNER OTHER
 | 
			
		||||
THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD FOR ENCODING VIDEO
 | 
			
		||||
@@ -11,34 +11,3 @@ INFORMATION FOR PACKAGED MEDIA IS EXPRESSLY PROHIBITED WITHOUT A LICENSE
 | 
			
		||||
UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT PORTFOLIO, WHICH LICENSES IS
 | 
			
		||||
AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers Green Circle, Suite 400E,
 | 
			
		||||
Greenwood Village, Colorado 80111 U.S.A.
 | 
			
		||||
 | 
			
		||||
WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
 | 
			
		||||
KIND.  AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
 | 
			
		||||
BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 | 
			
		||||
PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN
 | 
			
		||||
UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR
 | 
			
		||||
COURSE OF USAGE.  THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS
 | 
			
		||||
ASSUMED BY YOU.  Some jurisdictions do not allow the exclusion of implied
 | 
			
		||||
warranties, so the above exclusion may not apply to You.
 | 
			
		||||
 | 
			
		||||
LIMITATION OF LIABILITY AND INDEMNIFICATION:  AMD AND ITS LICENSORS WILL NOT,
 | 
			
		||||
UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL,
 | 
			
		||||
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR
 | 
			
		||||
THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE
 | 
			
		||||
POSSIBILITY OF SUCH DAMAGES.  In no event shall AMD's total liability to You
 | 
			
		||||
for all damages, losses, and causes of action (whether in contract, tort
 | 
			
		||||
(including negligence) or otherwise) exceed the amount of $100 USD.  You agree
 | 
			
		||||
to defend, indemnify and hold harmless AMD and its licensors, and any of their
 | 
			
		||||
directors, officers, employees, affiliates or agents from and against any and
 | 
			
		||||
all loss, damage, liability and other expenses (including reasonable
 | 
			
		||||
attorneys' fees), resulting from Your use of the Software or violation of the
 | 
			
		||||
terms and conditions of this Agreement.
 | 
			
		||||
 | 
			
		||||
U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED
 | 
			
		||||
RIGHTS." Use, duplication, or disclosure by the Government is subject to the
 | 
			
		||||
restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or
 | 
			
		||||
its successor.  Use of the Software by the Government constitutes
 | 
			
		||||
acknowledgement of AMD's proprietary rights in them.
 | 
			
		||||
 | 
			
		||||
EXPORT RESTRICTIONS: The Software may be subject to export restrictions as
 | 
			
		||||
stated in the Software License Agreement.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,43 +0,0 @@
 | 
			
		||||
The software may implement third party technologies (e.g. third party
 | 
			
		||||
libraries) that are not licensed to you by AMD and for which you may need
 | 
			
		||||
to obtain licenses from other parties.  Unless explicitly stated otherwise,
 | 
			
		||||
these third party technologies are not licensed hereunder.  Such third
 | 
			
		||||
party technologies include, but are not limited, to H.264, MPEG-2, MPEG-4,
 | 
			
		||||
AVC, and VC-1.  
 | 
			
		||||
 | 
			
		||||
For MPEG-2 Intermediate Products: ANY USE OF THIS PRODUCT IN ANY MANNER OTHER
 | 
			
		||||
THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD IS EXPRESSLY
 | 
			
		||||
PROHIBITED WITHOUT A LICENSE UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT
 | 
			
		||||
PORTFOLIO, WHICH LICENSES IS AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers
 | 
			
		||||
Green Circle, Suite 400E, Greenwood Village, Colorado 80111 U.S.A.
 | 
			
		||||
 | 
			
		||||
WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
 | 
			
		||||
KIND.  AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
 | 
			
		||||
BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 | 
			
		||||
PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN
 | 
			
		||||
UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR
 | 
			
		||||
COURSE OF USAGE.  THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS
 | 
			
		||||
ASSUMED BY YOU.  Some jurisdictions do not allow the exclusion of implied
 | 
			
		||||
warranties, so the above exclusion may not apply to You.
 | 
			
		||||
 | 
			
		||||
LIMITATION OF LIABILITY AND INDEMNIFICATION:  AMD AND ITS LICENSORS WILL NOT,
 | 
			
		||||
UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL,
 | 
			
		||||
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR
 | 
			
		||||
THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE
 | 
			
		||||
POSSIBILITY OF SUCH DAMAGES.  In no event shall AMD's total liability to You
 | 
			
		||||
for all damages, losses, and causes of action (whether in contract, tort
 | 
			
		||||
(including negligence) or otherwise) exceed the amount of $100 USD.  You agree
 | 
			
		||||
to defend, indemnify and hold harmless AMD and its licensors, and any of their
 | 
			
		||||
directors, officers, employees, affiliates or agents from and against any and
 | 
			
		||||
all loss, damage, liability and other expenses (including reasonable
 | 
			
		||||
attorneys' fees), resulting from Your use of the Software or violation of the
 | 
			
		||||
terms and conditions of this Agreement.
 | 
			
		||||
 | 
			
		||||
U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED
 | 
			
		||||
RIGHTS." Use, duplication, or disclosure by the Government is subject to the
 | 
			
		||||
restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or
 | 
			
		||||
its successor.  Use of the Software by the Government constitutes
 | 
			
		||||
acknowledgement of AMD's proprietary rights in them.
 | 
			
		||||
 | 
			
		||||
EXPORT RESTRICTIONS: The Software may be subject to export restrictions as
 | 
			
		||||
stated in the Software License Agreement.
 | 
			
		||||
@@ -11,6 +11,10 @@ no longer shipped or supported.
 | 
			
		||||
 | 
			
		||||
Run
 | 
			
		||||
 | 
			
		||||
  scons osmesa mesagdi
 | 
			
		||||
 | 
			
		||||
to build classic mesa Windows GDI drivers; or
 | 
			
		||||
 | 
			
		||||
  scons libgl-gdi
 | 
			
		||||
 | 
			
		||||
to build gallium based GDI driver.
 | 
			
		||||
@@ -32,15 +36,17 @@ Recipe
 | 
			
		||||
Building on windows requires several open-source packages. These are
 | 
			
		||||
steps that work as of this writing.
 | 
			
		||||
 | 
			
		||||
- install python 2.7
 | 
			
		||||
- install scons (latest)
 | 
			
		||||
- install mingw, flex, and bison
 | 
			
		||||
- install pywin32 from here: http://www.lfd.uci.edu/~gohlke/pythonlibs
 | 
			
		||||
1) install python 2.7
 | 
			
		||||
2) install scons (latest)
 | 
			
		||||
3) install mingw, flex, and bison
 | 
			
		||||
4) install libxml2 from here: http://www.lfd.uci.edu/~gohlke/pythonlibs
 | 
			
		||||
  get libxml2-python-2.9.1.win-amd64-py2.7.exe
 | 
			
		||||
5) install pywin32 from here: http://www.lfd.uci.edu/~gohlke/pythonlibs
 | 
			
		||||
  get pywin32-218.4.win-amd64-py2.7.exe
 | 
			
		||||
- install git
 | 
			
		||||
- download mesa from git
 | 
			
		||||
  see https://www.mesa3d.org/repository.html
 | 
			
		||||
- run scons
 | 
			
		||||
6) install git
 | 
			
		||||
7) download mesa from git
 | 
			
		||||
  see http://www.mesa3d.org/repository.html
 | 
			
		||||
8) run scons
 | 
			
		||||
 | 
			
		||||
General
 | 
			
		||||
-------
 | 
			
		||||
 
 | 
			
		||||
@@ -103,7 +103,7 @@ Mesa Version History
 | 
			
		||||
	- Stencil-related functions now work in display lists
 | 
			
		||||
    Changes:
 | 
			
		||||
	- renamed aux.h as glaux.h (MS-DOS names can't start with aux)
 | 
			
		||||
	- most filenames are in 8.3 format to accommodate MS-DOS
 | 
			
		||||
	- most filenames are in 8.3 format to accomodate MS-DOS
 | 
			
		||||
	- use GLubytes to store arrays of colors instead of GLints
 | 
			
		||||
 | 
			
		||||
1.2.2   August 2, 1995
 | 
			
		||||
@@ -1007,7 +1007,7 @@ Mesa Version History
 | 
			
		||||
	- glGetTexImage was using pixel unpacking instead of packing params
 | 
			
		||||
	- auto-mipmap generation for cube maps was incorrect
 | 
			
		||||
    Changes:
 | 
			
		||||
	- max texture units reduced to six to accommodate texture rectangles
 | 
			
		||||
	- max texture units reduced to six to accomodate texture rectangles
 | 
			
		||||
	- removed unfinished GL_MESA_sprite_point extension code
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -33,7 +33,7 @@ without a depth buffer.
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 9.1.2 and later (will) support a DRI configuration option to work around
 | 
			
		||||
this issue.
 | 
			
		||||
Using the <a href="https://dri.freedesktop.org/wiki/DriConf">driconf</a> tool,
 | 
			
		||||
Using the <a href="http://dri.freedesktop.org/wiki/DriConf">driconf</a> tool,
 | 
			
		||||
set the "Create all visuals with a depth buffer" option before running Topogun.
 | 
			
		||||
Then, all GLX visuals will be created with a depth buffer.
 | 
			
		||||
</p>
 | 
			
		||||
@@ -48,25 +48,23 @@ start-up because of an extension string buffer-overflow problem.
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The problem is a modern OpenGL driver will return a very long string
 | 
			
		||||
for the <code>glGetString(GL_EXTENSIONS)</code> query and if the application
 | 
			
		||||
for the glGetString(GL_EXTENSIONS) query and if the application
 | 
			
		||||
naively copies the string into a fixed-size buffer it can overflow the
 | 
			
		||||
buffer and crash the application.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The work-around is to set the <code>MESA_EXTENSION_MAX_YEAR</code>
 | 
			
		||||
environment variable to the approximate release year of the game.
 | 
			
		||||
This will cause the <code>glGetString(GL_EXTENSIONS)</code> query to only report
 | 
			
		||||
extensions older than the given year.
 | 
			
		||||
The work-around is to set the MESA_EXTENSION_MAX_YEAR environment variable
 | 
			
		||||
to the approximate release year of the game.
 | 
			
		||||
This will cause the glGetString(GL_EXTENSIONS) query to only report extensions
 | 
			
		||||
older than the given year.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
For example, if the game was released in 2001, do
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
export MESA_EXTENSION_MAX_YEAR=2001
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
before running the game.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										233
									
								
								docs/autoconf.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								docs/autoconf.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,233 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Compilation and Installation using Autoconf</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Compilation and Installation using Autoconf</h1>
 | 
			
		||||
 | 
			
		||||
<ol>
 | 
			
		||||
<li><p><a href="#basic">Basic Usage</a></li>
 | 
			
		||||
<li><p><a href="#driver">Driver Options</a>
 | 
			
		||||
  <ul>
 | 
			
		||||
  <li><a href="#xlib">Xlib Driver Options</a></li>
 | 
			
		||||
  <li><a href="#dri">DRI Driver Options</a></li>
 | 
			
		||||
  <li><a href="#osmesa">OSMesa Driver Options</a></li>
 | 
			
		||||
  </ul>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="basic">1. Basic Usage</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The autoconf generated configure script can be used to guess your
 | 
			
		||||
platform and change various options for building Mesa. To use the
 | 
			
		||||
configure script, type:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
    ./configure
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To see a short description of all the options, type <code>./configure
 | 
			
		||||
--help</code>. If you are using a development snapshot and the configure
 | 
			
		||||
script does not exist, type <code>./autogen.sh</code> to generate it
 | 
			
		||||
first. If you know the options you want to pass to
 | 
			
		||||
<code>configure</code>, you can pass them to <code>autogen.sh</code>. It
 | 
			
		||||
will run <code>configure</code> with these options after it is
 | 
			
		||||
generated. Once you have run <code>configure</code> and set the options
 | 
			
		||||
to your preference, type:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
    make
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
This will produce libGL.so and several other libraries depending on the
 | 
			
		||||
options you have chosen. Later, if you want to rebuild for a different
 | 
			
		||||
configuration run <code>make realclean</code> before rebuilding.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Some of the generic autoconf options are used with Mesa:
 | 
			
		||||
</p>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>--prefix=PREFIX</code></dt>
 | 
			
		||||
<dd><p>This is the root directory where
 | 
			
		||||
files will be installed by <code>make install</code>. The default is
 | 
			
		||||
<code>/usr/local</code>.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--exec-prefix=EPREFIX</code></dt>
 | 
			
		||||
<dd><p>This is the root directory
 | 
			
		||||
where architecture-dependent files will be installed. In Mesa, this is
 | 
			
		||||
only used to derive the directory for the libraries. The default is
 | 
			
		||||
<code>${prefix}</code>.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--libdir=LIBDIR</code></dt>
 | 
			
		||||
<dd><p>This option specifies the directory
 | 
			
		||||
where the GL libraries will be installed. The default is
 | 
			
		||||
<code>${exec_prefix}/lib</code>. It also serves as the name of the
 | 
			
		||||
library staging area in the source tree. For instance, if the option
 | 
			
		||||
<code>--libdir=/usr/local/lib64</code> is used, the libraries will be
 | 
			
		||||
created in a <code>lib64</code> directory at the top of the Mesa source
 | 
			
		||||
tree.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--enable-static, --disable-shared</code></dt>
 | 
			
		||||
<dd><p>By default, Mesa
 | 
			
		||||
will build shared libraries. Either of these options will force static
 | 
			
		||||
libraries to be built. It is not currently possible to build static and
 | 
			
		||||
shared libraries in a single pass.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>CC, CFLAGS, CXX, CXXFLAGS</code></dt>
 | 
			
		||||
<dd><p>These environment variables
 | 
			
		||||
control the C and C++ compilers used during the build. By default,
 | 
			
		||||
<code>gcc</code> and <code>g++</code> are used with the options
 | 
			
		||||
<code>"-g -O2"</code>.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>LDFLAGS</code></dt>
 | 
			
		||||
<dd><p>An environment variable specifying flags to
 | 
			
		||||
pass when linking programs. These are normally empty, but can be used
 | 
			
		||||
to direct the linker to use libraries in nonstandard directories. For
 | 
			
		||||
example, <code>LDFLAGS="-L/usr/X11R6/lib"</code>.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>PKG_CONFIG_PATH</code></dt>
 | 
			
		||||
<dd><p>When available, the
 | 
			
		||||
<code>pkg-config</code> utility is used to search for external libraries
 | 
			
		||||
on the system. This environment variable is used to control the search
 | 
			
		||||
path for <code>pkg-config</code>. For instance, setting
 | 
			
		||||
<code>PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig</code> will search for
 | 
			
		||||
package metadata in <code>/usr/X11R6</code> before the standard
 | 
			
		||||
directories.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
There are also a few general options for altering the Mesa build:
 | 
			
		||||
</p>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>--enable-debug</code></dt>
 | 
			
		||||
<dd><p>This option will enable compiler
 | 
			
		||||
options and macros to aid in debugging the Mesa libraries.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--disable-asm</code></dt>
 | 
			
		||||
<dd><p>There are assembly routines
 | 
			
		||||
available for a few architectures. These will be used by default if
 | 
			
		||||
one of these architectures is detected. This option ensures that
 | 
			
		||||
assembly will not be used.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--enable-32-bit</code></dt>
 | 
			
		||||
<dt><code>--enable-64-bit</code></dt>
 | 
			
		||||
<dd><p>By default, the build will compile code as directed by the environment
 | 
			
		||||
variables
 | 
			
		||||
<code>CC</code>, <code>CFLAGS</code>, etc. If the compiler is
 | 
			
		||||
<code>gcc</code>, these options offer a helper to add the compiler flags
 | 
			
		||||
to force 32- or 64-bit code generation as used on the x86 and x86_64
 | 
			
		||||
architectures. Note that these options are mutually exclusive.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="driver">2. Driver Options</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
There are several different driver modes that Mesa can use. These are
 | 
			
		||||
described in more detail in the <a href="install.html">basic
 | 
			
		||||
installation instructions</a>. The Mesa driver is controlled through the
 | 
			
		||||
configure options <code>--enable-xlib-glx</code>, <code>--enable-osmesa</code>,
 | 
			
		||||
and <code>--enable-dri</code>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3 id="xlib">Xlib</h3><p>
 | 
			
		||||
It uses Xlib as a software renderer to do all rendering. It corresponds
 | 
			
		||||
to the option <code>--enable-xlib-glx</code>. The libX11 and libXext
 | 
			
		||||
libraries, as well as the X11 development headers, will be need to
 | 
			
		||||
support the Xlib driver.
 | 
			
		||||
 | 
			
		||||
<h3 id="dri">DRI</h3><p>This mode uses the DRI hardware drivers for
 | 
			
		||||
accelerated OpenGL rendering. Enable the DRI drivers with the option
 | 
			
		||||
<code>--enable-dri</code>. See the <a href="install.html">basic
 | 
			
		||||
installation instructions</a> for details on prerequisites for the DRI
 | 
			
		||||
drivers.
 | 
			
		||||
 | 
			
		||||
<!-- DRI specific options -->
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>--with-dri-driverdir=DIR</code>
 | 
			
		||||
<dd><p> This option specifies the
 | 
			
		||||
location the DRI drivers will be installed to and the location libGL
 | 
			
		||||
will search for DRI drivers. The default is <code>${libdir}/dri</code>.
 | 
			
		||||
<dt><code>--with-dri-drivers=DRIVER,DRIVER,...</code>
 | 
			
		||||
<dd><p> This option
 | 
			
		||||
allows a specific set of DRI drivers to be built. For example,
 | 
			
		||||
<code>--with-dri-drivers="swrast,i965,radeon,nouveau"</code>. By
 | 
			
		||||
default, the drivers will be chosen depending on the target platform.
 | 
			
		||||
See the directory <code>src/mesa/drivers/dri</code> in the source tree
 | 
			
		||||
for available drivers. Beware that the swrast DRI driver is used by both
 | 
			
		||||
libGL and the X.Org xserver GLX module to do software rendering, so you
 | 
			
		||||
may run into problems if it is not available.
 | 
			
		||||
<!-- This explanation might be totally bogus. Kristian? -->
 | 
			
		||||
<dt><code>--disable-driglx-direct</code>
 | 
			
		||||
<dd><p> Disable direct rendering in
 | 
			
		||||
GLX. Normally, direct hardware rendering through the DRI drivers and
 | 
			
		||||
indirect software rendering are enabled in GLX. This option disables
 | 
			
		||||
direct rendering entirely. It can be useful on architectures where
 | 
			
		||||
kernel DRM modules are not available.
 | 
			
		||||
<dt><code>--enable-glx-tls</code> <dd><p>
 | 
			
		||||
Enable Thread Local Storage (TLS) in
 | 
			
		||||
GLX.
 | 
			
		||||
<dt><code>--with-expat=DIR</code> <dd> The DRI-enabled libGL uses expat to
 | 
			
		||||
parse the DRI configuration files in <code>/etc/drirc</code> and
 | 
			
		||||
<code>~/.drirc</code>. This option allows a specific expat installation
 | 
			
		||||
to be used. For example, <code>--with-expat=/usr/local</code> will
 | 
			
		||||
search for expat headers and libraries in <code>/usr/local/include</code>
 | 
			
		||||
and <code>/usr/local/lib</code>, respectively.
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
<h3 id="osmesa">OSMesa </h3><p> No libGL is built in this
 | 
			
		||||
mode. Instead, the driver code is built into the Off-Screen Mesa
 | 
			
		||||
(OSMesa) library. See the <a href="osmesa.html">Off-Screen Rendering</a>
 | 
			
		||||
page for more details.  It corresponds to the option
 | 
			
		||||
<code>--enable-osmesa</code>.
 | 
			
		||||
 | 
			
		||||
<!-- OSMesa specific options -->
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>--with-osmesa-bits=BITS</code>
 | 
			
		||||
<dd><p> This option allows the size
 | 
			
		||||
of the color channel in bits to be specified. By default, an 8-bit
 | 
			
		||||
channel will be used, and the driver will be named libOSMesa. Other
 | 
			
		||||
options are 16- and 32-bit color channels, which will add the bit size
 | 
			
		||||
to the library name. For example, <code>--with-osmesa-bits=16</code>
 | 
			
		||||
will create the libOSMesa16 library with a 16-bit color channel.
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="library">3. Library Options</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The configure script provides more fine grained control over the GL
 | 
			
		||||
libraries that will be built. More details on the specific GL libraries
 | 
			
		||||
can be found in the <a href="install.html">basic installation
 | 
			
		||||
instructions</a>.
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -2,23 +2,23 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Report a Bug</title>
 | 
			
		||||
  <title>Mesa Bug Reporting</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Report a Bug</h1>
 | 
			
		||||
<h1>Bug Database</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The Mesa bug database is hosted on
 | 
			
		||||
<a href="https://freedesktop.org">freedesktop.org</a>.
 | 
			
		||||
<a href="http://freedesktop.org">freedesktop.org</a>.
 | 
			
		||||
The old bug database on SourceForge is no longer used.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
@@ -37,14 +37,11 @@ Please follow these bug reporting guidelines:
 | 
			
		||||
the problem.
 | 
			
		||||
<li>Check if your bug is already reported in the database.
 | 
			
		||||
<li>Monitor your bug report for requests for additional information, etc.
 | 
			
		||||
<li>Attach the output of running glxinfo or wglinfo.
 | 
			
		||||
This will tell us the Mesa version, which device driver you're using, etc.
 | 
			
		||||
<li>If you're reporting a crash, try to use your debugger (gdb) to get a stack
 | 
			
		||||
trace. Also, recompile Mesa in debug mode to get more detailed information.
 | 
			
		||||
<li>Describe in detail how to reproduce the bug, especially with games
 | 
			
		||||
and applications that the Mesa developers might not be familiar with.
 | 
			
		||||
<li>Provide an <a href="https://github.com/apitrace/apitrace">apitrace</a>
 | 
			
		||||
or simple GLUT-based test program if possible.
 | 
			
		||||
<li>Provide a simple GLUT-based test program if possible
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,143 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Coding Style</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Coding Style</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa is over 20 years old and the coding style has evolved over time.
 | 
			
		||||
Some old parts use a style that's a bit out of date.
 | 
			
		||||
 | 
			
		||||
Different sections of mesa can use different coding style as set in the local
 | 
			
		||||
EditorConfig (.editorconfig) and/or Emacs (.dir-locals.el) file.
 | 
			
		||||
 | 
			
		||||
Alternatively the following is applicable.
 | 
			
		||||
 | 
			
		||||
If the guidelines below don't cover something, try following the format of
 | 
			
		||||
existing, neighboring code.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Basic formatting guidelines
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>3-space indentation, no tabs.
 | 
			
		||||
<li>Limit lines to 78 or fewer characters.  The idea is to prevent line
 | 
			
		||||
wrapping in 80-column editors and terminals.  There are exceptions, such
 | 
			
		||||
as if you're defining a large, static table of information.
 | 
			
		||||
<li>Opening braces go on the same line as the if/for/while statement.
 | 
			
		||||
For example:
 | 
			
		||||
<pre>
 | 
			
		||||
   if (condition) {
 | 
			
		||||
      foo;
 | 
			
		||||
   } else {
 | 
			
		||||
      bar;
 | 
			
		||||
   }
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<li>Put a space before/after operators.  For example, <code>a = b + c;</code>
 | 
			
		||||
and not <code>a=b+c;</code>
 | 
			
		||||
 | 
			
		||||
<li>This GNU indent command generally does the right thing for formatting:
 | 
			
		||||
<pre>
 | 
			
		||||
   indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<li>
 | 
			
		||||
<p>Use comments wherever you think it would be helpful for other developers.
 | 
			
		||||
Several specific cases and style examples follow.  Note that we roughly
 | 
			
		||||
follow <a href="http://www.doxygen.nl">Doxygen</a> conventions.
 | 
			
		||||
</p>
 | 
			
		||||
Single-line comments:
 | 
			
		||||
<pre>
 | 
			
		||||
   /* null-out pointer to prevent dangling reference below */
 | 
			
		||||
   bufferObj = NULL;
 | 
			
		||||
</pre>
 | 
			
		||||
Or,
 | 
			
		||||
<pre>
 | 
			
		||||
   bufferObj = NULL;  /* prevent dangling reference below */
 | 
			
		||||
</pre>
 | 
			
		||||
Multi-line comment:
 | 
			
		||||
<pre>
 | 
			
		||||
   /* If this is a new buffer object id, or one which was generated but
 | 
			
		||||
    * never used before, allocate a buffer object now.
 | 
			
		||||
    */
 | 
			
		||||
</pre>
 | 
			
		||||
We try to quote the OpenGL specification where prudent:
 | 
			
		||||
<pre>
 | 
			
		||||
   /* Page 38 of the PDF of the OpenGL ES 3.0 spec says:
 | 
			
		||||
    *
 | 
			
		||||
    *     "An INVALID_OPERATION error is generated for any of the following
 | 
			
		||||
    *     conditions:
 | 
			
		||||
    *
 | 
			
		||||
    *     * <length> is zero."
 | 
			
		||||
    *
 | 
			
		||||
    * Additionally, page 94 of the PDF of the OpenGL 4.5 core spec
 | 
			
		||||
    * (30.10.2014) also says this, so it's no longer allowed for desktop GL,
 | 
			
		||||
    * either.
 | 
			
		||||
    */
 | 
			
		||||
</pre>
 | 
			
		||||
Function comment example:
 | 
			
		||||
<pre>
 | 
			
		||||
   /**
 | 
			
		||||
    * Create and initialize a new buffer object.  Called via the
 | 
			
		||||
    * ctx->Driver.CreateObject() driver callback function.
 | 
			
		||||
    * \param  name  integer name of the object
 | 
			
		||||
    * \param  type  one of GL_FOO, GL_BAR, etc.
 | 
			
		||||
    * \return  pointer to new object or NULL if error
 | 
			
		||||
    */
 | 
			
		||||
   struct gl_object *
 | 
			
		||||
   _mesa_create_object(GLuint name, GLenum type)
 | 
			
		||||
   {
 | 
			
		||||
      /* function body */
 | 
			
		||||
   }
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<li>Put the function return type and qualifiers on one line and the function
 | 
			
		||||
name and parameters on the next, as seen above.  This makes it easy to use
 | 
			
		||||
<code>grep ^function_name dir/*</code> to find function definitions.  Also,
 | 
			
		||||
the opening brace goes on the next line by itself (see above.)
 | 
			
		||||
 | 
			
		||||
<li>Function names follow various conventions depending on the type of function:
 | 
			
		||||
<pre>
 | 
			
		||||
   glFooBar()       - a public GL entry point (in glapi_dispatch.c)
 | 
			
		||||
   _mesa_FooBar()   - the internal immediate mode function
 | 
			
		||||
   save_FooBar()    - retained mode (display list) function in dlist.c
 | 
			
		||||
   foo_bar()        - a static (private) function
 | 
			
		||||
   _mesa_foo_bar()  - an internal non-static Mesa function
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<li>Constants, macros and enum names are <code>ALL_UPPERCASE</code>, with _
 | 
			
		||||
between words.
 | 
			
		||||
<li>Mesa usually uses camel case for local variables (Ex:
 | 
			
		||||
<code>localVarname</code>) while gallium typically uses underscores (Ex:
 | 
			
		||||
<code>local_var_name</code>).
 | 
			
		||||
<li>Global variables are almost never used because Mesa should be thread-safe.
 | 
			
		||||
 | 
			
		||||
<li>Booleans.  Places that are not directly visible to the GL API
 | 
			
		||||
should prefer the use of <code>bool</code>, <code>true</code>, and
 | 
			
		||||
<code>false</code> over <code>GLboolean</code>, <code>GL_TRUE</code>, and
 | 
			
		||||
<code>GL_FALSE</code>.  In C code, this may mean that
 | 
			
		||||
<code>#include <stdbool.h></code> needs to be added.  The
 | 
			
		||||
<code>try_emit_*</code> methods in <code>src/mesa/program/ir_to_mesa.cpp</code>
 | 
			
		||||
and <code>src/mesa/state_tracker/st_glsl_to_tgsi.cpp</code> can serve as
 | 
			
		||||
examples.
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -2,24 +2,24 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Conformance Testing</title>
 | 
			
		||||
  <title>Conformance</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Conformance Testing</h1>
 | 
			
		||||
<h1>Conformance</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The SGI OpenGL conformance tests verify correct operation of OpenGL
 | 
			
		||||
implementations.  I, Brian Paul, have been given a copy of the tests
 | 
			
		||||
for testing Mesa.  The tests are not publicly available.
 | 
			
		||||
for testing Mesa.  The tests are not publically available.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
This file has the latest results of testing Mesa with the OpenGL 1.2
 | 
			
		||||
 
 | 
			
		||||
@@ -12,10 +12,6 @@
 | 
			
		||||
      background-color: #cccccc;
 | 
			
		||||
      color: black;
 | 
			
		||||
    }
 | 
			
		||||
    h2 {
 | 
			
		||||
      font-size: inherit;
 | 
			
		||||
      font-weight: bold;
 | 
			
		||||
    }
 | 
			
		||||
    a:link {
 | 
			
		||||
      color: #000;
 | 
			
		||||
    }
 | 
			
		||||
@@ -27,82 +23,83 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<h2>Documentation</h2>
 | 
			
		||||
<b>Documentation</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="intro.html" target="_parent">Introduction</a>
 | 
			
		||||
<li><a href="index.html" target="_parent">News</a>
 | 
			
		||||
<li><a href="developers.html" target="_parent">Developers</a>
 | 
			
		||||
<li><a href="systems.html" target="_parent">Platforms and Drivers</a>
 | 
			
		||||
<li><a href="license.html" target="_parent">License and Copyright</a>
 | 
			
		||||
<li><a href="faq.html" target="_parent">Frequently Asked Questions</a>
 | 
			
		||||
<li><a href="license.html" target="_parent">License & Copyright</a>
 | 
			
		||||
<li><a href="faq.html" target="_parent">FAQ</a>
 | 
			
		||||
<li><a href="relnotes.html" target="_parent">Release Notes</a>
 | 
			
		||||
<li><a href="thanks.html" target="_parent">Acknowledgements</a>
 | 
			
		||||
<li><a href="conform.html" target="_parent">Conformance Testing</a>
 | 
			
		||||
<li>more docs below...
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Download and Install</h2>
 | 
			
		||||
<b>Download / Install</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="download.html" target="_parent">Downloading and Unpacking</a>
 | 
			
		||||
<li><a href="install.html" target="_parent">Compiling and Installing</a>
 | 
			
		||||
<li><a href="download.html" target="_parent">Downloading / Unpacking</a>
 | 
			
		||||
<li><a href="install.html" target="_parent">Compiling / Installing</a>
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li><a href="meson.html" target="_parent">Meson</a></li>
 | 
			
		||||
    <li><a href="autoconf.html" target="_parent">Autoconf</a></li>
 | 
			
		||||
  </ul>
 | 
			
		||||
</li>
 | 
			
		||||
<li><a href="precompiled.html" target="_parent">Precompiled Libraries</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Need help?</h2>
 | 
			
		||||
<b>Resources</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="lists.html" target="_parent">Mailing Lists</a>
 | 
			
		||||
<li><a href="bugs.html" target="_parent">Report a bug</a>
 | 
			
		||||
<li><a href="bugs.html" target="_parent">Bug Database</a>
 | 
			
		||||
<li><a href="webmaster.html" target="_parent">Webmaster</a>
 | 
			
		||||
<li><a href="https://dri.freedesktop.org/" target="_parent">Mesa/DRI Wiki</a>
 | 
			
		||||
<li><a href="http://dri.freedesktop.org/" target="_parent">Mesa/DRI Wiki</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>User Topics</h2>
 | 
			
		||||
<b>User Topics</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="shading.html" target="_parent">Shading Language</a>
 | 
			
		||||
<li><a href="egl.html" target="_parent">EGL</a>
 | 
			
		||||
<li><a href="opengles.html" target="_parent">OpenGL ES</a>
 | 
			
		||||
<li><a href="openvg.html" target="_parent">OpenVG / Vega</a>
 | 
			
		||||
<li><a href="envvars.html" target="_parent">Environment Variables</a>
 | 
			
		||||
<li><a href="osmesa.html" target="_parent">Off-screen Rendering</a>
 | 
			
		||||
<li><a href="osmesa.html" target="_parent">Off-Screen Rendering</a>
 | 
			
		||||
<li><a href="debugging.html" target="_parent">Debugging Tips</a>
 | 
			
		||||
<li><a href="perf.html" target="_parent">Performance Tips</a>
 | 
			
		||||
<li><a href="extensions.html" target="_parent">Mesa Extensions</a>
 | 
			
		||||
<li><a href="llvmpipe.html" target="_parent">Gallium LLVMpipe Driver</a>
 | 
			
		||||
<li><a href="vmware-guest.html" target="_parent">VMware SVGA3D Guest Driver</a>
 | 
			
		||||
<li><a href="postprocess.html" target="_parent">Gallium Post-processing</a>
 | 
			
		||||
<li><a href="mangling.html" target="_parent">Function Name Mangling</a>
 | 
			
		||||
<li><a href="llvmpipe.html" target="_parent">Gallium llvmpipe driver</a>
 | 
			
		||||
<li><a href="vmware-guest.html" target="_parent">VMware SVGA3D guest driver</a>
 | 
			
		||||
<li><a href="postprocess.html" target="_parent">Gallium post-processing</a>
 | 
			
		||||
<li><a href="application-issues.html" target="_parent">Application Issues</a>
 | 
			
		||||
<li><a href="viewperf.html" target="_parent">Viewperf Issues</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Developer Topics</h2>
 | 
			
		||||
<b>Developer Topics</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="repository.html" target="_parent">Source Code Repository</a>
 | 
			
		||||
<li><a href="sourcetree.html" target="_parent">Source Code Tree</a>
 | 
			
		||||
<li><a href="utilities.html" target="_parent">Utilities</a>
 | 
			
		||||
<li><a href="helpwanted.html" target="_parent">Help Wanted</a>
 | 
			
		||||
<li><a href="devinfo.html" target="_parent">Development Notes</a>
 | 
			
		||||
<li><a href="codingstyle.html" target="_parent">Coding Style</a>
 | 
			
		||||
<li><a href="submittingpatches.html" target="_parent">Submitting Patches</a>
 | 
			
		||||
<li><a href="releasing.html" target="_parent">Releasing Process</a>
 | 
			
		||||
<li><a href="release-calendar.html" target="_parent">Release Calendar</a>
 | 
			
		||||
<li><a href="sourcedocs.html" target="_parent">Source Documentation</a>
 | 
			
		||||
<li><a href="dispatch.html" target="_parent">GL Dispatch</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Links</h2>
 | 
			
		||||
<b>Links</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="https://www.opengl.org" target="_parent">OpenGL Website</a>
 | 
			
		||||
<li><a href="https://dri.freedesktop.org" target="_parent">DRI Website</a>
 | 
			
		||||
<li><a href="https://www.freedesktop.org" target="_parent">freedesktop.org</a>
 | 
			
		||||
<li><a href="https://planet.freedesktop.org" target="_parent">Developer Blogs</a>
 | 
			
		||||
<li><a href="http://www.opengl.org" target="_parent">OpenGL website</a>
 | 
			
		||||
<li><a href="http://dri.freedesktop.org" target="_parent">DRI website</a>
 | 
			
		||||
<li><a href="http://www.freedesktop.org" target="_parent">freedesktop.org</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Hosted by:</h2>
 | 
			
		||||
<dl>
 | 
			
		||||
<dd><a href="https://www.freedesktop.org" target="_parent">freedesktop.org</a>
 | 
			
		||||
</dl>
 | 
			
		||||
<b>Hosted by:</b>
 | 
			
		||||
<br>
 | 
			
		||||
<blockquote>
 | 
			
		||||
<a href="http://sourceforge.net"
 | 
			
		||||
target="_parent"><img src="http://sourceforge.net/sflogo.php?group_id=3&type=1"
 | 
			
		||||
width="88" height="31" align="bottom" alt="Sourceforge.net" border="0"></a>
 | 
			
		||||
</blockquote>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -20,22 +20,26 @@
 | 
			
		||||
   Normally Mesa (and OpenGL) records but does not notify the user of
 | 
			
		||||
   errors.  It is up to the application to call
 | 
			
		||||
   <code>glGetError</code> to check for errors.  Mesa supports an
 | 
			
		||||
   environment variable, <code>MESA_DEBUG</code>, to help with debugging.  If
 | 
			
		||||
   <code>MESA_DEBUG</code> is defined, a message will be printed to stdout
 | 
			
		||||
   whenever an error occurs.
 | 
			
		||||
   environment variable, MESA_DEBUG, to help with debugging.  If
 | 
			
		||||
   MESA_DEBUG is defined, a message will be printed to stdout whenever
 | 
			
		||||
   an error occurs.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
   More extensive error checking is done in DEBUG builds
 | 
			
		||||
   (<code>--buildtype debug</code> for meson, <code>build=debug</code> for scons).
 | 
			
		||||
   More extensive error checking is done when Mesa is compiled with the
 | 
			
		||||
   DEBUG symbol defined.  You'll have to edit the Make-config file and
 | 
			
		||||
   add -DDEBUG to the CFLAGS line for your system configuration.  You may
 | 
			
		||||
   also want to replace any optimization flags with the -g flag so you can
 | 
			
		||||
   use your debugger.  After you've edited Make-config type 'make clean'
 | 
			
		||||
   before recompiling.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
   In your debugger you can set a breakpoint in <code>_mesa_error()</code> to trap
 | 
			
		||||
   Mesa errors.
 | 
			
		||||
   In your debugger you can set a breakpoint in _mesa_error() to trap Mesa
 | 
			
		||||
   errors.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
   There is a display list printing/debugging facility.  See the end of
 | 
			
		||||
   <code>src/dlist.c</code> for details.
 | 
			
		||||
   src/dlist.c for details.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
Both professional and volunteer developers contribute to Mesa.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
<a href="https://www.vmware.com/">VMware</a>
 | 
			
		||||
<a href="http://www.vmware.com/">VMware</a>
 | 
			
		||||
employs several of the main Mesa developers including Brian Paul
 | 
			
		||||
and Keith Whitwell.
 | 
			
		||||
</p>
 | 
			
		||||
@@ -38,13 +38,13 @@ including:
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Other companies including
 | 
			
		||||
<a href="https://01.org/linuxgraphics">Intel</a>
 | 
			
		||||
<a href="http://www.intellinuxgraphics.org/index.html">Intel</a>
 | 
			
		||||
and RedHat also actively contribute to the project.
 | 
			
		||||
Intel has recently contributed the new GLSL compiler in Mesa 7.9.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="https://www.lunarg.com/">LunarG</a> can be contacted
 | 
			
		||||
<a href="http://www.lunarg.com/">LunarG</a> can be contacted
 | 
			
		||||
for custom Mesa / 3D graphics development.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -17,20 +17,15 @@
 | 
			
		||||
<h1>Development Notes</h1>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="#extensions">Adding Extensions</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2 id="extensions">Adding Extensions</h2>
 | 
			
		||||
<h2>Adding Extentions</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To add a new GL extension to Mesa you have to do at least the following.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>
 | 
			
		||||
   If <code>glext.h</code> doesn't define the extension, edit
 | 
			
		||||
   <code>include/GL/gl.h</code> and add code like this:
 | 
			
		||||
   If glext.h doesn't define the extension, edit include/GL/gl.h and add
 | 
			
		||||
   code like this:
 | 
			
		||||
   <pre>
 | 
			
		||||
     #ifndef GL_EXT_the_extension_name
 | 
			
		||||
     #define GL_EXT_the_extension_name 1
 | 
			
		||||
@@ -41,18 +36,16 @@ To add a new GL extension to Mesa you have to do at least the following.
 | 
			
		||||
   </pre>
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
   In the <code>src/mapi/glapi/gen/</code> directory, add the new extension
 | 
			
		||||
   functions and enums to the <code>gl_API.xml</code> file.
 | 
			
		||||
   In the src/mapi/glapi/gen/ directory, add the new extension functions and
 | 
			
		||||
   enums to the gl_API.xml file.
 | 
			
		||||
   Then, a bunch of source files must be regenerated by executing the
 | 
			
		||||
   corresponding Python scripts.
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
   Add a new entry to the <code>gl_extensions</code> struct in
 | 
			
		||||
   <code>mtypes.h</code> if the extension requires driver capabilities not
 | 
			
		||||
   already exposed by another extension.
 | 
			
		||||
   Add a new entry to the <code>gl_extensions</code> struct in mtypes.h
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
   Add a new entry to the <code>src/mesa/main/extensions_table.h</code> file.
 | 
			
		||||
   Update the <code>extensions.c</code> file.
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
   From this point, the best way to proceed is to find another extension,
 | 
			
		||||
@@ -60,25 +53,242 @@ To add a new GL extension to Mesa you have to do at least the following.
 | 
			
		||||
   as an example.
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
   If the new extension adds new GL state, the functions in
 | 
			
		||||
   <code>get.c</code>, <code>enable.c</code> and <code>attrib.c</code>
 | 
			
		||||
   will most likely require new code.
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
   To determine if the new extension is active in the current context,
 | 
			
		||||
   use the auto-generated <code>_mesa_has_##name_str()</code> function
 | 
			
		||||
   defined in <code>src/mesa/main/extensions.h</code>.
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
   The dispatch tests <code>check_table.cpp</code> and
 | 
			
		||||
   <code>dispatch_sanity.cpp</code> should be updated with details about
 | 
			
		||||
   the new extensions functions. These tests are run using
 | 
			
		||||
   <code>meson test</code>.
 | 
			
		||||
   If the new extension adds new GL state, the functions in get.c, enable.c
 | 
			
		||||
   and attrib.c will most likely require new code.
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Coding Style</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa's code style has changed over the years.  Here's the latest.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Comment your code!  It's extremely important that open-source code be
 | 
			
		||||
well documented.  Also, strive to write clean, easily understandable code.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
3-space indentation
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
If you use tabs, set them to 8 columns
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Line width: the preferred width to fill comments and code in Mesa is 78
 | 
			
		||||
columns.  Exceptions are sometimes made for clarity (e.g. tabular data is
 | 
			
		||||
sometimes filled to a much larger width so that extraneous carriage returns
 | 
			
		||||
don't obscure the table).
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Brace example:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	if (condition) {
 | 
			
		||||
	   foo;
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
	   bar;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch (condition) {
 | 
			
		||||
	case 0:
 | 
			
		||||
	   foo();
 | 
			
		||||
	   break;
 | 
			
		||||
 | 
			
		||||
	case 1: {
 | 
			
		||||
	   ...
 | 
			
		||||
	   break;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	default:
 | 
			
		||||
	   ...
 | 
			
		||||
	   break;
 | 
			
		||||
	}
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Here's the GNU indent command which will best approximate my preferred style:
 | 
			
		||||
(Note that it won't format switch statements in the preferred way)
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Local variable name example:  localVarName (no underscores)
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Constants and macros are ALL_UPPERCASE, with _ between words
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Global variables are not allowed.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Function name examples:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	glFooBar()       - a public GL entry point (in glapi_dispatch.c)
 | 
			
		||||
	_mesa_FooBar()   - the internal immediate mode function
 | 
			
		||||
	save_FooBar()    - retained mode (display list) function in dlist.c
 | 
			
		||||
	foo_bar()        - a static (private) function
 | 
			
		||||
	_mesa_foo_bar()  - an internal non-static Mesa function
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Places that are not directly visible to the GL API should prefer the use
 | 
			
		||||
of <tt>bool</tt>, <tt>true</tt>, and
 | 
			
		||||
<tt>false</tt> over <tt>GLboolean</tt>, <tt>GL_TRUE</tt>, and
 | 
			
		||||
<tt>GL_FALSE</tt>.  In C code, this may mean that
 | 
			
		||||
<tt>#include <stdbool.h></tt> needs to be added.  The
 | 
			
		||||
<tt>try_emit_</tt>* methods in src/mesa/program/ir_to_mesa.cpp and
 | 
			
		||||
src/mesa/state_tracker/st_glsl_to_tgsi.cpp can serve as examples.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>Submitting patches</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
You should always run the Mesa Testsuite before submitting patches.
 | 
			
		||||
The Testsuite can be run using the 'make check' command. All tests
 | 
			
		||||
must pass before patches will be accepted, this may mean you have
 | 
			
		||||
to update the tests themselves.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Patches should be sent to the Mesa mailing list for review.
 | 
			
		||||
When submitting a patch make sure to use git send-email rather than attaching
 | 
			
		||||
patches to emails. Sending patches as attachments prevents people from being
 | 
			
		||||
able to provide in-line review comments.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
When submitting follow-up patches you can use --in-reply-to to make v2, v3,
 | 
			
		||||
etc patches show up as replies to the originals. This usually works well
 | 
			
		||||
when you're sending out updates to individual patches (as opposed to
 | 
			
		||||
re-sending the whole series). Using --in-reply-to makes
 | 
			
		||||
it harder for reviewers to accidentally review old patches.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>Marking a commit as a candidate for a stable branch</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
If you want a commit to be applied to a stable branch,
 | 
			
		||||
you should add an appropriate note to the commit message.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Here are some examples of such a note:
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>NOTE: This is a candidate for the 9.0 branch.</li>
 | 
			
		||||
  <li>NOTE: This is a candidate for the 8.0 and 9.0 branches.</li>
 | 
			
		||||
  <li>NOTE: This is a candidate for the stable branches.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Cherry-picking candidates for a stable branch</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Please use <code>git cherry-pick -x <commit></code> for cherry-picking a commit
 | 
			
		||||
from master to a stable branch.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>Making a New Mesa Release</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
These are the instructions for making a new Mesa release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>Get latest source files</h3>
 | 
			
		||||
<p>
 | 
			
		||||
Use git to get the latest Mesa files from the git repository, from whatever
 | 
			
		||||
branch is relevant.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Verify and update version info in VERSION</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Create a docs/relnotes/x.y.z.html file.
 | 
			
		||||
The bin/bugzilla_mesa.sh and bin/shortlog_mesa.sh scripts can be used to
 | 
			
		||||
create the HTML-formatted lists of bugfixes and changes to include in the file.
 | 
			
		||||
Link the new docs/relnotes/x.y.z.html file into the main <a href="relnotes.html">relnotes.html</a> file.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Update <a href="index.html">docs/index.html</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Tag the files with the release name (in the form <b>mesa-x.y</b>)
 | 
			
		||||
with: <code>git tag -s mesa-x.y -m "Mesa x.y Release"</code>
 | 
			
		||||
Then: <code>git push origin mesa-x.y</code>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Make the tarballs</h3>
 | 
			
		||||
<p>
 | 
			
		||||
Make the distribution files.  From inside the Mesa directory:
 | 
			
		||||
<pre>
 | 
			
		||||
	./autogen.sh
 | 
			
		||||
	make tarballs
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
After the tarballs are created, the md5 checksums for the files will
 | 
			
		||||
be computed.
 | 
			
		||||
Add them to the docs/relnotes/x.y.html file.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Copy the distribution files to a temporary directory, unpack them,
 | 
			
		||||
compile everything, and run some demos to be sure everything works.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>Update the website and announce the release</h3>
 | 
			
		||||
<p>
 | 
			
		||||
Make a new directory for the release on annarchy.freedesktop.org with:
 | 
			
		||||
<br>
 | 
			
		||||
<code>
 | 
			
		||||
mkdir /srv/ftp.freedesktop.org/pub/mesa/x.y
 | 
			
		||||
</code>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Basically, to upload the tarball files with:
 | 
			
		||||
<br>
 | 
			
		||||
<code>
 | 
			
		||||
rsync -avP -e ssh MesaLib-x.y.* USERNAME@annarchy.freedesktop.org:/srv/ftp.freedesktop.org/pub/mesa/x.y/
 | 
			
		||||
</code>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Update the web site by copying the docs/ directory's files to 
 | 
			
		||||
/home/users/b/br/brianp/mesa-www/htdocs/ with:
 | 
			
		||||
<br>
 | 
			
		||||
<code>
 | 
			
		||||
sftp USERNAME,mesa3d@web.sourceforge.net
 | 
			
		||||
</code>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Make an announcement on the mailing lists:
 | 
			
		||||
 | 
			
		||||
<em>mesa-dev@lists.freedesktop.org</em>,
 | 
			
		||||
<em>mesa-users@lists.freedesktop.org</em>
 | 
			
		||||
and
 | 
			
		||||
<em>mesa-announce@lists.freedesktop.org</em>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,19 +2,19 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>GL Dispatch</title>
 | 
			
		||||
  <title>GL Dispatch in Mesa</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>GL Dispatch</h1>
 | 
			
		||||
<h1>GL Dispatch in Mesa</h1>
 | 
			
		||||
 | 
			
		||||
<p>Several factors combine to make efficient dispatch of OpenGL functions
 | 
			
		||||
fairly complicated.  This document attempts to explain some of the issues
 | 
			
		||||
@@ -25,33 +25,33 @@ href="#overview">overview of Mesa's implementation</a>.</p>
 | 
			
		||||
<h2>1. Complexity of GL Dispatch</h2>
 | 
			
		||||
 | 
			
		||||
<p>Every GL application has at least one object called a GL <em>context</em>.
 | 
			
		||||
This object, which is an implicit parameter to every GL function, stores all
 | 
			
		||||
This object, which is an implicit parameter to ever GL function, stores all
 | 
			
		||||
of the GL related state for the application.  Every texture, every buffer
 | 
			
		||||
object, every enable, and much, much more is stored in the context.  Since
 | 
			
		||||
an application can have more than one context, the context to be used is
 | 
			
		||||
selected by a window-system dependent function such as
 | 
			
		||||
<code>glXMakeContextCurrent</code>.</p>
 | 
			
		||||
<tt>glXMakeContextCurrent</tt>.</p>
 | 
			
		||||
 | 
			
		||||
<p>In environments that implement OpenGL with X-Windows using GLX, every GL
 | 
			
		||||
function, including the pointers returned by <code>glXGetProcAddress</code>, are
 | 
			
		||||
function, including the pointers returned by <tt>glXGetProcAddress</tt>, are
 | 
			
		||||
<em>context independent</em>.  This means that no matter what context is
 | 
			
		||||
currently active, the same <code>glVertex3fv</code> function is used.</p>
 | 
			
		||||
currently active, the same <tt>glVertex3fv</tt> function is used.</p>
 | 
			
		||||
 | 
			
		||||
<p>This creates the first bit of dispatch complexity.  An application can
 | 
			
		||||
have two GL contexts.  One context is a direct rendering context where
 | 
			
		||||
function calls are routed directly to a driver loaded within the
 | 
			
		||||
application's address space.  The other context is an indirect rendering
 | 
			
		||||
context where function calls are converted to GLX protocol and sent to a
 | 
			
		||||
server.  The same <code>glVertex3fv</code> has to do the right thing depending
 | 
			
		||||
server.  The same <tt>glVertex3fv</tt> has to do the right thing depending
 | 
			
		||||
on which context is current.</p>
 | 
			
		||||
 | 
			
		||||
<p>Highly optimized drivers or GLX protocol implementations may want to
 | 
			
		||||
change the behavior of GL functions depending on current state.  For
 | 
			
		||||
example, <code>glFogCoordf</code> may operate differently depending on whether
 | 
			
		||||
example, <tt>glFogCoordf</tt> may operate differently depending on whether
 | 
			
		||||
or not fog is enabled.</p>
 | 
			
		||||
 | 
			
		||||
<p>In multi-threaded environments, it is possible for each thread to have a
 | 
			
		||||
different GL context current.  This means that poor old <code>glVertex3fv</code>
 | 
			
		||||
differnt GL context current.  This means that poor old <tt>glVertex3fv</tt>
 | 
			
		||||
has to know which GL context is current in the thread where it is being
 | 
			
		||||
called.</p>
 | 
			
		||||
 | 
			
		||||
@@ -64,18 +64,18 @@ dispatch table stores pointers to functions that actually implement
 | 
			
		||||
specific GL functions.  Each time a new context is made current in a thread,
 | 
			
		||||
these pointers a updated.</p>
 | 
			
		||||
 | 
			
		||||
<p>The implementation of functions such as <code>glVertex3fv</code> becomes
 | 
			
		||||
<p>The implementation of functions such as <tt>glVertex3fv</tt> becomes
 | 
			
		||||
conceptually simple:</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Fetch the current dispatch table pointer.</li>
 | 
			
		||||
<li>Fetch the pointer to the real <code>glVertex3fv</code> function from the
 | 
			
		||||
<li>Fetch the pointer to the real <tt>glVertex3fv</tt> function from the
 | 
			
		||||
table.</li>
 | 
			
		||||
<li>Call the real function.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>This can be implemented in just a few lines of C code.  The file
 | 
			
		||||
<code>src/mesa/glapi/glapitemp.h</code> contains code very similar to this.</p>
 | 
			
		||||
<tt>src/mesa/glapi/glapitemp.h</tt> contains code very similar to this.</p>
 | 
			
		||||
 | 
			
		||||
<blockquote>
 | 
			
		||||
<table border="1">
 | 
			
		||||
@@ -93,9 +93,9 @@ void glVertex3f(GLfloat x, GLfloat y, GLfloat z)
 | 
			
		||||
overhead that it adds to every GL function call.</p>
 | 
			
		||||
 | 
			
		||||
<p>In a multithreaded environment, a naive implementation of
 | 
			
		||||
<code>GET_DISPATCH</code> involves a call to <code>pthread_getspecific</code> or a
 | 
			
		||||
<tt>GET_DISPATCH</tt> involves a call to <tt>pthread_getspecific</tt> or a
 | 
			
		||||
similar function.  Mesa provides a wrapper function called
 | 
			
		||||
<code>_glapi_get_dispatch</code> that is used by default.</p>
 | 
			
		||||
<tt>_glapi_get_dispatch</tt> that is used by default.</p>
 | 
			
		||||
 | 
			
		||||
<h2>3. Optimizations</h2>
 | 
			
		||||
 | 
			
		||||
@@ -109,7 +109,7 @@ each can or cannot be used are listed.</p>
 | 
			
		||||
<p>The vast majority of OpenGL applications use the API in a single threaded
 | 
			
		||||
manner.  That is, the application has only one thread that makes calls into
 | 
			
		||||
the GL.  In these cases, not only do the calls to
 | 
			
		||||
<code>pthread_getspecific</code> hurt performance, but they are completely
 | 
			
		||||
<tt>pthread_getspecific</tt> hurt performance, but they are completely
 | 
			
		||||
unnecessary!  It is possible to detect this common case and avoid these
 | 
			
		||||
calls.</p>
 | 
			
		||||
 | 
			
		||||
@@ -118,15 +118,15 @@ of the executing thread.  If the same thread ID is always seen, Mesa knows
 | 
			
		||||
that the application is, from OpenGL's point of view, single threaded.</p>
 | 
			
		||||
 | 
			
		||||
<p>As long as an application is single threaded, Mesa stores a pointer to
 | 
			
		||||
the dispatch table in a global variable called <code>_glapi_Dispatch</code>.
 | 
			
		||||
the dispatch table in a global variable called <tt>_glapi_Dispatch</tt>.
 | 
			
		||||
The pointer is also stored in a per-thread location via
 | 
			
		||||
<code>pthread_setspecific</code>.  When Mesa detects that an application has
 | 
			
		||||
become multithreaded, <code>NULL</code> is stored in <code>_glapi_Dispatch</code>.</p>
 | 
			
		||||
<tt>pthread_setspecific</tt>.  When Mesa detects that an application has
 | 
			
		||||
become multithreaded, <tt>NULL</tt> is stored in <tt>_glapi_Dispatch</tt>.</p>
 | 
			
		||||
 | 
			
		||||
<p>Using this simple mechanism the dispatch functions can detect the
 | 
			
		||||
multithreaded case by comparing <code>_glapi_Dispatch</code> to <code>NULL</code>.
 | 
			
		||||
The resulting implementation of <code>GET_DISPATCH</code> is slightly more
 | 
			
		||||
complex, but it avoids the expensive <code>pthread_getspecific</code> call in
 | 
			
		||||
multithreaded case by comparing <tt>_glapi_Dispatch</tt> to <tt>NULL</tt>.
 | 
			
		||||
The resulting implementation of <tt>GET_DISPATCH</tt> is slightly more
 | 
			
		||||
complex, but it avoids the expensive <tt>pthread_getspecific</tt> call in
 | 
			
		||||
the common case.</p>
 | 
			
		||||
 | 
			
		||||
<blockquote>
 | 
			
		||||
@@ -134,9 +134,9 @@ the common case.</p>
 | 
			
		||||
<tr><td><pre>
 | 
			
		||||
#define GET_DISPATCH() \
 | 
			
		||||
    (_glapi_Dispatch != NULL) \
 | 
			
		||||
        ? _glapi_Dispatch : pthread_getspecific(&_glapi_Dispatch_key)
 | 
			
		||||
        ? _glapi_Dispatch : pthread_getspecific(&_glapi_Dispatch_key)
 | 
			
		||||
</pre></td></tr>
 | 
			
		||||
<tr><td>Improved <code>GET_DISPATCH</code> Implementation</td></tr></table>
 | 
			
		||||
<tr><td>Improved <tt>GET_DISPATCH</tt> Implementation</td></tr></table>
 | 
			
		||||
</blockquote>
 | 
			
		||||
 | 
			
		||||
<h3>3.2. ELF TLS</h3>
 | 
			
		||||
@@ -144,14 +144,14 @@ the common case.</p>
 | 
			
		||||
<p>Starting with the 2.4.20 Linux kernel, each thread is allocated an area
 | 
			
		||||
of per-thread, global storage.  Variables can be put in this area using some
 | 
			
		||||
extensions to GCC.  By storing the dispatch table pointer in this area, the
 | 
			
		||||
expensive call to <code>pthread_getspecific</code> and the test of
 | 
			
		||||
<code>_glapi_Dispatch</code> can be avoided.</p>
 | 
			
		||||
expensive call to <tt>pthread_getspecific</tt> and the test of
 | 
			
		||||
<tt>_glapi_Dispatch</tt> can be avoided.</p>
 | 
			
		||||
 | 
			
		||||
<p>The dispatch table pointer is stored in a new variable called
 | 
			
		||||
<code>_glapi_tls_Dispatch</code>.  A new variable name is used so that a single
 | 
			
		||||
<tt>_glapi_tls_Dispatch</tt>.  A new variable name is used so that a single
 | 
			
		||||
libGL can implement both interfaces.  This allows the libGL to operate with
 | 
			
		||||
direct rendering drivers that use either interface.  Once the pointer is
 | 
			
		||||
properly declared, <code>GET_DISPACH</code> becomes a simple variable
 | 
			
		||||
properly declared, <tt>GET_DISPACH</tt> becomes a simple variable
 | 
			
		||||
reference.</p>
 | 
			
		||||
 | 
			
		||||
<blockquote>
 | 
			
		||||
@@ -162,12 +162,12 @@ extern __thread struct _glapi_table *_glapi_tls_Dispatch
 | 
			
		||||
 | 
			
		||||
#define GET_DISPATCH() _glapi_tls_Dispatch
 | 
			
		||||
</pre></td></tr>
 | 
			
		||||
<tr><td>TLS <code>GET_DISPATCH</code> Implementation</td></tr></table>
 | 
			
		||||
<tr><td>TLS <tt>GET_DISPATCH</tt> Implementation</td></tr></table>
 | 
			
		||||
</blockquote>
 | 
			
		||||
 | 
			
		||||
<p>Use of this path is controlled by the preprocessor define
 | 
			
		||||
<code>USE_ELF_TLS</code>.  Any platform capable of using ELF TLS should use this
 | 
			
		||||
as the default dispatch method.</p>
 | 
			
		||||
<tt>GLX_USE_TLS</tt>.  Any platform capable of using TLS should use this as
 | 
			
		||||
the default dispatch method.</p>
 | 
			
		||||
 | 
			
		||||
<h3>3.3. Assembly Language Dispatch Stubs</h3>
 | 
			
		||||
 | 
			
		||||
@@ -185,13 +185,13 @@ ways that the dispatch table pointer can be accessed.  There are four
 | 
			
		||||
different methods that can be used:</p>
 | 
			
		||||
 | 
			
		||||
<ol>
 | 
			
		||||
<li>Using <code>_glapi_Dispatch</code> directly in builds for non-multithreaded
 | 
			
		||||
<li>Using <tt>_glapi_Dispatch</tt> directly in builds for non-multithreaded
 | 
			
		||||
environments.</li>
 | 
			
		||||
<li>Using <code>_glapi_Dispatch</code> and <code>_glapi_get_dispatch</code> in
 | 
			
		||||
<li>Using <tt>_glapi_Dispatch</tt> and <tt>_glapi_get_dispatch</tt> in
 | 
			
		||||
multithreaded environments.</li>
 | 
			
		||||
<li>Using <code>_glapi_Dispatch</code> and <code>pthread_getspecific</code> in
 | 
			
		||||
<li>Using <tt>_glapi_Dispatch</tt> and <tt>pthread_getspecific</tt> in
 | 
			
		||||
multithreaded environments.</li>
 | 
			
		||||
<li>Using <code>_glapi_tls_Dispatch</code> directly in TLS enabled
 | 
			
		||||
<li>Using <tt>_glapi_tls_Dispatch</tt> directly in TLS enabled
 | 
			
		||||
multithreaded environments.</li>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
@@ -204,15 +204,16 @@ terribly relevant.</p>
 | 
			
		||||
few preprocessor defines.</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>If <code>USE_ELF_TLS</code> is defined, method #3 is used.</li>
 | 
			
		||||
<li>If <code>HAVE_PTHREAD</code> is defined, method #2 is used.</li>
 | 
			
		||||
<li>If none of the preceding are defined, method #1 is used.</li>
 | 
			
		||||
<li>If <tt>GLX_USE_TLS</tt> is defined, method #4 is used.</li>
 | 
			
		||||
<li>If <tt>HAVE_PTHREAD</tt> is defined, method #3 is used.</li>
 | 
			
		||||
<li>If <tt>WIN32_THREADS</tt> is defined, method #2 is used.</li>
 | 
			
		||||
<li>If none of the preceeding are defined, method #1 is used.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Two different techniques are used to handle the various different cases.
 | 
			
		||||
On x86 and SPARC, a macro called <code>GL_STUB</code> is used.  In the preamble
 | 
			
		||||
On x86 and SPARC, a macro called <tt>GL_STUB</tt> is used.  In the preamble
 | 
			
		||||
of the assembly source file different implementations of the macro are
 | 
			
		||||
selected based on the defined preprocessor variables.  The assembly code
 | 
			
		||||
selected based on the defined preprocessor variables.  The assmebly code
 | 
			
		||||
then consists of a series of invocations of the macros such as:
 | 
			
		||||
 | 
			
		||||
<blockquote>
 | 
			
		||||
@@ -220,7 +221,7 @@ then consists of a series of invocations of the macros such as:
 | 
			
		||||
<tr><td><pre>
 | 
			
		||||
GL_STUB(Color3fv, _gloffset_Color3fv)
 | 
			
		||||
</pre></td></tr>
 | 
			
		||||
<tr><td>SPARC Assembly Implementation of <code>glColor3fv</code></td></tr></table>
 | 
			
		||||
<tr><td>SPARC Assembly Implementation of <tt>glColor3fv</tt></td></tr></table>
 | 
			
		||||
</blockquote>
 | 
			
		||||
 | 
			
		||||
<p>The benefit of this technique is that changes to the calling pattern
 | 
			
		||||
@@ -231,32 +232,32 @@ changed lines in the assembly code.</p>
 | 
			
		||||
implementation does not change based on the parameters passed to the
 | 
			
		||||
function.  For example, since x86 passes all parameters on the stack, no
 | 
			
		||||
additional code is needed to save and restore function parameters around a
 | 
			
		||||
call to <code>pthread_getspecific</code>.  Since x86-64 passes parameters in
 | 
			
		||||
call to <tt>pthread_getspecific</tt>.  Since x86-64 passes parameters in
 | 
			
		||||
registers, varying amounts of code needs to be inserted around the call to
 | 
			
		||||
<code>pthread_getspecific</code> to save and restore the GL function's
 | 
			
		||||
<tt>pthread_getspecific</tt> to save and restore the GL function's
 | 
			
		||||
parameters.</p>
 | 
			
		||||
 | 
			
		||||
<p>The other technique, used by platforms like x86-64 that cannot use the
 | 
			
		||||
first technique, is to insert <code>#ifdef</code> within the assembly
 | 
			
		||||
first technique, is to insert <tt>#ifdef</tt> within the assembly
 | 
			
		||||
implementation of each function.  This makes the assembly file considerably
 | 
			
		||||
larger (e.g., 29,332 lines for <code>glapi_x86-64.S</code> versus 1,155 lines for
 | 
			
		||||
<code>glapi_x86.S</code>) and causes simple changes to the function
 | 
			
		||||
implementation to generate many lines of diffs.  Since the assembly files
 | 
			
		||||
larger (e.g., 29,332 lines for <tt>glapi_x86-64.S</tt> versus 1,155 lines for
 | 
			
		||||
<tt>glapi_x86.S</tt>) and causes simple changes to the function
 | 
			
		||||
implementation to generate many lines of diffs.  Since the assmebly files
 | 
			
		||||
are typically generated by scripts (see <a href="#autogen">below</a>), this
 | 
			
		||||
isn't a significant problem.</p>
 | 
			
		||||
 | 
			
		||||
<p>Once a new assembly file is created, it must be inserted in the build
 | 
			
		||||
system.  There are two steps to this.  The file must first be added to
 | 
			
		||||
<code>src/mesa/sources</code>.  That gets the file built and linked.  The second
 | 
			
		||||
step is to add the correct <code>#ifdef</code> magic to
 | 
			
		||||
<code>src/mesa/glapi/glapi_dispatch.c</code> to prevent the C version of the
 | 
			
		||||
<tt>src/mesa/sources</tt>.  That gets the file built and linked.  The second
 | 
			
		||||
step is to add the correct <tt>#ifdef</tt> magic to
 | 
			
		||||
<tt>src/mesa/glapi/glapi_dispatch.c</tt> to prevent the C version of the
 | 
			
		||||
dispatch functions from being built.</p>
 | 
			
		||||
 | 
			
		||||
<h3 id="fixedsize">3.4. Fixed-Length Dispatch Stubs</h3>
 | 
			
		||||
 | 
			
		||||
<p>To implement <code>glXGetProcAddress</code>, Mesa stores a table that
 | 
			
		||||
<p>To implement <tt>glXGetProcAddress</tt>, Mesa stores a table that
 | 
			
		||||
associates function names with pointers to those functions.  This table is
 | 
			
		||||
stored in <code>src/mesa/glapi/glprocs.h</code>.  For different reasons on
 | 
			
		||||
stored in <tt>src/mesa/glapi/glprocs.h</tt>.  For different reasons on
 | 
			
		||||
different platforms, storing all of those pointers is inefficient.  On most
 | 
			
		||||
platforms, including all known platforms that support TLS, we can avoid this
 | 
			
		||||
added overhead.</p>
 | 
			
		||||
@@ -267,8 +268,8 @@ calculated by multiplying the size of the dispatch stub by the offset of the
 | 
			
		||||
function in the table.  This value is then added to the address of the first
 | 
			
		||||
dispatch stub.</p>
 | 
			
		||||
 | 
			
		||||
<p>This path is activated by adding the correct <code>#ifdef</code> magic to
 | 
			
		||||
<code>src/mesa/glapi/glapi.c</code> just before <code>glprocs.h</code> is
 | 
			
		||||
<p>This path is activated by adding the correct <tt>#ifdef</tt> magic to
 | 
			
		||||
<tt>src/mesa/glapi/glapi.c</tt> just before <tt>glprocs.h</tt> is
 | 
			
		||||
included.</p>
 | 
			
		||||
 | 
			
		||||
<h2 id="autogen">4. Automatic Generation of Dispatch Stubs</h2>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,63 +2,82 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Downloading and Unpacking</title>
 | 
			
		||||
  <title>Getting Mesa</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Downloading and Unpacking</h1>
 | 
			
		||||
 | 
			
		||||
<h2>Downloading</h2>
 | 
			
		||||
<h1>Downloading</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Primary Mesa download site:
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/">ftp.freedesktop.org</a> (FTP)
 | 
			
		||||
or <a href="https://mesa.freedesktop.org/archive/">mesa.freedesktop.org</a>
 | 
			
		||||
(HTTPS).
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Starting with the first release of 2017, Mesa's version scheme is
 | 
			
		||||
year-based. Filenames are in the form <code>mesa-Y.N.P.tar.gz</code>, where
 | 
			
		||||
<code>Y</code> is the year (two digits), <code>N</code> is an incremental number
 | 
			
		||||
(starting at 0) and <code>P</code> is the patch number (0 for the first
 | 
			
		||||
release, 1 for the first patch after that).
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/">freedesktop.org</a> (FTP)
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
When a new release is coming, release candidates (betas) may be found
 | 
			
		||||
in the same directory, and are recognisable by the
 | 
			
		||||
<code>mesa-Y.N.P-<b>rc</b>X.tar.gz</code> filename.
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/beta/">here</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Unpacking</h2>
 | 
			
		||||
<h1>Unpacking</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa releases are available in two formats: <code>.tar.xz</code> and <code>.tar.gz</code>.
 | 
			
		||||
Mesa releases are available in three formats: .tar.bz2, .tar.gz, and .zip
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To unpack the tarball:
 | 
			
		||||
To unpack .tar.gz files:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	tar xf mesa-Y.N.P.tar.xz
 | 
			
		||||
	tar zxf MesaLib-x.y.z.tar.gz
 | 
			
		||||
</pre>
 | 
			
		||||
<p>or</p>
 | 
			
		||||
or
 | 
			
		||||
<pre>
 | 
			
		||||
	tar xf mesa-Y.N.P.tar.gz
 | 
			
		||||
	gzcat MesaLib-x.y.z.tar.gz | tar xf -
 | 
			
		||||
</pre>
 | 
			
		||||
or
 | 
			
		||||
<pre>
 | 
			
		||||
	gunzip MesaLib-x.y.z.tar.gz ; tar xf MesaLib-x.y.z.tar
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
To unpack .tar.bz2 files:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	bunzip2 -c MesaLib-x.y.z.tar.gz | tar xf -
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
To unpack .zip files:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	unzip MesaLib-x.y.z.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Contents</h2>
 | 
			
		||||
<h1>Contents</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
After unpacking you'll have these files and directories (among others):
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
Makefile	- top-level Makefile for most systems
 | 
			
		||||
configs/	- makefile parameter files for various systems
 | 
			
		||||
include/	- GL header (include) files
 | 
			
		||||
bin/		- shell scripts for making shared libraries, etc
 | 
			
		||||
docs/		- documentation
 | 
			
		||||
src/		- source code for libraries
 | 
			
		||||
src/mesa	- sources for the main Mesa library and device drivers
 | 
			
		||||
src/gallium     - sources for Gallium and Gallium drivers
 | 
			
		||||
src/glx		- sources for building libGL with full GLX and DRI support
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Proceed to the <a href="install.html">compilation and installation
 | 
			
		||||
@@ -66,7 +85,7 @@ instructions</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Demos, GLUT, and GLU</h2>
 | 
			
		||||
<h1>Demos, GLUT, and GLU</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
A package of SGI's GLU library is available
 | 
			
		||||
@@ -88,9 +107,9 @@ In the past, GLUT, GLU and the Mesa demos were released in conjunction with
 | 
			
		||||
Mesa releases.  But since GLUT, GLU and the demos change infrequently, they
 | 
			
		||||
were split off into their own git repositories:
 | 
			
		||||
 | 
			
		||||
<a href="https://gitlab.freedesktop.org/mesa/glut">GLUT</a>,
 | 
			
		||||
<a href="https://gitlab.freedesktop.org/mesa/glu">GLU</a> and
 | 
			
		||||
<a href="https://gitlab.freedesktop.org/mesa/demos">Demos</a>,
 | 
			
		||||
<a href="http://cgit.freedesktop.org/mesa/glut/">GLUT</a>,
 | 
			
		||||
<a href="http://cgit.freedesktop.org/mesa/glu/">GLU</a> and
 | 
			
		||||
<a href="http://cgit.freedesktop.org/mesa/demos/">Demos</a>,
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										159
									
								
								docs/egl.html
									
									
									
									
									
								
							
							
						
						
									
										159
									
								
								docs/egl.html
									
									
									
									
									
								
							@@ -2,24 +2,24 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>EGL</title>
 | 
			
		||||
  <title>Mesa EGL</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>EGL</h1>
 | 
			
		||||
<h1>Mesa EGL</h1>
 | 
			
		||||
 | 
			
		||||
<p>The current version of EGL in Mesa implements EGL 1.4.  More information
 | 
			
		||||
about EGL can be found at
 | 
			
		||||
<a href="https://www.khronos.org/egl/">
 | 
			
		||||
https://www.khronos.org/egl/</a>.</p>
 | 
			
		||||
<a href="http://www.khronos.org/egl/">
 | 
			
		||||
http://www.khronos.org/egl/</a>.</p>
 | 
			
		||||
 | 
			
		||||
<p>The Mesa's implementation of EGL uses a driver architecture.  The main
 | 
			
		||||
library (<code>libEGL</code>) is window system neutral.  It provides the EGL
 | 
			
		||||
@@ -33,21 +33,18 @@ directly dispatched to the drivers.</p>
 | 
			
		||||
 | 
			
		||||
<ol>
 | 
			
		||||
<li>
 | 
			
		||||
<p>Configure your build with the desired client APIs and enable
 | 
			
		||||
the driver for your hardware.  For example:</p>
 | 
			
		||||
<p>Run <code>configure</code> with the desired client APIs and enable
 | 
			
		||||
the driver for your hardware.  For example</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
$ meson configure \
 | 
			
		||||
        -D egl=true \
 | 
			
		||||
        -D gles1=true \
 | 
			
		||||
        -D gles2=true \
 | 
			
		||||
        -D dri-drivers=... \
 | 
			
		||||
        -D gallium-drivers=...
 | 
			
		||||
  $ ./configure --enable-gles1 --enable-gles2 \
 | 
			
		||||
                --with-dri-drivers=... \
 | 
			
		||||
                --with-gallium-drivers=...
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>The main library and OpenGL is enabled by default.  The first two options
 | 
			
		||||
above enables <a href="opengles.html">OpenGL ES 1.x and 2.x</a>.  The last two
 | 
			
		||||
options enables the listed classic and Gallium drivers respectively.</p>
 | 
			
		||||
options enables the listed classic and and Gallium drivers respectively.</p>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
@@ -64,7 +61,7 @@ or more EGL drivers.</p>
 | 
			
		||||
time</p>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>-D egl=true</code></dt>
 | 
			
		||||
<dt><code>--enable-egl</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>By default, EGL is enabled.  When disabled, the main library and the drivers
 | 
			
		||||
@@ -72,26 +69,40 @@ will not be built.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>-D platforms=...</code></dt>
 | 
			
		||||
<dt><code>--with-egl-driver-dir</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>The directory EGL drivers should be installed to.  If not specified, EGL
 | 
			
		||||
drivers will be installed to <code>${libdir}/egl</code>.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--enable-gallium-egl</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>Enable the optional <code>egl_gallium</code> driver.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--with-egl-platforms</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>List the platforms (window systems) to support.  Its argument is a comma
 | 
			
		||||
separated string such as <code>-D platforms=x11,drm</code>.  It decides
 | 
			
		||||
seprated string such as <code>--with-egl-platforms=x11,drm</code>.  It decides
 | 
			
		||||
the platforms a driver may support.  The first listed platform is also used by
 | 
			
		||||
the main library to decide the native platform.</p>
 | 
			
		||||
the main library to decide the native platform: the platform the EGL native
 | 
			
		||||
types such as <code>EGLNativeDisplayType</code> or
 | 
			
		||||
<code>EGLNativeWindowType</code> defined for.</p>
 | 
			
		||||
 | 
			
		||||
<p>The available platforms are <code>x11</code>, <code>drm</code>,
 | 
			
		||||
<code>wayland</code>, <code>surfaceless</code>, <code>android</code>,
 | 
			
		||||
and <code>haiku</code>.
 | 
			
		||||
The <code>android</code> platform can either be built as a system
 | 
			
		||||
component, part of AOSP, using <code>Android.mk</code> files, or
 | 
			
		||||
cross-compiled using appropriate options.
 | 
			
		||||
Unless for special needs, the build system should
 | 
			
		||||
<code>fbdev</code>, and <code>gdi</code>.  The <code>gdi</code> platform can
 | 
			
		||||
only be built with SCons.  Unless for special needs, the build system should
 | 
			
		||||
select the right platforms automatically.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>-D gles1=true</code> and <code>-D gles2=true</code></dt>
 | 
			
		||||
<dt><code>--enable-gles1</code></dt>
 | 
			
		||||
<dt><code>--enable-gles2</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>These options enable OpenGL ES support in OpenGL.  The result is one big
 | 
			
		||||
@@ -99,7 +110,7 @@ internal library that supports multiple APIs.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>-D shared-glapi=true</code></dt>
 | 
			
		||||
<dt><code>--enable-shared-glapi</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>By default, <code>libGL</code> has its own copy of <code>libglapi</code>.
 | 
			
		||||
@@ -108,6 +119,13 @@ is required if applications mix OpenGL and OpenGL ES.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--enable-openvg</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>OpenVG must be explicitly enabled by this option.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
<h2>Use EGL</h2>
 | 
			
		||||
@@ -123,13 +141,44 @@ mesa/demos repository.</p>
 | 
			
		||||
runtime</p>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>EGL_DRIVERS_PATH</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>By default, the main library will look for drivers in the directory where
 | 
			
		||||
the drivers are installed to.  This variable specifies a list of
 | 
			
		||||
colon-separated directories where the main library will look for drivers, in
 | 
			
		||||
addition to the default directory.  This variable is ignored for setuid/setgid
 | 
			
		||||
binaries.</p>
 | 
			
		||||
 | 
			
		||||
<p>This variable is usually set to test an uninstalled build.  For example, one
 | 
			
		||||
may set</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  $ export LD_LIBRARY_PATH=$mesa/lib
 | 
			
		||||
  $ export EGL_DRIVERS_PATH=$mesa/lib/egl
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>to test a build without installation</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>EGL_DRIVER</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>This variable specifies a full path to or the name of an EGL driver.  It
 | 
			
		||||
forces the specified EGL driver to be loaded.  It comes in handy when one wants
 | 
			
		||||
to test a specific driver.  This variable is ignored for setuid/setgid
 | 
			
		||||
binaries.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>EGL_PLATFORM</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>This variable specifies the native platform.  The valid values are the same
 | 
			
		||||
as those for <code>-D platforms=...</code>.  When the variable is not set,
 | 
			
		||||
as those for <code>--with-egl-platforms</code>.  When the variable is not set,
 | 
			
		||||
the main library uses the first platform listed in
 | 
			
		||||
<code>-D platforms=...</code> as the native platform.</p>
 | 
			
		||||
<code>--with-egl-platforms</code> as the native platform.</p>
 | 
			
		||||
 | 
			
		||||
<p>Extensions like <code>EGL_MESA_drm_display</code> define new functions to
 | 
			
		||||
create displays for non-native platforms.  These extensions are usually used by
 | 
			
		||||
@@ -145,6 +194,14 @@ probably required only for some of the demos found in mesa/demo repository.</p>
 | 
			
		||||
values are: <code>debug</code>, <code>info</code>, <code>warning</code>, and
 | 
			
		||||
<code>fatal</code>.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>EGL_SOFTWARE</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>For drivers that support both hardware and software rendering, setting this
 | 
			
		||||
variable to true forces the use of software rendering.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
@@ -160,18 +217,54 @@ the X server directly using (XCB-)DRI2 protocol.</p>
 | 
			
		||||
 | 
			
		||||
<p>This driver can share DRI drivers with <code>libGL</code>.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>egl_gallium</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>This driver is based on Gallium3D.  It supports all rendering APIs and
 | 
			
		||||
hardwares supported by Gallium3D.  It is the only driver that supports OpenVG.
 | 
			
		||||
The supported platforms are X11, DRM, FBDEV, and GDI.</p>
 | 
			
		||||
 | 
			
		||||
<p>This driver comes with its own hardware drivers
 | 
			
		||||
(<code>pipe_<hw></code>) and client API modules
 | 
			
		||||
(<code>st_<api></code>).</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>egl_glx</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
 | 
			
		||||
<p>This driver provides a wrapper to GLX.  It uses exclusively GLX to implement
 | 
			
		||||
the EGL API.  It supports both direct and indirect rendering when the GLX does.
 | 
			
		||||
It is accelerated when the GLX is.  As such, it cannot provide functions that
 | 
			
		||||
is not available in GLX or GLX extensions.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
<h2>Packaging</h2>
 | 
			
		||||
 | 
			
		||||
<p>The ABI between the main library and its drivers are not stable.  Nor is
 | 
			
		||||
there a plan to stabilize it at the moment.</p>
 | 
			
		||||
there a plan to stabilize it at the moment.  Of the EGL drivers,
 | 
			
		||||
<code>egl_gallium</code> has its own hardware drivers and client API modules.
 | 
			
		||||
They are considered internal to <code>egl_gallium</code> and there is also no
 | 
			
		||||
stable ABI between them.  These should be kept in mind when packaging for
 | 
			
		||||
distribution.</p>
 | 
			
		||||
 | 
			
		||||
<p>Generally, <code>egl_dri2</code> is preferred over <code>egl_gallium</code>
 | 
			
		||||
when the system already has DRI drivers.  As <code>egl_gallium</code> is loaded
 | 
			
		||||
before <code>egl_dri2</code> when both are available, <code>egl_gallium</code>
 | 
			
		||||
is disabled by default.</p>
 | 
			
		||||
 | 
			
		||||
<h2>Developers</h2>
 | 
			
		||||
 | 
			
		||||
<p>The sources of the main library and drivers can be found at
 | 
			
		||||
<code>src/egl/</code>.</p>
 | 
			
		||||
<p>The sources of the main library and the classic drivers can be found at
 | 
			
		||||
<code>src/egl/</code>.  The sources of the <code>egl</code> state tracker can
 | 
			
		||||
be found at <code>src/gallium/state_trackers/egl/</code>.</p>
 | 
			
		||||
 | 
			
		||||
<p>The suggested way to learn to write a EGL driver is to see how other drivers
 | 
			
		||||
are written.  <code>egl_glx</code> should be a good reference.  It works in any
 | 
			
		||||
environment that has GLX support, and it is simpler than most drivers.</p>
 | 
			
		||||
 | 
			
		||||
<h3>Lifetime of Display Resources</h3>
 | 
			
		||||
 | 
			
		||||
@@ -180,8 +273,8 @@ longer than the display that creates them.</p>
 | 
			
		||||
 | 
			
		||||
<p>In EGL, when a display is terminated through <code>eglTerminate</code>, all
 | 
			
		||||
display resources should be destroyed.  Similarly, when a thread is released
 | 
			
		||||
through <code>eglReleaseThread</code>, all current display resources should be
 | 
			
		||||
released.  Another way to destroy or release resources is through functions
 | 
			
		||||
throught <code>eglReleaseThread</code>, all current display resources should be
 | 
			
		||||
released.  Another way to destory or release resources is through functions
 | 
			
		||||
such as <code>eglDestroySurface</code> or <code>eglMakeCurrent</code>.</p>
 | 
			
		||||
 | 
			
		||||
<p>When a resource that is current to some thread is destroyed, the resource
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -25,206 +25,77 @@ sometimes be useful for debugging end-user issues.
 | 
			
		||||
 | 
			
		||||
<h2>LibGL environment variables</h2>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>LIBGL_DEBUG</code></dt>
 | 
			
		||||
<dd>If defined debug information will be printed to stderr.
 | 
			
		||||
    If set to <code>verbose</code> additional information will be
 | 
			
		||||
    printed.</dd>
 | 
			
		||||
<dt><code>LIBGL_DRIVERS_PATH</code></dt>
 | 
			
		||||
<dd>colon-separated list of paths to search for DRI drivers</dd>
 | 
			
		||||
<dt><code>LIBGL_ALWAYS_INDIRECT</code></dt>
 | 
			
		||||
<dd>if set to <code>true</code>, forces an indirect rendering
 | 
			
		||||
    context/connection.</dd>
 | 
			
		||||
<dt><code>LIBGL_ALWAYS_SOFTWARE</code></dt>
 | 
			
		||||
<dd>if set to <code>true</code>, always use software rendering</dd>
 | 
			
		||||
<dt><code>LIBGL_NO_DRAWARRAYS</code></dt>
 | 
			
		||||
<dd>if set to <code>true</code>, do not use DrawArrays GLX protocol
 | 
			
		||||
    (for debugging)</dd>
 | 
			
		||||
<dt><code>LIBGL_SHOW_FPS</code></dt>
 | 
			
		||||
<dd>print framerate to stdout based on the number of
 | 
			
		||||
    <code>glXSwapBuffers</code> calls per second.</dd>
 | 
			
		||||
<dt><code>LIBGL_DRI3_DISABLE</code></dt>
 | 
			
		||||
<dd>disable DRI3 if set to <code>true</code>.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>LIBGL_DEBUG - If defined debug information will be printed to stderr.
 | 
			
		||||
   If set to 'verbose' additional information will be printed.
 | 
			
		||||
<li>LIBGL_DRIVERS_PATH - colon-separated list of paths to search for DRI drivers
 | 
			
		||||
<li>LIBGL_ALWAYS_INDIRECT - forces an indirect rendering context/connection.
 | 
			
		||||
<li>LIBGL_ALWAYS_SOFTWARE - if set, always use software rendering
 | 
			
		||||
<li>LIBGL_NO_DRAWARRAYS - if set do not use DrawArrays GLX protocol (for debugging)
 | 
			
		||||
<li>LIBGL_SHOW_FPS - print framerate to stdout based on the number of glXSwapBuffers
 | 
			
		||||
    calls per second.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Core Mesa environment variables</h2>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>MESA_NO_ASM</code></dt>
 | 
			
		||||
<dd>if set, disables all assembly language optimizations</dd>
 | 
			
		||||
<dt><code>MESA_NO_MMX</code></dt>
 | 
			
		||||
<dd>if set, disables Intel MMX optimizations</dd>
 | 
			
		||||
<dt><code>MESA_NO_3DNOW</code></dt>
 | 
			
		||||
<dd>if set, disables AMD 3DNow! optimizations</dd>
 | 
			
		||||
<dt><code>MESA_NO_SSE</code></dt>
 | 
			
		||||
<dd>if set, disables Intel SSE optimizations</dd>
 | 
			
		||||
<dt><code>MESA_NO_ERROR</code></dt>
 | 
			
		||||
<dd>if set to 1, error checking is disabled as per <code>KHR_no_error</code>.
 | 
			
		||||
    This will result in undefined behaviour for invalid use of the api, but
 | 
			
		||||
    can reduce CPU use for apps that are known to be error free.</dd>
 | 
			
		||||
<dt><code>MESA_DEBUG</code></dt>
 | 
			
		||||
<dd>if set, error messages are printed to stderr.  For example,
 | 
			
		||||
    if the application generates a <code>GL_INVALID_ENUM</code> error, a
 | 
			
		||||
    corresponding error message indicating where the error occurred, and
 | 
			
		||||
    possibly why, will be printed to stderr. For release builds,
 | 
			
		||||
    <code>MESA_DEBUG</code> defaults to off (no debug output).
 | 
			
		||||
    <code>MESA_DEBUG</code> accepts the following comma-separated list of
 | 
			
		||||
    named flags, which adds extra behaviour to just set
 | 
			
		||||
    <code>MESA_DEBUG=1</code>:
 | 
			
		||||
    <dl>
 | 
			
		||||
      <dt><code>silent</code></dt>
 | 
			
		||||
      <dd>turn off debug messages. Only useful for debug builds.</dd>
 | 
			
		||||
      <dt><code>flush</code></dt>
 | 
			
		||||
      <dd>flush after each drawing command</dd>
 | 
			
		||||
      <dt><code>incomplete_tex</code></dt>
 | 
			
		||||
      <dd>extra debug messages when a texture is incomplete</dd>
 | 
			
		||||
      <dt><code>incomplete_fbo</code></dt>
 | 
			
		||||
      <dd>extra debug messages when a fbo is incomplete</dd>
 | 
			
		||||
      <dt><code>context</code></dt>
 | 
			
		||||
      <dd>create a debug context (see <code>GLX_CONTEXT_DEBUG_BIT_ARB</code>)
 | 
			
		||||
          and print error and performance messages to stderr (or
 | 
			
		||||
          <code>MESA_LOG_FILE</code>).</dd>
 | 
			
		||||
    </dl>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt><code>MESA_LOG_FILE</code></dt>
 | 
			
		||||
<dd>specifies a file name for logging all errors, warnings,
 | 
			
		||||
    etc., rather than stderr</dd>
 | 
			
		||||
<dt><code>MESA_TEX_PROG</code></dt>
 | 
			
		||||
<dd>if set, implement conventional texture env modes with
 | 
			
		||||
    fragment programs (intended for developers only)</dd>
 | 
			
		||||
<dt><code>MESA_TNL_PROG</code></dt>
 | 
			
		||||
<dd>if set, implement conventional vertex transformation operations with
 | 
			
		||||
    vertex programs (intended for developers only). Setting this variable
 | 
			
		||||
    automatically sets the <code>MESA_TEX_PROG</code> variable as well.</dd>
 | 
			
		||||
<dt><code>MESA_EXTENSION_OVERRIDE</code></dt>
 | 
			
		||||
<dd>can be used to enable/disable extensions. A value such as
 | 
			
		||||
    <code>GL_EXT_foo -GL_EXT_bar</code> will enable the
 | 
			
		||||
    <code>GL_EXT_foo</code> extension and disable the
 | 
			
		||||
    <code>GL_EXT_bar</code> extension.</dd>
 | 
			
		||||
<dt><code>MESA_EXTENSION_MAX_YEAR</code></dt>
 | 
			
		||||
<dd>The <code>GL_EXTENSIONS</code> string returned by Mesa is sorted by
 | 
			
		||||
    extension year. If this variable is set to year X, only extensions
 | 
			
		||||
    defined on or before year X will be reported. This is to work-around a
 | 
			
		||||
    bug in some games where the extension string is copied into a fixed-size
 | 
			
		||||
    buffer without truncating. If the extension string is too long, the
 | 
			
		||||
    buffer overrun can cause the game to crash. This is a work-around for
 | 
			
		||||
    that.</dd>
 | 
			
		||||
<dt><code>MESA_GL_VERSION_OVERRIDE</code></dt>
 | 
			
		||||
<dd>changes the value returned by
 | 
			
		||||
<code>glGetString(GL_VERSION)</code> and possibly the GL API type.
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>The format should be <code>MAJOR.MINOR[FC|COMPAT]</code>
 | 
			
		||||
  <li><code>FC</code> is an optional suffix that indicates a forward
 | 
			
		||||
      compatible context. This is only valid for versions >= 3.0.
 | 
			
		||||
  <li><code>COMPAT</code> is an optional suffix that indicates a
 | 
			
		||||
      compatibility context or <code>GL_ARB_compatibility</code> support.
 | 
			
		||||
      This is only valid for versions >= 3.1.
 | 
			
		||||
  <li>GL versions <= 3.0 are set to a compatibility (non-Core)
 | 
			
		||||
      profile
 | 
			
		||||
  <li>GL versions = 3.1, depending on the driver, it may or may not
 | 
			
		||||
      have the <code>ARB_compatibility</code> extension enabled.
 | 
			
		||||
  <li>GL versions >= 3.2 are set to a Core profile
 | 
			
		||||
  <li>Examples:
 | 
			
		||||
  <dl>
 | 
			
		||||
    <dt><code>2.1</code></dt>
 | 
			
		||||
    <dd>select a compatibility (non-Core) profile with GL version 2.1.</dd>
 | 
			
		||||
    <dt><code>3.0</code></dt>
 | 
			
		||||
    <dd>select a compatibility (non-Core) profile with GL version 3.0.</dd>
 | 
			
		||||
    <dt><code>3.0FC</code></dt>
 | 
			
		||||
    <dd>select a Core+Forward Compatible profile with GL version 3.0.</dd>
 | 
			
		||||
    <dt><code>3.1</code></dt>
 | 
			
		||||
    <dd>select GL version 3.1 with <code>GL_ARB_compatibility</code>
 | 
			
		||||
        enabled per the driver default.</dd>
 | 
			
		||||
    <dt><code>3.1FC</code></dt>
 | 
			
		||||
    <dd>select GL version 3.1 with forward compatibility and
 | 
			
		||||
        <code>GL_ARB_compatibility</code> disabled.</dd>
 | 
			
		||||
    <dt><code>3.1COMPAT</code></dt>
 | 
			
		||||
    <dd>select GL version 3.1 with <code>GL_ARB_compatibility</code>
 | 
			
		||||
        enabled.</dd>
 | 
			
		||||
    <dt><code>X.Y</code></dt>
 | 
			
		||||
    <dd>override GL version to X.Y without changing the profile.</dd>
 | 
			
		||||
    <dt><code>X.YFC</code></dt>
 | 
			
		||||
    <dd>select a Core+Forward Compatible profile with GL version X.Y.</dd>
 | 
			
		||||
    <dt><code>X.YCOMPAT</code></dt>
 | 
			
		||||
    <dd>select a Compatibility profile with GL version X.Y.</dd>
 | 
			
		||||
  </dl>
 | 
			
		||||
  <li>Mesa may not really implement all the features of the given
 | 
			
		||||
      version. (for developers only)
 | 
			
		||||
<li>MESA_NO_ASM - if set, disables all assembly language optimizations
 | 
			
		||||
<li>MESA_NO_MMX - if set, disables Intel MMX optimizations
 | 
			
		||||
<li>MESA_NO_3DNOW - if set, disables AMD 3DNow! optimizations
 | 
			
		||||
<li>MESA_NO_SSE - if set, disables Intel SSE optimizations
 | 
			
		||||
<li>MESA_DEBUG - if set, error messages are printed to stderr.  For example,
 | 
			
		||||
   if the application generates a GL_INVALID_ENUM error, a corresponding error
 | 
			
		||||
   message indicating where the error occured, and possibly why, will be
 | 
			
		||||
   printed to stderr.<br>
 | 
			
		||||
   If the value of MESA_DEBUG is 'FP' floating point arithmetic errors will
 | 
			
		||||
   generate exceptions.
 | 
			
		||||
<li>MESA_LOG_FILE - specifies a file name for logging all errors, warnings,
 | 
			
		||||
etc., rather than stderr
 | 
			
		||||
<li>MESA_TEX_PROG - if set, implement conventional texture env modes with
 | 
			
		||||
fragment programs (intended for developers only)
 | 
			
		||||
<li>MESA_TNL_PROG - if set, implement conventional vertex transformation
 | 
			
		||||
operations with vertex programs (intended for developers only).
 | 
			
		||||
Setting this variable automatically sets the MESA_TEX_PROG variable as well.
 | 
			
		||||
<li>MESA_EXTENSION_OVERRIDE - can be used to enable/disable extensions.
 | 
			
		||||
A value such as "GL_EXT_foo -GL_EXT_bar" will enable the GL_EXT_foo extension
 | 
			
		||||
and disable the GL_EXT_bar extension.
 | 
			
		||||
<li>MESA_EXTENSION_MAX_YEAR - The GL_EXTENSIONS string returned by Mesa is sorted
 | 
			
		||||
by extension year.
 | 
			
		||||
If this variable is set to year X, only extensions defined on or before year
 | 
			
		||||
X will be reported.
 | 
			
		||||
This is to work-around a bug in some games where the extension string is
 | 
			
		||||
copied into a fixed-size buffer without truncating.
 | 
			
		||||
If the extension string is too long, the buffer overrun can cause the game
 | 
			
		||||
to crash.
 | 
			
		||||
This is a work-around for that.
 | 
			
		||||
<li>MESA_GL_VERSION_OVERRIDE - changes the value returned by
 | 
			
		||||
glGetString(GL_VERSION) and possibly the GL API type.
 | 
			
		||||
<ul>
 | 
			
		||||
<li> The format should be MAJOR.MINOR[FC]
 | 
			
		||||
<li> FC is an optional suffix that indicates a forward compatible context.
 | 
			
		||||
This is only valid for versions >= 3.0.
 | 
			
		||||
<li> GL versions < 3.0 are set to a compatibility (non-Core) profile
 | 
			
		||||
<li> GL versions = 3.0, see below
 | 
			
		||||
<li> GL versions > 3.0 are set to a Core profile
 | 
			
		||||
<li> Examples: 2.1, 3.0, 3.0FC, 3.1, 3.1FC
 | 
			
		||||
<ul>
 | 
			
		||||
<li> 2.1 - select a compatibility (non-Core) profile with GL version 2.1
 | 
			
		||||
<li> 3.0 - select a compatibility (non-Core) profile with GL version 3.0
 | 
			
		||||
<li> 3.0FC - select a Core+Forward Compatible profile with GL version 3.0
 | 
			
		||||
<li> 3.1 - select a Core profile with GL version 3.1
 | 
			
		||||
<li> 3.1FC - select a Core+Forward Compatible profile with GL version 3.1
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt><code>MESA_GLES_VERSION_OVERRIDE</code></dt>
 | 
			
		||||
<dd>changes the value returned by <code>glGetString(GL_VERSION)</code>
 | 
			
		||||
    for OpenGL ES.
 | 
			
		||||
<ul>
 | 
			
		||||
<li> The format should be <code>MAJOR.MINOR</code>
 | 
			
		||||
<li> Examples: <code>2.0</code>, <code>3.0</code>, <code>3.1</code>
 | 
			
		||||
<li> Mesa may not really implement all the features of the given version.
 | 
			
		||||
(for developers only)
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt><code>MESA_GLSL_VERSION_OVERRIDE</code></dt>
 | 
			
		||||
<dd>changes the value returned by
 | 
			
		||||
    <code>glGetString(GL_SHADING_LANGUAGE_VERSION)</code>.
 | 
			
		||||
    Valid values are integers, such as <code>130</code>.  Mesa will not
 | 
			
		||||
    really implement all the features of the given language version if
 | 
			
		||||
    it's higher than what's normally reported. (for developers only)
 | 
			
		||||
</dd>
 | 
			
		||||
<dt><code>MESA_GLSL_CACHE_DISABLE</code></dt>
 | 
			
		||||
<dd>if set to <code>true</code>, disables the GLSL shader cache</dd>
 | 
			
		||||
<dt><code>MESA_GLSL_CACHE_MAX_SIZE</code></dt>
 | 
			
		||||
<dd>if set, determines the maximum size of the on-disk cache of compiled GLSL
 | 
			
		||||
    programs. Should be set to a number optionally followed by <code>K</code>,
 | 
			
		||||
    <code>M</code>, or <code>G</code> to specify a size in kilobytes,
 | 
			
		||||
    megabytes, or gigabytes. By default, gigabytes will be assumed. And if
 | 
			
		||||
    unset, a maximum size of 1GB will be used. Note: A separate cache might
 | 
			
		||||
    be created for each architecture that Mesa is installed for on your
 | 
			
		||||
    system. For example under the default settings you may end up with a 1GB
 | 
			
		||||
    cache for x86_64 and another 1GB cache for i386.</dd>
 | 
			
		||||
<dt><code>MESA_GLSL_CACHE_DIR</code></dt>
 | 
			
		||||
<dd>if set, determines the directory to be used for the on-disk cache of
 | 
			
		||||
    compiled GLSL programs. If this variable is not set, then the cache will
 | 
			
		||||
    be stored in <code>$XDG_CACHE_HOME/mesa_shader_cache</code> (if that
 | 
			
		||||
    variable is set), or else within <code>.cache/mesa_shader_cache</code>
 | 
			
		||||
    within the user's home directory.
 | 
			
		||||
</dd>
 | 
			
		||||
<dt><code>MESA_GLSL</code></dt>
 | 
			
		||||
<dd><a href="shading.html#envvars">shading language compiler options</a></dd>
 | 
			
		||||
<dt><code>MESA_NO_MINMAX_CACHE</code></dt>
 | 
			
		||||
<dd>when set, the minmax index cache is globally disabled.</dd>
 | 
			
		||||
<dt><code>MESA_SHADER_CAPTURE_PATH</code></dt>
 | 
			
		||||
<dd>see <a href="shading.html#capture">Capturing Shaders</a></dd>
 | 
			
		||||
<dt><code>MESA_SHADER_DUMP_PATH</code> and <code>MESA_SHADER_READ_PATH</code></dt>
 | 
			
		||||
<dd>see <a href="shading.html#replacement">Experimenting with Shader Replacements</a></dd>
 | 
			
		||||
<dt><code>MESA_VK_VERSION_OVERRIDE</code></dt>
 | 
			
		||||
<dd>changes the Vulkan physical device version
 | 
			
		||||
    as returned in <code>VkPhysicalDeviceProperties::apiVersion</code>.
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li>The format should be <code>MAJOR.MINOR[.PATCH]</code></li>
 | 
			
		||||
    <li>This will not let you force a version higher than the driver's
 | 
			
		||||
        instance version as advertised by
 | 
			
		||||
        <code>vkEnumerateInstanceVersion</code></li>
 | 
			
		||||
    <li>This can be very useful for debugging but some features may not be
 | 
			
		||||
        implemented correctly. (For developers only)</li>
 | 
			
		||||
  </ul>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>NIR passes enviroment variables</h2>
 | 
			
		||||
<p>
 | 
			
		||||
The following are only applicable for drivers that uses NIR, as they
 | 
			
		||||
modify the behaviour for the common NIR_PASS and NIR_PASS_V macros,
 | 
			
		||||
that wrap calls to NIR lowering/optimizations.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
  <dt><code>NIR_PRINT</code></dt>
 | 
			
		||||
  <dd>If defined, the resulting NIR shader will be printed out at each succesful NIR lowering/optimization call.</dd>
 | 
			
		||||
  <dt><code>NIR_TEST_CLONE</code></dt>
 | 
			
		||||
  <dd>If defined, cloning a NIR shader would be tested at each succesful NIR lowering/optimization call.</dd>
 | 
			
		||||
  <dt><code>NIR_TEST_SERIALIZE</code></dt>
 | 
			
		||||
  <dd>If defined, serialize and deserialize a NIR shader would be tested at each succesful NIR lowering/optimization call.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
<li>MESA_GLSL_VERSION_OVERRIDE - changes the value returned by
 | 
			
		||||
glGetString(GL_SHADING_LANGUAGE_VERSION). Valid values are integers, such as
 | 
			
		||||
"130".  Mesa will not really implement all the features of the given language version
 | 
			
		||||
if it's higher than what's normally reported. (for developers only)
 | 
			
		||||
<li>MESA_GLSL - <a href="shading.html#envvars">shading language compiler options</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Mesa Xlib driver environment variables</h2>
 | 
			
		||||
@@ -233,137 +104,35 @@ that wrap calls to NIR lowering/optimizations.
 | 
			
		||||
The following are only applicable to the Mesa Xlib software driver.
 | 
			
		||||
See the <a href="xlibdriver.html">Xlib software driver page</a> for details.
 | 
			
		||||
</p>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>MESA_RGB_VISUAL</code></dt>
 | 
			
		||||
<dd>specifies the X visual and depth for RGB mode</dd>
 | 
			
		||||
<dt><code>MESA_CI_VISUAL</code></dt>
 | 
			
		||||
<dd>specifies the X visual and depth for CI mode</dd>
 | 
			
		||||
<dt><code>MESA_BACK_BUFFER</code></dt>
 | 
			
		||||
<dd>specifies how to implement the back color buffer, either
 | 
			
		||||
    <code>pixmap</code> or <code>ximage</code></dd>
 | 
			
		||||
<dt><code>MESA_GAMMA</code></dt>
 | 
			
		||||
<dd>gamma correction coefficients for red, green, blue channels</dd>
 | 
			
		||||
<dt><code>MESA_XSYNC</code></dt>
 | 
			
		||||
<dd>enable synchronous X behavior (for debugging only)</dd>
 | 
			
		||||
<dt><code>MESA_GLX_FORCE_CI</code></dt>
 | 
			
		||||
<dd>if set, force GLX to treat 8bpp visuals as CI visuals</dd>
 | 
			
		||||
<dt><code>MESA_GLX_FORCE_ALPHA</code></dt>
 | 
			
		||||
<dd>if set, forces RGB windows to have an alpha channel.</dd>
 | 
			
		||||
<dt><code>MESA_GLX_DEPTH_BITS</code></dt>
 | 
			
		||||
<dd>specifies default number of bits for depth buffer.</dd>
 | 
			
		||||
<dt><code>MESA_GLX_ALPHA_BITS</code></dt>
 | 
			
		||||
<dd>specifies default number of bits for alpha channel.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode
 | 
			
		||||
<li>MESA_CI_VISUAL - specifies the X visual and depth for CI mode
 | 
			
		||||
<li>MESA_BACK_BUFFER - specifies how to implement the back color buffer,
 | 
			
		||||
    either "pixmap" or "ximage"
 | 
			
		||||
<li>MESA_GAMMA - gamma correction coefficients for red, green, blue channels
 | 
			
		||||
<li>MESA_XSYNC - enable synchronous X behavior (for debugging only)
 | 
			
		||||
<li>MESA_GLX_FORCE_CI - if set, force GLX to treat 8bpp visuals as CI visuals
 | 
			
		||||
<li>MESA_GLX_FORCE_ALPHA - if set, forces RGB windows to have an alpha channel.
 | 
			
		||||
<li>MESA_GLX_DEPTH_BITS - specifies default number of bits for depth buffer.
 | 
			
		||||
<li>MESA_GLX_ALPHA_BITS - specifies default number of bits for alpha channel.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>i945/i965 driver environment variables (non-Gallium)</h2>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>INTEL_NO_HW</code></dt>
 | 
			
		||||
<dd>if set to 1, prevents batches from being submitted to the hardware.
 | 
			
		||||
    This is useful for debugging hangs, etc.</dd>
 | 
			
		||||
<dt><code>INTEL_DEBUG</code></dt>
 | 
			
		||||
<dd>a comma-separated list of named flags, which do various things:
 | 
			
		||||
<dl>
 | 
			
		||||
   <dt><code>ann</code></dt>
 | 
			
		||||
   <dd>annotate IR in assembly dumps</dd>
 | 
			
		||||
   <dt><code>aub</code></dt>
 | 
			
		||||
   <dd>dump batches into an AUB trace for use with simulation tools</dd>
 | 
			
		||||
   <dt><code>bat</code></dt>
 | 
			
		||||
   <dd>emit batch information</dd>
 | 
			
		||||
   <dt><code>blit</code></dt>
 | 
			
		||||
   <dd>emit messages about blit operations</dd>
 | 
			
		||||
   <dt><code>blorp</code></dt>
 | 
			
		||||
   <dd>emit messages about the blorp operations (blits & clears)</dd>
 | 
			
		||||
   <dt><code>buf</code></dt>
 | 
			
		||||
   <dd>emit messages about buffer objects</dd>
 | 
			
		||||
   <dt><code>clip</code></dt>
 | 
			
		||||
   <dd>emit messages about the clip unit (for old gens, includes the CLIP program)</dd>
 | 
			
		||||
   <dt><code>color</code></dt>
 | 
			
		||||
   <dd>use color in output</dd>
 | 
			
		||||
   <dt><code>cs</code></dt>
 | 
			
		||||
   <dd>dump shader assembly for compute shaders</dd>
 | 
			
		||||
   <dt><code>do32</code></dt>
 | 
			
		||||
   <dd>generate compute shader SIMD32 programs even if workgroup size doesn't exceed the SIMD16 limit</dd>
 | 
			
		||||
   <dt><code>dri</code></dt>
 | 
			
		||||
   <dd>emit messages about the DRI interface</dd>
 | 
			
		||||
   <dt><code>fbo</code></dt>
 | 
			
		||||
   <dd>emit messages about framebuffers</dd>
 | 
			
		||||
   <dt><code>fs</code></dt>
 | 
			
		||||
   <dd>dump shader assembly for fragment shaders</dd>
 | 
			
		||||
   <dt><code>gs</code></dt>
 | 
			
		||||
   <dd>dump shader assembly for geometry shaders</dd>
 | 
			
		||||
   <dt><code>hex</code></dt>
 | 
			
		||||
   <dd>print instruction hex dump with the disassembly</dd>
 | 
			
		||||
   <dt><code>l3</code></dt>
 | 
			
		||||
   <dd>emit messages about the new L3 state during transitions</dd>
 | 
			
		||||
   <dt><code>miptree</code></dt>
 | 
			
		||||
   <dd>emit messages about miptrees</dd>
 | 
			
		||||
   <dt><code>no8</code></dt>
 | 
			
		||||
   <dd>don't generate SIMD8 fragment shader</dd>
 | 
			
		||||
   <dt><code>no16</code></dt>
 | 
			
		||||
   <dd>suppress generation of 16-wide fragment shaders. useful for debugging broken shaders</dd>
 | 
			
		||||
   <dt><code>nocompact</code></dt>
 | 
			
		||||
   <dd>disable instruction compaction</dd>
 | 
			
		||||
   <dt><code>nodualobj</code></dt>
 | 
			
		||||
   <dd>suppress generation of dual-object geometry shader code</dd>
 | 
			
		||||
   <dt><code>norbc</code></dt>
 | 
			
		||||
   <dd>disable single sampled render buffer compression</dd>
 | 
			
		||||
   <dt><code>optimizer</code></dt>
 | 
			
		||||
   <dd>dump shader assembly to files at each optimization pass and iteration that make progress</dd>
 | 
			
		||||
   <dt><code>perf</code></dt>
 | 
			
		||||
   <dd>emit messages about performance issues</dd>
 | 
			
		||||
   <dt><code>perfmon</code></dt>
 | 
			
		||||
   <dd>emit messages about <code>AMD_performance_monitor</code></dd>
 | 
			
		||||
   <dt><code>pix</code></dt>
 | 
			
		||||
   <dd>emit messages about pixel operations</dd>
 | 
			
		||||
   <dt><code>prim</code></dt>
 | 
			
		||||
   <dd>emit messages about drawing primitives</dd>
 | 
			
		||||
   <dt><code>reemit</code></dt>
 | 
			
		||||
   <dd>mark all state dirty on each draw call</dd>
 | 
			
		||||
   <dt><code>sf</code></dt>
 | 
			
		||||
   <dd>emit messages about the strips & fans unit (for old gens, includes the SF program)</dd>
 | 
			
		||||
   <dt><code>shader_time</code></dt>
 | 
			
		||||
   <dd>record how much GPU time is spent in each shader</dd>
 | 
			
		||||
   <dt><code>spill_fs</code></dt>
 | 
			
		||||
   <dd>force spilling of all registers in the scalar backend (useful to debug spilling code)</dd>
 | 
			
		||||
   <dt><code>spill_vec4</code></dt>
 | 
			
		||||
   <dd>force spilling of all registers in the vec4 backend (useful to debug spilling code)</dd>
 | 
			
		||||
   <dt><code>state</code></dt>
 | 
			
		||||
   <dd>emit messages about state flag tracking</dd>
 | 
			
		||||
   <dt><code>submit</code></dt>
 | 
			
		||||
   <dd>emit batchbuffer usage statistics</dd>
 | 
			
		||||
   <dt><code>sync</code></dt>
 | 
			
		||||
   <dd>after sending each batch, emit a message and wait for that batch to finish rendering</dd>
 | 
			
		||||
   <dt><code>tcs</code></dt>
 | 
			
		||||
   <dd>dump shader assembly for tessellation control shaders</dd>
 | 
			
		||||
   <dt><code>tes</code></dt>
 | 
			
		||||
   <dd>dump shader assembly for tessellation evaluation shaders</dd>
 | 
			
		||||
   <dt><code>tex</code></dt>
 | 
			
		||||
   <dd>emit messages about textures.</dd>
 | 
			
		||||
   <dt><code>urb</code></dt>
 | 
			
		||||
   <dd>emit messages about URB setup</dd>
 | 
			
		||||
   <dt><code>vert</code></dt>
 | 
			
		||||
   <dd>emit messages about vertex assembly</dd>
 | 
			
		||||
   <dt><code>vs</code></dt>
 | 
			
		||||
   <dd>dump shader assembly for vertex shaders</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt><code>INTEL_SCALAR_VS</code> (or <code>TCS</code>, <code>TES</code>,
 | 
			
		||||
    <code>GS</code>)</dt>
 | 
			
		||||
<dd>force scalar/vec4 mode for a shader stage (Gen8-9 only)</dd>
 | 
			
		||||
<dt><code>INTEL_PRECISE_TRIG</code></dt>
 | 
			
		||||
<dd>if set to 1, true or yes, then the driver prefers accuracy over
 | 
			
		||||
    performance in trig functions.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>INTEL_STRICT_CONFORMANCE - if set to 1, enable sw fallbacks to improve
 | 
			
		||||
    OpenGL conformance.  If set to 2, always use software rendering.
 | 
			
		||||
<li>INTEL_NO_BLIT - if set, disable hardware-accelerated glBitmap,
 | 
			
		||||
    glCopyPixels, glDrawPixels.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Radeon driver environment variables (radeon, r200, and r300g)</h2>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>RADEON_NO_TCL</code></dt>
 | 
			
		||||
<dd>if set, disable hardware-accelerated Transform/Clip/Lighting.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>RADEON_NO_TCL - if set, disable hardware-accelerated Transform/Clip/Lighting.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>EGL environment variables</h2>
 | 
			
		||||
@@ -376,170 +145,59 @@ Mesa EGL supports different sets of environment variables.  See the
 | 
			
		||||
 | 
			
		||||
<h2>Gallium environment variables</h2>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>GALLIUM_HUD</code></dt>
 | 
			
		||||
<dd>draws various information on the screen, like framerate,
 | 
			
		||||
<ul>
 | 
			
		||||
<li>GALLIUM_HUD - draws various information on the screen, like framerate,
 | 
			
		||||
    cpu load, driver statistics, performance counters, etc.
 | 
			
		||||
    Set <code>GALLIUM_HUD=help</code> and run e.g.
 | 
			
		||||
    <code>glxgears</code> for more info.</dd>
 | 
			
		||||
<dt><code>GALLIUM_HUD_PERIOD</code></dt>
 | 
			
		||||
<dd>sets the hud update rate in seconds (float). Use zero
 | 
			
		||||
    to update every frame. The default period is 1/2 second.</dd>
 | 
			
		||||
<dt><code>GALLIUM_HUD_VISIBLE</code></dt>
 | 
			
		||||
<dd>control default visibility, defaults to true.</dd>
 | 
			
		||||
<dt><code>GALLIUM_HUD_TOGGLE_SIGNAL</code></dt>
 | 
			
		||||
<dd>toggle visibility via user specified signal.
 | 
			
		||||
    Especially useful to toggle hud at specific points of application and
 | 
			
		||||
    disable for unencumbered viewing the rest of the time. For example, set
 | 
			
		||||
    <code>GALLIUM_HUD_VISIBLE</code> to <code>false</code> and
 | 
			
		||||
    <code>GALLIUM_HUD_TOGGLE_SIGNAL</code> to <code>10</code>
 | 
			
		||||
    (<code>SIGUSR1</code>).
 | 
			
		||||
    Use <code>kill -10 <pid></code> to toggle the hud as desired.</dd>
 | 
			
		||||
<dt><code>GALLIUM_HUD_DUMP_DIR</code></dt>
 | 
			
		||||
<dd>specifies a directory for writing the displayed hud values into files.</dd>
 | 
			
		||||
<dt><code>GALLIUM_DRIVER</code></dt>
 | 
			
		||||
<dd>useful in combination with <code>LIBGL_ALWAYS_SOFTWARE=true</code> for
 | 
			
		||||
    choosing one of the software renderers <code>softpipe</code>,
 | 
			
		||||
    <code>llvmpipe</code> or <code>swr</code>.</dd>
 | 
			
		||||
<dt><code>GALLIUM_LOG_FILE</code></dt>
 | 
			
		||||
<dd>specifies a file for logging all errors, warnings, etc.
 | 
			
		||||
    rather than stderr.</dd>
 | 
			
		||||
<dt><code>GALLIUM_PRINT_OPTIONS</code></dt>
 | 
			
		||||
<dd>if non-zero, print all the Gallium environment variables which are
 | 
			
		||||
    used, and their current values.</dd>
 | 
			
		||||
<dt><code>GALLIUM_DUMP_CPU</code></dt>
 | 
			
		||||
<dd>if non-zero, print information about the CPU on start-up</dd>
 | 
			
		||||
<dt><code>TGSI_PRINT_SANITY</code></dt>
 | 
			
		||||
<dd>if set, do extra sanity checking on TGSI shaders and
 | 
			
		||||
    print any errors to stderr.</dd>
 | 
			
		||||
<dt><code>DRAW_FSE</code></dt>
 | 
			
		||||
<dd>???</dd>
 | 
			
		||||
<dt><code>DRAW_NO_FSE</code></dt>
 | 
			
		||||
<dd>???</dd>
 | 
			
		||||
<dt><code>DRAW_USE_LLVM</code></dt>
 | 
			
		||||
<dd>if set to zero, the draw module will not use LLVM to execute
 | 
			
		||||
    shaders, vertex fetch, etc.</dd>
 | 
			
		||||
<dt><code>ST_DEBUG</code></dt>
 | 
			
		||||
<dd>controls debug output from the Mesa/Gallium state tracker.
 | 
			
		||||
    Setting to <code>tgsi</code>, for example, will print all the TGSI
 | 
			
		||||
    shaders. See <code>src/mesa/state_tracker/st_debug.c</code> for other
 | 
			
		||||
    options.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
<h3>Clover state tracker environment variables</h3>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>CLOVER_EXTRA_BUILD_OPTIONS</code></dt>
 | 
			
		||||
<dd>allows specifying additional compiler and linker
 | 
			
		||||
    options. Specified options are appended after the options set by the OpenCL
 | 
			
		||||
    program in <code>clBuildProgram</code>.</dd>
 | 
			
		||||
<dt><code>CLOVER_EXTRA_COMPILE_OPTIONS</code></dt>
 | 
			
		||||
<dd>allows specifying additional compiler
 | 
			
		||||
    options. Specified options are appended after the options set by the OpenCL
 | 
			
		||||
    program in <code>clCompileProgram</code>.</dd>
 | 
			
		||||
<dt><code>CLOVER_EXTRA_LINK_OPTIONS</code></dt>
 | 
			
		||||
<dd>allows specifying additional linker
 | 
			
		||||
    options. Specified options are appended after the options set by the OpenCL
 | 
			
		||||
    program in <code>clLinkProgram</code>.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
    Set GALLIUM_HUD=help and run e.g. glxgears for more info.
 | 
			
		||||
<li>GALLIUM_LOG_FILE - specifies a file for logging all errors, warnings, etc.
 | 
			
		||||
    rather than stderr.
 | 
			
		||||
<li>GALLIUM_PRINT_OPTIONS - if non-zero, print all the Gallium environment
 | 
			
		||||
    variables which are used, and their current values.
 | 
			
		||||
<li>GALLIUM_DUMP_CPU - if non-zero, print information about the CPU on start-up
 | 
			
		||||
<li>TGSI_PRINT_SANITY - if set, do extra sanity checking on TGSI shaders and
 | 
			
		||||
    print any errors to stderr.
 | 
			
		||||
<LI>DRAW_FSE - ???
 | 
			
		||||
<LI>DRAW_NO_FSE - ???
 | 
			
		||||
<li>DRAW_USE_LLVM - if set to zero, the draw module will not use LLVM to execute
 | 
			
		||||
    shaders, vertex fetch, etc.
 | 
			
		||||
<li>ST_DEBUG - controls debug output from the Mesa/Gallium state tracker.
 | 
			
		||||
Setting to "tgsi", for example, will print all the TGSI shaders.
 | 
			
		||||
See src/mesa/state_tracker/st_debug.c for other options.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h3>Softpipe driver environment variables</h3>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>SOFTPIPE_DUMP_FS</code></dt>
 | 
			
		||||
<dd>if set, the softpipe driver will print fragment shaders to stderr</dd>
 | 
			
		||||
<dt><code>SOFTPIPE_DUMP_GS</code></dt>
 | 
			
		||||
<dd>if set, the softpipe driver will print geometry shaders to stderr</dd>
 | 
			
		||||
<dt><code>SOFTPIPE_NO_RAST</code></dt>
 | 
			
		||||
<dd>if set, rasterization is no-op'd.  For profiling purposes.</dd>
 | 
			
		||||
<dt><code>SOFTPIPE_USE_LLVM</code></dt>
 | 
			
		||||
<dd>if set, the softpipe driver will try to use LLVM JIT for
 | 
			
		||||
    vertex shading processing.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>SOFTPIPE_DUMP_FS - if set, the softpipe driver will print fragment shaders
 | 
			
		||||
    to stderr
 | 
			
		||||
<li>SOFTPIPE_DUMP_GS - if set, the softpipe driver will print geometry shaders
 | 
			
		||||
    to stderr
 | 
			
		||||
<li>SOFTPIPE_NO_RAST - if set, rasterization is no-op'd.  For profiling purposes.
 | 
			
		||||
<li>SOFTPIPE_USE_LLVM - if set, the softpipe driver will try to use LLVM JIT for
 | 
			
		||||
    vertex shading procesing.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>LLVMpipe driver environment variables</h3>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>LP_NO_RAST</code></dt>
 | 
			
		||||
<dd>if set LLVMpipe will no-op rasterization</dd>
 | 
			
		||||
<dt><code>LP_DEBUG</code></dt>
 | 
			
		||||
<dd>a comma-separated list of debug options is accepted.  See the
 | 
			
		||||
    source code for details.</dd>
 | 
			
		||||
<dt><code>LP_PERF</code></dt>
 | 
			
		||||
<dd>a comma-separated list of options to selectively no-op various
 | 
			
		||||
    parts of the driver.  See the source code for details.</dd>
 | 
			
		||||
<dt><code>LP_NUM_THREADS</code></dt>
 | 
			
		||||
<dd>an integer indicating how many threads to use for rendering.
 | 
			
		||||
    Zero turns off threading completely.  The default value is the number of CPU
 | 
			
		||||
    cores present.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>LP_NO_RAST - if set LLVMpipe will no-op rasterization
 | 
			
		||||
<li>LP_DEBUG - a comma-separated list of debug options is acceptec.  See the
 | 
			
		||||
    source code for details.
 | 
			
		||||
<li>LP_PERF - a comma-separated list of options to selectively no-op various
 | 
			
		||||
    parts of the driver.  See the source code for details.
 | 
			
		||||
<li>LP_NUM_THREADS - an integer indicating how many threads to use for rendering.
 | 
			
		||||
    Zero turns of threading completely.  The default value is the number of CPU
 | 
			
		||||
    cores present.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h3>VMware SVGA driver environment variables</h3>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>SVGA_FORCE_SWTNL</code></dt>
 | 
			
		||||
<dd>force use of software vertex transformation</dd>
 | 
			
		||||
<dt><code>SVGA_NO_SWTNL</code></dt>
 | 
			
		||||
<dd>don't allow software vertex transformation fallbacks (will often result
 | 
			
		||||
    in incorrect rendering).</dd>
 | 
			
		||||
<dt><code>SVGA_DEBUG</code></dt>
 | 
			
		||||
<dd>for dumping shaders, constant buffers, etc.  See the code for
 | 
			
		||||
    details.</dd>
 | 
			
		||||
<dt><code>SVGA_EXTRA_LOGGING</code></dt>
 | 
			
		||||
<dd>if set, enables extra logging to the <code>vmware.log</code> file,
 | 
			
		||||
    such as the OpenGL program's name and command line arguments.</dd>
 | 
			
		||||
<dt><code>SVGA_NO_LOGGING</code></dt>
 | 
			
		||||
<dd>if set, disables logging to the <code>vmware.log</code> file. This is
 | 
			
		||||
    useful when using Valgrind because it otherwise crashes when
 | 
			
		||||
    initializing the host log feature.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
<p>See the driver code for other, lesser-used variables.</p>
 | 
			
		||||
 | 
			
		||||
<h3>WGL environment variables</h3>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>WGL_SWAP_INTERVAL</code></dt>
 | 
			
		||||
<dd>to set a swap interval, equivalent to calling
 | 
			
		||||
    <code>wglSwapIntervalEXT()</code> in an application.  If this
 | 
			
		||||
    environment variable is set, application calls to
 | 
			
		||||
    <code>wglSwapIntervalEXT()</code> will have no effect.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
<h3>VA-API state tracker environment variables</h3>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>VAAPI_MPEG4_ENABLED</code></dt>
 | 
			
		||||
<dd>enable MPEG4 for VA-API, disabled by default.</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>VC4 driver environment variables</h3>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>VC4_DEBUG</code></dt>
 | 
			
		||||
<dd>a comma-separated list of named flags, which do various things:
 | 
			
		||||
<dl>
 | 
			
		||||
   <dt><code>cl</code></dt>
 | 
			
		||||
   <dd>dump command list during creation</dd>
 | 
			
		||||
   <dt><code>qpu</code></dt>
 | 
			
		||||
   <dd>dump generated QPU instructions</dd>
 | 
			
		||||
   <dt><code>qir</code></dt>
 | 
			
		||||
   <dd>dump QPU IR during program compile</dd>
 | 
			
		||||
   <dt><code>nir</code></dt>
 | 
			
		||||
   <dd>dump NIR during program compile</dd>
 | 
			
		||||
   <dt><code>tgsi</code></dt>
 | 
			
		||||
   <dd>dump TGSI during program compile</dd>
 | 
			
		||||
   <dt><code>shaderdb</code></dt>
 | 
			
		||||
   <dd>dump program compile information for shader-db analysis</dd>
 | 
			
		||||
   <dt><code>perf</code></dt>
 | 
			
		||||
   <dd>print during performance-related events</dd>
 | 
			
		||||
   <dt><code>norast</code></dt>
 | 
			
		||||
   <dd>skip actual hardware execution of commands</dd>
 | 
			
		||||
   <dt><code>always_flush</code></dt>
 | 
			
		||||
   <dd>flush after each draw call</dd>
 | 
			
		||||
   <dt><code>always_sync</code></dt>
 | 
			
		||||
   <dd>wait for finish after each flush</dd>
 | 
			
		||||
   <dt><code>dump</code></dt>
 | 
			
		||||
   <dd>write a GPU command stream trace file (VC4 simulator only)</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>SVGA_FORCE_SWTNL - force use of software vertex transformation
 | 
			
		||||
<li>SVGA_NO_SWTNL - don't allow software vertex transformation fallbacks
 | 
			
		||||
(will often result in incorrect rendering).
 | 
			
		||||
<li>SVGA_DEBUG - for dumping shaders, constant buffers, etc.  See the code
 | 
			
		||||
for details.
 | 
			
		||||
<li>See the driver code for other, lesser-used variables.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -23,7 +23,7 @@ The specifications follow.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="specs/OLD/MESA_agp_offset.spec">MESA_agp_offset.spec</a>
 | 
			
		||||
<li><a href="specs/MESA_agp_offset.spec">MESA_agp_offset.spec</a>
 | 
			
		||||
<li><a href="specs/MESA_copy_sub_buffer.spec">MESA_copy_sub_buffer.spec</a>
 | 
			
		||||
<li><a href="specs/MESA_drm_image.spec">MESA_drm_image.spec</a>
 | 
			
		||||
<li><a href="specs/MESA_multithread_makecurrent.spec">MESA_multithread_makecurrent.spec</a>
 | 
			
		||||
@@ -33,7 +33,7 @@ The specifications follow.
 | 
			
		||||
<li><a href="specs/OLD/MESA_program_debug.spec">MESA_program_debug.spec</a> (obsolete)
 | 
			
		||||
<li><a href="specs/MESA_release_buffers.spec">MESA_release_buffers.spec</a>
 | 
			
		||||
<li><a href="specs/OLD/MESA_resize_buffers.spec">MESA_resize_buffers.spec</a> (obsolete)
 | 
			
		||||
<li><a href="specs/OLD/MESA_set_3dfx_mode.spec">MESA_set_3dfx_mode.spec</a>
 | 
			
		||||
<li><a href="specs/MESA_set_3dfx_mode.spec">MESA_set_3dfx_mode.spec</a>
 | 
			
		||||
<li><a href="specs/MESA_shader_debug.spec">MESA_shader_debug.spec</a>
 | 
			
		||||
<li><a href="specs/OLD/MESA_sprite_point.spec">MESA_sprite_point.spec</a> (obsolete)
 | 
			
		||||
<li><a href="specs/MESA_swap_control.spec">MESA_swap_control.spec</a>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										227
									
								
								docs/faq.html
									
									
									
									
									
								
							
							
						
						
									
										227
									
								
								docs/faq.html
									
									
									
									
									
								
							@@ -2,36 +2,46 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Frequently Asked Questions</title>
 | 
			
		||||
  <title>Mesa FAQ</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Frequently Asked Questions</h1>
 | 
			
		||||
Last updated: 19 September 2018
 | 
			
		||||
<center>
 | 
			
		||||
<h1>Mesa Frequently Asked Questions</h1>
 | 
			
		||||
Last updated: 9 October 2012
 | 
			
		||||
</center>
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
<h2>Index</h2>
 | 
			
		||||
<ol>
 | 
			
		||||
  <li><a href="#part1">High-level Questions and Answers</a></li>
 | 
			
		||||
  <li><a href="#part2">Compilation and Installation Problems</a></li>
 | 
			
		||||
  <li><a href="#part3">Runtime / Rendering Problems</a></li>
 | 
			
		||||
  <li><a href="#part4">Developer Questions</a></li>
 | 
			
		||||
</ol>
 | 
			
		||||
<a href="#part1">1. High-level Questions and Answers</a>
 | 
			
		||||
<br>
 | 
			
		||||
<a href="#part2">2. Compilation and Installation Problems</a>
 | 
			
		||||
<br>
 | 
			
		||||
<a href="#part3">3. Runtime / Rendering Problems</a>
 | 
			
		||||
<br>
 | 
			
		||||
<a href="#part4">4. Developer Questions</a>
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
<h2 id="part1">1. High-level Questions and Answers</h2>
 | 
			
		||||
 | 
			
		||||
<h3>1.1 What is Mesa?</h3>
 | 
			
		||||
 | 
			
		||||
<h1 id="part1">1. High-level Questions and Answers</h1>
 | 
			
		||||
 | 
			
		||||
<h2>1.1 What is Mesa?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa is an open-source implementation of the OpenGL specification.
 | 
			
		||||
OpenGL is a programming library for writing interactive 3D applications.
 | 
			
		||||
See the <a href="https://www.opengl.org/">OpenGL website</a> for more
 | 
			
		||||
See the <a href="http://www.opengl.org/">OpenGL website</a> for more
 | 
			
		||||
information.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
@@ -45,13 +55,13 @@ Yes.  Specifically, Mesa serves as the OpenGL core for the open-source DRI
 | 
			
		||||
drivers for X.org.
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>See the <a href="https://dri.freedesktop.org/">DRI website</a>
 | 
			
		||||
  <li>See the <a href="http://dri.freedesktop.org/">DRI website</a>
 | 
			
		||||
  for more information.</li>
 | 
			
		||||
  <li>See <a href="https://01.org/linuxgraphics">01.org</a>
 | 
			
		||||
  <li>See <a href="http://intellinuxgraphics.org">intellinuxgraphics.org</a>
 | 
			
		||||
  for more information about Intel drivers.</li>
 | 
			
		||||
  <li>See <a href="https://nouveau.freedesktop.org">nouveau.freedesktop.org</a>
 | 
			
		||||
  <li>See <a href="http://nouveau.freedesktop.org">nouveau.freedesktop.org</a>
 | 
			
		||||
  for more information about Nouveau drivers.</li>
 | 
			
		||||
  <li>See <a href="https://www.x.org/wiki/RadeonFeature">www.x.org/wiki/RadeonFeature</a>
 | 
			
		||||
  <li>See <a href="http://www.x.org/wiki/RadeonFeature">www.x.org/wiki/RadeonFeature</a>
 | 
			
		||||
  for more information about Radeon drivers.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
@@ -96,17 +106,17 @@ the Xlib API:
 | 
			
		||||
<li>The GLX wire protocol is not supported and there's no OpenGL extension
 | 
			
		||||
    loaded by the X server.
 | 
			
		||||
<li>There is no hardware acceleration.
 | 
			
		||||
<li>The OpenGL library, <code>libGL.so</code>, contains everything (the
 | 
			
		||||
    programming API, the GLX functions and all the rendering code).
 | 
			
		||||
<li>The OpenGL library, libGL.so, contains everything (the programming API,
 | 
			
		||||
    the GLX functions and all the rendering code).
 | 
			
		||||
</ul>
 | 
			
		||||
<p>
 | 
			
		||||
Alternately, Mesa acts as the core for a number of OpenGL hardware drivers
 | 
			
		||||
within the DRI (Direct Rendering Infrastructure):
 | 
			
		||||
<ul>
 | 
			
		||||
<li>The <code>libGL.so</code> library provides the GL and GLX API functions,
 | 
			
		||||
    a GLX protocol encoder, and a device driver loader.
 | 
			
		||||
<li>The device driver modules (such as <code>r200_dri.so</code>) contain
 | 
			
		||||
    a built-in copy of the core Mesa code.
 | 
			
		||||
<li>The libGL.so library provides the GL and GLX API functions, a GLX
 | 
			
		||||
    protocol encoder, and a device driver loader.
 | 
			
		||||
<li>The device driver modules (such as r200_dri.so) contain a built-in
 | 
			
		||||
    copy of the core Mesa code.
 | 
			
		||||
<li>The X server loads the GLX module.
 | 
			
		||||
    The GLX module decodes incoming GLX protocol and dispatches the commands
 | 
			
		||||
    to a rendering module.
 | 
			
		||||
@@ -126,21 +136,20 @@ Just follow the Mesa <a href="install.html">compilation instructions</a>.
 | 
			
		||||
 | 
			
		||||
<h2>1.6 Are there other open-source implementations of OpenGL?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Yes, SGI's <a href="http://web.archive.org/web/20171010115110_/http://oss.sgi.com/projects/ogl-sample/index.html">
 | 
			
		||||
OpenGL Sample Implementation (SI)</a> is available.
 | 
			
		||||
Yes, SGI's <a href="http://oss.sgi.com/projects/ogl-sample/index.html">
 | 
			
		||||
OpenGL Sample Implemenation (SI)</a> is available.
 | 
			
		||||
The SI was written during the time that OpenGL was originally designed.
 | 
			
		||||
Unfortunately, development of the SI has stagnated.
 | 
			
		||||
Mesa is much more up to date with modern features and extensions.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="https://sourceforge.net/projects/ogl-es/">Vincent</a> is
 | 
			
		||||
<a href="http://sourceforge.net/projects/ogl-es/">Vincent</a> is
 | 
			
		||||
an open-source implementation of OpenGL ES for mobile devices.
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://web.archive.org/web/20130830162848/http://www.dsbox.com/minigl.html">miniGL</a>
 | 
			
		||||
is a subset of OpenGL for PalmOS devices. The website is gone, but the source
 | 
			
		||||
code can still be found on <a href="https://sourceforge.net/projects/minigl/">sourceforge.net</a>.
 | 
			
		||||
<a href="http://www.dsbox.com/minigl.html">miniGL</a>
 | 
			
		||||
is a subset of OpenGL for PalmOS devices.
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://bellard.org/TinyGL/">TinyGL</a>
 | 
			
		||||
@@ -148,7 +157,7 @@ is a subset of OpenGL.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="https://sourceforge.net/projects/softgl/">SoftGL</a>
 | 
			
		||||
<a href="http://sourceforge.net/projects/softgl/">SoftGL</a>
 | 
			
		||||
is an OpenGL subset for mobile devices.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
@@ -170,16 +179,22 @@ popular and feature-complete.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="part2">2. Compilation and Installation Problems</h2>
 | 
			
		||||
 | 
			
		||||
<h3>2.1 What's the easiest way to install Mesa?</h3>
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1 id="part2">2. Compilation and Installation Problems</h1>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>2.1 What's the easiest way to install Mesa?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
If you're using a Linux-based system, your distro CD most likely already
 | 
			
		||||
has Mesa packages (like RPM or DEB) which you can easily install.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>2.2 I get undefined symbols such as bgnpolygon, v3f, etc...</h3>
 | 
			
		||||
<h2>2.2 I get undefined symbols such as bgnpolygon, v3f, etc...</h2>
 | 
			
		||||
<p>
 | 
			
		||||
You're application is written in IRIS GL, not OpenGL.
 | 
			
		||||
IRIS GL was the predecessor to OpenGL and is a different thing (almost)
 | 
			
		||||
@@ -188,72 +203,63 @@ Mesa's not the solution.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>2.3 Where is the GLUT library?</h3>
 | 
			
		||||
<h2>2.3 Where is the GLUT library?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
GLUT (OpenGL Utility Toolkit) is no longer in the separate
 | 
			
		||||
<code>MesaGLUT-x.y.z.tar.gz</code> file.
 | 
			
		||||
GLUT (OpenGL Utility Toolkit) is no longer in the separate MesaGLUT-x.y.z.tar.gz file.
 | 
			
		||||
If you don't already have GLUT installed, you should grab 
 | 
			
		||||
<a href="http://freeglut.sourceforge.net/">freeglut</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>2.4 Where is the GLw library?</h3>
 | 
			
		||||
<h2>2.4 Where is the GLw library?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
GLw (OpenGL widget library) is now available from a separate <a href="https://gitlab.freedesktop.org/mesa/glw">git repository</a>.  Unless you're using very old Xt/Motif applications with OpenGL, you shouldn't need it.
 | 
			
		||||
GLw (OpenGL widget library) is now available from a separate <a href="http://cgit.freedesktop.org/mesa/glw/">git repository</a>.  Unless you're using very old Xt/Motif applications with OpenGL, you shouldn't need it.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>2.5 What's the proper place for the libraries and headers?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
On Linux-based systems you'll want to follow the
 | 
			
		||||
<a href="https://www.khronos.org/registry/OpenGL/ABI/">Linux ABI</a> standard.
 | 
			
		||||
<a href="http://oss.sgi.com/projects/ogl-sample/ABI/index.html">Linux ABI</a> standard.
 | 
			
		||||
Basically you'll want the following:
 | 
			
		||||
</p>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>/usr/include/GL/gl.h</code></dt>
 | 
			
		||||
<dd>the main OpenGL header</dd>
 | 
			
		||||
<dt><code>/usr/include/GL/glu.h</code></dt>
 | 
			
		||||
<dd>the OpenGL GLU (utility) header</dd>
 | 
			
		||||
<dt><code>/usr/include/GL/glx.h</code></dt>
 | 
			
		||||
<dd>the OpenGL GLX header</dd>
 | 
			
		||||
<dt><code>/usr/include/GL/glext.h</code></dt>
 | 
			
		||||
<dd>the OpenGL extensions header</dd>
 | 
			
		||||
<dt><code>/usr/include/GL/glxext.h</code></dt>
 | 
			
		||||
<dd>the OpenGL GLX extensions header</dd>
 | 
			
		||||
<dt><code>/usr/include/GL/osmesa.h</code></dt>
 | 
			
		||||
<dd>the Mesa off-screen rendering header</dd>
 | 
			
		||||
<dt><code>/usr/lib/libGL.so</code></dt>
 | 
			
		||||
<dd>a symlink to <code>libGL.so.1</code></dd>
 | 
			
		||||
<dt><code>/usr/lib/libGL.so.1</code></dt>
 | 
			
		||||
<dd>a symlink to <code>libGL.so.1.xyz</code></dd>
 | 
			
		||||
<dt><code>/usr/lib/libGL.so.xyz</code></dt>
 | 
			
		||||
<dd>the actual OpenGL/Mesa library.  xyz denotes the
 | 
			
		||||
<ul>
 | 
			
		||||
<li>/usr/include/GL/gl.h - the main OpenGL header
 | 
			
		||||
</li><li>/usr/include/GL/glu.h - the OpenGL GLU (utility) header
 | 
			
		||||
</li><li>/usr/include/GL/glx.h - the OpenGL GLX header
 | 
			
		||||
</li><li>/usr/include/GL/glext.h - the OpenGL extensions header
 | 
			
		||||
</li><li>/usr/include/GL/glxext.h - the OpenGL GLX extensions header
 | 
			
		||||
</li><li>/usr/include/GL/osmesa.h - the Mesa off-screen rendering header
 | 
			
		||||
</li><li>/usr/lib/libGL.so - a symlink to libGL.so.1
 | 
			
		||||
</li><li>/usr/lib/libGL.so.1 - a symlink to libGL.so.1.xyz
 | 
			
		||||
</li><li>/usr/lib/libGL.so.xyz - the actual OpenGL/Mesa library.  xyz denotes the
 | 
			
		||||
Mesa version number.
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
</li></ul>
 | 
			
		||||
<p>
 | 
			
		||||
When configuring Mesa, there are three meson options that affect the install
 | 
			
		||||
When configuring Mesa, there are three autoconf options that affect the install
 | 
			
		||||
location that you should take care with: <code>--prefix</code>,
 | 
			
		||||
<code>--libdir</code>, and <code>-D dri-drivers-path</code>. To install Mesa
 | 
			
		||||
<code>--libdir</code>, and <code>--with-dri-driverdir</code>. To install Mesa
 | 
			
		||||
into the system location where it will be available for all programs to use, set
 | 
			
		||||
<code>--prefix=/usr</code>. Set <code>--libdir</code> to where your Linux
 | 
			
		||||
distribution installs system libraries, usually either <code>/usr/lib</code> or
 | 
			
		||||
<code>/usr/lib64</code>. Set <code>-D dri-drivers-path</code> to the directory
 | 
			
		||||
<code>/usr/lib64</code>. Set <code>--with-dri-driverdir</code> to the directory
 | 
			
		||||
where your Linux distribution installs DRI drivers. To find your system's DRI
 | 
			
		||||
driver directory, try executing <code>find /usr -type d -name dri</code>. For
 | 
			
		||||
example, if the <code>find</code> command listed <code>/usr/lib64/dri</code>,
 | 
			
		||||
then set <code>-D dri-drivers-path=/usr/lib64/dri</code>.
 | 
			
		||||
then set <code>--with-dri-driverdir=/usr/lib64/dri</code>.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
After determining the correct values for the install location, configure Mesa
 | 
			
		||||
with <code>meson configure --prefix=/usr --libdir=xxx -D dri-drivers-path=xxx</code>
 | 
			
		||||
and then install with <code>sudo ninja install</code>.
 | 
			
		||||
with <code>./configure --prefix=/usr --libdir=xxx --with-dri-driverdir=xxx</code>
 | 
			
		||||
and then install with <code>sudo make install</code>.
 | 
			
		||||
</p>
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="part3">3. Runtime / Rendering Problems</h2>
 | 
			
		||||
<h1 id="part3">3. Runtime / Rendering Problems</h1>
 | 
			
		||||
 | 
			
		||||
<h3>3.1 Rendering is slow / why isn't my graphics hardware being used?</h3>
 | 
			
		||||
<h2>3.1 Rendering is slow / why isn't my graphics hardware being used?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
If Mesa can't use its hardware accelerated drivers it falls back on one of its software renderers.
 | 
			
		||||
(eg. classic swrast, softpipe or llvmpipe)
 | 
			
		||||
@@ -270,75 +276,91 @@ If you're using a hardware accelerated driver you want <code>direct rendering: Y
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
If your DRI-based driver isn't working, go to the
 | 
			
		||||
<a href="https://dri.freedesktop.org/">DRI website</a> for trouble-shooting information.
 | 
			
		||||
<a href="http://dri.freedesktop.org/">DRI website</a> for trouble-shooting information.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>3.2 I'm seeing errors in depth (Z) buffering.  Why?</h3>
 | 
			
		||||
<h2>3.2 I'm seeing errors in depth (Z) buffering.  Why?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Make sure the ratio of the far to near clipping planes isn't too great.
 | 
			
		||||
Look
 | 
			
		||||
<a href="https://www.opengl.org/archives/resources/faq/technical/depthbuffer.htm#0040">here</a>
 | 
			
		||||
<a href="http://www.opengl.org/resources/faq/technical/depthbuffer.htm#0040">here</a>
 | 
			
		||||
for details.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa uses a 16-bit depth buffer by default which is smaller and faster
 | 
			
		||||
to clear than a 32-bit buffer but not as accurate.
 | 
			
		||||
If you need a deeper you can modify the parameters to
 | 
			
		||||
<code>glXChooseVisual</code> in your code.
 | 
			
		||||
<code> glXChooseVisual</code> in your code.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>3.3 Why Isn't depth buffering working at all?</h3>
 | 
			
		||||
<h2>3.3 Why Isn't depth buffering working at all?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Be sure you're requesting a depth buffered-visual.  If you set the
 | 
			
		||||
<code>MESA_DEBUG</code> environment variable it will warn you about trying
 | 
			
		||||
to enable depth testing when you don't have a depth buffer.
 | 
			
		||||
Be sure you're requesting a depth buffered-visual.  If you set the MESA_DEBUG
 | 
			
		||||
environment variable it will warn you about trying to enable depth testing
 | 
			
		||||
when you don't have a depth buffer.
 | 
			
		||||
</p>
 | 
			
		||||
<p>Specifically, make sure <code>glutInitDisplayMode</code> is being called
 | 
			
		||||
with <code>GLUT_DEPTH</code> or <code>glXChooseVisual</code> is being
 | 
			
		||||
called with a non-zero value for <code>GLX_DEPTH_SIZE</code>.
 | 
			
		||||
called with a non-zero value for GLX_DEPTH_SIZE.
 | 
			
		||||
</p>
 | 
			
		||||
<p>This discussion applies to stencil buffers, accumulation buffers and
 | 
			
		||||
alpha channels too.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>3.4 Why does <code>glGetString()</code> always return <code>NULL</code>?</h3>
 | 
			
		||||
<h2>3.4 Why does glGetString() always return NULL?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Be sure you have an active/current OpenGL rendering context before
 | 
			
		||||
calling <code>glGetString</code>.
 | 
			
		||||
calling glGetString.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>3.5 <code>GL_POINTS</code> and <code>GL_LINES</code> don't touch the
 | 
			
		||||
right pixels</h3>
 | 
			
		||||
<h2>3.5 GL_POINTS and GL_LINES don't touch the right pixels</h2>
 | 
			
		||||
<p>
 | 
			
		||||
If you're trying to draw a filled region by using <code>GL_POINTS</code> or
 | 
			
		||||
<code>GL_LINES</code> and seeing holes or gaps it's because of a float-to-int
 | 
			
		||||
rounding problem. But this is not a bug. See Appendix H of the OpenGL
 | 
			
		||||
Programming Guide - "OpenGL Correctness Tips". Basically, applying a
 | 
			
		||||
translation of (0.375, 0.375, 0.0) to your coordinates will fix the problem.
 | 
			
		||||
If you're trying to draw a filled region by using GL_POINTS or GL_LINES
 | 
			
		||||
and seeing holes or gaps it's because of a float-to-int rounding problem.
 | 
			
		||||
But this is not a bug.
 | 
			
		||||
See Appendix H of the OpenGL Programming Guide - "OpenGL Correctness Tips".
 | 
			
		||||
Basically, applying a translation of (0.375, 0.375, 0.0) to your coordinates
 | 
			
		||||
will fix the problem.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>3.6 How can I change the maximum framebuffer size in Mesa's
 | 
			
		||||
<tt>swrast</tt> backend?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
These can be overridden by using the <tt>--with-max-width</tt> and
 | 
			
		||||
<tt>--with-max-height</tt> options.  The two need not be equal.
 | 
			
		||||
</p><p>
 | 
			
		||||
Do note that Mesa uses these values to size some internal buffers,
 | 
			
		||||
so increasing these sizes will cause Mesa to require additional
 | 
			
		||||
memory.  Furthermore, increasing these limits beyond <tt>4096</tt>
 | 
			
		||||
may introduce rasterization artifacts; see the leading comments in
 | 
			
		||||
<tt>src/mesa/swrast/s_tritemp.h</tt>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2 id="part4">4. Developer Questions</h2>
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
<h3>4.1 How can I contribute?</h3>
 | 
			
		||||
 | 
			
		||||
<h1 id="part4">4. Developer Questions</h1>
 | 
			
		||||
 | 
			
		||||
<h2>4.1 How can I contribute?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
First, join the <a href="lists.html">mesa-dev mailing list</a>.
 | 
			
		||||
That's where Mesa development is discussed.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
The <a href="https://www.opengl.org/documentation">
 | 
			
		||||
OpenGL Specification</a> is the bible for OpenGL implementation work.
 | 
			
		||||
The <a href="http://www.opengl.org/documentation">
 | 
			
		||||
OpenGL Specification</a> is the bible for OpenGL implemention work.
 | 
			
		||||
You should read it.
 | 
			
		||||
</p>
 | 
			
		||||
<p>Most of the Mesa development work involves implementing new OpenGL
 | 
			
		||||
extensions, writing hardware drivers (for the DRI), and code optimization.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>4.2 How do I write a new device driver?</h3>
 | 
			
		||||
<h2>4.2 How do I write a new device driver?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Unfortunately, writing a device driver isn't easy.
 | 
			
		||||
It requires detailed understanding of OpenGL, the Mesa code, and your
 | 
			
		||||
@@ -353,7 +375,7 @@ For a Gallium3D hardware driver, the r300g, r600g and the i915g are good example
 | 
			
		||||
</p>
 | 
			
		||||
<p>The DRI website has more information about writing hardware drivers.
 | 
			
		||||
The process isn't well document because the Mesa driver interface changes
 | 
			
		||||
over time, and we seldom have spare time for writing documentation.
 | 
			
		||||
over time, and we seldome have spare time for writing documentation.
 | 
			
		||||
That being said, many people have managed to figure out the process.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
@@ -362,19 +384,20 @@ the archives) is a good way to get information.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>4.3 Why isn't <code>GL_EXT_texture_compression_s3tc</code> implemented in
 | 
			
		||||
Mesa?</h3>
 | 
			
		||||
<h2>4.3 Why isn't GL_EXT_texture_compression_s3tc implemented in Mesa?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Oh but it is! Prior to 2nd October 2017, the Mesa project did not include s3tc
 | 
			
		||||
support due to intellectual property (IP) and/or patent issues around the s3tc
 | 
			
		||||
algorithm.
 | 
			
		||||
The <a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt">specification for the extension</a>
 | 
			
		||||
indicates that there are intellectual property (IP) and/or patent issues
 | 
			
		||||
to be dealt with.
 | 
			
		||||
</p>
 | 
			
		||||
<p>We've been unsucessful in getting a response from S3 (or whoever owns
 | 
			
		||||
the IP nowadays) to indicate whether or not an open source project can
 | 
			
		||||
implement the extension (specifically the compression/decompression
 | 
			
		||||
algorithms).
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
As of Mesa 17.3.0, Mesa now officially supports s3tc, as the patent has expired.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
In versions prior to this, a 3rd party <a href="https://dri.freedesktop.org/wiki/S3TC">
 | 
			
		||||
plug-in library</a> was required.
 | 
			
		||||
In the mean time, a 3rd party <a href="http://dri.freedesktop.org/wiki/S3TC">
 | 
			
		||||
plug-in library</a> is available.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/favicon.ico
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/favicon.ico
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 13 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/favicon.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/favicon.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 2.9 KiB  | 
@@ -1,474 +0,0 @@
 | 
			
		||||
# Status of OpenGL extensions in Mesa
 | 
			
		||||
 | 
			
		||||
Here's how to read this file:
 | 
			
		||||
 | 
			
		||||
all DONE: <driver>, ...
 | 
			
		||||
    All the extensions are done for the given list of drivers.
 | 
			
		||||
 | 
			
		||||
DONE
 | 
			
		||||
    The extension is done for Mesa and no implementation is necessary on the
 | 
			
		||||
    driver-side.
 | 
			
		||||
 | 
			
		||||
DONE ()
 | 
			
		||||
    The extension is done for Mesa and all the drivers in the "all DONE" list.
 | 
			
		||||
 | 
			
		||||
DONE (<driver>, ...)
 | 
			
		||||
    The extension is done for Mesa, all the drivers in the "all DONE" list, and
 | 
			
		||||
    all the drivers in the brackets.
 | 
			
		||||
 | 
			
		||||
in progress
 | 
			
		||||
    The extension is started but not finished yet.
 | 
			
		||||
 | 
			
		||||
not started
 | 
			
		||||
    The extension isn't started yet.
 | 
			
		||||
 | 
			
		||||
# OpenGL Core and Compatibility context support
 | 
			
		||||
 | 
			
		||||
Some drivers do not support the Compatibility profile or the
 | 
			
		||||
ARB_compatibility extensions.  If an application does not request a
 | 
			
		||||
specific version without the forward-compatiblity flag, such drivers
 | 
			
		||||
will be limited to OpenGL 3.0.  If an application requests OpenGL 3.1,
 | 
			
		||||
it will get a context that may or may not have the ARB_compatibility
 | 
			
		||||
extension enabled.  Some of the later GL features are exposed in the 3.0
 | 
			
		||||
context as extensions.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Feature                                                 Status
 | 
			
		||||
------------------------------------------------------- ------------------------
 | 
			
		||||
 | 
			
		||||
GL 3.0, GLSL 1.30 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl
 | 
			
		||||
 | 
			
		||||
  glBindFragDataLocation, glGetFragDataLocation         DONE
 | 
			
		||||
  GL_NV_conditional_render (Conditional rendering)      DONE ()
 | 
			
		||||
  GL_ARB_map_buffer_range (Map buffer subranges)        DONE ()
 | 
			
		||||
  GL_ARB_color_buffer_float (Clamping controls)         DONE ()
 | 
			
		||||
  GL_ARB_texture_float (Float textures, renderbuffers)  DONE ()
 | 
			
		||||
  GL_EXT_packed_float                                   DONE ()
 | 
			
		||||
  GL_EXT_texture_shared_exponent                        DONE ()
 | 
			
		||||
  GL_ARB_depth_buffer_float (Float depth buffers)       DONE ()
 | 
			
		||||
  GL_ARB_framebuffer_object (Framebuffer objects)       DONE ()
 | 
			
		||||
  GL_ARB_half_float_pixel                               DONE (all drivers)
 | 
			
		||||
  GL_ARB_half_float_vertex                              DONE ()
 | 
			
		||||
  GL_EXT_texture_integer                                DONE ()
 | 
			
		||||
  GL_EXT_texture_array                                  DONE ()
 | 
			
		||||
  GL_EXT_draw_buffers2 (Per-buffer blend and masks)     DONE ()
 | 
			
		||||
  GL_EXT_texture_compression_rgtc                       DONE ()
 | 
			
		||||
  GL_ARB_texture_rg                                     DONE ()
 | 
			
		||||
  GL_EXT_transform_feedback (Transform feedback)        DONE ()
 | 
			
		||||
  GL_ARB_vertex_array_object (Vertex array objects)     DONE ()
 | 
			
		||||
  GL_EXT_framebuffer_sRGB (sRGB framebuffer format)     DONE ()
 | 
			
		||||
  glClearBuffer commands                                DONE
 | 
			
		||||
  glGetStringi command                                  DONE
 | 
			
		||||
  glTexParameterI, glGetTexParameterI commands          DONE
 | 
			
		||||
  glVertexAttribI commands                              DONE
 | 
			
		||||
  Depth format cube textures                            DONE ()
 | 
			
		||||
  GLX_ARB_create_context (GLX 1.4 is required)          DONE
 | 
			
		||||
  Multisample anti-aliasing                             DONE (freedreno/a5xx+, freedreno (*), llvmpipe (*), softpipe (*), swr (*))
 | 
			
		||||
 | 
			
		||||
(*) freedreno (a2xx-a4xx), llvmpipe, softpipe, and swr have fake Multisample anti-aliasing support
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 3.1, GLSL 1.40 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl
 | 
			
		||||
 | 
			
		||||
  Forward compatible context support/deprecations       DONE ()
 | 
			
		||||
  GL_ARB_draw_instanced (Instanced drawing)             DONE ()
 | 
			
		||||
  GL_ARB_copy_buffer (Buffer copying)                   DONE ()
 | 
			
		||||
  GL_NV_primitive_restart (Primitive restart)           DONE ()
 | 
			
		||||
  16 vertex texture image units                         DONE ()
 | 
			
		||||
  GL_ARB_texture_buffer_object (Texture buffer objs)    DONE (for OpenGL 3.1 contexts)
 | 
			
		||||
  GL_ARB_texture_rectangle (Rectangular textures)       DONE ()
 | 
			
		||||
  GL_ARB_uniform_buffer_object (Uniform buffer objs)    DONE ()
 | 
			
		||||
  GL_EXT_texture_snorm (Signed normalized textures)     DONE ()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 3.2, GLSL 1.50 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl
 | 
			
		||||
 | 
			
		||||
  Core/compatibility profiles                           DONE
 | 
			
		||||
  Geometry shaders                                      DONE ()
 | 
			
		||||
  GL_ARB_vertex_array_bgra (BGRA vertex order)          DONE (freedreno)
 | 
			
		||||
  GL_ARB_draw_elements_base_vertex (Base vertex offset) DONE (freedreno)
 | 
			
		||||
  GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (freedreno)
 | 
			
		||||
  GL_ARB_provoking_vertex (Provoking vertex)            DONE (freedreno)
 | 
			
		||||
  GL_ARB_seamless_cube_map (Seamless cubemaps)          DONE (freedreno)
 | 
			
		||||
  GL_ARB_texture_multisample (Multisample textures)     DONE (freedreno/a5xx+)
 | 
			
		||||
  GL_ARB_depth_clamp (Frag depth clamp)                 DONE (freedreno)
 | 
			
		||||
  GL_ARB_sync (Fence objects)                           DONE (freedreno)
 | 
			
		||||
  GLX_ARB_create_context_profile                        DONE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 3.3, GLSL 3.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl
 | 
			
		||||
 | 
			
		||||
  GL_ARB_blend_func_extended                            DONE (freedreno/a3xx, swr)
 | 
			
		||||
  GL_ARB_explicit_attrib_location                       DONE (all drivers that support GLSL)
 | 
			
		||||
  GL_ARB_occlusion_query2                               DONE (freedreno, swr)
 | 
			
		||||
  GL_ARB_sampler_objects                                DONE (all drivers)
 | 
			
		||||
  GL_ARB_shader_bit_encoding                            DONE (freedreno, swr)
 | 
			
		||||
  GL_ARB_texture_rgb10_a2ui                             DONE (freedreno, swr)
 | 
			
		||||
  GL_ARB_texture_swizzle                                DONE (freedreno, swr)
 | 
			
		||||
  GL_ARB_timer_query                                    DONE (freedreno, swr)
 | 
			
		||||
  GL_ARB_instanced_arrays                               DONE (freedreno, swr)
 | 
			
		||||
  GL_ARB_vertex_type_2_10_10_10_rev                     DONE (freedreno, swr)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, virgl
 | 
			
		||||
 | 
			
		||||
  GL_ARB_draw_buffers_blend                             DONE (freedreno, i965/gen6+, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_draw_indirect                                  DONE (freedreno, i965/gen7+, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_gpu_shader5                                    DONE (i965/gen7+)
 | 
			
		||||
  - 'precise' qualifier                                 DONE (softpipe)
 | 
			
		||||
  - Dynamically uniform sampler array indices           DONE (softpipe)
 | 
			
		||||
  - Dynamically uniform UBO array indices               DONE (freedreno, softpipe)
 | 
			
		||||
  - Implicit signed -> unsigned conversions             DONE (softpipe)
 | 
			
		||||
  - Fused multiply-add                                  DONE (softpipe)
 | 
			
		||||
  - Packing/bitfield/conversion functions               DONE (freedreno, softpipe)
 | 
			
		||||
  - Enhanced textureGather                              DONE (freedreno, softpipe)
 | 
			
		||||
  - Geometry shader instancing                          DONE (llvmpipe, softpipe)
 | 
			
		||||
  - Geometry shader multiple streams                    DONE (softpipe)
 | 
			
		||||
  - Enhanced per-sample shading                         DONE ()
 | 
			
		||||
  - Interpolation functions                             DONE (softpipe)
 | 
			
		||||
  - New overload resolution rules                       DONE (softpipe)
 | 
			
		||||
  GL_ARB_gpu_shader_fp64                                DONE (i965/gen7+, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_sample_shading                                 DONE (freedreno/a6xx, i965/gen6+, nv50)
 | 
			
		||||
  GL_ARB_shader_subroutine                              DONE (freedreno, i965/gen6+, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_tessellation_shader                            DONE (i965/gen7+)
 | 
			
		||||
  GL_ARB_texture_buffer_object_rgb32                    DONE (freedreno, i965/gen6+, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_texture_cube_map_array                         DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_texture_gather                                 DONE (freedreno, i965/gen6+, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_texture_query_lod                              DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_transform_feedback2                            DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_transform_feedback3                            DONE (i965/gen7+, llvmpipe, softpipe, swr)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.1, GLSL 4.10 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, virgl
 | 
			
		||||
 | 
			
		||||
  GL_ARB_ES2_compatibility                              DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_get_program_binary                             DONE (0 or 1 binary formats)
 | 
			
		||||
  GL_ARB_separate_shader_objects                        DONE (all drivers)
 | 
			
		||||
  GL_ARB_shader_precision                               DONE (i965/gen7+, all drivers that support GLSL 4.10)
 | 
			
		||||
  GL_ARB_vertex_attrib_64bit                            DONE (i965/gen7+, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_viewport_array                                 DONE (i965, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.2, GLSL 4.20 -- all DONE: i965/gen7+, nvc0, r600, radeonsi, virgl
 | 
			
		||||
 | 
			
		||||
  GL_ARB_texture_compression_bptc                       DONE (freedreno, i965)
 | 
			
		||||
  GL_ARB_compressed_texture_pixel_storage               DONE (all drivers)
 | 
			
		||||
  GL_ARB_shader_atomic_counters                         DONE (freedreno/a5xx+, i965, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_texture_storage                                DONE (all drivers)
 | 
			
		||||
  GL_ARB_transform_feedback_instanced                   DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_base_instance                                  DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_shader_image_load_store                        DONE (freedreno/a5xx+, i965, softpipe)
 | 
			
		||||
  GL_ARB_conservative_depth                             DONE (all drivers that support GLSL 1.30)
 | 
			
		||||
  GL_ARB_shading_language_420pack                       DONE (all drivers that support GLSL 1.30)
 | 
			
		||||
  GL_ARB_shading_language_packing                       DONE (all drivers)
 | 
			
		||||
  GL_ARB_internalformat_query                           DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_map_buffer_alignment                           DONE (all drivers)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, virgl
 | 
			
		||||
 | 
			
		||||
  GL_ARB_arrays_of_arrays                               DONE (all drivers that support GLSL 1.30)
 | 
			
		||||
  GL_ARB_ES3_compatibility                              DONE (all drivers that support GLSL 3.30)
 | 
			
		||||
  GL_ARB_clear_buffer_object                            DONE (all drivers)
 | 
			
		||||
  GL_ARB_compute_shader                                 DONE (freedreno/a5xx+, i965, softpipe)
 | 
			
		||||
  GL_ARB_copy_image                                     DONE (i965, nv50, softpipe, llvmpipe, swr)
 | 
			
		||||
  GL_KHR_debug                                          DONE (all drivers)
 | 
			
		||||
  GL_ARB_explicit_uniform_location                      DONE (all drivers that support GLSL)
 | 
			
		||||
  GL_ARB_fragment_layer_viewport                        DONE (i965, nv50, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_framebuffer_no_attachments                     DONE (freedreno, i965, softpipe)
 | 
			
		||||
  GL_ARB_internalformat_query2                          DONE (all drivers)
 | 
			
		||||
  GL_ARB_invalidate_subdata                             DONE (all drivers)
 | 
			
		||||
  GL_ARB_multi_draw_indirect                            DONE (freedreno, i965, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_program_interface_query                        DONE (all drivers)
 | 
			
		||||
  GL_ARB_robust_buffer_access_behavior                  DONE (i965)
 | 
			
		||||
  GL_ARB_shader_image_size                              DONE (freedreno/a5xx+, i965, softpipe)
 | 
			
		||||
  GL_ARB_shader_storage_buffer_object                   DONE (freedreno/a5xx+, i965, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_stencil_texturing                              DONE (freedreno, i965/hsw+, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_texture_buffer_range                           DONE (freedreno, nv50, i965, softpipe, llvmpipe, swr)
 | 
			
		||||
  GL_ARB_texture_query_levels                           DONE (all drivers that support GLSL 1.30)
 | 
			
		||||
  GL_ARB_texture_storage_multisample                    DONE (all drivers that support GL_ARB_texture_multisample)
 | 
			
		||||
  GL_ARB_texture_view                                   DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_vertex_attrib_binding                          DONE (all drivers)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, r600, radeonsi
 | 
			
		||||
 | 
			
		||||
  GL_MAX_VERTEX_ATTRIB_STRIDE                           DONE (all drivers)
 | 
			
		||||
  GL_ARB_buffer_storage                                 DONE (freedreno, i965, nv50, llvmpipe, swr)
 | 
			
		||||
  GL_ARB_clear_texture                                  DONE (i965, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_enhanced_layouts                               DONE (i965, nv50, llvmpipe, softpipe, virgl)
 | 
			
		||||
  - compile-time constant expressions                   DONE
 | 
			
		||||
  - explicit byte offsets for blocks                    DONE
 | 
			
		||||
  - forced alignment within blocks                      DONE
 | 
			
		||||
  - specified vec4-slot component numbers               DONE
 | 
			
		||||
  - specified transform/feedback layout                 DONE
 | 
			
		||||
  - input/output block locations                        DONE
 | 
			
		||||
  GL_ARB_multi_bind                                     DONE (all drivers)
 | 
			
		||||
  GL_ARB_query_buffer_object                            DONE (i965/hsw+, virgl)
 | 
			
		||||
  GL_ARB_texture_mirror_clamp_to_edge                   DONE (i965, nv50, llvmpipe, softpipe, swr, virgl)
 | 
			
		||||
  GL_ARB_texture_stencil8                               DONE (freedreno, i965/hsw+, nv50, llvmpipe, softpipe, swr, virgl)
 | 
			
		||||
  GL_ARB_vertex_type_10f_11f_11f_rev                    DONE (i965, nv50, llvmpipe, softpipe, swr, virgl)
 | 
			
		||||
 | 
			
		||||
GL 4.5, GLSL 4.50 -- all DONE: nvc0, radeonsi, r600
 | 
			
		||||
 | 
			
		||||
  GL_ARB_ES3_1_compatibility                            DONE (i965/hsw+, softpipe, virgl)
 | 
			
		||||
  GL_ARB_clip_control                                   DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_conditional_render_inverted                    DONE (freedreno, i965, nv50, llvmpipe, softpipe, swr, virgl)
 | 
			
		||||
  GL_ARB_cull_distance                                  DONE (i965, nv50, llvmpipe, softpipe, swr, virgl)
 | 
			
		||||
  GL_ARB_derivative_control                             DONE (i965, nv50, softpipe, virgl)
 | 
			
		||||
  GL_ARB_direct_state_access                            DONE (all drivers)
 | 
			
		||||
  GL_ARB_get_texture_sub_image                          DONE (all drivers)
 | 
			
		||||
  GL_ARB_shader_texture_image_samples                   DONE (i965, nv50, virgl)
 | 
			
		||||
  GL_ARB_texture_barrier                                DONE (freedreno, i965, nv50, virgl)
 | 
			
		||||
  GL_KHR_context_flush_control                          DONE (all - but needs GLX/EGL extension to be useful)
 | 
			
		||||
  GL_KHR_robustness                                     DONE (freedreno, i965)
 | 
			
		||||
  GL_EXT_shader_integer_mix                             DONE (all drivers that support GLSL)
 | 
			
		||||
 | 
			
		||||
GL 4.6, GLSL 4.60
 | 
			
		||||
 | 
			
		||||
  GL_ARB_gl_spirv                                       in progress (Nicolai Hähnle, Ian Romanick)
 | 
			
		||||
  GL_ARB_indirect_parameters                            DONE (i965/gen7+, nvc0, radeonsi, virgl)
 | 
			
		||||
  GL_ARB_pipeline_statistics_query                      DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_polygon_offset_clamp                           DONE (freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, swr, virgl)
 | 
			
		||||
  GL_ARB_shader_atomic_counter_ops                      DONE (freedreno/a5xx+, i965/gen7+, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl)
 | 
			
		||||
  GL_ARB_shader_draw_parameters                         DONE (i965, nvc0, radeonsi)
 | 
			
		||||
  GL_ARB_shader_group_vote                              DONE (i965, nvc0, radeonsi)
 | 
			
		||||
  GL_ARB_spirv_extensions                               in progress (Nicolai Hähnle, Ian Romanick)
 | 
			
		||||
  GL_ARB_texture_filter_anisotropic                     DONE (freedreno, i965, nv50, nvc0, r600, radeonsi, softpipe (*), llvmpipe (*))
 | 
			
		||||
  GL_ARB_transform_feedback_overflow_query              DONE (i965/gen6+, nvc0, radeonsi, llvmpipe, softpipe, virgl)
 | 
			
		||||
  GL_KHR_no_error                                       DONE (all drivers)
 | 
			
		||||
 | 
			
		||||
(*) softpipe and llvmpipe advertise 16x anisotropy but simply ignore the setting
 | 
			
		||||
 | 
			
		||||
These are the extensions cherry-picked to make GLES 3.1
 | 
			
		||||
GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, r600, radeonsi, virgl
 | 
			
		||||
 | 
			
		||||
  GL_ARB_arrays_of_arrays                               DONE (all drivers that support GLSL 1.30)
 | 
			
		||||
  GL_ARB_compute_shader                                 DONE (freedreno/a5xx+, i965/gen7+, softpipe)
 | 
			
		||||
  GL_ARB_draw_indirect                                  DONE (freedreno, i965/gen7+, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_explicit_uniform_location                      DONE (all drivers that support GLSL)
 | 
			
		||||
  GL_ARB_framebuffer_no_attachments                     DONE (freedreno, i965/gen7+, softpipe)
 | 
			
		||||
  GL_ARB_program_interface_query                        DONE (all drivers)
 | 
			
		||||
  GL_ARB_shader_atomic_counters                         DONE (freedreno/a5xx+, i965/gen7+, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_shader_image_load_store                        DONE (freedreno/a5xx+, i965/gen7+, softpipe)
 | 
			
		||||
  GL_ARB_shader_image_size                              DONE (freedreno/a5xx+, i965/gen7+, softpipe)
 | 
			
		||||
  GL_ARB_shader_storage_buffer_object                   DONE (freedreno/a5xx+, i965/gen7+, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_shading_language_packing                       DONE (all drivers)
 | 
			
		||||
  GL_ARB_separate_shader_objects                        DONE (all drivers)
 | 
			
		||||
  GL_ARB_stencil_texturing                              DONE (freedreno, nv50, llvmpipe, softpipe, swr)
 | 
			
		||||
  GL_ARB_texture_multisample (Multisample textures)     DONE (freedreno/a5xx+, i965/gen7+, nv50, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_texture_storage_multisample                    DONE (all drivers that support GL_ARB_texture_multisample)
 | 
			
		||||
  GL_ARB_vertex_attrib_binding                          DONE (all drivers)
 | 
			
		||||
  GS5 Enhanced textureGather                            DONE (freedreno, i965/gen7+)
 | 
			
		||||
  GS5 Packing/bitfield/conversion functions             DONE (freedreno/a5xx+, i965/gen6+)
 | 
			
		||||
  GL_EXT_shader_integer_mix                             DONE (all drivers that support GLSL)
 | 
			
		||||
 | 
			
		||||
  Additional functionality not covered above:
 | 
			
		||||
      glMemoryBarrierByRegion                           DONE
 | 
			
		||||
      glGetTexLevelParameter[fi]v - needs updates       DONE
 | 
			
		||||
      glGetBooleani_v - restrict to GLES enums
 | 
			
		||||
      gl_HelperInvocation support                       DONE (i965, r600)
 | 
			
		||||
 | 
			
		||||
GLES3.2, GLSL ES 3.2 -- all DONE: i965/gen9+, radeonsi, virgl
 | 
			
		||||
 | 
			
		||||
  GL_EXT_color_buffer_float                             DONE (all drivers)
 | 
			
		||||
  GL_KHR_blend_equation_advanced                        DONE (freedreno/a6xx, i965, nvc0)
 | 
			
		||||
  GL_KHR_debug                                          DONE (all drivers)
 | 
			
		||||
  GL_KHR_robustness                                     DONE (freedreno, i965, nvc0)
 | 
			
		||||
  GL_KHR_texture_compression_astc_ldr                   DONE (freedreno, i965/gen9+)
 | 
			
		||||
  GL_OES_copy_image                                     DONE (all drivers)
 | 
			
		||||
  GL_OES_draw_buffers_indexed                           DONE (all drivers that support GL_ARB_draw_buffers_blend)
 | 
			
		||||
  GL_OES_draw_elements_base_vertex                      DONE (all drivers)
 | 
			
		||||
  GL_OES_geometry_shader                                DONE (i965/hsw+, nvc0, softpipe)
 | 
			
		||||
  GL_OES_gpu_shader5                                    DONE (freedreno/a6xx, all drivers that support GL_ARB_gpu_shader5)
 | 
			
		||||
  GL_OES_primitive_bounding_box                         DONE (freedreno/a5xx+, i965/gen7+, nvc0, softpipe)
 | 
			
		||||
  GL_OES_sample_shading                                 DONE (freedreno/a6xx, i965, nvc0, r600)
 | 
			
		||||
  GL_OES_sample_variables                               DONE (freedreno/a6xx, i965, nvc0, r600)
 | 
			
		||||
  GL_OES_shader_image_atomic                            DONE (all drivers that support GL_ARB_shader_image_load_store)
 | 
			
		||||
  GL_OES_shader_io_blocks                               DONE (All drivers that support GLES 3.1)
 | 
			
		||||
  GL_OES_shader_multisample_interpolation               DONE (freedreno/a6xx, i965, nvc0, r600)
 | 
			
		||||
  GL_OES_tessellation_shader                            DONE (all drivers that support GL_ARB_tessellation_shader)
 | 
			
		||||
  GL_OES_texture_border_clamp                           DONE (all drivers)
 | 
			
		||||
  GL_OES_texture_buffer                                 DONE (freedreno, i965, nvc0, softpipe)
 | 
			
		||||
  GL_OES_texture_cube_map_array                         DONE (i965/hsw+, nvc0, softpipe)
 | 
			
		||||
  GL_OES_texture_stencil8                               DONE (all drivers that support GL_ARB_texture_stencil8)
 | 
			
		||||
  GL_OES_texture_storage_multisample_2d_array           DONE (all drivers that support GL_ARB_texture_multisample)
 | 
			
		||||
 | 
			
		||||
Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES version:
 | 
			
		||||
 | 
			
		||||
  GL_ARB_bindless_texture                               DONE (nvc0, radeonsi)
 | 
			
		||||
  GL_ARB_cl_event                                       not started
 | 
			
		||||
  GL_ARB_compute_variable_group_size                    DONE (nvc0, radeonsi)
 | 
			
		||||
  GL_ARB_ES3_2_compatibility                            DONE (i965/gen8+, radeonsi, virgl)
 | 
			
		||||
  GL_ARB_fragment_shader_interlock                      DONE (i965)
 | 
			
		||||
  GL_ARB_gpu_shader_int64                               DONE (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe)
 | 
			
		||||
  GL_ARB_parallel_shader_compile                        DONE (all drivers)
 | 
			
		||||
  GL_ARB_post_depth_coverage                            DONE (i965, nvc0, radeonsi)
 | 
			
		||||
  GL_ARB_robustness_isolation                           not started
 | 
			
		||||
  GL_ARB_sample_locations                               DONE (nvc0)
 | 
			
		||||
  GL_ARB_seamless_cubemap_per_texture                   DONE (etnaviv/SEAMLESS_CUBE_MAP, freedreno, i965, nvc0, radeonsi, r600, softpipe, swr, virgl)
 | 
			
		||||
  GL_ARB_shader_ballot                                  DONE (i965/gen8+, nvc0, radeonsi)
 | 
			
		||||
  GL_ARB_shader_clock                                   DONE (i965/gen7+, nv50, nvc0, r600, radeonsi, virgl)
 | 
			
		||||
  GL_ARB_shader_stencil_export                          DONE (i965/gen9+, r600, radeonsi, softpipe, llvmpipe, swr, virgl)
 | 
			
		||||
  GL_ARB_shader_viewport_layer_array                    DONE (i965/gen6+, nvc0, radeonsi)
 | 
			
		||||
  GL_ARB_sparse_buffer                                  DONE (radeonsi/CIK+)
 | 
			
		||||
  GL_ARB_sparse_texture                                 not started
 | 
			
		||||
  GL_ARB_sparse_texture2                                not started
 | 
			
		||||
  GL_ARB_sparse_texture_clamp                           not started
 | 
			
		||||
  GL_ARB_texture_filter_minmax                          not started
 | 
			
		||||
  GL_EXT_memory_object                                  DONE (radeonsi)
 | 
			
		||||
  GL_EXT_memory_object_fd                               DONE (radeonsi)
 | 
			
		||||
  GL_EXT_memory_object_win32                            not started
 | 
			
		||||
  GL_EXT_render_snorm                                   DONE (i965, radeonsi)
 | 
			
		||||
  GL_EXT_semaphore                                      DONE (radeonsi)
 | 
			
		||||
  GL_EXT_semaphore_fd                                   DONE (radeonsi)
 | 
			
		||||
  GL_EXT_semaphore_win32                                not started
 | 
			
		||||
  GL_EXT_sRGB_write_control                             DONE (all drivers that support GLES 3.0+)
 | 
			
		||||
  GL_EXT_texture_norm16                                 DONE (freedreno, i965, r600, radeonsi, nvc0)
 | 
			
		||||
  GL_EXT_texture_sRGB_R8                                DONE (all drivers that support GLES 3.0+)
 | 
			
		||||
  GL_KHR_blend_equation_advanced_coherent               DONE (i965/gen9+)
 | 
			
		||||
  GL_KHR_texture_compression_astc_hdr                   DONE (i965/bxt)
 | 
			
		||||
  GL_KHR_texture_compression_astc_sliced_3d             DONE (i965/gen9+, radeonsi)
 | 
			
		||||
  GL_OES_depth_texture_cube_map                         DONE (all drivers that support GLSL 1.30+)
 | 
			
		||||
  GL_OES_EGL_image                                      DONE (all drivers)
 | 
			
		||||
  GL_OES_EGL_image_external                             DONE (all drivers)
 | 
			
		||||
  GL_OES_EGL_image_external_essl3                       DONE (all drivers)
 | 
			
		||||
  GL_OES_required_internalformat                        DONE (all drivers)
 | 
			
		||||
  GL_OES_surfaceless_context                            DONE (all drivers)
 | 
			
		||||
  GL_OES_texture_compression_astc                       DONE (core only)
 | 
			
		||||
  GL_OES_texture_float                                  DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
 | 
			
		||||
  GL_OES_texture_float_linear                           DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
 | 
			
		||||
  GL_OES_texture_half_float                             DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
 | 
			
		||||
  GL_OES_texture_half_float_linear                      DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
 | 
			
		||||
  GL_OES_texture_view                                   DONE (freedreno, i965/gen8+, r600, radeonsi, nv50, nvc0, softpipe, llvmpipe, swr)
 | 
			
		||||
  GL_OES_viewport_array                                 DONE (i965, nvc0, radeonsi, softpipe)
 | 
			
		||||
  GLX_ARB_context_flush_control                         not started
 | 
			
		||||
  GLX_ARB_robustness_application_isolation              not started
 | 
			
		||||
  GLX_ARB_robustness_share_group_isolation              not started
 | 
			
		||||
 | 
			
		||||
GL_EXT_direct_state_access subfeatures (in the spec order):
 | 
			
		||||
  GL 1.1: Client commands                               not started
 | 
			
		||||
  GL 1.0-1.3: Matrix and transpose matrix commands      not started
 | 
			
		||||
  GL 1.1-1.2: Texture commands                          not started
 | 
			
		||||
  GL 1.2: 3D texture commands                           not started
 | 
			
		||||
  GL 1.2.1: Multitexture commands                       not started
 | 
			
		||||
  GL 1.2.1-3.0: Indexed texture commands                not started
 | 
			
		||||
  GL 1.2.1-3.0: Indexed generic queries                 not started
 | 
			
		||||
  GL 1.2.1: EnableIndexed.. Get*Indexed                 not started
 | 
			
		||||
  GL_ARB_vertex_program                                 not started
 | 
			
		||||
  GL 1.3: Compressed texture and multitexture commands  not started
 | 
			
		||||
  GL 1.5: Buffer commands                               not started
 | 
			
		||||
  GL 2.0-2.1: Uniform and uniform matrix commands       not started
 | 
			
		||||
  GL_EXT_texture_buffer_object                          not started
 | 
			
		||||
  GL_EXT_texture_integer                                not started
 | 
			
		||||
  GL_EXT_gpu_shader4                                    not started
 | 
			
		||||
  GL_EXT_gpu_program_parameters                         not started
 | 
			
		||||
  GL_NV_gpu_program4                                    n/a
 | 
			
		||||
  GL_NV_framebuffer_multisample_coverage                n/a
 | 
			
		||||
  GL 3.0: Renderbuffer/framebuffer commands, Gen*Mipmap not started
 | 
			
		||||
  GL 3.0: CopyBuffer command                            not started
 | 
			
		||||
  GL_EXT_geometry_shader4 commands (expose in GL 3.2)   not started
 | 
			
		||||
  GL_NV_explicit_multisample                            n/a
 | 
			
		||||
  GL 3.0: Vertex array/attrib/query/map commands        not started
 | 
			
		||||
  Matrix GL tokens                                      not started
 | 
			
		||||
 | 
			
		||||
GL_EXT_direct_state_access additions from other extensions (complete list):
 | 
			
		||||
  GL_AMD_framebuffer_sample_positions                   n/a
 | 
			
		||||
  GL_AMD_gpu_shader_int64                               not started
 | 
			
		||||
  GL_ARB_bindless_texture                               not started
 | 
			
		||||
  GL_ARB_buffer_storage                                 not started
 | 
			
		||||
  GL_ARB_clear_buffer_object                            not started
 | 
			
		||||
  GL_ARB_framebuffer_no_attachments                     not started
 | 
			
		||||
  GL_ARB_gpu_shader_fp64                                not started
 | 
			
		||||
  GL_ARB_instanced_arrays                               not started
 | 
			
		||||
  GL_ARB_internalformat_query2                          not started
 | 
			
		||||
  GL_ARB_sparse_texture                                 n/a
 | 
			
		||||
  GL_ARB_sparse_buffer                                  not started
 | 
			
		||||
  GL_ARB_texture_buffer_range                           not started
 | 
			
		||||
  GL_ARB_texture_storage                                not started
 | 
			
		||||
  GL_ARB_texture_storage_multisample                    not started
 | 
			
		||||
  GL_ARB_vertex_attrib_64bit                            not started
 | 
			
		||||
  GL_ARB_vertex_attrib_binding                          not started
 | 
			
		||||
  GL_EXT_buffer_storage                                 not started
 | 
			
		||||
  GL_EXT_external_buffer                                not started
 | 
			
		||||
  GL_EXT_separate_shader_objects                        n/a
 | 
			
		||||
  GL_EXT_sparse_texture                                 n/a
 | 
			
		||||
  GL_EXT_texture_storage                                n/a
 | 
			
		||||
  GL_EXT_vertex_attrib_64bit                            not started
 | 
			
		||||
  GL_EXT_EGL_image_storage                              n/a
 | 
			
		||||
  GL_NV_bindless_texture                                n/a
 | 
			
		||||
  GL_NV_gpu_shader5                                     n/a
 | 
			
		||||
  GL_NV_texture_multisample                             n/a
 | 
			
		||||
  GL_NV_vertex_buffer_unified_memory                    n/a
 | 
			
		||||
  GL_NVX_linked_gpu_multicast                           n/a
 | 
			
		||||
  GLX_NV_copy_buffer                                    n/a
 | 
			
		||||
 | 
			
		||||
The following extensions are not part of any OpenGL or OpenGL ES version, and
 | 
			
		||||
we DO NOT WANT implementations of these extensions for Mesa.
 | 
			
		||||
 | 
			
		||||
  GL_ARB_geometry_shader4                               Superseded by GL 3.2 geometry shaders
 | 
			
		||||
  GL_ARB_matrix_palette                                 Superseded by GL_ARB_vertex_program
 | 
			
		||||
  GL_ARB_shading_language_include                       Not interesting
 | 
			
		||||
  GL_ARB_shadow_ambient                                 Superseded by GL_ARB_fragment_program
 | 
			
		||||
  GL_ARB_vertex_blend                                   Superseded by GL_ARB_vertex_program
 | 
			
		||||
 | 
			
		||||
Vulkan 1.0 -- all DONE: anv, radv
 | 
			
		||||
 | 
			
		||||
Vulkan 1.1 -- all DONE: anv, radv
 | 
			
		||||
 | 
			
		||||
  VK_KHR_16bit_storage                                  in progress (Alejandro)
 | 
			
		||||
  VK_KHR_bind_memory2                                   DONE (anv, radv)
 | 
			
		||||
  VK_KHR_dedicated_allocation                           DONE (anv, radv)
 | 
			
		||||
  VK_KHR_descriptor_update_template                     DONE (anv, radv)
 | 
			
		||||
  VK_KHR_device_group                                   not started
 | 
			
		||||
  VK_KHR_device_group_creation                          not started
 | 
			
		||||
  VK_KHR_external_fence                                 DONE (anv, radv)
 | 
			
		||||
  VK_KHR_external_fence_capabilities                    DONE (anv, radv)
 | 
			
		||||
  VK_KHR_external_memory                                DONE (anv, radv)
 | 
			
		||||
  VK_KHR_external_memory_capabilities                   DONE (anv, radv)
 | 
			
		||||
  VK_KHR_external_semaphore                             DONE (anv, radv)
 | 
			
		||||
  VK_KHR_external_semaphore_capabilities                DONE (anv, radv)
 | 
			
		||||
  VK_KHR_get_memory_requirements2                       DONE (anv, radv)
 | 
			
		||||
  VK_KHR_get_physical_device_properties2                DONE (anv, radv)
 | 
			
		||||
  VK_KHR_maintenance1                                   DONE (anv, radv)
 | 
			
		||||
  VK_KHR_maintenance2                                   DONE (anv, radv)
 | 
			
		||||
  VK_KHR_maintenance3                                   DONE (anv, radv)
 | 
			
		||||
  VK_KHR_multiview                                      DONE (anv, radv)
 | 
			
		||||
  VK_KHR_relaxed_block_layout                           DONE (anv, radv)
 | 
			
		||||
  VK_KHR_sampler_ycbcr_conversion                       DONE (anv)
 | 
			
		||||
  VK_KHR_shader_draw_parameters                         DONE (anv, radv)
 | 
			
		||||
  VK_KHR_storage_buffer_storage_class                   DONE (anv, radv)
 | 
			
		||||
  VK_KHR_variable_pointers                              DONE (anv, radv)
 | 
			
		||||
 | 
			
		||||
Khronos extensions that are not part of any Vulkan version:
 | 
			
		||||
  VK_KHR_8bit_storage                                   DONE (anv, radv)
 | 
			
		||||
  VK_KHR_android_surface                                not started
 | 
			
		||||
  VK_KHR_create_renderpass2                             DONE (anv, radv)
 | 
			
		||||
  VK_KHR_display                                        DONE (anv, radv)
 | 
			
		||||
  VK_KHR_display_swapchain                              DONE (anv, radv)
 | 
			
		||||
  VK_KHR_draw_indirect_count                            DONE (radv)
 | 
			
		||||
  VK_KHR_external_fence_fd                              DONE (anv, radv)
 | 
			
		||||
  VK_KHR_external_fence_win32                           not started
 | 
			
		||||
  VK_KHR_external_memory_fd                             DONE (anv, radv)
 | 
			
		||||
  VK_KHR_external_memory_win32                          not started
 | 
			
		||||
  VK_KHR_external_semaphore_fd                          DONE (anv, radv)
 | 
			
		||||
  VK_KHR_external_semaphore_win32                       not started
 | 
			
		||||
  VK_KHR_get_display_properties2                        DONE (anv, radv)
 | 
			
		||||
  VK_KHR_get_surface_capabilities2                      DONE (anv, radv)
 | 
			
		||||
  VK_KHR_image_format_list                              DONE (anv, radv)
 | 
			
		||||
  VK_KHR_incremental_present                            DONE (anv, radv)
 | 
			
		||||
  VK_KHR_mir_surface                                    not started
 | 
			
		||||
  VK_KHR_push_descriptor                                DONE (anv, radv)
 | 
			
		||||
  VK_KHR_sampler_mirror_clamp_to_edge                   DONE (anv, radv)
 | 
			
		||||
  VK_KHR_shared_presentable_image                       not started
 | 
			
		||||
  VK_KHR_surface                                        DONE (anv, radv)
 | 
			
		||||
  VK_KHR_swapchain                                      DONE (anv, radv)
 | 
			
		||||
  VK_KHR_wayland_surface                                DONE (anv, radv)
 | 
			
		||||
  VK_KHR_win32_keyed_mutex                              not started
 | 
			
		||||
  VK_KHR_win32_surface                                  not started
 | 
			
		||||
  VK_KHR_xcb_surface                                    DONE (anv, radv)
 | 
			
		||||
  VK_KHR_xlib_surface                                   DONE (anv, radv)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
A graphical representation of this information can be found at
 | 
			
		||||
https://mesamatrix.net/
 | 
			
		||||
@@ -8,13 +8,13 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Help Wanted</h1>
 | 
			
		||||
<h1>Help Wanted / To-Do List</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
We can always use more help with the Mesa project.
 | 
			
		||||
@@ -24,7 +24,7 @@ Here are some specific ideas and areas where help would be appreciated:
 | 
			
		||||
<ol>
 | 
			
		||||
<li>
 | 
			
		||||
<b>Driver patching and testing.</b>
 | 
			
		||||
Patches are often posted to the <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev">mesa-dev mailing list</a>, but aren't
 | 
			
		||||
Patches are often posted to the <a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev">mesa-dev mailing list</a>, but aren't
 | 
			
		||||
immediately checked into git because not enough people are testing them.
 | 
			
		||||
Just applying patches, testing and reporting back is helpful.
 | 
			
		||||
<li>
 | 
			
		||||
@@ -32,11 +32,20 @@ Just applying patches, testing and reporting back is helpful.
 | 
			
		||||
There are plenty of open bugs in the <a href="https://bugs.freedesktop.org/describecomponents.cgi?product=Mesa">bug database</a>.
 | 
			
		||||
<li>
 | 
			
		||||
<b>Remove aliasing warnings.</b>
 | 
			
		||||
Enable gcc's <code>-Wstrict-aliasing=2 -fstrict-aliasing</code> arguments, and
 | 
			
		||||
track down aliasing issues in the code.
 | 
			
		||||
Enable gcc -Wstrict-aliasing=2 -fstrict-aliasing and track down aliasing
 | 
			
		||||
issues in the code.
 | 
			
		||||
<li>
 | 
			
		||||
<b>Windows driver building, testing and maintenance.</b>
 | 
			
		||||
Fixing MSVC builds.
 | 
			
		||||
<li>
 | 
			
		||||
<b>Contribute more tests to
 | 
			
		||||
<a href="https://piglit.freedesktop.org/">Piglit</a>.</b>
 | 
			
		||||
<a href="http://piglit.freedesktop.org/">Piglit</a>.</b>
 | 
			
		||||
<li>
 | 
			
		||||
<b>Automatic testing.
 | 
			
		||||
</b>
 | 
			
		||||
It would be great if someone would set up an automated system for grabbing
 | 
			
		||||
the latest Mesa code and run tests (such as piglit) then report issues to
 | 
			
		||||
the mailing list.
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
@@ -47,19 +56,26 @@ You can find some further To-do lists here:
 | 
			
		||||
<b>Common To-Do lists:</b>
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li><a href="https://gitlab.freedesktop.org/mesa/mesa/blob/master/docs/features.txt">
 | 
			
		||||
    <code>features.txt</code></a> - Status of OpenGL 3.x / 4.x features in
 | 
			
		||||
    Mesa.</li>
 | 
			
		||||
  <li><a href="http://cgit.freedesktop.org/mesa/mesa/tree/docs/GL3.txt">
 | 
			
		||||
    <b>GL3.txt</b></a> - Status of OpenGL 3.x / 4.x features in Mesa.</li>
 | 
			
		||||
  <li><a href="http://dri.freedesktop.org/wiki/MissingFunctionality">
 | 
			
		||||
    <b>MissingFunctionality</b></a> - Detailed information about missing OpenGL features.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<b>Legacy Driver specific To-Do lists:</b>
 | 
			
		||||
<b>Driver specific To-Do lists:</b>
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li><a href="https://dri.freedesktop.org/wiki/R600ToDo">
 | 
			
		||||
    <code>r600g</code></a> - Driver for ATI/AMD R600 - Northern Island.</li>
 | 
			
		||||
  <li><a href="https://dri.freedesktop.org/wiki/R300ToDo">
 | 
			
		||||
    <code>r300g</code></a> - Driver for ATI R300 - R500.</li>
 | 
			
		||||
  <li><a href="http://cgit.freedesktop.org/mesa/mesa/tree/src/gallium/docs/llvm-todo.txt">
 | 
			
		||||
    <b>LLVMpipe</b></a> - Software driver using LLVM for runtime code generation.</li>
 | 
			
		||||
  <li><a href="http://dri.freedesktop.org/wiki/RadeonsiToDo">
 | 
			
		||||
    <b>radeonsi</b></a> - Driver for AMD Southern Island.</li>
 | 
			
		||||
  <li><a href="http://dri.freedesktop.org/wiki/R600ToDo">
 | 
			
		||||
    <b>r600g</b></a> - Driver for ATI/AMD R600 - Northern Island.</li>
 | 
			
		||||
  <li><a href="http://dri.freedesktop.org/wiki/R300ToDo">
 | 
			
		||||
    <b>r300g</b></a> - Driver for ATI R300 - R500.</li>
 | 
			
		||||
  <li><a href="http://cgit.freedesktop.org/mesa/mesa/tree/src/gallium/drivers/i915/TODO">
 | 
			
		||||
    <b>i915g</b></a> - Driver for Intel i915/i945.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1226
									
								
								docs/index.html
									
									
									
									
									
								
							
							
						
						
									
										1226
									
								
								docs/index.html
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -22,125 +22,84 @@
 | 
			
		||||
  <li><a href="#prereq-general">General prerequisites</a>
 | 
			
		||||
  <li><a href="#prereq-dri">For DRI and hardware acceleration</a>
 | 
			
		||||
  </ul>
 | 
			
		||||
<li><a href="#meson">Building with meson</a>
 | 
			
		||||
<li><a href="#autoconf">Building with autoconf (Linux/Unix/X11)</a>
 | 
			
		||||
<li><a href="#scons">Building with SCons (Windows/Linux)</a>
 | 
			
		||||
<li><a href="#android">Building with AOSP (Android)</a>
 | 
			
		||||
<li><a href="#other">Building for other systems</a>
 | 
			
		||||
<li><a href="#libs">Library Information</a>
 | 
			
		||||
<li><a href="#pkg-config">Building OpenGL programs with pkg-config</a>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="prereq-general">1. Prerequisites for building</h2>
 | 
			
		||||
 | 
			
		||||
<h3>1.1 General</h3>
 | 
			
		||||
 | 
			
		||||
<h4>Build system</h4>
 | 
			
		||||
<h1 id="prereq-general">1. Prerequisites for building</h1>
 | 
			
		||||
 | 
			
		||||
<h2>1.1 General</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="https://mesonbuild.com">meson</a> is required when building on *nix platforms.
 | 
			
		||||
<li>Autoconf was removed in 19.1.0, use meson instead
 | 
			
		||||
<li><a href="http://www.scons.org/">SCons</a> is required for building on
 | 
			
		||||
Windows and optional for Linux (it's an alternative to meson.)
 | 
			
		||||
</li>
 | 
			
		||||
<li>Android Build system when building as native Android component. Autoconf
 | 
			
		||||
is used when when building ARC.
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h4>Compiler</h4>
 | 
			
		||||
<p>
 | 
			
		||||
The following compilers are known to work, if you know of others or you're
 | 
			
		||||
willing to maintain support for other compiler get in touch.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>GCC 4.2.0 or later (some parts of Mesa may require later versions)
 | 
			
		||||
<li>clang - exact minimum requirement is currently unknown.
 | 
			
		||||
<li>Microsoft Visual Studio 2015 or later is required, for building on Windows.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h4>Third party/extra tools.</h4>
 | 
			
		||||
<p>
 | 
			
		||||
<strong>Note</strong>: These should not be required, when building from a release tarball. If
 | 
			
		||||
you think you've spotted a bug let developers know by filing a
 | 
			
		||||
<a href="bugs.html">bug report</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="https://www.python.org/">Python</a> - Python is required.
 | 
			
		||||
When building with scons 2.7 is required.
 | 
			
		||||
When building with meson 3.5 or newer is required.
 | 
			
		||||
</li>
 | 
			
		||||
<li><a href="http://www.makotemplates.org/">Python Mako module</a> -
 | 
			
		||||
Python Mako module is required. Version 0.8.0 or later should work.
 | 
			
		||||
</li>
 | 
			
		||||
<li>lex / yacc - for building the Mesa IR and GLSL compiler.
 | 
			
		||||
<p>
 | 
			
		||||
On Linux systems, flex and bison versions 2.5.35 and 2.4.1, respectively,
 | 
			
		||||
(or later) should work.
 | 
			
		||||
<li>lex / yacc - for building the GLSL compiler.
 | 
			
		||||
On Linux systems, flex and bison are used.
 | 
			
		||||
Versions 2.5.35 and 2.4.1, respectively, (or later) should work.
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
On Windows with MinGW, install flex and bison with:
 | 
			
		||||
<pre>mingw-get install msys-flex msys-bison</pre>
 | 
			
		||||
For MSVC on Windows, install
 | 
			
		||||
<a href="http://winflexbison.sourceforge.net/">Win flex-bison</a>.
 | 
			
		||||
</p>
 | 
			
		||||
</li>
 | 
			
		||||
<li>python - Python is needed for building the Gallium components.
 | 
			
		||||
Version 2.6.4 or later should work.
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
To build OpenGL ES 1.1 and 2.0 you'll also need
 | 
			
		||||
<a href="http://xmlsoft.org/sources/win32/python/libxml2-python-2.7.7.win32-py2.7.exe">libxml2-python</a>.
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
<p><strong>Note</strong>: Some versions can be buggy (eg. flex 2.6.2) so do try others if things fail.</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3 id="prereq-dri">1.2 Requirements</h3>
 | 
			
		||||
<h3 id="prereq-dri">1.2 For DRI and hardware acceleration</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The requirements depends on the features selected at configure stage.
 | 
			
		||||
Check/install the respective -devel package as prompted by the configure error
 | 
			
		||||
message.
 | 
			
		||||
The following are required for DRI-based hardware acceleration with Mesa:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="http://xorg.freedesktop.org/releases/individual/proto/">
 | 
			
		||||
dri2proto</a> version 2.6 or later
 | 
			
		||||
<li><a href="http://dri.freedesktop.org/libdrm/">libDRM</a>
 | 
			
		||||
version 2.4.33 or later
 | 
			
		||||
<li>Xorg server version 1.5 or later
 | 
			
		||||
<li>Linux 2.6.28 or later
 | 
			
		||||
</ul>
 | 
			
		||||
<p>
 | 
			
		||||
Here are some common ways to retrieve most/all of the dependencies based on
 | 
			
		||||
the packaging tool used by your distro.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  zypper source-install --build-deps-only Mesa # openSUSE/SLED/SLES
 | 
			
		||||
  yum-builddep mesa # yum Fedora, OpenSuse(?)
 | 
			
		||||
  dnf builddep mesa # dnf Fedora
 | 
			
		||||
  apt-get build-dep mesa # Debian and derivatives
 | 
			
		||||
  ... # others
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<h2 id="meson">2. Building with meson</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Meson is the latest build system in mesa, it is currently able to build for
 | 
			
		||||
*nix systems like Linux and BSD, and will be able to build for windows as well.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The general approach is:
 | 
			
		||||
If you're using a fedora distro the following command should install all
 | 
			
		||||
the needed dependencies:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
  meson builddir/
 | 
			
		||||
  ninja -C builddir/
 | 
			
		||||
  sudo ninja -C builddir/ install
 | 
			
		||||
  sudo yum install flex bison imake libtool xorg-x11-proto-devel libdrm-devel \
 | 
			
		||||
  gcc-c++ xorg-x11-server-devel libXi-devel libXmu-devel libXdamage-devel git \
 | 
			
		||||
  expat-devel llvm-devel
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1 id="autoconf">2. Building with autoconf (Linux/Unix/X11)</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The primary method to build Mesa on Unix systems is with autoconf.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The general approach is the standard:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
  ./configure
 | 
			
		||||
  make
 | 
			
		||||
  sudo make install
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
Please read the <a href="meson.html">detailed meson instructions</a>
 | 
			
		||||
for more information
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2 id="autoconf">3. Building with autoconf (Linux/Unix/X11)</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
  Autoconf support was removed in Mesa 19.1.0. Please use meson instead.
 | 
			
		||||
But please read the <a href="autoconf.html">detailed autoconf instructions</a>
 | 
			
		||||
for more details.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="scons">4. Building with SCons (Windows/Linux)</h2>
 | 
			
		||||
<h1 id="scons">3. Building with SCons (Windows/Linux)</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To build Mesa with SCons on Linux or Windows do
 | 
			
		||||
@@ -159,43 +118,36 @@ by -debug for debug builds.
 | 
			
		||||
To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    scons platform=windows toolchain=crossmingw machine=x86 libgl-gdi
 | 
			
		||||
    scons platform=windows toolchain=crossmingw machine=x86 mesagdi libgl-gdi
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
This will create:
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa + Gallium + softpipe (or llvmpipe), binary compatible with Windows's opengl32.dll
 | 
			
		||||
<li>build/windows-x86-debug/mesa/drivers/windows/gdi/opengl32.dll — Mesa + swrast, binary compatible with Windows's opengl32.dll
 | 
			
		||||
<li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll
 | 
			
		||||
</ul>
 | 
			
		||||
<p>
 | 
			
		||||
Put them all in the same directory to test them.
 | 
			
		||||
 | 
			
		||||
Additional information is available in <a href="README.WIN32">README.WIN32</a>.
 | 
			
		||||
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="android">5. Building with AOSP (Android)</h2>
 | 
			
		||||
<h1 id="other">4. Building for other systems</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Currently one can build Mesa for Android as part of the AOSP project, yet
 | 
			
		||||
your experience might vary.
 | 
			
		||||
Documentation for other environments (some may be very out of date):
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
In order to achieve that one should update their local manifest to point to the
 | 
			
		||||
upstream repo, set the appropriate BOARD_GPU_DRIVERS and build the
 | 
			
		||||
libGLES_mesa library.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
FINISHME: Improve on the instructions add references to Rob H repos/Jenkins,
 | 
			
		||||
Android-x86 and/or other resources.
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="README.VMS">README.VMS</a> - VMS
 | 
			
		||||
<li><a href="README.CYGWIN">README.CYGWIN</a> - Cygwin
 | 
			
		||||
<li><a href="README.WIN32">README.WIN32</a> - Win32
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="libs">6. Library Information</h2>
 | 
			
		||||
 | 
			
		||||
<h1 id="libs">5. Library Information</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
When compilation has finished, look in the top-level <code>lib/</code>
 | 
			
		||||
@@ -203,17 +155,18 @@ When compilation has finished, look in the top-level <code>lib/</code>
 | 
			
		||||
You'll see a set of library files similar to this:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
lrwxrwxrwx    1 brian    users          10 Mar 26 07:53 libGL.so -> libGL.so.1*
 | 
			
		||||
lrwxrwxrwx    1 brian    users          19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
 | 
			
		||||
lrwxrwxrwx    1 brian    users          10 Mar 26 07:53 libGL.so -> libGL.so.1*
 | 
			
		||||
lrwxrwxrwx    1 brian    users          19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
 | 
			
		||||
-rwxr-xr-x    1 brian    users     3375861 Mar 26 07:53 libGL.so.1.5.060100*
 | 
			
		||||
lrwxrwxrwx    1 brian    users          14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
 | 
			
		||||
lrwxrwxrwx    1 brian    users          23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
 | 
			
		||||
lrwxrwxrwx    1 brian    users          14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
 | 
			
		||||
lrwxrwxrwx    1 brian    users          23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
 | 
			
		||||
-rwxr-xr-x    1 brian    users       23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<b>libGL</b> is the main OpenGL library (i.e. Mesa), while <b>libOSMesa</b>
 | 
			
		||||
is the OSMesa (Off-Screen) interface library.
 | 
			
		||||
<b>libGL</b> is the main OpenGL library (i.e. Mesa).
 | 
			
		||||
<br>
 | 
			
		||||
<b>libOSMesa</b> is the OSMesa (Off-Screen) interface library.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
@@ -232,10 +185,10 @@ versions of libGL and device drivers.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="pkg-config">7. Building OpenGL programs with pkg-config</h2>
 | 
			
		||||
<h1 id="pkg-config">6. Building OpenGL programs with pkg-config</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Running <code>ninja install</code> will install package configuration files
 | 
			
		||||
Running <code>make install</code> will install package configuration files
 | 
			
		||||
for the pkg-config utility.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
@@ -251,6 +204,8 @@ For example, compiling and linking a GLUT application can be done with:
 | 
			
		||||
   gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										107
									
								
								docs/intro.html
									
									
									
									
									
								
							
							
						
						
									
										107
									
								
								docs/intro.html
									
									
									
									
									
								
							@@ -2,13 +2,13 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Introduction</title>
 | 
			
		||||
  <title>Mesa Introduction</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -17,40 +17,28 @@
 | 
			
		||||
<h1>Introduction</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The Mesa project began as an open-source implementation of the
 | 
			
		||||
<a href="https://www.opengl.org/">OpenGL</a> specification -
 | 
			
		||||
Mesa is an open-source implementation of the
 | 
			
		||||
<a href="http://www.opengl.org/">OpenGL</a> specification -
 | 
			
		||||
a system for rendering interactive 3D graphics.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Over the years the project has grown to implement more graphics APIs,
 | 
			
		||||
including
 | 
			
		||||
<a href="https://www.khronos.org/opengles/">OpenGL ES</a> (versions 1, 2, 3),
 | 
			
		||||
<a href="https://www.khronos.org/opencl/">OpenCL</a>,
 | 
			
		||||
<a href="https://www.khronos.org/openmax/">OpenMAX</a>,
 | 
			
		||||
<a href="https://en.wikipedia.org/wiki/VDPAU">VDPAU</a>,
 | 
			
		||||
<a href="https://en.wikipedia.org/wiki/Video_Acceleration_API">VA API</a>,
 | 
			
		||||
<a href="https://en.wikipedia.org/wiki/X-Video_Motion_Compensation">XvMC</a> and
 | 
			
		||||
<a href="https://www.khronos.org/vulkan/">Vulkan</a>.
 | 
			
		||||
A variety of device drivers allows Mesa to be used in many different
 | 
			
		||||
environments ranging from software emulation to complete hardware acceleration
 | 
			
		||||
for modern GPUs.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
A variety of device drivers allows the Mesa libraries to be used in many
 | 
			
		||||
different environments ranging from software emulation to complete hardware
 | 
			
		||||
acceleration for modern GPUs.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa ties into several other open-source projects: the
 | 
			
		||||
<a href="https://dri.freedesktop.org/">Direct Rendering
 | 
			
		||||
Infrastructure</a> and <a href="https://x.org">X.org</a> to
 | 
			
		||||
provide OpenGL support on Linux, FreeBSD and other operating
 | 
			
		||||
Mesa ties into several other open-source projects: the 
 | 
			
		||||
<a href="http://dri.freedesktop.org/">Direct Rendering 
 | 
			
		||||
Infrastructure</a> and <a href="http://x.org">X.org</a> to 
 | 
			
		||||
provide OpenGL support to users of X on Linux, FreeBSD and other operating 
 | 
			
		||||
systems.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Project History</h2>
 | 
			
		||||
<h1>Project History</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The Mesa project was originally started by Brian Paul.
 | 
			
		||||
@@ -97,7 +85,7 @@ the OpenGL API, so they didn't feel threatened by the project.
 | 
			
		||||
1995-1996: I continue working on Mesa both during my spare time and during
 | 
			
		||||
my work hours at the Space Science and Engineering Center at the University
 | 
			
		||||
of Wisconsin in Madison.  My supervisor, Bill Hibbard, lets me do this because
 | 
			
		||||
Mesa is now being using for the <a href="https://www.ssec.wisc.edu/%7Ebillh/vis.html">Vis5D</a> project.
 | 
			
		||||
Mesa is now being using for the <a href="http://www.ssec.wisc.edu/%7Ebillh/vis.html">Vis5D</a> project.
 | 
			
		||||
</p><p>
 | 
			
		||||
October 1996: Mesa 2.0 is released.  It implements the OpenGL 1.1 specification.
 | 
			
		||||
</p>
 | 
			
		||||
@@ -154,7 +142,7 @@ and OpenGL Shading Language.
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
2008: Keith Whitwell and other Tungsten Graphics employees develop
 | 
			
		||||
<a href="https://en.wikipedia.org/wiki/Gallium3D">Gallium</a>
 | 
			
		||||
<a href="http://en.wikipedia.org/wiki/Gallium3D">Gallium</a>
 | 
			
		||||
- a new GPU abstraction layer.  The latest Mesa drivers are based on
 | 
			
		||||
Gallium and other APIs such as OpenVG are implemented on top of Gallium.
 | 
			
		||||
</p>
 | 
			
		||||
@@ -165,27 +153,18 @@ and version 1.30 of the OpenGL Shading Language.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
July 2016: Mesa 12.0 is released, including OpenGL 4.3 support and initial
 | 
			
		||||
support for Vulkan for Intel GPUs.  Plus, there's another gallium software
 | 
			
		||||
driver ("swr") based on LLVM and developed by Intel.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Ongoing: Mesa is the OpenGL implementation for devices designed by
 | 
			
		||||
Intel, AMD, NVIDIA, Qualcomm, Broadcom, Vivante, plus the VMware and
 | 
			
		||||
VirGL virtual GPUs.
 | 
			
		||||
Ongoing: Mesa is the OpenGL implementation for several types of hardware
 | 
			
		||||
made by Intel, AMD and NVIDIA, plus the VMware virtual GPU.
 | 
			
		||||
There's also several software-based renderers: swrast (the legacy
 | 
			
		||||
Mesa rasterizer), softpipe (a gallium reference driver), llvmpipe
 | 
			
		||||
(LLVM/JIT-based high-speed rasterizer) and swr (another LLVM-based driver).
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa rasterizer), softpipe (a gallium reference driver) and llvmpipe
 | 
			
		||||
(LLVM/JIT-based high-speed rasterizer).
 | 
			
		||||
Work continues on the drivers and core Mesa to implement newer versions
 | 
			
		||||
of the OpenGL, OpenGL ES and Vulkan specifications.
 | 
			
		||||
of the OpenGL specification.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Major Versions</h2>
 | 
			
		||||
<h1>Major Versions</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
This is a summary of the major versions of Mesa.
 | 
			
		||||
@@ -194,31 +173,7 @@ of the OpenGL specification is implemented.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Version 12.x features</h3>
 | 
			
		||||
<p>
 | 
			
		||||
Version 12.x of Mesa implements the OpenGL 4.3 API, but not all drivers
 | 
			
		||||
support OpenGL 4.3.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Initial support for Vulkan is also included.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Version 11.x features</h3>
 | 
			
		||||
<p>
 | 
			
		||||
Version 11.x of Mesa implements the OpenGL 4.1 API, but not all drivers
 | 
			
		||||
support OpenGL 4.1.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Version 10.x features</h3>
 | 
			
		||||
<p>
 | 
			
		||||
Version 10.x of Mesa implements the OpenGL 3.3 API, but not all drivers
 | 
			
		||||
support OpenGL 3.3.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Version 9.x features</h3>
 | 
			
		||||
<h2>Version 9.x features</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Version 9.x of Mesa implements the OpenGL 3.1 API.
 | 
			
		||||
While the driver for Intel Sandy Bridge and Ivy Bridge is the only
 | 
			
		||||
@@ -227,13 +182,9 @@ community contributed features required for OpenGL 3.1.  The primary
 | 
			
		||||
features added since the Mesa 8.0 release are
 | 
			
		||||
GL_ARB_texture_buffer_object and GL_ARB_uniform_buffer_object.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Version 9.0 of Mesa also included the first release of the Clover state
 | 
			
		||||
tracker for OpenCL.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Version 8.x features</h3>
 | 
			
		||||
<h2>Version 8.x features</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Version 8.x of Mesa implements the OpenGL 3.0 API.
 | 
			
		||||
The developers at Intel deserve a lot of credit for implementing most
 | 
			
		||||
@@ -242,14 +193,14 @@ the i965 driver.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Version 7.x features</h3>
 | 
			
		||||
<h2>Version 7.x features</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Version 7.x of Mesa implements the OpenGL 2.1 API.  The main feature
 | 
			
		||||
of OpenGL 2.x is the OpenGL Shading Language.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Version 6.x features</h3>
 | 
			
		||||
<h2>Version 6.x features</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Version 6.x of Mesa implements the OpenGL 1.5 API with the following
 | 
			
		||||
extensions incorporated as standard features:
 | 
			
		||||
@@ -283,13 +234,13 @@ GL_SRC2_ALPHA               GL_SOURCE2_ALPHA
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
See the
 | 
			
		||||
<a href="https://www.opengl.org/documentation/spec.html">
 | 
			
		||||
<a href="http://www.opengl.org/documentation/spec.html">
 | 
			
		||||
OpenGL specification</a> for more details.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Version 5.x features</h3>
 | 
			
		||||
<h2>Version 5.x features</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Version 5.x of Mesa implements the OpenGL 1.4 API with the following
 | 
			
		||||
extensions incorporated as standard features:
 | 
			
		||||
@@ -315,7 +266,7 @@ extensions incorporated as standard features:
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Version 4.x features</h3>
 | 
			
		||||
<h2>Version 4.x features</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Version 4.x of Mesa implements the OpenGL 1.3 API with the following
 | 
			
		||||
@@ -334,7 +285,7 @@ extensions incorporated as standard features:
 | 
			
		||||
<li>GL_ARB_transpose_matrix
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h3>Version 3.x features</h3>
 | 
			
		||||
<h2>Version 3.x features</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Version 3.x of Mesa implements the OpenGL 1.2 API with the following
 | 
			
		||||
@@ -350,7 +301,7 @@ features:
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Version 2.x features</h3>
 | 
			
		||||
<h2>Version 2.x features</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Version 2.x of Mesa implements the OpenGL 1.1 API with the following
 | 
			
		||||
features.
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ stderr if the LIBGL_DEBUG environment variable is defined.
 | 
			
		||||
libGL.so is thread safe.  The overhead of thread safety for common,
 | 
			
		||||
single-thread clients is negligible.  However, the overhead of thread
 | 
			
		||||
safety for multi-threaded clients is significant.  Each GL API call
 | 
			
		||||
requires two calls to pthread_get_specific() which can noticeably
 | 
			
		||||
requires two calls to pthread_get_specific() which can noticably
 | 
			
		||||
impact performance.  Warning:  libGL.so is thread safe but individual
 | 
			
		||||
DRI drivers may not be.  Please consult the documentation for a driver
 | 
			
		||||
to learn if it is thread safe.
 | 
			
		||||
@@ -59,7 +59,7 @@ to learn if it is thread safe.
 | 
			
		||||
Indirect Rendering
 | 
			
		||||
 | 
			
		||||
You can force indirect rendering mode by setting the LIBGL_ALWAYS_INDIRECT
 | 
			
		||||
environment variable to `true`.  Hardware acceleration will not be used.
 | 
			
		||||
environment variable.  Hardware acceleration will not be used.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,28 +2,26 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>License and Copyright</title>
 | 
			
		||||
  <title>License / Copyright Information</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>License and Copyright</h1>
 | 
			
		||||
 | 
			
		||||
<h2>Disclaimer</h2>
 | 
			
		||||
<h1>Disclaimer</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa is a 3-D graphics library with an API which is very similar to
 | 
			
		||||
that of <a href="https://www.opengl.org/">OpenGL</a>.*
 | 
			
		||||
that of <a href="http://www.opengl.org/">OpenGL</a>.*
 | 
			
		||||
To the extent that Mesa utilizes the OpenGL command syntax or state
 | 
			
		||||
machine, it is being used with authorization from <a
 | 
			
		||||
href="https://www.sgi.com/">Silicon Graphics,
 | 
			
		||||
href="http://www.sgi.com/">Silicon Graphics,
 | 
			
		||||
Inc.</a>(SGI). However, the author does not possess an OpenGL license
 | 
			
		||||
from SGI, and makes no claim that Mesa is in any way a compatible
 | 
			
		||||
replacement for OpenGL or associated with SGI. Those who want a
 | 
			
		||||
@@ -34,24 +32,24 @@ vendor.
 | 
			
		||||
<p>
 | 
			
		||||
Please do not refer to the library as <em>MesaGL</em> (for legal
 | 
			
		||||
reasons). It's just <em>Mesa</em> or <em>The Mesa 3-D graphics
 | 
			
		||||
library</em>.
 | 
			
		||||
library</em>. <br>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
* OpenGL is a trademark of <a href="https://www.sgi.com/"
 | 
			
		||||
* OpenGL is a trademark of <a href="http://www.sgi.com/"
 | 
			
		||||
>Silicon Graphics Incorporated</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>License / Copyright Information</h2>
 | 
			
		||||
<h1>License / Copyright Information</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The Mesa distribution consists of several components.  Different copyrights
 | 
			
		||||
and licenses apply to different components.
 | 
			
		||||
For example, the GLX client code uses the SGI Free Software License B, and
 | 
			
		||||
some of the Mesa device drivers are copyrighted by their authors.
 | 
			
		||||
See below for a list of Mesa's main components and the license for each.
 | 
			
		||||
and licenses apply to different components.  For example, some demo programs
 | 
			
		||||
are copyrighted by SGI, some of the Mesa device drivers are copyrighted by
 | 
			
		||||
their authors.  See below for a list of Mesa's main components and the license
 | 
			
		||||
for each.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
The core Mesa library is licensed according to the terms of the MIT license.
 | 
			
		||||
@@ -84,7 +82,7 @@ SOFTWARE.
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Attention, Contributors</h2>
 | 
			
		||||
<h1>Attention, Contributors</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
When contributing to the Mesa project you must agree to the licensing terms
 | 
			
		||||
@@ -94,24 +92,17 @@ and their respective licenses.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Mesa Component Licenses</h2>
 | 
			
		||||
<h1>Mesa Component Licenses</h1>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
Component         Location               License
 | 
			
		||||
------------------------------------------------------------------
 | 
			
		||||
Main Mesa code    src/mesa/              MIT
 | 
			
		||||
Main Mesa code    src/mesa/              Mesa (MIT)
 | 
			
		||||
 | 
			
		||||
Device drivers    src/mesa/drivers/*     MIT, generally
 | 
			
		||||
 | 
			
		||||
Gallium code      src/gallium/           MIT
 | 
			
		||||
 | 
			
		||||
Ext headers       include/GL/glext.h     Khronos
 | 
			
		||||
                  include/GL/glxext.h
 | 
			
		||||
 | 
			
		||||
GLX client code   src/glx/               SGI Free Software License B
 | 
			
		||||
 | 
			
		||||
C11 thread        include/c11/threads*.h Boost (permissive)
 | 
			
		||||
emulation
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,13 +2,13 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Mailing Lists</title>
 | 
			
		||||
  <title>Mesa Mailing Lists</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -21,23 +21,23 @@
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><p><a href="https://lists.freedesktop.org/mailman/listinfo/mesa-users">mesa-users</a>
 | 
			
		||||
<li><p><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-users">mesa-users</a>
 | 
			
		||||
- intended for end-users of Mesa and DRI drivers. Newbie questions are OK,
 | 
			
		||||
but please try the general OpenGL resources and Mesa/DRI documentation first.</p>
 | 
			
		||||
</li>
 | 
			
		||||
<li><p><a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev">mesa-dev</a>
 | 
			
		||||
<li><p><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev">mesa-dev</a>
 | 
			
		||||
- for Mesa, Gallium and DRI development
 | 
			
		||||
discussion.  Not for beginners.</p>
 | 
			
		||||
</li>
 | 
			
		||||
<li><p><a href="https://lists.freedesktop.org/mailman/listinfo/mesa-commit">mesa-commit</a>
 | 
			
		||||
<li><p><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-commit">mesa-commit</a>
 | 
			
		||||
- relays git check-in messages (for developers).
 | 
			
		||||
In general, people should not post to this list.</p>
 | 
			
		||||
</li>
 | 
			
		||||
<li><p><a href="https://lists.freedesktop.org/mailman/listinfo/mesa-announce">mesa-announce</a>
 | 
			
		||||
<li><p><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-announce">mesa-announce</a>
 | 
			
		||||
- announcements of new Mesa
 | 
			
		||||
versions are sent to this list.  Very low traffic.</p>
 | 
			
		||||
</li>
 | 
			
		||||
<li><p><a href="https://lists.freedesktop.org/mailman/listinfo/piglit">piglit</a>
 | 
			
		||||
<li><p><a href="http://lists.freedesktop.org/mailman/listinfo/piglit">piglit</a>
 | 
			
		||||
- for Piglit (OpenGL driver testing framework) discussion.</p>
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
@@ -56,33 +56,33 @@ Follow the links above for list archives.
 | 
			
		||||
<p>
 | 
			
		||||
The old Mesa lists hosted at SourceForge are no longer in use.
 | 
			
		||||
The archives are still available, however:
 | 
			
		||||
<a href="https://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-announce">mesa3d-announce</a>,
 | 
			
		||||
<a href="https://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-users">mesa3d-users</a>,
 | 
			
		||||
<a href="https://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-dev">mesa3d-dev</a>.
 | 
			
		||||
<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-announce">mesa3d-announce</a>,
 | 
			
		||||
<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-users">mesa3d-users</a>,
 | 
			
		||||
<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-dev">mesa3d-dev</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>For mailing lists about Direct Rendering Modules (drm) in Linux/BSD 
 | 
			
		||||
kernels, see the
 | 
			
		||||
<a href="https://dri.freedesktop.org/wiki/MailingLists">DRI wiki</a>.
 | 
			
		||||
<a href="http://dri.freedesktop.org/wiki/MailingLists">DRI wiki</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>IRC</h2>
 | 
			
		||||
<h1>IRC</h1>
 | 
			
		||||
 | 
			
		||||
<p>join <a href="irc://chat.freenode.net#dri-devel">#dri-devel channel</a>
 | 
			
		||||
on <a href="https://webchat.freenode.net/">irc.freenode.net</a>
 | 
			
		||||
on <a href="http://webchat.freenode.net/">irc.freenode.net</a>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>OpenGL Forums</h2>
 | 
			
		||||
<h1>OpenGL Forums</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Here are some other OpenGL-related forums you might find useful:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="https://www.opengl.org/discussion_boards/">OpenGL discussion forums</a>
 | 
			
		||||
<li><a href="http://www.opengl.org/cgi-bin/ubb/ultimatebb.cgi">OpenGL discussion forums</a>
 | 
			
		||||
at www.opengl.org</li>
 | 
			
		||||
<li>Usenet newsgroups:
 | 
			
		||||
<ul>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,27 +2,25 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Gallium LLVMpipe Driver</title>
 | 
			
		||||
  <title>llvmpipe</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Gallium LLVMpipe Driver</h1>
 | 
			
		||||
 | 
			
		||||
<h2>Introduction</h2>
 | 
			
		||||
<h1>Introduction</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The Gallium llvmpipe driver is a software rasterizer that uses LLVM to
 | 
			
		||||
do runtime code generation.
 | 
			
		||||
Shaders, point/line/triangle rasterization and vertex processing are
 | 
			
		||||
implemented with LLVM IR which is translated to x86, x86-64, or ppc64le machine
 | 
			
		||||
implemented with LLVM IR which is translated to x86 or x86-64 machine
 | 
			
		||||
code.
 | 
			
		||||
Also, the driver is multithreaded to take advantage of multiple CPU cores
 | 
			
		||||
(up to 8 at this time).
 | 
			
		||||
@@ -30,40 +28,32 @@ It's the fastest software rasterizer for Mesa.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Requirements</h2>
 | 
			
		||||
<h1>Requirements</h1>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>
 | 
			
		||||
   <p>An x86 or amd64 processor; 64-bit mode recommended.</p>
 | 
			
		||||
   <p>
 | 
			
		||||
   For x86 or amd64 processors, 64-bit mode is recommended.
 | 
			
		||||
   Support for SSE2 is strongly encouraged.  Support for SSE3 and SSE4.1 will
 | 
			
		||||
   Support for SSE2 is strongly encouraged.  Support for SSSE3 and SSE4.1 will
 | 
			
		||||
   yield the most efficient code.  The fewer features the CPU has the more
 | 
			
		||||
   likely it is that you will run into underperforming, buggy, or incomplete code.
 | 
			
		||||
   likely is that you run into underperforming, buggy, or incomplete code.
 | 
			
		||||
   </p>
 | 
			
		||||
   <p>
 | 
			
		||||
   For ppc64le processors, use of the Altivec feature (the Vector
 | 
			
		||||
   Facility) is recommended if supported; use of the VSX feature (the
 | 
			
		||||
   Vector-Scalar Facility) is recommended if supported AND Mesa is
 | 
			
		||||
   built with LLVM version 4.0 or later.
 | 
			
		||||
   </p>
 | 
			
		||||
   <p>
 | 
			
		||||
   See <code>/proc/cpuinfo</code> to know what your CPU supports.
 | 
			
		||||
   See /proc/cpuinfo to know what your CPU supports.
 | 
			
		||||
   </p>
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
   <p>Unless otherwise stated, LLVM version 3.4 is recommended; 3.3 or later is required.</p>
 | 
			
		||||
   <p>LLVM: version 2.9 recommended; 2.6 or later required.</p>
 | 
			
		||||
   <p><b>NOTE</b>: LLVM 2.8 and earlier will not work on systems that support the
 | 
			
		||||
   Intel AVX extensions (e.g. Sandybridge).  LLVM's code generator will
 | 
			
		||||
   fail when trying to emit AVX instructions.  This was fixed in LLVM 2.9.
 | 
			
		||||
   </p>
 | 
			
		||||
   <p>
 | 
			
		||||
   For Linux, on a recent Debian based distribution do:
 | 
			
		||||
   </p>
 | 
			
		||||
<pre>
 | 
			
		||||
     aptitude install llvm-dev
 | 
			
		||||
</pre>
 | 
			
		||||
   <p>
 | 
			
		||||
   If you want development snapshot builds of LLVM for Debian and derived
 | 
			
		||||
   distributions like Ubuntu, you can use the APT repository at <a
 | 
			
		||||
   href="https://apt.llvm.org/" title="Debian Development packages for LLVM"
 | 
			
		||||
   >apt.llvm.org</a>, which are maintained by Debian's LLVM maintainer.
 | 
			
		||||
   </p>
 | 
			
		||||
   <p>
 | 
			
		||||
   For a RPM-based distribution do:
 | 
			
		||||
   </p>
 | 
			
		||||
@@ -72,40 +62,17 @@ It's the fastest software rasterizer for Mesa.
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
   <p>
 | 
			
		||||
   For Windows you will need to build LLVM from source with MSVC or MINGW
 | 
			
		||||
   (either natively or through cross compilers) and CMake, and set the
 | 
			
		||||
   <code>LLVM</code> environment variable to the directory you installed
 | 
			
		||||
   it to.
 | 
			
		||||
	 For Windows you will need to build LLVM from source with MSVC or MINGW
 | 
			
		||||
	 (either natively or through cross compilers) and CMake, and set the LLVM
 | 
			
		||||
	 environment variable to the directory you installed it to.
 | 
			
		||||
 | 
			
		||||
   LLVM will be statically linked, so when building on MSVC it needs to be
 | 
			
		||||
   built with a matching CRT as Mesa, and you'll need to pass
 | 
			
		||||
   <code>-DLLVM_USE_CRT_xxx=yyy</code> as described below.
 | 
			
		||||
   </p>
 | 
			
		||||
   -DLLVM_USE_CRT_RELEASE=MTd for debug and checked builds,
 | 
			
		||||
   -DLLVM_USE_CRT_RELEASE=MTd for profile and release builds.
 | 
			
		||||
 | 
			
		||||
   <table border="1">
 | 
			
		||||
     <tr>
 | 
			
		||||
       <th rowspan="2">LLVM build-type</th>
 | 
			
		||||
       <th colspan="2" align="center">Mesa build-type</th>
 | 
			
		||||
     </tr>
 | 
			
		||||
     <tr>
 | 
			
		||||
       <th>debug,checked</th>
 | 
			
		||||
       <th>release,profile</th>
 | 
			
		||||
     </tr>
 | 
			
		||||
     <tr>
 | 
			
		||||
       <th>Debug</th>
 | 
			
		||||
       <td><code>-DLLVM_USE_CRT_DEBUG=MTd</code></td>
 | 
			
		||||
       <td><code>-DLLVM_USE_CRT_DEBUG=MT</code></td>
 | 
			
		||||
     </tr>
 | 
			
		||||
     <tr>
 | 
			
		||||
       <th>Release</th>
 | 
			
		||||
       <td><code>-DLLVM_USE_CRT_RELEASE=MTd</code></td>
 | 
			
		||||
       <td><code>-DLLVM_USE_CRT_RELEASE=MT</code></td>
 | 
			
		||||
     </tr>
 | 
			
		||||
   </table>
 | 
			
		||||
 | 
			
		||||
   <p>
 | 
			
		||||
   You can build only the x86 target by passing
 | 
			
		||||
   <code>-DLLVM_TARGETS_TO_BUILD=X86</code> to cmake.
 | 
			
		||||
   You can build only the x86 target by passing -DLLVM_TARGETS_TO_BUILD=X86
 | 
			
		||||
   to cmake.
 | 
			
		||||
   </p>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
@@ -115,7 +82,7 @@ It's the fastest software rasterizer for Mesa.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Building</h2>
 | 
			
		||||
<h1>Building</h1>
 | 
			
		||||
 | 
			
		||||
To build everything on Linux invoke scons as:
 | 
			
		||||
 | 
			
		||||
@@ -123,12 +90,10 @@ To build everything on Linux invoke scons as:
 | 
			
		||||
  scons build=debug libgl-xlib
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
Alternatively, you can build it with meson with:
 | 
			
		||||
Alternatively, you can build it with GNU make, if you prefer, by invoking it as
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  mkdir build
 | 
			
		||||
  cd build
 | 
			
		||||
  meson -D glx=gallium-xlib -D gallium-drivers=swrast
 | 
			
		||||
  ninja
 | 
			
		||||
  make linux-llvm
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
but the rest of these instructions assume that scons is used.
 | 
			
		||||
@@ -136,16 +101,13 @@ but the rest of these instructions assume that scons is used.
 | 
			
		||||
For Windows the procedure is similar except the target:
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  scons platform=windows build=debug libgl-gdi
 | 
			
		||||
  scons build=debug libgl-gdi
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Using</h2>
 | 
			
		||||
<h1>Using</h1>
 | 
			
		||||
 | 
			
		||||
<h3>Linux</h3>
 | 
			
		||||
 | 
			
		||||
<p>On Linux, building will create a drop-in alternative for
 | 
			
		||||
<code>libGL.so</code> into</p>
 | 
			
		||||
On Linux, building will create a drop-in alternative for libGL.so into
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  build/foo/gallium/targets/libgl-xlib/libGL.so
 | 
			
		||||
@@ -155,52 +117,18 @@ or
 | 
			
		||||
  lib/gallium/libGL.so
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>To use it set the <code>LD_LIBRARY_PATH</code> environment variable
 | 
			
		||||
accordingly.</p>
 | 
			
		||||
To use it set the LD_LIBRARY_PATH environment variable accordingly.
 | 
			
		||||
 | 
			
		||||
<p>For performance evaluation pass <code>build=release</code> to scons,
 | 
			
		||||
and use the corresponding lib directory without the <code>-debug</code>
 | 
			
		||||
suffix.</p>
 | 
			
		||||
For performance evaluation pass debug=no to scons, and use the corresponding
 | 
			
		||||
lib directory without the "-debug" suffix.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Windows</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
On Windows, building will create
 | 
			
		||||
<code>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll</code>
 | 
			
		||||
which is a drop-in alternative for system's <code>opengl32.dll</code>.  To use
 | 
			
		||||
it put it in the same directory as your application.  It can also be used by
 | 
			
		||||
On Windows, building will create a drop-in alternative for opengl32.dll. To use
 | 
			
		||||
it put it in the same directory as the application. It can also be used by
 | 
			
		||||
replacing the native ICD driver, but it's quite an advanced usage, so if you
 | 
			
		||||
need to ask, don't even try it.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
There is however an easy way to replace the OpenGL software renderer that comes
 | 
			
		||||
with Microsoft Windows 7 (or later) with llvmpipe (that is, on systems without
 | 
			
		||||
any OpenGL drivers):
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
  <li><p>copy <code>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll</code>
 | 
			
		||||
         to <code>C:\Windows\SysWOW64\mesadrv.dll</code>
 | 
			
		||||
  </p></li>
 | 
			
		||||
  <li><p>load this registry settings:</p>
 | 
			
		||||
  <pre>REGEDIT4
 | 
			
		||||
 | 
			
		||||
; https://technet.microsoft.com/en-us/library/cc749368.aspx
 | 
			
		||||
; https://www.msfn.org/board/topic/143241-portable-windows-7-build-from-winpe-30/page-5#entry942596
 | 
			
		||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL]
 | 
			
		||||
"DLL"="mesadrv.dll"
 | 
			
		||||
"DriverVersion"=dword:00000001
 | 
			
		||||
"Flags"=dword:00000001
 | 
			
		||||
"Version"=dword:00000002
 | 
			
		||||
</pre>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li>Ditto for 64 bits drivers if you need them.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Profiling</h2>
 | 
			
		||||
<h1>Profiling</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To profile llvmpipe you should build as
 | 
			
		||||
@@ -214,10 +142,10 @@ This will ensure that frame pointers are used both in C and JIT functions, and
 | 
			
		||||
that no tail call optimizations are done by gcc.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>Linux perf integration</h3>
 | 
			
		||||
<h2>Linux perf integration</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
On Linux, it is possible to have symbol resolution of JIT code with <a href="https://perf.wiki.kernel.org/">Linux perf</a>:
 | 
			
		||||
On Linux, it is possible to have symbol resolution of JIT code with <a href="http://perf.wiki.kernel.org/">Linux perf</a>:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
@@ -226,118 +154,60 @@ On Linux, it is possible to have symbol resolution of JIT code with <a href="htt
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
When run inside Linux perf, llvmpipe will create a
 | 
			
		||||
<code>/tmp/perf-XXXXX.map</code> file with symbol address table.  It also
 | 
			
		||||
dumps assembly code to <code>/tmp/perf-XXXXX.map.asm</code>, which can be
 | 
			
		||||
used by the <code>bin/perf-annotate-jit.py</code> script to produce
 | 
			
		||||
disassembly of the generated code annotated with the samples.
 | 
			
		||||
When run inside Linux perf, llvmpipe will create a /tmp/perf-XXXXX.map file with
 | 
			
		||||
symbol address table.  It also dumps assembly code to /tmp/perf-XXXXX.map.asm,
 | 
			
		||||
which can be used by the bin/perf-annotate-jit script to produce disassembly of
 | 
			
		||||
the generated code annotated with the samples.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>You can obtain a call graph via
 | 
			
		||||
<a href="https://github.com/jrfonseca/gprof2dot#linux-perf">Gprof2Dot</a>.</p>
 | 
			
		||||
<a href="http://code.google.com/p/jrfonseca/wiki/Gprof2Dot#linux_perf">Gprof2Dot</a>.</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Unit testing</h2>
 | 
			
		||||
<h1>Unit testing</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Building will also create several unit tests in
 | 
			
		||||
<code>build/linux-???-debug/gallium/drivers/llvmpipe</code>:
 | 
			
		||||
build/linux-???-debug/gallium/drivers/llvmpipe:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li> <code>lp_test_blend</code>: blending
 | 
			
		||||
<li> <code>lp_test_conv</code>: SIMD vector conversion
 | 
			
		||||
<li> <code>lp_test_format</code>: pixel unpacking/packing
 | 
			
		||||
<li> lp_test_blend: blending
 | 
			
		||||
<li> lp_test_conv: SIMD vector conversion
 | 
			
		||||
<li> lp_test_format: pixel unpacking/packing
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Some of these tests can output results and benchmarks to a tab-separated file
 | 
			
		||||
for later analysis, e.g.:
 | 
			
		||||
Some of this tests can output results and benchmarks to a tab-separated-file
 | 
			
		||||
for posterior analysis, e.g.:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
  build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend -o blend.tsv
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Development Notes</h2>
 | 
			
		||||
<h1>Development Notes</h1>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>
 | 
			
		||||
  When looking at this code for the first time, start in lp_state_fs.c, and
 | 
			
		||||
  then skim through the <code>lp_bld_*</code> functions called there, and
 | 
			
		||||
  the comments at the top of the <code>lp_bld_*.c</code> functions.
 | 
			
		||||
  When looking to this code by the first time start in lp_state_fs.c, and 
 | 
			
		||||
  then skim through the lp_bld_* functions called in there, and the comments
 | 
			
		||||
  at the top of the lp_bld_*.c functions.
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
  The driver-independent parts of the LLVM / Gallium code are found in
 | 
			
		||||
  <code>src/gallium/auxiliary/gallivm/</code>.  The filenames and function
 | 
			
		||||
  prefixes need to be renamed from <code>lp_bld_</code> to something else
 | 
			
		||||
  though.
 | 
			
		||||
  src/gallium/auxiliary/gallivm/.  The filenames and function prefixes
 | 
			
		||||
  need to be renamed from "lp_bld_" to something else though.
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
  We use LLVM-C bindings for now. They are not documented, but follow the C++
 | 
			
		||||
  interfaces very closely, and appear to be complete enough for code
 | 
			
		||||
  generation. See 
 | 
			
		||||
  <a href="https://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html">
 | 
			
		||||
  this stand-alone example</a>.  See the <code>llvm-c/Core.h</code> file for
 | 
			
		||||
  reference.
 | 
			
		||||
  http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html
 | 
			
		||||
  for a stand-alone example.  See the llvm-c/Core.h file for reference.
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2 id="recommended_reading">Recommended Reading</h2>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>
 | 
			
		||||
    <p>Rasterization</p>
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li><a href="https://www.cs.unc.edu/~olano/papers/2dh-tri/">Triangle Scan Conversion using 2D Homogeneous Coordinates</a></li>
 | 
			
		||||
      <li><a href="http://www.drdobbs.com/parallel/rasterization-on-larrabee/217200602">Rasterization on Larrabee</a> (<a href="http://devmaster.net/posts/2887/rasterization-on-larrabee">DevMaster copy</a>)</li>
 | 
			
		||||
      <li><a href="http://devmaster.net/posts/6133/rasterization-using-half-space-functions">Rasterization using half-space functions</a></li>
 | 
			
		||||
      <li><a href="http://devmaster.net/posts/6145/advanced-rasterization">Advanced Rasterization</a></li>
 | 
			
		||||
      <li><a href="https://fgiesen.wordpress.com/2013/02/17/optimizing-sw-occlusion-culling-index/">Optimizing Software Occlusion Culling</a></li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li>
 | 
			
		||||
    <p>Texture sampling</p>
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li><a href="http://chrishecker.com/Miscellaneous_Technical_Articles#Perspective_Texture_Mapping">Perspective Texture Mapping</a></li>
 | 
			
		||||
      <li><a href="https://www.flipcode.com/archives/Texturing_As_In_Unreal.shtml">Texturing As In Unreal</a></li>
 | 
			
		||||
      <li><a href="http://www.gamasutra.com/view/feature/3301/runtime_mipmap_filtering.php">Run-Time MIP-Map Filtering</a></li>
 | 
			
		||||
      <li><a href="http://alt.3dcenter.org/artikel/2003/10-26_a_english.php">Will "brilinear" filtering persist?</a></li>
 | 
			
		||||
      <li><a href="http://ixbtlabs.com/articles2/gffx/nv40-rx800-3.html">Trilinear filtering</a></li>
 | 
			
		||||
      <li><a href="http://devmaster.net/posts/12785/texture-swizzling">Texture Swizzling</a></li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li>
 | 
			
		||||
    <p>SIMD</p>
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li><a href="http://www.cdl.uni-saarland.de/projects/wfv/#header4">Whole-Function Vectorization</a></li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li>
 | 
			
		||||
    <p>Optimization</p>
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li><a href="http://www.drdobbs.com/optimizing-pixomatic-for-modern-x86-proc/184405807">Optimizing Pixomatic For Modern x86 Processors</a></li>
 | 
			
		||||
      <li><a href="http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html">Intel 64 and IA-32 Architectures Optimization Reference Manual</a></li>
 | 
			
		||||
      <li><a href="http://www.agner.org/optimize/">Software optimization resources</a></li>
 | 
			
		||||
      <li><a href="https://software.intel.com/en-us/articles/intel-intrinsics-guide">Intel Intrinsics Guide</a></li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li>
 | 
			
		||||
    <p>LLVM</p>
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li><a href="http://llvm.org/docs/LangRef.html">LLVM Language Reference Manual</a></li>
 | 
			
		||||
      <li><a href="https://npcontemplation.blogspot.co.uk/2008/06/secret-of-llvm-c-bindings.html">The secret of LLVM C bindings</a></li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li>
 | 
			
		||||
    <p>General</p>
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li><a href="https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/">A trip through the Graphics Pipeline</a></li>
 | 
			
		||||
      <li><a href="https://msdn.microsoft.com/en-us/library/gg615082.aspx#architecture">WARP Architecture and Performance</a></li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								docs/mangling.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								docs/mangling.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
<!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>Function Name Mangling</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>Function Name Mangling</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
If you want to use both Mesa and another OpenGL library in the same
 | 
			
		||||
application at the same time you may find it useful to compile Mesa with
 | 
			
		||||
<i>name mangling</i>.
 | 
			
		||||
This results in all the Mesa functions being prefixed with
 | 
			
		||||
<b>mgl</b> instead of <b>gl</b>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To do this, recompile Mesa with the compiler flag -DUSE_MGL_NAMESPACE.
 | 
			
		||||
Add the flag to CFLAGS in the configuration file which you want to use.
 | 
			
		||||
For example:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
CFLAGS += -DUSE_MGL_NAMESPACE
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -3,48 +3,61 @@ body {
 | 
			
		||||
	background-color: #ffffff;
 | 
			
		||||
	font: 14px 'Lucida Grande', Geneva, Arial, Verdana, sans-serif;
 | 
			
		||||
	color: black;
 | 
			
		||||
 	link: #111188;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h1 {
 | 
			
		||||
	font-size: 24px;
 | 
			
		||||
	font: 24px 'Lucida Grande', Geneva, Arial, Verdana, sans-serif;
 | 
			
		||||
	font-weight: bold;
 | 
			
		||||
	color: black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h2 {
 | 
			
		||||
	font-size: 18px;
 | 
			
		||||
	font: 18px 'Lucida Grande', Geneva, Arial, Verdana, sans-serif, bold;
 | 
			
		||||
	font-weight: bold;
 | 
			
		||||
	color: black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
code {
 | 
			
		||||
	font-family: monospace;
 | 
			
		||||
	font-size: 10pt;
 | 
			
		||||
	color: black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
	/*font-family: monospace;*/
 | 
			
		||||
	font-size: 10pt;
 | 
			
		||||
	background-color: #eee;
 | 
			
		||||
	margin-left: 2em;
 | 
			
		||||
	padding: .5em;
 | 
			
		||||
	/*color: black;*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
iframe {
 | 
			
		||||
	width: 19em;
 | 
			
		||||
	height: 80em;
 | 
			
		||||
	border: none;
 | 
			
		||||
	float: left;
 | 
			
		||||
  width: 19em;
 | 
			
		||||
  height: 80em;
 | 
			
		||||
  border: none;
 | 
			
		||||
  float: left;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.content {
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	left: 20em;
 | 
			
		||||
	right: 10px;
 | 
			
		||||
	overflow: hidden;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  left: 20em;
 | 
			
		||||
  right: 10px;
 | 
			
		||||
  overflow: hidden
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.header {
 | 
			
		||||
	background: url('gears.png') 15px no-repeat, black url('gears.png') right no-repeat;
 | 
			
		||||
	padding: 1.75rem;
 | 
			
		||||
	text-align: center;
 | 
			
		||||
	color: white;
 | 
			
		||||
	font: x-large sans-serif;
 | 
			
		||||
  background: black url('gears.png') 15px no-repeat;
 | 
			
		||||
  margin:0;
 | 
			
		||||
  padding: 5px;
 | 
			
		||||
  clear:both;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.header h1 {
 | 
			
		||||
  background: url('gears.png') right no-repeat;
 | 
			
		||||
  color: white;
 | 
			
		||||
  font: x-large sans-serif;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  height: 50px;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  padding-top: 30px;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										424
									
								
								docs/meson.html
									
									
									
									
									
								
							
							
						
						
									
										424
									
								
								docs/meson.html
									
									
									
									
									
								
							@@ -1,424 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Compilation and Installation Using Meson</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Compilation and Installation Using Meson</h1>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
  <li><a href="#intro">Introduction</a></li>
 | 
			
		||||
  <li><a href="#basic">Basic Usage</a></li>
 | 
			
		||||
  <li><a href="#advanced">Advanced Usage</a></li>
 | 
			
		||||
  <li><a href="#cross-compilation">Cross-compilation and 32-bit builds</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2 id="intro">1. Introduction</h2>
 | 
			
		||||
 | 
			
		||||
<p>For general information about Meson see the
 | 
			
		||||
<a href="http://mesonbuild.com/">Meson website</a>.</p>
 | 
			
		||||
 | 
			
		||||
<p><strong>Mesa's Meson build system is generally considered stable and ready
 | 
			
		||||
for production.</strong></p>
 | 
			
		||||
 | 
			
		||||
<p>The Meson build of Mesa is tested on Linux, macOS, Cygwin and Haiku, FreeBSD,
 | 
			
		||||
DragonflyBSD, NetBSD, and should work on OpenBSD.</p>
 | 
			
		||||
 | 
			
		||||
<p>If Meson is not already installed on your system, you can typically
 | 
			
		||||
install it with your package installer.  For example:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
sudo apt-get install meson   # Ubuntu
 | 
			
		||||
</pre>
 | 
			
		||||
or
 | 
			
		||||
<pre>
 | 
			
		||||
sudo dnf install meson   # Fedora
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p><strong>Mesa requires Meson >= 0.46.0 to build.</strong>
 | 
			
		||||
 | 
			
		||||
Some older versions of meson do not check that they are too old and will error
 | 
			
		||||
out in odd ways.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>You'll also need <a href="https://ninja-build.org/">Ninja</a>.
 | 
			
		||||
If it's not already installed, use apt-get or dnf to install
 | 
			
		||||
the <em>ninja-build</em> package.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2 id="basic">2. Basic Usage</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The meson program is used to configure the source directory and generates
 | 
			
		||||
either a ninja build file or Visual Studio® build files. The latter must
 | 
			
		||||
be enabled via the <code>--backend</code> switch, as ninja is the default
 | 
			
		||||
backend on all
 | 
			
		||||
operating systems.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Meson only supports out-of-tree builds, and must be passed a
 | 
			
		||||
directory to put built and generated sources into. We'll call that directory
 | 
			
		||||
"build" here.
 | 
			
		||||
It's recommended to create a
 | 
			
		||||
<a href="http://mesonbuild.com/Using-multiple-build-directories.html">
 | 
			
		||||
separate build directory</a> for each configuration you might want to use.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>Basic configuration is done with:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
meson build/
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
This will create the build directory.
 | 
			
		||||
If any dependencies are missing, you can install them, or try to remove
 | 
			
		||||
the dependency with a Meson configuration option (see below).
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To review the options which Meson chose, run:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
meson configure build/
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Meson does not currently support listing configuration options before
 | 
			
		||||
running "meson build/" but this feature is being discussed upstream.
 | 
			
		||||
For now, we have a <code>bin/meson-options.py</code> script that prints
 | 
			
		||||
the options for you.
 | 
			
		||||
If that script doesn't work for some reason, you can always look in the
 | 
			
		||||
<a href="https://gitlab.freedesktop.org/mesa/mesa/blob/master/meson_options.txt">
 | 
			
		||||
meson_options.txt</a> file at the root of the project.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
With additional arguments <code>meson configure</code> can be used to change
 | 
			
		||||
options for a previously configured build directory.
 | 
			
		||||
All options passed to this command are in the form
 | 
			
		||||
<code>-D "option"="value"</code>.
 | 
			
		||||
For example:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
meson configure build/ -Dprefix=/tmp/install -Dglx=true
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Note that options taking lists (such as <code>platforms</code>) are
 | 
			
		||||
<a href="http://mesonbuild.com/Build-options.html#using-build-options">a bit
 | 
			
		||||
more complicated</a>, but the simplest form compatible with Mesa options
 | 
			
		||||
is to use a comma to separate values (<code>-D platforms=drm,wayland</code>)
 | 
			
		||||
and brackets to represent an empty list (<code>-D platforms=[]</code>).
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Once you've run the initial <code>meson</code> command successfully you can use
 | 
			
		||||
your configured backend to build the project in your build directory:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
ninja -C build/
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The next step is to install the Mesa libraries, drivers, etc.
 | 
			
		||||
This also finishes up some final steps of the build process (such as creating
 | 
			
		||||
symbolic links for drivers).  To install:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
ninja -C build/ install
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Note: autotools automatically updated translation files (used by the DRI
 | 
			
		||||
configuration tool) as part of the build process,
 | 
			
		||||
Meson does not do this.  Instead, you will need do this:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
ninja -C build/ xmlpool-pot xmlpool-update-po xmlpool-gmo
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<h2 id="advanced">3. Advanced Usage</h2>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
 | 
			
		||||
<dt>Installation Location</dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<p>
 | 
			
		||||
Meson default to installing libGL.so in your system's main lib/ directory
 | 
			
		||||
and DRI drivers to a dri/ subdirectory.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Developers will often want to install Mesa to a testing directory rather
 | 
			
		||||
than the system library directory.
 | 
			
		||||
This can be done with the --prefix option.  For example:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
meson --prefix="${PWD}/build/install" build/
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
will put the final libraries and drivers into the build/install/
 | 
			
		||||
directory.
 | 
			
		||||
Then you can set LD_LIBRARY_PATH and LIBGL_DRIVERS_PATH to that location
 | 
			
		||||
to run/test the driver.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Meson also honors <code>DESTDIR</code> for installs.
 | 
			
		||||
</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt>Compiler Options</dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<p>Meson supports the common CFLAGS, CXXFLAGS, etc. environment
 | 
			
		||||
variables but their use is discouraged because of the many caveats
 | 
			
		||||
in using them.
 | 
			
		||||
</p>
 | 
			
		||||
<p>Instead, it is recomended to use <code>-D${lang}_args</code> and
 | 
			
		||||
<code>-D${lang}_link_args</code>. Among the benefits of these options
 | 
			
		||||
is that they are guaranteed to persist across rebuilds and reconfigurations.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
This example sets -fmax-errors for compiling C sources and -DMAGIC=123
 | 
			
		||||
for C++ sources:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
meson builddir/ -Dc_args=-fmax-errors=10 -Dcpp_args=-DMAGIC=123
 | 
			
		||||
</pre>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dt>Compiler Specification</dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<p>
 | 
			
		||||
Meson supports the standard CC and CXX environment variables for
 | 
			
		||||
changing the default compiler.  Note that Meson does not allow
 | 
			
		||||
changing the compilers in a configured builddir so you will need
 | 
			
		||||
to create a new build dir for a different compiler.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
This is an example of specifying the clang compilers and cleaning
 | 
			
		||||
the build directory before reconfiguring with an extra C option:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
CC=clang CXX=clang++ meson build-clang
 | 
			
		||||
ninja -C build-clang
 | 
			
		||||
ninja -C build-clang clean
 | 
			
		||||
meson configure build -Dc_args="-Wno-typedef-redefinition"
 | 
			
		||||
ninja -C build-clang
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
The default compilers depends on your operating system. Meson supports most of
 | 
			
		||||
the popular compilers, a complete list is available
 | 
			
		||||
<a href="http://mesonbuild.com/Reference-tables.html#compiler-ids">here</a>.
 | 
			
		||||
</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt>LLVM</dt>
 | 
			
		||||
<dd><p>Meson includes upstream logic to wrap llvm-config using its standard
 | 
			
		||||
dependency interface.
 | 
			
		||||
</p></dd>
 | 
			
		||||
 | 
			
		||||
<dd><p>
 | 
			
		||||
As of meson 0.49.0 meson also has the concept of a
 | 
			
		||||
<a href="https://mesonbuild.com/Native-environments.html">"native file"</a>,
 | 
			
		||||
these files provide information about the native build environment (as opposed
 | 
			
		||||
to a cross build environment). They are ini formatted and can override where to
 | 
			
		||||
find llvm-config:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
custom-llvm.ini
 | 
			
		||||
<pre>
 | 
			
		||||
    [binaries]
 | 
			
		||||
    llvm-config = '/usr/local/bin/llvm/llvm-config'
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
Then configure meson:
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
    meson builddir/ --native-file custom-llvm.ini
 | 
			
		||||
</pre>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dd><p>
 | 
			
		||||
Meson < 0.49 doesn't support native files, so to specify a custom
 | 
			
		||||
<code>llvm-config</code> you need to modify your <code>$PATH</code> (or
 | 
			
		||||
<code>%PATH%</code> on windows), which will be searched for
 | 
			
		||||
<code>llvm-config</code>, <code>llvm-config<i>$version</i></code>,
 | 
			
		||||
and <code>llvm-config-<i>$version</i></code>:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
PATH=/path/to/folder/with/llvm-config:$PATH meson build
 | 
			
		||||
</pre>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dd><p>
 | 
			
		||||
For selecting llvm-config for cross compiling a
 | 
			
		||||
<a href="https://mesonbuild.com/Cross-compilation.html#defining-the-environment">"cross file"</a>
 | 
			
		||||
should be used. It uses the same format as the native file above:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>cross-llvm.ini</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    [binaries]
 | 
			
		||||
    ...
 | 
			
		||||
    llvm-config = '/usr/lib/llvm-config-32'
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>Then configure meson:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    meson builddir/ --cross-file cross-llvm.ini
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
See the <a href="#cross-compilation">Cross Compilation</a> section for more information.
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>PKG_CONFIG_PATH</code></dt>
 | 
			
		||||
<dd><p>The
 | 
			
		||||
<code>pkg-config</code> utility is a hard requirement for configuring and
 | 
			
		||||
building Mesa on Unix-like systems. It is used to search for external libraries
 | 
			
		||||
on the system. This environment variable is used to control the search path for
 | 
			
		||||
<code>pkg-config</code>. For instance, setting
 | 
			
		||||
<code>PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig</code> will search for package
 | 
			
		||||
metadata in <code>/usr/X11R6</code> before the standard directories.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
One of the oddities of meson is that some options are different when passed to
 | 
			
		||||
the <code>meson</code> than to <code>meson configure</code>. These options are
 | 
			
		||||
passed as --option=foo to <code>meson</code>, but -Doption=foo to <code>meson
 | 
			
		||||
configure</code>. Mesa defined options are always passed as -Doption=foo.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>For those coming from autotools be aware of the following:</p>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>--buildtype/-Dbuildtype</code></dt>
 | 
			
		||||
<dd><p>This option will set the compiler debug/optimisation levels to aid
 | 
			
		||||
debugging the Mesa libraries.</p>
 | 
			
		||||
 | 
			
		||||
<p>Note that in meson this defaults to <code>debugoptimized</code>, and
 | 
			
		||||
not setting it to <code>release</code> will yield non-optimal
 | 
			
		||||
performance and binary size. Not using <code>debug</code> may interfere
 | 
			
		||||
with debugging as some code and validation will be optimized away.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p> For those wishing to pass their own optimization flags, use the <code>plain</code>
 | 
			
		||||
buildtype, which causes meson to inject no additional compiler arguments, only
 | 
			
		||||
those in the C/CXXFLAGS and those that mesa itself defines.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>-Db_ndebug</code></dt>
 | 
			
		||||
<dd><p>This option controls assertions in meson projects. When set to <code>false</code>
 | 
			
		||||
(the default) assertions are enabled, when set to true they are disabled. This
 | 
			
		||||
is unrelated to the <code>buildtype</code>; setting the latter to
 | 
			
		||||
<code>release</code> will not turn off assertions.
 | 
			
		||||
</p>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
<h2 id="cross-compilation">4. Cross-compilation and 32-bit builds</h2>
 | 
			
		||||
 | 
			
		||||
<p><a href="https://mesonbuild.com/Cross-compilation.html">Meson supports
 | 
			
		||||
cross-compilation</a> by specifying a number of binary paths and
 | 
			
		||||
settings in a file and passing this file to <code>meson</code> or
 | 
			
		||||
<code>meson configure</code> with the <code>--cross-file</code>
 | 
			
		||||
parameter.</p>
 | 
			
		||||
 | 
			
		||||
<p>This file can live at any location, but you can use the bare filename
 | 
			
		||||
(without the folder path) if you put it in $XDG_DATA_HOME/meson/cross or
 | 
			
		||||
~/.local/share/meson/cross</p>
 | 
			
		||||
 | 
			
		||||
<p>Below are a few example of cross files, but keep in mind that you
 | 
			
		||||
will likely have to alter them for your system.</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Those running on ArchLinux can use the AUR-maintained packages for some
 | 
			
		||||
of those, as they'll have the right values for your system:
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li><a href="https://aur.archlinux.org/packages/meson-cross-x86-linux-gnu">meson-cross-x86-linux-gnu</a></li>
 | 
			
		||||
  <li><a href="https://aur.archlinux.org/packages/meson-cross-aarch64-linux-gnu">meson-cross-aarch64-linux-gnu</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
32-bit build on x86 linux:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
[binaries]
 | 
			
		||||
c = '/usr/bin/gcc'
 | 
			
		||||
cpp = '/usr/bin/g++'
 | 
			
		||||
ar = '/usr/bin/gcc-ar'
 | 
			
		||||
strip = '/usr/bin/strip'
 | 
			
		||||
pkgconfig = '/usr/bin/pkg-config-32'
 | 
			
		||||
llvm-config = '/usr/bin/llvm-config32'
 | 
			
		||||
 | 
			
		||||
[properties]
 | 
			
		||||
c_args = ['-m32']
 | 
			
		||||
c_link_args = ['-m32']
 | 
			
		||||
cpp_args = ['-m32']
 | 
			
		||||
cpp_link_args = ['-m32']
 | 
			
		||||
 | 
			
		||||
[host_machine]
 | 
			
		||||
system = 'linux'
 | 
			
		||||
cpu_family = 'x86'
 | 
			
		||||
cpu = 'i686'
 | 
			
		||||
endian = 'little'
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
64-bit build on ARM linux:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
[binaries]
 | 
			
		||||
c = '/usr/bin/aarch64-linux-gnu-gcc'
 | 
			
		||||
cpp = '/usr/bin/aarch64-linux-gnu-g++'
 | 
			
		||||
ar = '/usr/bin/aarch64-linux-gnu-gcc-ar'
 | 
			
		||||
strip = '/usr/bin/aarch64-linux-gnu-strip'
 | 
			
		||||
pkgconfig = '/usr/bin/aarch64-linux-gnu-pkg-config'
 | 
			
		||||
exe_wrapper = '/usr/bin/qemu-aarch64-static'
 | 
			
		||||
 | 
			
		||||
[host_machine]
 | 
			
		||||
system = 'linux'
 | 
			
		||||
cpu_family = 'aarch64'
 | 
			
		||||
cpu = 'aarch64'
 | 
			
		||||
endian = 'little'
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
64-bit build on x86 windows:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
[binaries]
 | 
			
		||||
c = '/usr/bin/x86_64-w64-mingw32-gcc'
 | 
			
		||||
cpp = '/usr/bin/x86_64-w64-mingw32-g++'
 | 
			
		||||
ar = '/usr/bin/x86_64-w64-mingw32-ar'
 | 
			
		||||
strip = '/usr/bin/x86_64-w64-mingw32-strip'
 | 
			
		||||
pkgconfig = '/usr/bin/x86_64-w64-mingw32-pkg-config'
 | 
			
		||||
exe_wrapper = 'wine'
 | 
			
		||||
 | 
			
		||||
[host_machine]
 | 
			
		||||
system = 'windows'
 | 
			
		||||
cpu_family = 'x86_64'
 | 
			
		||||
cpu = 'i686'
 | 
			
		||||
endian = 'little'
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -16,16 +16,16 @@
 | 
			
		||||
 | 
			
		||||
<h1>OpenGL ES</h1>
 | 
			
		||||
 | 
			
		||||
<p>Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0.  More information about
 | 
			
		||||
OpenGL ES can be found at <a href="https://www.khronos.org/opengles/">
 | 
			
		||||
https://www.khronos.org/opengles/</a>.</p>
 | 
			
		||||
<p>Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0.  More informations about
 | 
			
		||||
OpenGL ES can be found at <a href="http://www.khronos.org/opengles/">
 | 
			
		||||
http://www.khronos.org/opengles/</a>.</p>
 | 
			
		||||
 | 
			
		||||
<p>OpenGL ES depends on a working EGL implementation.  Please refer to
 | 
			
		||||
<a href="egl.html">Mesa EGL</a> for more information about EGL.</p>
 | 
			
		||||
 | 
			
		||||
<h2>Build the Libraries</h2>
 | 
			
		||||
<ol>
 | 
			
		||||
<li>Run <code>meson configure</code> with <code>-D gles1=true -D gles2=true</code> and enable the Gallium driver for your hardware.</li>
 | 
			
		||||
<li>Run <code>configure</code> with <code>--enable-gles1 --enable-gles2</code> and enable the Gallium driver for your hardware.</li>
 | 
			
		||||
<li>Build and install Mesa as usual.</li>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
@@ -33,7 +33,7 @@ Alternatively, if XCB-DRI2 is installed on the system, one can use
 | 
			
		||||
<code>egl_dri2</code> EGL driver with OpenGL|ES-enabled DRI drivers
 | 
			
		||||
 | 
			
		||||
<ol>
 | 
			
		||||
<li>Run <code>meson configure</code> with <code>-D gles1=true -D gles2=true</code>.</li>
 | 
			
		||||
<li>Run <code>configure</code> with <code>--enable-gles1 --enable-gles2</code>.</li>
 | 
			
		||||
<li>Build and install Mesa as usual.</li>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
@@ -48,7 +48,7 @@ EGL drivers for your hardware.</p>
 | 
			
		||||
 | 
			
		||||
<h3>Dispatch Table</h3>
 | 
			
		||||
 | 
			
		||||
<p>OpenGL ES has an additional indirection when dispatching functions</p>
 | 
			
		||||
<p>OpenGL ES has an additional indirection when dispatching fucntions</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  Mesa:       glFoo() --> _mesa_Foo()
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										59
									
								
								docs/openvg.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								docs/openvg.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
<!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>OpenVG State Tracker</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>OpenVG State Tracker</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The current version of the OpenVG state tracker implements OpenVG 1.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
More informations about OpenVG can be found at
 | 
			
		||||
<a href="http://www.khronos.org/openvg/">
 | 
			
		||||
http://www.khronos.org/openvg/</a> .
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
The OpenVG state tracker depends on the Gallium architecture and a working EGL implementation.
 | 
			
		||||
Please refer to <a href="egl.html">Mesa EGL</a> for more information about EGL.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Building the library</h2>
 | 
			
		||||
<ol>
 | 
			
		||||
<li>Run <code>configure</code> with <code>--enable-openvg</code> and
 | 
			
		||||
<code>--enable-gallium-egl</code>.  If you do not need OpenGL, you can add
 | 
			
		||||
<code>--disable-opengl</code> to save the compilation time.</li>
 | 
			
		||||
 | 
			
		||||
<li>Build and install Mesa as usual.</li>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
<h3>Sample build</h3>
 | 
			
		||||
A sample build looks as follows:
 | 
			
		||||
<pre>
 | 
			
		||||
  $ ./configure --disable-opengl --enable-openvg --enable-gallium-egl
 | 
			
		||||
  $ make
 | 
			
		||||
  $ make install
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>It will install <code>libOpenVG.so</code>, <code>libEGL.so</code>, and one
 | 
			
		||||
or more EGL drivers.</p>
 | 
			
		||||
 | 
			
		||||
<h2>OpenVG Demos</h2>
 | 
			
		||||
 | 
			
		||||
<p>OpenVG demos can be found in mesa/demos repository.</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -45,14 +45,14 @@ The OSMesa interface may be used with any of three software renderers:
 | 
			
		||||
There are several examples of OSMesa in the mesa/demos repository.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>Building OSMesa</h2>
 | 
			
		||||
<h1>Building OSMesa</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Configure and build Mesa with something like:
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
meson builddir -Dosmesa=gallium -Dgallium-drivers=swrast -Ddri-drivers=[] -Dvulkan-drivers=[] -Dprefix=$PWD/builddir/install
 | 
			
		||||
ninja -C builddir install
 | 
			
		||||
configure --enable-osmesa --disable-driglx-direct --disable-dri --with-gallium-drivers=swrast
 | 
			
		||||
make
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
@@ -63,12 +63,13 @@ Make sure you have LLVM installed first if you want to use the llvmpipe driver.
 | 
			
		||||
When the build is complete you should find:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
$PWD/builddir/install/lib/libOSMesa.so  (swrast-based OSMesa)
 | 
			
		||||
$PWD/builddir/install/lib/gallium/libOSMsea.so  (gallium-based OSMesa)
 | 
			
		||||
lib/libOSMesa.so  (swrast-based OSMesa)
 | 
			
		||||
lib/gallium/libOSMsea.so  (gallium-based OSMesa)
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Set your LD_LIBRARY_PATH to point to $PWD/builddir/install to use the libraries
 | 
			
		||||
Set your LD_LIBRARY_PATH to point to one directory or the other to select
 | 
			
		||||
the library you want to use.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										31
									
								
								docs/patents.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								docs/patents.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
ARB_texture_float:
 | 
			
		||||
 | 
			
		||||
    Silicon Graphics, Inc. owns US Patent #6,650,327, issued November 18,
 | 
			
		||||
    2003 [1].
 | 
			
		||||
 | 
			
		||||
    SGI believes this patent contains necessary IP for graphics systems
 | 
			
		||||
    implementing floating point rasterization and floating point
 | 
			
		||||
    framebuffer capabilities described in ARB_texture_float extension, and
 | 
			
		||||
    will discuss licensing on RAND terms, on an individual basis with
 | 
			
		||||
    companies wishing to use this IP in the context of conformant OpenGL
 | 
			
		||||
    implementations [2].
 | 
			
		||||
 | 
			
		||||
    The source code to implement ARB_texture_float extension is included
 | 
			
		||||
    and can be toggled on at compile time, for those who purchased a
 | 
			
		||||
    license from SGI, or are in a country where the patent does not apply,
 | 
			
		||||
    etc.
 | 
			
		||||
 | 
			
		||||
    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.
 | 
			
		||||
 | 
			
		||||
    You should contact a lawyer or SGI's legal department if you want to
 | 
			
		||||
    enable this extension.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[1] http://www.google.com/patents/about?id=mIIOAAAAEBAJ&dq=6650327
 | 
			
		||||
[2] http://www.opengl.org/registry/specs/ARB/texture_float.txt
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -45,7 +45,7 @@ Multiple filters can be used together.
 | 
			
		||||
<li>pp_nored, pp_nogreen, pp_noblue - set to 1 to remove the corresponding color channel.
 | 
			
		||||
These are basic filters for easy testing of the PP queue.
 | 
			
		||||
<li>pp_jimenezmlaa, pp_jimenezmlaa_color -
 | 
			
		||||
<a href="https://www.iryokufx.com/mlaa/" target=_blank>Jimenez's MLAA</a>
 | 
			
		||||
<a href="http://www.iryokufx.com/mlaa/" target=_blank>Jimenez's MLAA</a>
 | 
			
		||||
is a morphological antialiasing filter.
 | 
			
		||||
The two versions use depth and color data, respectively.
 | 
			
		||||
Which works better depends on the app - depth will not blur text, but it will
 | 
			
		||||
@@ -55,6 +55,10 @@ Numbers higher than 8 see minimizing gains.
 | 
			
		||||
<li>pp_celshade - set to 1 to enable cell shading (a more complex color filter).
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -20,16 +20,9 @@
 | 
			
		||||
In general, precompiled Mesa libraries are not available.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Some Linux distributions closely follow the latest Mesa releases. On others one
 | 
			
		||||
has to use unofficial channels.
 | 
			
		||||
However, some Linux distros (such as Ubuntu) seem to closely track
 | 
			
		||||
Mesa and often have the latest Mesa release available as an update.
 | 
			
		||||
</p>
 | 
			
		||||
<p>There are some general directions:</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Debian/Ubuntu based distros - PPA: xorg-edgers, oibaf and padoka</li>
 | 
			
		||||
<li>Fedora - Corp: erp and che</li>
 | 
			
		||||
<li>OpenSuse/SLES - OBS: X11:XOrg and pontostroy:X11</li>
 | 
			
		||||
<li>Gentoo/Archlinux - officially provided/supported</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,135 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Release Calendar</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Release Calendar</h1>
 | 
			
		||||
 | 
			
		||||
<h2>Overview</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa provides feature/development and stable releases.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The table below lists the date and release manager that is expected to do the
 | 
			
		||||
specific release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Regular updates will ensure that the schedule for the current and the next two
 | 
			
		||||
feature releases are shown in the table.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
In order to keep the whole releasing team up to date with the tools used, best
 | 
			
		||||
practices and other details, the member in charge of the next feature release
 | 
			
		||||
will be in constant rotation.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The way the release schedule works is explained
 | 
			
		||||
<a href="releasing.html#schedule" target="_parent">here</a>.
 | 
			
		||||
</p
 | 
			
		||||
>
 | 
			
		||||
<p>
 | 
			
		||||
Take a look <a href="submittingpatches.html#criteria" target="_parent">here</a>
 | 
			
		||||
if you'd like to nominate a patch in the next stable release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2 id="calendar">Calendar</h2>
 | 
			
		||||
 | 
			
		||||
<table border="1">
 | 
			
		||||
 | 
			
		||||
<tr>
 | 
			
		||||
<th>Branch</th>
 | 
			
		||||
<th>Expected date</th>
 | 
			
		||||
<th>Release</th>
 | 
			
		||||
<th>Release manager</th>
 | 
			
		||||
<th>Notes</th>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td rowspan="3">19.1</td>
 | 
			
		||||
<td>2019-08-20</td>
 | 
			
		||||
<td>19.1.5</td>
 | 
			
		||||
<td>Juan A. Suarez</td>
 | 
			
		||||
<td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>2019-09-03</td>
 | 
			
		||||
<td>19.1.6</td>
 | 
			
		||||
<td>Juan A. Suarez</td>
 | 
			
		||||
<td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>2019-09-17</td>
 | 
			
		||||
<td>19.1.7</td>
 | 
			
		||||
<td>Juan A. Suarez</td>
 | 
			
		||||
<td>Last planned 19.1.x release</td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td rowspan="4">19.2</td>
 | 
			
		||||
<td>2019-08-06</td>
 | 
			
		||||
<td>19.2.0-rc1</td>
 | 
			
		||||
<td>Emil Velikov</td>
 | 
			
		||||
<td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>2019-08-13</td>
 | 
			
		||||
<td>19.2.0-rc2</td>
 | 
			
		||||
<td>Emil Velikov</td>
 | 
			
		||||
<td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>2019-08-20</td>
 | 
			
		||||
<td>19.2.0-rc3</td>
 | 
			
		||||
<td>Emil Velikov</td>
 | 
			
		||||
<td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>2019-08-27</td>
 | 
			
		||||
<td>19.2.0-rc4</td>
 | 
			
		||||
<td>Emil Velikov</td>
 | 
			
		||||
<td>Last planned RC/Final release</td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td rowspan="4">19.3</td>
 | 
			
		||||
<td>2019-10-15</td>
 | 
			
		||||
<td>19.3.0-rc1</td>
 | 
			
		||||
<td>Dylan Baker</td>
 | 
			
		||||
<td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>2019-10-22</td>
 | 
			
		||||
<td>19.3.0-rc2</td>
 | 
			
		||||
<td>Dylan Baker</td>
 | 
			
		||||
<td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>2019-10-29</td>
 | 
			
		||||
<td>19.3.0-rc3</td>
 | 
			
		||||
<td>Dylan Baker</td>
 | 
			
		||||
<td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>2019-11-05</td>
 | 
			
		||||
<td>19.3.0-rc4</td>
 | 
			
		||||
<td>Dylan Baker</td>
 | 
			
		||||
<td>Last planned RC/Final release</td>
 | 
			
		||||
</tr>
 | 
			
		||||
</table>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,642 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Releasing Process</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1>Releasing Process</h1>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="#overview">Overview</a>
 | 
			
		||||
<li><a href="#schedule">Release schedule</a>
 | 
			
		||||
<li><a href="#pickntest">Cherry-pick and test</a>
 | 
			
		||||
<li><a href="#stagingbranch">Staging branch</a>
 | 
			
		||||
<li><a href="#branch">Making a branchpoint</a>
 | 
			
		||||
<li><a href="#prerelease">Pre-release announcement</a>
 | 
			
		||||
<li><a href="#release">Making a new release</a>
 | 
			
		||||
<li><a href="#announce">Announce the release</a>
 | 
			
		||||
<li><a href="#website">Update the mesa3d.org website</a>
 | 
			
		||||
<li><a href="#bugzilla">Update Bugzilla</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="overview">Overview</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
This document uses the convention X.Y.Z for the release number with X.Y being
 | 
			
		||||
the stable branch name.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa provides feature and bugfix releases. Former use zero as patch version (Z),
 | 
			
		||||
while the latter have a non-zero one.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
For example:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	Mesa 10.1.0 - 10.1 branch, feature
 | 
			
		||||
	Mesa 10.1.4 - 10.1 branch, bugfix
 | 
			
		||||
	Mesa 12.0.0 - 12.0 branch, feature
 | 
			
		||||
	Mesa 12.0.2 - 12.0 branch, bugfix
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="schedule">Release schedule</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Releases should happen on Wednesdays. Delays can occur although those
 | 
			
		||||
should be kept to a minimum.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
See our <a href="release-calendar.html" target="_parent">calendar</a>
 | 
			
		||||
for information about how the release schedule is planned, and the
 | 
			
		||||
date and other details for individual releases.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>Feature releases</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Available approximately every three months.
 | 
			
		||||
<li>Initial timeplan available 2-4 weeks before the planned branchpoint (rc1)
 | 
			
		||||
on the mesa-announce@ mailing list.
 | 
			
		||||
<li>Typically, the final release will happen after 4
 | 
			
		||||
candidates. Additional ones may be needed in order to resolve blocking
 | 
			
		||||
regressions, though.
 | 
			
		||||
<li>A <a href="#prerelease">pre-release</a> announcement should be available
 | 
			
		||||
approximately 24 hours before the final (non-rc) release.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Stable releases</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Normally available once every two weeks.
 | 
			
		||||
<li>Only the latest branch has releases. See note below.
 | 
			
		||||
<li>A <a href="#prerelease">pre-release</a> announcement should be available
 | 
			
		||||
approximately 48 hours before the actual release.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Note: There is one or two releases overlap when changing branches. For example:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The final release from the 12.0 series Mesa 12.0.5 will be out around the same
 | 
			
		||||
time (or shortly after) 13.0.1 is out.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
This also involves that, as a final release may be delayed due to the
 | 
			
		||||
need of additional candidates to solve some blocking regression(s),
 | 
			
		||||
the release manager might have to update
 | 
			
		||||
the <a href="release-calendar.html" target="_parent">calendar</a> with
 | 
			
		||||
additional bug fix releases of the current stable branch.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="pickntest">Cherry-picking and testing</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Commits nominated for the active branch are picked as based on the
 | 
			
		||||
<a href="submittingpatches.html#criteria" target="_parent">criteria</a> as
 | 
			
		||||
described in the same section.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Nomination happens in the mesa-stable@ mailing list. However,
 | 
			
		||||
maintainer is responsible of checking for forgotten candidates in the
 | 
			
		||||
master branch. This is achieved by a combination of ad-hoc scripts and
 | 
			
		||||
a casual search for terms such as regression, fix, broken and similar.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Maintainer is also responsible for testing in various possible permutations of
 | 
			
		||||
the meson and scons build.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>Cherry-picking and build/check testing</h2>
 | 
			
		||||
 | 
			
		||||
<p>Done continuously up-to the <a href="#prerelease">pre-release</a> announcement.</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Developers can request, <em>as an exception</em>, patches to be applied up-to
 | 
			
		||||
the last one hour before the actual release. This is made <strong>only</strong>
 | 
			
		||||
with explicit permission/request, and the patch <strong>must</strong> be very
 | 
			
		||||
well contained. Thus it cannot affect more than one driver/subsystem.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>Following developers have requested permanent exception</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><em>Ilia Mirkin</em>
 | 
			
		||||
<li><em>AMD team</em>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>The following must pass:</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>meson test, scons and scons check
 | 
			
		||||
<li>Testing with different version of system components - LLVM and others is also
 | 
			
		||||
performed where possible.
 | 
			
		||||
<li>As a general rule, testing with various combinations of configure
 | 
			
		||||
switches, depending on the specific patchset.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
These are achieved by combination of <a href="basictesting">local testing</a>,
 | 
			
		||||
which includes mingw-w64 cross compilation and AppVeyor plus Travis-CI, the
 | 
			
		||||
latter two as part of their Github integration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
For Windows related changes, the main contact point is Brian
 | 
			
		||||
Paul. Jose Fonseca can also help as a fallback contact.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
For Android related changes, the main contact is Tapani
 | 
			
		||||
Pälli. Mauro Rossi is collaborating with android-x86 and may
 | 
			
		||||
provide feedback about the build status in that project.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
For MacOSX related changes, Jeremy Huddleston Sequoia is currently a
 | 
			
		||||
good contact point.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<strong>Note:</strong> If a patch in the current queue needs any additional
 | 
			
		||||
fix(es), then they should be squashed together. The commit messages and the
 | 
			
		||||
"<code>cherry picked from</code>"-tags must be preserved.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
This should be noted in the <a href="#prerelease">pre-announce</a> email.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
    git show b10859ec41d09c57663a258f43fe57c12332698e
 | 
			
		||||
 | 
			
		||||
    commit b10859ec41d09c57663a258f43fe57c12332698e
 | 
			
		||||
    Author: Jonas Pfeil <pfeiljonas@gmx.de>
 | 
			
		||||
    Date:   Wed Mar 1 18:11:10 2017 +0100
 | 
			
		||||
 | 
			
		||||
        ralloc: Make sure ralloc() allocations match malloc()'s alignment.
 | 
			
		||||
 | 
			
		||||
        The header of ralloc needs to be aligned, because the compiler assumes
 | 
			
		||||
        ...
 | 
			
		||||
 | 
			
		||||
        (cherry picked from commit cd2b55e536dc806f9358f71db438dd9c246cdb14)
 | 
			
		||||
 | 
			
		||||
        Squashed with commit:
 | 
			
		||||
 | 
			
		||||
        ralloc: don't leave out the alignment factor
 | 
			
		||||
 | 
			
		||||
        Experimentation shows that without alignment factor gcc and clang choose
 | 
			
		||||
        ...
 | 
			
		||||
 | 
			
		||||
        (cherry picked from commit ff494fe999510ea40e3ed5827e7818550b6de126)
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<h2>Regression/functionality testing</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Less often (once or twice), shortly before the pre-release announcement.
 | 
			
		||||
Ensure that testing is redone if Intel devs have requested an exception, as per above.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><em>no regressions should be observed for Piglit/dEQP/CTS/Vulkan on Intel platforms</em>
 | 
			
		||||
<li><em>no regressions should be observed for Piglit using the swrast, softpipe
 | 
			
		||||
and llvmpipe drivers</em>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Currently testing is performed courtesy of the Intel OTC team and their Jenkins CI setup. Check with the Intel team over IRC how to get things setup.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Installing the built driver from the pre-announced RC branch in the
 | 
			
		||||
system and making some every day's use until the release may be a good
 | 
			
		||||
idea too.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2 id="stagingbranch">Staging branch</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
A live branch, which contains the currently merge/rejected patches is available
 | 
			
		||||
in the main repository under <code>staging/X.Y</code>. For example:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	staging/18.1 - WIP branch for the 18.1 series
 | 
			
		||||
	staging/18.2 - WIP branch for the 18.2 series
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Notes:
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>People are encouraged to test the staging branch and report regressions.</li>
 | 
			
		||||
<li>The branch history is not stable and it <strong>will</strong> be rebased,</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="branch">Making a branchpoint</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
A branchpoint is made such that new development can continue in parallel to
 | 
			
		||||
stabilisation and bugfixing.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Note: Before doing a branch ensure that basic build and <code>meson test</code>
 | 
			
		||||
testing is done and there are little to-no issues. Ideally all of those should
 | 
			
		||||
be tackled already.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Check if the version number is going to remain as, alternatively
 | 
			
		||||
<code> git mv docs/relnotes/{current,new}.html </code> as appropriate.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To setup the branchpoint:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	git checkout master # make sure we're in master first
 | 
			
		||||
	git tag -s X.Y-branchpoint -m "Mesa X.Y branchpoint"
 | 
			
		||||
	git checkout -b X.Y
 | 
			
		||||
	git checkout master
 | 
			
		||||
	$EDITOR VERSION # bump the version number
 | 
			
		||||
	git commit -as
 | 
			
		||||
	cp docs/relnotes/{X.Y,X.Y+1}.html # copy/create relnotes template
 | 
			
		||||
	git commit -as
 | 
			
		||||
	git push origin X.Y-branchpoint X.Y
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Now go to
 | 
			
		||||
<a href="https://bugs.freedesktop.org/editversions.cgi?action=add&product=Mesa" target="_parent">Bugzilla</a> and add the new Mesa version X.Y.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Check that there are no distribution breaking changes and revert them if needed.
 | 
			
		||||
For example: files being overwritten on install, etc. Happens extremely rarely -
 | 
			
		||||
we had only one case so far (see commit 2ced8eb136528914e1bf4e000dea06a9d53c7e04).
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Proceed to <a href="#release">release</a> -rc1.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="prerelease">Pre-release announcement</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
It comes shortly after outstanding patches in the respective branch are pushed.
 | 
			
		||||
Developers can check, in brief, what's the status of their patches. They,
 | 
			
		||||
alongside very early testers, are strongly encouraged to test the branch and
 | 
			
		||||
report any regressions.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
It is followed by a brief period (normally 24 or 48 hours) before the actual
 | 
			
		||||
release is made.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Be aware to add a note to warn about a final release in a series, if
 | 
			
		||||
that is the case.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>Terminology used</h2>
 | 
			
		||||
 | 
			
		||||
<ul><li>Nominated</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Patch that is nominated but yet to to merged in the patch queue/branch.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul><li>Queued</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Patch is in the queue/branch and will feature in the next release.
 | 
			
		||||
Barring reported regressions or objections from developers.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul><li>Rejected</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Patch does not fit the
 | 
			
		||||
<a href="submittingpatches.html#criteria" target="_parent">criteria</a> and
 | 
			
		||||
is followed by a brief information. The release maintainer is human so if you
 | 
			
		||||
believe you've spotted a mistake do let them know.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>Format/template</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
Subject: [ANNOUNCE] Mesa X.Y.Z release candidate
 | 
			
		||||
To: mesa-announce@...
 | 
			
		||||
Cc: mesa-dev@...
 | 
			
		||||
 | 
			
		||||
Hello list,
 | 
			
		||||
 | 
			
		||||
The candidate for the Mesa X.Y.Z is now available. Currently we have:
 | 
			
		||||
 - NUMBER queued
 | 
			
		||||
 - NUMBER nominated (outstanding)
 | 
			
		||||
 - and NUMBER rejected patches
 | 
			
		||||
 | 
			
		||||
[If applicable:
 | 
			
		||||
Note: this is the final anticipated release in the SERIES series. Users are
 | 
			
		||||
encouraged to migrate to the NEXT_SERIES series in order to obtain future fixes.]
 | 
			
		||||
 | 
			
		||||
BRIEF SUMMARY OF CHANGES
 | 
			
		||||
 | 
			
		||||
Take a look at section "Mesa stable queue" for more information.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Testing reports/general approval
 | 
			
		||||
--------------------------------
 | 
			
		||||
Any testing reports (or general approval of the state of the branch) will be
 | 
			
		||||
greatly appreciated.
 | 
			
		||||
 | 
			
		||||
The plan is to have X.Y.Z this DAY (DATE), around or shortly after TIME.
 | 
			
		||||
 | 
			
		||||
If you have any questions or suggestions - be that about the current patch
 | 
			
		||||
queue or otherwise, please go ahead.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Trivial merge conflicts
 | 
			
		||||
-----------------------
 | 
			
		||||
List of commits where manual intervention was required.
 | 
			
		||||
Keep the authors in the CC list.
 | 
			
		||||
 | 
			
		||||
commit SHA
 | 
			
		||||
Author: AUTHOR
 | 
			
		||||
 | 
			
		||||
    COMMIT SUMMARY
 | 
			
		||||
 | 
			
		||||
    CHERRY PICKED FROM
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
For example:
 | 
			
		||||
 | 
			
		||||
commit 990f395e007c3204639daa34efc3049f350ee819
 | 
			
		||||
Author: Emil Velikov <emil.velikov@collabora.com>
 | 
			
		||||
 | 
			
		||||
    anv: automake: cleanup the generated json file during make clean
 | 
			
		||||
 | 
			
		||||
    (cherry picked from commit 8df581520a823564be0ab5af7dbb7d501b1c9670)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Cheers,
 | 
			
		||||
Emil
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Mesa stable queue
 | 
			
		||||
-----------------
 | 
			
		||||
 | 
			
		||||
Nominated (NUMBER)
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
AUTHOR (NUMBER):
 | 
			
		||||
      SHA     COMMIT SUMMARY
 | 
			
		||||
 | 
			
		||||
For example:
 | 
			
		||||
 | 
			
		||||
Dave Airlie (1):
 | 
			
		||||
      2de85eb radv: fix texturesamples to handle single sample case
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Queued (NUMBER)
 | 
			
		||||
===============
 | 
			
		||||
 | 
			
		||||
AUTHOR (NUMBER):
 | 
			
		||||
      COMMIT SUMMARY
 | 
			
		||||
[If applicable:
 | 
			
		||||
Squashed with
 | 
			
		||||
      COMMIT SUMMARY]
 | 
			
		||||
 | 
			
		||||
For example:
 | 
			
		||||
 | 
			
		||||
Jonas Pfeil (1):
 | 
			
		||||
      ralloc: Make sure ralloc() allocations match malloc()'s alignment.
 | 
			
		||||
Squashed with
 | 
			
		||||
      ralloc: don't leave out the alignment factor
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Rejected (NUMBER)
 | 
			
		||||
=================
 | 
			
		||||
 | 
			
		||||
AUTHOR (NUMBER):
 | 
			
		||||
      SHA     COMMIT SUMMARY
 | 
			
		||||
 | 
			
		||||
Reason: ...
 | 
			
		||||
 | 
			
		||||
For example:
 | 
			
		||||
 | 
			
		||||
Emil Velikov (1)
 | 
			
		||||
      a39ad18 configure.ac: honour LLVM_LIBDIR when linking against LLVM
 | 
			
		||||
 | 
			
		||||
Reason: The patch was reverted shortly after it was merged.
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="release">Making a new release</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
These are the instructions for making a new Mesa release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>Get latest source files</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Ensure the latest code is available - both in your local master and the
 | 
			
		||||
relevant branch.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3 id="basictesting">Perform basic testing</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Most of the testing should already be done during the
 | 
			
		||||
<a href="#pickntest">cherry-pick</a> and
 | 
			
		||||
<a href="#prerelease">pre-announce</a> stages.
 | 
			
		||||
So we do a quick 'touch test'
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>meson dist
 | 
			
		||||
<li>scons (from release tarball)
 | 
			
		||||
<li>the produced binaries work
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
  Here is one solution:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
    __glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"'
 | 
			
		||||
    __es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"'
 | 
			
		||||
    __es2gears_cmd='es2gears_x11 2>&1 | grep -v "configuration file"'
 | 
			
		||||
    test "x$LD_LIBRARY_PATH" != 'x' && __old_ld="$LD_LIBRARY_PATH"
 | 
			
		||||
    export LD_LIBRARY_PATH=`pwd`/test/usr/local/lib/:"${__old_ld}"
 | 
			
		||||
    export LIBGL_DRIVERS_PATH=`pwd`/test/usr/local/lib/dri/
 | 
			
		||||
    export LIBGL_DEBUG=verbose
 | 
			
		||||
    eval $__glxinfo_cmd
 | 
			
		||||
    eval $__glxgears_cmd
 | 
			
		||||
    eval $__es2info_cmd
 | 
			
		||||
    eval $__es2gears_cmd
 | 
			
		||||
    export LIBGL_ALWAYS_SOFTWARE=true
 | 
			
		||||
    eval $__glxinfo_cmd
 | 
			
		||||
    eval $__glxgears_cmd
 | 
			
		||||
    eval $__es2info_cmd
 | 
			
		||||
    eval $__es2gears_cmd
 | 
			
		||||
    export LIBGL_ALWAYS_SOFTWARE=true
 | 
			
		||||
    export GALLIUM_DRIVER=softpipe
 | 
			
		||||
    eval $__glxinfo_cmd
 | 
			
		||||
    eval $__glxgears_cmd
 | 
			
		||||
    eval $__es2info_cmd
 | 
			
		||||
    eval $__es2gears_cmd
 | 
			
		||||
    # Smoke test DOTA2
 | 
			
		||||
    unset LD_LIBRARY_PATH
 | 
			
		||||
    test "x$__old_ld" != 'x' && export LD_LIBRARY_PATH="$__old_ld" && unset __old_ld
 | 
			
		||||
    unset LIBGL_DRIVERS_PATH
 | 
			
		||||
    unset LIBGL_DEBUG
 | 
			
		||||
    unset LIBGL_ALWAYS_SOFTWARE
 | 
			
		||||
    unset GALLIUM_DRIVER
 | 
			
		||||
    export VK_ICD_FILENAMES=`pwd`/test/usr/local/share/vulkan/icd.d/intel_icd.x86_64.json
 | 
			
		||||
    steam steam://rungameid/570  -vconsole -vulkan
 | 
			
		||||
    unset VK_ICD_FILENAMES
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<h3>Update version in file VERSION</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Increment the version contained in the file VERSION at Mesa's top-level, then
 | 
			
		||||
commit this change.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>Create release notes for the new release</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Create a new file docs/relnotes/X.Y.Z.html, (follow the style of the previous
 | 
			
		||||
release notes). Note that the sha256sums section of the release notes should
 | 
			
		||||
be empty (TBD) at this point.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Two scripts are available to help generate portions of the release notes:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
	./bin/bugzilla_mesa.sh
 | 
			
		||||
	./bin/shortlog_mesa.sh
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The first script identifies commits that reference bugzilla bugs and obtains
 | 
			
		||||
the descriptions of those bugs from bugzilla. The second script generates a
 | 
			
		||||
log of all commits. In both cases, HTML-formatted lists are printed to stdout
 | 
			
		||||
to be included in the release notes.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Commit these changes and push the branch.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
	git push origin HEAD
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Use the release.sh script from xorg <a href="https://cgit.freedesktop.org/xorg/util/modular/">util-modular</a></h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Start the release process.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
	# For the dist/distcheck, you may want to specify which LLVM to use:
 | 
			
		||||
	# export LLVM_CONFIG=/usr/lib/llvm-3.9/bin/llvm-config
 | 
			
		||||
	../relative/path/to/release.sh . # append --dist if you've already done distcheck above
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Pay close attention to the prompts as you might be required to enter your GPG
 | 
			
		||||
and SSH passphrase(s) to sign and upload the files, respectively.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>Add the sha256sums to the release notes</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Edit docs/relnotes/X.Y.Z.html to add the sha256sums as available in the mesa-X.Y.Z.announce template. Commit this change.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>Back on mesa master, add the new release notes into the tree</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Something like the following steps will do the trick:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
	git cherry-pick -x X.Y~1
 | 
			
		||||
	git cherry-pick -x X.Y
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Also, edit docs/relnotes.html to add a link to the new release notes,
 | 
			
		||||
edit docs/index.html to add a news entry and a note in case of the
 | 
			
		||||
last release in a series, and remove the version from
 | 
			
		||||
docs/release-calendar.html. Then commit and push:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
	git commit -as -m "docs: update calendar, add news item and link release notes for X.Y.Z"
 | 
			
		||||
	git push origin master X.Y
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="announce">Announce the release</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Use the generated template during the releasing process.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Again, pay attention to add a note to warn about a final release in a
 | 
			
		||||
series, if that is the case.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="website">Update the mesa3d.org website</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
As the hosting was moved to freedesktop, git hooks are deployed to update the
 | 
			
		||||
website. Manually check that it is updated 5-10 minutes after the final <code>git push</code>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="bugzilla">Update Bugzilla</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Parse through the bugreports as listed in the docs/relnotes/X.Y.Z.html
 | 
			
		||||
document. If there's outstanding action, close the bug referencing the commit
 | 
			
		||||
ID which addresses the bug and mention the Mesa version that has the fix.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Note: the above is not applicable to all the reports, so use common sense.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
@@ -21,184 +21,7 @@ The release notes summarize what's new or changed in each Mesa release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="relnotes/19.1.4.html">19.1.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.1.3.html">19.1.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.1.2.html">19.1.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.0.8.html">19.0.8 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.1.1.html">19.1.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.0.7.html">19.0.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.1.0.html">19.1.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.0.6.html">19.0.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.0.5.html">19.0.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.0.4.html">19.0.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.0.3.html">19.0.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.0.2.html">19.0.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.3.6.html">18.3.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.0.1.html">19.0.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.3.5.html">18.3.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/19.0.0.html">19.0.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.3.4.html">18.3.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.3.3.html">18.3.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.3.2.html">18.3.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.2.8.html">18.2.8 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.2.7.html">18.2.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.3.1.html">18.3.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.3.0.html">18.3.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.2.6.html">18.2.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.2.5.html">18.2.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.2.4.html">18.2.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.2.3.html">18.2.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.2.2.html">18.2.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.1.9.html">18.1.9 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.2.1.html">18.2.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.2.0.html">18.2.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.1.8.html">18.1.8 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.1.7.html">18.1.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.1.6.html">18.1.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.1.5.html">18.1.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.1.4.html">18.1.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.1.3.html">18.1.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.1.2.html">18.1.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.0.5.html">18.0.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.1.1.html">18.1.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.1.0.html">18.1.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.0.4.html">18.0.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.0.3.html">18.0.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.0.2.html">18.0.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.0.1.html">18.0.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.3.9.html">17.3.9 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.3.8.html">17.3.8 release notes</a>
 | 
			
		||||
<li><a href="relnotes/18.0.0.html">18.0.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.3.7.html">17.3.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.3.6.html">17.3.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.3.5.html">17.3.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.3.4.html">17.3.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.3.3.html">17.3.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.3.2.html">17.3.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.2.8.html">17.2.8 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.3.1.html">17.3.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.2.7.html">17.2.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.3.0.html">17.3.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.2.6.html">17.2.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.2.5.html">17.2.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.2.4.html">17.2.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.2.3.html">17.2.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.2.2.html">17.2.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.10.html">17.1.10 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.2.1.html">17.2.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.9.html">17.1.9 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.2.0.html">17.2.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.8.html">17.1.8 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.7.html">17.1.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.6.html">17.1.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.5.html">17.1.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.4.html">17.1.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.3.html">17.1.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.2.html">17.1.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.0.7.html">17.0.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.1.html">17.1.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.0.6.html">17.0.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.1.0.html">17.1.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.0.5.html">17.0.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.0.4.html">17.0.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.0.3.html">17.0.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.0.2.html">17.0.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/13.0.6.html">13.0.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.0.1.html">17.0.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/13.0.5.html">13.0.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/17.0.0.html">17.0.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/13.0.4.html">13.0.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/12.0.6.html">12.0.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/13.0.3.html">13.0.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/12.0.5.html">12.0.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/13.0.2.html">13.0.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/13.0.1.html">13.0.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/12.0.4.html">12.0.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/13.0.0.html">13.0.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/12.0.3.html">12.0.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/12.0.2.html">12.0.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/12.0.1.html">12.0.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/12.0.0.html">12.0.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.2.2.html">11.2.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.1.4.html">11.1.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.2.1.html">11.2.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.1.3.html">11.1.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.2.0.html">11.2.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.1.2.html">11.1.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.0.9.html">11.0.9 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.1.1.html">11.1.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.0.8.html">11.0.8 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.1.0.html">11.1.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.0.7.html">11.0.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.0.6.html">11.0.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.0.5.html">11.0.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.0.4.html">11.0.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.0.3.html">11.0.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.6.9.html">10.6.9 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.0.2.html">11.0.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.0.1.html">11.0.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.6.8.html">10.6.8 release notes</a>
 | 
			
		||||
<li><a href="relnotes/11.0.0.html">11.0.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.6.7.html">10.6.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.6.6.html">10.6.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.6.5.html">10.6.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.6.4.html">10.6.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.6.3.html">10.6.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.6.2.html">10.6.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.5.9.html">10.5.9 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.6.1.html">10.6.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.5.8.html">10.5.8 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.6.0.html">10.6.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.5.7.html">10.5.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.5.6.html">10.5.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.5.5.html">10.5.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.5.4.html">10.5.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.5.3.html">10.5.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.5.2.html">10.5.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.4.7.html">10.4.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.5.1.html">10.5.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.5.0.html">10.5.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.4.6.html">10.4.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.4.5.html">10.4.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.4.4.html">10.4.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.4.3.html">10.4.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.4.2.html">10.4.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.3.7.html">10.3.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.4.1.html">10.4.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.3.6.html">10.3.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.4.html">10.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.3.5.html">10.3.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.3.4.html">10.3.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.3.3.html">10.3.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.3.2.html">10.3.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.3.1.html">10.3.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.2.9.html">10.2.9 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.3.html">10.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.2.8.html">10.2.8 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.2.7.html">10.2.7 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.2.6.html">10.2.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.2.5.html">10.2.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.2.4.html">10.2.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.2.3.html">10.2.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.2.2.html">10.2.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.2.1.html">10.2.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.2.html">10.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.1.6.html">10.1.6 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.1.5.html">10.1.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.1.4.html">10.1.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.1.3.html">10.1.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.1.2.html">10.1.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.1.1.html">10.1.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.1.html">10.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.0.5.html">10.0.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.0.4.html">10.0.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.0.3.html">10.0.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.0.2.html">10.0.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.0.1.html">10.0.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/10.0.html">10.0 release notes</a>
 | 
			
		||||
<li><a href="relnotes/9.2.5.html">9.2.5 release notes</a>
 | 
			
		||||
<li><a href="relnotes/9.2.4.html">9.2.4 release notes</a>
 | 
			
		||||
<li><a href="relnotes/9.2.3.html">9.2.3 release notes</a>
 | 
			
		||||
<li><a href="relnotes/9.2.2.html">9.2.2 release notes</a>
 | 
			
		||||
<li><a href="relnotes/9.2.1.html">9.2.1 release notes</a>
 | 
			
		||||
<li><a href="relnotes/9.2.html">9.2 release notes</a>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,150 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Mesa Release Notes</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="../mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="../contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa 10.0.1 Release Notes / (December 12, 2013)</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0.1 is a bug fix release which fixes bugs found since the 10.0 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0.1 implements the OpenGL 3.3 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 3.3.  OpenGL
 | 
			
		||||
3.3 is <strong>only</strong> available if requested at context creation
 | 
			
		||||
because compatibility contexts not supported.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
0a72ca5b36046a658bf6038326ff32ed  MesaLib-10.0.1.tar.bz2
 | 
			
		||||
01bde35c912e504ba62caf1ef9f7022c  MesaLib-10.0.1.tar.gz
 | 
			
		||||
59a174a11a89e6b1b8ee9c3f7e3c388c  MesaLib-10.0.1.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64323">Bug 64323</a> - Severe misrendering in Left 4 Dead 2</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68838">Bug 68838</a> - GLSL: struct declarations produce a "empty declaration warning" in 9.2</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=69155">Bug 69155</a> - [NV50 gallium] [piglit] bin/varying-packing-simple triggers memory corruption/failures</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70250">Bug 70250</a> - weston-terminal rendering corrupted with output transform 90 and 270</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70601">Bug 70601</a> - [SNB Bisected]Piglit spec/ARB_texture_float/multisample-formats 2 GL_ARB_texture_float fails</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72230">Bug 72230</a> - Unable to extract MesaLib-10.0.0.tar.{gz,bz2} with bsdtar</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72325">Bug 72325</a> - [swrast] piglit glean fbo regression</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72327">Bug 72327</a> - [swrast] piglit glean pointSprite regression</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
 | 
			
		||||
<p>The full set of changes can be viewed by using the following git command:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  git log mesa-10.0..mesa-10.0.1
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>Axel Davy (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>egl/wayland: Flush the wl_display at the end of SwapBuffers</li>
 | 
			
		||||
  <li>Enable throttling in SwapBuffers</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Chad Versace (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965/hsw: Apply non-msrt fast color clear w/a to all HSW GTs</li>
 | 
			
		||||
  <li>i965: Add extra-alignment for non-msrt fast color clear for all hw (v2)</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Dave Airlie (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>swrast: fix readback regression since inversion fix</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Emil Velikov (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>automake: include only one copy VERSION in tarball</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ian Romanick (3):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: Add 10.0 release md5sums</li>
 | 
			
		||||
  <li>Remove a057b83 from the pick list</li>
 | 
			
		||||
  <li>glsl: Don't emit empty declaration warning for a struct specifier</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ilia Mirkin (8):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: don't leak performance monitors on context destroy</li>
 | 
			
		||||
  <li>nv50: Fix GPU_READING/WRITING bit removal</li>
 | 
			
		||||
  <li>nouveau: avoid leaking fences while waiting</li>
 | 
			
		||||
  <li>nv50: wait on the buf's fence before sticking it into pushbuf</li>
 | 
			
		||||
  <li>nv50: enable h264 and mpeg4 for nv98+ (vp3, vp4.0)</li>
 | 
			
		||||
  <li>nouveau/video: update h264 picparm field names based on usage</li>
 | 
			
		||||
  <li>nouveau/video: update a few more h264 picparm field names</li>
 | 
			
		||||
  <li>nv50: report 15 max inputs for fragment programs</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Jordan Justen (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>dri megadriver_stub: add compatibility for older DRI loaders</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Kristian Høgsberg (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>egl/wayland: Damage INT32_MAX x INT32_MAX region for eglSwapBuffers</li>
 | 
			
		||||
  <li>egl/wayland: Send commit after flushing the driver context</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Maarten Lankhorst (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>nouveau: Fix compiler warning regression</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Paul Berry (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965/gen6: Fix multisample resolve blits for luminance/intensity 32F formats.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Thomas Hellstrom (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/xa: Bump major version number to 2</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Tom Stellard (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300/compiler/tests: Fix segfault</li>
 | 
			
		||||
  <li>r300/compiler/tests: Fix line length check in test parser</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,161 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Mesa Release Notes</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="../mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="../contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa 10.0.2 Release Notes / (January 9, 2014)</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0.2 is a bug fix release which fixes bugs found since the 10.0.1 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0.2 implements the OpenGL 3.3 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 3.3.  OpenGL
 | 
			
		||||
3.3 is <strong>only</strong> available if requested at context creation
 | 
			
		||||
because compatibility contexts not supported.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
de7d14baf0101b697c140d2f47ef27e9  MesaLib-10.0.2.tar.gz
 | 
			
		||||
8544c0ab3e438a08b5103421ea15b6d2  MesaLib-10.0.2.tar.bz2
 | 
			
		||||
181b0d6c1afca38e98a930d0e564ed90  MesaLib-10.0.2.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70740">Bug 70740</a> - HiZ on SNB causes GPU hang with WebGL web app</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72026">Bug 72026</a> - SIGSEGV in fs_visitor::visit(ir_dereference_variable*)</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72264">Bug 72264</a> - GLSL error reporting</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72369">Bug 72369</a> - glitches in serious sam 3 with the sb shader backend</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
 | 
			
		||||
<p>The full set of changes can be viewed by using the following git command:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  git log mesa-10.0.1..mesa-10.0.2
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>Aaron Watry (8):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>clover: Remove unused variable</li>
 | 
			
		||||
  <li>pipe_loader/sw: close dev->lib when initialization fails</li>
 | 
			
		||||
  <li>radeon/compute: Stop leaking LLVMContexts in radeon_llvm_parse_bitcode</li>
 | 
			
		||||
  <li>r600/compute: Free compiled kernels when deleting compute state</li>
 | 
			
		||||
  <li>r600/compute: Use the correct FREE macro when deleting compute state</li>
 | 
			
		||||
  <li>radeon/llvm: Free target data at end of optimization</li>
 | 
			
		||||
  <li>st/vdpau: Destroy context when initialization fails</li>
 | 
			
		||||
  <li>r600/pipe: Stop leaking context->start_compute_cs_cmd.buf on EG/CM</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Alex Deucher (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600g: fix SUMO2 pci id</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Alexander von Gluck IV (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Haiku: Add in public GL kit headers</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Anuj Phogat (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Fix error code generation in glBeginConditionalRender()</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Carl Worth (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: Add md5sums for the 10.0.1 release.</li>
 | 
			
		||||
  <li>Update version to 10.0.2</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Chad Versace (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965/gen6: Fix HiZ hang in WebGL Google Maps</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Erik Faye-Lund (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glcpp: error on multiple #else/#elif directives</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Henri Verbeet (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i915: Add support for gl_FragData[0] reads.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ilia Mirkin (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>nv50: fix a small leak on context destroy</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Jonathan Liu (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: use pipe_sampler_view_release()</li>
 | 
			
		||||
  <li>llvmpipe: use pipe_sampler_view_release() to avoid segfault</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Fix 3DSTATE_PUSH_CONSTANT_ALLOC_PS packet creation.</li>
 | 
			
		||||
  <li>Revert "mesa: Remove GLXContextID typedef from glx.h."</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Kevin Rogovin (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Use line number information from entire function expression</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Kristian Høgsberg (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>dri_util: Don't assume __DRIcontext->driverPrivate is a gl_context</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Marek Olšák (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: fix interpretation of glClearBuffer(drawbuffer)</li>
 | 
			
		||||
  <li>st/mesa: fix glClear with multiple colorbuffers and different formats</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Paul Berry (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Teach ir_variable_refcount about ir_loop::counter variables.</li>
 | 
			
		||||
  <li>glsl: Fix inconsistent assumptions about ir_loop::counter.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Vadim Girlin (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600g/sb: fix stack size computation on evergreen</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,206 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Mesa Release Notes</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="../mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="../contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa 10.0.3 Release Notes / (February 3, 2014)</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0.3 is a bug fix release which fixes bugs found since the 10.0.2 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0.3 implements the OpenGL 3.3 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 3.3.  OpenGL
 | 
			
		||||
3.3 is <strong>only</strong> available if requested at context creation
 | 
			
		||||
because compatibility contexts not supported.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
5f9f463ef08129f6762106b434910adb  MesaLib-10.0.3.tar.bz2
 | 
			
		||||
fb3997b6500e153bc32370cb3fc4ca9e  MesaLib-10.0.3.tar.gz
 | 
			
		||||
a07b4b6b9eb449b88a6cb5061e51c331  MesaLib-10.0.3.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72708">Bug 72708</a> - Master fails to build with older gcc due to -msse4.1</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72926">Bug 72926</a> - [REGRESSION,swrast] Memory-related crash with anti-aliasing enabled</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=73096">Bug 73096</a> - Query GL_RGBA_SIGNED_COMPONENTS_EXT missing</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=73100">Bug 73100</a> - Please use AC_PATH_TOOL instead of AC_PATH_PROG for llvm-config</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=73418">Bug 73418</a> - OpenCL hangs graphics on CAYMAN</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=73473">Bug 73473</a> - Potential crash bug in src/gallium/auxiliary/rtasm/rtasm_execmem.c</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=73915">Bug 73915</a> - sample shading + centroid broken since f5cfb4a</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=73956">Bug 73956</a> - SIGSEGV when passing GL_NONE to glReadBuffer</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74026">Bug 74026</a> - Compiler rejects chained assignments involving array dereferences</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
 | 
			
		||||
<p>The full set of changes can be viewed by using the following git command:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  git log mesa-10.0.2..mesa-10.0.3
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>Aaron Watry (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>radeon: Move gfx/dma cs cleanup to r600_common_context_cleanup</li>
 | 
			
		||||
  <li>st/dri: prevent leak of dri option default values</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Andreas Fänger (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>swrast: fix delayed texel buffer allocation regression for OpenMP</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Anuj Phogat (3):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Disable ARB_texture_rectangle in shader version 100.</li>
 | 
			
		||||
  <li>i965: Use sample barycentric coordinates with per sample shading</li>
 | 
			
		||||
  <li>i965: Ignore 'centroid' interpolation qualifier in case of persample shading</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Brian Paul (3):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: implement missing glGet(GL_RGBA_SIGNED_COMPONENTS_EXT) query</li>
 | 
			
		||||
  <li>st/mesa: fix glReadBuffer(GL_NONE) segfault</li>
 | 
			
		||||
  <li>draw: fix incorrect vertex size computation in LLVM drawing code</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Carl Worth (5):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Add md5sums for 10.0.2. release.</li>
 | 
			
		||||
  <li>cherry-ignore: Ignore several patches not yet ready for the stable branch</li>
 | 
			
		||||
  <li>Drop another couple of patches.</li>
 | 
			
		||||
  <li>cherry-ignore: Ignore 4 patches at the request of the author, (Anuj).</li>
 | 
			
		||||
  <li>Update version to 10.0.3</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Chad Versace (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965/gen6/blorp: Emit more flushes to workaround hangs</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Chris Forbes (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: fold offset into coord for textureOffset(gsampler2DRect)</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Emil Velikov (5):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: use signed temporary variable to store _ColorDrawBufferIndexes</li>
 | 
			
		||||
  <li>st/mesa: use signed temporary variable to store _ColorDrawBufferIndexes</li>
 | 
			
		||||
  <li>nv50: access only the available amount of textures</li>
 | 
			
		||||
  <li>nv50: access only the available amount of constbuf</li>
 | 
			
		||||
  <li>gallium/rtasm: handle mmap failures appropriately</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Eric Anholt (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Fix handling of MESA_pack_invert in blit (PBO) readpixels.</li>
 | 
			
		||||
  <li>i965: Don't do the temporary-and-blit-copy for INVALIDATE_RANGE maps.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ian Romanick (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Add COMPRESSED_RGBA_S3TC_DXT1_EXT to COMPRESSED_TEXTURE_FORMATS for GLES</li>
 | 
			
		||||
  <li>radeon / r200: Pass the API into _mesa_initialize_context</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ilia Mirkin (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: fix GL_COLOR_SUM enum for drivers without ARB_vertex_program</li>
 | 
			
		||||
  <li>st/vdpau: don't return a device if the screen doesn't support NPOT</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>José Fonseca (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Use IROUND instead of roundf.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Rename "expr" to "lhs_expr" in vector_extract munging code.</li>
 | 
			
		||||
  <li>glsl: Fix chained assignments of vector channels.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Lauri Kasanen (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Fix build to properly check for supported compiler flags</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Marek Olšák (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: use sRGB formats for MSAA resolving if destination is sRGB</li>
 | 
			
		||||
  <li>gallium/util: util_format_srgb should not return FORMAT_NONE for sRGB formats</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Matt Turner (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glcpp: Define GL_EXT_shader_integer_mix in both GL and ES.</li>
 | 
			
		||||
  <li>glx: Update glxext.h to revision 24777.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Michał Górny (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Use AC_PATH_TOOL instead of AC_PATH_PROG for llvm-config.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Paul Berry (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Ensure that all necessary state is re-emitted if we run out of aperture.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Paul Seidler (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>build: move ARCH_LIBS definition outside of ASM definition</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Thomas Sondergaard (4):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Preliminary support for MSVC_VERSION=12.0</li>
 | 
			
		||||
  <li>mesa: Fix compile error with MSVC 2013</li>
 | 
			
		||||
  <li>mesa: Work around internal compiler error</li>
 | 
			
		||||
  <li>mesa: Namespace qualify fma to override ambiguity with fma from math.h</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Tom Stellard (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600g/compute: Emit DEALLOC_STATE on cayman after dispatching a compute shader.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,191 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Mesa Release Notes</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="../mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="../contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa 10.0.4 Release Notes / (March 12, 2014)</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0.4 is a bug fix release which fixes bugs found since the 10.0.3 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0.4 implements the OpenGL 3.3 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 3.3.  OpenGL
 | 
			
		||||
3.3 is <strong>only</strong> available if requested at context creation
 | 
			
		||||
because compatibility contexts not supported.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
5a3c5b90776ec8a9fcd777c99e0607e2  MesaLib-10.0.4.tar.gz
 | 
			
		||||
8b148869d2620b0720c8a8d2b7eb3e38  MesaLib-10.0.4.tar.bz2
 | 
			
		||||
da2418d25bfbc273660af7e755fb367e  MesaLib-10.0.4.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71870">Bug 71870</a> - Metro: Last Light rendering issues</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72895">Bug 72895</a> - Missing trees in flightgear 2.12.1 with mesa 10.0.1</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74251">Bug 74251</a> - Segfault in st_finalize_texture with Texture Buffer</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74723">Bug 74723</a> - main/shaderapi.c:407: detach_shader: Assertion `shProg->Shaders[j]->Type == 0x8B31 || shProg->Shaders[j]->Type == 0x8B30' failed.</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
 | 
			
		||||
<p>The full set of changes can be viewed by using the following git command:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  git log mesa-10.0.3..mesa-10.0.4
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>Anuj Phogat (4):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Generate correct error code in glDrawBuffers()</li>
 | 
			
		||||
  <li>mesa: Add GL_TEXTURE_CUBE_MAP_ARRAY to legal_get_tex_level_parameter_target()</li>
 | 
			
		||||
  <li>glsl: Fix condition to generate shader link error</li>
 | 
			
		||||
  <li>i965: Fix the region's pitch condition to use blitter</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Brian Paul (8):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r200: move driContextSetFlags(ctx) call after ctx var is initialized</li>
 | 
			
		||||
  <li>radeon: move driContextSetFlags(ctx) call after ctx var is initialized</li>
 | 
			
		||||
  <li>gallium/auxiliary/indices: replace free() with FREE()</li>
 | 
			
		||||
  <li>draw: fix incorrect color of flat-shaded clipped lines</li>
 | 
			
		||||
  <li>st/mesa: avoid sw fallback for getting/decompressing textures</li>
 | 
			
		||||
  <li>mesa: update assertion in detach_shader() for geom shaders</li>
 | 
			
		||||
  <li>mesa: do depth/stencil format conversion in glGetTexImage</li>
 | 
			
		||||
  <li>softpipe: use 64-bit arithmetic in softpipe_resource_layout()</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Carl Worth (4):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: Add md5sums for 10.0.3 release</li>
 | 
			
		||||
  <li>main: Avoid double-free of shader Label</li>
 | 
			
		||||
  <li>get-pick-list: Update to only find patches nominated for the 10.0 branch</li>
 | 
			
		||||
  <li>Update version to 10.0.4</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Chris Forbes (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Validate (and resolve) all the bound textures.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Christian König (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>radeon/uvd: fix feedback buffer handling v2</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Daniel Kurtz (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Add locking to builtin_builder singleton</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Emil Velikov (3):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>dri/nouveau: Pass the API into _mesa_initialize_context</li>
 | 
			
		||||
  <li>nv50: correctly calculate the number of vertical blocks during transfer map</li>
 | 
			
		||||
  <li>dri/i9*5: correctly calculate the amount of system memory</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Fredrik Höglund (3):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Preserve the NewArrays state when copying a VAO</li>
 | 
			
		||||
  <li>glx: Fix the default values for GLXFBConfig attributes</li>
 | 
			
		||||
  <li>glx: Fix the GLXFBConfig attrib sort priorities</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Hans (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>util: don't define isfinite(), isnan() for MSVC >= 1800</li>
 | 
			
		||||
  <li>mesa: don't define c99 math functions for MSVC >= 1800</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ian Romanick (6):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>meta: Release resources used by decompress_texture_image</li>
 | 
			
		||||
  <li>meta: Release resources used by _mesa_meta_DrawPixels</li>
 | 
			
		||||
  <li>meta: Fallback to software for GetTexImage of compressed GL_TEXTURE_CUBE_MAP_ARRAY</li>
 | 
			
		||||
  <li>meta: Consistenly use non-Apple VAO functions</li>
 | 
			
		||||
  <li>glcpp: Only warn for macro names containing __</li>
 | 
			
		||||
  <li>glsl: Only warn for macro names containing __</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ilia Mirkin (3):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>nv30: report 8 maximum inputs</li>
 | 
			
		||||
  <li>nouveau/video: make sure that firmware is present when checking caps</li>
 | 
			
		||||
  <li>nouveau: fix chipset checks for nv1a by using the oclass instead</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Julien Cristau (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glx/dri2: fix build failure on HURD</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Don't lose precision qualifiers when encountering "centroid".</li>
 | 
			
		||||
  <li>i965: Create a hardware context before initializing state module.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Kusanagi Kouichi (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>targets/vdpau: Always use c++ to link</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Marek Olšák (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: fix crash when a shader uses a TBO and it's not bound</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Matt Turner (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Initialize ubo_binding_mask flags to zero.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Paul Berry (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Make condition_to_hir() callable from outside ast_iteration_statement.</li>
 | 
			
		||||
  <li>glsl: Fix continue statements in do-while loops.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Tom Stellard (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600g/compute: PIPE_CAP_COMPUTE should be false for pre-evergreen GPUs</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Topi Pohjolainen (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965/blorp: do not use unnecessary hw-blending support</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,173 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Mesa Release Notes</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="../mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="../contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa 10.0.5 Release Notes / April 18, 2014</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0.5 is a bug fix release which fixes bugs found since the 10.0.4 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0.5 implements the OpenGL 3.3 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 3.3.  OpenGL
 | 
			
		||||
3.3 is <strong>only</strong> available if requested at context creation
 | 
			
		||||
because compatibility contexts not supported.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
db606aadd0fe321f3664099677d159bc  MesaLib-10.0.5.tar.gz
 | 
			
		||||
e6009ccd8898d7104bb325b6af9ec354  MesaLib-10.0.5.tar.bz2
 | 
			
		||||
c8ab9e502542bf32299a4df85b0b704d  MesaLib-10.0.5.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=58660">Bug 58660</a> - CAYMAN broken with HyperZ on</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64471">Bug 64471</a> - Radeon HD6570 lockup in Brütal Legend with HyperZ</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66352">Bug 66352</a> - GPU lockup in L4D2 on TURKS with HyperZ</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68799">Bug 68799</a> - [APITRACE] Hyper-Z lockup with Falcon BMS 4.32u6 on CAYMAN</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71547">Bug 71547</a> - compilation failure :#error "SSE4.1 instruction set not enabled"</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72685">Bug 72685</a> - [radeonsi hyperz] Artifacts in Unigine Sanctuary</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=73088">Bug 73088</a> - [HyperZ] Juniper (6770): Gone Home / Unigine Heaven 4.0 lock up system after several minutes of use</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74428">Bug 74428</a> - hyperz causes gpu hang in Counter-strike: Source</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74803">Bug 74803</a> - [r600g] HyperZ broken on RV630 (Cogs shadows are broken)</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74863">Bug 74863</a> - [r600g] HyperZ broken on RV770 and CYPRESS (Left 4 Dead 2 trees corruption) bisected!</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74892">Bug 74892</a> - HyperZ GPU lockup with radeonsi 7970M PITCAIRN and Distance Alpha game</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74988">Bug 74988</a> - Buffer overrun (segfault) decompressing ETC2 texture in GLBenchmark 3.0 Manhattan</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=75279">Bug 75279</a> - XCloseDisplay() takes one minute around nouveau_dri.so, freezing Firefox startup</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77102">Bug 77102</a> - gallium nouveau has no profile in vdpau and libva</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77207">Bug 77207</a> - [ivb/hsw] batch overwritten with garbage</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
 | 
			
		||||
<p>The full set of changes can be viewed by using the following git command:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  git log mesa-10.0.4..mesa-10.0.5
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>Alex Deucher (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>radeon: reverse DBG_NO_HYPERZ logic</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Brian Paul (9):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: add unpacking code for MESA_FORMAT_Z32_FLOAT_S8X24_UINT</li>
 | 
			
		||||
  <li>mesa: fix copy & paste bugs in pack_ubyte_SARGB8()</li>
 | 
			
		||||
  <li>mesa: fix copy & paste bugs in pack_ubyte_SRGB8()</li>
 | 
			
		||||
  <li>mesa: fix unpack_Z32_FLOAT_X24S8() / unpack_Z32_FLOAT() mix-up</li>
 | 
			
		||||
  <li>st/mesa: add null pointer checking in query object functions</li>
 | 
			
		||||
  <li>mesa: fix glMultiDrawArrays inside a display list</li>
 | 
			
		||||
  <li>cso: fix sampler view count in cso_set_sampler_views()</li>
 | 
			
		||||
  <li>svga: replace sampler assertion with conditional</li>
 | 
			
		||||
  <li>svga: move LIST_INITHEAD(dirty_buffers) earlier in svga_context_create()</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Carl Worth (3):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: Add md5sums for the 10.0.4 release.</li>
 | 
			
		||||
  <li>Ignore patches which don't apply.</li>
 | 
			
		||||
  <li>Update version to 10.0.5</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Christian König (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: recreate sampler view on context change v3</li>
 | 
			
		||||
  <li>st/mesa: fix sampler view handling with shared textures v4</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Courtney Goeltzenleuchter (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: add bounds checking to eliminate buffer overrun</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Emil Velikov (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: return v.value_int64 when the requested type is TYPE_INT64</li>
 | 
			
		||||
  <li>glx: drop obsolete _XUnlock_Mutex in __glXInitialize error path</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Eric Anholt (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Fix buffer overruns in MSAA MCS buffer clearing.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ilia Mirkin (6):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>nouveau: fix fence waiting logic in screen destroy</li>
 | 
			
		||||
  <li>nv50: adjust blit_3d handling of ms output textures</li>
 | 
			
		||||
  <li>mesa/main: condition GL_DEPTH_STENCIL on ARB_depth_texture</li>
 | 
			
		||||
  <li>nouveau: add forgotten GL_COMPRESSED_INTENSITY to texture format list</li>
 | 
			
		||||
  <li>nouveau: there may not have been a texture if the fbo was incomplete</li>
 | 
			
		||||
  <li>nouveau: fix firmware check on nvd7/nvd9</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Johannes Nixdorf (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>configure.ac: fix the detection of expat with pkg-config</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Jonathan Gray (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>gallium: add endian detection for OpenBSD</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>José Fonseca (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>draw: Duplicate TGSI tokens in draw_pipe_pstipple module.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Matt Turner (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Wrap SSE4.1 code in #ifdef __SSE4_1__.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Paul Berry (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965/gen7: Prefer vertical alignment of 4 when possible.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -8,13 +8,13 @@
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="../contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa 10.0 Release Notes / (November 30th, 2013)</h1>
 | 
			
		||||
<h1>Mesa 10.0 Release Notes / TBD</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.0 is a new development release.
 | 
			
		||||
@@ -33,9 +33,7 @@ because compatibility contexts are not supported.
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
b38626b96c664db67a534d7859682436  MesaLib-10.0.0.tar.gz
 | 
			
		||||
f3fe55d9735bea158bbe97ed9a0da819  MesaLib-10.0.0.tar.bz2
 | 
			
		||||
c6ee1ce51e3bf35947d2978b872daf51  MesaLib-10.0.0.zip
 | 
			
		||||
TBD.
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -57,89 +55,16 @@ Note: some of the new features are only available with certain drivers.
 | 
			
		||||
<li>GL_ARB_vertex_attrib_binding</li>
 | 
			
		||||
<li>GL_ARB_vertex_type_10f_11f_11f_rev on i965 and r600g</li>
 | 
			
		||||
<li>GL_KHR_debug</li>
 | 
			
		||||
<li>GLX_MESA_query_renderer</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
 | 
			
		||||
<p>Attempts have been made to <b>not</b> include bugs fixed in previous 9.2
 | 
			
		||||
releases or bugs that were regressions during 10.0 development. This list is
 | 
			
		||||
likely incomplete.</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=47755">Bug 47755</a> - [glsl-compiler] no error checking when Interpolation qualifier for built-in variable is different in vertex and fragment shader</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=52171">Bug 52171</a> - [gallium/r600/clover] Simple benchmarks failed to run</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=53077">Bug 53077</a> - [IVB] Output error with msaa when both of framebuffer and source color's alpha are not 1</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=54867">Bug 54867</a> - bug in r300 compiler</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60929">Bug 60929</a> - [r600-llvm] mono games with opengl are blocking on start</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=62142">Bug 62142</a> - Mesa/demo mipmap_limits upside down with running by SOFTWARE</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=62698">Bug 62698</a> - [bisected] WebGL demo "Consumed": texstate.c:628: update_texture_state: Assertion „__builtin_popcount(enabledTargets) == 1“ failed.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64225">Bug 64225</a> - bfgminer --scyte generates Segmentation Fault on Northern Island</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64226">Bug 64226</a> - python-opencl package generate segmentation fault at pipe_r600.so</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64261">Bug 64261</a> - [SNB Bisected]Ogles3conform GL3Tests_color_buffer_float_color_buffer_float_clamp_fixed.test fail</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66213">Bug 66213</a> - Certain Mesa Demos Rendering Inverted (vertically)</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66806">Bug 66806</a> - [softpipe] glxgears floating point exception</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=67921">Bug 67921</a> - [bisected commit 883987] crosscompiling fails with util/u_cpu_detect.c:247:4: error: 'asm' undeclared (first use in this function)</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68162">Bug 68162</a> - [radeonsi] texture rendering is broken in Source-Engine games</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68451">Bug 68451</a> - Texture flicker in native Dota2 in mesa 9.2.0rc1</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68503">Bug 68503</a> - Graphical glitches in Serious Sam 3 when SB is enabled</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68792">Bug 68792</a> - Problems during playback of h264 files using UVD and VLC on AMD E-350 CPU</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68845">Bug 68845</a> - VDPAU/UVD regression</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=69078">Bug 69078</a> - Modern Warfare (1, 2 and 3) broken in Wine on SNB</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=69321">Bug 69321</a> - starting openCL crashes/boots system</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70042">Bug 70042</a> - Major texture flickering in Dota 2 (r600g on HD 6950)</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70088">Bug 70088</a> - Glamor on r600g crashes Xserver</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70123">Bug 70123</a> - Freeze caused by 'winsys/radeon: remove cs_queue_empty' commit</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70327">Bug 70327</a> - Casting floating point variable to integer not working properly while constant gets converted properly</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70891">Bug 70891</a> - CL_INVALID_BUILD_OPTIONS results in CL_INVALID_DEVICE when asking for build log</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70913">Bug 70913</a> - [PIGLIT,radeonsi] crash in "spec/EXT_framebuffer_multisample/sample-alpha-to-coverage 4 depth" (buffer overflow)</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71022">Bug 71022</a> - configure: error: Expat required for DRI.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71110">Bug 71110</a> - xorg_driver.c:1030:2: error: too many arguments to function ‘DamageUnregister’</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71172">Bug 71172</a> - Segfault when running glxinfo. NV25GL [Quadro4 900 XGL]</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71512">Bug 71512</a> - dlopen.h:54: undefined reference to `dlopen'</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71870">Bug 71870</a> - Metro: Last Light rendering issues</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
TBD.
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Removed X.Org state tracker (unmaintained and broken)</li>
 | 
			
		||||
<li>Removed the video-accel r300 targets</li>
 | 
			
		||||
<li>Removed the video-accel softpipe targets</li>
 | 
			
		||||
</ul>
 | 
			
		||||
TBD.
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,254 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Mesa Release Notes</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="../mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="../contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa 10.1.1 Release Notes / April 18, 2014</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.1.1 is a bug fix release which fixes bugs found since the 10.1 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.1.1 implements the OpenGL 3.3 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 3.3.  OpenGL
 | 
			
		||||
3.3 is <strong>only</strong> available if requested at context creation
 | 
			
		||||
because compatibility contexts are not supported.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
96e63674ccfa98e7ec6eb4fee3f770c3  MesaLib-10.1.1.tar.gz
 | 
			
		||||
1fde7ed079df7aeb9b6a744ca033de8d  MesaLib-10.1.1.tar.bz2
 | 
			
		||||
e64d0a562638664b13d2edf22321df59  MesaLib-10.1.1.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71547">Bug 71547</a> - compilation failure :#error "SSE4.1 instruction set not enabled"</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74868">Bug 74868</a> - r600g: Diablo III Crashes After a few minutes</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74988">Bug 74988</a> - Buffer overrun (segfault) decompressing ETC2 texture in GLBenchmark 3.0 Manhattan</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=75279">Bug 75279</a> - XCloseDisplay() takes one minute around nouveau_dri.so, freezing Firefox startup</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=75543">Bug 75543</a> - OSMesa Gallium OSMesaMakeCurrent</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=75660">Bug 75660</a> - u_inlines.h:277:pipe_buffer_map_range: Assertion `length' failed.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=76323">Bug 76323</a> - GLSL compiler ignores layout(binding=N) on uniform blocks</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=76377">Bug 76377</a> - DRI3 should only be enabled on Linux due to a udev dependency</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=76749">Bug 76749</a> - [HSW] DOTA world lighting has no effect</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77102">Bug 77102</a> - gallium nouveau has no profile in vdpau and libva</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77207">Bug 77207</a> - [ivb/hsw] batch overwritten with garbage</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
 | 
			
		||||
<p>Aaron Watry (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>gallium/util: Fix memory leak</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Alexander von Gluck IV (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>haiku: Fix build through scons corrections and viewport fixes</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Anuj Phogat (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Set initial internal format of a texture to GL_RGBA</li>
 | 
			
		||||
  <li>mesa: Allow GL_DEPTH_COMPONENT and GL_DEPTH_STENCIL combinations in glTexImage{123}D()</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Brian Paul (12):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>softpipe: use 64-bit arithmetic in softpipe_resource_layout()</li>
 | 
			
		||||
  <li>mesa: don't call ctx->Driver.ClearBufferSubData() if size==0</li>
 | 
			
		||||
  <li>st/osmesa: check buffer size when searching for buffers</li>
 | 
			
		||||
  <li>mesa: fix copy & paste bugs in pack_ubyte_SARGB8()</li>
 | 
			
		||||
  <li>mesa: fix copy & paste bugs in pack_ubyte_SRGB8()</li>
 | 
			
		||||
  <li>c11/threads: don't include assert.h if the assert macro is already defined</li>
 | 
			
		||||
  <li>mesa: fix unpack_Z32_FLOAT_X24S8() / unpack_Z32_FLOAT() mix-up</li>
 | 
			
		||||
  <li>st/mesa: add null pointer checking in query object functions</li>
 | 
			
		||||
  <li>mesa: fix glMultiDrawArrays inside a display list</li>
 | 
			
		||||
  <li>cso: fix sampler view count in cso_set_sampler_views()</li>
 | 
			
		||||
  <li>svga: replace sampler assertion with conditional</li>
 | 
			
		||||
  <li>svga: move LIST_INITHEAD(dirty_buffers) earlier in svga_context_create()</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Carl Worth (3):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>cherry-ignore: Ignore a few patches</li>
 | 
			
		||||
  <li>glsl: Allow explicit binding on atomics again</li>
 | 
			
		||||
  <li>Update VERSION to 10.1.1</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Chia-I Wu (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965/vec4: fix record clearing in copy propagation</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Christian König (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: recreate sampler view on context change v3</li>
 | 
			
		||||
  <li>st/mesa: fix sampler view handling with shared textures v4</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Courtney Goeltzenleuchter (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: add bounds checking to eliminate buffer overrun</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Emil Velikov (5):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>nv50: add missing brackets when handling the samplers array</li>
 | 
			
		||||
  <li>mesa: return v.value_int64 when the requested type is TYPE_INT64</li>
 | 
			
		||||
  <li>configure: enable dri3 only for linux</li>
 | 
			
		||||
  <li>glx: drop obsolete _XUnlock_Mutex in __glXInitialize error path</li>
 | 
			
		||||
  <li>configure: cleanup libudev handling</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Eric Anholt (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Fix buffer overruns in MSAA MCS buffer clearing.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Hans (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>util: don't define isfinite(), isnan() for MSVC >= 1800</li>
 | 
			
		||||
  <li>mesa: don't define c99 math functions for MSVC >= 1800</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ian Romanick (7):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>linker: Split set_uniform_binding into separate functions for blocks and samplers</li>
 | 
			
		||||
  <li>linker: Various trivial clean-ups in set_sampler_binding</li>
 | 
			
		||||
  <li>linker: Fold set_uniform_binding into call site</li>
 | 
			
		||||
  <li>linker: Clean up "unused parameter" warnings</li>
 | 
			
		||||
  <li>linker: Set block bindings based on UniformBlocks rather than UniformStorage</li>
 | 
			
		||||
  <li>linker: Set binding for all elements of UBO array</li>
 | 
			
		||||
  <li>glsl: Propagate explicit binding information from the AST all the way to the linker</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ilia Mirkin (8):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>nouveau: fix fence waiting logic in screen destroy</li>
 | 
			
		||||
  <li>nv50: adjust blit_3d handling of ms output textures</li>
 | 
			
		||||
  <li>loader: add special logic to distinguish nouveau from nouveau_vieux</li>
 | 
			
		||||
  <li>mesa/main: condition GL_DEPTH_STENCIL on ARB_depth_texture</li>
 | 
			
		||||
  <li>nouveau: add forgotten GL_COMPRESSED_INTENSITY to texture format list</li>
 | 
			
		||||
  <li>nouveau: there may not have been a texture if the fbo was incomplete</li>
 | 
			
		||||
  <li>nvc0/ir: move sample id to second source arg to fix sampler2DMS</li>
 | 
			
		||||
  <li>nouveau: fix firmware check on nvd7/nvd9</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Johannes Nixdorf (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>configure.ac: fix the detection of expat with pkg-config</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Jonathan Gray (7):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>gallium: add endian detection for OpenBSD</li>
 | 
			
		||||
  <li>loader: use 0 instead of FALSE which isn't defined</li>
 | 
			
		||||
  <li>loader: don't limit the non-udev path to only android</li>
 | 
			
		||||
  <li>megadriver_stub.c: don't use _GNU_SOURCE to gate the compat code</li>
 | 
			
		||||
  <li>egl/dri2: don't require libudev to build drm/wayland platforms</li>
 | 
			
		||||
  <li>egl/dri2: use drm macros to construct device name</li>
 | 
			
		||||
  <li>configure: don't require libudev for gbm or egl drm/wayland</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>José Fonseca (4):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>c11/threads: Fix nano to milisecond conversion.</li>
 | 
			
		||||
  <li>mapi/u_thread: Use GetCurrentThreadId</li>
 | 
			
		||||
  <li>c11/threads: Don't implement thrd_current on Windows.</li>
 | 
			
		||||
  <li>draw: Duplicate TGSI tokens in draw_pipe_pstipple module.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (4):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965/fs: Fix register comparisons in saturate propagation.</li>
 | 
			
		||||
  <li>glsl: Fix lack of i2u in lower_ubo_reference.</li>
 | 
			
		||||
  <li>i965: Stop advertising GL_MESA_ycbcr_texture.</li>
 | 
			
		||||
  <li>glsl: Try vectorizing when seeing a repeated assignment to a channel.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Marek Olšák (13):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600g: fix texelFetchOffset GLSL functions</li>
 | 
			
		||||
  <li>r600g: fix blitting the last 2 mipmap levels for Evergreen</li>
 | 
			
		||||
  <li>mesa: fix the format of glEdgeFlagPointer</li>
 | 
			
		||||
  <li>r600g,radeonsi: fix MAX_TEXTURE_3D_LEVELS and MAX_TEXTURE_ARRAY_LAYERS limits</li>
 | 
			
		||||
  <li>st/mesa: fix per-vertex edge flags and GLSL support (v2)</li>
 | 
			
		||||
  <li>mesa: mark GL_RGB9_E5 as not color-renderable</li>
 | 
			
		||||
  <li>mesa: fix texture border handling for cube arrays</li>
 | 
			
		||||
  <li>mesa: allow generating mipmaps for cube arrays</li>
 | 
			
		||||
  <li>mesa: fix software fallback for generating mipmaps for cube arrays</li>
 | 
			
		||||
  <li>mesa: fix software fallback for generating mipmaps for 3D textures</li>
 | 
			
		||||
  <li>st/mesa: fix generating mipmaps for cube arrays</li>
 | 
			
		||||
  <li>st/mesa: drop the lowering of quad strips to triangle strips</li>
 | 
			
		||||
  <li>r600g: implement edge flags</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Matt Turner (4):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Wrap SSE4.1 code in #ifdef __SSE4_1__.</li>
 | 
			
		||||
  <li>i965/fs: Fix off-by-one in saturate propagation.</li>
 | 
			
		||||
  <li>i965/fs: Don't propagate saturate modifiers into partial writes.</li>
 | 
			
		||||
  <li>i965/fs: Don't propagate saturation modifiers if there are source modifiers.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Michel Dänzer (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600g: Don't leak bytecode on shader compile failure</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Mike Stroyan (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Avoid dependency hints on math opcodes</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Thomas Hellstrom (5):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>winsys/svga: Replace the query mm buffer pool with a slab pool v3</li>
 | 
			
		||||
  <li>winsys/svga: Update the vmwgfx_drm.h header to latest version from kernel</li>
 | 
			
		||||
  <li>winsys/svga: Fix prime surface references also for guest-backed surfaces</li>
 | 
			
		||||
  <li>st/xa: Bind destination before setting new state</li>
 | 
			
		||||
  <li>st/xa: Make sure unused samplers are set to NULL</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Tom Stellard (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>configure: Use LLVM shared libraries by default</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,179 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Mesa Release Notes</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="../mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="../contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa 10.1.2 Release Notes / (May 5, 2014)</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.1.2 is a bug fix release which fixes bugs found since the 10.1.1 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.1.2 implements the OpenGL 3.3 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 3.3.  OpenGL
 | 
			
		||||
3.3 is <strong>only</strong> available if requested at context creation
 | 
			
		||||
because compatibility contexts are not supported.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
37d79f94b1f41852a89d1fc3900bea76  MesaLib-10.1.2.tar.gz
 | 
			
		||||
28b60d15ac9f364da1e0155911eaf44e  MesaLib-10.1.2.tar.bz2
 | 
			
		||||
05300039085a65fc53c5472c4bb5747a  MesaLib-10.1.2.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27499">Bug 27499</a> - [855GM i915] GL_LINE_STIPPLE displays incorrect colors</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=75723">Bug 75723</a> - (regression since Linux 3.14?) brw_get_graphics_reset_status: Assertion `brw->hw_ctx != ((void *)0)' failed</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=76894">Bug 76894</a> - Piglit/spec/EXT_framebuffer_object/fbo-bind-renderbuffer failed</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77702">Bug 77702</a> - [i965 Bisected]Piglit spec/NV_conditional_render_blitframebuffer fails</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
 | 
			
		||||
<p>Ander Conselvan de Oliveira (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>gbm/dri: Fix out-of-memory error path in dri_device_create()</li>
 | 
			
		||||
  <li>egl: Protect use of gbm_dri with ifdef HAVE_DRM_PLATFORM</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Anuj Phogat (27):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Fix glGetVertexAttribi(GL_VERTEX_ATTRIB_ARRAY_SIZE)</li>
 | 
			
		||||
  <li>swrast: Add glBlitFramebuffer to commands affected by conditional rendering</li>
 | 
			
		||||
  <li>mesa: Fix error condition for multisample proxy texture targets</li>
 | 
			
		||||
  <li>i965: Put an assertion to check valid varying_to_slot[varying]</li>
 | 
			
		||||
  <li>i965: Fix component mask and varying_to_slot mapping for gl_Layer</li>
 | 
			
		||||
  <li>i965: Fix component mask and varying_to_slot mapping for gl_ViewportIndex</li>
 | 
			
		||||
  <li>mesa: Add helper function _mesa_is_format_integer()</li>
 | 
			
		||||
  <li>mesa: Add error condition for integer formats in glGetTexImage()</li>
 | 
			
		||||
  <li>mesa: Add an error condition in glGetFramebufferAttachmentParameteriv()</li>
 | 
			
		||||
  <li>mesa: Fix error code generation in glReadPixels()</li>
 | 
			
		||||
  <li>glsl: Allow overlapping locations for vertex input attributes</li>
 | 
			
		||||
  <li>mesa: Fix querying location of nth element of an array variable</li>
 | 
			
		||||
  <li>mesa: Use location VERT_ATTRIB_GENERIC0 for vertex attribute 0</li>
 | 
			
		||||
  <li>glsl: Compile error if fs defines conflicting qualifiers for gl_FragCoord</li>
 | 
			
		||||
  <li>glsl: Compile error if fs uses gl_FragCoord before first redeclaration</li>
 | 
			
		||||
  <li>mesa: Add entry for extension ARB_texture_stencil8</li>
 | 
			
		||||
  <li>mesa: Add error condition for format=STENCIL_INDEX in glGetTexImage()</li>
 | 
			
		||||
  <li>i965: Fix crash in do_blit_readpixels()</li>
 | 
			
		||||
  <li>mesa: Add missing types in _mesa_texstore_xx_xx() functions</li>
 | 
			
		||||
  <li>mesa: Allow srcFormat=GL_DEPTH_STENCIL in _mesa_texstore_xx_xx() functions</li>
 | 
			
		||||
  <li>mesa: Add new helper function _mesa_unpack_depth_stencil_row()</li>
 | 
			
		||||
  <li>mesa: Add support to unpack depth-stencil texture in to FLOAT_32_UNSIGNED_INT_24_8_REV</li>
 | 
			
		||||
  <li>mesa: Allow FLOAT_32_UNSIGNED_INT_24_8_REV in get_tex_depth_stencil()</li>
 | 
			
		||||
  <li>i965: Add glBlitFramebuffer to commands affected by conditional rendering</li>
 | 
			
		||||
  <li>glsl: Use switch to allow adding more shader types</li>
 | 
			
		||||
  <li>glsl: Link error if fs defines conflicting qualifiers for gl_FragCoord</li>
 | 
			
		||||
  <li>glsl: Apply the link error conditions to GL_ARB_fragment_coord_conventions</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Benjamin Bellec (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: fix GetStringi error message with correct function name</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Brian Paul (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>swrast: allocate swrast_texture_image::ImageSlices array if needed</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Carl Worth (4):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: Add the MD5 sums for the 10.1.1 release tar files.</li>
 | 
			
		||||
  <li>cherry-ignore: Ignore a patch causing a regression</li>
 | 
			
		||||
  <li>cherry-ignore: Drop an ignored patch now that piglit has been updated.</li>
 | 
			
		||||
  <li>Update VERSION to 10.1.2</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Chris Forbes (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Only allow `invariant` on shader in/out between stages.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Eric Anholt (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Fix render-to-texture in non-FinishRenderTexture cases.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Ian Romanick (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>dri3: Enable GLX_MESA_query_renderer on DRI3 too</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Don't enable reset notification support on Gen4-5.</li>
 | 
			
		||||
  <li>i965: Actually emit PIPELINE_SELECT and 3DSTATE_VF_STATISTICS.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Marek Olšák (10):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300g: don't crash when getting NULL colorbuffers</li>
 | 
			
		||||
  <li>st/mesa: remove trailing NULL colorbuffers</li>
 | 
			
		||||
  <li>r600g: fix edge flags and layered rendering on R600-R700</li>
 | 
			
		||||
  <li>r600g: disable async DMA on R700</li>
 | 
			
		||||
  <li>r600g: fix MSAA resolve on R6xx when the destination is 1D-tiled</li>
 | 
			
		||||
  <li>r600g: fix flushing on RV670, RS780, RS880 again</li>
 | 
			
		||||
  <li>r600g: fix buffer copying on R600-R700</li>
 | 
			
		||||
  <li>r600g: fix for broken CULL_FRONT behavior on R6xx</li>
 | 
			
		||||
  <li>r600g: fix for an MSAA hang on RV770</li>
 | 
			
		||||
  <li>r600g: fix hang on RV740 by using DX_RASTERIZATION_KILL instead of SX_MISC</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Michel Dänzer (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600g: Disable LLVM by default at runtime for graphics</li>
 | 
			
		||||
  <li>st/mesa: Fix NULL pointer dereference for incomplete framebuffers</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Neil Roberts (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>wayland: Fix the logic in disabling the prime capability</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Samuel Iglesias Gonsalvez (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: fix check for dummy renderbuffer in _mesa_FramebufferRenderbufferEXT()</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Thomas Hellstrom (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/xa: Cache render target surface</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>nick (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>swrast: Fix vertex color in _swsetup_Translate()</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,90 +0,0 @@
 | 
			
		||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
			
		||||
  <title>Mesa Release Notes</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="../mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  The Mesa 3D Graphics Library
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="../contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa 10.1.3 Release Notes / (May 9, 2014)</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.1.3 is a bug fix release which fixes bugs found since the 10.1.2 release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Note: Mesa 10.1.3 is being released sooner than originally scheduled to make
 | 
			
		||||
available a fix for a performance rgression that was inadvertently introduced
 | 
			
		||||
to Mesa 10.1.2. The performance regression is reported to make vmware
 | 
			
		||||
swapbuffers fall back to software. 
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 10.1.3 implements the OpenGL 3.3 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 3.3.  OpenGL
 | 
			
		||||
3.3 is <strong>only</strong> available if requested at context creation
 | 
			
		||||
because compatibility contexts are not supported.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
665fe1656aaa2c37b32042068aff92cb  MesaLib-10.1.3.tar.gz
 | 
			
		||||
ba6dbe2b9cab0b4de840c996b9b6a3ad  MesaLib-10.1.3.tar.bz2
 | 
			
		||||
4e6f26330a63d3c47e62ac4bdead39e8  MesaLib-10.1.3.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77245">Bug 77245</a> - Bogus GL_ARB_explicit_attrib_location layout identifier warnings</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
 | 
			
		||||
<p>Carl Worth (3):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: Add MD5 sums for Mesa 10.1.2</li>
 | 
			
		||||
  <li>get-pick-list.sh: Require explicit "10.1" for nominating stable patches</li>
 | 
			
		||||
  <li>VERSION: Update to 10.1.3</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (2):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Fix MaxNumLayers for 1D array textures.</li>
 | 
			
		||||
  <li>i965: Fix depth (array slices) computation for 1D_ARRAY render targets.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Tapani Pälli (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: fix bogus layout qualifier warnings</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Thomas Hellstrom (1):</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/xa: Fix performance regression introduced by commit "Cache render target surface"</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user