Compare commits
1 Commits
mesa-19.2.
...
instanced_
Author | SHA1 | Date | |
---|---|---|---|
|
c988bf94bc |
@@ -1,18 +1,10 @@
|
|||||||
((nil . ((show-trailing-whitespace . t)))
|
((nil
|
||||||
(prog-mode
|
|
||||||
(indent-tabs-mode . nil)
|
(indent-tabs-mode . nil)
|
||||||
(tab-width . 8)
|
(tab-width . 8)
|
||||||
(c-basic-offset . 3)
|
(c-basic-offset . 3)
|
||||||
(c-file-style . "stroustrup")
|
(c-file-style . "stroustrup")
|
||||||
(fill-column . 78)
|
|
||||||
(eval . (progn
|
(eval . (progn
|
||||||
(c-set-offset 'case-label '0)
|
|
||||||
(c-set-offset 'innamespace '0)
|
(c-set-offset 'innamespace '0)
|
||||||
(c-set-offset 'inline-open '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
|
|
41
.gitignore
vendored
41
.gitignore
vendored
@@ -1,4 +1,43 @@
|
|||||||
|
*.a
|
||||||
|
*.dll
|
||||||
|
*.exe
|
||||||
|
*.ilk
|
||||||
|
*.la
|
||||||
|
*.lo
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.os
|
||||||
|
*.pc
|
||||||
|
*.pdb
|
||||||
*.pyc
|
*.pyc
|
||||||
*.pyo
|
*.pyo
|
||||||
*.out
|
*.so
|
||||||
|
*.so.*
|
||||||
|
*.sw[a-z]
|
||||||
|
*.tar
|
||||||
|
*.tar.bz2
|
||||||
|
*.tar.gz
|
||||||
|
*.zip
|
||||||
|
*~
|
||||||
|
depend
|
||||||
|
depend.bak
|
||||||
|
bin/ltmain.sh
|
||||||
|
lib
|
||||||
|
lib64
|
||||||
|
configure
|
||||||
|
configure.lineno
|
||||||
|
autom4te.cache
|
||||||
|
aclocal.m4
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
cscope*
|
||||||
|
.scon*
|
||||||
|
config.py
|
||||||
build
|
build
|
||||||
|
libtool
|
||||||
|
manifest.txt
|
||||||
|
Makefile.in
|
||||||
|
.dir-locals.el
|
||||||
|
.deps/
|
||||||
|
.libs/
|
||||||
|
/Makefile
|
||||||
|
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 || travis_terminate 1;
|
|
||||||
ninja -C _build test || travis_terminate 1;
|
|
||||||
fi
|
|
||||||
- if test "x$BUILD" = xscons; then
|
|
||||||
scons || travis_terminate 1;
|
|
||||||
scons check || travis_terminate 1;
|
|
||||||
fi
|
|
@@ -21,108 +21,39 @@
|
|||||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
# DEALINGS IN THE SOFTWARE.
|
# DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
# use c99 compiler by default
|
||||||
|
ifeq ($(LOCAL_CC),)
|
||||||
ifeq ($(LOCAL_IS_HOST_MODULE),true)
|
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
|
endif
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += \
|
LOCAL_C_INCLUDES += \
|
||||||
$(MESA_TOP)/src \
|
|
||||||
$(MESA_TOP)/include
|
$(MESA_TOP)/include
|
||||||
|
|
||||||
MESA_VERSION := $(shell cat $(MESA_TOP)/VERSION)
|
# define ANDROID_VERSION (e.g., 4.0.x => 0x0400)
|
||||||
|
major := $(word 1, $(subst ., , $(PLATFORM_VERSION)))
|
||||||
|
minor := $(word 2, $(subst ., , $(PLATFORM_VERSION)))
|
||||||
LOCAL_CFLAGS += \
|
LOCAL_CFLAGS += \
|
||||||
-Wno-error \
|
-DANDROID_VERSION=0x0$(major)0$(minor)
|
||||||
-Werror=incompatible-pointer-types \
|
|
||||||
-Wno-unused-parameter \
|
|
||||||
-Wno-pointer-arith \
|
|
||||||
-Wno-missing-field-initializers \
|
|
||||||
-Wno-initializer-overrides \
|
|
||||||
-Wno-mismatched-tags \
|
|
||||||
-DPACKAGE_VERSION=\"$(MESA_VERSION)\" \
|
|
||||||
-DPACKAGE_BUGREPORT=\"https://gitlab.freedesktop.org/mesa/mesa/issues\"
|
|
||||||
|
|
||||||
# XXX: The following __STDC_*_MACROS defines should not be needed.
|
|
||||||
# It's likely due to a bug elsewhere, but let's temporarily add them
|
|
||||||
# here to fix the radeonsi build.
|
|
||||||
LOCAL_CFLAGS += \
|
LOCAL_CFLAGS += \
|
||||||
-DANDROID_API_LEVEL=$(PLATFORM_SDK_VERSION) \
|
-DPTHREADS \
|
||||||
-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 \
|
-fvisibility=hidden \
|
||||||
-fno-math-errno \
|
|
||||||
-fno-trapping-math \
|
|
||||||
-Wno-sign-compare
|
-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 ($(strip $(MESA_ENABLE_ASM)),true)
|
||||||
ifeq ($(TARGET_ARCH),x86)
|
ifeq ($(TARGET_ARCH),x86)
|
||||||
LOCAL_CFLAGS += \
|
LOCAL_CFLAGS += \
|
||||||
-DUSE_X86_ASM
|
-DUSE_X86_ASM
|
||||||
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(ARCH_ARM_HAVE_NEON),true)
|
|
||||||
LOCAL_CFLAGS_arm += -DUSE_ARM_ASM
|
|
||||||
endif
|
|
||||||
LOCAL_CFLAGS_arm64 += -DUSE_AARCH64_ASM
|
|
||||||
|
|
||||||
ifneq ($(LOCAL_IS_HOST_MODULE),true)
|
|
||||||
LOCAL_CFLAGS += -DHAVE_LIBDRM
|
|
||||||
LOCAL_SHARED_LIBRARIES += libdrm
|
|
||||||
endif
|
|
||||||
|
|
||||||
LOCAL_CFLAGS_32 += -DDEFAULT_DRIVER_DIR=\"/vendor/lib/$(MESA_DRI_MODULE_REL_PATH)\"
|
LOCAL_CPPFLAGS += \
|
||||||
LOCAL_CFLAGS_64 += -DDEFAULT_DRIVER_DIR=\"/vendor/lib64/$(MESA_DRI_MODULE_REL_PATH)\"
|
-Wno-error=non-virtual-dtor \
|
||||||
LOCAL_PROPRIETARY_MODULE := true
|
-Wno-non-virtual-dtor
|
||||||
|
|
||||||
# uncomment to keep the debug symbols
|
# uncomment to keep the debug symbols
|
||||||
#LOCAL_STRIP_MODULE := false
|
#LOCAL_STRIP_MODULE := false
|
||||||
@@ -130,6 +61,3 @@ LOCAL_PROPRIETARY_MODULE := true
|
|||||||
ifeq ($(strip $(LOCAL_MODULE_TAGS)),)
|
ifeq ($(strip $(LOCAL_MODULE_TAGS)),)
|
||||||
LOCAL_MODULE_TAGS := optional
|
LOCAL_MODULE_TAGS := optional
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Quiet down the build system and remove any .h files from the sources
|
|
||||||
LOCAL_SRC_FILES := $(patsubst %.h, , $(LOCAL_SRC_FILES))
|
|
||||||
|
126
Android.mk
126
Android.mk
@@ -24,64 +24,31 @@
|
|||||||
# BOARD_GPU_DRIVERS should be defined. The valid values are
|
# BOARD_GPU_DRIVERS should be defined. The valid values are
|
||||||
#
|
#
|
||||||
# classic drivers: i915 i965
|
# classic drivers: i915 i965
|
||||||
# gallium drivers: swrast freedreno i915g nouveau kmsro r300g r600g radeonsi vc4 virgl vmwgfx etnaviv iris lima
|
# gallium drivers: swrast i915g nouveau r300g r600g radeonsi vmwgfx
|
||||||
#
|
#
|
||||||
# The main target is libGLES_mesa. For each classic driver enabled, a DRI
|
# 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.
|
# module will also be built. DRI modules will be loaded by libGLES_mesa.
|
||||||
|
|
||||||
MESA_TOP := $(call my-dir)
|
MESA_TOP := $(call my-dir)
|
||||||
|
|
||||||
MESA_ANDROID_MAJOR_VERSION := $(word 1, $(subst ., , $(PLATFORM_VERSION)))
|
|
||||||
ifneq ($(filter 2 4, $(MESA_ANDROID_MAJOR_VERSION)),)
|
|
||||||
$(error "Android 4.4 and earlier not supported")
|
|
||||||
endif
|
|
||||||
|
|
||||||
MESA_DRI_MODULE_REL_PATH := dri
|
|
||||||
MESA_DRI_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/$(MESA_DRI_MODULE_REL_PATH)
|
|
||||||
MESA_DRI_MODULE_UNSTRIPPED_PATH := $(TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED)/$(MESA_DRI_MODULE_REL_PATH)
|
|
||||||
MESA_DRI_LDFLAGS := -Wl,--build-id=sha1
|
|
||||||
|
|
||||||
MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk
|
MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk
|
||||||
MESA_PYTHON2 := python
|
MESA_PYTHON2 := python
|
||||||
|
|
||||||
# Lists to convert driver names to boolean variables
|
DRM_TOP := external/drm
|
||||||
# in form of <driver name>.<boolean make variable>
|
DRM_GRALLOC_TOP := hardware/drm_gralloc
|
||||||
classic_drivers := i915.HAVE_I915_DRI i965.HAVE_I965_DRI
|
|
||||||
gallium_drivers := \
|
|
||||||
swrast.HAVE_GALLIUM_SOFTPIPE \
|
|
||||||
freedreno.HAVE_GALLIUM_FREEDRENO \
|
|
||||||
i915g.HAVE_GALLIUM_I915 \
|
|
||||||
nouveau.HAVE_GALLIUM_NOUVEAU \
|
|
||||||
kmsro.HAVE_GALLIUM_KMSRO \
|
|
||||||
r300g.HAVE_GALLIUM_R300 \
|
|
||||||
r600g.HAVE_GALLIUM_R600 \
|
|
||||||
radeonsi.HAVE_GALLIUM_RADEONSI \
|
|
||||||
vmwgfx.HAVE_GALLIUM_VMWGFX \
|
|
||||||
vc4.HAVE_GALLIUM_VC4 \
|
|
||||||
virgl.HAVE_GALLIUM_VIRGL \
|
|
||||||
etnaviv.HAVE_GALLIUM_ETNAVIV \
|
|
||||||
iris.HAVE_GALLIUM_IRIS \
|
|
||||||
lima.HAVE_GALLIUM_LIMA
|
|
||||||
|
|
||||||
ifeq ($(BOARD_GPU_DRIVERS),all)
|
classic_drivers := i915 i965
|
||||||
MESA_BUILD_CLASSIC := $(filter HAVE_%, $(subst ., , $(classic_drivers)))
|
gallium_drivers := swrast i915g nouveau r300g r600g radeonsi vmwgfx
|
||||||
MESA_BUILD_GALLIUM := $(filter HAVE_%, $(subst ., , $(gallium_drivers)))
|
|
||||||
else
|
|
||||||
# Warn if we have any invalid driver names
|
|
||||||
$(foreach d, $(BOARD_GPU_DRIVERS), \
|
|
||||||
$(if $(findstring $(d).,$(classic_drivers) $(gallium_drivers)), \
|
|
||||||
, \
|
|
||||||
$(warning invalid GPU driver: $(d)) \
|
|
||||||
) \
|
|
||||||
)
|
|
||||||
MESA_BUILD_CLASSIC := $(strip $(foreach d, $(BOARD_GPU_DRIVERS), $(patsubst $(d).%,%, $(filter $(d).%, $(classic_drivers)))))
|
|
||||||
MESA_BUILD_GALLIUM := $(strip $(foreach d, $(BOARD_GPU_DRIVERS), $(patsubst $(d).%,%, $(filter $(d).%, $(gallium_drivers)))))
|
|
||||||
endif
|
|
||||||
ifeq ($(filter x86%,$(TARGET_ARCH)),)
|
|
||||||
MESA_BUILD_CLASSIC :=
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(foreach d, $(MESA_BUILD_CLASSIC) $(MESA_BUILD_GALLIUM), $(eval $(d) := true))
|
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
|
# host and target must be the same arch to generate matypes.h
|
||||||
ifeq ($(TARGET_ARCH),$(HOST_ARCH))
|
ifeq ($(TARGET_ARCH),$(HOST_ARCH))
|
||||||
@@ -90,41 +57,38 @@ else
|
|||||||
MESA_ENABLE_ASM := false
|
MESA_ENABLE_ASM := false
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(filter true, $(HAVE_GALLIUM_RADEONSI)),)
|
ifneq ($(filter $(classic_drivers), $(MESA_GPU_DRIVERS)),)
|
||||||
MESA_ENABLE_LLVM := true
|
MESA_BUILD_CLASSIC := true
|
||||||
|
else
|
||||||
|
MESA_BUILD_CLASSIC := false
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define mesa-build-with-llvm
|
ifneq ($(filter $(gallium_drivers), $(MESA_GPU_DRIVERS)),)
|
||||||
$(if $(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5), \
|
MESA_BUILD_GALLIUM := true
|
||||||
$(warning Unsupported LLVM version in Android $(MESA_ANDROID_MAJOR_VERSION)),) \
|
else
|
||||||
$(if $(filter 6,$(MESA_ANDROID_MAJOR_VERSION)), \
|
MESA_BUILD_GALLIUM := false
|
||||||
$(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0307 -DMESA_LLVM_VERSION_STRING=\"3.7\")) \
|
endif
|
||||||
$(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
|
|
||||||
|
|
||||||
# add subdirectories
|
# add subdirectories
|
||||||
SUBDIRS := \
|
ifneq ($(strip $(MESA_GPU_DRIVERS)),)
|
||||||
src/freedreno \
|
|
||||||
src/gbm \
|
|
||||||
src/loader \
|
|
||||||
src/mapi \
|
|
||||||
src/compiler \
|
|
||||||
src/mesa \
|
|
||||||
src/util \
|
|
||||||
src/egl \
|
|
||||||
src/amd \
|
|
||||||
src/broadcom \
|
|
||||||
src/intel \
|
|
||||||
src/mesa/drivers/dri \
|
|
||||||
src/vulkan \
|
|
||||||
src/panfrost \
|
|
||||||
|
|
||||||
INC_DIRS := $(call all-named-subdir-makefiles,$(SUBDIRS))
|
SUBDIRS := \
|
||||||
INC_DIRS += $(call all-named-subdir-makefiles,src/gallium)
|
src/mapi \
|
||||||
include $(INC_DIRS)
|
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)
|
|
124
Makefile.am
Normal file
124
Makefile.am
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
doxygen:
|
||||||
|
cd doxygen && $(MAKE)
|
||||||
|
|
||||||
|
check-local:
|
||||||
|
$(MAKE) -C src/mapi/glapi/tests check
|
||||||
|
$(MAKE) -C src/mesa/main/tests check
|
||||||
|
$(MAKE) -C src/glsl/tests check
|
||||||
|
$(MAKE) -C src/glx/tests check
|
||||||
|
|
||||||
|
clean-local:
|
||||||
|
-@touch $(top_builddir)/configs/current
|
||||||
|
-@for dir in $(SUBDIRS) ; do \
|
||||||
|
if [ -d $$dir ] ; then \
|
||||||
|
(cd $$dir && $(MAKE) clean) ; \
|
||||||
|
fi \
|
||||||
|
done
|
||||||
|
-@test -s $(top_builddir)/configs/current || rm -f $(top_builddir)/configs/current
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
distclean-local:
|
||||||
|
-rm -rf lib*
|
||||||
|
-rm -f $(top_builddir)/configs/current
|
||||||
|
-find . '(' -name '*.o' -o -name '*.a' -o -name '*.so' -o \
|
||||||
|
-name depend -o -name depend.bak ')' -exec rm -f '{}' ';'
|
||||||
|
|
||||||
|
.PHONY: doxygen
|
||||||
|
|
||||||
|
# Rules for making release tarballs
|
||||||
|
|
||||||
|
PACKAGE_VERSION=8.1-devel
|
||||||
|
PACKAGE_DIR = Mesa-$(PACKAGE_VERSION)
|
||||||
|
PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION)
|
||||||
|
|
||||||
|
EXTRA_FILES = \
|
||||||
|
aclocal.m4 \
|
||||||
|
configure \
|
||||||
|
src/glsl/glsl_parser.cpp \
|
||||||
|
src/glsl/glsl_parser.h \
|
||||||
|
src/glsl/glsl_lexer.cpp \
|
||||||
|
src/glsl/glcpp/glcpp-lex.c \
|
||||||
|
src/glsl/glcpp/glcpp-parse.c \
|
||||||
|
src/glsl/glcpp/glcpp-parse.h \
|
||||||
|
src/mesa/main/api_exec_es1.c \
|
||||||
|
src/mesa/main/api_exec_es1_dispatch.h \
|
||||||
|
src/mesa/main/api_exec_es1_remap_helper.h \
|
||||||
|
src/mesa/main/api_exec_es2.c \
|
||||||
|
src/mesa/main/api_exec_es2_dispatch.h \
|
||||||
|
src/mesa/main/api_exec_es2_remap_helper.h \
|
||||||
|
src/mesa/program/lex.yy.c \
|
||||||
|
src/mesa/program/program_parse.tab.c \
|
||||||
|
src/mesa/program/program_parse.tab.h
|
||||||
|
|
||||||
|
IGNORE_FILES = \
|
||||||
|
-x autogen.sh
|
||||||
|
|
||||||
|
|
||||||
|
parsers: configure
|
||||||
|
-@touch $(top_builddir)/configs/current
|
||||||
|
$(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp
|
||||||
|
$(MAKE) -C src/glsl/glcpp glcpp-lex.c glcpp-parse.c glcpp-parse.h
|
||||||
|
$(MAKE) -C src/mesa program/lex.yy.c program/program_parse.tab.c program/program_parse.tab.h
|
||||||
|
|
||||||
|
# Everything for new a Mesa release:
|
||||||
|
ARCHIVES = $(PACKAGE_NAME).tar.gz \
|
||||||
|
$(PACKAGE_NAME).tar.bz2 \
|
||||||
|
$(PACKAGE_NAME).zip
|
||||||
|
|
||||||
|
tarballs: md5
|
||||||
|
rm -f ../$(PACKAGE_DIR) $(PACKAGE_NAME).tar
|
||||||
|
|
||||||
|
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/
|
|
43
SConstruct
43
SConstruct
@@ -27,13 +27,6 @@ import SCons.Util
|
|||||||
|
|
||||||
import common
|
import common
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Minimal scons version
|
|
||||||
|
|
||||||
EnsureSConsVersion(2, 4)
|
|
||||||
EnsurePythonVersion(2, 7)
|
|
||||||
|
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# Configuration options
|
# Configuration options
|
||||||
|
|
||||||
@@ -57,25 +50,25 @@ except KeyError:
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
targets = targets.split(',')
|
targets = targets.split(',')
|
||||||
print('scons: warning: targets option is deprecated; pass the targets on their own such as')
|
print 'scons: warning: targets option is deprecated; pass the targets on their own such as'
|
||||||
print()
|
print
|
||||||
print(' scons %s' % ' '.join(targets))
|
print ' scons %s' % ' '.join(targets)
|
||||||
print()
|
print
|
||||||
COMMAND_LINE_TARGETS.append(targets)
|
COMMAND_LINE_TARGETS.append(targets)
|
||||||
|
|
||||||
|
|
||||||
Help(opts.GenerateHelpText(env))
|
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
|
# Environment setup
|
||||||
|
|
||||||
with open("VERSION") as f:
|
|
||||||
mesa_version = f.read().strip()
|
|
||||||
env.Append(CPPDEFINES = [
|
|
||||||
('PACKAGE_VERSION', '\\"%s\\"' % mesa_version),
|
|
||||||
('PACKAGE_BUGREPORT', '\\"https://gitlab.freedesktop.org/mesa/mesa/issues\\"'),
|
|
||||||
])
|
|
||||||
|
|
||||||
# Includes
|
# Includes
|
||||||
env.Prepend(CPPPATH = [
|
env.Prepend(CPPPATH = [
|
||||||
'#/include',
|
'#/include',
|
||||||
@@ -87,15 +80,13 @@ env.Append(CPPPATH = [
|
|||||||
'#/src/gallium/winsys',
|
'#/src/gallium/winsys',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
if env['msvc']:
|
||||||
|
env.Append(CPPPATH = ['#include/c99'])
|
||||||
|
|
||||||
# for debugging
|
# for debugging
|
||||||
#print env.Dump()
|
#print env.Dump()
|
||||||
|
|
||||||
|
|
||||||
# Add a check target for running tests
|
|
||||||
check = env.Alias('check')
|
|
||||||
env.AlwaysBuild(check)
|
|
||||||
|
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# Invoke host SConscripts
|
# Invoke host SConscripts
|
||||||
#
|
#
|
||||||
@@ -124,6 +115,9 @@ if env['crosscompile'] and not env['embedded']:
|
|||||||
host_env['hostonly'] = True
|
host_env['hostonly'] = True
|
||||||
assert host_env['crosscompile'] == False
|
assert host_env['crosscompile'] == False
|
||||||
|
|
||||||
|
if host_env['msvc']:
|
||||||
|
host_env.Append(CPPPATH = ['#include/c99'])
|
||||||
|
|
||||||
target_env = env
|
target_env = env
|
||||||
env = host_env
|
env = host_env
|
||||||
Export('env')
|
Export('env')
|
||||||
@@ -159,7 +153,8 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
aliases = sorted(default_ans.keys())
|
aliases = default_ans.keys()
|
||||||
|
aliases.sort()
|
||||||
env.Help('\n')
|
env.Help('\n')
|
||||||
env.Help('Recognized targets:\n')
|
env.Help('Recognized targets:\n')
|
||||||
for alias in aliases:
|
for alias in aliases:
|
||||||
|
119
acinclude.m4
Normal file
119
acinclude.m4
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
# A few convenience macros for Mesa, mostly to keep all the platform
|
||||||
|
# specifics out of configure.ac.
|
||||||
|
|
||||||
|
# MESA_PIC_FLAGS()
|
||||||
|
#
|
||||||
|
# Find out whether to build PIC code using the option --enable-pic and
|
||||||
|
# the configure enable_static/enable_shared settings. If PIC is needed,
|
||||||
|
# figure out the necessary flags for the platform and compiler.
|
||||||
|
#
|
||||||
|
# The platform checks have been shamelessly taken from libtool and
|
||||||
|
# stripped down to just what's needed for Mesa. See _LT_COMPILER_PIC in
|
||||||
|
# /usr/share/aclocal/libtool.m4 or
|
||||||
|
# http://git.savannah.gnu.org/gitweb/?p=libtool.git;a=blob;f=libltdl/m4/libtool.m4;hb=HEAD
|
||||||
|
#
|
||||||
|
AC_DEFUN([MESA_PIC_FLAGS],
|
||||||
|
[AC_REQUIRE([AC_PROG_CC])dnl
|
||||||
|
AC_ARG_VAR([PIC_FLAGS], [compiler flags for PIC code])
|
||||||
|
AC_ARG_ENABLE([pic],
|
||||||
|
[AS_HELP_STRING([--disable-pic],
|
||||||
|
[compile PIC objects @<:@default=enabled for shared builds
|
||||||
|
on supported platforms@:>@])],
|
||||||
|
[enable_pic="$enableval"
|
||||||
|
test "x$enable_pic" = x && enable_pic=auto],
|
||||||
|
[enable_pic=auto])
|
||||||
|
# disable PIC by default for static builds
|
||||||
|
if test "$enable_pic" = auto && test "$enable_static" = yes; then
|
||||||
|
enable_pic=no
|
||||||
|
fi
|
||||||
|
# if PIC hasn't been explicitly disabled, try to figure out the flags
|
||||||
|
if test "$enable_pic" != no; then
|
||||||
|
AC_MSG_CHECKING([for $CC option to produce PIC])
|
||||||
|
# allow the user's flags to override
|
||||||
|
if test "x$PIC_FLAGS" = x; then
|
||||||
|
# see if we're using GCC
|
||||||
|
if test "x$GCC" = xyes; then
|
||||||
|
case "$host_os" in
|
||||||
|
aix*|beos*|cygwin*|irix5*|irix6*|osf3*|osf4*|osf5*)
|
||||||
|
# PIC is the default for these OSes.
|
||||||
|
;;
|
||||||
|
mingw*|os2*|pw32*)
|
||||||
|
# This hack is so that the source file can tell whether
|
||||||
|
# it is being built for inclusion in a dll (and should
|
||||||
|
# export symbols for example).
|
||||||
|
PIC_FLAGS="-DDLL_EXPORT"
|
||||||
|
;;
|
||||||
|
darwin*|rhapsody*)
|
||||||
|
# PIC is the default on this platform
|
||||||
|
# Common symbols not allowed in MH_DYLIB files
|
||||||
|
PIC_FLAGS="-fno-common"
|
||||||
|
;;
|
||||||
|
hpux*)
|
||||||
|
# PIC is the default for IA64 HP-UX and 64-bit HP-UX,
|
||||||
|
# but not for PA HP-UX.
|
||||||
|
case $host_cpu in
|
||||||
|
hppa*64*|ia64*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
PIC_FLAGS="-fPIC"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Everyone else on GCC uses -fPIC
|
||||||
|
PIC_FLAGS="-fPIC"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else # !GCC
|
||||||
|
case "$host_os" in
|
||||||
|
hpux9*|hpux10*|hpux11*)
|
||||||
|
# PIC is the default for IA64 HP-UX and 64-bit HP-UX,
|
||||||
|
# but not for PA HP-UX.
|
||||||
|
case "$host_cpu" in
|
||||||
|
hppa*64*|ia64*)
|
||||||
|
# +Z the default
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
PIC_FLAGS="+Z"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
linux*|k*bsd*-gnu)
|
||||||
|
case `basename "$CC"` in
|
||||||
|
icc*|ecc*|ifort*)
|
||||||
|
PIC_FLAGS="-KPIC"
|
||||||
|
;;
|
||||||
|
pgcc*|pgf77*|pgf90*|pgf95*)
|
||||||
|
# Portland Group compilers (*not* the Pentium gcc
|
||||||
|
# compiler, which looks to be a dead project)
|
||||||
|
PIC_FLAGS="-fpic"
|
||||||
|
;;
|
||||||
|
ccc*)
|
||||||
|
# All Alpha code is PIC.
|
||||||
|
;;
|
||||||
|
xl*)
|
||||||
|
# IBM XL C 8.0/Fortran 10.1 on PPC
|
||||||
|
PIC_FLAGS="-qpic"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
case `$CC -V 2>&1 | sed 5q` in
|
||||||
|
*Sun\ C*|*Sun\ F*)
|
||||||
|
# Sun C 5.9 or Sun Fortran
|
||||||
|
PIC_FLAGS="-KPIC"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
PIC_FLAGS="-KPIC"
|
||||||
|
;;
|
||||||
|
sunos4*)
|
||||||
|
PIC_FLAGS="-PIC"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi # GCC
|
||||||
|
fi # PIC_FLAGS
|
||||||
|
AC_MSG_RESULT([$PIC_FLAGS])
|
||||||
|
fi
|
||||||
|
AC_SUBST([PIC_FLAGS])
|
||||||
|
])# MESA_PIC_FLAGS
|
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.
|
|
20
autogen.sh
Executable file
20
autogen.sh
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
srcdir=`dirname "$0"`
|
||||||
|
test -z "$srcdir" && srcdir=.
|
||||||
|
|
||||||
|
SRCDIR=`(cd "$srcdir" && pwd)`
|
||||||
|
ORIGDIR=`pwd`
|
||||||
|
|
||||||
|
if test "x$SRCDIR" != "x$ORIGDIR"; then
|
||||||
|
echo "Mesa cannot be built when srcdir != builddir" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
MAKEFLAGS=""
|
||||||
|
|
||||||
|
autoreconf -v --install || exit 1
|
||||||
|
|
||||||
|
if test -z "$NOCONFIGURE"; then
|
||||||
|
"$srcdir"/configure "$@"
|
||||||
|
fi
|
@@ -1,24 +0,0 @@
|
|||||||
# warnings that are not useful
|
|
||||||
da5ebe30105f70e3520ce3ae145793b755552569
|
|
||||||
6b8cb087568699ca9a6e9e8b7bf49179e622b59f
|
|
||||||
|
|
||||||
# Jason doesn't want this applied to 19.2 (it's a revert)
|
|
||||||
d15fe8ca8262d502435c4f83985ac414f950bc5f
|
|
||||||
|
|
||||||
# This doesn't apply to 19.2
|
|
||||||
f833b4cada07b746a10ffa4d93fcd821920c3cb1
|
|
||||||
d2db43fcad6a2ea2070ff5f7884411f4b7d3925c
|
|
||||||
66f2aa6ccd0b226eebe2c1a46281160b0a54d522
|
|
||||||
|
|
||||||
# The author requested that this not be applied to 19.2
|
|
||||||
dcc0e23438f3e5929c2ef74d57e8207be25ecb41
|
|
||||||
|
|
||||||
# This doesn't apply cleanly, and no one really cares about this file on stable
|
|
||||||
# branches anyway.
|
|
||||||
bcd9224728dcb8d8fe4bcddc4bd9b2c36fcfe9dd
|
|
||||||
|
|
||||||
# De-nominated by its author due to alternate fix not being backported
|
|
||||||
43041627445540afda1a05d11861935963660344
|
|
||||||
|
|
||||||
# This is immediately reverted, so just don't apply
|
|
||||||
19546108d3dd5541a189e36df4ea83b3f519e48f
|
|
@@ -1,2 +0,0 @@
|
|||||||
[*.sh]
|
|
||||||
indent_style = tab
|
|
8
bin/.gitignore
vendored
Normal file
8
bin/.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
config.guess
|
||||||
|
config.sub
|
||||||
|
install-sh
|
||||||
|
/depcomp
|
||||||
|
/missing
|
||||||
|
ylwrap
|
||||||
|
compile
|
||||||
|
ar-lib
|
@@ -1,264 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# Copyright © 2019 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""Generates release notes for a given version of mesa."""
|
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import datetime
|
|
||||||
import os
|
|
||||||
import pathlib
|
|
||||||
import textwrap
|
|
||||||
import typing
|
|
||||||
import urllib.parse
|
|
||||||
|
|
||||||
import aiohttp
|
|
||||||
from mako.template import Template
|
|
||||||
from mako import exceptions
|
|
||||||
|
|
||||||
|
|
||||||
CURRENT_GL_VERSION = '4.5'
|
|
||||||
CURRENT_VK_VERSION = '1.1'
|
|
||||||
|
|
||||||
TEMPLATE = Template(textwrap.dedent("""\
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
||||||
<title>Mesa Release Notes</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div class="header">
|
|
||||||
<h1>The Mesa 3D Graphics Library</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<iframe src="../contents.html"></iframe>
|
|
||||||
<div class="content">
|
|
||||||
|
|
||||||
<h1>Mesa ${next_version} Release Notes / ${today}</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
%if bugfix:
|
|
||||||
Mesa ${next_version} is a new development release. People who are concerned
|
|
||||||
with stability and reliability should stick with a previous release or
|
|
||||||
wait for Mesa ${version[:-1]}1.
|
|
||||||
%else:
|
|
||||||
Mesa ${next_version} is a bug fix release which fixes bugs found since the ${version} release.
|
|
||||||
%endif
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Mesa ${next_version} implements the OpenGL ${gl_version} API, but the version reported by
|
|
||||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
|
||||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
|
||||||
Some drivers don't support all the features required in OpenGL ${gl_version}. OpenGL
|
|
||||||
${gl_version} is <strong>only</strong> available if requested at context creation.
|
|
||||||
Compatibility contexts may report a lower version depending on each driver.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Mesa ${next_version} implements the Vulkan ${vk_version} API, but the version reported by
|
|
||||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
|
||||||
depends on the particular driver being used.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>SHA256 checksum</h2>
|
|
||||||
<pre>
|
|
||||||
TBD.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
|
|
||||||
<h2>New features</h2>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
%for f in features:
|
|
||||||
<li>${f}</li>
|
|
||||||
%endfor
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>Bug fixes</h2>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
%for b in bugs:
|
|
||||||
<li>${b}</li>
|
|
||||||
%endfor
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>Changes</h2>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
%for c, author in changes:
|
|
||||||
%if author:
|
|
||||||
<p>${c}</p>
|
|
||||||
%else:
|
|
||||||
<li>${c}</li>
|
|
||||||
%endif
|
|
||||||
%endfor
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
"""))
|
|
||||||
|
|
||||||
|
|
||||||
async def gather_commits(version: str) -> str:
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'log', f'mesa-{version}..', '--grep', r'Closes: \(https\|#\).*',
|
|
||||||
stdout=asyncio.subprocess.PIPE)
|
|
||||||
out, _ = await p.communicate()
|
|
||||||
assert p.returncode == 0, f"git log didn't work: {version}"
|
|
||||||
return out.decode().strip()
|
|
||||||
|
|
||||||
|
|
||||||
async def gather_bugs(version: str) -> typing.List[str]:
|
|
||||||
commits = await gather_commits(version)
|
|
||||||
|
|
||||||
issues: typing.List[str] = []
|
|
||||||
for commit in commits.split('\n'):
|
|
||||||
sha, message = commit.split(maxsplit=1)
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'log', '--max-count', '1', r'--format=%b', sha,
|
|
||||||
stdout=asyncio.subprocess.PIPE)
|
|
||||||
_out, _ = await p.communicate()
|
|
||||||
out = _out.decode().split('\n')
|
|
||||||
for line in reversed(out):
|
|
||||||
if line.startswith('Closes:'):
|
|
||||||
bug = line.lstrip('Closes:').strip()
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
raise Exception('No closes found?')
|
|
||||||
if bug.startswith('h'):
|
|
||||||
# This means we have a bug in the form "Closes: https://..."
|
|
||||||
issues.append(os.path.basename(urllib.parse.urlparse(bug).path))
|
|
||||||
else:
|
|
||||||
issues.append(bug)
|
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
|
||||||
async with aiohttp.ClientSession(loop=loop) as session:
|
|
||||||
results = await asyncio.gather(*[get_bug(session, i) for i in issues])
|
|
||||||
typing.cast(typing.Tuple[str, ...], results)
|
|
||||||
return list(results)
|
|
||||||
|
|
||||||
|
|
||||||
async def get_bug(session: aiohttp.ClientSession, bug_id: str) -> str:
|
|
||||||
"""Query gitlab to get the name of the issue that was closed."""
|
|
||||||
# Mesa's gitlab id is 176,
|
|
||||||
url = 'https://gitlab.freedesktop.org/api/v4/projects/176/issues'
|
|
||||||
params = {'iids[]': bug_id}
|
|
||||||
async with session.get(url, params=params) as response:
|
|
||||||
content = await response.json()
|
|
||||||
return content[0]['title']
|
|
||||||
|
|
||||||
|
|
||||||
async def get_shortlog(version: str) -> str:
|
|
||||||
"""Call git shortlog."""
|
|
||||||
p = await asyncio.create_subprocess_exec('git', 'shortlog', f'mesa-{version}..',
|
|
||||||
stdout=asyncio.subprocess.PIPE)
|
|
||||||
out, _ = await p.communicate()
|
|
||||||
assert p.returncode == 0, 'error getting shortlog'
|
|
||||||
assert out is not None, 'just for mypy'
|
|
||||||
return out.decode()
|
|
||||||
|
|
||||||
|
|
||||||
def walk_shortlog(log: str) -> typing.Generator[typing.Tuple[str, bool], None, None]:
|
|
||||||
for l in log.split('\n'):
|
|
||||||
if l.startswith(' '): # this means we have a patch description
|
|
||||||
yield l, False
|
|
||||||
else:
|
|
||||||
yield l, True
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_next_version(version: str, is_point: bool) -> str:
|
|
||||||
"""Calculate the version about to be released."""
|
|
||||||
if '-' in version:
|
|
||||||
version = version.split('-')[0]
|
|
||||||
if is_point:
|
|
||||||
base = version.split('.')
|
|
||||||
base[2] = str(int(base[2]) + 1)
|
|
||||||
return '.'.join(base)
|
|
||||||
return version
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_previous_version(version: str, is_point: bool) -> str:
|
|
||||||
"""Calculate the previous version to compare to.
|
|
||||||
|
|
||||||
In the case of -rc to final that verison is the previous .0 release,
|
|
||||||
(19.3.0 in the case of 20.0.0, for example). for point releases that is
|
|
||||||
the last point release. This value will be the same as the input value
|
|
||||||
for a point release, but different for a major release.
|
|
||||||
"""
|
|
||||||
if '-' in version:
|
|
||||||
version = version.split('-')[0]
|
|
||||||
if is_point:
|
|
||||||
return version
|
|
||||||
base = version.split('.')
|
|
||||||
if base[1] == '0':
|
|
||||||
base[0] = str(int(base[0]) - 1)
|
|
||||||
base[1] = '3'
|
|
||||||
else:
|
|
||||||
base[1] = str(int(base[1]) - 1)
|
|
||||||
return '.'.join(base)
|
|
||||||
|
|
||||||
|
|
||||||
def get_features() -> typing.Generator[str, None, None]:
|
|
||||||
p = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes' / 'new_features.txt'
|
|
||||||
if p.exists():
|
|
||||||
with p.open('rt') as f:
|
|
||||||
for line in f:
|
|
||||||
yield line
|
|
||||||
|
|
||||||
|
|
||||||
async def main() -> None:
|
|
||||||
v = pathlib.Path(__file__).parent.parent / 'VERSION'
|
|
||||||
with v.open('rt') as f:
|
|
||||||
raw_version = f.read().strip()
|
|
||||||
is_point_release = '-rc' not in raw_version
|
|
||||||
assert '-devel' not in raw_version, 'Do not run this script on -devel'
|
|
||||||
version = raw_version.split('-')[0]
|
|
||||||
previous_version = calculate_previous_version(version, is_point_release)
|
|
||||||
next_version = calculate_next_version(version, is_point_release)
|
|
||||||
|
|
||||||
shortlog, bugs = await asyncio.gather(
|
|
||||||
get_shortlog(previous_version),
|
|
||||||
gather_bugs(previous_version),
|
|
||||||
)
|
|
||||||
|
|
||||||
final = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes' / f'{next_version}.html'
|
|
||||||
with final.open('wt') as f:
|
|
||||||
try:
|
|
||||||
f.write(TEMPLATE.render(
|
|
||||||
bugfix=is_point_release,
|
|
||||||
bugs=bugs,
|
|
||||||
changes=walk_shortlog(shortlog),
|
|
||||||
features=get_features(),
|
|
||||||
gl_version=CURRENT_GL_VERSION,
|
|
||||||
next_version=next_version,
|
|
||||||
today=datetime.date.today(),
|
|
||||||
version=previous_version,
|
|
||||||
vk_version=CURRENT_VK_VERSION,
|
|
||||||
))
|
|
||||||
except:
|
|
||||||
print(exceptions.text_error_template().render())
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
loop = asyncio.get_event_loop()
|
|
||||||
loop.run_until_complete(main())
|
|
@@ -1,62 +0,0 @@
|
|||||||
# Copyright © 2019 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
from unittest import mock
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
|
|
||||||
from .gen_release_notes import *
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
'current, is_point, expected',
|
|
||||||
[
|
|
||||||
('19.2.0', True, '19.2.1'),
|
|
||||||
('19.3.6', True, '19.3.7'),
|
|
||||||
('20.0.0-rc4', False, '20.0.0'),
|
|
||||||
])
|
|
||||||
def test_next_version(current: str, is_point: bool, expected: str) -> None:
|
|
||||||
assert calculate_next_version(current, is_point) == expected
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
'current, is_point, expected',
|
|
||||||
[
|
|
||||||
('19.3.6', True, '19.3.6'),
|
|
||||||
('20.0.0-rc4', False, '19.3.0'),
|
|
||||||
])
|
|
||||||
def test_previous_version(current: str, is_point: bool, expected: str) -> None:
|
|
||||||
assert calculate_previous_version(current, is_point) == expected
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_get_shortlog():
|
|
||||||
# Certainly not perfect, but it's something
|
|
||||||
version = '19.2.0'
|
|
||||||
out = await get_shortlog(version)
|
|
||||||
assert out
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_gather_commits():
|
|
||||||
# Certainly not perfect, but it's something
|
|
||||||
version = '19.2.0'
|
|
||||||
out = await gather_commits(version)
|
|
||||||
assert out
|
|
@@ -1,45 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Script for generating a list of candidates which fix commits that have been
|
|
||||||
# previously cherry-picked to a stable branch.
|
|
||||||
#
|
|
||||||
# Usage examples:
|
|
||||||
#
|
|
||||||
# $ bin/get-extra-pick-list.sh
|
|
||||||
# $ bin/get-extra-pick-list.sh > picklist
|
|
||||||
# $ bin/get-extra-pick-list.sh | tee picklist
|
|
||||||
|
|
||||||
# Use the last branchpoint as our limit for the search
|
|
||||||
latest_branchpoint=`git merge-base origin/master HEAD`
|
|
||||||
|
|
||||||
# Grep for commits with "cherry picked from commit" in the commit message.
|
|
||||||
git log --reverse --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
|
|
||||||
grep "cherry picked from commit" |\
|
|
||||||
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
|
||||||
|
|
||||||
# For each cherry-picked commit...
|
|
||||||
cat already_picked | cut -c -8 |\
|
|
||||||
while read sha
|
|
||||||
do
|
|
||||||
# ... check if it's referenced (fixed by another) patch
|
|
||||||
git log -n1 --pretty=oneline --grep=$sha $latest_branchpoint..origin/master |\
|
|
||||||
cut -c -8 |\
|
|
||||||
while read candidate
|
|
||||||
do
|
|
||||||
# And flag up if it hasn't landed in branch yet.
|
|
||||||
if grep -q ^$candidate already_picked ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
# Or if it isn't in the ignore list.
|
|
||||||
if [ -f bin/.cherry-ignore ] ; then
|
|
||||||
if grep -q ^$candidate bin/.cherry-ignore ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
printf "Commit \"%s\" references %s\n" \
|
|
||||||
"`git log -n1 --pretty=oneline $candidate`" \
|
|
||||||
"$sha"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
rm -f already_picked
|
|
@@ -1,150 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Script for generating a list of candidates for cherry-picking to a stable branch
|
|
||||||
#
|
|
||||||
# Usage examples:
|
|
||||||
#
|
|
||||||
# $ bin/get-pick-list.sh
|
|
||||||
# $ bin/get-pick-list.sh > picklist
|
|
||||||
# $ bin/get-pick-list.sh | tee picklist
|
|
||||||
#
|
|
||||||
# The output is as follows:
|
|
||||||
# [nomination_type] commit_sha commit summary
|
|
||||||
|
|
||||||
is_stable_nomination()
|
|
||||||
{
|
|
||||||
git show --pretty=medium --summary "$1" | grep -q -i -o "CC:.*mesa-stable"
|
|
||||||
}
|
|
||||||
|
|
||||||
is_typod_nomination()
|
|
||||||
{
|
|
||||||
git show --pretty=medium --summary "$1" | grep -q -i -o "CC:.*mesa-dev"
|
|
||||||
}
|
|
||||||
|
|
||||||
fixes=
|
|
||||||
|
|
||||||
# Helper to handle various mistypos of the fixes tag.
|
|
||||||
# The tag string itself is passed as argument and normalised within.
|
|
||||||
#
|
|
||||||
# Resulting string in the global variable "fixes" and contains entries
|
|
||||||
# in the form "fixes:$sha"
|
|
||||||
is_sha_nomination()
|
|
||||||
{
|
|
||||||
fixes=`git show --pretty=medium -s $1 | tr -d "\n" | \
|
|
||||||
sed -e 's/'"$2"'/\nfixes:/Ig' | \
|
|
||||||
grep -Eo 'fixes:[a-f0-9]{4,40}'`
|
|
||||||
|
|
||||||
fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
|
|
||||||
if test $fixes_count -eq 0; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Throw a warning for each invalid sha
|
|
||||||
while test $fixes_count -gt 0; do
|
|
||||||
# Treat only the current line
|
|
||||||
id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : -f 2`
|
|
||||||
fixes_count=$(($fixes_count-1))
|
|
||||||
if ! git show $id >/dev/null 2>&1; then
|
|
||||||
echo WARNING: Commit $1 lists invalid sha $id
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Checks if at least one of offending commits, listed in the global
|
|
||||||
# "fixes", is in branch.
|
|
||||||
sha_in_range()
|
|
||||||
{
|
|
||||||
fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
|
|
||||||
while test $fixes_count -gt 0; do
|
|
||||||
# Treat only the current line
|
|
||||||
id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : -f 2`
|
|
||||||
fixes_count=$(($fixes_count-1))
|
|
||||||
|
|
||||||
# Be that cherry-picked ...
|
|
||||||
# ... or landed before the branchpoint.
|
|
||||||
if grep -q ^$id already_picked ||
|
|
||||||
grep -q ^$id already_landed ; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
is_fixes_nomination()
|
|
||||||
{
|
|
||||||
is_sha_nomination "$1" "fixes:[[:space:]]*"
|
|
||||||
if test $? -eq 0; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
is_sha_nomination "$1" "fixes[[:space:]]\+"
|
|
||||||
}
|
|
||||||
|
|
||||||
is_brokenby_nomination()
|
|
||||||
{
|
|
||||||
is_sha_nomination "$1" "broken by"
|
|
||||||
}
|
|
||||||
|
|
||||||
is_revert_nomination()
|
|
||||||
{
|
|
||||||
is_sha_nomination "$1" "This reverts commit "
|
|
||||||
}
|
|
||||||
|
|
||||||
# Use the last branchpoint as our limit for the search
|
|
||||||
latest_branchpoint=`git merge-base upstream/master HEAD`
|
|
||||||
|
|
||||||
# List all the commits between day 1 and the branch point...
|
|
||||||
git log --reverse --pretty=%H $latest_branchpoint > already_landed
|
|
||||||
|
|
||||||
# ... and the ones cherry-picked.
|
|
||||||
git log --reverse --pretty=medium --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
|
|
||||||
grep "cherry picked from commit" |\
|
|
||||||
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
|
||||||
|
|
||||||
# Grep for potential candidates
|
|
||||||
git log --reverse --pretty=%H -i --grep='^CC:.*mesa-stable\|^CC:.*mesa-dev\|\<fixes\>\|\<broken by\>\|This reverts commit' $latest_branchpoint..upstream/master |\
|
|
||||||
while read sha
|
|
||||||
do
|
|
||||||
# Check to see whether the patch is on the ignore list.
|
|
||||||
if test -f bin/.cherry-ignore; then
|
|
||||||
if grep -q ^$sha bin/.cherry-ignore ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check to see if it has already been picked over.
|
|
||||||
if grep -q ^$sha already_picked ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
if is_fixes_nomination "$sha"; then
|
|
||||||
tag=fixes
|
|
||||||
elif is_brokenby_nomination "$sha"; then
|
|
||||||
tag=brokenby
|
|
||||||
elif is_revert_nomination "$sha"; then
|
|
||||||
tag=revert
|
|
||||||
elif is_stable_nomination "$sha"; then
|
|
||||||
tag=stable
|
|
||||||
elif is_typod_nomination "$sha"; then
|
|
||||||
tag=typod
|
|
||||||
else
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$tag" in
|
|
||||||
fixes | brokenby | revert )
|
|
||||||
if ! sha_in_range; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
printf "[ %8s ] " "$tag"
|
|
||||||
git --no-pager show --no-patch --pretty=oneline $sha
|
|
||||||
done
|
|
||||||
|
|
||||||
rm -f already_picked
|
|
||||||
rm -f already_landed
|
|
@@ -1,50 +0,0 @@
|
|||||||
"""
|
|
||||||
Generate the contents of the git_sha1.h file.
|
|
||||||
The output of this script goes to stdout.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
import os.path
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
def get_git_sha1():
|
|
||||||
"""Try to get the git SHA1 with git rev-parse."""
|
|
||||||
git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git')
|
|
||||||
try:
|
|
||||||
git_sha1 = subprocess.check_output([
|
|
||||||
'git',
|
|
||||||
'--git-dir=' + git_dir,
|
|
||||||
'rev-parse',
|
|
||||||
'HEAD',
|
|
||||||
], stderr=open(os.devnull, 'w')).decode("ascii")
|
|
||||||
except:
|
|
||||||
# don't print anything if it fails
|
|
||||||
git_sha1 = ''
|
|
||||||
return git_sha1
|
|
||||||
|
|
||||||
def write_if_different(contents):
|
|
||||||
"""
|
|
||||||
Avoid touching the output file if it doesn't need modifications
|
|
||||||
Useful to avoid triggering rebuilds when nothing has changed.
|
|
||||||
"""
|
|
||||||
if os.path.isfile(args.output):
|
|
||||||
with open(args.output, 'r') as file:
|
|
||||||
if file.read() == contents:
|
|
||||||
return
|
|
||||||
with open(args.output, 'w') as file:
|
|
||||||
file.write(contents)
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument('--output', help='File to write the #define in',
|
|
||||||
required=True)
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
git_sha1 = os.environ.get('MESA_GIT_SHA1_OVERRIDE', get_git_sha1())[:10]
|
|
||||||
if git_sha1:
|
|
||||||
write_if_different('#define MESA_GIT_SHA1 " (git-' + git_sha1 + ')"')
|
|
||||||
else:
|
|
||||||
write_if_different('#define MESA_GIT_SHA1 ""')
|
|
@@ -1,83 +0,0 @@
|
|||||||
# encoding=utf-8
|
|
||||||
# Copyright © 2017-2018 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""Script to install megadriver symlinks for meson."""
|
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument('megadriver')
|
|
||||||
parser.add_argument('libdir')
|
|
||||||
parser.add_argument('drivers', nargs='+')
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if os.path.isabs(args.libdir):
|
|
||||||
destdir = os.environ.get('DESTDIR')
|
|
||||||
if destdir:
|
|
||||||
to = os.path.join(destdir, args.libdir[1:])
|
|
||||||
else:
|
|
||||||
to = args.libdir
|
|
||||||
else:
|
|
||||||
to = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], args.libdir)
|
|
||||||
|
|
||||||
master = os.path.join(to, os.path.basename(args.megadriver))
|
|
||||||
|
|
||||||
if not os.path.exists(to):
|
|
||||||
if os.path.lexists(to):
|
|
||||||
os.unlink(to)
|
|
||||||
os.makedirs(to)
|
|
||||||
|
|
||||||
for driver in args.drivers:
|
|
||||||
abs_driver = os.path.join(to, driver)
|
|
||||||
|
|
||||||
if os.path.lexists(abs_driver):
|
|
||||||
os.unlink(abs_driver)
|
|
||||||
print('installing {} to {}'.format(args.megadriver, abs_driver))
|
|
||||||
os.link(master, abs_driver)
|
|
||||||
|
|
||||||
try:
|
|
||||||
ret = os.getcwd()
|
|
||||||
os.chdir(to)
|
|
||||||
|
|
||||||
name, ext = os.path.splitext(driver)
|
|
||||||
while ext != '.so':
|
|
||||||
if os.path.lexists(name):
|
|
||||||
os.unlink(name)
|
|
||||||
os.symlink(driver, name)
|
|
||||||
name, ext = os.path.splitext(name)
|
|
||||||
finally:
|
|
||||||
os.chdir(ret)
|
|
||||||
|
|
||||||
# Remove meson-created master .so and symlinks
|
|
||||||
os.unlink(master)
|
|
||||||
name, ext = os.path.splitext(master)
|
|
||||||
while ext != '.so':
|
|
||||||
if os.path.lexists(name):
|
|
||||||
os.unlink(name)
|
|
||||||
name, ext = os.path.splitext(name)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
74
bin/installmesa
Executable file
74
bin/installmesa
Executable file
@@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Simple shell script for installing Mesa's header and library files.
|
||||||
|
# If the copy commands below don't work on a particular system (i.e. the
|
||||||
|
# -f or -d flags), we may need to branch on `uname` to do the right thing.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
TOP=.
|
||||||
|
|
||||||
|
INCLUDE_DIR="/usr/local/include"
|
||||||
|
LIB_DIR="/usr/local/lib"
|
||||||
|
|
||||||
|
if [ "x$#" = "x0" ] ; then
|
||||||
|
echo
|
||||||
|
echo "***** Mesa installation - You may need root privileges to do this *****"
|
||||||
|
echo
|
||||||
|
echo "Default directory for header files is:" ${INCLUDE_DIR}
|
||||||
|
echo "Enter new directory or press <Enter> to accept this default."
|
||||||
|
|
||||||
|
read INPUT
|
||||||
|
if [ "x${INPUT}" != "x" ] ; then
|
||||||
|
INCLUDE_DIR=${INPUT}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Default directory for library files is:" ${LIB_DIR}
|
||||||
|
echo "Enter new directory or press <Enter> to accept this default."
|
||||||
|
|
||||||
|
read INPUT
|
||||||
|
if [ "x${INPUT}" != "x" ] ; then
|
||||||
|
LIB_DIR=${INPUT}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "About to install Mesa header files (GL/*.h) in: " ${INCLUDE_DIR}/GL
|
||||||
|
echo "and Mesa library files (libGL.*, etc) in: " ${LIB_DIR}
|
||||||
|
echo "Press <Enter> to continue, or <ctrl>-C to abort."
|
||||||
|
|
||||||
|
read INPUT
|
||||||
|
|
||||||
|
else
|
||||||
|
INCLUDE_DIR=$1/include
|
||||||
|
LIB_DIR=$1/lib
|
||||||
|
fi
|
||||||
|
|
||||||
|
# flags:
|
||||||
|
# -f = force
|
||||||
|
# -d = preserve symlinks (does not work on BSD)
|
||||||
|
|
||||||
|
if [ `uname` = "FreeBSD" ] ; then
|
||||||
|
CP_FLAGS="-f"
|
||||||
|
elif [ `uname` = "Darwin" ] ; then
|
||||||
|
CP_FLAGS="-f"
|
||||||
|
elif [ `uname` = "AIX" ] ; then
|
||||||
|
CP_FLAGS="-fh"
|
||||||
|
else
|
||||||
|
CP_FLAGS="-fd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
set -v
|
||||||
|
|
||||||
|
mkdir -p ${INCLUDE_DIR}
|
||||||
|
mkdir -p ${INCLUDE_DIR}/GL
|
||||||
|
# NOT YET: mkdir -p ${INCLUDE_DIR}/GLES
|
||||||
|
mkdir -p ${LIB_DIR}
|
||||||
|
cp -f ${TOP}/include/GL/*.h ${INCLUDE_DIR}/GL
|
||||||
|
cp -f ${TOP}/src/glw/*.h ${INCLUDE_DIR}/GL
|
||||||
|
# NOT YET: cp -f ${TOP}/include/GLES/*.h ${INCLUDE_DIR}/GLES
|
||||||
|
cp ${CP_FLAGS} ${TOP}/lib*/lib* ${LIB_DIR}
|
||||||
|
|
||||||
|
echo "Done."
|
@@ -1,88 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# Copyright © 2019 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""This script reads a meson build directory and gives back the command line it
|
|
||||||
was configured with.
|
|
||||||
|
|
||||||
This only works for meson 0.49.0 and newer.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import ast
|
|
||||||
import configparser
|
|
||||||
import pathlib
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
def parse_args() -> argparse.Namespace:
|
|
||||||
"""Parse arguments."""
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument(
|
|
||||||
'build_dir',
|
|
||||||
help='Path the meson build directory')
|
|
||||||
args = parser.parse_args()
|
|
||||||
return args
|
|
||||||
|
|
||||||
|
|
||||||
def load_config(path: pathlib.Path) -> configparser.ConfigParser:
|
|
||||||
"""Load config file."""
|
|
||||||
conf = configparser.ConfigParser()
|
|
||||||
with path.open() as f:
|
|
||||||
conf.read_file(f)
|
|
||||||
return conf
|
|
||||||
|
|
||||||
|
|
||||||
def build_cmd(conf: configparser.ConfigParser) -> str:
|
|
||||||
"""Rebuild the command line."""
|
|
||||||
args = []
|
|
||||||
for k, v in conf['options'].items():
|
|
||||||
if ' ' in v:
|
|
||||||
args.append(f'-D{k}="{v}"')
|
|
||||||
else:
|
|
||||||
args.append(f'-D{k}={v}')
|
|
||||||
|
|
||||||
cf = conf['properties'].get('cross_file')
|
|
||||||
if cf:
|
|
||||||
args.append('--cross-file={}'.format(cf))
|
|
||||||
nf = conf['properties'].get('native_file')
|
|
||||||
if nf:
|
|
||||||
# this will be in the form "['str', 'str']", so use ast.literal_eval to
|
|
||||||
# convert it to a list of strings.
|
|
||||||
nf = ast.literal_eval(nf)
|
|
||||||
args.extend(['--native-file={}'.format(f) for f in nf])
|
|
||||||
return ' '.join(args)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
args = parse_args()
|
|
||||||
path = pathlib.Path(args.build_dir, 'meson-private', 'cmd_line.txt')
|
|
||||||
if not path.exists():
|
|
||||||
print('Cannot find the necessary file to rebuild command line. '
|
|
||||||
'Is your meson version >= 0.49.0?', file=sys.stderr)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
conf = load_config(path)
|
|
||||||
cmd = build_cmd(conf)
|
|
||||||
print(cmd)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@@ -1,63 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
from os import get_terminal_size
|
|
||||||
from textwrap import wrap
|
|
||||||
from mesonbuild import coredata
|
|
||||||
from mesonbuild import optinterpreter
|
|
||||||
|
|
||||||
(COLUMNS, _) = get_terminal_size()
|
|
||||||
|
|
||||||
def describe_option(option_name: str, option_default_value: str,
|
|
||||||
option_type: str, option_message: str) -> None:
|
|
||||||
print('name: ' + option_name)
|
|
||||||
print('default: ' + option_default_value)
|
|
||||||
print('type: ' + option_type)
|
|
||||||
for line in wrap(option_message, width=COLUMNS - 9):
|
|
||||||
print(' ' + line)
|
|
||||||
print('---')
|
|
||||||
|
|
||||||
oi = optinterpreter.OptionInterpreter('')
|
|
||||||
oi.process('meson_options.txt')
|
|
||||||
|
|
||||||
for (name, value) in oi.options.items():
|
|
||||||
if isinstance(value, coredata.UserStringOption):
|
|
||||||
describe_option(name,
|
|
||||||
value.value,
|
|
||||||
'string',
|
|
||||||
"You can type what you want, but make sure it makes sense")
|
|
||||||
elif isinstance(value, coredata.UserBooleanOption):
|
|
||||||
describe_option(name,
|
|
||||||
'true' if value.value else 'false',
|
|
||||||
'boolean',
|
|
||||||
"You can set it to 'true' or 'false'")
|
|
||||||
elif isinstance(value, coredata.UserIntegerOption):
|
|
||||||
describe_option(name,
|
|
||||||
str(value.value),
|
|
||||||
'integer',
|
|
||||||
"You can set it to any integer value between '{}' and '{}'".format(value.min_value, value.max_value))
|
|
||||||
elif isinstance(value, coredata.UserUmaskOption):
|
|
||||||
describe_option(name,
|
|
||||||
str(value.value),
|
|
||||||
'umask',
|
|
||||||
"You can set it to 'preserve' or a value between '0000' and '0777'")
|
|
||||||
elif isinstance(value, coredata.UserComboOption):
|
|
||||||
choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']'
|
|
||||||
describe_option(name,
|
|
||||||
value.value,
|
|
||||||
'combo',
|
|
||||||
"You can set it to any one of those values: " + choices)
|
|
||||||
elif isinstance(value, coredata.UserArrayOption):
|
|
||||||
choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']'
|
|
||||||
value = '[' + ', '.join(["'" + v + "'" for v in value.value]) + ']'
|
|
||||||
describe_option(name,
|
|
||||||
value,
|
|
||||||
'array',
|
|
||||||
"You can set it to one or more of those values: " + choices)
|
|
||||||
elif isinstance(value, coredata.UserFeatureOption):
|
|
||||||
describe_option(name,
|
|
||||||
value.value,
|
|
||||||
'feature',
|
|
||||||
"You can set it to 'auto', 'enabled', or 'disabled'")
|
|
||||||
else:
|
|
||||||
print(name + ' is an option of a type unknown to this script')
|
|
||||||
print('---')
|
|
@@ -1,22 +0,0 @@
|
|||||||
# Copyright © 2017 Eric Engestrom
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
git_sha1_gen_py = files('git_sha1_gen.py')
|
|
||||||
symbols_check = find_program('symbols-check.py')
|
|
@@ -1,35 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# encoding=utf-8
|
|
||||||
# Copyright © 2017 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
import os
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
filename = os.path.join(os.environ['MESON_SOURCE_ROOT'], 'VERSION')
|
|
||||||
with open(filename) as f:
|
|
||||||
version = f.read().strip()
|
|
||||||
print(version, end='')
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
112
bin/minstall
Executable file
112
bin/minstall
Executable file
@@ -0,0 +1,112 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
# A minimal replacement for 'install' that supports installing symbolic links.
|
||||||
|
# Only a limited number of options are supported:
|
||||||
|
# -d dir Create a directory
|
||||||
|
# -m mode Sets a file's mode when installing
|
||||||
|
|
||||||
|
|
||||||
|
# If these commands aren't portable, we'll need some "if (arch)" type stuff
|
||||||
|
SYMLINK="ln -s"
|
||||||
|
MKDIR="mkdir -p"
|
||||||
|
RM="rm -f"
|
||||||
|
|
||||||
|
MODE=""
|
||||||
|
|
||||||
|
if [ "$1" = "-d" ] ; then
|
||||||
|
# make a directory path
|
||||||
|
$MKDIR "$2"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "-m" ] ; then
|
||||||
|
# set file mode
|
||||||
|
MODE=$2
|
||||||
|
shift 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# install file(s) into destination
|
||||||
|
if [ $# -ge 2 ] ; then
|
||||||
|
|
||||||
|
# Last cmd line arg is the dest dir
|
||||||
|
for FILE in $@ ; do
|
||||||
|
DESTDIR="$FILE"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Loop over args, moving them to DEST directory
|
||||||
|
I=1
|
||||||
|
for FILE in $@ ; do
|
||||||
|
if [ $I = $# ] ; then
|
||||||
|
# stop, don't want to install $DEST into $DEST
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
DEST=$DESTDIR
|
||||||
|
|
||||||
|
# On CYGWIN, because DLLs are loaded by the native Win32 loader,
|
||||||
|
# they are installed in the executable path. Stub libraries used
|
||||||
|
# only for linking are installed in the library path
|
||||||
|
case `uname` in
|
||||||
|
CYGWIN*)
|
||||||
|
case $FILE in
|
||||||
|
*.dll)
|
||||||
|
DEST="$DEST/../bin"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
PWDSAVE=`pwd`
|
||||||
|
|
||||||
|
# determine file's type
|
||||||
|
if [ -h "$FILE" ] ; then
|
||||||
|
#echo $FILE is a symlink
|
||||||
|
# Unfortunately, cp -d isn't universal so we have to
|
||||||
|
# use a work-around.
|
||||||
|
|
||||||
|
# Use ls -l to find the target that the link points to
|
||||||
|
LL=`ls -l "$FILE"`
|
||||||
|
for L in $LL ; do
|
||||||
|
TARGET=$L
|
||||||
|
done
|
||||||
|
#echo $FILE is a symlink pointing to $TARGET
|
||||||
|
|
||||||
|
FILE=`basename "$FILE"`
|
||||||
|
# Go to $DEST and make the link
|
||||||
|
cd "$DEST" # pushd
|
||||||
|
$RM "$FILE"
|
||||||
|
$SYMLINK "$TARGET" "$FILE"
|
||||||
|
cd "$PWDSAVE" # popd
|
||||||
|
|
||||||
|
elif [ -f "$FILE" ] ; then
|
||||||
|
#echo "$FILE" is a regular file
|
||||||
|
# Only copy if the files differ
|
||||||
|
if ! cmp -s $FILE $DEST/`basename $FILE`; then
|
||||||
|
$RM "$DEST/`basename $FILE`"
|
||||||
|
cp "$FILE" "$DEST"
|
||||||
|
fi
|
||||||
|
if [ $MODE ] ; then
|
||||||
|
FILE=`basename "$FILE"`
|
||||||
|
chmod $MODE "$DEST/$FILE"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Unknown type of argument: " "$FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
I=`expr $I + 1`
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If we get here, we didn't find anything to do
|
||||||
|
echo "Usage:"
|
||||||
|
echo " install -d dir Create named directory"
|
||||||
|
echo " install [-m mode] file [...] dest Install files in destination"
|
||||||
|
|
@@ -1,251 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
#
|
|
||||||
# Copyright 2012 VMware Inc
|
|
||||||
# Copyright 2008-2009 Jose Fonseca
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
# THE SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
"""Perf annotate for JIT code.
|
|
||||||
|
|
||||||
Linux `perf annotate` does not work with JIT code. This script takes the data
|
|
||||||
produced by `perf script` command, plus the diassemblies outputed by gallivm
|
|
||||||
into /tmp/perf-XXXXX.map.asm and produces output similar to `perf annotate`.
|
|
||||||
|
|
||||||
See docs/llvmpipe.html for usage instructions.
|
|
||||||
|
|
||||||
The `perf script` output parser was derived from the gprof2dot.py script.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import os.path
|
|
||||||
import re
|
|
||||||
import optparse
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
|
|
||||||
class Parser:
|
|
||||||
"""Parser interface."""
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def parse(self):
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
|
|
||||||
class LineParser(Parser):
|
|
||||||
"""Base class for parsers that read line-based formats."""
|
|
||||||
|
|
||||||
def __init__(self, file):
|
|
||||||
Parser.__init__(self)
|
|
||||||
self._file = file
|
|
||||||
self.__line = None
|
|
||||||
self.__eof = False
|
|
||||||
self.line_no = 0
|
|
||||||
|
|
||||||
def readline(self):
|
|
||||||
line = self._file.readline()
|
|
||||||
if not line:
|
|
||||||
self.__line = ''
|
|
||||||
self.__eof = True
|
|
||||||
else:
|
|
||||||
self.line_no += 1
|
|
||||||
self.__line = line.rstrip('\r\n')
|
|
||||||
|
|
||||||
def lookahead(self):
|
|
||||||
assert self.__line is not None
|
|
||||||
return self.__line
|
|
||||||
|
|
||||||
def consume(self):
|
|
||||||
assert self.__line is not None
|
|
||||||
line = self.__line
|
|
||||||
self.readline()
|
|
||||||
return line
|
|
||||||
|
|
||||||
def eof(self):
|
|
||||||
assert self.__line is not None
|
|
||||||
return self.__eof
|
|
||||||
|
|
||||||
|
|
||||||
mapFile = None
|
|
||||||
|
|
||||||
def lookupMap(filename, matchSymbol):
|
|
||||||
global mapFile
|
|
||||||
mapFile = filename
|
|
||||||
stream = open(filename, 'rt')
|
|
||||||
for line in stream:
|
|
||||||
start, length, symbol = line.split()
|
|
||||||
|
|
||||||
start = int(start, 16)
|
|
||||||
length = int(length,16)
|
|
||||||
|
|
||||||
if symbol == matchSymbol:
|
|
||||||
return start
|
|
||||||
|
|
||||||
return None
|
|
||||||
|
|
||||||
def lookupAsm(filename, desiredFunction):
|
|
||||||
stream = open(filename + '.asm', 'rt')
|
|
||||||
while stream.readline() != desiredFunction + ':\n':
|
|
||||||
pass
|
|
||||||
|
|
||||||
asm = []
|
|
||||||
line = stream.readline().strip()
|
|
||||||
while line:
|
|
||||||
addr, instr = line.split(':', 1)
|
|
||||||
addr = int(addr)
|
|
||||||
asm.append((addr, instr))
|
|
||||||
line = stream.readline().strip()
|
|
||||||
|
|
||||||
return asm
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
samples = {}
|
|
||||||
|
|
||||||
|
|
||||||
class PerfParser(LineParser):
|
|
||||||
"""Parser for linux perf callgraph output.
|
|
||||||
|
|
||||||
It expects output generated with
|
|
||||||
|
|
||||||
perf record -g
|
|
||||||
perf script
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, infile, symbol):
|
|
||||||
LineParser.__init__(self, infile)
|
|
||||||
self.symbol = symbol
|
|
||||||
|
|
||||||
def readline(self):
|
|
||||||
# Override LineParser.readline to ignore comment lines
|
|
||||||
while True:
|
|
||||||
LineParser.readline(self)
|
|
||||||
if self.eof() or not self.lookahead().startswith('#'):
|
|
||||||
break
|
|
||||||
|
|
||||||
def parse(self):
|
|
||||||
# read lookahead
|
|
||||||
self.readline()
|
|
||||||
|
|
||||||
while not self.eof():
|
|
||||||
self.parse_event()
|
|
||||||
|
|
||||||
asm = lookupAsm(mapFile, self.symbol)
|
|
||||||
|
|
||||||
addresses = samples.keys()
|
|
||||||
addresses.sort()
|
|
||||||
total_samples = 0
|
|
||||||
|
|
||||||
sys.stdout.write('%s:\n' % self.symbol)
|
|
||||||
for address, instr in asm:
|
|
||||||
try:
|
|
||||||
sample = samples.pop(address)
|
|
||||||
except KeyError:
|
|
||||||
sys.stdout.write(6*' ')
|
|
||||||
else:
|
|
||||||
sys.stdout.write('%6u' % (sample))
|
|
||||||
total_samples += sample
|
|
||||||
sys.stdout.write('%6u: %s\n' % (address, instr))
|
|
||||||
print 'total:', total_samples
|
|
||||||
assert len(samples) == 0
|
|
||||||
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
def parse_event(self):
|
|
||||||
if self.eof():
|
|
||||||
return
|
|
||||||
|
|
||||||
line = self.consume()
|
|
||||||
assert line
|
|
||||||
|
|
||||||
callchain = self.parse_callchain()
|
|
||||||
if not callchain:
|
|
||||||
return
|
|
||||||
|
|
||||||
def parse_callchain(self):
|
|
||||||
callchain = []
|
|
||||||
while self.lookahead():
|
|
||||||
function = self.parse_call(len(callchain) == 0)
|
|
||||||
if function is None:
|
|
||||||
break
|
|
||||||
callchain.append(function)
|
|
||||||
if self.lookahead() == '':
|
|
||||||
self.consume()
|
|
||||||
return callchain
|
|
||||||
|
|
||||||
call_re = re.compile(r'^\s+(?P<address>[0-9a-fA-F]+)\s+(?P<symbol>.*)\s+\((?P<module>[^)]*)\)$')
|
|
||||||
|
|
||||||
def parse_call(self, first):
|
|
||||||
line = self.consume()
|
|
||||||
mo = self.call_re.match(line)
|
|
||||||
assert mo
|
|
||||||
if not mo:
|
|
||||||
return None
|
|
||||||
|
|
||||||
if not first:
|
|
||||||
return None
|
|
||||||
|
|
||||||
function_name = mo.group('symbol')
|
|
||||||
if not function_name:
|
|
||||||
function_name = mo.group('address')
|
|
||||||
|
|
||||||
module = mo.group('module')
|
|
||||||
|
|
||||||
function_id = function_name + ':' + module
|
|
||||||
|
|
||||||
address = mo.group('address')
|
|
||||||
address = int(address, 16)
|
|
||||||
|
|
||||||
if function_name != self.symbol:
|
|
||||||
return None
|
|
||||||
|
|
||||||
start_address = lookupMap(module, function_name)
|
|
||||||
address -= start_address
|
|
||||||
|
|
||||||
#print function_name, module, address
|
|
||||||
|
|
||||||
samples[address] = samples.get(address, 0) + 1
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
"""Main program."""
|
|
||||||
|
|
||||||
optparser = optparse.OptionParser(
|
|
||||||
usage="\n\t%prog [options] symbol_name")
|
|
||||||
(options, args) = optparser.parse_args(sys.argv[1:])
|
|
||||||
if len(args) != 1:
|
|
||||||
optparser.error('wrong number of arguments')
|
|
||||||
|
|
||||||
symbol = args[0]
|
|
||||||
|
|
||||||
p = subprocess.Popen(['perf', 'script'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
||||||
parser = PerfParser(p.stdout, symbol)
|
|
||||||
parser.parse()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
||||||
|
|
||||||
|
|
||||||
# vim: set sw=4 et:
|
|
@@ -1,122 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# Copyright © 2019 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""Update the main page, release notes, and calendar."""
|
|
||||||
|
|
||||||
import calendar
|
|
||||||
import datetime
|
|
||||||
import pathlib
|
|
||||||
from lxml import (
|
|
||||||
etree,
|
|
||||||
html,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_previous_version(version: str, is_point: bool) -> str:
|
|
||||||
"""Calculate the previous version to compare to.
|
|
||||||
|
|
||||||
In the case of -rc to final that verison is the previous .0 release,
|
|
||||||
(19.3.0 in the case of 20.0.0, for example). for point releases that is
|
|
||||||
the last point release. This value will be the same as the input value
|
|
||||||
for a poiont release, but different for a major release.
|
|
||||||
"""
|
|
||||||
if '-' in version:
|
|
||||||
version = version.split('-')[0]
|
|
||||||
if is_point:
|
|
||||||
return version
|
|
||||||
base = version.split('.')
|
|
||||||
if base[1] == '0':
|
|
||||||
base[0] = str(int(base[0]) - 1)
|
|
||||||
base[1] = '3'
|
|
||||||
else:
|
|
||||||
base[1] = str(int(base[1]) - 1)
|
|
||||||
return '.'.join(base)
|
|
||||||
|
|
||||||
|
|
||||||
def get_version() -> str:
|
|
||||||
v = pathlib.Path(__file__).parent.parent / 'VERSION'
|
|
||||||
with v.open('rt') as f:
|
|
||||||
raw_version = f.read().strip()
|
|
||||||
return raw_version.split('-')[0]
|
|
||||||
|
|
||||||
|
|
||||||
def is_point_release() -> bool:
|
|
||||||
v = pathlib.Path(__file__).parent.parent / 'VERSION'
|
|
||||||
with v.open('rt') as f:
|
|
||||||
raw_version = f.read().strip()
|
|
||||||
return '-rc' not in raw_version
|
|
||||||
|
|
||||||
|
|
||||||
def update_index(is_point: bool, version: str, previous_version: str) -> None:
|
|
||||||
p = pathlib.Path(__file__).parent.parent / 'docs' / 'index.html'
|
|
||||||
with p.open('rt') as f:
|
|
||||||
tree = html.parse(f)
|
|
||||||
|
|
||||||
news = tree.xpath('.//h1')[0]
|
|
||||||
|
|
||||||
date = datetime.date.today()
|
|
||||||
month = calendar.month_name[date.month]
|
|
||||||
header = etree.Element('h2')
|
|
||||||
header.text=f"{month} {date.day}, {date.year}"
|
|
||||||
|
|
||||||
body = etree.Element('p')
|
|
||||||
a = etree.SubElement(body, 'a', attrib={'href': f'relnotes/{previous_version}'})
|
|
||||||
a.text = f"Mesa {previous_version}"
|
|
||||||
if is_point:
|
|
||||||
a.tail = " is released. This is a bug fix release."
|
|
||||||
else:
|
|
||||||
a.tail = (" is released. This is a new development release. "
|
|
||||||
"See the release notes for mor information about this release.")
|
|
||||||
|
|
||||||
root = news.getparent()
|
|
||||||
index = root.index(news) + 1
|
|
||||||
root.insert(index, body)
|
|
||||||
root.insert(index, header)
|
|
||||||
|
|
||||||
tree.write(p.as_posix(), method='html')
|
|
||||||
|
|
||||||
|
|
||||||
def update_release_notes(previous_version: str) -> None:
|
|
||||||
p = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes.html'
|
|
||||||
with p.open('rt') as f:
|
|
||||||
tree = html.parse(f)
|
|
||||||
|
|
||||||
li = etree.Element('li')
|
|
||||||
a = etree.SubElement(li, 'a', href=f'relnotes/{previous_version}')
|
|
||||||
a.text = f'{previous_version} release notes'
|
|
||||||
|
|
||||||
ul = tree.xpath('.//ul')[0]
|
|
||||||
ul.insert(0, li)
|
|
||||||
|
|
||||||
tree.write(p.as_posix(), method='html')
|
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
|
||||||
is_point = is_point_release()
|
|
||||||
version = get_version()
|
|
||||||
previous_version = calculate_previous_version(version, is_point)
|
|
||||||
|
|
||||||
update_index(is_point, version, previous_version)
|
|
||||||
update_release_notes(previous_version)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
23
bin/shortlog_mesa.sh
Executable file
23
bin/shortlog_mesa.sh
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This script is used to generate the list of changes that
|
||||||
|
# appears in the release notes files, with HTML formatting.
|
||||||
|
|
||||||
|
|
||||||
|
typeset -i in_log=0
|
||||||
|
|
||||||
|
git shortlog $* | while read l
|
||||||
|
do
|
||||||
|
if [ $in_log -eq 0 ]; then
|
||||||
|
echo '<p>'$l'</p>'
|
||||||
|
echo '<ul>'
|
||||||
|
in_log=1
|
||||||
|
elif echo "$l" | egrep -q '^$' ; then
|
||||||
|
echo '</ul>'
|
||||||
|
echo
|
||||||
|
in_log=0
|
||||||
|
else
|
||||||
|
mesg=$(echo $l | sed 's/ (cherry picked from commit [0-9a-f]\+)//;s/\&/&/g;s/</\</g;s/>/\>/g')
|
||||||
|
echo ' <li>'${mesg}'</li>'
|
||||||
|
fi
|
||||||
|
done
|
@@ -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:
|
|
||||||
*;
|
|
||||||
};
|
|
39
common.py
39
common.py
@@ -17,9 +17,6 @@ import SCons.Script.SConscript
|
|||||||
host_platform = _platform.system().lower()
|
host_platform = _platform.system().lower()
|
||||||
if host_platform.startswith('cygwin'):
|
if host_platform.startswith('cygwin'):
|
||||||
host_platform = 'cygwin'
|
host_platform = 'cygwin'
|
||||||
# MSYS2 default platform selection.
|
|
||||||
if host_platform.startswith('mingw'):
|
|
||||||
host_platform = 'windows'
|
|
||||||
|
|
||||||
# Search sys.argv[] for a "platform=foo" argument since we don't have
|
# Search sys.argv[] for a "platform=foo" argument since we don't have
|
||||||
# an 'env' variable at this point.
|
# an 'env' variable at this point.
|
||||||
@@ -36,7 +33,7 @@ _machine_map = {
|
|||||||
'i686': 'x86',
|
'i686': 'x86',
|
||||||
'BePC': 'x86',
|
'BePC': 'x86',
|
||||||
'Intel': 'x86',
|
'Intel': 'x86',
|
||||||
'ppc': 'ppc',
|
'ppc' : 'ppc',
|
||||||
'BeBox': 'ppc',
|
'BeBox': 'ppc',
|
||||||
'BeMac': 'ppc',
|
'BeMac': 'ppc',
|
||||||
'AMD64': 'x86_64',
|
'AMD64': 'x86_64',
|
||||||
@@ -52,18 +49,9 @@ if 'PROCESSOR_ARCHITECTURE' in os.environ:
|
|||||||
else:
|
else:
|
||||||
host_machine = _platform.machine()
|
host_machine = _platform.machine()
|
||||||
host_machine = _machine_map.get(host_machine, 'generic')
|
host_machine = _machine_map.get(host_machine, 'generic')
|
||||||
# MSYS2 default machine selection.
|
|
||||||
if _platform.system().lower().startswith('mingw') and 'MSYSTEM' in os.environ:
|
|
||||||
if os.environ['MSYSTEM'] == 'MINGW32':
|
|
||||||
host_machine = 'x86'
|
|
||||||
if os.environ['MSYSTEM'] == 'MINGW64':
|
|
||||||
host_machine = 'x86_64'
|
|
||||||
|
|
||||||
default_machine = host_machine
|
default_machine = host_machine
|
||||||
default_toolchain = 'default'
|
default_toolchain = 'default'
|
||||||
# MSYS2 default toolchain selection.
|
|
||||||
if _platform.system().lower().startswith('mingw'):
|
|
||||||
default_toolchain = 'mingw'
|
|
||||||
|
|
||||||
if target_platform == 'windows' and host_platform != 'windows':
|
if target_platform == 'windows' and host_platform != 'windows':
|
||||||
default_machine = 'x86'
|
default_machine = 'x86'
|
||||||
@@ -71,14 +59,13 @@ if target_platform == 'windows' and host_platform != 'windows':
|
|||||||
|
|
||||||
|
|
||||||
# find default_llvm value
|
# find default_llvm value
|
||||||
if 'LLVM' in os.environ or 'LLVM_CONFIG' in os.environ:
|
if 'LLVM' in os.environ:
|
||||||
default_llvm = 'yes'
|
default_llvm = 'yes'
|
||||||
else:
|
else:
|
||||||
default_llvm = 'no'
|
default_llvm = 'no'
|
||||||
try:
|
try:
|
||||||
if target_platform != 'windows' and \
|
if target_platform != 'windows' and \
|
||||||
subprocess.call(['llvm-config', '--version'],
|
subprocess.call(['llvm-config', '--version'], stdout=subprocess.PIPE) == 0:
|
||||||
stdout=subprocess.PIPE) == 0:
|
|
||||||
default_llvm = 'yes'
|
default_llvm = 'yes'
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
@@ -97,27 +84,19 @@ def AddOptions(opts):
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
from SCons.Options.EnumOption import EnumOption
|
from SCons.Options.EnumOption import EnumOption
|
||||||
opts.Add(EnumOption('build', 'build type', 'debug',
|
opts.Add(EnumOption('build', 'build type', 'debug',
|
||||||
allowed_values=('debug', 'checked', 'profile',
|
allowed_values=('debug', 'checked', 'profile', 'release')))
|
||||||
'release')))
|
|
||||||
opts.Add(BoolOption('verbose', 'verbose output', 'no'))
|
opts.Add(BoolOption('verbose', 'verbose output', 'no'))
|
||||||
opts.Add(EnumOption('machine', 'use machine-specific assembly code',
|
opts.Add(EnumOption('machine', 'use machine-specific assembly code', default_machine,
|
||||||
default_machine,
|
|
||||||
allowed_values=('generic', 'ppc', 'x86', 'x86_64')))
|
allowed_values=('generic', 'ppc', 'x86', 'x86_64')))
|
||||||
opts.Add(EnumOption('platform', 'target platform', host_platform,
|
opts.Add(EnumOption('platform', 'target platform', host_platform,
|
||||||
allowed_values=('cygwin', 'darwin', 'freebsd', 'haiku',
|
allowed_values=('cygwin', 'darwin', 'freebsd', 'haiku', 'linux', 'sunos', 'windows')))
|
||||||
'linux', 'sunos', 'windows')))
|
|
||||||
opts.Add(BoolOption('embedded', 'embedded build', 'no'))
|
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('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('llvm', 'use LLVM', default_llvm))
|
||||||
opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)',
|
opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)', 'no'))
|
||||||
'no'))
|
|
||||||
opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
|
opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
|
||||||
opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
|
opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
|
||||||
opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
|
opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
|
||||||
opts.Add(BoolOption('swr', 'Build OpenSWR', 'no'))
|
|
||||||
if host_platform == 'windows':
|
if host_platform == 'windows':
|
||||||
opts.Add('MSVC_VERSION', 'Microsoft Visual C/C++ version')
|
opts.Add(EnumOption('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0')))
|
||||||
opts.Add('MSVC_USE_SCRIPT', 'Microsoft Visual C/C++ vcvarsall script', True)
|
|
||||||
|
2
configs/.gitignore
vendored
Normal file
2
configs/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
current
|
||||||
|
autoconf
|
227
configs/current.in
Normal file
227
configs/current.in
Normal file
@@ -0,0 +1,227 @@
|
|||||||
|
# Autoconf configuration
|
||||||
|
|
||||||
|
# Pull in the defaults
|
||||||
|
include $(TOP)/configs/default
|
||||||
|
|
||||||
|
# This is generated by configure
|
||||||
|
CONFIG_NAME = autoconf
|
||||||
|
|
||||||
|
# Compiler and flags
|
||||||
|
CC = @CC@
|
||||||
|
CXX = @CXX@
|
||||||
|
OPT_FLAGS = @OPT_FLAGS@
|
||||||
|
ARCH_FLAGS = @ARCH_FLAGS@
|
||||||
|
PIC_FLAGS = @PIC_FLAGS@
|
||||||
|
DEFINES = @DEFINES@
|
||||||
|
API_DEFINES = @API_DEFINES@
|
||||||
|
SHARED_GLAPI = @SHARED_GLAPI@
|
||||||
|
CFLAGS_NOVISIBILITY = @CPPFLAGS@ @CFLAGS@ \
|
||||||
|
$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES)
|
||||||
|
CXXFLAGS_NOVISIBILITY = @CPPFLAGS@ @CXXFLAGS@ \
|
||||||
|
$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES)
|
||||||
|
CFLAGS = $(CFLAGS_NOVISIBILITY) @VISIBILITY_CFLAGS@
|
||||||
|
CXXFLAGS = $(CXXFLAGS_NOVISIBILITY) @VISIBILITY_CXXFLAGS@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
EXTRA_LIB_PATH = @EXTRA_LIB_PATH@
|
||||||
|
RADEON_CFLAGS = @RADEON_CFLAGS@
|
||||||
|
RADEON_LIBS = @RADEON_LIBS@
|
||||||
|
NOUVEAU_CFLAGS = @NOUVEAU_CFLAGS@
|
||||||
|
NOUVEAU_LIBS = @NOUVEAU_LIBS@
|
||||||
|
INTEL_LIBS = @INTEL_LIBS@
|
||||||
|
INTEL_CFLAGS = @INTEL_CFLAGS@
|
||||||
|
X11_LIBS = @X11_LIBS@
|
||||||
|
X11_CFLAGS = @X11_CFLAGS@
|
||||||
|
LLVM_BINDIR = @LLVM_BINDIR@
|
||||||
|
LLVM_CFLAGS = @LLVM_CFLAGS@
|
||||||
|
LLVM_CPPFLAGS = @LLVM_CPPFLAGS@
|
||||||
|
LLVM_CXXFLAGS = @LLVM_CXXFLAGS@
|
||||||
|
LLVM_LDFLAGS = @LLVM_LDFLAGS@
|
||||||
|
LLVM_LIBDIR = @LLVM_LIBDIR@
|
||||||
|
LLVM_LIBS = @LLVM_LIBS@
|
||||||
|
LLVM_INCLUDEDIR = @LLVM_INCLUDEDIR@
|
||||||
|
GLW_CFLAGS = @GLW_CFLAGS@
|
||||||
|
GLX_TLS = @GLX_TLS@
|
||||||
|
|
||||||
|
# dlopen
|
||||||
|
DLOPEN_LIBS = @DLOPEN_LIBS@
|
||||||
|
|
||||||
|
# Source selection
|
||||||
|
MESA_ASM_FILES = @MESA_ASM_FILES@
|
||||||
|
GLAPI_ASM_SOURCES = @GLAPI_ASM_SOURCES@
|
||||||
|
|
||||||
|
# Misc tools and flags
|
||||||
|
MAKE = @MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
MKLIB_OPTIONS = @MKLIB_OPTIONS@
|
||||||
|
MKDEP = @MKDEP@
|
||||||
|
MKDEP_OPTIONS = @MKDEP_OPTIONS@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
AWK = @AWK@
|
||||||
|
GREP = @GREP@
|
||||||
|
NM = @NM@
|
||||||
|
|
||||||
|
# Perl
|
||||||
|
PERL = @PERL@
|
||||||
|
|
||||||
|
# Indent (used for generating dispatch tables)
|
||||||
|
INDENT = @INDENT@
|
||||||
|
INDENT_FLAGS = @INDENT_FLAGS@
|
||||||
|
|
||||||
|
# Python and flags (generally only needed by the developers)
|
||||||
|
PYTHON2 = @PYTHON2@
|
||||||
|
PYTHON_FLAGS = -t -O -O
|
||||||
|
|
||||||
|
# Flex and Bison for GLSL compiler
|
||||||
|
FLEX = @LEX@
|
||||||
|
BISON = @YACC@
|
||||||
|
|
||||||
|
# Library names (base name)
|
||||||
|
GL_LIB = @GL_LIB@
|
||||||
|
GLU_LIB = @GLU_LIB@
|
||||||
|
GLW_LIB = GLw
|
||||||
|
OSMESA_LIB = @OSMESA_LIB@
|
||||||
|
GLESv1_CM_LIB = GLESv1_CM
|
||||||
|
GLESv2_LIB = GLESv2
|
||||||
|
VG_LIB = OpenVG
|
||||||
|
GLAPI_LIB = glapi
|
||||||
|
|
||||||
|
# Library names (actual file names)
|
||||||
|
GL_LIB_NAME = @GL_LIB_NAME@
|
||||||
|
GLU_LIB_NAME = @GLU_LIB_NAME@
|
||||||
|
GLW_LIB_NAME = @GLW_LIB_NAME@
|
||||||
|
OSMESA_LIB_NAME = @OSMESA_LIB_NAME@
|
||||||
|
EGL_LIB_NAME = @EGL_LIB_NAME@
|
||||||
|
GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@
|
||||||
|
GLESv2_LIB_NAME = @GLESv2_LIB_NAME@
|
||||||
|
VG_LIB_NAME = @VG_LIB_NAME@
|
||||||
|
GLAPI_LIB_NAME = @GLAPI_LIB_NAME@
|
||||||
|
|
||||||
|
# Globs used to install the lib and all symlinks
|
||||||
|
GL_LIB_GLOB = @GL_LIB_GLOB@
|
||||||
|
GLU_LIB_GLOB = @GLU_LIB_GLOB@
|
||||||
|
GLW_LIB_GLOB = @GLW_LIB_GLOB@
|
||||||
|
OSMESA_LIB_GLOB = @OSMESA_LIB_GLOB@
|
||||||
|
EGL_LIB_GLOB = @EGL_LIB_GLOB@
|
||||||
|
GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@
|
||||||
|
GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@
|
||||||
|
VG_LIB_GLOB = @VG_LIB_GLOB@
|
||||||
|
GLAPI_LIB_GLOB = @GLAPI_LIB_GLOB@
|
||||||
|
|
||||||
|
# Directories to build
|
||||||
|
LIB_DIR = @LIB_DIR@
|
||||||
|
SRC_DIRS = @SRC_DIRS@
|
||||||
|
GLU_DIRS = @GLU_DIRS@
|
||||||
|
DRIVER_DIRS = @DRIVER_DIRS@
|
||||||
|
GALLIUM_DIRS = @GALLIUM_DIRS@
|
||||||
|
GALLIUM_DRIVERS_DIRS = @GALLIUM_DRIVERS_DIRS@
|
||||||
|
GALLIUM_WINSYS_DIRS = @GALLIUM_WINSYS_DIRS@
|
||||||
|
GALLIUM_TARGET_DIRS = @GALLIUM_TARGET_DIRS@
|
||||||
|
GALLIUM_STATE_TRACKERS_DIRS = @GALLIUM_STATE_TRACKERS_DIRS@
|
||||||
|
GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a
|
||||||
|
GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a)
|
||||||
|
|
||||||
|
# Driver specific build vars
|
||||||
|
DRI_DIRS = @DRI_DIRS@
|
||||||
|
EGL_PLATFORMS = @EGL_PLATFORMS@
|
||||||
|
EGL_CLIENT_APIS = @EGL_CLIENT_APIS@
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
X11_INCLUDES = @X11_INCLUDES@
|
||||||
|
|
||||||
|
# GLw motif setup
|
||||||
|
GLW_SOURCES = @GLW_SOURCES@
|
||||||
|
MOTIF_CFLAGS = @MOTIF_CFLAGS@
|
||||||
|
|
||||||
|
# Library/program dependencies
|
||||||
|
GL_LIB_DEPS = $(EXTRA_LIB_PATH) @GL_LIB_DEPS@
|
||||||
|
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @OSMESA_MESA_DEPS@ \
|
||||||
|
$(EXTRA_LIB_PATH) @OSMESA_LIB_DEPS@
|
||||||
|
EGL_LIB_DEPS = $(EXTRA_LIB_PATH) @EGL_LIB_DEPS@
|
||||||
|
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLU_MESA_DEPS@ \
|
||||||
|
$(EXTRA_LIB_PATH) @GLU_LIB_DEPS@
|
||||||
|
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \
|
||||||
|
$(EXTRA_LIB_PATH) @GLW_LIB_DEPS@
|
||||||
|
GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv1_CM_LIB_DEPS@
|
||||||
|
GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv2_LIB_DEPS@
|
||||||
|
VG_LIB_DEPS = $(EXTRA_LIB_PATH) @VG_LIB_DEPS@
|
||||||
|
GLAPI_LIB_DEPS = $(EXTRA_LIB_PATH) @GLAPI_LIB_DEPS@
|
||||||
|
|
||||||
|
# DRI dependencies
|
||||||
|
MESA_MODULES = @MESA_MODULES@
|
||||||
|
DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @DRI_LIB_DEPS@
|
||||||
|
LIBDRM_CFLAGS = @LIBDRM_CFLAGS@
|
||||||
|
LIBDRM_LIB = @LIBDRM_LIBS@
|
||||||
|
DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@
|
||||||
|
GLPROTO_CFLAGS = @GLPROTO_CFLAGS@
|
||||||
|
EXPAT_INCLUDES = @EXPAT_INCLUDES@
|
||||||
|
|
||||||
|
# Autoconf directories
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
libdir = @libdir@
|
||||||
|
includedir = @includedir@
|
||||||
|
|
||||||
|
# Installation directories (for make install)
|
||||||
|
INSTALL_DIR = $(prefix)
|
||||||
|
INSTALL_LIB_DIR = $(libdir)
|
||||||
|
INSTALL_INC_DIR = $(includedir)
|
||||||
|
|
||||||
|
# DRI installation directories
|
||||||
|
DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@
|
||||||
|
|
||||||
|
# Where libGL will look for DRI hardware drivers
|
||||||
|
DRI_DRIVER_SEARCH_DIR = @DRI_DRIVER_SEARCH_DIR@
|
||||||
|
|
||||||
|
# EGL driver install directory
|
||||||
|
EGL_DRIVER_INSTALL_DIR = @EGL_DRIVER_INSTALL_DIR@
|
||||||
|
|
||||||
|
# XVMC library install directory
|
||||||
|
XVMC_LIB_INSTALL_DIR=@XVMC_LIB_INSTALL_DIR@
|
||||||
|
|
||||||
|
# VDPAU library install directory
|
||||||
|
VDPAU_LIB_INSTALL_DIR=@VDPAU_LIB_INSTALL_DIR@
|
||||||
|
|
||||||
|
# VA library install directory
|
||||||
|
VA_LIB_INSTALL_DIR=@VA_LIB_INSTALL_DIR@
|
||||||
|
|
||||||
|
# Xorg driver install directory (for xorg state-tracker)
|
||||||
|
XORG_DRIVER_INSTALL_DIR = @XORG_DRIVER_INSTALL_DIR@
|
||||||
|
|
||||||
|
# Path to OpenCL C library libclc
|
||||||
|
LIBCLC_PATH = @LIBCLC_PATH@
|
||||||
|
|
||||||
|
# pkg-config substitutions
|
||||||
|
GL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@
|
||||||
|
GL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@
|
||||||
|
GL_PC_CFLAGS = @GL_PC_CFLAGS@
|
||||||
|
DRI_PC_REQ_PRIV = @DRI_PC_REQ_PRIV@
|
||||||
|
GLU_PC_REQ = @GLU_PC_REQ@
|
||||||
|
GLU_PC_REQ_PRIV = @GLU_PC_REQ_PRIV@
|
||||||
|
GLU_PC_LIB_PRIV = @GLU_PC_LIB_PRIV@
|
||||||
|
GLU_PC_CFLAGS = @GLU_PC_CFLAGS@
|
||||||
|
GLW_PC_REQ_PRIV = @GLW_PC_REQ_PRIV@
|
||||||
|
GLW_PC_LIB_PRIV = @GLW_PC_LIB_PRIV@
|
||||||
|
GLW_PC_CFLAGS = @GLW_PC_CFLAGS@
|
||||||
|
OSMESA_PC_REQ = @OSMESA_PC_REQ@
|
||||||
|
OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@
|
||||||
|
GLESv1_CM_PC_LIB_PRIV = @GLESv1_CM_PC_LIB_PRIV@
|
||||||
|
GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@
|
||||||
|
EGL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@
|
||||||
|
EGL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@
|
||||||
|
EGL_PC_CFLAGS = @GL_PC_CFLAGS@
|
||||||
|
|
||||||
|
XCB_DRI2_CFLAGS = @XCB_DRI2_CFLAGS@
|
||||||
|
XCB_DRI2_LIBS = @XCB_DRI2_LIBS@
|
||||||
|
LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@
|
||||||
|
LIBUDEV_LIBS = @LIBUDEV_LIBS@
|
||||||
|
WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
|
||||||
|
WAYLAND_LIBS = @WAYLAND_LIBS@
|
||||||
|
|
||||||
|
MESA_LLVM = @MESA_LLVM@
|
||||||
|
|
||||||
|
LLVM_VERSION = @LLVM_VERSION@
|
||||||
|
|
||||||
|
HAVE_XF86VIDMODE = @HAVE_XF86VIDMODE@
|
||||||
|
|
||||||
|
GALLIUM_PIPE_LOADER_DEFINES = @GALLIUM_PIPE_LOADER_DEFINES@
|
||||||
|
GALLIUM_PIPE_LOADER_LIBS = @GALLIUM_PIPE_LOADER_LIBS@
|
182
configs/default
Normal file
182
configs/default
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
# Default/template configuration
|
||||||
|
|
||||||
|
# This is included by other config files which may override some
|
||||||
|
# of these variables.
|
||||||
|
# Think of this as a base class from which configs are derived.
|
||||||
|
|
||||||
|
|
||||||
|
CONFIG_NAME = default
|
||||||
|
|
||||||
|
# Version info
|
||||||
|
MESA_MAJOR=8
|
||||||
|
MESA_MINOR=1
|
||||||
|
MESA_TINY=0
|
||||||
|
MESA_VERSION = $(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY)
|
||||||
|
|
||||||
|
# external projects. This should be useless now that we use libdrm.
|
||||||
|
DRM_SOURCE_PATH=$(TOP)/../drm
|
||||||
|
|
||||||
|
# Compiler and flags
|
||||||
|
CC = cc
|
||||||
|
CXX = CC
|
||||||
|
CFLAGS = -O
|
||||||
|
CXXFLAGS = -O
|
||||||
|
LDFLAGS =
|
||||||
|
GLU_CFLAGS =
|
||||||
|
GLX_TLS = no
|
||||||
|
|
||||||
|
# Compiler for building demos/tests/etc
|
||||||
|
APP_CC = $(CC)
|
||||||
|
APP_CXX = $(CXX)
|
||||||
|
|
||||||
|
# Misc tools and flags
|
||||||
|
SHELL = /bin/sh
|
||||||
|
MKLIB = $(SHELL) $(TOP)/bin/mklib
|
||||||
|
MKLIB_OPTIONS =
|
||||||
|
MKDEP = makedepend
|
||||||
|
MKDEP_OPTIONS = -fdepend
|
||||||
|
MAKE = make
|
||||||
|
FLEX = flex
|
||||||
|
BISON = bison
|
||||||
|
PKG_CONFIG = pkg-config
|
||||||
|
|
||||||
|
# Use MINSTALL for installing libraries, INSTALL for everything else
|
||||||
|
MINSTALL = $(SHELL) $(TOP)/bin/minstall
|
||||||
|
INSTALL = $(MINSTALL)
|
||||||
|
|
||||||
|
# Tools for regenerating glapi (generally only needed by the developers)
|
||||||
|
PYTHON2 = python
|
||||||
|
PYTHON_FLAGS = -t -O -O
|
||||||
|
INDENT = indent
|
||||||
|
INDENT_FLAGS = -i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool
|
||||||
|
|
||||||
|
# Library names (base name)
|
||||||
|
GL_LIB = GL
|
||||||
|
GLU_LIB = GLU
|
||||||
|
GLW_LIB = GLw
|
||||||
|
OSMESA_LIB = OSMesa
|
||||||
|
EGL_LIB = EGL
|
||||||
|
GLESv1_CM_LIB = GLESv1_CM
|
||||||
|
GLESv2_LIB = GLESv2
|
||||||
|
VG_LIB = OpenVG
|
||||||
|
GLAPI_LIB = glapi
|
||||||
|
|
||||||
|
# Library names (actual file names)
|
||||||
|
GL_LIB_NAME = lib$(GL_LIB).so
|
||||||
|
GLU_LIB_NAME = lib$(GLU_LIB).so
|
||||||
|
GLW_LIB_NAME = lib$(GLW_LIB).so
|
||||||
|
OSMESA_LIB_NAME = lib$(OSMESA_LIB).so
|
||||||
|
EGL_LIB_NAME = lib$(EGL_LIB).so
|
||||||
|
GLESv1_CM_LIB_NAME = lib$(GLESv1_CM_LIB).so
|
||||||
|
GLESv2_LIB_NAME = lib$(GLESv2_LIB).so
|
||||||
|
VG_LIB_NAME = lib$(VG_LIB).so
|
||||||
|
GLAPI_LIB_NAME = lib$(GLAPI_LIB).so
|
||||||
|
|
||||||
|
# globs used to install the lib and all symlinks
|
||||||
|
GL_LIB_GLOB = $(GL_LIB_NAME)*
|
||||||
|
GLU_LIB_GLOB = $(GLU_LIB_NAME)*
|
||||||
|
GLW_LIB_GLOB = $(GLW_LIB_NAME)*
|
||||||
|
OSMESA_LIB_GLOB = $(OSMESA_LIB_NAME)*
|
||||||
|
EGL_LIB_GLOB = $(EGL_LIB_NAME)*
|
||||||
|
GLESv1_CM_LIB_GLOB = $(GLESv1_CM_LIB_NAME)*
|
||||||
|
GLESv2_LIB_GLOB = $(GLESv2_LIB_NAME)*
|
||||||
|
VG_LIB_GLOB = $(VG_LIB_NAME)*
|
||||||
|
GLAPI_LIB_GLOB = $(GLAPI_LIB_NAME)*
|
||||||
|
|
||||||
|
# Optional assembly language optimization files for libGL
|
||||||
|
MESA_ASM_FILES =
|
||||||
|
|
||||||
|
# GLw widget sources (Append "GLwMDrawA.c" here and add -lXm to GLW_LIB_DEPS in
|
||||||
|
# order to build the Motif widget too)
|
||||||
|
GLW_SOURCES = GLwDrawA.c
|
||||||
|
MOTIF_CFLAGS = -I/usr/include/Motif1.2
|
||||||
|
|
||||||
|
|
||||||
|
# Directories to build
|
||||||
|
LIB_DIR = lib
|
||||||
|
SRC_DIRS = glsl mapi/glapi mapi/vgapi mesa \
|
||||||
|
gallium egl gallium/winsys gallium/targets glu
|
||||||
|
GLU_DIRS = sgi
|
||||||
|
DRIVER_DIRS = x11 osmesa
|
||||||
|
|
||||||
|
# Gallium directories and
|
||||||
|
GALLIUM_DIRS = auxiliary drivers state_trackers
|
||||||
|
GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a
|
||||||
|
GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad i915 svga r300 nvfx nv50
|
||||||
|
GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a)
|
||||||
|
GALLIUM_WINSYS_DIRS = sw sw/xlib
|
||||||
|
GALLIUM_TARGET_DIRS = libgl-xlib
|
||||||
|
GALLIUM_STATE_TRACKERS_DIRS = glx vega
|
||||||
|
|
||||||
|
# native platforms EGL should support
|
||||||
|
EGL_PLATFORMS = x11
|
||||||
|
EGL_CLIENT_APIS = $(GL_LIB)
|
||||||
|
|
||||||
|
# Library dependencies
|
||||||
|
#EXTRA_LIB_PATH ?=
|
||||||
|
GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread
|
||||||
|
EGL_LIB_DEPS = $(EXTRA_LIB_PATH) -ldl -lpthread
|
||||||
|
OSMESA_LIB_DEPS = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
|
||||||
|
GLU_LIB_DEPS = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm
|
||||||
|
GLW_LIB_DEPS = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lXt -lX11
|
||||||
|
GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread
|
||||||
|
GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread
|
||||||
|
VG_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread
|
||||||
|
GLAPI_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread
|
||||||
|
|
||||||
|
# Program dependencies - specific GL libraries added in Makefiles
|
||||||
|
X11_LIBS = -lX11
|
||||||
|
|
||||||
|
DLOPEN_LIBS = -ldl
|
||||||
|
|
||||||
|
# Installation directories (for make install)
|
||||||
|
INSTALL_DIR = /usr/local
|
||||||
|
INSTALL_LIB_DIR = $(INSTALL_DIR)/$(LIB_DIR)
|
||||||
|
INSTALL_INC_DIR = $(INSTALL_DIR)/include
|
||||||
|
DRI_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/dri
|
||||||
|
|
||||||
|
# Where libGL will look for DRI hardware drivers
|
||||||
|
DRI_DRIVER_SEARCH_DIR = $(DRI_DRIVER_INSTALL_DIR)
|
||||||
|
|
||||||
|
# EGL driver install directory
|
||||||
|
EGL_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/egl
|
||||||
|
|
||||||
|
# Xorg driver install directory (for xorg state-tracker)
|
||||||
|
XORG_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/xorg/modules/drivers
|
||||||
|
|
||||||
|
# pkg-config substitutions
|
||||||
|
GL_PC_REQ_PRIV =
|
||||||
|
GL_PC_LIB_PRIV =
|
||||||
|
GL_PC_CFLAGS =
|
||||||
|
DRI_PC_REQ_PRIV =
|
||||||
|
GLU_PC_REQ = gl
|
||||||
|
GLU_PC_REQ_PRIV =
|
||||||
|
GLU_PC_LIB_PRIV =
|
||||||
|
GLU_PC_CFLAGS =
|
||||||
|
GLW_PC_REQ_PRIV =
|
||||||
|
GLW_PC_LIB_PRIV =
|
||||||
|
GLW_PC_CFLAGS =
|
||||||
|
OSMESA_PC_REQ =
|
||||||
|
OSMESA_PC_LIB_PRIV =
|
||||||
|
GLESv1_CM_PC_REQ_PRIV =
|
||||||
|
GLESv1_CM_PC_LIB_PRIV =
|
||||||
|
GLESv1_CM_PC_CFLAGS =
|
||||||
|
GLESv2_PC_REQ_PRIV =
|
||||||
|
GLESv2_PC_LIB_PRIV =
|
||||||
|
GLESv2_PC_CFLAGS =
|
||||||
|
VG_PC_REQ_PRIV =
|
||||||
|
VG_PC_LIB_PRIV =
|
||||||
|
VG_PC_CFLAGS =
|
||||||
|
|
||||||
|
# default targets
|
||||||
|
# this helps reduce the mismatch between our automake Makefiles and the old
|
||||||
|
# custom Makefiles while we transition.
|
||||||
|
|
||||||
|
all: default
|
||||||
|
|
||||||
|
am--refresh:
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
|
||||||
|
check:
|
||||||
|
test:
|
2317
configure.ac
Normal file
2317
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!
|
||||||
|
|
132
docs/GL3.txt
Normal file
132
docs/GL3.txt
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
Feature Status
|
||||||
|
----------------------------------------------------- ------------------------
|
||||||
|
|
||||||
|
GL 3.0:
|
||||||
|
|
||||||
|
GLSL 1.30 DONE
|
||||||
|
glBindFragDataLocation, glGetFragDataLocation DONE
|
||||||
|
Conditional rendering (GL_NV_conditional_render) DONE (i965, r300, r600, swrast)
|
||||||
|
Map buffer subranges (GL_ARB_map_buffer_range) DONE (i965, r300, r600, swrast)
|
||||||
|
Clamping controls (GL_ARB_color_buffer_float) DONE (i965, r300, r600)
|
||||||
|
Float textures, renderbuffers (GL_ARB_texture_float) DONE (i965, r300, r600)
|
||||||
|
GL_EXT_packed_float DONE (i965, r600)
|
||||||
|
GL_EXT_texture_shared_exponent DONE (i965, r600, swrast)
|
||||||
|
Float depth buffers (GL_ARB_depth_buffer_float) DONE (i965, r600)
|
||||||
|
Framebuffer objects (GL_ARB_framebuffer_object) DONE (i965, r300, r600, swrast)
|
||||||
|
Half-float DONE
|
||||||
|
Non-normalized Integer texture/framebuffer formats DONE (i965)
|
||||||
|
1D/2D Texture arrays DONE
|
||||||
|
Per-buffer blend and masks (GL_EXT_draw_buffers2) DONE (i965, r600, swrast)
|
||||||
|
GL_EXT_texture_compression_rgtc DONE (i965, r300, r600, swrast)
|
||||||
|
Red and red/green texture formats DONE (i965, swrast, gallium)
|
||||||
|
Transform feedback (GL_EXT_transform_feedback) DONE (i965)
|
||||||
|
Vertex array objects (GL_APPLE_vertex_array_object) DONE (i965, r300, r600, swrast)
|
||||||
|
sRGB framebuffer format (GL_EXT_framebuffer_sRGB) DONE (i965, r600)
|
||||||
|
glClearBuffer commands DONE
|
||||||
|
glGetStringi command DONE
|
||||||
|
glTexParameterI, glGetTexParameterI commands DONE
|
||||||
|
glVertexAttribI commands ~50% done (converts int
|
||||||
|
values to floats)
|
||||||
|
Depth format cube textures DONE
|
||||||
|
GLX_ARB_create_context (GLX 1.4 is required) DONE
|
||||||
|
|
||||||
|
|
||||||
|
GL 3.1:
|
||||||
|
|
||||||
|
GLSL 1.40 missing: UBOS, inverse(),
|
||||||
|
highp change
|
||||||
|
Instanced drawing (GL_ARB_draw_instanced) DONE (i965, gallium, swrast)
|
||||||
|
Buffer copying (GL_ARB_copy_buffer) DONE (i965, r300, r600, swrast)
|
||||||
|
Primitive restart (GL_NV_primitive_restart) DONE (i965, r600)
|
||||||
|
16 vertex texture image units DONE
|
||||||
|
Texture buffer objs (GL_ARB_texture_buffer_object) needs GL3.1 enabling (i965)
|
||||||
|
Rectangular textures (GL_ARB_texture_rectangle) DONE (i965, r300, r600, swrast)
|
||||||
|
Uniform buffer objs (GL_ARB_uniform_buffer_object) not started
|
||||||
|
Signed normalized textures (GL_EXT_texture_snorm) DONE (i965, r300, r600)
|
||||||
|
|
||||||
|
|
||||||
|
GL 3.2:
|
||||||
|
|
||||||
|
Core/compatibility profiles not started
|
||||||
|
GLSL 1.50 not started
|
||||||
|
Geometry shaders (GL_ARB_geometry_shader4) partially done (Zack)
|
||||||
|
BGRA vertex order (GL_ARB_vertex_array_bgra) DONE (i965, r300, r600, swrast)
|
||||||
|
Base vertex offset(GL_ARB_draw_elements_base_vertex) DONE (i965, r300, r600, swrast)
|
||||||
|
Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (i965, r300, r600, swrast)
|
||||||
|
Provoking vertex (GL_ARB_provoking_vertex) DONE (i965, r300, r600, swrast)
|
||||||
|
Seamless cubemaps (GL_ARB_seamless_cube_map) DONE (i965, r600)
|
||||||
|
Multisample textures (GL_ARB_texture_multisample) not started
|
||||||
|
Frag depth clamp (GL_ARB_depth_clamp) DONE (i965, r600, swrast)
|
||||||
|
Fence objects (GL_ARB_sync) DONE (i965, r300, r600, swrast)
|
||||||
|
GLX_ARB_create_context_profile DONE
|
||||||
|
|
||||||
|
|
||||||
|
GL 3.3:
|
||||||
|
|
||||||
|
GLSL 3.30 new features in this version pretty much done
|
||||||
|
GL_ARB_blend_func_extended DONE (i965, r600, softpipe)
|
||||||
|
GL_ARB_explicit_attrib_location DONE (i915, i965, r300, r600, swrast)
|
||||||
|
GL_ARB_occlusion_query2 DONE (r300, r600, swrast)
|
||||||
|
GL_ARB_sampler_objects DONE (i965, r300, r600)
|
||||||
|
GL_ARB_shader_bit_encoding DONE
|
||||||
|
GL_ARB_texture_rgb10_a2ui DONE (r600)
|
||||||
|
GL_ARB_texture_swizzle DONE (same as EXT version) (i965, r300, r600, swrast)
|
||||||
|
GL_ARB_timer_query ~60% done (the EXT variant)
|
||||||
|
GL_ARB_instanced_arrays DONE (r300, r600)
|
||||||
|
GL_ARB_vertex_type_2_10_10_10_rev DONE (r600)
|
||||||
|
|
||||||
|
|
||||||
|
GL 4.0:
|
||||||
|
|
||||||
|
GLSL 4.0 not started
|
||||||
|
GL_ARB_texture_query_lod not started
|
||||||
|
GL_ARB_draw_buffers_blend DONE (i965, r600, softpipe)
|
||||||
|
GL_ARB_draw_indirect not started
|
||||||
|
GL_ARB_gpu_shader_fp64 not started
|
||||||
|
GL_ARB_sample_shading not started
|
||||||
|
GL_ARB_shader_subroutine not started
|
||||||
|
GL_ARB_tessellation_shader not started
|
||||||
|
GL_ARB_texture_buffer_object_rgb32 not started
|
||||||
|
GL_ARB_texture_cube_map_array not started
|
||||||
|
GL_ARB_texture_gather not started
|
||||||
|
GL_ARB_transform_feedback2 DONE
|
||||||
|
GL_ARB_transform_feedback3 not started
|
||||||
|
|
||||||
|
|
||||||
|
GL 4.1:
|
||||||
|
|
||||||
|
GLSL 4.1 not started
|
||||||
|
GL_ARB_ES2_compatibility DONE (i965, r300, r600)
|
||||||
|
GL_ARB_get_program_binary not started
|
||||||
|
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 not started
|
||||||
|
GL_ARB_texture_storage DONE (r300, r600, swrast)
|
||||||
|
GL_ARB_transform_feedback_instanced not started
|
||||||
|
GL_ARB_base_instance DONE (nv50, nvc0, r600, radeonsi)
|
||||||
|
GL_ARB_shader_image_load_store not started
|
||||||
|
GL_ARB_conservative_depth DONE (softpipe)
|
||||||
|
GL_ARB_shading_language_420pack not started
|
||||||
|
GL_ARB_internalformat_query not started
|
||||||
|
GL_ARB_map_buffer_alignment not started
|
||||||
|
|
||||||
|
|
||||||
|
More info about these features and the work involved can be found at
|
||||||
|
http://dri.freedesktop.org/wiki/MissingFunctionality
|
@@ -13,7 +13,8 @@ Contact
|
|||||||
|
|
||||||
Status
|
Status
|
||||||
|
|
||||||
Obsolete. Effectively superseded by ARB_vertex_buffer_object.
|
Shipping (Mesa 4.0.4 and later. Only implemented in particular
|
||||||
|
XFree86/DRI drivers.)
|
||||||
|
|
||||||
Version
|
Version
|
||||||
|
|
@@ -12,7 +12,7 @@ Contact
|
|||||||
|
|
||||||
Status
|
Status
|
||||||
|
|
||||||
Obsolete.
|
Shipping (since Mesa version 2.2)
|
||||||
|
|
||||||
Version
|
Version
|
||||||
|
|
@@ -12,7 +12,7 @@ Contact
|
|||||||
|
|
||||||
Status
|
Status
|
||||||
|
|
||||||
Obsolete.
|
Shipping since Mesa 2.6 in February, 1998.
|
||||||
|
|
||||||
Version
|
Version
|
||||||
|
|
@@ -16,7 +16,7 @@ IP Status
|
|||||||
|
|
||||||
Status
|
Status
|
||||||
|
|
||||||
DEPRECATED - Support removed in Mesa 10.1.
|
Shipping in Mesa 7.1
|
||||||
|
|
||||||
Version
|
Version
|
||||||
|
|
||||||
@@ -76,9 +76,9 @@ Overview
|
|||||||
|
|
||||||
References:
|
References:
|
||||||
|
|
||||||
https://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011557
|
http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011557
|
||||||
https://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=000516
|
http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=000516
|
||||||
https://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011903
|
http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011903
|
||||||
http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm
|
http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm
|
||||||
|
|
||||||
New Procedures and Functions
|
New Procedures and Functions
|
@@ -12,7 +12,7 @@ Contact
|
|||||||
|
|
||||||
Status
|
Status
|
||||||
|
|
||||||
Obsolete.
|
XXX - Not complete yet!!!
|
||||||
|
|
||||||
Version
|
Version
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ New Tokens
|
|||||||
GetFloatv and GetIntegerv:
|
GetFloatv and GetIntegerv:
|
||||||
|
|
||||||
FRAGMENT_PROGRAM_POSITION_MESA 0x8bb0
|
FRAGMENT_PROGRAM_POSITION_MESA 0x8bb0
|
||||||
VERTEX_PROGRAM_POSITION_MESA 0x8bb5
|
VERTEX_PROGRAM_POSITION_MESA 0x8bb4
|
||||||
|
|
||||||
Accepted by the <pname> parameter of GetPointerv:
|
Accepted by the <pname> parameter of GetPointerv:
|
||||||
|
|
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)
|
@@ -1,44 +0,0 @@
|
|||||||
The software may implement third party technologies (e.g. third party
|
|
||||||
libraries) that are not licensed to you by AMD and for which you may need
|
|
||||||
to obtain licenses from other parties. Unless explicitly stated otherwise,
|
|
||||||
these third party technologies are not licensed hereunder. Such third
|
|
||||||
party technologies include, but are not limited, to H.264, H.265, HEVC, MPEG-2,
|
|
||||||
MPEG-4, AVC, and VC-1.
|
|
||||||
|
|
||||||
For MPEG-2 Encoding Products ANY USE OF THIS PRODUCT IN ANY MANNER OTHER
|
|
||||||
THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD FOR ENCODING VIDEO
|
|
||||||
INFORMATION FOR PACKAGED MEDIA IS EXPRESSLY PROHIBITED WITHOUT A LICENSE
|
|
||||||
UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT PORTFOLIO, WHICH LICENSES IS
|
|
||||||
AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers Green Circle, Suite 400E,
|
|
||||||
Greenwood Village, Colorado 80111 U.S.A.
|
|
||||||
|
|
||||||
WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
|
|
||||||
KIND. AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
|
||||||
BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN
|
|
||||||
UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR
|
|
||||||
COURSE OF USAGE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS
|
|
||||||
ASSUMED BY YOU. Some jurisdictions do not allow the exclusion of implied
|
|
||||||
warranties, so the above exclusion may not apply to You.
|
|
||||||
|
|
||||||
LIMITATION OF LIABILITY AND INDEMNIFICATION: AMD AND ITS LICENSORS WILL NOT,
|
|
||||||
UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL,
|
|
||||||
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR
|
|
||||||
THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGES. In no event shall AMD's total liability to You
|
|
||||||
for all damages, losses, and causes of action (whether in contract, tort
|
|
||||||
(including negligence) or otherwise) exceed the amount of $100 USD. You agree
|
|
||||||
to defend, indemnify and hold harmless AMD and its licensors, and any of their
|
|
||||||
directors, officers, employees, affiliates or agents from and against any and
|
|
||||||
all loss, damage, liability and other expenses (including reasonable
|
|
||||||
attorneys' fees), resulting from Your use of the Software or violation of the
|
|
||||||
terms and conditions of this Agreement.
|
|
||||||
|
|
||||||
U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED
|
|
||||||
RIGHTS." Use, duplication, or disclosure by the Government is subject to the
|
|
||||||
restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or
|
|
||||||
its successor. Use of the Software by the Government constitutes
|
|
||||||
acknowledgement of AMD's proprietary rights in them.
|
|
||||||
|
|
||||||
EXPORT RESTRICTIONS: The Software may be subject to export restrictions as
|
|
||||||
stated in the Software License Agreement.
|
|
@@ -1,43 +0,0 @@
|
|||||||
The software may implement third party technologies (e.g. third party
|
|
||||||
libraries) that are not licensed to you by AMD and for which you may need
|
|
||||||
to obtain licenses from other parties. Unless explicitly stated otherwise,
|
|
||||||
these third party technologies are not licensed hereunder. Such third
|
|
||||||
party technologies include, but are not limited, to H.264, MPEG-2, MPEG-4,
|
|
||||||
AVC, and VC-1.
|
|
||||||
|
|
||||||
For MPEG-2 Intermediate Products: ANY USE OF THIS PRODUCT IN ANY MANNER OTHER
|
|
||||||
THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD IS EXPRESSLY
|
|
||||||
PROHIBITED WITHOUT A LICENSE UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT
|
|
||||||
PORTFOLIO, WHICH LICENSES IS AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers
|
|
||||||
Green Circle, Suite 400E, Greenwood Village, Colorado 80111 U.S.A.
|
|
||||||
|
|
||||||
WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
|
|
||||||
KIND. AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
|
||||||
BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN
|
|
||||||
UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR
|
|
||||||
COURSE OF USAGE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS
|
|
||||||
ASSUMED BY YOU. Some jurisdictions do not allow the exclusion of implied
|
|
||||||
warranties, so the above exclusion may not apply to You.
|
|
||||||
|
|
||||||
LIMITATION OF LIABILITY AND INDEMNIFICATION: AMD AND ITS LICENSORS WILL NOT,
|
|
||||||
UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL,
|
|
||||||
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR
|
|
||||||
THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGES. In no event shall AMD's total liability to You
|
|
||||||
for all damages, losses, and causes of action (whether in contract, tort
|
|
||||||
(including negligence) or otherwise) exceed the amount of $100 USD. You agree
|
|
||||||
to defend, indemnify and hold harmless AMD and its licensors, and any of their
|
|
||||||
directors, officers, employees, affiliates or agents from and against any and
|
|
||||||
all loss, damage, liability and other expenses (including reasonable
|
|
||||||
attorneys' fees), resulting from Your use of the Software or violation of the
|
|
||||||
terms and conditions of this Agreement.
|
|
||||||
|
|
||||||
U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED
|
|
||||||
RIGHTS." Use, duplication, or disclosure by the Government is subject to the
|
|
||||||
restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or
|
|
||||||
its successor. Use of the Software by the Government constitutes
|
|
||||||
acknowledgement of AMD's proprietary rights in them.
|
|
||||||
|
|
||||||
EXPORT RESTRICTIONS: The Software may be subject to export restrictions as
|
|
||||||
stated in the Software License Agreement.
|
|
38
docs/README.VMS
Normal file
38
docs/README.VMS
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
VMS support contributed by Jouk Jansen (joukj@hrem.stm.tudelft.nl)
|
||||||
|
|
||||||
|
|
||||||
|
The latest version was tested on a VMSAlpha7.2 system using DECC6.0, but
|
||||||
|
probably also works for other versions.
|
||||||
|
|
||||||
|
At the moment only the libraries LIBMESGL.EXE/LIBMESGL.OLB,
|
||||||
|
LIBMESAGLU.EXE/LIBMESAGLU.OLB and LIBGLUT.EXE/LIBGLUT.OLB and the demos of the
|
||||||
|
directory [.DEMOS] can be build.
|
||||||
|
However, feel free to create the missing "decrip.mms-files" in the other
|
||||||
|
directories.
|
||||||
|
|
||||||
|
The make files were tested
|
||||||
|
using the DIGITAL make utility called MMS. There is also a public domain
|
||||||
|
clone available (MMK) and I think, but it is not tested, that this
|
||||||
|
utility will give (hardly) any problem.
|
||||||
|
|
||||||
|
To make everything just type MMS (or MMK) in the main directory of
|
||||||
|
mesagl. For MMS the deafult makefile is called descrip.mms, and
|
||||||
|
that is what I have called it. I included alse some config files,
|
||||||
|
all having mms somewhere in the name which all the makefiles need
|
||||||
|
(just as your unix makefiles).
|
||||||
|
|
||||||
|
On Alpha platforms at default a sharable images for the libraries are created.
|
||||||
|
To get a static library make it by typing MMS/MACRO=(NOSHARE=1).
|
||||||
|
On VAX platforms only static libraries can be build.
|
||||||
|
|
||||||
|
23-sep-2005
|
||||||
|
changed default compilation to use /float=ieee/ieee=denorm. The reason for
|
||||||
|
this is that it makes Mesa on OpenVMS better compatible with other platforms
|
||||||
|
and other packages for VMS that I maintain.
|
||||||
|
For more information see
|
||||||
|
http://nchrem.tnw.tudelft.nl/openvms
|
||||||
|
https://bugs.freedesktop.org/show_bug.cgi?id=4270
|
||||||
|
You may want to compile Mesa to use VAX-floating point arithmetic, instead
|
||||||
|
of IEEE floating point by removing the /float=IEEE/denorm flag from the
|
||||||
|
compiler options in the descrip.mms files.
|
@@ -1,6 +1,6 @@
|
|||||||
File: docs/README.WIN32
|
File: docs/README.WIN32
|
||||||
|
|
||||||
Last updated: 21 June 2013
|
Last updated: 23 April 2011
|
||||||
|
|
||||||
|
|
||||||
Quick Start
|
Quick Start
|
||||||
@@ -11,6 +11,10 @@ no longer shipped or supported.
|
|||||||
|
|
||||||
Run
|
Run
|
||||||
|
|
||||||
|
scons osmesa mesagdi
|
||||||
|
|
||||||
|
to build classic mesa Windows GDI drivers; or
|
||||||
|
|
||||||
scons libgl-gdi
|
scons libgl-gdi
|
||||||
|
|
||||||
to build gallium based GDI driver.
|
to build gallium based GDI driver.
|
||||||
@@ -26,21 +30,6 @@ At this time, only the gallium GDI driver is known to work.
|
|||||||
Source code also exists in the tree for other drivers in
|
Source code also exists in the tree for other drivers in
|
||||||
src/mesa/drivers/windows, but the status of this code is unknown.
|
src/mesa/drivers/windows, but the status of this code is unknown.
|
||||||
|
|
||||||
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
|
|
||||||
get pywin32-218.4.win-amd64-py2.7.exe
|
|
||||||
- install git
|
|
||||||
- download mesa from git
|
|
||||||
see https://www.mesa3d.org/repository.html
|
|
||||||
- run scons
|
|
||||||
|
|
||||||
General
|
General
|
||||||
-------
|
-------
|
||||||
|
279
docs/RELNOTES-5.1
Normal file
279
docs/RELNOTES-5.1
Normal file
@@ -0,0 +1,279 @@
|
|||||||
|
|
||||||
|
Mesa 5.1 release notes
|
||||||
|
|
||||||
|
December 17, 2003
|
||||||
|
|
||||||
|
PLEASE READ!!!!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
Mesa uses an even/odd version number scheme like the Linux kernel.
|
||||||
|
Even-numbered versions (such as 5.0) designate stable releases.
|
||||||
|
Odd-numbered versions (such as 5.1) designate new developmental releases.
|
||||||
|
|
||||||
|
|
||||||
|
Bug fixes
|
||||||
|
---------
|
||||||
|
See the VERSIONS file for a list of bugs fixed in this release.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
New Features in Mesa 5.1
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
GL_ARB_vertex_program / GL_ARB_fragment_program
|
||||||
|
Michal Krol and Karl Rasche implemented these extensions. Thanks!
|
||||||
|
Be aware that there may be some rough edges and lurking bugs.
|
||||||
|
|
||||||
|
GL_ATI_texture_env_combine3 extension
|
||||||
|
This adds a few new texture combine modes.
|
||||||
|
Contributed by Ian Romanick.
|
||||||
|
|
||||||
|
GL_SGI_texture_color_table
|
||||||
|
Adds a color table lookup to the RGBA texture path. There's a separate
|
||||||
|
color table for each texture unit.
|
||||||
|
Contributed by Eric Plante.
|
||||||
|
|
||||||
|
GL_NV_fragment_program
|
||||||
|
NVIDIA's fragment-level programming feature.
|
||||||
|
Possible lurking bugs:
|
||||||
|
- the DDX and DDY commands aren't fully tested
|
||||||
|
- there may be bugs in the parser
|
||||||
|
- the TEX and TXP instructions both do perspective correction
|
||||||
|
- the pack/unpack instructions may not be correct
|
||||||
|
|
||||||
|
GL_EXT_depth_bounds_test
|
||||||
|
This extension adds a scissor-like test for the Z axis. It's used to
|
||||||
|
optimize stencil-volume shadow algorithms.
|
||||||
|
|
||||||
|
GL_NV_light_max_exponent
|
||||||
|
Lifts the 128 limit for max light exponent.
|
||||||
|
|
||||||
|
GL_EXT_texture_rectangle
|
||||||
|
Identical to GL_NV_texture_rectangle
|
||||||
|
|
||||||
|
GL_ARB_occlusion_query
|
||||||
|
Useful for visibility-based culling.
|
||||||
|
|
||||||
|
GL_ARB_texture_non_power_of_two
|
||||||
|
Removes the restriction that texture dimensions must be powers of two.
|
||||||
|
|
||||||
|
GL_ARB_vertex_buffer_object
|
||||||
|
Allows server-side vertex arrays, optimized host/card data transfers, etc.
|
||||||
|
|
||||||
|
GL_ARB_point_sprite
|
||||||
|
ARB-approved version of GL_NV_point_sprite. Basically allows textures
|
||||||
|
to be applied to points.
|
||||||
|
|
||||||
|
GL_IBM_multimode_draw_arrays
|
||||||
|
Allows multiple vertex arrays to be drawn with one call, including arrays
|
||||||
|
of different types of primitives.
|
||||||
|
|
||||||
|
GL_SUN_multi_draw_arrays
|
||||||
|
An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4.
|
||||||
|
|
||||||
|
Faster glDrawPixels / glCopyPixels in X11 driver
|
||||||
|
If your X screen is 32bpp, glDrawPixels to the front color buffer will
|
||||||
|
be accelerated (via XPutImage()) if the image format is GL_BGRA and the
|
||||||
|
type is GL_UNSIGNED_BYTE. No raster operations, such as depth test,
|
||||||
|
blend, fog, etc. can be enabled.
|
||||||
|
|
||||||
|
If your X screen is 16bpp, glDrawPixels to the front color buffer will
|
||||||
|
be accelerated (via XPutImage()) if the image format is GL_RGB and the
|
||||||
|
type is GL_UNSIGNED_SHORT_5_6_5. No raster operations, such as depth
|
||||||
|
test, blend, fog, etc. can be enabled.
|
||||||
|
|
||||||
|
glCopyPixels() calls for the front color buffer will be accelerated
|
||||||
|
(via XCopyArea()) if no raster operations, such as depth test, blend,
|
||||||
|
fog, pixel zoom, etc. are enabled.
|
||||||
|
|
||||||
|
The speed-up over typical software rendering is a factor of 10 for
|
||||||
|
glDrawPixels and 100 for glCopyPixels.
|
||||||
|
|
||||||
|
|
||||||
|
With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object,
|
||||||
|
GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports
|
||||||
|
all the new features of OpenGL 1.5. Mesa 6.0 (the next stable release)
|
||||||
|
will advertise GL_VERSION = "1.5".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Vertex/Fragment program debugger
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
GL_MESA_program_debug is an experimental extension to support
|
||||||
|
interactive debugging of vertex and fragment programs. See the
|
||||||
|
docs/MESA_program_debug.spec file for details.
|
||||||
|
|
||||||
|
The bulk of the vertex/fragment program debugger is implemented
|
||||||
|
outside of Mesa. The GL_MESA_program_debug extension just has minimal
|
||||||
|
hooks for stopping running programs and inspecting programs.
|
||||||
|
|
||||||
|
The progs/tests/debugger.c (only in CVS) program is an example of how
|
||||||
|
the extension can be used. Presently, the debugger code and demo code
|
||||||
|
is in the same file. Eventually the debugger code should be moved
|
||||||
|
into a reusable module.
|
||||||
|
|
||||||
|
As it is now, the demo lets you set breakpoings in vertex/fragment
|
||||||
|
programs, single step, and print intermediate register values. It's
|
||||||
|
basically just a proof of concept.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Directory tree reorganization
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
The directory structure for Mesa has been overhauled to improve its layout.
|
||||||
|
All source code for Mesa, GLU, GLUT, etc is now under the src/ directory
|
||||||
|
in appropriate subdirectories.
|
||||||
|
|
||||||
|
The Mesa source code and drivers has been reorganized under src/mesa/.
|
||||||
|
|
||||||
|
All demonstration programs and tests are now in subdirectories under progs/.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Build System Changes
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
The GNU automake/autoconf support has been removed. As it was, it seldom
|
||||||
|
worked on anything but Linux. The Mesa developers aren't big fans of
|
||||||
|
automake/autoconf/libtool and didn't have the time to maintain it.
|
||||||
|
If someone wants to contribute new automake/autoconf support (and is
|
||||||
|
willing to maintain it), it may be re-incorporated into Mesa, subject
|
||||||
|
to some requirements.
|
||||||
|
|
||||||
|
The "old style" makefile system has been updated:
|
||||||
|
1. Make-config has been trimmed down to fewer, modern configurations.
|
||||||
|
2. Most of the bin/mklib.* scripts have been rolled into a new "mklib"
|
||||||
|
script that works on all sorts of systems. There are probably some
|
||||||
|
bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5.
|
||||||
|
Improvements/contributes are greatly appreciated.
|
||||||
|
3. The Makefile.X11 files have been cleaned up in various ways
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Source File Changes
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
The mmath.[ch] files are obsolete. Their contents have been moved
|
||||||
|
into the imports.[ch] and macros.[ch] files.
|
||||||
|
|
||||||
|
The files related to vertex and fragment programming have changed.
|
||||||
|
Old files:
|
||||||
|
vpexec.[ch]
|
||||||
|
vpparse.[ch]
|
||||||
|
vpstate.[ch]
|
||||||
|
New files:
|
||||||
|
program.[ch] - generic ARB/NV program code
|
||||||
|
arbprogram.[ch] - ARB program API functions
|
||||||
|
arbfragparse.[ch] - ARB fragment program parsing
|
||||||
|
arbvertparse.[ch] - ARB vertex program parsing
|
||||||
|
arbparse.[ch] - ARB vertex/fragment parsing
|
||||||
|
arbparse_syn.h - vertex/fragment program syntax
|
||||||
|
nvprogram.[ch] - NV program API functions
|
||||||
|
nvvertprog.h - NV vertex program definitions
|
||||||
|
nvfragprog.h - NV fragment program definitions
|
||||||
|
nvvertparse.[ch] - NV vertex program parser
|
||||||
|
nvfragparse.[ch] - NV fragment program parser
|
||||||
|
nvvertexec.[ch] - NV vertex program execution
|
||||||
|
swrast/s_nvfragprog.[ch] - NV fragment program execution
|
||||||
|
|
||||||
|
The files related to per-vertex handling have changed.
|
||||||
|
Old files:
|
||||||
|
tnl/t_eval_api.c - old per-vertex code
|
||||||
|
tnl/t_imm_alloc.c - old per-vertex code
|
||||||
|
tnl/t_imm_api.c - old per-vertex code
|
||||||
|
tnl/t_imm_debug.c - old per-vertex code
|
||||||
|
tnl/t_imm_dlist.c - old per-vertex code
|
||||||
|
tnl/t_imm_elt.c - old per-vertex code
|
||||||
|
tnl/t_imm_eval.c - old per-vertex code
|
||||||
|
tnl/t_imm_exec.c - old per-vertex code
|
||||||
|
tnl/t_imm_fixup.c - old per-vertex code
|
||||||
|
tnl/t_vtx_sse.c - old per-vertex code
|
||||||
|
tnl/t_vtx_x86.c - old per-vertex code
|
||||||
|
New files:
|
||||||
|
tnl/t_save_api.c - new per-vertex code
|
||||||
|
tnl/t_save_loopback.c - new per-vertex code
|
||||||
|
tnl/t_save_playback.c - new per-vertex code
|
||||||
|
tnl/t_vtx_eval.c - old per-vertex code
|
||||||
|
|
||||||
|
Other new files:
|
||||||
|
bufferobj.[ch] - GL_ARB_vertex_buffer_object functions
|
||||||
|
version.h - defines the Mesa version info
|
||||||
|
|
||||||
|
Other removed files:
|
||||||
|
swrast/s_histogram.[ch] - moved into src/histogram.c
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
The ctx->Driver.CreateTexture function has been removed - it wasn't used.
|
||||||
|
|
||||||
|
New device driver hook functions:
|
||||||
|
NewTextureObject - used to allocate struct gl_texture_objects
|
||||||
|
NewTextureImage - used to allocate struct gl_texture_images
|
||||||
|
|
||||||
|
New ctx->Texture._EnabledCoordUnits field:
|
||||||
|
With the addition of GL_NV_fragment_program we may need to interpolate
|
||||||
|
various sets of texture coordinates even when the corresponding texture
|
||||||
|
unit is not enabled. That is, glEnable(GL_TEXTURE_xD) may never get
|
||||||
|
called but we still may have to interpolate texture coordinates across
|
||||||
|
triangles so that the fragment program will get them.
|
||||||
|
This new field indicates which sets of texture coordinates are needed.
|
||||||
|
If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the
|
||||||
|
same bit MUST be set in ctx->Texture._EnabledCoordUnits.
|
||||||
|
|
||||||
|
The ctx->_TriangleCaps field is deprecated.
|
||||||
|
Instead of testing the DD_* bits in _TriangleCaps, you should instead
|
||||||
|
directly test the relevant state variables, or use one of the helper
|
||||||
|
functions like NEED_SECONDARY_COLOR() at the bottom of context.h
|
||||||
|
While testing _TriangleCaps bits was fast, it was kludgey, and setting
|
||||||
|
the bits in the first place could be error prone.
|
||||||
|
|
||||||
|
New vertex processing code.
|
||||||
|
The code behind glBegin, glEnd, glVertex, glNormal, etc. has been
|
||||||
|
totally rewritten. It's a cleaner implementation now and should use
|
||||||
|
less memory. (Keith)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
To Do
|
||||||
|
-----
|
||||||
|
Add screen-awareness to fakeglx.c
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Device Driver Status
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
A number of Mesa's software drivers haven't been actively maintained for
|
||||||
|
some time. We rely on volunteers to maintain many of these drivers.
|
||||||
|
Here's the current status of all included drivers:
|
||||||
|
|
||||||
|
|
||||||
|
Driver Status
|
||||||
|
---------------------- ---------------------
|
||||||
|
XMesa (Xlib) implements OpenGL 1.4
|
||||||
|
OSMesa (off-screen) implements OpenGL 1.4
|
||||||
|
FX (3dfx Voodoo1/2) implements OpenGL 1.3
|
||||||
|
SVGA implements OpenGL 1.3
|
||||||
|
Wind River UGL implements OpenGL 1.3
|
||||||
|
Windows/Win32 implements OpenGL 1.4
|
||||||
|
DJGPP implements OpenGL 1.4
|
||||||
|
GGI implements OpenGL 1.3
|
||||||
|
BeOS implements OpenGL 1.4
|
||||||
|
Allegro needs updating
|
||||||
|
D3D needs updating
|
||||||
|
|
||||||
|
Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
|
||||||
|
driver call the _mesa_enable_1_4_extensions() function.
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user