3
0
mirror of https://github.com/Qortal/Brooklyn.git synced 2025-02-01 07:42:18 +00:00

Final merge of VC4 mesa's with Vulkan source

This commit is contained in:
Scare Crowe 2021-11-12 23:47:05 +05:00
parent decfd47661
commit 1bf06322b8
3578 changed files with 472370 additions and 465112 deletions

View File

@ -73,7 +73,6 @@ LOCAL_CFLAGS += \
-DHAVE_LINUX_FUTEX_H \ -DHAVE_LINUX_FUTEX_H \
-DHAVE_ENDIAN_H \ -DHAVE_ENDIAN_H \
-DHAVE_ZLIB \ -DHAVE_ZLIB \
-DHAVE_COMPRESSION \
-DMAJOR_IN_SYSMACROS \ -DMAJOR_IN_SYSMACROS \
-DVK_USE_PLATFORM_ANDROID_KHR \ -DVK_USE_PLATFORM_ANDROID_KHR \
-fvisibility=hidden \ -fvisibility=hidden \

View File

@ -21,12 +21,6 @@
# 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.
ifneq ($(filter true, $(BOARD_MESA3D_USES_MESON_BUILD)),)
include $(call my-dir)/android/Android.mk
else
# 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
@ -103,7 +97,7 @@ endif
define mesa-build-with-llvm define mesa-build-with-llvm
$(if $(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5 6 7), \ $(if $(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5 6 7), \
$(warning Unsupported LLVM version in Android $(MESA_ANDROID_MAJOR_VERSION)),) \ $(warning Unsupported LLVM version in Android $(MESA_ANDROID_MAJOR_VERSION)),) \
$(eval LOCAL_CFLAGS += -DLLVM_AVAILABLE -DDRAW_LLVM_AVAILABLE -DLLVM_IS_SHARED=1 -DMESA_LLVM_VERSION_STRING=\"3.9\") \ $(eval LOCAL_CFLAGS += -DLLVM_AVAILABLE -DLLVM_IS_SHARED=1 -DMESA_LLVM_VERSION_STRING=\"3.9\") \
$(eval LOCAL_SHARED_LIBRARIES += libLLVM) $(eval LOCAL_SHARED_LIBRARIES += libLLVM)
endef endef
@ -128,5 +122,3 @@ SUBDIRS := \
INC_DIRS := $(call all-named-subdir-makefiles,$(SUBDIRS)) INC_DIRS := $(call all-named-subdir-makefiles,$(SUBDIRS))
INC_DIRS += $(call all-named-subdir-makefiles,src/gallium) INC_DIRS += $(call all-named-subdir-makefiles,src/gallium)
include $(INC_DIRS) include $(INC_DIRS)
endif

187
mesa 3D driver/SConstruct Normal file
View File

@ -0,0 +1,187 @@
#######################################################################
# Top-level SConstruct
#
# For example, invoke scons as
#
# scons build=debug llvm=yes machine=x86
#
# to set configuration variables. Or you can write those options to a file
# named config.py:
#
# # config.py
# build='debug'
# llvm=True
# machine='x86'
#
# Invoke
#
# scons -h
#
# to get the full list of options. See scons manpage for more info.
#
from __future__ import print_function
import os
import os.path
import sys
import SCons.Util
import common
#######################################################################
# Minimal scons version
EnsureSConsVersion(2, 4)
EnsurePythonVersion(2, 7)
#######################################################################
# Configuration options
opts = Variables('config.py')
common.AddOptions(opts)
env = Environment(
options = opts,
tools = ['gallium'],
toolpath = ['#scons'],
ENV = os.environ,
)
# XXX: This creates a many problems as it saves...
#opts.Save('config.py', env)
# Backwards compatability with old target configuration variable
try:
targets = ARGUMENTS['targets']
except KeyError:
pass
else:
targets = targets.split(',')
print('scons: warning: targets option is deprecated; pass the targets on their own such as')
print()
print(' scons %s' % ' '.join(targets))
print()
COMMAND_LINE_TARGETS.append(targets)
Help(opts.GenerateHelpText(env))
#######################################################################
# Print a deprecation warning for using scons on non-windows
if common.host_platform != 'windows' and env['platform'] != 'windows':
if env['force_scons']:
print("WARNING: Scons is deprecated for non-windows platforms (including cygwin) "
"please use meson instead.", file=sys.stderr)
else:
print("ERROR: Scons is deprecated for non-windows platforms (including cygwin) "
"please use meson instead. If you really need to use scons you "
"can add `force_scons=1` to the scons command line.", file=sys.stderr)
sys.exit(1)
else:
print("WARNING: Scons support is in the process of being deprecated on "
"on windows platforms (including mingw). If you haven't already "
"please try using meson for windows builds. Be sure to report any "
"issues you run into", file=sys.stderr)
#######################################################################
# Environment setup
with open("VERSION") as f:
mesa_version = f.read().strip()
env.Append(CPPDEFINES = [
('PACKAGE_VERSION', '\\"%s\\"' % mesa_version),
('PACKAGE_BUGREPORT', '\\"https://gitlab.freedesktop.org/mesa/mesa/-/issues\\"'),
])
# Includes
env.Prepend(CPPPATH = [
'#/include',
])
env.Append(CPPPATH = [
'#/src/gallium/include',
'#/src/gallium/auxiliary',
'#/src/gallium/drivers',
'#/src/gallium/winsys',
])
# for debugging
#print env.Dump()
# Add a check target for running tests
check = env.Alias('check')
env.AlwaysBuild(check)
#######################################################################
# Invoke host SConscripts
#
# For things that are meant to be run on the native host build machine, instead
# of the target machine.
#
# Create host environent
if env['crosscompile'] and not env['embedded']:
host_env = Environment(
options = opts,
# no tool used
tools = [],
toolpath = ['#scons'],
ENV = os.environ,
)
# Override options
host_env['platform'] = common.host_platform
host_env['machine'] = common.host_machine
host_env['toolchain'] = 'default'
host_env['llvm'] = False
host_env.Tool('gallium')
host_env['hostonly'] = True
assert host_env['crosscompile'] == False
target_env = env
env = host_env
Export('env')
SConscript(
'src/SConscript',
variant_dir = host_env['build_dir'],
duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
)
env = target_env
Export('env')
#######################################################################
# Invoke SConscripts
# TODO: Build several variants at the same time?
# http://www.scons.org/wiki/SimultaneousVariantBuilds
SConscript(
'src/SConscript',
variant_dir = env['build_dir'],
duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
)
########################################################################
# List all aliases
try:
from SCons.Node.Alias import default_ans
except ImportError:
pass
else:
aliases = sorted(default_ans.keys())
env.Help('\n')
env.Help('Recognized targets:\n')
for alias in aliases:
env.Help(' %s\n' % alias)

View File

@ -12,10 +12,10 @@ from .commit_in_branch import (
def get_upstream() -> str: def get_upstream() -> str:
# Let's assume main is bound to the upstream remote and not a fork # Let's assume master is bound to the upstream remote and not a fork
out = subprocess.check_output(['git', 'for-each-ref', out = subprocess.check_output(['git', 'for-each-ref',
'--format=%(upstream)', '--format=%(upstream)',
'refs/heads/main'], 'refs/heads/master'],
stderr=subprocess.DEVNULL) stderr=subprocess.DEVNULL)
return out.decode().strip().split('/')[2] return out.decode().strip().split('/')[2]
@ -24,7 +24,7 @@ def get_upstream() -> str:
'commit, expected', 'commit, expected',
[ [
('20.1-branchpoint', True), ('20.1-branchpoint', True),
('main', True), ('master', True),
('e58a10af640ba58b6001f5c5ad750b782547da76', True), ('e58a10af640ba58b6001f5c5ad750b782547da76', True),
('d043d24654c851f0be57dbbf48274b5373dea42b', True), ('d043d24654c851f0be57dbbf48274b5373dea42b', True),
('dd2bd68fa69124c86cd008b256d06f44fab8e6cd', True), ('dd2bd68fa69124c86cd008b256d06f44fab8e6cd', True),
@ -46,9 +46,9 @@ def test_canonicalize_commit(commit: str, expected: bool) -> None:
'commit, expected', 'commit, expected',
[ [
(get_upstream() + '/20.1', True), (get_upstream() + '/20.1', True),
(get_upstream() + '/main', True), (get_upstream() + '/master', True),
('20.1', False), ('20.1', False),
('main', False), ('master', False),
('e58a10af640ba58b6001f5c5ad750b782547da76', False), ('e58a10af640ba58b6001f5c5ad750b782547da76', False),
('d043d24654c851f0be57dbbf48274b5373dea42b', False), ('d043d24654c851f0be57dbbf48274b5373dea42b', False),
('dd2bd68fa69124c86cd008b256d06f44fab8e6cd', False), ('dd2bd68fa69124c86cd008b256d06f44fab8e6cd', False),
@ -69,7 +69,7 @@ def test_validate_branch(commit: str, expected: bool) -> None:
@pytest.mark.parametrize( @pytest.mark.parametrize(
'commit, expected', 'commit, expected',
[ [
('main', True), ('master', True),
('20.1-branchpoint', True), ('20.1-branchpoint', True),
('20.1', False), ('20.1', False),
(get_upstream() + '/20.1', True), (get_upstream() + '/20.1', True),
@ -88,11 +88,11 @@ def test_is_commit_valid(commit: str, expected: bool) -> None:
[ [
('20.1', '20.1-branchpoint', True), ('20.1', '20.1-branchpoint', True),
('20.1', '20.0', False), ('20.1', '20.0', False),
('20.1', 'main', False), ('20.1', 'master', False),
('20.1', 'e58a10af640ba58b6001f5c5ad750b782547da76', True), ('20.1', 'e58a10af640ba58b6001f5c5ad750b782547da76', True),
('20.1', 'd043d24654c851f0be57dbbf48274b5373dea42b', True), ('20.1', 'd043d24654c851f0be57dbbf48274b5373dea42b', True),
('20.1', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', False), ('20.1', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', False),
('main', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', True), ('master', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', True),
('20.0', 'd043d24654c851f0be57dbbf48274b5373dea42b', False), ('20.0', 'd043d24654c851f0be57dbbf48274b5373dea42b', False),
]) ])
def test_branch_has_commit(branch: str, commit: str, expected: bool) -> None: def test_branch_has_commit(branch: str, commit: str, expected: bool) -> None:
@ -107,7 +107,7 @@ def test_branch_has_commit(branch: str, commit: str, expected: bool) -> None:
('20.1', '20.1-branchpoint', ''), ('20.1', '20.1-branchpoint', ''),
('20.1', '20.0', ''), ('20.1', '20.0', ''),
('20.1', '20.2', ''), ('20.1', '20.2', ''),
('20.1', 'main', ''), ('20.1', 'master', ''),
('20.1', 'd043d24654c851f0be57dbbf48274b5373dea42b', ''), ('20.1', 'd043d24654c851f0be57dbbf48274b5373dea42b', ''),
('20.0', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', ''), ('20.0', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', ''),
]) ])

View File

@ -36,8 +36,6 @@ import aiohttp
from mako.template import Template from mako.template import Template
from mako import exceptions from mako import exceptions
import docutils.utils
import docutils.parsers.rst.states as states
CURRENT_GL_VERSION = '4.6' CURRENT_GL_VERSION = '4.6'
CURRENT_VK_VERSION = '1.2' CURRENT_VK_VERSION = '1.2'
@ -103,74 +101,16 @@ TEMPLATE = Template(textwrap.dedent("""\
""")) """))
# copied from https://docutils.sourceforge.io/sandbox/xml2rst/xml2rstlib/markup.py def rst_escape(unsafe_str: str) -> str:
class Inliner(states.Inliner): "Escape rST special chars when they follow or preceed a whitespace"
""" special = re.escape(r'`<>*_#[]|')
Recognizer for inline markup. Derive this from the original inline unsafe_str = re.sub(r'(^|\s)([' + special + r'])',
markup parser for best results. r'\1\\\2',
""" unsafe_str)
unsafe_str = re.sub(r'([' + special + r'])(\s|$)',
# Copy static attributes from super class r'\\\1\2',
vars().update(vars(states.Inliner)) unsafe_str)
return unsafe_str
def quoteInline(self, text):
"""
`text`: ``str``
Return `text` with inline markup quoted.
"""
# Method inspired by `states.Inliner.parse`
self.document = docutils.utils.new_document("<string>")
self.document.settings.trim_footnote_reference_space = False
self.document.settings.character_level_inline_markup = False
self.document.settings.pep_references = False
self.document.settings.rfc_references = False
self.init_customizations(self.document.settings)
self.reporter = self.document.reporter
self.reporter.stream = None
self.language = None
self.parent = self.document
remaining = docutils.utils.escape2null(text)
checked = ""
processed = []
unprocessed = []
messages = []
while remaining:
original = remaining
match = self.patterns.initial.search(remaining)
if match:
groups = match.groupdict()
method = self.dispatch[groups['start'] or groups['backquote']
or groups['refend'] or groups['fnend']]
before, inlines, remaining, sysmessages = method(self, match, 0)
checked += before
if inlines:
assert len(inlines) == 1, "More than one inline found"
inline = original[len(before)
:len(original) - len(remaining)]
rolePfx = re.search("^:" + self.simplename + ":(?=`)",
inline)
refSfx = re.search("_+$", inline)
if rolePfx:
# Prefixed roles need to be quoted in the middle
checked += (inline[:rolePfx.end()] + "\\"
+ inline[rolePfx.end():])
elif refSfx and not re.search("^`", inline):
# Pure reference markup needs to be quoted at the end
checked += (inline[:refSfx.start()] + "\\"
+ inline[refSfx.start():])
else:
# Quote other inlines by prefixing
checked += "\\" + inline
else:
checked += remaining
break
# Quote all original backslashes
checked = re.sub('\x00', "\\\x00", checked)
return docutils.utils.unescape(checked, 1)
inliner = Inliner();
async def gather_commits(version: str) -> str: async def gather_commits(version: str) -> str:
@ -182,7 +122,9 @@ async def gather_commits(version: str) -> str:
return out.decode().strip() return out.decode().strip()
async def parse_issues(commits: str) -> typing.List[str]: async def gather_bugs(version: str) -> typing.List[str]:
commits = await gather_commits(version)
issues: typing.List[str] = [] issues: typing.List[str] = []
for commit in commits.split('\n'): for commit in commits.split('\n'):
sha, message = commit.split(maxsplit=1) sha, message = commit.split(maxsplit=1)
@ -191,24 +133,17 @@ async def parse_issues(commits: str) -> typing.List[str]:
stdout=asyncio.subprocess.PIPE) stdout=asyncio.subprocess.PIPE)
_out, _ = await p.communicate() _out, _ = await p.communicate()
out = _out.decode().split('\n') out = _out.decode().split('\n')
for line in reversed(out): for line in reversed(out):
if line.startswith('Closes:'): if line.startswith('Closes:'):
bug = line.lstrip('Closes:').strip() bug = line.lstrip('Closes:').strip()
if bug.startswith('https://gitlab.freedesktop.org/mesa/mesa'): break
# This means we have a bug in the form "Closes: https://..." else:
issues.append(os.path.basename(urllib.parse.urlparse(bug).path)) raise Exception('No closes found?')
elif ',' in bug: if bug.startswith('h'):
issues.extend([b.strip().lstrip('#') for b in bug.split(',')]) # This means we have a bug in the form "Closes: https://..."
elif bug.startswith('#'): issues.append(os.path.basename(urllib.parse.urlparse(bug).path))
issues.append(bug.lstrip('#')) else:
issues.append(bug.lstrip('#'))
return issues
async def gather_bugs(version: str) -> typing.List[str]:
commits = await gather_commits(version)
issues = await parse_issues(commits)
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
async with aiohttp.ClientSession(loop=loop) as session: async with aiohttp.ClientSession(loop=loop) as session:
@ -327,7 +262,7 @@ async def main() -> None:
header_underline=header_underline, header_underline=header_underline,
previous_version=previous_version, previous_version=previous_version,
vk_version=CURRENT_VK_VERSION, vk_version=CURRENT_VK_VERSION,
rst_escape=inliner.quoteInline, rst_escape=rst_escape,
)) ))
except: except:
print(exceptions.text_error_template().render()) print(exceptions.text_error_template().render())

View File

@ -1,4 +1,4 @@
# Copyright © 2019,2021 Intel Corporation # Copyright © 2019 Intel Corporation
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@ -18,19 +18,8 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
import sys
import textwrap
import typing
import pytest import pytest
# AsyncMock is new in 3.8, so if we're using an older version we need the
# backported version of mock
if sys.version_info >= (3, 8):
from unittest import mock
else:
import mock
from .gen_release_notes import * from .gen_release_notes import *
@ -69,93 +58,3 @@ async def test_gather_commits():
version = '19.2.0' version = '19.2.0'
out = await gather_commits(version) out = await gather_commits(version)
assert out assert out
@pytest.mark.asyncio
@pytest.mark.parametrize(
'content, bugs',
[
# It is important to have the title on a new line, as
# textwrap.dedent wont work otherwise.
# Test the `Closes: #N` syntax
(
'''\
A commit
It has a message in it
Closes: #1
''',
['1'],
),
# Test the Full url
(
'''\
A commit with no body
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3456
''',
['3456'],
),
# Test projects that are not mesa
(
'''\
A commit for libdrm
Closes: https://gitlab.freedesktop.org/mesa/drm/-/3456
''',
[],
),
(
'''\
A commit for for something else completely
Closes: https://github.com/Organiztion/project/1234
''',
[],
),
# Test multiple issues on one line
(
'''\
Fix many bugs
Closes: #1, #2
''',
['1', '2'],
),
# Test multiple closes
(
'''\
Fix many bugs
Closes: #1
Closes: #2
''',
['1', '2'],
),
(
'''\
With long form
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3456
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3457
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3458
''',
['3456', '3457', '3458'],
),
])
async def test_parse_issues(content: str, bugs: typing.List[str]) -> None:
mock_com = mock.AsyncMock(return_value=(textwrap.dedent(content).encode(), ''))
mock_p = mock.Mock()
mock_p.communicate = mock_com
mock_exec = mock.AsyncMock(return_value=mock_p)
with mock.patch('bin.gen_release_notes.asyncio.create_subprocess_exec', mock_exec), \
mock.patch('bin.gen_release_notes.gather_commits', mock.AsyncMock(return_value='sha\n')):
ids = await parse_issues('1234 not used')
assert set(ids) == set(bugs)

View File

@ -0,0 +1,45 @@
#!/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

View File

@ -0,0 +1,150 @@
#!/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 origin/master HEAD`
# List all the commits between day 1 and the branch point...
git log --reverse --pretty=%H $latest_branchpoint > already_landed
# ... and the ones cherry-picked.
git log --reverse --pretty=medium --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
grep "cherry picked from commit" |\
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
# Grep for potential candidates
git log --reverse --pretty=%H -i --grep='^CC:.*mesa-stable\|^CC:.*mesa-dev\|\<fixes\>\|\<broken by\>\|This reverts commit' $latest_branchpoint..origin/master |\
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

View File

@ -22,6 +22,7 @@
"""Script to install megadriver symlinks for meson.""" """Script to install megadriver symlinks for meson."""
from __future__ import print_function
import argparse import argparse
import os import os

View File

@ -47,7 +47,7 @@ SOURCES = [
'api': 'khr', 'api': 'khr',
'inc_folder': 'KHR', 'inc_folder': 'KHR',
'sources': [ 'sources': [
Source('include/KHR/khrplatform.h', 'https://github.com/KhronosGroup/EGL-Registry/raw/main/api/KHR/khrplatform.h'), Source('include/KHR/khrplatform.h', 'https://github.com/KhronosGroup/EGL-Registry/raw/master/api/KHR/khrplatform.h'),
], ],
}, },
@ -55,10 +55,10 @@ SOURCES = [
'api': 'egl', 'api': 'egl',
'inc_folder': 'EGL', 'inc_folder': 'EGL',
'sources': [ 'sources': [
Source('src/egl/generate/egl.xml', 'https://github.com/KhronosGroup/EGL-Registry/raw/main/api/egl.xml'), Source('src/egl/generate/egl.xml', 'https://github.com/KhronosGroup/EGL-Registry/raw/master/api/egl.xml'),
Source('include/EGL/egl.h', 'https://github.com/KhronosGroup/EGL-Registry/raw/main/api/EGL/egl.h'), Source('include/EGL/egl.h', 'https://github.com/KhronosGroup/EGL-Registry/raw/master/api/EGL/egl.h'),
Source('include/EGL/eglplatform.h', 'https://github.com/KhronosGroup/EGL-Registry/raw/main/api/EGL/eglplatform.h'), Source('include/EGL/eglplatform.h', 'https://github.com/KhronosGroup/EGL-Registry/raw/master/api/EGL/eglplatform.h'),
Source('include/EGL/eglext.h', 'https://github.com/KhronosGroup/EGL-Registry/raw/main/api/EGL/eglext.h'), Source('include/EGL/eglext.h', 'https://github.com/KhronosGroup/EGL-Registry/raw/master/api/EGL/eglext.h'),
Source('include/EGL/eglextchromium.h', 'https://chromium.googlesource.com/chromium/src/+/refs/heads/master/ui/gl/EGL/eglextchromium.h?format=TEXT'), Source('include/EGL/eglextchromium.h', 'https://chromium.googlesource.com/chromium/src/+/refs/heads/master/ui/gl/EGL/eglextchromium.h?format=TEXT'),
Source('include/EGL/eglext_angle.h', 'https://chromium.googlesource.com/angle/angle/+/refs/heads/master/include/EGL/eglext_angle.h?format=TEXT'), Source('include/EGL/eglext_angle.h', 'https://chromium.googlesource.com/angle/angle/+/refs/heads/master/include/EGL/eglext_angle.h?format=TEXT'),
Source('include/EGL/eglmesaext.h', None), Source('include/EGL/eglmesaext.h', None),
@ -69,11 +69,11 @@ SOURCES = [
'api': 'gl', 'api': 'gl',
'inc_folder': 'GL', 'inc_folder': 'GL',
'sources': [ 'sources': [
Source('src/mapi/glapi/registry/gl.xml', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/xml/gl.xml'), Source('src/mapi/glapi/registry/gl.xml', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/xml/gl.xml'),
Source('include/GL/glcorearb.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GL/glcorearb.h'), Source('include/GL/glcorearb.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GL/glcorearb.h'),
Source('include/GL/glext.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GL/glext.h'), Source('include/GL/glext.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GL/glext.h'),
Source('include/GL/glxext.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GL/glxext.h'), Source('include/GL/glxext.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GL/glxext.h'),
Source('include/GL/wglext.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GL/wglext.h'), Source('include/GL/wglext.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GL/wglext.h'),
Source('include/GL/gl.h', None), # FIXME: I don't know what the canonical source is Source('include/GL/gl.h', None), # FIXME: I don't know what the canonical source is
Source('include/GL/glx.h', None), # FIXME: I don't know what the canonical source is Source('include/GL/glx.h', None), # FIXME: I don't know what the canonical source is
Source('include/GL/internal/', None), Source('include/GL/internal/', None),
@ -86,10 +86,10 @@ SOURCES = [
'api': 'gles1', 'api': 'gles1',
'inc_folder': 'GLES', 'inc_folder': 'GLES',
'sources': [ 'sources': [
Source('include/GLES/gl.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES/gl.h'), Source('include/GLES/gl.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES/gl.h'),
Source('include/GLES/glplatform.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES/glplatform.h'), Source('include/GLES/glplatform.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES/glplatform.h'),
Source('include/GLES/glext.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES/glext.h'), Source('include/GLES/glext.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES/glext.h'),
Source('include/GLES/egl.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES/egl.h'), Source('include/GLES/egl.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES/egl.h'),
], ],
}, },
@ -97,9 +97,9 @@ SOURCES = [
'api': 'gles2', 'api': 'gles2',
'inc_folder': 'GLES2', 'inc_folder': 'GLES2',
'sources': [ 'sources': [
Source('include/GLES2/gl2.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES2/gl2.h'), Source('include/GLES2/gl2.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES2/gl2.h'),
Source('include/GLES2/gl2platform.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES2/gl2platform.h'), Source('include/GLES2/gl2platform.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES2/gl2platform.h'),
Source('include/GLES2/gl2ext.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES2/gl2ext.h'), Source('include/GLES2/gl2ext.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES2/gl2ext.h'),
], ],
}, },
@ -107,10 +107,10 @@ SOURCES = [
'api': 'gles3', 'api': 'gles3',
'inc_folder': 'GLES3', 'inc_folder': 'GLES3',
'sources': [ 'sources': [
Source('include/GLES3/gl3.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES3/gl3.h'), Source('include/GLES3/gl3.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES3/gl3.h'),
Source('include/GLES3/gl31.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES3/gl31.h'), Source('include/GLES3/gl31.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES3/gl31.h'),
Source('include/GLES3/gl32.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES3/gl32.h'), Source('include/GLES3/gl32.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES3/gl32.h'),
Source('include/GLES3/gl3platform.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES3/gl3platform.h'), Source('include/GLES3/gl3platform.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/master/api/GLES3/gl3platform.h'),
Source('include/GLES3/gl3ext.h', None), # FIXME: I don't know what the canonical source is Source('include/GLES3/gl3ext.h', None), # FIXME: I don't know what the canonical source is
], ],
}, },
@ -155,28 +155,27 @@ SOURCES = [
'api': 'vulkan', 'api': 'vulkan',
'inc_folder': 'vulkan', 'inc_folder': 'vulkan',
'sources': [ 'sources': [
Source('src/vulkan/registry/vk.xml', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/registry/vk.xml'), Source('src/vulkan/registry/vk.xml', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/registry/vk.xml'),
Source('include/vulkan/vulkan.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan.h'), Source('include/vulkan/vulkan.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan.h'),
Source('include/vulkan/vulkan_core.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_core.h'), Source('include/vulkan/vulkan_core.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_core.h'),
Source('include/vulkan/vulkan_beta.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_beta.h'), Source('include/vulkan/vulkan_beta.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_beta.h'),
Source('include/vulkan/vk_icd.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vk_icd.h'), Source('include/vulkan/vk_icd.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vk_icd.h'),
Source('include/vulkan/vk_layer.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vk_layer.h'), Source('include/vulkan/vk_layer.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vk_layer.h'),
Source('include/vulkan/vk_platform.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vk_platform.h'), Source('include/vulkan/vk_platform.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vk_platform.h'),
Source('include/vulkan/vulkan_android.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_android.h'), Source('include/vulkan/vulkan_android.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_android.h'),
Source('include/vulkan/vulkan_directfb.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_directfb.h'), Source('include/vulkan/vulkan_fuchsia.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_fuchsia.h'),
Source('include/vulkan/vulkan_fuchsia.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_fuchsia.h'), Source('include/vulkan/vulkan_ggp.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_ggp.h'),
Source('include/vulkan/vulkan_ggp.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_ggp.h'), Source('include/vulkan/vulkan_ios.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_ios.h'),
Source('include/vulkan/vulkan_ios.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_ios.h'), Source('include/vulkan/vulkan_macos.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_macos.h'),
Source('include/vulkan/vulkan_macos.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_macos.h'), Source('include/vulkan/vulkan_metal.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_metal.h'),
Source('include/vulkan/vulkan_metal.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_metal.h'), Source('include/vulkan/vulkan_vi.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_vi.h'),
Source('include/vulkan/vulkan_screen.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_screen.h'), Source('include/vulkan/vulkan_wayland.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_wayland.h'),
Source('include/vulkan/vulkan_vi.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_vi.h'), Source('include/vulkan/vulkan_win32.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_win32.h'),
Source('include/vulkan/vulkan_wayland.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_wayland.h'), Source('include/vulkan/vulkan_xcb.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_xcb.h'),
Source('include/vulkan/vulkan_win32.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_win32.h'), Source('include/vulkan/vulkan_xlib.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_xlib.h'),
Source('include/vulkan/vulkan_xcb.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xcb.h'), Source('include/vulkan/vulkan_xlib_xrandr.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/master/include/vulkan/vulkan_xlib_xrandr.h'),
Source('include/vulkan/vulkan_xlib.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xlib.h'),
Source('include/vulkan/vulkan_xlib_xrandr.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xlib_xrandr.h'),
Source('include/vulkan/vk_android_native_buffer.h', 'https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/include/vulkan/vk_android_native_buffer.h?format=TEXT'), Source('include/vulkan/vk_android_native_buffer.h', 'https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/include/vulkan/vk_android_native_buffer.h?format=TEXT'),
Source('include/vulkan/vulkan_intel.h', None),
Source('include/vulkan/.editorconfig', None), Source('include/vulkan/.editorconfig', None),
], ],
}, },

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python3 #!/usr/bin/env python
# encoding=utf-8 # encoding=utf-8
# Copyright © 2017 Intel Corporation # Copyright © 2017 Intel Corporation
@ -20,6 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
from __future__ import print_function
import os import os

View File

@ -28,6 +28,6 @@ from pick.ui import UI, PALETTE
if __name__ == "__main__": if __name__ == "__main__":
u = UI() u = UI()
evl = urwid.AsyncioEventLoop(loop=asyncio.get_event_loop()) evl = urwid.AsyncioEventLoop(loop=asyncio.get_event_loop())
loop = urwid.MainLoop(u.render(), PALETTE, event_loop=evl, handle_mouse=False) loop = urwid.MainLoop(u.render(), PALETTE, event_loop=evl)
u.mainloop = loop u.mainloop = loop
loop.run() loop.run()

View File

@ -42,7 +42,7 @@ if typing.TYPE_CHECKING:
nominated: bool nominated: bool
nomination_type: typing.Optional[int] nomination_type: typing.Optional[int]
resolution: typing.Optional[int] resolution: typing.Optional[int]
main_sha: typing.Optional[str] master_sha: typing.Optional[str]
because_sha: typing.Optional[str] because_sha: typing.Optional[str]
IS_FIX = re.compile(r'^\s*fixes:\s*([a-f0-9]{6,40})', flags=re.MULTILINE | re.IGNORECASE) IS_FIX = re.compile(r'^\s*fixes:\s*([a-f0-9]{6,40})', flags=re.MULTILINE | re.IGNORECASE)
@ -118,7 +118,7 @@ class Commit:
nominated: bool = attr.ib(False) nominated: bool = attr.ib(False)
nomination_type: typing.Optional[NominationType] = attr.ib(None) nomination_type: typing.Optional[NominationType] = attr.ib(None)
resolution: Resolution = attr.ib(Resolution.UNRESOLVED) resolution: Resolution = attr.ib(Resolution.UNRESOLVED)
main_sha: typing.Optional[str] = attr.ib(None) master_sha: typing.Optional[str] = attr.ib(None)
because_sha: typing.Optional[str] = attr.ib(None) because_sha: typing.Optional[str] = attr.ib(None)
def to_json(self) -> 'CommitDict': def to_json(self) -> 'CommitDict':
@ -131,21 +131,13 @@ class Commit:
@classmethod @classmethod
def from_json(cls, data: 'CommitDict') -> 'Commit': def from_json(cls, data: 'CommitDict') -> 'Commit':
c = cls(data['sha'], data['description'], data['nominated'], main_sha=data['main_sha'], because_sha=data['because_sha']) c = cls(data['sha'], data['description'], data['nominated'], master_sha=data['master_sha'], because_sha=data['because_sha'])
if data['nomination_type'] is not None: if data['nomination_type'] is not None:
c.nomination_type = NominationType(data['nomination_type']) c.nomination_type = NominationType(data['nomination_type'])
if data['resolution'] is not None: if data['resolution'] is not None:
c.resolution = Resolution(data['resolution']) c.resolution = Resolution(data['resolution'])
return c return c
def date(self) -> str:
# Show commit date, ie. when the commit actually landed
# (as opposed to when it was first written)
return subprocess.check_output(
['git', 'show', '--no-patch', '--format=%cs', self.sha],
stderr=subprocess.DEVNULL
).decode("ascii").strip()
async def apply(self, ui: 'UI') -> typing.Tuple[bool, str]: async def apply(self, ui: 'UI') -> typing.Tuple[bool, str]:
# FIXME: This isn't really enough if we fail to cherry-pick because the # FIXME: This isn't really enough if we fail to cherry-pick because the
# git tree will still be dirty # git tree will still be dirty
@ -204,9 +196,9 @@ class Commit:
async def get_new_commits(sha: str) -> typing.List[typing.Tuple[str, str]]: async def get_new_commits(sha: str) -> typing.List[typing.Tuple[str, str]]:
# Try to get the authoritative upstream main # Try to get the authoritative upstream master
p = await asyncio.create_subprocess_exec( p = await asyncio.create_subprocess_exec(
'git', 'for-each-ref', '--format=%(upstream)', 'refs/heads/main', 'git', 'for-each-ref', '--format=%(upstream)', 'refs/heads/master',
stdout=asyncio.subprocess.PIPE, stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.DEVNULL) stderr=asyncio.subprocess.DEVNULL)
out, _ = await p.communicate() out, _ = await p.communicate()

View File

@ -34,7 +34,7 @@ class TestCommit:
@pytest.fixture @pytest.fixture
def unnominated_commit(self) -> 'core.Commit': def unnominated_commit(self) -> 'core.Commit':
return core.Commit('abc123', 'sub: A commit', main_sha='45678') return core.Commit('abc123', 'sub: A commit', master_sha='45678')
@pytest.fixture @pytest.fixture
def nominated_commit(self) -> 'core.Commit': def nominated_commit(self) -> 'core.Commit':
@ -48,7 +48,7 @@ class TestCommit:
v = c.to_json() v = c.to_json()
assert v == {'sha': 'abc123', 'description': 'sub: A commit', 'nominated': False, assert v == {'sha': 'abc123', 'description': 'sub: A commit', 'nominated': False,
'nomination_type': None, 'resolution': core.Resolution.UNRESOLVED.value, 'nomination_type': None, 'resolution': core.Resolution.UNRESOLVED.value,
'main_sha': '45678', 'because_sha': None} 'master_sha': '45678', 'because_sha': None}
def test_nominated(self, nominated_commit: 'core.Commit'): def test_nominated(self, nominated_commit: 'core.Commit'):
c = nominated_commit c = nominated_commit
@ -58,7 +58,7 @@ class TestCommit:
'nominated': True, 'nominated': True,
'nomination_type': core.NominationType.CC.value, 'nomination_type': core.NominationType.CC.value,
'resolution': core.Resolution.UNRESOLVED.value, 'resolution': core.Resolution.UNRESOLVED.value,
'main_sha': None, 'master_sha': None,
'because_sha': None} 'because_sha': None}
class TestFromJson: class TestFromJson:

View File

@ -43,8 +43,9 @@ PALETTE = [
class RootWidget(urwid.Frame): class RootWidget(urwid.Frame):
def __init__(self, *args, ui: 'UI', **kwargs): def __init__(self, *args, ui: 'UI' = None, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
assert ui is not None
self.ui = ui self.ui = ui
def keypress(self, size: int, key: str) -> typing.Optional[str]: def keypress(self, size: int, key: str) -> typing.Optional[str]:
@ -66,8 +67,7 @@ class CommitWidget(urwid.Text):
_selectable = True _selectable = True
def __init__(self, ui: 'UI', commit: 'core.Commit'): def __init__(self, ui: 'UI', commit: 'core.Commit'):
reason = commit.nomination_type.name.ljust(6) super().__init__(f'{commit.sha[:10]} {commit.description}')
super().__init__(f'{commit.date()} {reason} {commit.sha[:10]} {commit.description}')
self.ui = ui self.ui = ui
self.commit = commit self.commit = commit
@ -106,8 +106,8 @@ class UI:
"""Main management object. """Main management object.
:previous_commits: A list of commits to main since this branch was created :previous_commits: A list of commits to master since this branch was created
:new_commits: Commits added to main since the last time this script was run :new_commits: Commits added to master since the last time this script was run
""" """
commit_list: typing.List['urwid.Button'] = attr.ib(factory=lambda: urwid.SimpleFocusListWalker([]), init=False) commit_list: typing.List['urwid.Button'] = attr.ib(factory=lambda: urwid.SimpleFocusListWalker([]), init=False)

View File

@ -22,7 +22,6 @@
"""Update the main page, release notes, and calendar.""" """Update the main page, release notes, and calendar."""
import argparse import argparse
import csv
import pathlib import pathlib
import subprocess import subprocess
@ -53,24 +52,30 @@ def update_release_notes(version: str) -> None:
def update_calendar(version: str) -> None: def update_calendar(version: str) -> None:
p = pathlib.Path('docs') / 'release-calendar.csv' p = pathlib.Path('docs') / 'release-calendar.rst'
with p.open('r') as f: with open(p, 'r') as f:
calendar = list(csv.reader(f)) calendar = f.readlines()
branch = None branch = ''
for i, line in enumerate(calendar): skip_line = False
if line[2] == version: new_calendar = []
if line[0]: for line in calendar:
branch = line[0] if version in line:
break branch = line.split('|')[1].strip()
if branch is not None: skip_line = True
calendar[i + 1][0] = branch elif skip_line:
del calendar[i] skip_line = False
elif branch:
# Put the branch number back on the next line
new_calendar.append(line[:2] + branch + line[len(branch) + 2:])
branch = ''
else:
new_calendar.append(line)
with p.open('w') as f: with open(p, 'w') as f:
writer = csv.writer(f) for line in new_calendar:
writer.writerows(calendar) f.write(line)
subprocess.run(['git', 'add', p]) subprocess.run(['git', 'add', p])

View File

@ -19,49 +19,140 @@
# SOFTWARE. # SOFTWARE.
from unittest import mock from unittest import mock
import textwrap
from lxml import html
import pytest import pytest
from . import post_version from . import post_version
# Mock out subprocess.run to avoid having git commits
@mock.patch('bin.post_version.subprocess.run', mock.Mock()) @mock.patch('bin.post_version.subprocess.run', mock.Mock())
class TestUpdateCalendar: class TestUpdateCalendar:
@pytest.fixture(autouse=True) HEAD = textwrap.dedent("""\
def mock_sideffects(self) -> None: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
"""Mock out side effects.""" <html lang="en">
with mock.patch('bin.post_version.subprocess.run', mock.Mock()), \ <head>
mock.patch('bin.post_version.pathlib', mock.MagicMock()): <meta http-equiv="content-type" content="text/html; charset=utf-8">
yield <title>Release Calendar</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
""")
TABLE = textwrap.dedent("""\
<table>
<tr>
<th>Branch</th>
<th>Expected date</th>
<th>Release</th>
<th>Release manager</th>
<th>Notes</th>
</tr>
""")
FOOT = "</body></html>"
TABLE_FOOT = "</table>"
def wrap_table(self, table: str) -> str:
return self.HEAD + self.TABLE + table + self.TABLE_FOOT + self.FOOT
def test_basic(self): def test_basic(self):
data = [ data = self.wrap_table(textwrap.dedent("""\
['20.3', '2021-01-13', '20.3.3', 'Dylan Baker', None], <tr>
[None, '2021-01-27', '20.3.4', 'Dylan Baker', None], <td rowspan="3">19.2</td>
] <td>2019-11-06</td>
<td>19.2.3</td>
<td>Dylan Baker</td>
</tr>
<tr>
<td>2019-11-20</td>
<td>19.2.4</td>
<td>Dylan Baker</td>
</tr>
<tr>
<td>2019-12-04</td>
<td>19.2.5</td>
<td>Dylan Baker</td>
<td>Last planned 19.2.x release</td>
</tr>
"""))
m = mock.Mock() parsed = html.fromstring(data)
with mock.patch('bin.post_version.csv.reader', mock.Mock(return_value=data.copy())), \ parsed.write = mock.Mock()
mock.patch('bin.post_version.csv.writer', mock.Mock(return_value=m)):
post_version.update_calendar('20.3.3')
m.writerows.assert_called_with([data[1]]) with mock.patch('bin.post_version.html.parse',
mock.Mock(return_value=parsed)):
post_version.update_calendar('19.2.3')
def test_two_releases(self): assert len(parsed.findall('.//tr')) == 3
data = [ # we need the second element becouse the first is the header
['20.3', '2021-01-13', '20.3.3', 'Dylan Baker', None],
[None, '2021-01-27', '20.3.4', 'Dylan Baker', None],
['21.0', '2021-01-13', '21.0.0', 'Dylan Baker', None],
[None, '2021-01-13', '21.0.1', 'Dylan Baker', None],
]
m = mock.Mock() tr = parsed.findall('.//tr')[1]
with mock.patch('bin.post_version.csv.reader', mock.Mock(return_value=data.copy())), \ tds = tr.findall('.//td')
mock.patch('bin.post_version.csv.writer', mock.Mock(return_value=m)): assert tds[0].get("rowspan") == "2"
post_version.update_calendar('20.3.3') assert tds[0].text == "19.2"
assert tds[1].text == "2019-11-20"
d = data.copy() @pytest.fixture
del d[0] def two_releases(self) -> html.etree.ElementTree:
d[0][0] = '20.3' data = self.wrap_table(textwrap.dedent("""\
m.writerows.assert_called_with(d) <tr>
<td rowspan="1">19.1</td>
<td>2019-11-06</td>
<td>19.1.8</td>
<td>Not Dylan Baker</td>
</tr>
<tr>
<td rowspan="3">19.2</td>
<td>2019-11-06</td>
<td>19.2.3</td>
<td>Dylan Baker</td>
</tr>
<tr>
<td>2019-11-20</td>
<td>19.2.4</td>
<td>Dylan Baker</td>
</tr>
<tr>
<td>2019-12-04</td>
<td>19.2.5</td>
<td>Dylan Baker</td>
<td>Last planned 19.2.x release</td>
</tr>
"""))
p = html.fromstring(data)
p.write = mock.Mock()
return p
def test_two_releases(self, two_releases: html.etree.ElementTree):
with mock.patch('bin.post_version.html.parse',
mock.Mock(return_value=two_releases)):
post_version.update_calendar('19.2.3')
assert len(two_releases.findall('.//tr')) == 4
# we need the second element becouse the first is the header
tr = two_releases.findall('.//tr')[2]
tds = tr.findall('.//td')
assert tds[0].get("rowspan") == "2"
assert tds[0].text == "19.2"
assert tds[1].text == "2019-11-20"
def test_last_Release(self, two_releases: html.etree.ElementTree):
with mock.patch('bin.post_version.html.parse',
mock.Mock(return_value=two_releases)):
post_version.update_calendar('19.1.8')
assert len(two_releases.findall('.//tr')) == 4
# we need the second element becouse the first is the header
tr = two_releases.findall('.//tr')[1]
tds = tr.findall('.//td')
assert tds[0].get("rowspan") == "3"
assert tds[0].text == "19.2"
assert tds[1].text == "2019-11-06"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python3 #!/usr/bin/env python
import argparse import argparse
import os import os
@ -14,16 +14,11 @@ PLATFORM_SYMBOLS = [
'__cxa_guard_acquire', '__cxa_guard_acquire',
'__cxa_guard_release', '__cxa_guard_release',
'__end__', '__end__',
'__odr_asan._glapi_Context',
'__odr_asan._glapi_Dispatch',
'_bss_end__', '_bss_end__',
'_edata', '_edata',
'_end', '_end',
'_fini', '_fini',
'_init', '_init',
'_fbss',
'_fdata',
'_ftext',
] ]
def get_symbols_nm(nm, lib): def get_symbols_nm(nm, lib):
@ -73,7 +68,7 @@ def get_symbols_dumpbin(dumpbin, lib):
continue continue
symbol_name = fields[3] symbol_name = fields[3]
# De-mangle symbols # De-mangle symbols
if symbol_name[0] == '_' and '@' in symbol_name: if symbol_name[0] == '_':
symbol_name = symbol_name[1:].split('@')[0] symbol_name = symbol_name[1:].split('@')[0]
symbols.append(symbol_name) symbols.append(symbol_name)
return symbols return symbols

View File

@ -8,33 +8,28 @@ if [ ! -e .git ]; then
fi fi
if [ ! -d platform-hardware-libhardware ]; then if [ ! -d platform-hardware-libhardware ]; then
git clone --depth 1 https://android.googlesource.com/platform/frameworks/native platform-frameworks-native
git clone --depth 1 https://android.googlesource.com/platform/hardware/libhardware platform-hardware-libhardware git clone --depth 1 https://android.googlesource.com/platform/hardware/libhardware platform-hardware-libhardware
git clone --depth 1 https://android.googlesource.com/platform/system/core platform-system-core git clone --depth 1 https://android.googlesource.com/platform/system/core platform-system-core
git clone --depth 1 https://android.googlesource.com/platform/system/logging platform-system-logging git clone --depth 1 https://android.googlesource.com/platform/frameworks/native platform-frameworks-native
git clone --depth 1 https://android.googlesource.com/platform/system/unwinding platform-system-unwinding
fi fi
dest=include/android_stub dest=include/android_stub
# Persist the frozen Android N system/window.h for backward compatibility
cp -av ${dest}/system/window.h platform-system-core/libsystem/include/system
rm -rf ${dest} rm -rf ${dest}
mkdir ${dest} mkdir ${dest}
# These directories contains mostly only the files we need, so copy wholesale # These directories contains mostly only the files we need, so copy wholesale
cp -av \ cp -av platform-frameworks-native/libs/nativewindow/include/vndk \
platform-frameworks-native/libs/nativewindow/include/vndk \
platform-frameworks-native/libs/nativebase/include/nativebase \
platform-system-core/libsync/include/ndk \
platform-system-core/libsync/include/sync \ platform-system-core/libsync/include/sync \
platform-system-core/libsync/include/ndk \
platform-system-core/libbacktrace/include/backtrace \
platform-system-core/libsystem/include/system \ platform-system-core/libsystem/include/system \
platform-system-logging/liblog/include/log \ platform-system-core/liblog/include/log \
platform-system-unwinding/libbacktrace/include/backtrace \ platform-frameworks-native/libs/nativewindow/include/apex \
platform-frameworks-native/libs/nativewindow/include/system \
platform-frameworks-native/libs/nativebase/include/nativebase \
${dest} ${dest}
@ -45,16 +40,15 @@ cp -av platform-hardware-libhardware/include/hardware/{hardware,gralloc,gralloc1
cp -av platform-frameworks-native/vulkan/include/hardware/hwvulkan.h ${dest}/hardware cp -av platform-frameworks-native/vulkan/include/hardware/hwvulkan.h ${dest}/hardware
mkdir ${dest}/cutils mkdir ${dest}/cutils
cp -av platform-system-core/libcutils/include/cutils/{compiler,log,native_handle,properties,trace}.h ${dest}/cutils cp -av platform-system-core/libcutils/include/cutils/{log,native_handle,properties}.h ${dest}/cutils
# include/android has files from a few different projects # include/android has files from a few different projects
mkdir ${dest}/android mkdir ${dest}/android
cp -av \ cp -av platform-frameworks-native/libs/nativewindow/include/android/* \
platform-frameworks-native/libs/nativewindow/include/android/* \
platform-frameworks-native/libs/arect/include/android/* \ platform-frameworks-native/libs/arect/include/android/* \
platform-system-core/liblog/include/android/* \
platform-system-core/libsync/include/android/* \ platform-system-core/libsync/include/android/* \
platform-system-logging/liblog/include/android/* \
${dest}/android ${dest}/android

124
mesa 3D driver/common.py Normal file
View File

@ -0,0 +1,124 @@
#######################################################################
# Common SCons code
import os
import os.path
import re
import subprocess
import sys
import platform as _platform
import SCons.Script.SConscript
#######################################################################
# Defaults
host_platform = _platform.system().lower()
if host_platform.startswith('cygwin'):
host_platform = 'cygwin'
# MSYS2 default platform selection.
if host_platform.startswith('mingw'):
host_platform = 'windows'
# Search sys.argv[] for a "platform=foo" argument since we don't have
# an 'env' variable at this point.
if 'platform' in SCons.Script.ARGUMENTS:
target_platform = SCons.Script.ARGUMENTS['platform']
else:
target_platform = host_platform
_machine_map = {
'x86': 'x86',
'i386': 'x86',
'i486': 'x86',
'i586': 'x86',
'i686': 'x86',
'BePC': 'x86',
'Intel': 'x86',
'ppc': 'ppc',
'BeBox': 'ppc',
'BeMac': 'ppc',
'AMD64': 'x86_64',
'x86_64': 'x86_64',
'sparc': 'sparc',
'sun4u': 'sparc',
}
# find host_machine value
if 'PROCESSOR_ARCHITECTURE' in os.environ:
host_machine = os.environ['PROCESSOR_ARCHITECTURE']
else:
host_machine = _platform.machine()
host_machine = _machine_map.get(host_machine, 'generic')
# MSYS2 default machine selection.
if _platform.system().lower().startswith('mingw') and 'MSYSTEM' in os.environ:
if os.environ['MSYSTEM'] == 'MINGW32':
host_machine = 'x86'
if os.environ['MSYSTEM'] == 'MINGW64':
host_machine = 'x86_64'
default_machine = host_machine
default_toolchain = 'default'
# MSYS2 default toolchain selection.
if _platform.system().lower().startswith('mingw'):
default_toolchain = 'mingw'
if target_platform == 'windows' and host_platform != 'windows':
default_machine = 'x86'
default_toolchain = 'crossmingw'
# find default_llvm value
if 'LLVM' in os.environ or 'LLVM_CONFIG' in os.environ:
default_llvm = 'yes'
else:
default_llvm = 'no'
try:
if target_platform != 'windows' and \
subprocess.call(['llvm-config', '--version'],
stdout=subprocess.PIPE) == 0:
default_llvm = 'yes'
except:
pass
#######################################################################
# Common options
def AddOptions(opts):
try:
from SCons.Variables.BoolVariable import BoolVariable as BoolOption
except ImportError:
from SCons.Options.BoolOption import BoolOption
try:
from SCons.Variables.EnumVariable import EnumVariable as EnumOption
except ImportError:
from SCons.Options.EnumOption import EnumOption
opts.Add(EnumOption('build', 'build type', 'debug',
allowed_values=('debug', 'checked', 'profile',
'release')))
opts.Add(BoolOption('verbose', 'verbose output', 'no'))
opts.Add(EnumOption('machine', 'use machine-specific assembly code',
default_machine,
allowed_values=('generic', 'ppc', 'x86', 'x86_64')))
opts.Add(EnumOption('platform', 'target platform', host_platform,
allowed_values=('cygwin', 'darwin', 'freebsd', 'haiku',
'linux', 'sunos', 'windows')))
opts.Add(BoolOption('embedded', 'embedded build', 'no'))
opts.Add(BoolOption('analyze',
'enable static code analysis where available', 'no'))
opts.Add(BoolOption('asan', 'enable Address Sanitizer', 'no'))
opts.Add('toolchain', 'compiler toolchain', default_toolchain)
opts.Add(BoolOption('llvm', 'use LLVM', default_llvm))
opts.Add(BoolOption('force_scons', 'Force enable scons on deprecated platforms', 'false'))
opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)',
'no'))
opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
opts.Add(BoolOption('swr', 'Build OpenSWR', 'no'))
if host_platform == 'windows':
opts.Add('MSVC_VERSION', 'Microsoft Visual C/C++ version')
opts.Add('MSVC_USE_SCRIPT', 'Microsoft Visual C/C++ vcvarsall script', True)

View File

@ -0,0 +1,64 @@
File: docs/README.WIN32
Last updated: 21 June 2013
Quick Start
----- -----
Windows drivers are build with SCons. Makefiles or Visual Studio projects are
no longer shipped or supported.
Run
scons libgl-gdi
to build gallium based GDI driver.
This will work both with MSVS or Mingw.
Windows Drivers
------- -------
At this time, only the gallium GDI driver is known to work.
Source code also exists in the tree for other drivers in
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
-------
After building, you can copy the above DLL files to a place in your
PATH such as $SystemRoot/SYSTEM32. If you don't like putting things
in a system directory, place them in the same directory as the
executable(s). Be careful about accidentially overwriting files of
the same name in the SYSTEM32 directory.
The DLL files are built so that the external entry points use the
stdcall calling convention.
Static LIB files are not built. The LIB files that are built with are
the linker import files associated with the DLL files.
The si-glu sources are used to build the GLU libs. This was done
mainly to get the better tessellator code.
If you have a Windows-related build problem or question, please post
to the mesa-dev or mesa-users list.

View File

@ -11,6 +11,8 @@ GL blocks allocated to Mesa:
0x8BB0-0x8BBF 0x8BB0-0x8BBF
Unused EGL blocks allocated to Mesa: Unused EGL blocks allocated to Mesa:
0x31DC
0x31DE
0x31DF 0x31DF
0x3290-0x329F 0x3290-0x329F
@ -100,8 +102,3 @@ EGL_WL_bind_wayland_display
EGL_TEXTURE_Y_UV_WL 0x31D8 EGL_TEXTURE_Y_UV_WL 0x31D8
EGL_TEXTURE_Y_XUXV_WL 0x31D9 EGL_TEXTURE_Y_XUXV_WL 0x31D9
EGL_WAYLAND_Y_INVERTED_WL 0x31DB EGL_WAYLAND_Y_INVERTED_WL 0x31DB
EGL_MESA_platform_xcb
EGL_PLATFORM_XCB_EXT 0x31DC
EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE

View File

@ -6,8 +6,8 @@ def create_redirect(dst):
tpl = '<html><head><meta http-equiv="refresh" content="0; url={0}"><script>window.location.replace("{0}")</script></head></html>' tpl = '<html><head><meta http-equiv="refresh" content="0; url={0}"><script>window.location.replace("{0}")</script></head></html>'
return tpl.format(dst) return tpl.format(dst)
def create_redirects(app, exception): def create_redirects(app, docname):
if exception is not None or not app.builder.name == 'html': if not app.builder.name == 'html':
return return
for src, dst in app.config.html_redirects: for src, dst in app.config.html_redirects:
path = os.path.join(app.outdir, '{0}.html'.format(src)) path = os.path.join(app.outdir, '{0}.html'.format(src))

View File

@ -2,7 +2,7 @@ Android
======= =======
Mesa hardware drivers can be built for Android one of two ways: built Mesa hardware drivers can be built for Android one of two ways: built
into the Android OS using the Android.mk build system on older versions into the Android OS using the Android.mk build sytem on older versions
of Android, or out-of-tree using the Meson build system and the of Android, or out-of-tree using the Meson build system and the
Android NDK. Android NDK.
@ -20,10 +20,8 @@ Then, create your meson cross file to use it, something like this
[binaries] [binaries]
ar = 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar' ar = 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar'
c = ['ccache', 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang'] c = ['ccache', 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang', '-fuse-ld=lld']
cpp = ['ccache', 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang++', '-fno-exceptions', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables', '-static-libstdc++'] cpp = ['ccache', 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang++', '-fuse-ld=lld', '-fno-exceptions', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables', '-static-libstdc++']
c_ld = 'lld'
cpp_ld = 'lld'
strip = 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip' strip = 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip'
# Android doesn't come with a pkg-config, but we need one for meson to be happy not # Android doesn't come with a pkg-config, but we need one for meson to be happy not
# finding all the optional deps it looks for. Use system pkg-config pointing at a # finding all the optional deps it looks for. Use system pkg-config pointing at a
@ -144,7 +142,7 @@ ARC++, but it should also be possible to build using the NDK as
described above. There are currently rough edges with this, for described above. There are currently rough edges with this, for
example the build will require that you have your arc-libdrm build example the build will require that you have your arc-libdrm build
available to the NDK, assuming you're building anything but the available to the NDK, assuming you're building anything but the
freedreno Vulkan driver for KGSL. You can mostly put things in place freedreno vulkan driver for KGSL. You can mostly put things in place
with: with:
.. code-block:: console .. code-block:: console

View File

@ -1,8 +1,12 @@
Report a Bug Report a Bug
============ ============
The Mesa bug database is hosted on
`freedesktop.org <https://freedesktop.org>`__. The old bug database on
SourceForge is no longer used.
To file a Mesa bug, go to `GitLab on To file a Mesa bug, go to `GitLab on
freedesktop.org <https://gitlab.freedesktop.org/mesa/mesa/-/issues>`__. freedesktop.org <https://gitlab.freedesktop.org/mesa/mesa/-/issues>`__
Please follow these bug reporting guidelines: Please follow these bug reporting guidelines:

View File

@ -13,11 +13,11 @@ Mesa-LAVA software architecture
------------------------------- -------------------------------
The gitlab-runner will run on some host that has access to the LAVA The gitlab-runner will run on some host that has access to the LAVA
lab, with tags like "mesa-ci-x86-64-lava-$DEVICE_TYPE" to control only lab, with tags like "lava-mesa-boardname" to control only taking in
taking in jobs for the hardware that the LAVA lab contains. The jobs for the hardware that the LAVA lab contains. The gitlab-runner
gitlab-runner spawns a Docker container with lavacli in it, and spawns a Docker container with lava-cli in it, and connects to the
connects to the LAVA lab using a predefined token to submit jobs under LAVA lab using a predefined token to submit jobs under a specific
a specific device type. device type.
The LAVA instance manages scheduling those jobs to the boards present. The LAVA instance manages scheduling those jobs to the boards present.
For a job, it will deploy the kernel, device tree, and the ramdisk For a job, it will deploy the kernel, device tree, and the ramdisk
@ -46,10 +46,14 @@ and some public images, and figure out how to get your boards booting.
Once you can boot your board using a custom job definition, it's time Once you can boot your board using a custom job definition, it's time
to connect Mesa CI to it. Install gitlab-runner and register as a to connect Mesa CI to it. Install gitlab-runner and register as a
shared runner (you'll need a GitLab admin for help with this). The shared runner (you'll need a GitLab admin for help with this). The
runner *must* have a tag (like "mesa-ci-x86-64-lava-rk3399-gru-kevin") runner *must* have a tag (like "mesa-lava-db410c") to restrict the
to restrict the jobs it takes or it will grab random jobs from tasks jobs it takes or it will grab random jobs from tasks across fd.o, and
across ``gitlab.freedesktop.org``, and your runner isn't ready for your runner isn't ready for that.
that.
The runner will be running an ARM Docker image (we haven't done any
x86 LAVA yet, so that isn't documented). If your host for the
gitlab-runner is x86, then you'll need to install qemu-user-static and
the binfmt support.
The Docker image will need access to the lava instance. If it's on a The Docker image will need access to the lava instance. If it's on a
public network it should be fine. If you're running the LAVA instance public network it should be fine. If you're running the LAVA instance
@ -78,5 +82,5 @@ GitLab CI yml, but this way the current method of connecting to the
LAVA instance is separated from the Mesa branches (particularly LAVA instance is separated from the Mesa branches (particularly
relevant as we have many stable branches all using CI). relevant as we have many stable branches all using CI).
Now it's time to define your test jobs in the driver-specific Now it's time to define your test runner in
gitlab-ci.yml file, using the device-specific tags. ``.gitlab-ci/lava-gitlab-ci.yml``.

View File

@ -42,8 +42,8 @@ at /tftp in the container.
Since we're going the TFTP route, we also use NFS root. This avoids Since we're going the TFTP route, we also use NFS root. This avoids
packing the rootfs and sending it to the board as a ramdisk, which packing the rootfs and sending it to the board as a ramdisk, which
means we can support larger rootfses (for piglit testing), at the cost means we can support larger rootfses (for piglit or tracie testing),
of needing more storage on the runner. at the cost of needing more storage on the runner.
Telling the board about where its TFTP and NFS should come from is Telling the board about where its TFTP and NFS should come from is
done using dnsmasq on the runner host. For example, this snippet in done using dnsmasq on the runner host. For example, this snippet in
@ -71,8 +71,8 @@ call "servo"::
Setup Setup
----- -----
Each board will be registered in freedesktop.org GitLab. You'll want Each board will be registered in fd.o GitLab. You'll want something
something like this to register a fastboot board: like this to register a fastboot board:
.. code-block:: console .. code-block:: console
@ -91,8 +91,8 @@ something like this to register a fastboot board:
For a servo board, you'll need to also volume mount the board's NFS For a servo board, you'll need to also volume mount the board's NFS
root dir at /nfs and TFTP kernel directory at /tftp. root dir at /nfs and TFTP kernel directory at /tftp.
The registration token has to come from a freedesktop.org GitLab admin The registration token has to come from a fd.o GitLab admin going to
going to https://gitlab.freedesktop.org/admin/runners https://gitlab.freedesktop.org/admin/runners
The name scheme for Google's lab is google-freedreno-boardname-n, and The name scheme for Google's lab is google-freedreno-boardname-n, and
our tag is something like google-freedreno-db410c. The tag is what our tag is something like google-freedreno-db410c. The tag is what
@ -116,50 +116,12 @@ required by your bare-metal script, something like::
[[runners]] [[runners]]
name = "google-freedreno-db410c-1" name = "google-freedreno-db410c-1"
environment = ["BM_SERIAL=/dev/ttyDB410c8", "BM_POWERUP=google-power-up.sh 8", "BM_FASTBOOT_SERIAL=15e9e390", "FDO_CI_CONCURRENT=4"] environment = ["BM_SERIAL=/dev/ttyDB410c8", "BM_POWERUP=google-power-up.sh 8", "BM_FASTBOOT_SERIAL=15e9e390"]
The ``FDO_CI_CONCURRENT`` variable should be set to the number of CPU threads on If you want to collect the results for fastboot you need to add the following
the board, which is used for auto-tuning of job parallelism. two board-specific environment variables ``BM_WEBDAV_IP`` and ``BM_WEBDAV_PORT``.
These represent the IP address of the Docker host and the board specific port number
that gets used to start a nginx server.
Once you've updated your runners' configs, restart with ``sudo service Once you've updated your runners' configs, restart with ``sudo service
gitlab-runner restart`` gitlab-runner restart``
Caching downloads
-----------------
To improve the runtime for downloading traces during traces job runs, you will
want a pass-through HTTP cache. On your runner box, install nginx:
.. code-block:: console
sudo apt install nginx libnginx-mod-http-lua
Add the server setup files:
.. literalinclude: fdo-cache:
:name: /etc/nginx/sites-available/fdo-cache
.. literalinclude: uri-caching.conf:
:name: /etc/nginx/sites-available/snippets/uri-caching.conf
Edit the listener addresses in fdo-cache to suit the ethernet interface that
your devices are on.
Enable the site and restart nginx:
.. code-block:: console
sudo ln -s /etc/nginx/sites-available/fdo-cache /etc/nginx/sites-enabled/fdo-cache
sudo service nginx restart
# First download will hit the internet
wget http://localhost/cache/?uri=https://minio-packet.freedesktop.org/mesa-tracie-public/itoral-gl-terrain-demo/demo.trace
# Second download should be cached.
wget http://localhost/cache/?uri=https://minio-packet.freedesktop.org/mesa-tracie-public/itoral-gl-terrain-demo/demo.trace
Now, set ``download-url`` in your ``traces-*.yml`` entry to something like
``http://10.42.0.1:8888/cache/?uri=https://minio-packet.freedesktop.org/mesa-tracie-public``
and you should have cached downloads for traces. Add it to
``FDO_HTTP_CACHE_URI=`` in your ``config.toml`` runner environment lines and you
can use it for cached artifact downloads instead of going all the way to
freedesktop.org on each job.

View File

@ -8,9 +8,10 @@ VK-GL-CTS, on the shared GitLab runners provided by `freedesktop
Software architecture Software architecture
--------------------- ---------------------
The Docker containers are rebuilt using the shell scripts under The Docker containers are rebuilt from the debian-install.sh script
.gitlab-ci/container/ when the FDO\_DISTRIBUTION\_TAG changes in when DEBIAN\_TAG is changed in .gitlab-ci.yml, and
.gitlab-ci.yml. The resulting images are around 1 GB, and are debian-test-install.sh when DEBIAN\_ARM64\_TAG is changed in
.gitlab-ci.yml. The resulting images are around 500MB, and are
expected to change approximately weekly (though an individual expected to change approximately weekly (though an individual
developer working on them may produce many more images while trying to developer working on them may produce many more images while trying to
come up with a working MR!). come up with a working MR!).

View File

@ -6,7 +6,7 @@ GitLab CI
GitLab provides a convenient framework for running commands in response to Git pushes. GitLab provides a convenient framework for running commands in response to Git pushes.
We use it to test merge requests (MRs) before merging them (pre-merge testing), We use it to test merge requests (MRs) before merging them (pre-merge testing),
as well as post-merge testing, for everything that hits ``main`` as well as post-merge testing, for everything that hits ``master``
(this is necessary because we still allow commits to be pushed outside of MRs, (this is necessary because we still allow commits to be pushed outside of MRs,
and even then the MR CI runs in the forked repository, which might have been and even then the MR CI runs in the forked repository, which might have been
modified and thus is unreliable). modified and thus is unreliable).
@ -14,7 +14,7 @@ modified and thus is unreliable).
The CI runs a number of tests, from trivial build-testing to complex GPU rendering: The CI runs a number of tests, from trivial build-testing to complex GPU rendering:
- Build testing for a number of build systems, configurations and platforms - Build testing for a number of build systems, configurations and platforms
- Sanity checks (``meson test``) - Sanity checks (``meson test`` & ``scons check``)
- Some drivers (softpipe, llvmpipe, freedreno and panfrost) are also tested - Some drivers (softpipe, llvmpipe, freedreno and panfrost) are also tested
using `VK-GL-CTS <https://github.com/KhronosGroup/VK-GL-CTS>`__ using `VK-GL-CTS <https://github.com/KhronosGroup/VK-GL-CTS>`__
- Replay of application traces - Replay of application traces
@ -37,7 +37,7 @@ empty (or set to the default ``.gitlab-ci.yml``), and that the
"Public pipelines" box is checked. "Public pipelines" box is checked.
If you're having issues with the GitLab CI, your best bet is to ask If you're having issues with the GitLab CI, your best bet is to ask
about it on ``#freedesktop`` on OFTC and tag `Daniel Stone about it on ``#freedesktop`` on Freenode and tag `Daniel Stone
<https://gitlab.freedesktop.org/daniels>`__ (``daniels`` on IRC) or <https://gitlab.freedesktop.org/daniels>`__ (``daniels`` on IRC) or
`Eric Anholt <https://gitlab.freedesktop.org/anholt>`__ (``anholt`` on `Eric Anholt <https://gitlab.freedesktop.org/anholt>`__ (``anholt`` on
IRC). IRC).
@ -52,41 +52,6 @@ The three GitLab CI systems currently integrated are:
LAVA LAVA
docker docker
Application traces replay
-------------------------
The CI replays application traces with various drivers in two different jobs. The first
job replays traces listed in ``src/<driver>/ci/traces-<driver>.yml`` files and if any
of those traces fail the pipeline fails as well. The second job replays traces listed in
``src/<driver>/ci/restricted-traces-<driver>.yml`` and it is allowed to fail. This second
job is only created when the pipeline is triggered by `marge-bot` or any other user that
has been granted access to these traces.
A traces YAML file also includes a ``download-url`` pointing to a MinIO
instance where to download the traces from. While the first job should always work with
publicly accessible traces, the second job could point to an url with restricted access.
Restricted traces are those that have been made available to Mesa developers without a
license to redistribute at will, and thus should not be exposed to the public. Failing to
access that URL would not prevent the pipeline to pass, therefore forks made by
contributors without permissions to download non-redistributable traces can be merged
without friction.
As an aside, only maintainers of such non-redistributable traces are responsible for
ensuring that replays are successful, since other contributors would not be able to
download and test them by themselves.
Those Mesa contributors that believe they could have permission to access such
non-redistributable traces can request permission to Daniel Stone <daniels@collabora.com>.
gitlab.freedesktop.org accounts that are to be granted access to these traces will be
added to the OPA policy for the MinIO repository as per
https://gitlab.freedesktop.org/freedesktop/helm-gitlab-config/-/commit/a3cd632743019f68ac8a829267deb262d9670958 .
So the jobs are created in personal repositories, the name of the user's account needs
to be added to the rules attribute of the Gitlab CI job that accesses the restricted
accounts.
Intel CI Intel CI
-------- --------
@ -114,8 +79,10 @@ and a few other tools.
A typical run takes between 30 minutes and an hour. A typical run takes between 30 minutes and an hour.
If you're having issues with the Intel CI, your best bet is to ask about If you're having issues with the Intel CI, your best bet is to ask about
it on ``#dri-devel`` on OFTC and tag `Nico Cortes it on ``#dri-devel`` on Freenode and tag `Clayton Craft
<https://gitlab.freedesktop.org/ngcortes>`__ (``ngcortes`` on IRC). <https://gitlab.freedesktop.org/craftyguy>`__ (``craftyguy`` on IRC) or
`Nico Cortes <https://gitlab.freedesktop.org/ngcortes>`__ (``ngcortes``
on IRC).
.. _CI-farm-expectations: .. _CI-farm-expectations:
@ -135,16 +102,17 @@ pipeline backing up. As a result, we require that the test farm be
able to handle a whole pipeline's worth of jobs in less than 15 minutes able to handle a whole pipeline's worth of jobs in less than 15 minutes
(to compare, the build stage is about 10 minutes). (to compare, the build stage is about 10 minutes).
If a test farm is short the HW to provide these guarantees, consider dropping If a test farm is short the HW to provide these guarantees, consider
tests to reduce runtime. dEQP job logs print the slowest tests at the end of dropping tests to reduce runtime.
the run, and piglit logs the runtime of tests in the results.json.bz2 in the ``VK-GL-CTS/scripts/log/bottleneck_report.py`` can help you find what
artifacts. Or, you can add the following to your job to only run some fraction tests were slow in a ``results.qpa`` file. Or, you can have a job with
(in this case, 1/10th) of the deqp tests. no ``parallel`` field set and:
.. code-block:: yaml .. code-block:: yaml
variables: variables:
DEQP_FRACTION: 10 CI_NODE_INDEX: 1
CI_NODE_TOTAL: 10
to just run 1/10th of the test list. to just run 1/10th of the test list.
@ -193,10 +161,10 @@ apt cache, and other such common pitfalls of building Docker images).
When running a container job, the templates will look for an existing When running a container job, the templates will look for an existing
build of that image in the container registry under build of that image in the container registry under
``MESA_IMAGE_TAG``. If it's found it will be reused, and if ``FDO_DISTRIBUTION_TAG``. If it's found it will be reused, and if
not, the associated `.gitlab-ci/containers/<jobname>.sh`` will be run not, the associated `.gitlab-ci/containers/<jobname>.sh`` will be run
to build it. So, when developing any change to container build to build it. So, when developing any change to container build
scripts, you need to update the associated ``MESA_IMAGE_TAG`` to scripts, you need to update the associated ``FDO_DISTRIBUTION_TAG`` to
a new unique string. We recommend using the current date plus some a new unique string. We recommend using the current date plus some
string related to your branch (so that if you rebase on someone else's string related to your branch (so that if you rebase on someone else's
container update from the same day, you will get a Git conflict container update from the same day, you will get a Git conflict
@ -208,7 +176,7 @@ branch, which can get tedious. Instead, you can navigate to the
`container registry `container registry
<https://gitlab.freedesktop.org/mesa/mesa/container_registry>`_ for <https://gitlab.freedesktop.org/mesa/mesa/container_registry>`_ for
your repository and delete the tag to force a rebuild. When your code your repository and delete the tag to force a rebuild. When your code
is eventually merged to main, a full image rebuild will occur again is eventually merged to master, a full image rebuild will occur again
(forks inherit images from the main repo, but MRs don't propagate (forks inherit images from the main repo, but MRs don't propagate
images from the fork into the main repo's registry). images from the fork into the main repo's registry).

View File

@ -101,21 +101,13 @@ Basic formatting guidelines
- Function names follow various conventions depending on the type of - Function names follow various conventions depending on the type of
function: function:
+---------------------+------------------------------------------+ ::
| Convention | Explanation |
+=====================+==========================================+ glFooBar() - a public GL entry point (in glapi_dispatch.c)
| ``glFooBar()`` | a public GL entry point (in | _mesa_FooBar() - the internal immediate mode function
| | :file:`glapi_dispatch.c`) | save_FooBar() - retained mode (display list) function in dlist.c
+---------------------+------------------------------------------+ foo_bar() - a static (private) function
| ``_mesa_FooBar()`` | the internal immediate mode function | _mesa_foo_bar() - an internal non-static Mesa function
+---------------------+------------------------------------------+
| ``save_FooBar()`` | retained mode (display list) function in |
| | :file:`dlist.c` |
+---------------------+------------------------------------------+
| ``foo_bar()`` | a static (private) function |
+---------------------+------------------------------------------+
| ``_mesa_foo_bar()`` | an internal non-static Mesa function |
+---------------------+------------------------------------------+
- Constants, macros and enum names are ``ALL_UPPERCASE``, with \_ - Constants, macros and enum names are ``ALL_UPPERCASE``, with \_
between words. between words.

View File

@ -38,7 +38,7 @@ sys.path.append(os.path.abspath('_exts'))
# Add any Sphinx extension module names here, as strings. They can be # Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones. # ones.
extensions = ['sphinx.ext.graphviz', 'breathe', 'formatting', 'nir', 'redirects'] extensions = ['sphinx.ext.graphviz', 'formatting', 'redirects']
# Add any paths that contain templates here, relative to this directory. # Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates'] templates_path = ['_templates']
@ -79,7 +79,7 @@ language = None
# List of patterns, relative to source directory, that match files and # List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files. # directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path # This patterns also effect to html_static_path and html_extra_path
exclude_patterns = [] exclude_patterns = [ "contents.rst" ]
# The name of the Pygments (syntax highlighting) style to use. # The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx' pygments_style = 'sphinx'
@ -114,7 +114,7 @@ html_context = {
'gitlab_host': 'gitlab.freedesktop.org', 'gitlab_host': 'gitlab.freedesktop.org',
'gitlab_user': 'mesa', 'gitlab_user': 'mesa',
'gitlab_repo': 'mesa', 'gitlab_repo': 'mesa',
'gitlab_version': 'main', 'gitlab_version': 'master',
'conf_py_path': '/docs/', 'conf_py_path': '/docs/',
} }
@ -132,10 +132,10 @@ html_extra_path = [
'libGL.txt', 'libGL.txt',
'README.UVD', 'README.UVD',
'README.VCE', 'README.VCE',
'README.WIN32',
] ]
html_redirects = [ html_redirects = [
('drivers/vmware-guest', 'drivers/svga3d.html'),
('gallium/drivers/freedreno', 'drivers/freedreno.html'), ('gallium/drivers/freedreno', 'drivers/freedreno.html'),
('gallium/drivers/freedreno/ir3-notes', 'drivers/freedreno/ir3-notes.html'), ('gallium/drivers/freedreno/ir3-notes', 'drivers/freedreno/ir3-notes.html'),
('gallium/drivers/llvmpipe', 'drivers/llvmpipe.html'), ('gallium/drivers/llvmpipe', 'drivers/llvmpipe.html'),
@ -147,7 +147,6 @@ html_redirects = [
('gallium/drivers/zink', 'drivers/zink.html'), ('gallium/drivers/zink', 'drivers/zink.html'),
('llvmpipe', 'drivers/llvmpipe.html'), ('llvmpipe', 'drivers/llvmpipe.html'),
('postprocess', 'gallium/postprocess.html'), ('postprocess', 'gallium/postprocess.html'),
('versions', 'relnotes.html'),
('vmware-guest', 'drivers/vmware-guest.html'), ('vmware-guest', 'drivers/vmware-guest.html'),
('webmaster', 'https://www.mesa3d.org/website/'), ('webmaster', 'https://www.mesa3d.org/website/'),
] ]
@ -212,11 +211,3 @@ texinfo_documents = [
# -- Options for Graphviz ------------------------------------------------- # -- Options for Graphviz -------------------------------------------------
graphviz_output_format = 'svg' graphviz_output_format = 'svg'
# -- Options for breathe --------------------------------------------------
breathe_projects = {
'mesa' : 'doxygen_xml',
}
breathe_default_project = 'mesa'
breathe_show_define_initializer = True
breathe_show_enumvalue_initializer = True

View File

@ -4,7 +4,7 @@ Conformance Testing
Mesa as a project does not get certified conformant by Khronos for the Mesa as a project does not get certified conformant by Khronos for the
APIs it implements. Rather, individual driver teams run the APIs it implements. Rather, individual driver teams run the
conformance tests and submit their results on a set of hardware on a conformance tests and submit their results on a set of hardware on a
particular operating system. The canonical list is at Khronos' list particular operating system. The canonical list is at Khronos's list
of `conformant of `conformant
products <https://www.khronos.org/conformance/adopters/conformant-products/>`_ products <https://www.khronos.org/conformance/adopters/conformant-products/>`_
and you can find some reports there by searching for "Mesa", and you can find some reports there by searching for "Mesa",

View File

@ -0,0 +1,103 @@
.. toctree::
:maxdepth: 1
:caption: Documentation
:hidden:
self
developers
systems
license
faq
relnotes
thanks
.. toctree::
:maxdepth: 2
:caption: Download and Install
:hidden:
download
install
precompiled
.. toctree::
:maxdepth: 1
:caption: Need help?
:hidden:
lists
bugs
.. toctree::
:maxdepth: 1
:caption: User Topics
:hidden:
shading
egl
opengles
envvars
osmesa
debugging
perf
extensions
application-issues
viewperf
xlibdriver
.. toctree::
:maxdepth: 1
:caption: Drivers
:hidden:
drivers/freedreno
drivers/llvmpipe
drivers/openswr
drivers/v3d
drivers/vc4
drivers/vmware-guest
drivers/zink
.. toctree::
:maxdepth: 1
:caption: Developer Topics
:hidden:
repository
sourcetree
utilities
helpwanted
devinfo
codingstyle
submittingpatches
releasing
release-calendar
sourcedocs
dispatch
gallium/index
android
Linux Kernel Drivers <https://www.kernel.org/doc/html/latest/gpu/>
.. toctree::
:maxdepth: 1
:caption: Testing
:hidden:
conform
ci/index
.. toctree::
:maxdepth: 1
:caption: Links
:hidden:
OpenGL Website <https://www.opengl.org>
DRI Website <https://dri.freedesktop.org>
Developer Blogs <https://planet.freedesktop.org>
.. toctree::
:maxdepth: 1
:caption: Hosted by:
:hidden:
freedesktop.org <https://www.freedesktop.org>

View File

@ -8,7 +8,7 @@ with debugging. If ``MESA_DEBUG`` is defined, a message will be printed
to stdout whenever an error occurs. to stdout whenever an error occurs.
More extensive error checking is done in DEBUG builds More extensive error checking is done in DEBUG builds
(``--buildtype debug`` for Meson). (``--buildtype debug`` for Meson, ``build=debug`` for SCons).
In your debugger you can set a breakpoint in ``_mesa_error()`` to trap In your debugger you can set a breakpoint in ``_mesa_error()`` to trap
Mesa errors. Mesa errors.

View File

@ -51,7 +51,7 @@ of the context current in the thread, and the second pointer stores the
address of the *dispatch table* associated with that context. The address of the *dispatch table* associated with that context. The
dispatch table stores pointers to functions that actually implement dispatch table stores pointers to functions that actually implement
specific GL functions. Each time a new context is made current in a specific GL functions. Each time a new context is made current in a
thread, these pointers are updated. thread, these pointers a updated.
The implementation of functions such as ``glVertex3fv`` becomes The implementation of functions such as ``glVertex3fv`` becomes
conceptually simple: conceptually simple:
@ -152,16 +152,10 @@ Use of this path is controlled by the preprocessor define
``USE_ELF_TLS``. Any platform capable of using ELF TLS should use this ``USE_ELF_TLS``. Any platform capable of using ELF TLS should use this
as the default dispatch method. as the default dispatch method.
Windows has a similar concept, and beginning with Windows Vista, shared
libraries can take advantage of compiler-assisted TLS. This TLS data
has no fixed size and does not compete with API-based TLS (``TlsAlloc``)
for the limited number of slots available there, and so ``USE_ELF_TLS`` can
be used on Windows too, even though it's not truly ELF.
3.3. Assembly Language Dispatch Stubs 3.3. Assembly Language Dispatch Stubs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Many platforms have difficulty properly optimizing the tail-call in the Many platforms has difficulty properly optimizing the tail-call in the
dispatch stubs. Platforms like x86 that pass parameters on the stack dispatch stubs. Platforms like x86 that pass parameters on the stack
seem to have even more difficulty optimizing these routines. All of the seem to have even more difficulty optimizing these routines. All of the
dispatch routines are very short, and it is trivial to create optimal dispatch routines are very short, and it is trivial to create optimal

View File

@ -7,6 +7,3 @@ Freedreno driver specific docs.
:glob: :glob:
freedreno/* freedreno/*
See the `Freedreno Wiki <https://github.com/freedreno/freedreno/wiki>`__
for more details.

View File

@ -3,7 +3,7 @@ IR3 NOTES
Some notes about ir3, the compiler and machine-specific IR for the shader ISA introduced with adreno a3xx. The same shader ISA is present, with some small differences, in adreno a4xx. Some notes about ir3, the compiler and machine-specific IR for the shader ISA introduced with adreno a3xx. The same shader ISA is present, with some small differences, in adreno a4xx.
Compared to the previous generation a2xx ISA (ir2), the a3xx ISA is a "simple" scalar instruction set. However, the compiler is responsible, in most cases, to schedule the instructions. The hardware does not try to hide the shader core pipeline stages. For a common example, a common (cat2) ALU instruction takes four cycles, so a subsequent cat2 instruction which uses the result must have three intervening instructions (or NOPs). When operating on vec4's, typically the corresponding scalar instructions for operating on the remaining three components could typically fit. Although that results in a lot of edge cases where things fall over, like: Compared to the previous generation a2xx ISA (ir2), the a3xx ISA is a "simple" scalar instruction set. However, the compiler is responsible, in most cases, to schedule the instructions. The hardware does not try to hide the shader core pipeline stages. For a common example, a common (cat2) ALU instruction takes four cycles, so a subsequent cat2 instruction which uses the result must have three intervening instructions (or nops). When operating on vec4's, typically the corresponding scalar instructions for operating on the remaining three components could typically fit. Although that results in a lot of edge cases where things fall over, like:
:: ::
@ -26,7 +26,7 @@ External Structure
which are generated on demand based on the shader key. which are generated on demand based on the shader key.
``ir3_shader_key`` ``ir3_shader_key``
The configuration key that identifies a shader variant. I.e. based The configuration key that identifies a shader variant. Ie. based
on other GL state (two-sided-color, render-to-alpha, etc) or render on other GL state (two-sided-color, render-to-alpha, etc) or render
stages (binning-pass vertex shader) different shader variants are stages (binning-pass vertex shader) different shader variants are
generated. generated.
@ -163,14 +163,14 @@ Meta Instructions
**phi** **phi**
TODO TODO
**collect** **fanin**
Groups registers which need to be assigned to consecutive scalar Groups registers which need to be assigned to consecutive scalar
registers, for example `sam` (texture fetch) src instructions (see registers, for example `sam` (texture fetch) src instructions (see
`register groups`_) or array element dereference `register groups`_) or array element dereference
(see `relative addressing`_). (see `relative addressing`_).
**split** **fanout**
The counterpart to **collect**, when an instruction such as `sam` The counterpart to **fanin**, when an instruction such as `sam`
writes multiple components, splits the result into individual writes multiple components, splits the result into individual
scalar components to be consumed by other instructions. scalar components to be consumed by other instructions.
@ -202,22 +202,22 @@ Before register assignment, to group the two components of the texture src toget
digraph G { digraph G {
{ rank=same; { rank=same;
collect; fanin;
}; };
{ rank=same; { rank=same;
coord_x; coord_x;
coord_y; coord_y;
}; };
sam -> collect [label="regs[1]"]; sam -> fanin [label="regs[1]"];
collect -> coord_x [label="regs[1]"]; fanin -> coord_x [label="regs[1]"];
collect -> coord_y [label="regs[2]"]; fanin -> coord_y [label="regs[2]"];
coord_x -> coord_y [label="right",style=dotted]; coord_x -> coord_y [label="right",style=dotted];
coord_y -> coord_x [label="left",style=dotted]; coord_y -> coord_x [label="left",style=dotted];
coord_x [label="coord.x"]; coord_x [label="coord.x"];
coord_y [label="coord.y"]; coord_y [label="coord.y"];
} }
The frontend sets up the SSA ptrs from ``sam`` source register to the ``collect`` meta instruction, which in turn points to the instructions producing the ``coord.x`` and ``coord.y`` values. And the grouping_ pass sets up the ``left`` and ``right`` neighbor pointers to the ``collect``\'s sources, used later by the `register assignment`_ pass to assign blocks of scalar registers. The frontend sets up the SSA ptrs from ``sam`` source register to the ``fanin`` meta instruction, which in turn points to the instructions producing the ``coord.x`` and ``coord.y`` values. And the grouping_ pass sets up the ``left`` and ``right`` neighbor pointers to the ``fanin``\'s sources, used later by the `register assignment`_ pass to assign blocks of scalar registers.
And likewise, for the consecutive scalar registers for the destination: And likewise, for the consecutive scalar registers for the destination:
@ -230,23 +230,23 @@ And likewise, for the consecutive scalar registers for the destination:
C; C;
}; };
{ rank=same; { rank=same;
split_0; fanout_0;
split_1; fanout_1;
split_2; fanout_2;
}; };
A -> split_0; A -> fanout_0;
B -> split_1; B -> fanout_1;
C -> split_2; C -> fanout_2;
split_0 [label="split\noff=0"]; fanout_0 [label="fanout\noff=0"];
split_0 -> sam; fanout_0 -> sam;
split_1 [label="split\noff=1"]; fanout_1 [label="fanout\noff=1"];
split_1 -> sam; fanout_1 -> sam;
split_2 [label="split\noff=2"]; fanout_2 [label="fanout\noff=2"];
split_2 -> sam; fanout_2 -> sam;
split_0 -> split_1 [label="right",style=dotted]; fanout_0 -> fanout_1 [label="right",style=dotted];
split_1 -> split_0 [label="left",style=dotted]; fanout_1 -> fanout_0 [label="left",style=dotted];
split_1 -> split_2 [label="right",style=dotted]; fanout_1 -> fanout_2 [label="right",style=dotted];
split_2 -> split_1 [label="left",style=dotted]; fanout_2 -> fanout_1 [label="left",style=dotted];
sam; sam;
} }
@ -260,7 +260,7 @@ Most instructions support addressing indirectly (relative to address register) i
Note that cat5 (texture sample) instructions are the notable exception, not Note that cat5 (texture sample) instructions are the notable exception, not
supporting relative addressing of src or dst. supporting relative addressing of src or dst.
Relative addressing of the const file (for example, a uniform array) is relatively simple. We don't do register assignment of the const file, so all that is required is to schedule things properly. I.e. the instruction that writes the address register must be scheduled first, and we cannot have two different address register values live at one time. Relative addressing of the const file (for example, a uniform array) is relatively simple. We don't do register assignment of the const file, so all that is required is to schedule things properly. Ie. the instruction that writes the address register must be scheduled first, and we cannot have two different address register values live at one time.
But relative addressing of gpr file (which can be as src or dst) has additional restrictions on register assignment (i.e. the array elements must be assigned to consecutive scalar registers). And in the case of relative dst, subsequent instructions now depend on both the relative write, as well as the previous instruction which wrote that register, since we do not know at compile time which actual register was written. But relative addressing of gpr file (which can be as src or dst) has additional restrictions on register assignment (i.e. the array elements must be assigned to consecutive scalar registers). And in the case of relative dst, subsequent instructions now depend on both the relative write, as well as the previous instruction which wrote that register, since we do not know at compile time which actual register was written.
@ -292,52 +292,81 @@ results in:
The scheduling pass has some smarts to schedule things such that only a single ``a0.x`` value is used at any one time. The scheduling pass has some smarts to schedule things such that only a single ``a0.x`` value is used at any one time.
To implement variable arrays, the NIR registers are stored as an ``ir3_array``, To implement variable arrays, values are stored in consecutive scalar registers. This has some overlap with `register groups`_, in that ``fanin`` and ``fanout`` are used to help group things for the `register assignment`_ pass.
which will be register allocated to consecutive hardware registers. The array
access uses the id field in the ``ir3_register`` to map to the array being To use a variable array as a src register, a slight variation of what is done for const array src. The instruction src is a `fanin` instruction that groups all the array members:
accessed, and the offset field for the fixed offset within the array. A NIR
indirect register read such as:
:: ::
decl_reg vec2 32 r0[2] mova a0.x, hr1.y
... sub r1.y, r2.x, r3.x
vec2 32 ssa_19 = mov r0[0 + ssa_9] add r0.x, r1.y, r<a0.x + 2>
results in: results in:
:: .. graphviz::
0000:0000:001: shl.b hssa_19, hssa_17, himm[0.000000,1,0x1] digraph {
0000:0000:002: mov.s16s16 hr61.x, hssa_19 a0 [label="r0.z"];
0000:0000:002: mov.u32u32 ssa_21, arr[id=1, offset=0, size=4, ssa_12], address=_[0000:0000:002: mov.s16s16] a1 [label="r0.w"];
0000:0000:002: mov.u32u32 ssa_22, arr[id=1, offset=1, size=4, ssa_12], address=_[0000:0000:002: mov.s16s16] a2 [label="r1.x"];
a3 [label="r1.y"];
sub;
fanin;
mova;
add;
add -> sub;
add -> fanin [label="off=2"];
add -> mova;
fanin -> a0;
fanin -> a1;
fanin -> a2;
fanin -> a3;
}
TODO better describe how actual deref offset is derived, i.e. based on array base register.
Array writes write to the array in ``instr->regs[0]->array.id``. A NIR indirect To do an indirect write to a variable array, a ``fanout`` is used. Say the array was assigned to registers ``r0.z`` through ``r1.y`` (hence the constant offset of 2):
register write such as:
Note that only cat1 (mov) can do indirect write.
:: ::
decl_reg vec2 32 r0[2] mova a0.x, hr1.y
... min r2.x, r2.x, c0.x
r0[0 + ssa_12] = mov ssa_13 mov r<a0.x + 2>, r2.x
mul r0.x, r0.z, c0.z
results in:
:: In this case, the ``mov`` instruction does not write all elements of the array (compared to usage of ``fanout`` for ``sam`` instructions in grouping_). But the ``mov`` instruction does need an additional dependency (via ``fanin``) on instructions that last wrote the array element members, to ensure that they get scheduled before the ``mov`` in scheduling_ stage (which also serves to group the array elements for the `register assignment`_ stage).
0000:0000:001: shl.b hssa_29, hssa_27, himm[0.000000,1,0x1] .. graphviz::
0000:0000:002: mov.s16s16 hr61.x, hssa_29
0000:0000:001: mov.u32u32 arr[id=1, offset=0, size=4, ssa_17], c2.y, address=_[0000:0000:002: mov.s16s16] digraph {
0000:0000:004: mov.u32u32 arr[id=1, offset=1, size=4, ssa_31], c2.z, address=_[0000:0000:002: mov.s16s16] a0 [label="r0.z"];
a1 [label="r0.w"];
a2 [label="r1.x"];
a3 [label="r1.y"];
min;
mova;
mov;
mul;
fanout [label="fanout\noff=0"];
mul -> fanout;
fanout -> mov;
fanin;
fanin -> a0;
fanin -> a1;
fanin -> a2;
fanin -> a3;
mov -> min;
mov -> mova;
mov -> fanin;
}
Note that there would in fact be ``fanout`` nodes generated for each array element (although only the reachable ones will be scheduled, etc).
Note that only cat1 (mov) can do indirect write, and thus NIR register stores
may need to introduce an extra mov.
ir3 array accesses in the DAG get serialized by the ``instr->barrier_class`` and
containing ``IR3_BARRIER_ARRAY_W`` or ``IR3_BARRIER_ARRAY_R``.
Shader Passes Shader Passes
------------- -------------
@ -372,7 +401,7 @@ The eventual plan is to invert that, with the front-end inserting no ``mov``\s a
Grouping Grouping
~~~~~~~~ ~~~~~~~~
In the grouping pass, instructions which need to be grouped (for ``collect``\s, etc) have their ``left`` / ``right`` neighbor pointers setup. In cases where there is a conflict (i.e. one instruction cannot have two unique left or right neighbors), an additional ``mov`` instruction is inserted. This ensures that there is some possible valid `register assignment`_ at the later stages. In the grouping pass, instructions which need to be grouped (for ``fanin``\s, etc) have their ``left`` / ``right`` neighbor pointers setup. In cases where there is a conflict (i.e. one instruction cannot have two unique left or right neighbors), an additional ``mov`` instruction is inserted. This ensures that there is some possible valid `register assignment`_ at the later stages.
.. _depth: .. _depth:
@ -380,7 +409,7 @@ In the grouping pass, instructions which need to be grouped (for ``collect``\s,
Depth Depth
~~~~~ ~~~~~
In the depth pass, a depth is calculated for each instruction node within its basic block. The depth is the sum of the required cycles (delay slots needed between two instructions plus one) of each instruction plus the max depth of any of its source instructions. (meta_ instructions don't add to the depth). As an instruction's depth is calculated, it is inserted into a per block list sorted by deepest instruction. Unreachable instructions and inputs are marked. In the depth pass, a depth is calculated for each instruction node within it's basic block. The depth is the sum of the required cycles (delay slots needed between two instructions plus one) of each instruction plus the max depth of any of it's source instructions. (meta_ instructions don't add to the depth). As an instruction's depth is calculated, it is inserted into a per block list sorted by deepest instruction. Unreachable instructions and inputs are marked.
TODO: we should probably calculate both hard and soft depths (?) to TODO: we should probably calculate both hard and soft depths (?) to
try to coax additional instructions to fit in places where we need try to coax additional instructions to fit in places where we need
@ -391,7 +420,7 @@ In the depth pass, a depth is calculated for each instruction node within its ba
Scheduling Scheduling
~~~~~~~~~~ ~~~~~~~~~~
After the grouping_ pass, there are no more instructions to insert or remove. Start scheduling each basic block from the deepest node in the depth sorted list created by the depth_ pass, recursively trying to schedule each instruction after its source instructions plus delay slots. Insert ``nop``\s as required. After the grouping_ pass, there are no more instructions to insert or remove. Start scheduling each basic block from the deepest node in the depth sorted list created by the depth_ pass, recursively trying to schedule each instruction after it's source instructions plus delay slots. Insert ``nop``\s as required.
.. _`register assignment`: .. _`register assignment`:

View File

@ -27,7 +27,8 @@ Requirements
See ``/proc/cpuinfo`` to know what your CPU supports. See ``/proc/cpuinfo`` to know what your CPU supports.
- Unless otherwise stated, LLVM version 3.9 or later is required. - Unless otherwise stated, LLVM version 3.4 is recommended; 3.3 or
later is required.
For Linux, on a recent Debian based distribution do: For Linux, on a recent Debian based distribution do:
@ -67,10 +68,18 @@ Requirements
You can build only the x86 target by passing You can build only the x86 target by passing
``-DLLVM_TARGETS_TO_BUILD=X86`` to cmake. ``-DLLVM_TARGETS_TO_BUILD=X86`` to cmake.
- scons (optional)
Building Building
-------- --------
To build everything on Linux invoke meson as: To build everything on Linux invoke scons as:
.. code-block:: console
scons build=debug libgl-xlib
Alternatively, you can build it with meson with:
.. code-block:: console .. code-block:: console
@ -79,6 +88,12 @@ To build everything on Linux invoke meson as:
meson -D glx=gallium-xlib -D gallium-drivers=swrast meson -D glx=gallium-xlib -D gallium-drivers=swrast
ninja ninja
but the rest of these instructions assume that scons is used. For
Windows the procedure is similar except the target:
.. code-block:: console
scons platform=windows build=debug libgl-gdi
Using Using
----- -----
@ -101,15 +116,17 @@ or
To use it set the ``LD_LIBRARY_PATH`` environment variable accordingly. To use it set the ``LD_LIBRARY_PATH`` environment variable accordingly.
For performance evaluation pass ``build=release`` to scons, and use the
corresponding lib directory without the ``-debug`` suffix.
Windows Windows
~~~~~~~ ~~~~~~~
On Windows, building will create On Windows, building will create
``build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll`` which ``build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll`` which
is a drop-in alternative for system's ``opengl32.dll``, which will use is a drop-in alternative for system's ``opengl32.dll``. To use it put it
the Mesa ICD, ``build/windows-x86-debug/gallium/targets/wgl/libgallium_wgl.dll``. in the same directory as your application. It can also be used by
To use it put both dlls in the same directory as your application. It can also replacing the native ICD driver, but it's quite an advanced usage, so if
be used by replacing the native ICD driver, but it's quite an advanced usage, so if
you need to ask, don't even try it. you need to ask, don't even try it.
There is however an easy way to replace the OpenGL software renderer There is however an easy way to replace the OpenGL software renderer
@ -117,7 +134,7 @@ that comes with Microsoft Windows 7 (or later) with llvmpipe (that is,
on systems without any OpenGL drivers): on systems without any OpenGL drivers):
- copy - copy
``build/windows-x86-debug/gallium/targets/wgl/libgallium_wgl.dll`` to ``build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll`` to
``C:\Windows\SysWOW64\mesadrv.dll`` ``C:\Windows\SysWOW64\mesadrv.dll``
- load this registry settings: - load this registry settings:
@ -139,6 +156,15 @@ on systems without any OpenGL drivers):
Profiling Profiling
--------- ---------
To profile llvmpipe you should build as
::
scons build=profile <same-as-before>
This will ensure that frame pointers are used both in C and JIT
functions, and that no tail call optimizations are done by gcc.
Linux perf integration Linux perf integration
~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~

View File

@ -11,9 +11,6 @@ This rasterizer is x86 specific and requires AVX or above. The driver
fits into the gallium framework, and reuses gallivm for doing the TGSI fits into the gallium framework, and reuses gallivm for doing the TGSI
to vectorized llvm-IR conversion of the shader kernels. to vectorized llvm-IR conversion of the shader kernels.
You can read more about OpenSWR on the `project website
<https://www.openswr.org/>`__.
.. toctree:: .. toctree::
:glob: :glob:

View File

@ -26,6 +26,12 @@ for libGL.so into::
lib/gallium/libswrAVX.so lib/gallium/libswrAVX.so
lib/gallium/libswrAVX2.so lib/gallium/libswrAVX2.so
Alternatively, building with SCons will produce::
build/linux-x86_64/gallium/targets/libgl-xlib/libGL.so
build/linux-x86_64/gallium/drivers/swr/libswrAVX.so
build/linux-x86_64/gallium/drivers/swr/libswrAVX2.so
To use it set the LD_LIBRARY_PATH environment variable accordingly. To use it set the LD_LIBRARY_PATH environment variable accordingly.
**IMPORTANT:** Mesa will default to using llvmpipe or softpipe as the default software renderer. To select the OpenSWR driver, set the GALLIUM_DRIVER environment variable appropriately: :: **IMPORTANT:** Mesa will default to using llvmpipe or softpipe as the default software renderer. To select the OpenSWR driver, set the GALLIUM_DRIVER environment variable appropriately: ::

View File

@ -0,0 +1,316 @@
VMware SVGA3D Guest Driver
==========================
This page describes how to build, install and use the
`VMware <https://www.vmware.com/>`__ guest GL driver (aka the SVGA or
SVGA3D driver) for Linux using the latest source code. This driver gives
a Linux virtual machine access to the host's GPU for
hardware-accelerated 3D. VMware Workstation running on Linux or Windows
and VMware Fusion running on MacOS are all supported.
With the August 2015 Workstation 12 / Fusion 8 releases, OpenGL 3.3 is
supported in the guest. This requires:
- The VM is configured for virtual hardware version 12.
- The host OS, GPU and graphics driver supports DX11 (Windows) or
OpenGL 4.0 (Linux, Mac)
- On Linux, the vmwgfx kernel module must be version 2.9.0 or later.
- A recent version of Mesa with the updated svga Gallium driver.
Otherwise, OpenGL 2.1 is supported.
With the Fall 2018 Workstation 15 / Fusion 11 releases, additional
features are supported in the driver:
- Multisample antialiasing (2x, 4x)
- GL_ARB/AMD_draw_buffers_blend
- GL_ARB_sample_shading
- GL_ARB_texture_cube_map_array
- GL_ARB_texture_gather
- GL_ARB_texture_query_lod
- GL_EXT/OES_draw_buffers_indexed
This requires version 2.15.0 or later of the vmwgfx kernel module and
the VM must be configured for hardware version 16 or later.
OpenGL 3.3 support can be disabled by setting the environment variable
SVGA_VGPU10=0. You will then have OpenGL 2.1 support. This may be useful
to work around application bugs (such as incorrect use of the OpenGL 3.x
core profile).
Most modern Linux distros include the SVGA3D driver so end users
shouldn't be concerned with this information. But if your distro lacks
the driver or you want to update to the latest code these instructions
explain what to do.
For more information about the X components see these wiki pages at
x.org:
- `Driver Overview <https://wiki.x.org/wiki/vmware>`__
- `xf86-video-vmware
Details <https://wiki.x.org/wiki/vmware/vmware3D>`__
Components
----------
The components involved in this include:
- Linux kernel module: vmwgfx
- X server 2D driver: xf86-video-vmware
- User-space libdrm library
- Mesa/Gallium OpenGL driver: "svga"
All of these components reside in the guest Linux virtual machine. On
the host, all you're doing is running VMware
`Workstation <https://www.vmware.com/products/workstation/>`__ or
`Fusion <https://www.vmware.com/products/fusion/>`__.
Prerequisites
-------------
- Kernel version at least 2.6.25
- Xserver version at least 1.7
- Ubuntu: For Ubuntu you need to install a number of build
dependencies.
::
sudo apt-get install git-core
sudo apt-get install ninja-build meson libpthread-stubs0-dev
sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
sudo apt-get install libxcb-glx0-dev libxrender-dev
sudo apt-get build-dep libgl1-mesa-dri libxcb-glx0-dev
- Fedora: For Fedora you also need to install a number of build
dependencies.
::
sudo yum install mesa-libGL-devel xorg-x11-server-devel xorg-x11-util-macros
sudo yum install libXrender-devel.i686
sudo yum install ninja-build meson gcc expat-devel kernel-devel git-core
sudo yum install makedepend flex bison
Depending on your Linux distro, other packages may be needed. Meson
should tell you what's missing.
Getting the Latest Source Code
------------------------------
Begin by saving your current directory location:
::
export TOP=$PWD
- Mesa/Gallium master branch. This code is used to build libGL, and the
direct rendering svga driver for libGL, vmwgfx_dri.so, and the X
acceleration library libxatracker.so.x.x.x.
::
git clone https://gitlab.freedesktop.org/mesa/mesa.git
- VMware Linux guest kernel module. Note that this repo contains the
complete DRM and TTM code. The vmware-specific driver is really only
the files prefixed with vmwgfx.
::
git clone git://anongit.freedesktop.org/git/mesa/vmwgfx
- libdrm, a user-space library that interfaces with DRM. Most distros
ship with this but it's safest to install a newer version. To get the
latest code from Git:
::
git clone https://gitlab.freedesktop.org/mesa/drm.git
- xf86-video-vmware. The chainloading driver, vmware_drv.so, the legacy
driver vmwlegacy_drv.so, and the vmwgfx driver vmwgfx_drv.so.
::
git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vmware
Building the Code
-----------------
- Determine where the GL-related libraries reside on your system and
set the LIBDIR environment variable accordingly.
For 32-bit Ubuntu systems:
::
export LIBDIR=/usr/lib/i386-linux-gnu
For 64-bit Ubuntu systems:
::
export LIBDIR=/usr/lib/x86_64-linux-gnu
For 32-bit Fedora systems:
::
export LIBDIR=/usr/lib
For 64-bit Fedora systems:
::
export LIBDIR=/usr/lib64
- Build libdrm:
::
cd $TOP/drm
meson builddir --prefix=/usr --libdir=${LIBDIR}
ninja -C builddir
sudo ninja -C builddir install
- Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg
driver, the X acceleration library libxatracker. The vmwgfx_dri.so is
used by the OpenGL libraries during direct rendering, and by the Xorg
server during accelerated indirect GL rendering. The libxatracker
library is used exclusively by the X server to do render, copy and
video acceleration:
The following configure options doesn't build the EGL system.
::
cd $TOP/mesa
meson builddir --prefix=/usr --libdir=${LIBDIR} -Dgallium-drivers=svga -Ddri-drivers=swrast -Dgallium-xa=true -Ddri3=false
ninja -C builddir
sudo ninja -C builddir install
Note that you may have to install other packages that Mesa depends
upon if they're not installed in your system. You should be told
what's missing.
- xf86-video-vmware: Now, once libxatracker is installed, we proceed
with building and replacing the current Xorg driver. First check if
your system is 32- or 64-bit.
::
cd $TOP/xf86-video-vmware
./autogen.sh --prefix=/usr --libdir=${LIBDIR}
make
sudo make install
- vmwgfx kernel module. First make sure that any old version of this
kernel module is removed from the system by issuing
::
sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko*
Build and install:
::
cd $TOP/vmwgfx
make
sudo make install
sudo depmod -a
If you're using a Ubuntu OS:
::
sudo update-initramfs -u
If you're using a Fedora OS:
::
sudo dracut --force
Add 'vmwgfx' to the /etc/modules file:
::
echo vmwgfx | sudo tee -a /etc/modules
.. note::
some distros put DRM kernel drivers in different directories.
For example, sometimes vmwgfx.ko might be found in
``/lib/modules/{version}/extra/vmwgfx.ko`` or in
``/lib/modules/{version}/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko``.
After installing vmwgfx.ko you might want to run the following
command to check that the new kernel module is in the expected place:
::
find /lib/modules -name vmwgfx.ko -exec ls -l '{}' \;
If you see the kernel module listed in more than one place, you may
need to move things around.
Finally, if you update your kernel you'll probably have to rebuild
and reinstall the vmwgfx.ko module again.
Now try to load the kernel module by issuing
::
sudo modprobe vmwgfx
Then type
::
dmesg
to watch the debug output. It should contain a number of lines prefixed
with "[vmwgfx]".
Then restart the Xserver (or reboot). The lines starting with
"vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log should now have
been replaced with lines starting with "vmwgfx", indicating that the new
Xorg driver is in use.
Running OpenGL Programs
-----------------------
In a shell, run 'glxinfo' and look for the following to verify that the
driver is working:
::
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
OpenGL version string: 2.1 Mesa 8.0
If you don't see this, try setting this environment variable:
::
export LIBGL_DEBUG=verbose
then rerun glxinfo and examine the output for error messages.
If OpenGL 3.3 is not working (you only get OpenGL 2.1):
- Make sure the VM uses hardware version 12.
- Make sure the vmwgfx kernel module is version 2.9.0 or later.
- Check the vmware.log file for errors.
- Run 'dmesg \| grep vmwgfx' and look for "DX: yes".

View File

@ -34,41 +34,24 @@ Here's a list of those requirements:
* ``alphaToOne`` * ``alphaToOne``
* ``shaderClipDistance`` * ``shaderClipDistance``
* Instance extensions:
* `VK_KHR_get_physical_device_properties2`_
* `VK_KHR_external_memory_capabilities`_
* Device extensions: * Device extensions:
* `VK_KHR_maintenance1`_ * `VK_KHR_maintenance1`_
* `VK_EXT_custom_border_color`_ * `VK_KHR_external_memory`_
* `VK_EXT_provoking_vertex`_
* `VK_EXT_line_rasterization`_, with the following ``VkPhysicalDeviceLineRasterizationFeaturesEXT``:
* ``rectangularLines``
* ``bresenhamLines``
* ``smoothLines``
* ``stippledRectangularLines``
* ``stippledBresenhamLines``
* ``stippledSmoothLines``
In addition to this, `VK_KHR_external_memory`_ is required to support the
DRI code-path.
We also require either the `VK_EXT_scalar_block_layout`_ extension or
Vulkan 1.2, with the ``scalarBlockLayout`` feature.
OpenGL 3.0 OpenGL 3.0
^^^^^^^^^^ ^^^^^^^^^^
For OpenGL 3.0 support, the following additional device extensions are
required to be exposed and fully supported:
For OpenGL 3.0 support, the following additional requirements needs to be * `VK_EXT_transform_feedback`_
supported: * `VK_EXT_conditional_rendering`_
* ``VkPhysicalDeviceFeatures``:
* ``independentBlend``
* Device extensions:
* `VK_EXT_transform_feedback`_
* `VK_EXT_conditional_rendering`_
OpenGL 3.1 OpenGL 3.1
@ -93,10 +76,11 @@ verified:
OpenGL 3.3 OpenGL 3.3
^^^^^^^^^^ ^^^^^^^^^^
For OpenGL 3.3 support, the following additional requirements needs to be For OpenGL 3.3 support, the following additional ``VkPhysicalDeviceFeatures``
supported, although some of these might not actually get verified: are required to be supported, although some of these might not actually get
verified:
* ``VkPhysicalDeviceFeatures``: * ``VkPhysicalDeviceFeatures``
* ``occlusionQueryPrecise`` * ``occlusionQueryPrecise``
@ -104,146 +88,6 @@ supported, although some of these might not actually get verified:
* `VK_EXT_vertex_attribute_divisor`_ * `VK_EXT_vertex_attribute_divisor`_
OpenGL 4.0
^^^^^^^^^^
For OpenGL 4.0 support, the following additional requirements needs to be
supported:
* ``VkPhysicalDeviceFeatures``:
* ``sampleRateShading``
* ``tessellationShader``
* ``imageCubeArray``
* Device extensions:
* `VK_KHR_maintenance2`_
* Formats requiring ``VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT``:
* ``VK_FORMAT_R32G32B32_SFLOAT``
* ``VK_FORMAT_R32G32B32_SINT``
* ``VK_FORMAT_R32G32B32_UINT``
OpenGL 4.1
^^^^^^^^^^
For OpenGL 4.1 support, the following additional ``VkPhysicalDeviceLimits``
are required:
* ``maxImageDimension2D`` ≥ 16384
* ``maxViewports`` ≥ 16
OpenGL 4.2
^^^^^^^^^^
For OpenGL 4.2 support, the following additional requirements needs to be
supported:
* ``VkPhysicalDeviceLimits``:
* ``shaderStorageImageExtendedFormats``
* ``shaderStorageImageWriteWithoutFormat``
* For Vulkan 1.2 and above:
* ``VkPhysicalDeviceVulkan11Features``:
* ``shaderDrawParameters``
* ``vertexPipelineStoresAndAtomics``
* ``fragmentStoresAndAtomics``
* ``textureCompressionBC``
* For Vulkan 1.1 and below:
* Device extensions:
* `VK_KHR_shader_draw_parameters`_
* Formats requiring ``VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT``:
* ``VK_FORMAT_BC7_UNORM_BLOCK``
* ``VK_FORMAT_BC7_SRGB_BLOCK``
* ``VK_FORMAT_BC6H_SFLOAT_BLOCK``
* ``VK_FORMAT_BC6H_UFLOAT_BLOCK``
OpenGL 4.3
^^^^^^^^^^
For OpenGL 4.3 support, the following additional requirements needs to be
supported:
* ``VkPhysicalDeviceFeatures``:
* ``robustBufferAccess``
* ``multiViewport``
* Formats requiring ``VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT``:
* ``VK_FORMAT_R8G8B8A8_UNORM``
* ``VK_FORMAT_R8G8B8A8_SRGB``
* ``VK_FORMAT_R16_UNORM``
* ``VK_FORMAT_R16G16_UNORM``
* ``VK_FORMAT_R16_SNORM``
* ``VK_FORMAT_R16G16_SNORM``
* ``VK_FORMAT_D32_SFLOAT_S8_UINT``
OpenGL 4.4
^^^^^^^^^^
For OpenGL 4.4 support, the following additional requirements needs to be
supported:
* Formats requiring ``VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT``:
* ``VK_FORMAT_B10G11R11_UFLOAT_PACK32``
* Device extensions:
* `VK_KHR_sampler_mirror_clamp_to_edge`_
OpenGL 4.5
^^^^^^^^^^
For OpenGL 4.5 support, the following additional ``VkPhysicalDeviceFeatures``
are required to be supported
* ``shaderCullDistance``
OpenGL 4.6
^^^^^^^^^^
For OpenGL 4.6 support, the following additional ``VkPhysicalDeviceFeatures``
are required to be supported
* ``VkPhysicalDeviceFeatures``:
* ``samplerAnisotropy``
* ``pipelineStatisticsQuery``
* ``depthBiasClamp``
* Device extensions:
* `VK_KHR_draw_indirect_count`_
Performance
-----------
If you notice poor performance and high CPU usage while running an application,
changing the descriptor manager may improve performance:
.. envvar:: ZINK_DESCRIPTORS <mode> ("auto")
``auto``
Automatically detect best mode. This is the default.
``lazy``
Disable caching and attempt to use the least amount of CPU.
``nofallback``
Always use caching to try reducing GPU churn.
``notemplates``
The same as `auto`, but disables the use of `VK_KHR_descriptor_templates`.
Debugging Debugging
--------- ---------
@ -279,20 +123,14 @@ IRC
In order to make things a bit easier to follow, we have decided to create our In order to make things a bit easier to follow, we have decided to create our
own IRC channel. If you're interested in contributing, or have any technical own IRC channel. If you're interested in contributing, or have any technical
questions, don't hesitate to visit `#zink on OFTC questions, don't hesitate to visit `#zink on FreeNode
<irc://irc.oftc.net/zink>`__ and say hi! <irc://irc.freenode.net/zink>`_ and say hi!
.. _VK_KHR_get_physical_device_properties2: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_get_physical_device_properties2.html
.. _VK_KHR_external_memory_capabilities: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_external_memory_capabilities.html
.. _VK_KHR_maintenance1: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance1.html .. _VK_KHR_maintenance1: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance1.html
.. _VK_KHR_external_memory: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_external_memory.html .. _VK_KHR_external_memory: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_external_memory.html
.. _VK_EXT_scalar_block_layout: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_scalar_block_layout.html
.. _VK_EXT_transform_feedback: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_transform_feedback.html .. _VK_EXT_transform_feedback: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_transform_feedback.html
.. _VK_EXT_conditional_rendering: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_conditional_rendering.html .. _VK_EXT_conditional_rendering: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_conditional_rendering.html
.. _VK_EXT_vertex_attribute_divisor: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_vertex_attribute_divisor.html .. _VK_EXT_vertex_attribute_divisor: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_vertex_attribute_divisor.html
.. _VK_KHR_maintenance2: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance2.html
.. _VK_KHR_shader_draw_parameters: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_shader_draw_parameters.html
.. _VK_KHR_draw_indirect_count: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_draw_indirect_count.html
.. _VK_KHR_sampler_mirror_clamp_to_edge: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_sampler_mirror_clamp_to_edge.html
.. _VK_EXT_custom_border_color: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_custom_border_color.html
.. _VK_EXT_provoking_vertex: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_provoking_vertex.html
.. _VK_EXT_line_rasterization: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_line_rasterization.html

View File

@ -21,9 +21,9 @@ Build EGL
.. code-block:: console .. code-block:: console
$ meson configure \ $ meson configure \
-D egl=enabled \ -D egl=true \
-D gles1=enabled \ -D gles1=true \
-D gles2=enabled \ -D gles2=true \
-D dri-drivers=... \ -D dri-drivers=... \
-D gallium-drivers=... -D gallium-drivers=...
@ -43,7 +43,7 @@ Configure Options
There are several options that control the build of EGL at configuration There are several options that control the build of EGL at configuration
time time
``-D egl=enabled`` ``-D egl=true``
By default, EGL is enabled. When disabled, the main library and the By default, EGL is enabled. When disabled, the main library and the
drivers will not be built. drivers will not be built.
@ -60,11 +60,11 @@ time
Unless for special needs, the build system should select the right Unless for special needs, the build system should select the right
platforms automatically. platforms automatically.
``-D gles1=enabled`` and ``-D gles2=enabled`` ``-D gles1=true`` and ``-D gles2=true``
These options enable OpenGL ES support in OpenGL. The result is one These options enable OpenGL ES support in OpenGL. The result is one
big internal library that supports multiple APIs. big internal library that supports multiple APIs.
``-D shared-glapi=enabled`` ``-D shared-glapi=true``
By default, ``libGL`` has its own copy of ``libglapi``. This options By default, ``libGL`` has its own copy of ``libglapi``. This options
makes ``libGL`` use the shared ``libglapi``. This is required if makes ``libGL`` use the shared ``libglapi``. This is required if
applications mix OpenGL and OpenGL ES. applications mix OpenGL and OpenGL ES.
@ -159,7 +159,7 @@ EGL Drivers
``egl_dri2`` ``egl_dri2``
This driver supports several platforms: ``android``, ``device``, This driver supports several platforms: ``android``, ``device``,
``drm``, ``surfaceless``, ``wayland`` and ``x11``. It functions as ``drm, ``surfaceless``, ``wayland`` and ``x11``. It functions as
a DRI driver loader. For ``x11`` support, it talks to the X server a DRI driver loader. For ``x11`` support, it talks to the X server
directly using (XCB-)DRI3 protocol when available, and falls back to directly using (XCB-)DRI3 protocol when available, and falls back to
DRI2 if necessary (can be forced with ``LIBGL_DRI3_DISABLE``). DRI2 if necessary (can be forced with ``LIBGL_DRI3_DISABLE``).

File diff suppressed because it is too large Load Diff

View File

@ -36,137 +36,137 @@ context as extensions.
Feature Status Feature Status
------------------------------------------------------- ------------------------ ------------------------------------------------------- ------------------------
GL 3.0, GLSL 1.30 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl, zink, d3d12, panfrost GL 3.0, GLSL 1.30 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl, zink
glBindFragDataLocation, glGetFragDataLocation DONE glBindFragDataLocation, glGetFragDataLocation DONE
GL_NV_conditional_render (Conditional rendering) DONE () GL_NV_conditional_render (Conditional rendering) DONE ()
GL_ARB_map_buffer_range (Map buffer subranges) DONE (v3d, vc4, lima) GL_ARB_map_buffer_range (Map buffer subranges) DONE (panfrost, v3d)
GL_ARB_color_buffer_float (Clamping controls) DONE (v3d, lima) GL_ARB_color_buffer_float (Clamping controls) DONE (panfrost, v3d)
GL_ARB_texture_float (Float textures, renderbuffers) DONE (v3d) GL_ARB_texture_float (Float textures, renderbuffers) DONE (panfrost, v3d)
GL_EXT_packed_float DONE (v3d) GL_EXT_packed_float DONE (panfrost, v3d)
GL_EXT_texture_shared_exponent DONE (v3d) GL_EXT_texture_shared_exponent DONE (panfrost, v3d)
GL_ARB_depth_buffer_float (Float depth buffers) DONE (v3d) GL_ARB_depth_buffer_float (Float depth buffers) DONE (panfrost, v3d)
GL_ARB_framebuffer_object (Framebuffer objects) DONE (v3d, vc4) GL_ARB_framebuffer_object (Framebuffer objects) DONE (panfrost, v3d)
GL_ARB_half_float_pixel DONE (all drivers) GL_ARB_half_float_pixel DONE (all drivers)
GL_ARB_half_float_vertex DONE (v3d, vc4, lima) GL_ARB_half_float_vertex DONE (panfrost, v3d)
GL_EXT_texture_integer DONE (v3d) GL_EXT_texture_integer DONE (panfrost, v3d)
GL_EXT_texture_array DONE (v3d) GL_EXT_texture_array DONE (panfrost, v3d)
GL_EXT_draw_buffers2 (Per-buffer blend and masks) DONE (v3d) GL_EXT_draw_buffers2 (Per-buffer blend and masks) DONE (panfrost, v3d)
GL_EXT_texture_compression_rgtc DONE () GL_EXT_texture_compression_rgtc DONE (panfrost)
GL_ARB_texture_rg DONE (v3d, lima) GL_ARB_texture_rg DONE (panfrost, v3d)
GL_EXT_transform_feedback (Transform feedback) DONE (v3d) GL_EXT_transform_feedback (Transform feedback) DONE (panfrost, v3d)
GL_ARB_vertex_array_object (Vertex array objects) DONE (v3d, vc4, lima) GL_ARB_vertex_array_object (Vertex array objects) DONE (panfrost, v3d)
GL_EXT_framebuffer_sRGB (sRGB framebuffer format) DONE (v3d, vc4, lima) GL_EXT_framebuffer_sRGB (sRGB framebuffer format) DONE (panfrost, v3d)
glClearBuffer commands DONE glClearBuffer commands DONE
glGetStringi command DONE glGetStringi command DONE
glTexParameterI, glGetTexParameterI commands DONE glTexParameterI, glGetTexParameterI commands DONE
glVertexAttribI commands DONE glVertexAttribI commands DONE
Depth format cube textures DONE () Depth format cube textures DONE (panfrost)
GLX_ARB_create_context (GLX 1.4 is required) DONE (v3d, vc4) GLX_ARB_create_context (GLX 1.4 is required) DONE (panfrost, v3d)
Multisample anti-aliasing DONE (freedreno/a5xx+, freedreno (*), llvmpipe (*), softpipe (*), swr (*)) Multisample anti-aliasing DONE (freedreno/a5xx+, freedreno (*), llvmpipe (*), softpipe (*), swr (*), panfrost)
8 draw buffers DONE (panfrost/t760+) 8 draw buffers DONE (panfrost/t760+)
(*) freedreno (a2xx-a4xx), llvmpipe, softpipe, and swr have fake Multisample anti-aliasing support (*) freedreno (a2xx-a4xx), llvmpipe, softpipe, and swr have fake Multisample anti-aliasing support
GL 3.1, GLSL 1.40 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl, zink, d3d12, panfrost GL 3.1, GLSL 1.40 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl, panfrost, zink
Forward compatible context support/deprecations DONE Forward compatible context support/deprecations DONE
GL_ARB_draw_instanced (Instanced drawing) DONE (v3d) GL_ARB_draw_instanced (Instanced drawing) DONE (v3d)
GL_ARB_copy_buffer (Buffer copying) DONE (v3d, vc4, lima) GL_ARB_copy_buffer (Buffer copying) DONE (v3d)
GL_NV_primitive_restart (Primitive restart) DONE (v3d) GL_NV_primitive_restart (Primitive restart) DONE ()
16 vertex texture image units DONE () 16 vertex texture image units DONE ()
GL_ARB_texture_buffer_object (Texture buffer objs) DONE () GL_ARB_texture_buffer_object (Texture buffer objs) DONE ()
GL_ARB_texture_rectangle (Rectangular textures) DONE (v3d, vc4, lima) GL_ARB_texture_rectangle (Rectangular textures) DONE (v3d)
GL_ARB_uniform_buffer_object (Uniform buffer objs) DONE (v3d) GL_ARB_uniform_buffer_object (Uniform buffer objs) DONE (v3d)
GL_EXT_texture_snorm (Signed normalized textures) DONE (v3d) GL_EXT_texture_snorm (Signed normalized textures) DONE (v3d)
GL 3.2, GLSL 1.50 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl, zink, d3d12 GL 3.2, GLSL 1.50 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr, virgl, zink
Core/compatibility profiles DONE Core/compatibility profiles DONE
Geometry shaders DONE (freedreno/a6xx) Geometry shaders DONE ()
GL_ARB_vertex_array_bgra (BGRA vertex order) DONE (v3d, panfrost) GL_ARB_vertex_array_bgra (BGRA vertex order) DONE (freedreno, v3d, panfrost)
GL_ARB_draw_elements_base_vertex (Base vertex offset) DONE (v3d, panfrost, lima) GL_ARB_draw_elements_base_vertex (Base vertex offset) DONE (freedreno, v3d, panfrost)
GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (v3d, vc4, panfrost, lima) GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (freedreno, v3d, panfrost)
GL_ARB_provoking_vertex (Provoking vertex) DONE (v3d, vc4, panfrost, lima) GL_ARB_provoking_vertex (Provoking vertex) DONE (freedreno, v3d, panfrost)
GL_ARB_seamless_cube_map (Seamless cubemaps) DONE (panfrost) GL_ARB_seamless_cube_map (Seamless cubemaps) DONE (freedreno, panfrost)
GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, v3d, vc4, panfrost) GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, v3d, panfrost)
GL_ARB_depth_clamp (Frag depth clamp) DONE (panfrost) GL_ARB_depth_clamp (Frag depth clamp) DONE (freedreno, panfrost)
GL_ARB_sync (Fence objects) DONE (v3d, vc4, panfrost, lima) GL_ARB_sync (Fence objects) DONE (freedreno, v3d, panfrost)
GLX_ARB_create_context_profile DONE GLX_ARB_create_context_profile DONE
GL 3.3, GLSL 3.30 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl, zink, d3d12 GL 3.3, GLSL 3.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl, zink
GL_ARB_blend_func_extended DONE (freedreno/a3xx, freedreno/a6xx, swr, panfrost) GL_ARB_blend_func_extended DONE (freedreno/a3xx, swr, panfrost)
GL_ARB_explicit_attrib_location DONE (all drivers that support GLSL) GL_ARB_explicit_attrib_location DONE (all drivers that support GLSL)
GL_ARB_occlusion_query2 DONE (swr, v3d, vc4, panfrost, lima) GL_ARB_occlusion_query2 DONE (freedreno, swr, v3d, panfrost)
GL_ARB_sampler_objects DONE (all drivers) GL_ARB_sampler_objects DONE (all drivers)
GL_ARB_shader_bit_encoding DONE (swr, v3d, panfrost) GL_ARB_shader_bit_encoding DONE (freedreno, swr, v3d, panfrost)
GL_ARB_texture_rgb10_a2ui DONE (swr, panfrost) GL_ARB_texture_rgb10_a2ui DONE (freedreno, swr, panfrost)
GL_ARB_texture_swizzle DONE (swr, v3d, vc4, panfrost, lima) GL_ARB_texture_swizzle DONE (freedreno, swr, v3d, panfrost)
GL_ARB_timer_query DONE (swr) GL_ARB_timer_query DONE (freedreno, swr)
GL_ARB_instanced_arrays DONE (swr, v3d, panfrost) GL_ARB_instanced_arrays DONE (freedreno, swr, v3d, panfrost)
GL_ARB_vertex_type_2_10_10_10_rev DONE (swr, v3d, panfrost) GL_ARB_vertex_type_2_10_10_10_rev DONE (freedreno, swr, v3d, panfrost)
GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl, zink GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl
GL_ARB_draw_buffers_blend DONE (freedreno, i965/gen6+, nv50, softpipe, swr, panfrost, d3d12) GL_ARB_draw_buffers_blend DONE (freedreno, i965/gen6+, nv50, softpipe, swr, zink, panfrost)
GL_ARB_draw_indirect DONE (freedreno, i965/gen7+, softpipe, swr, v3d) GL_ARB_draw_indirect DONE (freedreno, i965/gen7+, softpipe, swr, v3d, zink)
GL_ARB_gpu_shader5 DONE (i965/gen7+) GL_ARB_gpu_shader5 DONE (i965/gen7+)
- 'precise' qualifier DONE (softpipe) - 'precise' qualifier DONE (softpipe)
- Dynamically uniform sampler array indices DONE (softpipe) - Dynamically uniform sampler array indices DONE (softpipe)
- Dynamically uniform UBO array indices DONE (freedreno, softpipe) - Dynamically uniform UBO array indices DONE (freedreno, softpipe)
- Implicit signed -> unsigned conversions DONE (softpipe, swr) - Implicit signed -> unsigned conversions DONE (softpipe, swr)
- Fused multiply-add DONE (softpipe, swr) - Fused multiply-add DONE (softpipe, swr)
- Packing/bitfield/conversion functions DONE (freedreno, softpipe, swr, panfrost) - Packing/bitfield/conversion functions DONE (freedreno, softpipe, swr)
- Enhanced textureGather DONE (freedreno, softpipe, swr, panfrost) - Enhanced textureGather DONE (freedreno, softpipe, swr)
- Geometry shader instancing DONE (softpipe, swr) - Geometry shader instancing DONE (softpipe, swr)
- Geometry shader multiple streams DONE (softpipe, swr) - Geometry shader multiple streams DONE (softpipe, swr)
- Enhanced per-sample shading DONE () - Enhanced per-sample shading DONE ()
- Interpolation functions DONE (softpipe) - Interpolation functions DONE (softpipe)
- New overload resolution rules DONE (softpipe) - New overload resolution rules DONE (softpipe)
GL_ARB_gpu_shader_fp64 DONE (i965/gen7+, softpipe, swr) GL_ARB_gpu_shader_fp64 DONE (i965/gen7+, softpipe, swr)
GL_ARB_sample_shading DONE (freedreno/a6xx, i965/gen6+, nv50, panfrost) GL_ARB_sample_shading DONE (freedreno/a6xx, i965/gen6+, nv50, zink)
GL_ARB_shader_subroutine DONE (freedreno, i965/gen6+, nv50, softpipe, swr, d3d12) GL_ARB_shader_subroutine DONE (freedreno, i965/gen6+, nv50, softpipe, swr)
GL_ARB_tessellation_shader DONE (freedreno/a6xx, i965/gen7+, swr) GL_ARB_tessellation_shader DONE (i965/gen7+, swr)
GL_ARB_texture_buffer_object_rgb32 DONE (freedreno, i965/gen6+, softpipe, swr, d3d12, panfrost) GL_ARB_texture_buffer_object_rgb32 DONE (freedreno, i965/gen6+, softpipe, swr)
GL_ARB_texture_cube_map_array DONE (freedreno/a4xx+, i965/gen6+, nv50, softpipe, swr) GL_ARB_texture_cube_map_array DONE (i965/gen6+, nv50, softpipe, swr, zink)
GL_ARB_texture_gather DONE (freedreno, i965/gen6+, nv50, softpipe, swr, v3d, panfrost) GL_ARB_texture_gather DONE (freedreno, i965/gen6+, nv50, softpipe, swr, v3d, panfrost)
GL_ARB_texture_query_lod DONE (freedreno, i965, nv50, softpipe, swr, v3d, panfrost, d3d12) GL_ARB_texture_query_lod DONE (freedreno, i965, nv50, softpipe, swr, v3d, panfrost, zink)
GL_ARB_transform_feedback2 DONE (freedreno/a3xx+, i965/gen6+, nv50, softpipe, swr, v3d, panfrost) GL_ARB_transform_feedback2 DONE (i965/gen6+, nv50, softpipe, swr, v3d, panfrost)
GL_ARB_transform_feedback3 DONE (freedreno/a3xx+, i965/gen7+, softpipe, swr) GL_ARB_transform_feedback3 DONE (i965/gen7+, softpipe, swr)
GL 4.1, GLSL 4.10 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl, zink GL 4.1, GLSL 4.10 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl
GL_ARB_ES2_compatibility DONE (freedreno, i965, nv50, softpipe, swr, v3d, vc4, panfrost, d3d12, lima) GL_ARB_ES2_compatibility DONE (freedreno, i965, nv50, softpipe, swr, v3d, zink, panfrost)
GL_ARB_get_program_binary DONE (freedreno, 0 or 1 binary formats) GL_ARB_get_program_binary DONE (0 or 1 binary formats)
GL_ARB_separate_shader_objects DONE (all drivers) GL_ARB_separate_shader_objects DONE (all drivers)
GL_ARB_shader_precision DONE (i965/gen7+, all drivers that support GLSL 4.10) GL_ARB_shader_precision DONE (i965/gen7+, all drivers that support GLSL 4.10)
GL_ARB_vertex_attrib_64bit DONE (i965/gen7+, softpipe, swr) GL_ARB_vertex_attrib_64bit DONE (i965/gen7+, softpipe, swr)
GL_ARB_viewport_array DONE (i965, nv50, softpipe, swr) GL_ARB_viewport_array DONE (i965, nv50, softpipe, swr, zink)
GL 4.2, GLSL 4.20 -- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl, zink GL 4.2, GLSL 4.20 -- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl
GL_ARB_texture_compression_bptc DONE (freedreno, i965, softpipe, swr, panfrost/if SoC supports) GL_ARB_texture_compression_bptc DONE (freedreno, i965, softpipe, swr, zink, panfrost/if SoC supports)
GL_ARB_compressed_texture_pixel_storage DONE (all drivers) GL_ARB_compressed_texture_pixel_storage DONE (all drivers)
GL_ARB_shader_atomic_counters DONE (freedreno/a5xx+, i965, softpipe, v3d, panfrost) GL_ARB_shader_atomic_counters DONE (freedreno/a5xx+, i965, softpipe, v3d)
GL_ARB_texture_storage DONE (all drivers) GL_ARB_texture_storage DONE (all drivers)
GL_ARB_transform_feedback_instanced DONE (freedreno, i965, nv50, softpipe, swr, v3d) GL_ARB_transform_feedback_instanced DONE (freedreno, i965, nv50, softpipe, swr, v3d)
GL_ARB_base_instance DONE (freedreno, i965, nv50, softpipe, swr, v3d) GL_ARB_base_instance DONE (freedreno, i965, nv50, softpipe, swr, v3d)
GL_ARB_shader_image_load_store DONE (freedreno/a5xx+, i965, softpipe, v3d, panfrost) GL_ARB_shader_image_load_store DONE (freedreno/a5xx+, i965, softpipe, v3d)
GL_ARB_conservative_depth DONE (all drivers that support GLSL 1.30) GL_ARB_conservative_depth DONE (all drivers that support GLSL 1.30)
GL_ARB_shading_language_420pack DONE (all drivers that support GLSL 1.30) GL_ARB_shading_language_420pack DONE (all drivers that support GLSL 1.30)
GL_ARB_shading_language_packing DONE (all drivers) GL_ARB_shading_language_packing DONE (all drivers)
GL_ARB_internalformat_query DONE (freedreno, i965, nv50, softpipe, swr, v3d, vc4, panfrost, d3d12, lima) GL_ARB_internalformat_query DONE (freedreno, i965, nv50, softpipe, swr, v3d, zink, panfrost)
GL_ARB_map_buffer_alignment DONE (all drivers) GL_ARB_map_buffer_alignment DONE (all drivers)
GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, llvmpipe, virgl, zink GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, llvmpipe, virgl
GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30) GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30)
GL_ARB_ES3_compatibility DONE (all drivers that support GLSL 3.30) GL_ARB_ES3_compatibility DONE (all drivers that support GLSL 3.30)
@ -181,21 +181,21 @@ GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, llvmpipe, virgl
GL_ARB_invalidate_subdata DONE (all drivers) GL_ARB_invalidate_subdata DONE (all drivers)
GL_ARB_multi_draw_indirect DONE (freedreno, i965, softpipe, swr, v3d) GL_ARB_multi_draw_indirect DONE (freedreno, i965, softpipe, swr, v3d)
GL_ARB_program_interface_query DONE (all drivers) GL_ARB_program_interface_query DONE (all drivers)
GL_ARB_robust_buffer_access_behavior DONE (freedreno, i965) GL_ARB_robust_buffer_access_behavior DONE (i965)
GL_ARB_shader_image_size DONE (freedreno/a5xx+, i965, softpipe, v3d, panfrost) GL_ARB_shader_image_size DONE (freedreno/a5xx+, i965, softpipe, v3d)
GL_ARB_shader_storage_buffer_object DONE (freedreno/a5xx+, i965, softpipe, v3d, panfrost) GL_ARB_shader_storage_buffer_object DONE (freedreno/a5xx+, i965, softpipe, v3d, panfrost)
GL_ARB_stencil_texturing DONE (freedreno, i965/hsw+, nv50, softpipe, swr, v3d, panfrost, d3d12) GL_ARB_stencil_texturing DONE (freedreno, i965/hsw+, nv50, softpipe, swr, v3d, panfrost)
GL_ARB_texture_buffer_range DONE (freedreno, nv50, i965, softpipe, swr, d3d12) GL_ARB_texture_buffer_range DONE (freedreno, nv50, i965, softpipe, swr)
GL_ARB_texture_query_levels DONE (all drivers that support GLSL 1.30) GL_ARB_texture_query_levels DONE (all drivers that support GLSL 1.30)
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample) GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
GL_ARB_texture_view DONE (freedreno, i965, nv50, softpipe, swr) GL_ARB_texture_view DONE (freedreno, i965, nv50, softpipe, swr)
GL_ARB_vertex_attrib_binding DONE (all drivers) GL_ARB_vertex_attrib_binding DONE (all drivers)
GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, llvmpipe, zink GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, llvmpipe
GL_MAX_VERTEX_ATTRIB_STRIDE DONE (all drivers) GL_MAX_VERTEX_ATTRIB_STRIDE DONE (all drivers)
GL_ARB_buffer_storage DONE (freedreno, i965, nv50, swr, v3d, vc4) GL_ARB_buffer_storage DONE (freedreno, i965, nv50, swr, v3d)
GL_ARB_clear_texture DONE (i965, nv50, softpipe, swr, virgl) GL_ARB_clear_texture DONE (i965, nv50, softpipe, swr, virgl)
GL_ARB_enhanced_layouts DONE (i965, nv50, softpipe, virgl) GL_ARB_enhanced_layouts DONE (i965, nv50, softpipe, virgl)
- compile-time constant expressions DONE - compile-time constant expressions DONE
@ -206,16 +206,16 @@ GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, llvmpipe, zink
- input/output block locations DONE - input/output block locations DONE
GL_ARB_multi_bind DONE (all drivers) GL_ARB_multi_bind DONE (all drivers)
GL_ARB_query_buffer_object DONE (i965/hsw+, virgl) GL_ARB_query_buffer_object DONE (i965/hsw+, virgl)
GL_ARB_texture_mirror_clamp_to_edge DONE (i965, nv50, softpipe, swr, virgl, v3d, panfrost) GL_ARB_texture_mirror_clamp_to_edge DONE (i965, nv50, softpipe, swr, virgl, panfrost)
GL_ARB_texture_stencil8 DONE (freedreno, i965/hsw+, nv50, softpipe, swr, virgl, v3d, panfrost, d3d12) GL_ARB_texture_stencil8 DONE (freedreno, i965/hsw+, nv50, softpipe, swr, virgl, v3d, panfrost)
GL_ARB_vertex_type_10f_11f_11f_rev DONE (freedreno, i965, nv50, softpipe, swr, virgl, panfrost, d3d12) GL_ARB_vertex_type_10f_11f_11f_rev DONE (i965, nv50, softpipe, swr, virgl, zink, panfrost)
GL 4.5, GLSL 4.50 -- all DONE: nvc0, r600, radeonsi, llvmpipe, zink GL 4.5, GLSL 4.50 -- all DONE: nvc0, r600, radeonsi, llvmpipe
GL_ARB_ES3_1_compatibility DONE (i965/hsw+, softpipe, virgl) GL_ARB_ES3_1_compatibility DONE (i965/hsw+, softpipe, virgl)
GL_ARB_clip_control DONE (freedreno, i965, nv50, softpipe, swr, virgl, lima) GL_ARB_clip_control DONE (freedreno, i965, nv50, softpipe, swr, virgl)
GL_ARB_conditional_render_inverted DONE (freedreno, i965, nv50, softpipe, swr, virgl, panfrost) GL_ARB_conditional_render_inverted DONE (freedreno, i965, nv50, softpipe, swr, virgl)
GL_ARB_cull_distance DONE (freedreno/a6xx, i965, nv50, softpipe, swr, virgl) GL_ARB_cull_distance DONE (i965, nv50, softpipe, swr, virgl)
GL_ARB_derivative_control DONE (i965, nv50, softpipe, virgl) GL_ARB_derivative_control DONE (i965, nv50, softpipe, virgl)
GL_ARB_direct_state_access DONE (all drivers) GL_ARB_direct_state_access DONE (all drivers)
GL_ARB_get_texture_sub_image DONE (all drivers) GL_ARB_get_texture_sub_image DONE (all drivers)
@ -225,22 +225,24 @@ GL 4.5, GLSL 4.50 -- all DONE: nvc0, r600, radeonsi, llvmpipe, zink
GL_KHR_robustness DONE (freedreno, i965, virgl) GL_KHR_robustness DONE (freedreno, i965, virgl)
GL_EXT_shader_integer_mix DONE (all drivers that support GLSL) GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
GL 4.6, GLSL 4.60 -- all DONE: radeonsi, zink GL 4.6, GLSL 4.60 -- all DONE: radeonsi
GL_ARB_gl_spirv DONE (i965/gen7+, llvmpipe) GL_ARB_gl_spirv DONE (i965/gen7+)
GL_ARB_indirect_parameters DONE (i965/gen7+, nvc0, llvmpipe, virgl) GL_ARB_indirect_parameters DONE (i965/gen7+, nvc0, llvmpipe, virgl)
GL_ARB_pipeline_statistics_query DONE (i965, nvc0, r600, llvmpipe, softpipe, swr) GL_ARB_pipeline_statistics_query DONE (i965, nvc0, r600, llvmpipe, softpipe, swr)
GL_ARB_polygon_offset_clamp DONE (freedreno, i965, nv50, nvc0, r600, llvmpipe, swr, virgl) GL_ARB_polygon_offset_clamp DONE (freedreno, i965, nv50, nvc0, r600, llvmpipe, swr, virgl)
GL_ARB_shader_atomic_counter_ops DONE (freedreno/a5xx+, i965/gen7+, nvc0, r600, llvmpipe, softpipe, virgl, v3d) GL_ARB_shader_atomic_counter_ops DONE (freedreno/a5xx+, i965/gen7+, nvc0, r600, llvmpipe, softpipe, virgl, v3d)
GL_ARB_shader_draw_parameters DONE (i965, llvmpipe, nvc0) GL_ARB_shader_draw_parameters DONE (i965, llvmpipe, nvc0)
GL_ARB_shader_group_vote DONE (i965, nvc0, llvmpipe) GL_ARB_shader_group_vote DONE (i965, nvc0, llvmpipe)
GL_ARB_spirv_extensions DONE (i965/gen7+, llvmpipe) GL_ARB_spirv_extensions DONE (i965/gen7+)
GL_ARB_texture_filter_anisotropic DONE (etnaviv/HALTI0, freedreno, i965, nv50, nvc0, r600, softpipe, llvmpipe, d3d12, virgl) GL_ARB_texture_filter_anisotropic DONE (etnaviv/HALTI0, freedreno, i965, nv50, nvc0, r600, softpipe (*), llvmpipe (*))
GL_ARB_transform_feedback_overflow_query DONE (i965/gen6+, nvc0, llvmpipe, softpipe, virgl) GL_ARB_transform_feedback_overflow_query DONE (i965/gen6+, nvc0, llvmpipe, softpipe, virgl)
GL_KHR_no_error DONE (all drivers) GL_KHR_no_error DONE (all drivers)
(*) softpipe and llvmpipe advertise 16x anisotropy but simply ignore the setting
These are the extensions cherry-picked to make GLES 3.1 These are the extensions cherry-picked to make GLES 3.1
GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, r600, radeonsi, virgl, v3d, softpipe, llvmpipe, zink, panfrost GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, r600, radeonsi, virgl, v3d, softpipe, llvmpipe
GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30) GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30)
GL_ARB_compute_shader DONE (freedreno/a5xx+, i965/gen7+) GL_ARB_compute_shader DONE (freedreno/a5xx+, i965/gen7+)
@ -254,8 +256,8 @@ GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, r600, radeonsi, virgl, v3d, s
GL_ARB_shader_storage_buffer_object DONE (freedreno/a5xx+, i965/gen7+) GL_ARB_shader_storage_buffer_object DONE (freedreno/a5xx+, i965/gen7+)
GL_ARB_shading_language_packing DONE (all drivers) GL_ARB_shading_language_packing DONE (all drivers)
GL_ARB_separate_shader_objects DONE (all drivers) GL_ARB_separate_shader_objects DONE (all drivers)
GL_ARB_stencil_texturing DONE (freedreno, nv50, swr) GL_ARB_stencil_texturing DONE (freedreno, nv50, swr, panfrost)
GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, i965/gen7+, nv50, swr) GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, i965/gen7+, nv50, panfrost, swr)
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample) GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
GL_ARB_vertex_attrib_binding DONE (all drivers) GL_ARB_vertex_attrib_binding DONE (all drivers)
GS5 Enhanced textureGather DONE (freedreno, i965/gen7+) GS5 Enhanced textureGather DONE (freedreno, i965/gen7+)
@ -266,73 +268,72 @@ GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, r600, radeonsi, virgl, v3d, s
glMemoryBarrierByRegion DONE glMemoryBarrierByRegion DONE
glGetTexLevelParameter[fi]v - needs updates DONE glGetTexLevelParameter[fi]v - needs updates DONE
glGetBooleani_v - restrict to GLES enums glGetBooleani_v - restrict to GLES enums
gl_HelperInvocation support DONE (i965, r600, panfrost) gl_HelperInvocation support DONE (i965, r600)
GLES3.2, GLSL ES 3.2 -- all DONE: i965/gen9+, radeonsi, virgl, llvmpipe, zink GLES3.2, GLSL ES 3.2 -- all DONE: i965/gen9+, radeonsi, virgl, llvmpipe
GL_EXT_color_buffer_float DONE (all drivers) GL_EXT_color_buffer_float DONE (all drivers)
GL_KHR_blend_equation_advanced DONE (freedreno/a6xx, i965, nvc0, panfrost) GL_KHR_blend_equation_advanced DONE (freedreno/a6xx, i965, nvc0, panfrost)
GL_KHR_debug DONE (all drivers) GL_KHR_debug DONE (all drivers)
GL_KHR_robustness DONE (freedreno, i965, nvc0, r600) GL_KHR_robustness DONE (freedreno, i965, nvc0, r600)
GL_KHR_texture_compression_astc_ldr DONE (freedreno, i965/gen9+, r600, v3d, vc4, panfrost, softpipe, swr, lima) GL_KHR_texture_compression_astc_ldr DONE (freedreno, i965/gen9+, r600, v3d, panfrost, softpipe, swr)
GL_OES_copy_image DONE (all drivers) GL_OES_copy_image DONE (all drivers)
GL_OES_draw_buffers_indexed DONE (all drivers that support GL_ARB_draw_buffers_blend) GL_OES_draw_buffers_indexed DONE (all drivers that support GL_ARB_draw_buffers_blend)
GL_OES_draw_elements_base_vertex DONE (all drivers) GL_OES_draw_elements_base_vertex DONE (all drivers)
GL_OES_geometry_shader DONE (freedreno/a6xx, i965/hsw+, nvc0, r600, softpipe, v3d) GL_OES_geometry_shader DONE (freedreno/a6xx, i965/hsw+, nvc0, r600, softpipe, v3d)
GL_OES_gpu_shader5 DONE (freedreno/a6xx, all drivers that support GL_ARB_gpu_shader5) GL_OES_gpu_shader5 DONE (freedreno/a6xx, all drivers that support GL_ARB_gpu_shader5)
GL_OES_primitive_bounding_box DONE (freedreno/a5xx+, i965/gen7+, nvc0, r600, softpipe, v3d) GL_OES_primitive_bounding_box DONE (freedreno/a5xx+, i965/gen7+, nvc0, r600, softpipe, v3d)
GL_OES_sample_shading DONE (freedreno/a6xx, i965, nvc0, r600, panfrost) GL_OES_sample_shading DONE (freedreno/a6xx, i965, nvc0, r600, zink)
GL_OES_sample_variables DONE (freedreno/a6xx, i965, nvc0, r600, panfrost/bifrost) GL_OES_sample_variables DONE (freedreno/a6xx, i965, nvc0, r600)
GL_OES_shader_image_atomic DONE (all drivers that support GL_ARB_shader_image_load_store) GL_OES_shader_image_atomic DONE (all drivers that support GL_ARB_shader_image_load_store)
GL_OES_shader_io_blocks DONE (All drivers that support GLES 3.1) GL_OES_shader_io_blocks DONE (All drivers that support GLES 3.1)
GL_OES_shader_multisample_interpolation DONE (freedreno/a6xx, i965, nvc0, r600) GL_OES_shader_multisample_interpolation DONE (freedreno/a6xx, i965, nvc0, r600)
GL_OES_tessellation_shader DONE (freedreno/a6xx, all drivers that support GL_ARB_tessellation_shader) GL_OES_tessellation_shader DONE (freedreno/a6xx, all drivers that support GL_ARB_tessellation_shader)
GL_OES_texture_border_clamp DONE (all drivers) GL_OES_texture_border_clamp DONE (all drivers)
GL_OES_texture_buffer DONE (freedreno, i965, nvc0, r600, softpipe, panfrost) GL_OES_texture_buffer DONE (freedreno, i965, nvc0, r600, softpipe)
GL_OES_texture_cube_map_array DONE (freedreno/a4xx+, i965/hsw+, nvc0, r600, softpipe) GL_OES_texture_cube_map_array DONE (freedreno/a4xx+, i965/hsw+, nvc0, r600, softpipe)
GL_OES_texture_stencil8 DONE (all drivers that support GL_ARB_texture_stencil8) GL_OES_texture_stencil8 DONE (all drivers that support GL_ARB_texture_stencil8)
GL_OES_texture_storage_multisample_2d_array DONE (all drivers that support GL_ARB_texture_multisample) GL_OES_texture_storage_multisample_2d_array DONE (all drivers that support GL_ARB_texture_multisample)
Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES version: Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES version:
GL_ARB_bindless_texture DONE (nvc0, radeonsi, zink) GL_ARB_bindless_texture DONE (nvc0, radeonsi)
GL_ARB_cl_event not started GL_ARB_cl_event not started
GL_ARB_compute_variable_group_size DONE (i965/gen7+, nvc0, radeonsi, zink) GL_ARB_compute_variable_group_size DONE (i965/gen7+, nvc0, radeonsi)
GL_ARB_ES3_2_compatibility DONE (i965/gen8+, radeonsi, virgl, zink) GL_ARB_ES3_2_compatibility DONE (i965/gen8+, radeonsi, virgl)
GL_ARB_fragment_shader_interlock DONE (i965, zink) GL_ARB_fragment_shader_interlock DONE (i965)
GL_ARB_gpu_shader_int64 DONE (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe, zink) GL_ARB_gpu_shader_int64 DONE (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe)
GL_ARB_parallel_shader_compile DONE (freedreno, iris, radeonsi) GL_ARB_parallel_shader_compile DONE (all drivers)
GL_ARB_post_depth_coverage DONE (i965, nvc0, radeonsi, llvmpipe, zink) GL_ARB_post_depth_coverage DONE (i965, nvc0, radeonsi, llvmpipe)
GL_ARB_robustness_isolation not started GL_ARB_robustness_isolation not started
GL_ARB_sample_locations DONE (nvc0, zink) GL_ARB_sample_locations DONE (nvc0)
GL_ARB_seamless_cubemap_per_texture DONE (etnaviv/SEAMLESS_CUBE_MAP, freedreno, i965, nvc0, r600, radeonsi, softpipe, swr, virgl) GL_ARB_seamless_cubemap_per_texture DONE (etnaviv/SEAMLESS_CUBE_MAP, freedreno, i965, nvc0, r600, radeonsi, softpipe, swr, virgl)
GL_ARB_shader_ballot DONE (i965/gen8+, nvc0, radeonsi, zink) GL_ARB_shader_ballot DONE (i965/gen8+, nvc0, radeonsi)
GL_ARB_shader_clock DONE (i965/gen7+, nv50, nvc0, r600, radeonsi, virgl, zink) GL_ARB_shader_clock DONE (i965/gen7+, nv50, nvc0, r600, radeonsi, virgl)
GL_ARB_shader_stencil_export DONE (i965/gen9+, r600, radeonsi, softpipe, llvmpipe, swr, virgl, panfrost, zink) GL_ARB_shader_stencil_export DONE (i965/gen9+, r600, radeonsi, softpipe, llvmpipe, swr, virgl, panfrost)
GL_ARB_shader_viewport_layer_array DONE (i965/gen6+, nvc0, radeonsi, zink) GL_ARB_shader_viewport_layer_array DONE (i965/gen6+, nvc0, radeonsi)
GL_ARB_shading_language_include DONE GL_ARB_shading_language_include DONE
GL_ARB_sparse_buffer DONE (radeonsi/CIK+, zink) GL_ARB_sparse_buffer DONE (radeonsi/CIK+)
GL_ARB_sparse_texture not started GL_ARB_sparse_texture not started
GL_ARB_sparse_texture2 not started GL_ARB_sparse_texture2 not started
GL_ARB_sparse_texture_clamp not started GL_ARB_sparse_texture_clamp not started
GL_ARB_texture_filter_minmax DONE (nvc0/gm200+, zink) GL_ARB_texture_filter_minmax not started
GL_EXT_color_buffer_half_float DONE (freedreno, i965, iris, llvmpipe, nv50, nvc0, radeonsi, zink) GL_EXT_color_buffer_half_float DONE (gallium drivers supporting required formats)
GL_EXT_depth_bounds_test DONE (i965/gen12+, nv50, nvc0, radeonsi, softpipe, swr, zink) GL_EXT_memory_object DONE (radeonsi)
GL_EXT_memory_object DONE (radeonsi, i965/gen7+, llvmpipe) GL_EXT_memory_object_fd DONE (radeonsi)
GL_EXT_memory_object_fd DONE (radeonsi, i965/gen7+, llvmpipe)
GL_EXT_memory_object_win32 not started GL_EXT_memory_object_win32 not started
GL_EXT_multisampled_render_to_texture DONE (freedreno/a6xx, panfrost, zink) GL_EXT_multisampled_render_to_texture DONE (freedreno/a6xx, panfrost)
GL_EXT_render_snorm DONE (i965, r600, radeonsi, softpipe, zink) GL_EXT_render_snorm DONE (i965, r600, radeonsi, softpipe)
GL_EXT_semaphore DONE (radeonsi, i965/gen7+) GL_EXT_semaphore DONE (radeonsi)
GL_EXT_semaphore_fd DONE (radeonsi, i965/gen7+) GL_EXT_semaphore_fd DONE (radeonsi)
GL_EXT_semaphore_win32 not started GL_EXT_semaphore_win32 not started
GL_EXT_shader_group_vote DONE (all drivers that support GL_ARB_shader_group_vote) GL_EXT_shader_group_vote DONE (all drivers that support ARB_shader_group_vote)
GL_EXT_sRGB_write_control DONE (all drivers that support GLES 3.0+) GL_EXT_sRGB_write_control DONE (all drivers that support GLES 3.0+)
GL_EXT_texture_norm16 DONE (freedreno, i965, r600, radeonsi, nvc0i, softpipe, zink) GL_EXT_texture_norm16 DONE (freedreno, i965, r600, radeonsi, nvc0i, softpipe)
GL_EXT_texture_sRGB_R8 DONE (all drivers that support GLES 3.0+) GL_EXT_texture_sRGB_R8 DONE (all drivers that support GLES 3.0+)
GL_KHR_blend_equation_advanced_coherent DONE (i965/gen9+, panfrost) GL_KHR_blend_equation_advanced_coherent DONE (i965/gen9+, panfrost)
GL_KHR_texture_compression_astc_hdr DONE (i965/bxt, panfrost) GL_KHR_texture_compression_astc_hdr DONE (i965/bxt, panfrost)
GL_KHR_texture_compression_astc_sliced_3d DONE (i965/gen9+, r600, radeonsi, panfrost, softpipe, swr, zink, lima) GL_KHR_texture_compression_astc_sliced_3d DONE (i965/gen9+, r600, radeonsi, panfrost, softpipe, swr)
GL_OES_depth_texture_cube_map DONE (all drivers that support GLSL 1.30+) GL_OES_depth_texture_cube_map DONE (all drivers that support GLSL 1.30+)
GL_OES_EGL_image DONE (all drivers) GL_OES_EGL_image DONE (all drivers)
GL_OES_EGL_image_external DONE (all drivers) GL_OES_EGL_image_external DONE (all drivers)
@ -340,12 +341,12 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
GL_OES_required_internalformat DONE (all drivers) GL_OES_required_internalformat DONE (all drivers)
GL_OES_surfaceless_context DONE (all drivers) GL_OES_surfaceless_context DONE (all drivers)
GL_OES_texture_compression_astc DONE (core only) GL_OES_texture_compression_astc DONE (core only)
GL_OES_texture_float DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe, panfrost, swr, zink) GL_OES_texture_float DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe, panfrost, swr)
GL_OES_texture_float_linear DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe, panfrost, swr, zink) GL_OES_texture_float_linear DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe, panfrost, swr)
GL_OES_texture_half_float DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe, panfrost, swr, zink, lima) GL_OES_texture_half_float DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe, panfrost, swr)
GL_OES_texture_half_float_linear DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe, panfrost, swr, zink, lima) GL_OES_texture_half_float_linear DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe, panfrost, swr)
GL_OES_texture_view DONE (freedreno, i965/gen8+, r600, radeonsi, nv50, nvc0, softpipe, llvmpipe, swr, zink) GL_OES_texture_view DONE (freedreno, i965/gen8+, r600, radeonsi, nv50, nvc0, softpipe, llvmpipe, swr)
GL_OES_viewport_array DONE (i965, nvc0, r600, radeonsi, softpipe, zink) GL_OES_viewport_array DONE (i965, nvc0, r600, radeonsi, softpipe)
GLX_ARB_context_flush_control not started GLX_ARB_context_flush_control not started
GLX_ARB_robustness_application_isolation not started GLX_ARB_robustness_application_isolation not started
GLX_ARB_robustness_share_group_isolation not started GLX_ARB_robustness_share_group_isolation not started
@ -415,301 +416,93 @@ we DO NOT WANT implementations of these extensions for Mesa.
GL_ARB_shadow_ambient Superseded by GL_ARB_fragment_program GL_ARB_shadow_ambient Superseded by GL_ARB_fragment_program
GL_ARB_vertex_blend Superseded by GL_ARB_vertex_program GL_ARB_vertex_blend Superseded by GL_ARB_vertex_program
Vulkan 1.0 -- all DONE: anv, lvp, radv, tu, v3dv, vn Vulkan 1.0 -- all DONE: anv, radv, v3dv
Vulkan 1.1 -- all DONE: anv, lvp, radv, tu, vn Vulkan 1.1 -- all DONE: anv, radv
VK_KHR_16bit_storage DONE (anv/gen8+, lvp, radv, tu/a650, vn) VK_KHR_16bit_storage DONE (anv/gen8+, radv)
VK_KHR_bind_memory2 DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_bind_memory2 DONE (anv, radv)
VK_KHR_dedicated_allocation DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_dedicated_allocation DONE (anv, radv)
VK_KHR_descriptor_update_template DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_descriptor_update_template DONE (anv, radv)
VK_KHR_device_group DONE (lvp, tu, v3dv, vn) VK_KHR_device_group not started
VK_KHR_device_group_creation DONE (lvp, tu, v3dv, vn) VK_KHR_device_group_creation not started
VK_KHR_external_fence DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_external_fence DONE (anv, radv)
VK_KHR_external_fence_capabilities DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_external_fence_capabilities DONE (anv, radv)
VK_KHR_external_memory DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_external_memory DONE (anv, radv, v3dv)
VK_KHR_external_memory_capabilities DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_external_memory_capabilities DONE (anv, radv, v3dv)
VK_KHR_external_semaphore DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_external_semaphore DONE (anv, radv)
VK_KHR_external_semaphore_capabilities DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_external_semaphore_capabilities DONE (anv, radv)
VK_KHR_get_memory_requirements2 DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_get_memory_requirements2 DONE (anv, radv)
VK_KHR_get_physical_device_properties2 DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_get_physical_device_properties2 DONE (anv, radv, v3dv)
VK_KHR_maintenance1 DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_maintenance1 DONE (anv, radv)
VK_KHR_maintenance2 DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_maintenance2 DONE (anv, radv)
VK_KHR_maintenance3 DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_maintenance3 DONE (anv, radv)
VK_KHR_multiview DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_multiview DONE (anv, radv)
VK_KHR_relaxed_block_layout DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_relaxed_block_layout DONE (anv, radv)
VK_KHR_sampler_ycbcr_conversion DONE (anv, radv, tu, vn) VK_KHR_sampler_ycbcr_conversion DONE (anv, radv)
VK_KHR_shader_draw_parameters DONE (anv, lvp, radv, tu, vn) VK_KHR_shader_draw_parameters DONE (anv, radv)
VK_KHR_storage_buffer_storage_class DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_storage_buffer_storage_class DONE (anv, radv)
VK_KHR_variable_pointers DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_variable_pointers DONE (anv, radv)
Vulkan 1.2 -- all DONE: anv, vn Vulkan 1.2 -- all DONE: anv
VK_KHR_8bit_storage DONE (anv/gen8+, lvp, radv, vn) VK_KHR_8bit_storage DONE (anv/gen8+, radv)
VK_KHR_buffer_device_address DONE (anv/gen8+, lvp, radv, vn) VK_KHR_buffer_device_address DONE (anv/gen8+, radv)
VK_KHR_create_renderpass2 DONE (anv, lvp, radv, tu, vn) VK_KHR_create_renderpass2 DONE (anv, radv)
VK_KHR_depth_stencil_resolve DONE (anv, lvp, radv, tu, vn) VK_KHR_depth_stencil_resolve DONE (anv, radv)
VK_KHR_draw_indirect_count DONE (anv, lvp, radv, tu, vn) VK_KHR_draw_indirect_count DONE (anv, radv)
VK_KHR_driver_properties DONE (anv, lvp, radv, vn) VK_KHR_driver_properties DONE (anv, radv)
VK_KHR_image_format_list DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_image_format_list DONE (anv, radv)
VK_KHR_imageless_framebuffer DONE (anv, lvp, radv, tu, vn) VK_KHR_imageless_framebuffer DONE (anv, radv)
VK_KHR_sampler_mirror_clamp_to_edge DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_sampler_mirror_clamp_to_edge DONE (anv, radv)
VK_KHR_separate_depth_stencil_layouts DONE (anv, lvp, radv, vn) VK_KHR_separate_depth_stencil_layouts DONE (anv, radv)
VK_KHR_shader_atomic_int64 DONE (anv/gen9+, lvp, radv, vn) VK_KHR_shader_atomic_int64 DONE (anv/gen9+, radv)
VK_KHR_shader_float16_int8 DONE (anv/gen8+, lvp, radv, tu, vn) VK_KHR_shader_float16_int8 DONE (anv/gen8+, radv)
VK_KHR_shader_float_controls DONE (anv/gen8+, lvp, radv, tu, vn) VK_KHR_shader_float_controls DONE (anv/gen8+, radv)
VK_KHR_shader_subgroup_extended_types DONE (anv/gen8+, lvp, radv, tu, vn) VK_KHR_shader_subgroup_extended_types DONE (anv/gen8+, radv)
VK_KHR_spirv_1_4 DONE (anv, lvp, radv, tu, vn) VK_KHR_spirv_1_4 DONE (anv, radv)
VK_KHR_timeline_semaphore DONE (anv, lvp, radv, tu, vn) VK_KHR_timeline_semaphore DONE (anv, radv)
VK_KHR_uniform_buffer_standard_layout DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_uniform_buffer_standard_layout DONE (anv, radv)
VK_KHR_vulkan_memory_model DONE (anv, radv, tu, vn) VK_KHR_vulkan_memory_model DONE (anv, radv)
VK_EXT_descriptor_indexing DONE (anv/gen9+, radv, tu, vn) VK_EXT_descriptor_indexing DONE (anv/gen9+, radv)
VK_EXT_host_query_reset DONE (anv, lvp, radv, tu, v3dv, vn) VK_EXT_host_query_reset DONE (anv, radv)
VK_EXT_sampler_filter_minmax DONE (anv/gen9+, lvp, radv, tu, vn) VK_EXT_sampler_filter_minmax DONE (anv/gen9+, radv)
VK_EXT_scalar_block_layout DONE (anv, lvp, radv/gfx7+, tu, vn) VK_EXT_scalar_block_layout DONE (anv, radv/gfx7+)
VK_EXT_separate_stencil_usage DONE (anv, lvp, tu, vn) VK_EXT_separate_stencil_usage DONE (anv)
VK_EXT_shader_viewport_index_layer DONE (anv, lvp, radv, tu, vn) VK_EXT_shader_viewport_index_layer DONE (anv, radv)
Khronos extensions that are not part of any Vulkan version: Khronos extensions that are not part of any Vulkan version:
VK_KHR_android_surface not started VK_KHR_android_surface not started
VK_KHR_copy_commands2 DONE (anv, lvp, radv, v3dv) VK_KHR_copy_commands2 DONE (anv, radv)
VK_KHR_deferred_host_operations DONE (anv, radv) VK_KHR_display DONE (anv, radv)
VK_KHR_display DONE (anv, lvp, radv, tu, v3dv)
VK_KHR_display_swapchain not started VK_KHR_display_swapchain not started
VK_KHR_external_fence_fd DONE (anv, radv, tu, v3dv, vn) VK_KHR_external_fence_fd DONE (anv, radv)
VK_KHR_external_fence_win32 not started VK_KHR_external_fence_win32 not started
VK_KHR_external_memory_fd DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_external_memory_fd DONE (anv, radv, v3dv)
VK_KHR_external_memory_win32 not started VK_KHR_external_memory_win32 not started
VK_KHR_external_semaphore_fd DONE (anv, radv, tu, v3dv, vn) VK_KHR_external_semaphore_fd DONE (anv, radv)
VK_KHR_external_semaphore_win32 not started VK_KHR_external_semaphore_win32 not started
VK_KHR_fragment_shading_rate not started VK_KHR_fragment_shading_rate not started
VK_KHR_get_display_properties2 DONE (anv, lvp, radv, tu, v3dv) VK_KHR_get_display_properties2 DONE (anv, radv)
VK_KHR_get_surface_capabilities2 DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_get_surface_capabilities2 DONE (anv, radv)
VK_KHR_incremental_present DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_incremental_present DONE (anv, radv)
VK_KHR_performance_query DONE (anv/gen8+, tu) VK_KHR_performance_query DONE (anv/gen8+)
VK_KHR_pipeline_executable_properties DONE (anv, radv, tu) VK_KHR_pipeline_executable_properties DONE (anv, radv)
VK_KHR_push_descriptor DONE (anv, lvp, radv, tu) VK_KHR_push_descriptor DONE (anv, radv)
VK_KHR_shader_clock DONE (anv, radv) VK_KHR_shader_clock DONE (anv, radv)
VK_KHR_shader_integer_dot_product DONE (radv)
VK_KHR_shader_non_semantic_info DONE (anv, radv) VK_KHR_shader_non_semantic_info DONE (anv, radv)
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, radv) VK_KHR_shader_terminate_invocation DONE (anv, radv)
VK_KHR_shader_terminate_invocation DONE (anv, radv, tu)
VK_KHR_shared_presentable_image not started VK_KHR_shared_presentable_image not started
VK_KHR_surface DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_surface DONE (anv, radv)
VK_KHR_surface_protected_capabilities DONE (anv, lvp, radv, v3dv, vn) VK_KHR_surface_protected_capabilities DONE (anv, radv)
VK_KHR_swapchain DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_swapchain DONE (anv, radv)
VK_KHR_swapchain_mutable_format DONE (anv, radv, v3dv, vn) VK_KHR_swapchain_mutable_format DONE (anv, radv)
VK_KHR_wayland_surface DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_wayland_surface DONE (anv, radv)
VK_KHR_workgroup_memory_explicit_layout DONE (anv, radv)
VK_KHR_win32_keyed_mutex not started VK_KHR_win32_keyed_mutex not started
VK_KHR_win32_surface DONE (lvp) VK_KHR_win32_surface not started
VK_KHR_xcb_surface DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_xcb_surface DONE (anv, radv)
VK_KHR_xlib_surface DONE (anv, lvp, radv, tu, v3dv, vn) VK_KHR_xlib_surface DONE (anv, radv)
VK_KHR_zero_initialize_workgroup_memory DONE (anv, radv)
VK_EXT_4444_formats DONE (anv, lvp, radv, tu)
VK_EXT_calibrated_timestamps DONE (anv, lvp, radv)
VK_EXT_color_write_enable DONE (anv, lvp, v3dv)
VK_EXT_conditional_rendering DONE (anv, lvp, radv, tu)
VK_EXT_conservative_rasterization DONE (anv/gen9+, radv)
VK_EXT_custom_border_color DONE (anv, lvp, radv, tu, v3dv)
VK_EXT_debug_marker DONE (radv)
VK_EXT_depth_clip_enable DONE (anv, lvp, radv, tu)
VK_EXT_depth_range_unrestricted DONE (radv)
VK_EXT_discard_rectangles DONE (radv)
VK_EXT_display_control DONE (anv, radv, tu)
VK_EXT_extended_dynamic_state DONE (anv, lvp, radv, tu)
VK_EXT_extended_dynamic_state2 DONE (anv, lvp, radv)
VK_EXT_external_memory_dma_buf DONE (anv, radv, tu, v3dv, vn)
VK_EXT_external_memory_host DONE (anv, lvp, radv)
VK_EXT_filter_cubic DONE (tu/a650)
VK_EXT_fragment_shader_interlock DONE (anv/gen9+)
VK_EXT_global_priority DONE (anv, radv)
VK_EXT_image_drm_format_modifier DONE (anv, radv/gfx9+, tu, vn)
VK_EXT_image_robustness DONE (anv, radv)
VK_EXT_index_type_uint8 DONE (anv, lvp, radv/gfx8+, v3dv, tu)
VK_EXT_inline_uniform_block DONE (anv, radv)
VK_EXT_line_rasterization DONE (anv, lvp, radv, tu)
VK_EXT_memory_budget DONE (anv, radv, tu)
VK_EXT_memory_priority DONE (radv)
VK_EXT_multi_draw DONE (anv, lvp, radv)
VK_EXT_pci_bus_info DONE (anv, radv)
VK_EXT_physical_device_drm DONE (anv, radv, v3dv)
VK_EXT_pipeline_creation_cache_control DONE (anv, radv, v3dv)
VK_EXT_pipeline_creation_feedback DONE (anv, radv, v3dv)
VK_EXT_post_depth_coverage DONE (anv/gfx10+, lvp, radv)
VK_EXT_private_data DONE (anv, lvp, radv, tu, v3dv)
VK_EXT_provoking_vertex DONE (anv, lvp, radv, tu, v3dv)
VK_EXT_queue_family_foreign DONE (anv, radv, vn)
VK_EXT_robustness2 DONE (anv, radv, tu)
VK_EXT_sample_locations DONE (anv, radv/gfx9-, tu/a650)
VK_EXT_shader_atomic_float DONE (anv, radv)
VK_EXT_shader_atomic_float2 DONE (anv/gen9+, radv)
VK_EXT_shader_demote_to_helper_invocation DONE (anv, radv, tu)
VK_EXT_shader_image_atomic_int64 DONE (radv)
VK_EXT_shader_stencil_export DONE (anv/gen9+, lvp, radv, tu)
VK_EXT_shader_subgroup_ballot DONE (anv, radv)
VK_EXT_shader_subgroup_vote DONE (anv, radv)
VK_EXT_subgroup_size_control DONE (anv, radv)
VK_EXT_texel_buffer_alignment DONE (anv, radv)
VK_EXT_transform_feedback DONE (anv, lvp, radv, tu, vn)
VK_EXT_vertex_attribute_divisor DONE (anv, radv, lvp, tu, v3dv)
VK_EXT_vertex_input_dynamic_state DONE (lvp, radv)
VK_EXT_ycbcr_image_arrays DONE (anv, radv)
VK_ANDROID_external_memory_android_hardware_buffer DONE (anv, radv, vn)
VK_ANDROID_native_buffer DONE (anv, radv, vn)
VK_GOOGLE_decorate_string DONE (anv, lvp, radv)
VK_GOOGLE_hlsl_functionality1 DONE (anv, lvp, radv)
VK_GOOGLE_user_type DONE (anv, radv)
VK_IMG_filter_cubic DONE (tu/a650)
VK_NV_compute_shader_derivatives DONE (anv, radv)
VK_EXT_acquire_drm_display DONE (radv, anv)
VK_VALVE_mutable_descriptor_type DONE (radv, tu)
OpenCL 1.0 -- all DONE:
Image support in progress
OpenCL 1.1 -- all DONE:
Additional queries for clGetDeviceInfo DONE (nvc0, r600, radeonsi)
CL_CONTEXT_NUM_DEVICES for clGetContextInfo DONE
Optional image formats not started
clCreateSubBuffer DONE
Read from, write to, copy rectangular regions DONE
clSetMemObjectDestructorCallback DONE
Control OpenCL C version when building DONE
Query for preferred work-group size multiple DONE (nvc0, r600, radeonsi)
Support user events DONE
clSetEventCallback DONE
Minimum requirement changes for clGetDeviceInfo DONE (nvc0, r600, radeonsi)
Arg prerequisite change for clEnqueueNDRangeKernel DONE ()
3-component vector data types DONE (nvc0, r600, radeonsi)
cl_khr_byte_addressable_store DONE (nvc0, r600, radeonsi)
cl_khr_global_int32_base_atomics DONE (nvc0, r600, radeonsi)
cl_khr_global_int32_extended_atomics DONE (nvc0, r600, radeonsi)
cl_khr_local_int32_base_atomics DONE (nvc0, r600, radeonsi)
cl_khr_local_int32_extended_atomics DONE (nvc0, r600, radeonsi)
OpenCL 1.2 -- all DONE:
Custom devices DONE
Built-in kernels DONE ()
Device partitioning DONE ()
Separate compilation and linking of programs DONE
Extend cl_mem_flags DONE
clEnqueueFillBuffer, clEnqueueFillImage DONE
Add CL_MAP_WRITE_INVALIDATE_REGION to cl_map_flags DONE
New image types not started
clCreateImage DONE
clEnqueueMigrateMemObjects DONE
Retrieve kernels information from a program DONE
clGetKernelArgInfo DONE
clEnqueueMarkerWithWaitList DONE
clEnqueueBarrierWithWaitList DONE
clUnloadPlatformCompiler DONE
cl_khr_fp64 DONE (nvc0, r600, radeonsi)
printf DONE (nvc0)
CL_KERNEL_ATTRIBUTES for clGetKernelInfo DONE
OpenCL 2.0 -- all DONE:
Shared virtual memory DONE (nvc0)
Device queues not started
- cl_khr_create_command_queue not started
- Additional queries for clGetDeviceInfo not started
Pipes not started
Extended 2D images creation not started
- cl_khr_image2d_from_buffer not started
- cl_khr_depth_images not started
- from sRGB images not started
clCreateSamplerWithProperties not started
cl_khr_3d_image_writes not started
OpenCL 2.1 -- all DONE:
Sub groups not started
- cl_khr_subgroups not started
- Additional queries for clGetDeviceInfo not started
cl_khr_il_program DONE (nvc0)
Device and host timer synchronization not started
clEnqueueSVMMigrateMem not started
clCloneKernel not started
Default device command queue not started
OpenCL 2.2 -- all DONE:
clSetProgramSpecializationConstant not started
clSetProgramReleaseCallback not started
Initialization and clean-up kernels not started
CL_MAX_SIZE_RESTRICTION_EXCEEDED for clSetKernelArg not started
Support SPIR-V 1.1 and 1.2 not started
OpenCL 3.0 -- all DONE
Optional device capabilities queries in progress
cl_khr_extended_versioning DONE
clSetContextDestructorCallback DONE
clCreateBufferWithProperties DONE
clCreateImageWithProperties DONE
Query properties arrays in progress
Supported OpenCL C versions and features queries DONE
CL_COMMAND_SVM_MIGRATE_MEM for clGetEventInfo not started
Latest conformance version passed for devices not started
Khronos, and EXT extensions that are not part of any OpenCL version:
cl_ext_atomic_counters_32 not started
cl_ext_atomic_counters_64 not started
cl_ext_device_fission not started
cl_ext_migrate_memobject not started
cl_khr_async_work_group_copy_fence not started
cl_khr_d3d10_sharing not started
cl_khr_d3d11_sharing not started
cl_khr_device_enqueue_local_arg_types not started
cl_khr_dx9_media_sharing not started
cl_khr_egl_event not started
cl_khr_egl_image not started
cl_khr_extended_async_copies not started
cl_khr_fp16 DONE ()
cl_khr_gl_depth_images not started
cl_khr_gl_event not started
cl_khr_gl_msaa_sharing not started
cl_khr_gl_sharing not started
cl_khr_icd DONE
cl_khr_initialize_memory not started
cl_khr_int64_base_atomics DONE ()
cl_khr_int64_extended_atomics DONE ()
cl_khr_mipmap_image not started
cl_khr_mipmap_image_writes not started
cl_khr_priority_hints not started
cl_khr_select_fprounding_mode not started
cl_khr_spir not started
cl_khr_srgb_image_writes not started
cl_khr_subgroup_named_barrier not started
cl_khr_subgroups not started
cl_khr_terminate_context not started
cl_khr_throttle_hints not started
Vendor specific extensions that are not part of any OpenCL version:
cl_arm_shared_virtual_memory DONE (nvc0)
The following extensions are not part of any OpenCL version, and we DO NOT WANT
implementations of these extensions for Mesa.
cl_nv_d3d10_sharing Superseded by cl_khr_d3d10_sharing
cl_nv_d3d11_sharing Superseded by cl_khr_d3d10_sharing
A graphical representation of this information can be found at A graphical representation of this information can be found at

View File

@ -48,8 +48,6 @@ buffers, surfaces) are bound to the driver.
type. index is used to indicate which buffer to set (some APIs may allow type. index is used to indicate which buffer to set (some APIs may allow
multiple ones to be set, and binding a specific one later, though drivers multiple ones to be set, and binding a specific one later, though drivers
are mostly restricted to the first one right now). are mostly restricted to the first one right now).
If take_ownership is true, the buffer reference is passed to the driver, so
that the driver doesn't have to increment the reference count.
* ``set_inlinable_constants`` sets inlinable constants for constant buffer 0. * ``set_inlinable_constants`` sets inlinable constants for constant buffer 0.
@ -118,8 +116,6 @@ objects. They all follow simple, one-method binding calls, e.g.
levels. This corresponds to GL's ``PATCH_DEFAULT_OUTER_LEVEL``. levels. This corresponds to GL's ``PATCH_DEFAULT_OUTER_LEVEL``.
* ``default_inner_level`` is the default value for the inner tessellation * ``default_inner_level`` is the default value for the inner tessellation
levels. This corresponds to GL's ``PATCH_DEFAULT_INNER_LEVEL``. levels. This corresponds to GL's ``PATCH_DEFAULT_INNER_LEVEL``.
* ``set_patch_vertices`` sets the number of vertices per input patch
for tessellation.
* ``set_debug_callback`` sets the callback to be used for reporting * ``set_debug_callback`` sets the callback to be used for reporting
various debug messages, eventually reported via KHR_debug and various debug messages, eventually reported via KHR_debug and
@ -128,10 +124,9 @@ objects. They all follow simple, one-method binding calls, e.g.
Samplers Samplers
^^^^^^^^ ^^^^^^^^
pipe_sampler_state objects control how textures are sampled pipe_sampler_state objects control how textures are sampled (coordinate
(coordinate wrap modes, interpolation modes, etc). Note that unless wrap modes, interpolation modes, etc). Note that samplers are not used
``PIPE_CAP_TEXTURE_BUFFER_SAMPLER`` is enabled, samplers are not used for for texture buffer objects. That is, pipe_context::bind_sampler_views()
texture buffer objects. That is, pipe_context::bind_sampler_views()
will not bind a sampler if the corresponding sampler view refers to a will not bind a sampler if the corresponding sampler view refers to a
PIPE_BUFFER resource. PIPE_BUFFER resource.
@ -256,10 +251,6 @@ discussed above.
for the purposes of the draw_auto stage. -1 means the buffer should for the purposes of the draw_auto stage. -1 means the buffer should
be appended to, and everything else sets the internal offset. be appended to, and everything else sets the internal offset.
* ``stream_output_target_offset`` Retrieve the internal stream offset from
an streamout target. This is used to implement Vulkan pause/resume support
which needs to pass the internal offset to the API.
NOTE: The currently-bound vertex or geometry shader must be compiled with NOTE: The currently-bound vertex or geometry shader must be compiled with
the properly-filled-in structure pipe_stream_output_info describing which the properly-filled-in structure pipe_stream_output_info describing which
outputs should be written to buffers and how. The structure is part of outputs should be written to buffers and how. The structure is part of
@ -567,9 +558,6 @@ Normally, if the occlusion query returned a non-zero result subsequent
drawing happens normally so fragments may be generated, shaded and drawing happens normally so fragments may be generated, shaded and
processed even where they're known to be obscured. processed even where they're known to be obscured.
The ''render_condition_mem'' function specifies the drawing is dependant
on a value in memory. A buffer resource and offset denote which 32-bit
value to use for the query. This is used for Vulkan API.
Flushing Flushing
^^^^^^^^ ^^^^^^^^

View File

@ -326,15 +326,10 @@ clip_halfz
When true clip space in the z axis goes from [0..1] (D3D). When false When true clip space in the z axis goes from [0..1] (D3D). When false
[-1, 1] (GL) [-1, 1] (GL)
depth_clip_near depth_clip
When false, the near depth clipping plane of the view volume is disabled. When false, the near and far depth clipping planes of the view volume are
depth_clip_far disabled and the depth value will be clamped at the per-pixel level, after
When false, the far depth clipping plane of the view volume is disabled. polygon offset has been applied and before depth testing.
depth_clamp
Whether the depth value will be clamped to the interval defined by the
near and far depth range at the per-pixel level, after polygon offset has
been applied and before depth testing. Note that a clamp to [0,1] according
to GL rules should always happen even if this is disabled.
clip_plane_enable clip_plane_enable
For each k in [0, PIPE_MAX_CLIP_PLANES), if bit k of this field is set, For each k in [0, PIPE_MAX_CLIP_PLANES), if bit k of this field is set,

View File

@ -32,19 +32,6 @@ specified file. Paths may be relative or absolute; relative paths are relative
to the working directory. For example, setting it to "trace.xml" will cause to the working directory. For example, setting it to "trace.xml" will cause
the trace to be written to a file of the same name in the working directory. the trace to be written to a file of the same name in the working directory.
.. envvar:: GALLIUM_TRACE_TC <bool> (false)
If enabled while :ref:`trace` is active, this variable specifies that the threaded context
should be traced for drivers which implement it. By default, the driver thread is traced,
which will include any reordering of the command stream from threaded context.
.. envvar:: GALLIUM_TRACE_TRIGGER <string> ("")
If set while :ref:`trace` is active, this variable specifies a filename to monitor.
Once the file exists (e.g., from the user running 'touch /path/to/file'), a single
frame will be recorded into the trace output.
Paths may be relative or absolute; relative paths are relative to the working directory.
.. envvar:: GALLIUM_DUMP_CPU <bool> (false) .. envvar:: GALLIUM_DUMP_CPU <bool> (false)
Dump information about the current CPU that the driver is running on. Dump information about the current CPU that the driver is running on.

View File

@ -51,11 +51,6 @@ Format names with an embedded underscore are subsampled. ``R8G8_B8G8`` is a
single 32-bit block of two pixels, where the R and B values are repeated in single 32-bit block of two pixels, where the R and B values are repeated in
both pixels. both pixels.
Index buffers do not have a natural format in Gallium structures. For purposes
of ``is_format_supported`` queries, the formats ``R8_UINT``, ``R16_UINT``, and
``R32_UINT`` are used with ``PIPE_BIND_INDEX_BUFFER`` for 8-bit, 16-bit, and
32-bit index buffers respectively.
References References
---------- ----------

View File

@ -14,7 +14,6 @@ Contents:
format format
context context
cso cso
buffermapping
distro distro
postprocess postprocess
glossary glossary

View File

@ -80,9 +80,6 @@ The integer capabilities:
disabling depth clipping (through pipe_rasterizer_state) separately for disabling depth clipping (through pipe_rasterizer_state) separately for
the near and far plane. If not, depth_clip_near and depth_clip_far will be the near and far plane. If not, depth_clip_near and depth_clip_far will be
equal. equal.
``PIPE_CAP_DEPTH_CLAMP_ENABLE``: Whether the driver is capable of
enabling depth clamping (through pipe_rasterizer_state) separately from depth
clipping. If not, depth_clamp will be the inverse of depth_clip_far.
* ``PIPE_CAP_SHADER_STENCIL_EXPORT``: Whether a stencil reference value can be * ``PIPE_CAP_SHADER_STENCIL_EXPORT``: Whether a stencil reference value can be
written from a fragment shader. written from a fragment shader.
* ``PIPE_CAP_TGSI_INSTANCEID``: Whether TGSI_SEMANTIC_INSTANCEID is supported * ``PIPE_CAP_TGSI_INSTANCEID``: Whether TGSI_SEMANTIC_INSTANCEID is supported
@ -168,9 +165,6 @@ The integer capabilities:
TEXCOORD semantic. TEXCOORD semantic.
Also, TGSI_SEMANTIC_PCOORD becomes available, which labels a fragment shader Also, TGSI_SEMANTIC_PCOORD becomes available, which labels a fragment shader
input that will always be replaced with sprite coordinates. input that will always be replaced with sprite coordinates.
* ``PIPE_CAP_TEXTURE_BUFFER_SAMPLER``: Whether a sampler should still
be used for PIPE_BUFFER resources (normally a sampler is only used
if the texture target is PIPE_TEXTURE_*).
* ``PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER``: Whether it is preferable * ``PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER``: Whether it is preferable
to use a blit to implement a texture transfer which needs format conversions to use a blit to implement a texture transfer which needs format conversions
and swizzling in gallium frontends. Generally, all hardware drivers with and swizzling in gallium frontends. Generally, all hardware drivers with
@ -309,8 +303,7 @@ The integer capabilities:
selecting the interpolation weights with a conditional assignment selecting the interpolation weights with a conditional assignment
in the shader. in the shader.
* ``PIPE_CAP_SHAREABLE_SHADERS``: Whether shader CSOs can be used by any * ``PIPE_CAP_SHAREABLE_SHADERS``: Whether shader CSOs can be used by any
pipe_context. Important for reducing jank at draw time by letting GL shaders pipe_context.
linked in one thread be used in another thread without recompiling.
* ``PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS``: * ``PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS``:
Whether copying between compressed and plain formats is supported where Whether copying between compressed and plain formats is supported where
a compressed block is copied to/from a plain pixel of the same size. a compressed block is copied to/from a plain pixel of the same size.
@ -392,10 +385,6 @@ The integer capabilities:
equal interpolation qualifiers. equal interpolation qualifiers.
Components may overlap, notably when the gaps in an array of dvec3 are Components may overlap, notably when the gaps in an array of dvec3 are
filled in. filled in.
* ``PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME``: Whether GL_ARB_transform_feeddback2
is supported, including pausing/resuming queries and having
`count_from_stream_output` set on indirect draws to implement
glDrawTransformFeedback. Required for OpenGL 4.0.
* ``PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS``: Whether interleaved stream * ``PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS``: Whether interleaved stream
output mode is able to interleave across buffers. This is required for output mode is able to interleave across buffers. This is required for
ARB_transform_feedback3. ARB_transform_feedback3.
@ -484,8 +473,7 @@ The integer capabilities:
those bits set, pipe_context::set_constant_buffer(.., 0, ..) is ignored those bits set, pipe_context::set_constant_buffer(.., 0, ..) is ignored
by the driver, and the driver can throw assertion failures. by the driver, and the driver can throw assertion failures.
* ``PIPE_CAP_PACKED_UNIFORMS``: True if the driver supports packed uniforms * ``PIPE_CAP_PACKED_UNIFORMS``: True if the driver supports packed uniforms
as opposed to padding to vec4s. Requires ``PIPE_SHADER_CAP_INTEGERS`` if as opposed to padding to vec4s.
``lower_uniforms_to_ubo`` is set.
* ``PIPE_CAP_CONSERVATIVE_RASTER_POST_SNAP_TRIANGLES``: Whether the * ``PIPE_CAP_CONSERVATIVE_RASTER_POST_SNAP_TRIANGLES``: Whether the
``PIPE_CONSERVATIVE_RASTER_POST_SNAP`` mode is supported for triangles. ``PIPE_CONSERVATIVE_RASTER_POST_SNAP`` mode is supported for triangles.
The post-snap mode means the conservative rasterization occurs after The post-snap mode means the conservative rasterization occurs after
@ -580,20 +568,11 @@ The integer capabilities:
* ``PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS``: True if the driver supports Variable Pointers in SPIR-V shaders. * ``PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS``: True if the driver supports Variable Pointers in SPIR-V shaders.
* ``PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION``: True if driver supports demote keyword in GLSL programs. * ``PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION``: True if driver supports demote keyword in GLSL programs.
* ``PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE``: True if driver wants the TG4 component encoded in sampler swizzle rather than as a separate source. * ``PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE``: True if driver wants the TG4 component encoded in sampler swizzle rather than as a separate source.
* ``PIPE_CAP_FLATSHADE``: Driver supports pipe_rasterizer_state::flatshade. Must be 1 * ``PIPE_CAP_FLATSHADE``: Driver supports pipe_rasterizer_state::flatshade.
for non-NIR drivers or gallium nine. * ``PIPE_CAP_ALPHA_TEST``: Driver supports alpha-testing.
* ``PIPE_CAP_ALPHA_TEST``: Driver supports alpha-testing. Must be 1
for non-NIR drivers or gallium nine. If set, frontend may set
``pipe_depth_stencil_alpha_state->alpha_enabled`` and ``alpha_func``.
Otherwise, alpha test will be lowered to a comparison and discard_if in the
fragment shader.
* ``PIPE_CAP_POINT_SIZE_FIXED``: Driver supports point-sizes that are fixed, * ``PIPE_CAP_POINT_SIZE_FIXED``: Driver supports point-sizes that are fixed,
as opposed to writing gl_PointSize for every point. as opposed to writing gl_PointSize for every point.
* ``PIPE_CAP_TWO_SIDED_COLOR``: Driver supports two-sided coloring. Must be 1 * ``PIPE_CAP_TWO_SIDED_COLOR``: Driver supports two-sided coloring.
for non-NIR drivers. If set, pipe_rasterizer_state may be set to indicate
that backfacing primitives should use the back-side color as the FS input
color. If unset, mesa/st will lower it to gl_FrontFacing reads in the
fragment shader.
* ``PIPE_CAP_CLIP_PLANES``: Driver supports user-defined clip-planes. * ``PIPE_CAP_CLIP_PLANES``: Driver supports user-defined clip-planes.
* ``PIPE_CAP_MAX_VERTEX_BUFFERS``: Number of supported vertex buffers. * ``PIPE_CAP_MAX_VERTEX_BUFFERS``: Number of supported vertex buffers.
* ``PIPE_CAP_OPENCL_INTEGER_FUNCTIONS``: Driver supports extended OpenCL-style integer functions. This includes averge, saturating additiong, saturating subtraction, absolute difference, count leading zeros, and count trailing zeros. * ``PIPE_CAP_OPENCL_INTEGER_FUNCTIONS``: Driver supports extended OpenCL-style integer functions. This includes averge, saturating additiong, saturating subtraction, absolute difference, count leading zeros, and count trailing zeros.
@ -602,6 +581,7 @@ The integer capabilities:
* ``PIPE_CAP_PACKED_STREAM_OUTPUT``: Driver supports packing optimization for stream output (e.g. GL transform feedback captured variables). Defaults to true. * ``PIPE_CAP_PACKED_STREAM_OUTPUT``: Driver supports packing optimization for stream output (e.g. GL transform feedback captured variables). Defaults to true.
* ``PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED``: Driver needs the nir_lower_viewport_transform pass to be enabled. This also means that the gl_Position value is modified and should be lowered for transform feedback, if needed. Defaults to false. * ``PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED``: Driver needs the nir_lower_viewport_transform pass to be enabled. This also means that the gl_Position value is modified and should be lowered for transform feedback, if needed. Defaults to false.
* ``PIPE_CAP_PSIZ_CLAMPED``: Driver needs for the point size to be clamped. Additionally, the gl_PointSize has been modified and its value should be lowered for transform feedback, if needed. Defaults to false. * ``PIPE_CAP_PSIZ_CLAMPED``: Driver needs for the point size to be clamped. Additionally, the gl_PointSize has been modified and its value should be lowered for transform feedback, if needed. Defaults to false.
* ``PIPE_CAP_DRAW_INFO_START_WITH_USER_INDICES``: pipe_draw_info::start can be non-zero with user indices.
* ``PIPE_CAP_GL_BEGIN_END_BUFFER_SIZE``: Buffer size used to upload vertices for glBegin/glEnd. * ``PIPE_CAP_GL_BEGIN_END_BUFFER_SIZE``: Buffer size used to upload vertices for glBegin/glEnd.
* ``PIPE_CAP_VIEWPORT_SWIZZLE``: Whether pipe_viewport_state::swizzle can be used to specify pre-clipping swizzling of coordinates (see GL_NV_viewport_swizzle). * ``PIPE_CAP_VIEWPORT_SWIZZLE``: Whether pipe_viewport_state::swizzle can be used to specify pre-clipping swizzling of coordinates (see GL_NV_viewport_swizzle).
* ``PIPE_CAP_SYSTEM_SVM``: True if all application memory can be shared with the GPU without explicit mapping. * ``PIPE_CAP_SYSTEM_SVM``: True if all application memory can be shared with the GPU without explicit mapping.
@ -613,16 +593,6 @@ The integer capabilities:
* ``PIPE_CAP_NO_CLIP_ON_COPY_TEX``: Driver doesn't want x/y/width/height clipped based on src size when doing a copy texture operation (eg: may want out-of-bounds reads that produce 0 instead of leaving the texture content undefined) * ``PIPE_CAP_NO_CLIP_ON_COPY_TEX``: Driver doesn't want x/y/width/height clipped based on src size when doing a copy texture operation (eg: may want out-of-bounds reads that produce 0 instead of leaving the texture content undefined)
* ``PIPE_CAP_MAX_TEXTURE_MB``: Maximum texture size in MB (default is 1024) * ``PIPE_CAP_MAX_TEXTURE_MB``: Maximum texture size in MB (default is 1024)
* ``PIPE_CAP_DEVICE_PROTECTED_CONTENT``: Whether the device support protected / encrypted content. * ``PIPE_CAP_DEVICE_PROTECTED_CONTENT``: Whether the device support protected / encrypted content.
* ``PIPE_CAP_PREFER_REAL_BUFFER_IN_CONSTBUF0``: The state tracker is encouraged to upload constants into a real buffer and bind it into constant buffer 0 instead of binding a user pointer. This may enable a faster codepath in a gallium frontend for drivers that really prefer a real buffer.
* ``PIPE_CAP_GL_CLAMP``: Driver natively supports GL_CLAMP. Required for non-NIR drivers with the GL frontend. NIR drivers with the cap unavailable will have GL_CLAMP lowered to txd/txl with a saturate on the coordinates.
* ``PIPE_CAP_TEXRECT``: Driver supports rectangle textures. Required for OpenGL on `!prefers_nir` drivers. If this cap is not present, st/mesa will lower the NIR to use normal 2D texture sampling by using either `txs` or `nir_intrinsic_load_texture_scaling` to normalize the texture coordinates.
* ``PIPE_CAP_SAMPLER_REDUCTION_MINMAX``: Driver supports EXT min/max sampler reduction.
* ``PIPE_CAP_SAMPLER_REDUCTION_MINMAX_ARB``: Driver supports ARB min/max sampler reduction with format queries.
* ``PIPE_CAP_EMULATE_NONFIXED_PRIMITIVE_RESTART``: Driver requests all draws using a non-fixed restart index to be rewritten to use a fixed restart index.
* ``PIPE_CAP_SUPPORTED_PRIM_MODES``: A bitmask of the ``pipe_prim_type`` enum values that the driver can natively support.
* ``PIPE_CAP_SUPPORTED_PRIM_MODES_WITH_RESTART``: A bitmask of the ``pipe_prim_type`` enum values that the driver can natively support for primitive restart. Only useful if ``PIPE_CAP_PRIMITIVE_RESTART`` is also exported.
* ``PIPE_CAP_PREFER_BACK_BUFFER_REUSE``: Only applies to DRI_PRIME. If 1, the driver prefers that DRI3 tries to use the same back buffer each frame. If 0, this means DRI3 will at least use 2 back buffers and ping-pong between them to allow the tiled->linear copy to run in parallel.
* ``PIPE_CAP_DRAW_VERTEX_STATE``: Driver supports `pipe_screen::create_vertex_state/vertex_state_destroy` and `pipe_context::draw_vertex_state`. Only used by display lists and designed to serve vbo_save.
.. _pipe_capf: .. _pipe_capf:
@ -695,11 +665,6 @@ MOV OUT[0], CONST[0][3] # copy vector 3 of constbuf 0
If unsupported, half precision ops need to be lowered to full precision. If unsupported, half precision ops need to be lowered to full precision.
* ``PIPE_SHADER_CAP_FP16_DERIVATIVES``: Whether half precision floating-point * ``PIPE_SHADER_CAP_FP16_DERIVATIVES``: Whether half precision floating-point
DDX and DDY opcodes are supported. DDX and DDY opcodes are supported.
* ``PIPE_SHADER_CAP_FP16_CONST_BUFFERS``: Whether half precision floating-point
constant buffer loads are supported. Drivers are recommended to report 0
if x86 F16C is not supported by the CPU (or an equivalent instruction set
on other CPU architectures), otherwise they could be impacted by emulated
FP16 conversions in glUniform.
* ``PIPE_SHADER_CAP_INT16``: Whether 16-bit signed and unsigned integer types * ``PIPE_SHADER_CAP_INT16``: Whether 16-bit signed and unsigned integer types
are supported. are supported.
* ``PIPE_SHADER_CAP_GLSL_16BIT_CONSTS``: Lower mediump constants to 16-bit. * ``PIPE_SHADER_CAP_GLSL_16BIT_CONSTS``: Lower mediump constants to 16-bit.
@ -1068,28 +1033,6 @@ returned. The callback itself may also be NULL if the driver doesn't support
an on-disk shader cache. an on-disk shader cache.
is_dmabuf_modifier_supported
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Query whether the driver supports a **modifier** in combination with a
**format**, and whether it is only supported with "external" texture targets.
If the combination is supported in any fashion, true is returned. If the
**external_only** parameter is not NULL, the bool it points to is set to
false if non-external texture targets are supported with the specified modifier+
format, or true if only external texture targets are supported.
get_dmabuf_modifier_planes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Query the number of planes required by the image layout specified by the
**modifier** and **format** parameters. The value returned includes both planes
dictated by **format** and any additional planes required for driver-specific
auxiliary data necessary for the layout defined by **modifier**.
If the proc is NULL, no auxiliary planes are required for any layout supported by
**screen** and the number of planes can be derived directly from **format**.
Thread safety Thread safety
------------- -------------

View File

@ -23,29 +23,26 @@ When an instruction has a scalar result, the result is usually copied into
each of the components of *dst*. When this happens, the result is said to be each of the components of *dst*. When this happens, the result is said to be
*replicated* to *dst*. :opcode:`RCP` is one such instruction. *replicated* to *dst*. :opcode:`RCP` is one such instruction.
Source Modifiers Modifiers
^^^^^^^^^^^^^^^^
TGSI supports 32-bit negate and absolute value modifiers on floating-point
inputs, and 32-bit integer negates on some drivers. The negate applies after
absolute value if both are present.
The type of an input can be found by ``tgsi_opcode_infer_src_type()``, and
TGSI_OPCODE_MOV and the second and third operands of TGSI_OPCODE_UCMP (which
return TGSI_TYPE_UNTYPED) are also considered floats for the purpose of source
modifiers.
Other Modifiers
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
The saturate modifier clamps 32-bit destination stores to [0.0, 1.0]. TGSI supports modifiers on inputs (as well as saturate and precise modifier
on instructions).
For arithmetic instruction having a precise modifier certain optimizations For arithmetic instruction having a precise modifier certain optimizations
which may alter the result are disallowed. Example: *add(mul(a,b),c)* can't be which may alter the result are disallowed. Example: *add(mul(a,b),c)* can't be
optimized to TGSI_OPCODE_MAD, because some hardware only supports the fused optimized to TGSI_OPCODE_MAD, because some hardware only supports the fused
MAD instruction. MAD instruction.
For inputs which have a floating point type, both absolute value and
negation modifiers are supported (with absolute value being applied
first). The only source of TGSI_OPCODE_MOV and the second and third
sources of TGSI_OPCODE_UCMP are considered to have float type for
applying modifiers.
For inputs which have signed or unsigned type only the negate modifier is
supported.
Instruction Set Instruction Set
--------------- ---------------
@ -734,7 +731,7 @@ This instruction replicates its result.
.. opcode:: TXB2 - Texture Lookup With Bias (some cube maps only) .. opcode:: TXB2 - Texture Lookup With Bias (some cube maps only)
this is the same as TXB, but uses another reg to encode the this is the same as TXB, but uses another reg to encode the
LOD bias value for cube map arrays and shadow cube maps. lod bias value for cube map arrays and shadow cube maps.
Presumably shadow 2d arrays and shadow 3d targets could use Presumably shadow 2d arrays and shadow 3d targets could use
this encoding too, but this is not legal. this encoding too, but this is not legal.
@ -799,7 +796,7 @@ This instruction replicates its result.
.. opcode:: TXL - Texture Lookup With explicit LOD .. opcode:: TXL - Texture Lookup With explicit LOD
for cube map array textures, the explicit LOD value for cube map array textures, the explicit lod value
cannot be passed in src0.w, and TXL2 must be used instead. cannot be passed in src0.w, and TXL2 must be used instead.
if the target is a shadow texture, the reference value is always if the target is a shadow texture, the reference value is always
@ -826,7 +823,7 @@ This instruction replicates its result.
.. opcode:: TXL2 - Texture Lookup With explicit LOD (for cube map arrays only) .. opcode:: TXL2 - Texture Lookup With explicit LOD (for cube map arrays only)
this is the same as TXL, but uses another reg to encode the this is the same as TXL, but uses another reg to encode the
explicit LOD value. explicit lod value.
Presumably shadow 3d / 2d array / cube targets could use Presumably shadow 3d / 2d array / cube targets could use
this encoding too, but this is not legal. this encoding too, but this is not legal.
@ -997,7 +994,7 @@ XXX doesn't look like most of the opcodes really belong here.
Compute the LOD information that the texture pipe would use to access the Compute the LOD information that the texture pipe would use to access the
texture. The Y component contains the computed LOD lambda_prime. The X texture. The Y component contains the computed LOD lambda_prime. The X
component contains the LOD that will be accessed, based on min/max LODs component contains the LOD that will be accessed, based on min/max lod's
and mipmap filters. and mipmap filters.
.. math:: .. math::
@ -3445,7 +3442,7 @@ component is used.
TGSI_SEMANTIC_WORK_DIM TGSI_SEMANTIC_WORK_DIM
"""""""""""""""""""""" """"""""""""""""""""""
For compute shaders started via OpenCL this retrieves the work_dim For compute shaders started via opencl this retrieves the work_dim
parameter to the clEnqueueNDRangeKernel call with which the shader parameter to the clEnqueueNDRangeKernel call with which the shader
was started. was started.
@ -3561,6 +3558,11 @@ interpolation should be done at, one of ``TGSI_INTERPOLATE_LOC_*``. Note that
when per-sample shading is enabled, the implementation may choose to when per-sample shading is enabled, the implementation may choose to
interpolate at the sample irrespective of the Location field. interpolate at the sample irrespective of the Location field.
The CylindricalWrap bitfield specifies which register components
should be subject to cylindrical wrapping when interpolating by the
rasteriser. If TGSI_CYLINDRICAL_WRAP_X is set to 1, the X component
should be interpolated according to cylindrical wrapping rules.
Declaration Sampler View Declaration Sampler View
^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -22,7 +22,7 @@ You can find some further To-do lists here:
**Common To-Do lists:** **Common To-Do lists:**
- `features.txt <https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/docs/features.txt>`__ - `features.txt <https://gitlab.freedesktop.org/mesa/mesa/-/blob/master/docs/features.txt>`__
- Status of OpenGL 3.x / 4.x features in Mesa. - Status of OpenGL 3.x / 4.x features in Mesa.
**Legacy Driver specific To-Do lists:** **Legacy Driver specific To-Do lists:**

View File

@ -1,142 +1,310 @@
.. include:: contents.rst
Introduction Introduction
============ ============
The Mesa project began as an open-source implementation of the The Mesa project began as an open-source implementation of the
`OpenGL`_ specification - a system for rendering interactive 3D graphics. `OpenGL <https://www.opengl.org/>`__ specification - a system for
rendering interactive 3D graphics.
Over the years the project has grown to implement more graphics APIs, Over the years the project has grown to implement more graphics APIs,
including `OpenGL ES`_, `OpenCL`_, `OpenMAX`_, `VDPAU`_, `VA-API`_, including `OpenGL ES <https://www.khronos.org/opengles/>`__ (versions 1,
`XvMC`_, `Vulkan`_ and `EGL`_. 2, 3), `OpenCL <https://www.khronos.org/opencl/>`__,
`OpenMAX <https://www.khronos.org/openmax/>`__,
`VDPAU <https://en.wikipedia.org/wiki/VDPAU>`__, `VA
API <https://en.wikipedia.org/wiki/Video_Acceleration_API>`__,
`XvMC <https://en.wikipedia.org/wiki/X-Video_Motion_Compensation>`__ and
`Vulkan <https://www.khronos.org/vulkan/>`__.
A variety of device drivers allows the Mesa libraries to be used in many A variety of device drivers allows the Mesa libraries to be used in many
different environments ranging from software emulation to complete different environments ranging from software emulation to complete
hardware acceleration for modern GPUs. hardware acceleration for modern GPUs.
Mesa ties into several other open-source projects: the `Direct Rendering Mesa ties into several other open-source projects: the `Direct Rendering
Infrastructure`_, `X.org`_, and `Wayland`_ to provide OpenGL support on Infrastructure <https://dri.freedesktop.org/>`__ and
Linux, FreeBSD, and other operating systems. `X.org <https://x.org>`__ to provide OpenGL support on Linux, FreeBSD
and other operating systems.
.. _OpenGL: https://www.opengl.org/ Project History
.. _OpenGL ES: https://www.khronos.org/opengles/ ---------------
.. _OpenCL: https://www.khronos.org/opencl/
.. _OpenMAX: https://www.khronos.org/openmax/
.. _VDPAU: https://en.wikipedia.org/wiki/VDPAU
.. _VA-API: https://en.wikipedia.org/wiki/Video_Acceleration_API
.. _XvMC: https://en.wikipedia.org/wiki/X-Video_Motion_Compensation
.. _Vulkan: https://www.khronos.org/vulkan/
.. _EGL: https://www.khronos.org/egl/
.. _Direct Rendering Infrastructure: https://dri.freedesktop.org/
.. _X.org: https://x.org
.. _Wayland: https://wayland.freedesktop.org
.. toctree:: The Mesa project was originally started by Brian Paul. Here's a short
:maxdepth: 1 history of the project.
:caption: Documentation
:hidden:
self August, 1993: I begin working on Mesa in my spare time. The project has
history no name at that point. I was simply interested in writing a simple 3D
developers graphics library that used the then-new OpenGL API. I was partially
systems inspired by the *VOGL* library which emulated a subset of IRIS GL. I had
license been programming with IRIS GL since 1991.
faq
relnotes
thanks
.. toctree:: November 1994: I contact SGI to ask permission to distribute my
:maxdepth: 2 OpenGL-like graphics library on the internet. SGI was generally
:caption: Download and Install receptive to the idea and after negotiations with SGI's legal
:hidden: department, I get permission to release it.
download February 1995: Mesa 1.0 is released on the internet. I expected that a
install few people would be interested in it, but not thousands. I was soon
precompiled receiving patches, new features and thank-you notes on a daily basis.
That encouraged me to continue working on Mesa. The name Mesa just
popped into my head one day. SGI had asked me not to use the terms
*"Open"* or *"GL"* in the project name and I didn't want to make up a
new acronym. Later, I heard of the Mesa programming language and the
Mesa spreadsheet for NeXTStep.
.. toctree:: In the early days, OpenGL wasn't available on too many systems. It even
:maxdepth: 1 took a while for SGI to support it across their product line. Mesa
:caption: Need help? filled a big hole during that time. For a lot of people, Mesa was their
:hidden: first introduction to OpenGL. I think SGI recognized that Mesa actually
helped to promote the OpenGL API, so they didn't feel threatened by the
project.
lists 1995-1996: I continue working on Mesa both during my spare time and
bugs during my work hours at the Space Science and Engineering Center at the
University of Wisconsin in Madison. My supervisor, Bill Hibbard, lets me
do this because Mesa is now being using for the
`Vis5D <https://www.ssec.wisc.edu/%7Ebillh/vis.html>`__ project.
.. toctree:: October 1996: Mesa 2.0 is released. It implements the OpenGL 1.1
:maxdepth: 1 specification.
:caption: User Topics
:hidden:
shading March 1997: Mesa 2.2 is released. It supports the new 3dfx Voodoo
egl graphics card via the Glide library. It's the first really popular
opengles hardware OpenGL implementation for Linux.
envvars
osmesa
debugging
perf
perfetto
extensions
application-issues
viewperf
xlibdriver
.. toctree:: September 1998: Mesa 3.0 is released. It's the first publicly-available
:maxdepth: 1 implementation of the OpenGL 1.2 API.
:caption: Drivers
:hidden:
drivers/d3d12 March 1999: I attend my first OpenGL ARB meeting. I contribute to the
drivers/freedreno development of several official OpenGL extensions over the years.
drivers/lima
drivers/llvmpipe
drivers/openswr
drivers/panfrost
drivers/svga3d
drivers/v3d
drivers/vc4
drivers/venus
drivers/zink
.. toctree:: September 1999: I'm hired by Precision Insight, Inc. Mesa is a key
:maxdepth: 1 component of 3D hardware acceleration in the new DRI project for
:caption: Developer Topics XFree86. Drivers for 3dfx, 3dLabs, Intel, Matrox and ATI hardware soon
:hidden: follow.
repository October 2001: Mesa 4.0 is released. It implements the OpenGL 1.3
sourcetree specification.
utilities
helpwanted
devinfo
codingstyle
submittingpatches
releasing
release-calendar
dispatch
gallium/index
nir/index
isl/index
android
macos
Linux Kernel Drivers <https://www.kernel.org/doc/html/latest/gpu/>
.. toctree:: November 2001: I cofounded Tungsten Graphics, Inc. with Keith Whitwell,
:maxdepth: 1 Jens Owen, David Dawes and Frank LaMonica. Tungsten Graphics was
:caption: Testing acquired by VMware in December 2008.
:hidden:
conform November 2002: Mesa 5.0 is released. It implements the OpenGL 1.4
ci/index specification.
.. toctree:: January 2003: Mesa 6.0 is released. It implements the OpenGL 1.5
:maxdepth: 1 specification as well as the GL_ARB_vertex_program and
:caption: Links GL_ARB_fragment_program extensions.
:hidden:
OpenGL Website <https://www.opengl.org> June 2007: Mesa 7.0 is released, implementing the OpenGL 2.1
DRI Website <https://dri.freedesktop.org> specification and OpenGL Shading Language.
Developer Blogs <https://planet.freedesktop.org>
.. toctree:: 2008: Keith Whitwell and other Tungsten Graphics employees develop
:maxdepth: 1 `Gallium <https://en.wikipedia.org/wiki/Gallium3D>`__ - a new GPU
:caption: Hosted by: abstraction layer. The latest Mesa drivers are based on Gallium and
:hidden: other APIs such as OpenVG are implemented on top of Gallium.
freedesktop.org <https://www.freedesktop.org> February 2012: Mesa 8.0 is released, implementing the OpenGL 3.0
specification and version 1.30 of the OpenGL Shading Language.
July 2016: Mesa 12.0 is released, including OpenGL 4.3 support and
initial support for Vulkan for Intel GPUs. Plus, there's another Gallium
software driver ("swr") based on LLVM and developed by Intel.
Ongoing: Mesa is the OpenGL implementation for devices designed by
Intel, AMD, NVIDIA, Qualcomm, Broadcom, Vivante, plus the VMware and
VirGL virtual GPUs. There's also several software-based renderers:
swrast (the legacy Mesa rasterizer), softpipe (a Gallium reference
driver), llvmpipe (LLVM/JIT-based high-speed rasterizer) and swr
(another LLVM-based driver).
Work continues on the drivers and core Mesa to implement newer versions
of the OpenGL, OpenGL ES and Vulkan specifications.
Major Versions
--------------
This is a summary of the major versions of Mesa. Mesa's major version
number has been incremented whenever a new version of the OpenGL
specification is implemented.
Version 12.x features
~~~~~~~~~~~~~~~~~~~~~
Version 12.x of Mesa implements the OpenGL 4.3 API, but not all drivers
support OpenGL 4.3.
Initial support for Vulkan is also included.
Version 11.x features
~~~~~~~~~~~~~~~~~~~~~
Version 11.x of Mesa implements the OpenGL 4.1 API, but not all drivers
support OpenGL 4.1.
Version 10.x features
~~~~~~~~~~~~~~~~~~~~~
Version 10.x of Mesa implements the OpenGL 3.3 API, but not all drivers
support OpenGL 3.3.
Version 9.x features
~~~~~~~~~~~~~~~~~~~~
Version 9.x of Mesa implements the OpenGL 3.1 API. While the driver for
Intel Sandy Bridge and Ivy Bridge is the only driver to support OpenGL
3.1, many developers across the open-source community contributed
features required for OpenGL 3.1. The primary features added since the
Mesa 8.0 release are GL_ARB_texture_buffer_object and
GL_ARB_uniform_buffer_object.
Version 9.0 of Mesa also included the first release of the Clover state
tracker for OpenCL.
Version 8.x features
~~~~~~~~~~~~~~~~~~~~
Version 8.x of Mesa implements the OpenGL 3.0 API. The developers at
Intel deserve a lot of credit for implementing most of the OpenGL 3.0
features in core Mesa, the GLSL compiler as well as the i965 driver.
Version 7.x features
~~~~~~~~~~~~~~~~~~~~
Version 7.x of Mesa implements the OpenGL 2.1 API. The main feature of
OpenGL 2.x is the OpenGL Shading Language.
Version 6.x features
~~~~~~~~~~~~~~~~~~~~
Version 6.x of Mesa implements the OpenGL 1.5 API with the following
extensions incorporated as standard features:
- GL_ARB_occlusion_query
- GL_ARB_vertex_buffer_object
- GL_EXT_shadow_funcs
Also note that several OpenGL tokens were renamed in OpenGL 1.5 for the
sake of consistency. The old tokens are still available.
::
New Token Old Token
------------------------------------------------------------
GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
GL_FOG_COORD GL_FOG_COORDINATE
GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY
GL_SRC0_RGB GL_SOURCE0_RGB
GL_SRC1_RGB GL_SOURCE1_RGB
GL_SRC2_RGB GL_SOURCE2_RGB
GL_SRC0_ALPHA GL_SOURCE0_ALPHA
GL_SRC1_ALPHA GL_SOURCE1_ALPHA
GL_SRC2_ALPHA GL_SOURCE2_ALPHA
See the `OpenGL
specification <https://www.opengl.org/documentation/spec.html>`__ for
more details.
Version 5.x features
~~~~~~~~~~~~~~~~~~~~
Version 5.x of Mesa implements the OpenGL 1.4 API with the following
extensions incorporated as standard features:
- GL_ARB_depth_texture
- GL_ARB_shadow
- GL_ARB_texture_env_crossbar
- GL_ARB_texture_mirror_repeat
- GL_ARB_window_pos
- GL_EXT_blend_color
- GL_EXT_blend_func_separate
- GL_EXT_blend_logic_op
- GL_EXT_blend_minmax
- GL_EXT_blend_subtract
- GL_EXT_fog_coord
- GL_EXT_multi_draw_arrays
- GL_EXT_point_parameters
- GL_EXT_secondary_color
- GL_EXT_stencil_wrap
- GL_EXT_texture_lod_bias (plus, a per-texture LOD bias parameter)
- GL_SGIS_generate_mipmap
Version 4.x features
~~~~~~~~~~~~~~~~~~~~
Version 4.x of Mesa implements the OpenGL 1.3 API with the following
extensions incorporated as standard features:
- GL_ARB_multisample
- GL_ARB_multitexture
- GL_ARB_texture_border_clamp
- GL_ARB_texture_compression
- GL_ARB_texture_cube_map
- GL_ARB_texture_env_add
- GL_ARB_texture_env_combine
- GL_ARB_texture_env_dot3
- GL_ARB_transpose_matrix
Version 3.x features
~~~~~~~~~~~~~~~~~~~~
Version 3.x of Mesa implements the OpenGL 1.2 API with the following
features:
- BGR, BGRA and packed pixel formats
- New texture border clamp mode
- glDrawRangeElements()
- standard 3-D texturing
- advanced MIPMAP control
- separate specular color interpolation
Version 2.x features
~~~~~~~~~~~~~~~~~~~~
Version 2.x of Mesa implements the OpenGL 1.1 API with the following
features.
- Texture mapping:
- glAreTexturesResident
- glBindTexture
- glCopyTexImage1D
- glCopyTexImage2D
- glCopyTexSubImage1D
- glCopyTexSubImage2D
- glDeleteTextures
- glGenTextures
- glIsTexture
- glPrioritizeTextures
- glTexSubImage1D
- glTexSubImage2D
- Vertex Arrays:
- glArrayElement
- glColorPointer
- glDrawElements
- glEdgeFlagPointer
- glIndexPointer
- glInterleavedArrays
- glNormalPointer
- glTexCoordPointer
- glVertexPointer
- Client state management:
- glDisableClientState
- glEnableClientState
- glPopClientAttrib
- glPushClientAttrib
- Misc:
- glGetPointer
- glIndexub
- glIndexubv
- glPolygonOffset

View File

@ -17,9 +17,11 @@ Build system
^^^^^^^^^^^^ ^^^^^^^^^^^^
- `Meson <https://mesonbuild.com>`__ is required when building on \*nix - `Meson <https://mesonbuild.com>`__ is required when building on \*nix
platforms and on Windows. platforms and is supported on Windows.
- `SCons <http://www.scons.org/>`__ is an alternative for building on
Windows and Linux.
- Android Build system when building as native Android component. Meson - Android Build system when building as native Android component. Meson
is used when building ARC. is used when when building ARC.
Compiler Compiler
^^^^^^^^ ^^^^^^^^
@ -35,16 +37,18 @@ you're willing to maintain support for other compiler get in touch.
Third party/extra tools. Third party/extra tools.
^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^
- `Python <https://www.python.org/>`__ - Python 3.5 or newer is required. - `Python <https://www.python.org/>`__ - Python is required. When
building with SCons 2.7 is required. When building with meson 3.5 or
newer is required.
- `Python Mako module <http://www.makotemplates.org/>`__ - Python Mako - `Python Mako module <http://www.makotemplates.org/>`__ - Python Mako
module is required. Version 0.8.0 or later should work. module is required. Version 0.8.0 or later should work.
- Lex / Yacc - for building the Mesa IR and GLSL compiler. - lex / yacc - for building the Mesa IR and GLSL compiler.
On Linux systems, Flex and Bison versions 2.5.35 and 2.4.1, On Linux systems, Flex and Bison versions 2.5.35 and 2.4.1,
respectively, (or later) should work. On Windows with MinGW, install respectively, (or later) should work. On Windows with MinGW, install
Flex and Bison with: Flex and Bison with:
.. code-block:: console ::
mingw-get install msys-flex msys-bison mingw-get install msys-flex msys-bison
@ -60,13 +64,13 @@ Third party/extra tools.
~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
The requirements depends on the features selected at configure stage. The requirements depends on the features selected at configure stage.
Check/install the respective development package as prompted by the Check/install the respective -devel package as prompted by the configure
configure error message. error message.
Here are some common ways to retrieve most/all of the dependencies based Here are some common ways to retrieve most/all of the dependencies based
on the packaging tool used by your distro. on the packaging tool used by your distro.
.. code-block:: console ::
zypper source-install --build-deps-only Mesa # openSUSE/SLED/SLES zypper source-install --build-deps-only Mesa # openSUSE/SLED/SLES
yum-builddep mesa # yum Fedora, OpenSuse(?) yum-builddep mesa # yum Fedora, OpenSuse(?)
@ -84,7 +88,7 @@ for \*nix systems like Linux and BSD, macOS, Haiku, and Windows.
The general approach is: The general approach is:
.. code-block:: console ::
meson builddir/ meson builddir/
ninja -C builddir/ ninja -C builddir/
@ -92,7 +96,7 @@ The general approach is:
On Windows you can also use the Visual Studio backend On Windows you can also use the Visual Studio backend
.. code-block:: console ::
meson builddir --backend=vs meson builddir --backend=vs
cd builddir cd builddir
@ -101,96 +105,48 @@ On Windows you can also use the Visual Studio backend
Please read the :doc:`detailed meson instructions <meson>` for more Please read the :doc:`detailed meson instructions <meson>` for more
information information
3. Running against a local build 3. Building with SCons (Windows/Linux)
-------------------------------- --------------------------------------
It's often necessary or useful when debugging driver issues or testing new To build Mesa with SCons on Linux or Windows do
branches to run against a local build of Mesa without doing a system-wide
install. To do this, choose a temporary location for the install. A directory
called ``installdir`` inside your mesa tree is as good as anything. All of the
commands below will assume ``$MESA_INSTALLDIR`` is an absolute path to this
location.
First, configure Mesa and install in the temporary location: ::
.. code-block:: console scons
meson builddir/ -Dprefix="$MESA_INSTALLDIR" OTHER_OPTIONS The build output will be placed in
ninja -C builddir/ install build/\ *platform*-*machine*-*debug*/..., where *platform* is for
example Linux or Windows, *machine* is x86 or x86_64, optionally
followed by -debug for debug builds.
where ``OTHER_OPTIONS`` is replaced by any meson configuration options you may To build Mesa with SCons for Windows on Linux using the MinGW
want. For instance, if you want to build the LLVMpipe drivers, it would look crosscompiler toolchain do
like this:
.. code-block:: console ::
meson builddir/ -Dprefix="$MESA_INSTALLDIR" -Ddri-drivers= \ scons platform=windows toolchain=crossmingw machine=x86 libgl-gdi
-Dgallium-drivers=swrast -Dvulkan-drivers=swrast
ninja -C builddir/ install
Once Mesa has built and installed to ``$MESA_INSTALLDIR``, you can run any app This will create:
against your temporary install by setting the right environment variables.
Which variable you have to set depends on the API.
OpenGL - build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa
~~~~~~ + Gallium + softpipe (or llvmpipe), binary compatible with Windows's
opengl32.dll
.. code-block:: console Put them all in the same directory to test them. Additional information
is available in `README.WIN32 <README.WIN32>`__.
LD_LIBRARY_PATH="$MESA_INSTALLDIR/lib64" glxinfo
You may need to use ``lib`` instead of ``lib64`` on some systems or a full
library specifier on debian. Look inside ``installdir`` for the directory that
contains ``libGL.so`` and use that one.
Vulkan
~~~~~~
.. code-block:: console
VK_ICD_FILENAMES="$MESA_INSTALLDIR/share/vulkan/icd/my_icd.json" vulkaninfo
where ``my_icd.json`` is replaced with the actual ICD json file name. This
will depend on your driver. For instance, the 64-bit lavapipe driver ICD file
is named ``lvp_icd.x86_64.json``.
OpenCL
~~~~~~
.. code-block:: console
OCL_ICD_VENDORS="$MESA_INSTALLDIR/etc/OpenCL/vendors" clinfo
Unlike Vulkan, OpenCL takes a path to the whole ``vendors`` folder and will
enumerate any drivers found there.
Troubleshooting local builds
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you are trying to run an app against a local build and it's not working,
here are a few things to check:
1. Double-check your paths and try with the simplest app you can. Before
banging your head on a Steam game, make sure your path works with
``glxgears`` first.
2. Watch out for wrapper scripts. Some more complex apps such as games have
big start-up scripts. Sometimes those scripts scrub the environment or set
``LD_LIBRARY_PATH`` to something in the game's install directory.
3. Is your Mesa build the same arch as your app? Lots of games are still
32-bit and your Mesa build is probably 64-bit by default.
4. 32 and 64-bit builds in the same local install directory doesn't typically
work. Distros go to great lengths to make this work in your system install
and it's hard to get it right for a local install. If you've recently
built 64-bit and are now building 32-bit, throw away the install directory
first to prevent conflicts.
4. Building with AOSP (Android) 4. Building with AOSP (Android)
------------------------------- -------------------------------
<TODO> Currently one can build Mesa for Android as part of the AOSP project,
yet your experience might vary.
In order to achieve that one should update their local manifest to point
to the upstream repo, set the appropriate BOARD_GPU_DRIVERS and build
the libGLES_mesa library.
FINISHME: Improve on the instructions add references to Rob H
repos/Jenkins, Android-x86 and/or other resources.
5. Library Information 5. Library Information
---------------------- ----------------------
@ -199,7 +155,7 @@ When compilation has finished, look in the top-level ``lib/`` (or
``lib64/``) directory. You'll see a set of library files similar to ``lib64/``) directory. You'll see a set of library files similar to
this: this:
.. code-block:: console ::
lrwxrwxrwx 1 brian users 10 Mar 26 07:53 libGL.so -> libGL.so.1* lrwxrwxrwx 1 brian users 10 Mar 26 07:53 libGL.so -> libGL.so.1*
lrwxrwxrwx 1 brian users 19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100* lrwxrwxrwx 1 brian users 19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
@ -213,7 +169,7 @@ the OSMesa (Off-Screen) interface library.
If you built the DRI hardware drivers, you'll also see the DRI drivers: If you built the DRI hardware drivers, you'll also see the DRI drivers:
.. code-block:: console ::
-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i915_dri.so -rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i915_dri.so
-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i965_dri.so -rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i965_dri.so
@ -234,6 +190,6 @@ determine the proper compiler and linker flags.
For example, compiling and linking a GLUT application can be done with: For example, compiling and linking a GLUT application can be done with:
.. code-block:: console ::
gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo

View File

@ -30,7 +30,7 @@ Mesa device drivers are copyrighted by their authors. See below for a
list of Mesa's main components and the license for each. list of Mesa's main components and the license for each.
The core Mesa library is licensed according to the terms of the MIT The core Mesa library is licensed according to the terms of the MIT
license. This allows integration with the XFree86, X.Org and DRI license. This allows integration with the XFree86, Xorg and DRI
projects. projects.
The default Mesa license is as follows: The default Mesa license is as follows:

View File

@ -46,8 +46,8 @@ archives are still available, however:
IRC IRC
--- ---
join `#dri-devel channel <irc://irc.oftc.net/dri-devel>`__ on join `#dri-devel channel <irc://chat.freenode.net#dri-devel>`__ on
`irc.oftc.net <https://webchat.oftc.net/>`__ `irc.freenode.net <https://webchat.freenode.net/>`__
OpenGL Forums OpenGL Forums
------------- -------------

View File

@ -109,7 +109,7 @@ running "meson build/" but this feature is being discussed upstream. For
now, we have a ``bin/meson-options.py`` script that prints the options now, we have a ``bin/meson-options.py`` script that prints the options
for you. If that script doesn't work for some reason, you can always for you. If that script doesn't work for some reason, you can always
look in the look in the
`meson_options.txt <https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/meson_options.txt>`__ `meson_options.txt <https://gitlab.freedesktop.org/mesa/mesa/-/blob/master/meson_options.txt>`__
file at the root of the project. file at the root of the project.
With additional arguments ``meson configure`` can be used to change With additional arguments ``meson configure`` can be used to change
@ -157,7 +157,9 @@ CC and CXX environment variables.
All of these compilers are tested and work with Ninja, but if you want All of these compilers are tested and work with Ninja, but if you want
Visual Studio integration or you just like msbuild, passing Visual Studio integration or you just like msbuild, passing
``--backend=vs`` to Meson will generate a Visual Studio solution. ``--backend=vs`` to Meson will generate a Visual Studio solution. If you
want to use ICL or clang-cl with the vsbackend you will need Meson
0.52.0 or greater. Older versions always use the Microsoft compiler.
3. Advanced Usage 3. Advanced Usage
----------------- -----------------
@ -165,8 +167,8 @@ Visual Studio integration or you just like msbuild, passing
Installation Location Installation Location
^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^
Meson default to installing :file:`libGL.so` in your system's main Meson default to installing libGL.so in your system's main lib/
:file:`lib/` directory and DRI drivers to a :file:`dri/` subdirectory. directory and DRI drivers to a dri/ subdirectory.
Developers will often want to install Mesa to a testing directory rather Developers will often want to install Mesa to a testing directory rather
than the system library directory. This can be done with the --prefix than the system library directory. This can be done with the --prefix
@ -228,11 +230,12 @@ LLVM
Meson includes upstream logic to wrap llvm-config using its standard Meson includes upstream logic to wrap llvm-config using its standard
dependency interface. dependency interface.
Meson can use CMake to find LLVM. But due to the way LLVM implements its As of Meson 0.51.0 Meson can use CMake to find LLVM (the CMake finder
CMake finder it will only find static libraries, it will never find was added in Meson 0.49.0, but LLVM cannot be found until 0.51) Due to
:file:`libllvm.so`. There is also a ``-Dcmake_module_path`` option, the way LLVM implements its CMake finder it will only find static
which points to the root of an alternative installation (the prefix). libraries, it will never find libllvm.so. There is also a
For example: ``-Dcmake_module_path`` option in this Meson version, which points to
the root of an alternative installation (the prefix). For example:
.. code-block:: console .. code-block:: console
@ -244,8 +247,9 @@ provide information about the native build environment (as opposed to a
cross build environment). They are ini formatted and can override where cross build environment). They are ini formatted and can override where
to find llvm-config: to find llvm-config:
.. code-block:: ini custom-llvm.ini
:caption: custom-llvm.ini
::
[binaries] [binaries]
llvm-config = '/usr/local/bin/llvm/llvm-config' llvm-config = '/usr/local/bin/llvm/llvm-config'
@ -256,12 +260,22 @@ Then configure Meson:
meson builddir/ --native-file custom-llvm.ini meson builddir/ --native-file custom-llvm.ini
Meson < 0.49 doesn't support native files, so to specify a custom
``llvm-config`` you need to modify your ``$PATH`` (or ``%PATH%`` on
Windows), which will be searched for ``llvm-config``,
``llvm-config$version``, and ``llvm-config-$version``:
.. code-block:: console
PATH=/path/to/folder/with/llvm-config:$PATH meson build
For selecting llvm-config for cross compiling a `"cross For selecting llvm-config for cross compiling a `"cross
file" <https://mesonbuild.com/Cross-compilation.html#defining-the-environment>`__ file" <https://mesonbuild.com/Cross-compilation.html#defining-the-environment>`__
should be used. It uses the same format as the native file above: should be used. It uses the same format as the native file above:
.. code-block:: ini cross-llvm.ini
:caption: cross-llvm.ini
::
[binaries] [binaries]
... ...
@ -286,7 +300,7 @@ this case a "binary wrap". Follow the steps below:
- Install the binaries and headers into the - Install the binaries and headers into the
``$mesa_src/subprojects/llvm`` ``$mesa_src/subprojects/llvm``
- Add a :file:`meson.build` file to that directory (more on that later) - Add a meson.build file to that directory (more on that later)
The wrap file must define the following: The wrap file must define the following:
@ -300,7 +314,7 @@ It may also define:
- ``has_rtti``: a ``bool`` that declares whether LLVM was built with - ``has_rtti``: a ``bool`` that declares whether LLVM was built with
RTTI. Defaults to true RTTI. Defaults to true
such a :file:`meson.build` file might look like: such a meson.build file might look like:
:: ::
@ -368,7 +382,7 @@ passed as --option=foo to ``meson``, but -Doption=foo to
For those coming from autotools be aware of the following: For those coming from autotools be aware of the following:
``--buildtype/-Dbuildtype`` ``--buildtype/-Dbuildtype``
This option will set the compiler debug/optimization levels to aid This option will set the compiler debug/optimisation levels to aid
debugging the Mesa libraries. debugging the Mesa libraries.
Note that in Meson this defaults to ``debugoptimized``, and not Note that in Meson this defaults to ``debugoptimized``, and not
@ -399,8 +413,8 @@ this file to ``meson`` or ``meson configure`` with the ``--cross-file``
parameter. parameter.
This file can live at any location, but you can use the bare filename This file can live at any location, but you can use the bare filename
(without the folder path) if you put it in (without the folder path) if you put it in $XDG_DATA_HOME/meson/cross or
:file:`$XDG_DATA_HOME/meson/cross` or :file:`~/.local/share/meson/cross` ~/.local/share/meson/cross
Below are a few example of cross files, but keep in mind that you will Below are a few example of cross files, but keep in mind that you will
likely have to alter them for your system. likely have to alter them for your system.
@ -413,7 +427,7 @@ of those, as they'll have the right values for your system:
32-bit build on x86 linux: 32-bit build on x86 linux:
.. code-block:: ini ::
[binaries] [binaries]
c = '/usr/bin/gcc' c = '/usr/bin/gcc'
@ -437,7 +451,7 @@ of those, as they'll have the right values for your system:
64-bit build on ARM linux: 64-bit build on ARM linux:
.. code-block:: ini ::
[binaries] [binaries]
c = '/usr/bin/aarch64-linux-gnu-gcc' c = '/usr/bin/aarch64-linux-gnu-gcc'
@ -455,7 +469,7 @@ of those, as they'll have the right values for your system:
64-bit build on x86 Windows: 64-bit build on x86 Windows:
.. code-block:: ini ::
[binaries] [binaries]
c = '/usr/bin/x86_64-w64-mingw32-gcc' c = '/usr/bin/x86_64-w64-mingw32-gcc'

View File

@ -27,3 +27,28 @@ Run the Demos
------------- -------------
There are some demos in ``mesa/demos`` repository. There are some demos in ``mesa/demos`` repository.
Developers
----------
Dispatch Table
~~~~~~~~~~~~~~
OpenGL ES has an additional indirection when dispatching functions
::
Mesa: glFoo() --> _mesa_Foo()
OpenGL ES: glFoo() --> _es_Foo() --> _mesa_Foo()
The indirection serves several purposes
- When a function is in Mesa and the type matches, it checks the
arguments and calls the Mesa function.
- When a function is in Mesa but the type mismatches, it checks and
converts the arguments before calling the Mesa function.
- When a function is not available in Mesa, or accepts arguments that
are not available in OpenGL, it provides its own implementation.
Other than the last case, OpenGL ES uses ``APIspec.xml`` to generate
functions to check and/or converts the arguments.

View File

@ -11,10 +11,11 @@ renderings: OSMesaCreateContext(), OSMesaMakeCurrent(), and
OSMesaDestroyContext(). See the Mesa/include/GL/osmesa.h header for more OSMesaDestroyContext(). See the Mesa/include/GL/osmesa.h header for more
information about the API functions. information about the API functions.
The OSMesa interface may be used with the gallium software renderers: The OSMesa interface may be used with any of three software renderers:
#. llvmpipe - this is the high-performance Gallium LLVM driver #. llvmpipe - this is the high-performance Gallium LLVM driver
#. softpipe - this it the reference Gallium software driver #. softpipe - this it the reference Gallium software driver
#. swrast - this is the legacy Mesa software rasterizer
There are several examples of OSMesa in the mesa/demos repository. There are several examples of OSMesa in the mesa/demos repository.
@ -23,9 +24,9 @@ Building OSMesa
Configure and build Mesa with something like: Configure and build Mesa with something like:
.. code-block:: console ::
meson builddir -Dosmesa=true -Dgallium-drivers=swrast -Ddri-drivers=[] -Dvulkan-drivers=[] -Dprefix=$PWD/builddir/install meson builddir -Dosmesa=gallium -Dgallium-drivers=swrast -Ddri-drivers=[] -Dvulkan-drivers=[] -Dprefix=$PWD/builddir/install
ninja -C builddir install ninja -C builddir install
Make sure you have LLVM installed first if you want to use the llvmpipe Make sure you have LLVM installed first if you want to use the llvmpipe
@ -35,7 +36,8 @@ When the build is complete you should find:
:: ::
$PWD/builddir/install/lib/libOSMesa.so $PWD/builddir/install/lib/libOSMesa.so (swrast-based OSMesa)
$PWD/builddir/install/lib/gallium/libOSMsea.so (Gallium-based OSMesa)
Set your LD_LIBRARY_PATH to point to $PWD/builddir/install to use the Set your LD_LIBRARY_PATH to point to $PWD/builddir/install to use the
libraries libraries

View File

@ -27,8 +27,18 @@ nominate a patch in the next stable release.
Calendar Calendar
-------- --------
.. csv-table:: Calendar +--------+---------------+------------+-----------------+-----------------------------------------+
:header: "Branch", "Expected date", "Release", "Release manager", "Notes" | Branch | Expected date | Release | Release manager | Notes |
:file: release-calendar.csv +========+===============+============+=================+=========================================+
:stub-columns: 1 | 20.2 | 2020-11-11 | 20.2.3 | Dylan Baker | |
:widths: auto | +---------------+------------+-----------------+-----------------------------------------+
| | 2020-11-24 | 20.2.4 | Dylan Baker | |
+--------+---------------+------------+-----------------+-----------------------------------------+
| 20.3 | 2020-11-04 | 20.3.0-rc1 | Dylan Baker | |
| +---------------+------------+-----------------+-----------------------------------------+
| | 2020-11-11 | 20.3.0-rc2 | Dylan Baker | |
| +---------------+------------+-----------------+-----------------------------------------+
| | 2020-11-18 | 20.3.0-rc3 | Dylan Baker | |
| +---------------+------------+-----------------+-----------------------------------------+
| | 2020-11-25 | 20.3.0-rc4 | Dylan Baker | or 20.3.0 final |
+--------+---------------+------------+-----------------+-----------------------------------------+

View File

@ -112,29 +112,29 @@ good contact point.
then they should be squashed together. The commit messages and the then they should be squashed together. The commit messages and the
"``cherry picked from``"-tags must be preserved. "``cherry picked from``"-tags must be preserved.
.. code-block:: console ::
git show b10859ec41d09c57663a258f43fe57c12332698e git show b10859ec41d09c57663a258f43fe57c12332698e
commit b10859ec41d09c57663a258f43fe57c12332698e commit b10859ec41d09c57663a258f43fe57c12332698e
Author: Jonas Pfeil <pfeiljonas@gmx.de> Author: Jonas Pfeil <pfeiljonas@gmx.de>
Date: Wed Mar 1 18:11:10 2017 +0100 Date: Wed Mar 1 18:11:10 2017 +0100
ralloc: Make sure ralloc() allocations match malloc()'s alignment. ralloc: Make sure ralloc() allocations match malloc()'s alignment.
The header of ralloc needs to be aligned, because the compiler assumes The header of ralloc needs to be aligned, because the compiler assumes
... ...
(cherry picked from commit cd2b55e536dc806f9358f71db438dd9c246cdb14) (cherry picked from commit cd2b55e536dc806f9358f71db438dd9c246cdb14)
Squashed with commit: Squashed with commit:
ralloc: don't leave out the alignment factor ralloc: don't leave out the alignment factor
Experimentation shows that without alignment factor GCC and Clang choose Experimentation shows that without alignment factor GCC and Clang choose
... ...
(cherry picked from commit ff494fe999510ea40e3ed5827e7818550b6de126) (cherry picked from commit ff494fe999510ea40e3ed5827e7818550b6de126)
Regression/functionality testing Regression/functionality testing
-------------------------------- --------------------------------
@ -180,12 +180,12 @@ Check if the version number is going to remain as, alternatively
To setup the branchpoint: To setup the branchpoint:
.. code-block:: console ::
git checkout main # make sure we're in main first git checkout master # make sure we're in master first
git tag -s X.Y-branchpoint -m "Mesa X.Y branchpoint" git tag -s X.Y-branchpoint -m "Mesa X.Y branchpoint"
git checkout -b X.Y git checkout -b X.Y
git checkout main git checkout master
$EDITOR VERSION # bump the version number $EDITOR VERSION # bump the version number
git commit -as git commit -as
truncate docs/relnotes/new_features.txt truncate docs/relnotes/new_features.txt
@ -209,7 +209,7 @@ These are the instructions for making a new Mesa release.
Get latest source files Get latest source files
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
Ensure the latest code is available - both in your local main and the Ensure the latest code is available - both in your local master and the
relevant branch. relevant branch.
Perform basic testing Perform basic testing
@ -219,11 +219,12 @@ Most of the testing should already be done during the
:ref:`cherry-pick <pickntest>` So we do a quick 'touch test' :ref:`cherry-pick <pickntest>` So we do a quick 'touch test'
- meson dist - meson dist
- scons (from release tarball)
- the produced binaries work - the produced binaries work
Here is one solution: Here is one solution:
.. code-block:: console ::
__glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"' __glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"'
__es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"' __es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"'
@ -275,7 +276,7 @@ Use the release.sh script from xorg `util-modular <https://cgit.freedesktop.org/
Start the release process. Start the release process.
.. code-block:: console ::
../relative/path/to/release.sh . # append --dist if you've already done distcheck above ../relative/path/to/release.sh . # append --dist if you've already done distcheck above
@ -294,30 +295,30 @@ Add the sha256sums to the release notes
Edit ``docs/relnotes/X.Y.Z.rst`` to add the ``sha256sum`` as available in the Edit ``docs/relnotes/X.Y.Z.rst`` to add the ``sha256sum`` as available in the
``mesa-X.Y.Z.announce`` template. Commit this change. ``mesa-X.Y.Z.announce`` template. Commit this change.
Back on mesa main, add the new release notes into the tree Back on mesa master, add the new release notes into the tree
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Something like the following steps will do the trick: Something like the following steps will do the trick:
.. code-block:: console ::
git cherry-pick -x X.Y~1 git cherry-pick -x X.Y~1
git cherry-pick -x X.Y git cherry-pick -x X.Y
Then run the Then run the
.. code-block:: console ::
./bin/post_version.py X.Y.Z ./bin/post_version.py X.Y.Z
, where X.Y.Z is the version you just made. This will update , where X.Y.Z is the version you just made. This will update
docs/relnotes.rst and docs/release-calendar.csv. It will then generate docs/relnotes.rst and docs/release-calendar.rst. It will then generate
a Git commit automatically. Check that everything looks correct and a Git commit automatically. Check that everything looks correct and
push: push:
.. code-block:: console ::
git push origin main X.Y git push origin master X.Y
Announce the release Announce the release
-------------------- --------------------

View File

@ -3,33 +3,6 @@ Release Notes
The release notes summarize what's new or changed in each Mesa release. The release notes summarize what's new or changed in each Mesa release.
- :doc:`21.2.4 release notes <relnotes/21.2.4>`
- :doc:`21.2.3 release notes <relnotes/21.2.3>`
- :doc:`21.2.2 release notes <relnotes/21.2.2>`
- :doc:`21.1.8 release notes <relnotes/21.1.8>`
- :doc:`21.1.7 release notes <relnotes/21.1.7>`
- :doc:`21.2.0 release notes <relnotes/21.2.0>`
- :doc:`21.1.6 release notes <relnotes/21.1.6>`
- :doc:`21.1.5 release notes <relnotes/21.1.5>`
- :doc:`21.1.4 release notes <relnotes/21.1.4>`
- :doc:`21.1.3 release notes <relnotes/21.1.3>`
- :doc:`21.1.2 release notes <relnotes/21.1.2>`
- :doc:`21.1.1 release notes <relnotes/21.1.1>`
- :doc:`21.1.0 release notes <relnotes/21.1.0>`
- :doc:`21.0.3 release notes <relnotes/21.0.3>`
- :doc:`21.0.2 release notes <relnotes/21.0.2>`
- :doc:`21.0.1 release notes <relnotes/21.0.1>`
- :doc:`20.3.5 release notes <relnotes/20.3.5>`
- :doc:`21.0.0 release notes <relnotes/21.0.0>`
- :doc:`20.3.4 release notes <relnotes/20.3.4>`
- :doc:`20.3.3 release notes <relnotes/20.3.3>`
- :doc:`20.3.2 release notes <relnotes/20.3.2>`
- :doc:`20.2.6 release notes <relnotes/20.2.6>`
- :doc:`20.3.1 release notes <relnotes/20.3.1>`
- :doc:`20.2.5 release notes <relnotes/20.2.5>`
- :doc:`20.2.4 release notes <relnotes/20.2.4>`
- :doc:`20.3.0 release notes <relnotes/20.3.0>`
- :doc:`20.2.3 release notes <relnotes/20.2.3>`
- :doc:`20.2.2 release notes <relnotes/20.2.2>` - :doc:`20.2.2 release notes <relnotes/20.2.2>`
- :doc:`20.1.10 release notes <relnotes/20.1.10>` - :doc:`20.1.10 release notes <relnotes/20.1.10>`
- :doc:`20.2.1 release notes <relnotes/20.2.1>` - :doc:`20.2.1 release notes <relnotes/20.2.1>`
@ -313,8 +286,8 @@ The release notes summarize what's new or changed in each Mesa release.
- :doc:`6.4.1 release notes <relnotes/6.4.1>` - :doc:`6.4.1 release notes <relnotes/6.4.1>`
- :doc:`6.4 release notes <relnotes/6.4>` - :doc:`6.4 release notes <relnotes/6.4>`
Versions of Mesa prior to 6.4 are summarized in the following Versions of Mesa prior to 6.4 are summarized in the :doc:`versions
release notes, or in the `old docs`_. file <versions>` and the following release notes.
- `6.3.2 release notes <relnotes/6.3.2>`__ - `6.3.2 release notes <relnotes/6.3.2>`__
- `6.3.1 release notes <relnotes/6.3.1>`__ - `6.3.1 release notes <relnotes/6.3.1>`__
@ -346,33 +319,6 @@ release notes, or in the `old docs`_.
:maxdepth: 1 :maxdepth: 1
:hidden: :hidden:
relnotes/21.2.4
relnotes/21.2.3
relnotes/21.2.2
relnotes/21.1.8
relnotes/21.1.7
relnotes/21.2.0
relnotes/21.1.6
relnotes/21.1.5
relnotes/21.1.4
relnotes/21.1.3
relnotes/21.1.2
relnotes/21.1.1
relnotes/21.1.0
relnotes/21.0.3
relnotes/21.0.2
relnotes/21.0.1
relnotes/20.3.5
relnotes/21.0.0
relnotes/20.3.4
relnotes/20.3.3
relnotes/20.3.2
relnotes/20.2.6
relnotes/20.3.1
relnotes/20.2.5
relnotes/20.2.4
relnotes/20.3.0
relnotes/20.2.3
relnotes/20.2.2 relnotes/20.2.2
relnotes/20.1.10 relnotes/20.1.10
relnotes/20.2.1 relnotes/20.2.1
@ -655,5 +601,4 @@ release notes, or in the `old docs`_.
relnotes/6.4.2 relnotes/6.4.2
relnotes/6.4.1 relnotes/6.4.1
relnotes/6.4 relnotes/6.4
Older Versions <versions>
.. _old docs: https://gitlab.freedesktop.org/mesa/mesa/-/blob/mesa-21.0.0/docs/versions.rst

View File

@ -21,7 +21,7 @@ SHA256 checksum
:: ::
2999738e888731531cd62b27519fa37566cc0ea2cd7d4d97f46abaa3e949c630 mesa-20.3.0.tar.xz TBD.
New features New features
@ -159,7 +159,7 @@ Bug fixes
- gen_state_llvm.h:54:99: error: invalid conversion from int to const llvm::VectorType* \[-fpermissive\] - gen_state_llvm.h:54:99: error: invalid conversion from int to const llvm::VectorType* \[-fpermissive\]
- Using a shared dEQP build script - Using a shared dEQP build script
- vulkan/wsi/x11: deadlock with Xwayland when compositor holds multiple buffers - vulkan/wsi/x11: deadlock with Xwayland when compositor holds multiple buffers
- \[RADV/ACO\] Death Stranding cause a GPU hung (\*ERROR\* Waiting for fences timed out!) - \[RADV/ACO\] Death Stranding cause a GPU hung (*ERROR\* Waiting for fences timed out!)
- lp_bld_init.c:172:7: error: implicit declaration of function LLVMAddConstantPropagationPass; did you mean LLVMAddCorrelatedValuePropagationPass? \[-Werror=implicit-function-declaration\] - lp_bld_init.c:172:7: error: implicit declaration of function LLVMAddConstantPropagationPass; did you mean LLVMAddCorrelatedValuePropagationPass? \[-Werror=implicit-function-declaration\]
- ci: Use lld or gold instead of ld.bfd - ci: Use lld or gold instead of ld.bfd
- Intel Vulkan driver crash with alpha-to-coverage - Intel Vulkan driver crash with alpha-to-coverage
@ -393,7 +393,7 @@ Alyssa Rosenzweig (388):
- panfrost: Inline max rt into compilers - panfrost: Inline max rt into compilers
- panfrost: Treat texture dimension as first-class - panfrost: Treat texture dimension as first-class
- panfrost: Drop compiler cmdstream deps - panfrost: Drop compiler cmdstream deps
- nir/lower_ssbo: Don't set align\_\* for atomics - nir/lower_ssbo: Don't set align_\* for atomics
- gallium/dri2: Support Arm modifiers - gallium/dri2: Support Arm modifiers
- panfrost: Set \`initialized\` more conservatively - panfrost: Set \`initialized\` more conservatively
- panfrost: Remove hint-based AFBC heuristic - panfrost: Remove hint-based AFBC heuristic
@ -608,7 +608,7 @@ Alyssa Rosenzweig (388):
- pan/bi: Add packing generator - pan/bi: Add packing generator
- pan/bi: Add disassembler generator - pan/bi: Add disassembler generator
- pan/bi: Add disassembly prototypes - pan/bi: Add disassembly prototypes
- pan/bi: Add bi_disasm_dest\_\* helpers - pan/bi: Add bi_disasm_dest_\* helpers
- pan/bi: Export dump_src - pan/bi: Export dump_src
- pan/bi: Use new disassembler - pan/bi: Use new disassembler
- pan/bi: Use canonical syntax for registers/uniforms/imms - pan/bi: Use canonical syntax for registers/uniforms/imms
@ -1184,7 +1184,7 @@ Daniel Schürmann (26):
- aco: expand create_vector more carefully w.r.t. subdword operands - aco: expand create_vector more carefully w.r.t. subdword operands
- aco: use p_create_vector for nir_op_pack_half_2x16 - aco: use p_create_vector for nir_op_pack_half_2x16
- nir/opt_algebraic: optimize unpack_half_2x16_split_x(ushr, a, 16) - nir/opt_algebraic: optimize unpack_half_2x16_split_x(ushr, a, 16)
- aco: use p_split_vector for nir_op_unpack_half\_\* - aco: use p_split_vector for nir_op_unpack_half_\*
- aco: add validation rules for p_split_vector - aco: add validation rules for p_split_vector
- aco: use v_cvt_pkrtz_f16_f32 for pack_half_2x16 - aco: use v_cvt_pkrtz_f16_f32 for pack_half_2x16
- radv,aco: lower_pack_half_2x16 - radv,aco: lower_pack_half_2x16
@ -1374,7 +1374,7 @@ Duncan Hopkins (10):
- zink: Added support for MacOS MoltenVK APIs. - zink: Added support for MacOS MoltenVK APIs.
- zink: return fail if create_instance fails - zink: return fail if create_instance fails
- zink: Added inbuilt debug logging from the VK_LAYER_LUNARG_standard_validation layer. - zink: Added inbuilt debug logging from the VK_LAYER_LUNARG_standard_validation layer.
- zink: add support to device info for macro guards and just VkPhysicalDevice*Features with out the have\_. - zink: add support to device info for macro guards and just VkPhysicalDevice*Features with out the have_.
- zink: have_triangle_fans support. - zink: have_triangle_fans support.
- zink: For MoltenVk added vkFlushMappedMemoryRanges() to vkMapMemory() to fix empty mapped memory. - zink: For MoltenVk added vkFlushMappedMemoryRanges() to vkMapMemory() to fix empty mapped memory.
- zink: make physical device functions use a dynamic function pointers. - zink: make physical device functions use a dynamic function pointers.
@ -1705,7 +1705,7 @@ Eric Engestrom (94):
- egl: replace \_EGLDriver with \_EGLDisplay->Driver in \_eglGetSyncAttrib() - egl: replace \_EGLDriver with \_EGLDisplay->Driver in \_eglGetSyncAttrib()
- egl: replace replace \_EGLDriver with \_EGLDisplay->Driver in eglapi.c - egl: replace replace \_EGLDriver with \_EGLDisplay->Driver in eglapi.c
- egl: drop unused \_EGLDriver from MesaGLInteropEGL{QueryDeviceInfo,ExportObject}() - egl: drop unused \_EGLDriver from MesaGLInteropEGL{QueryDeviceInfo,ExportObject}()
- egl: replace \`&_eglDriver\`/\`NULL\` tested against \`NULL\` with simple \`true\`/\`false\` - egl: replace \`&_eglDriver`/`NULL\` tested against \`NULL\` with simple \`true`/`false\`
- egl: drop unused ${drv}_driver() - egl: drop unused ${drv}_driver()
- egl: inline \_eglGetDriverProc() into eglGetProcAddress() - egl: inline \_eglGetDriverProc() into eglGetProcAddress()
- egl: inline \_eglInitializeDisplay() into eglInitialize() - egl: inline \_eglInitializeDisplay() into eglInitialize()
@ -1991,7 +1991,7 @@ Guido Günther (1):
Gurchetan Singh (7): Gurchetan Singh (7):
- virgl: add flags to (\*resource_create) callback - virgl: add flags to (*resource_create) callback
- drm-uapi: virtgpu_drm.h: resource create blob + host visible memory region - drm-uapi: virtgpu_drm.h: resource create blob + host visible memory region
- virgl/drm: query for resource blob and host visible memory region - virgl/drm: query for resource blob and host visible memory region
- virgl/drm: add resource create blob function - virgl/drm: add resource create blob function
@ -2173,7 +2173,7 @@ Iago Toral Quiroga (443):
- v3dv: implement vkResetCommandPool - v3dv: implement vkResetCommandPool
- v3dv: don't swap R/B channels for VK_FORMAT_R5B6G5_UNORM_PACK16 - v3dv: don't swap R/B channels for VK_FORMAT_R5B6G5_UNORM_PACK16
- v3dv: don't use TLB path for formats that are not supported for rendering - v3dv: don't use TLB path for formats that are not supported for rendering
- v3dv: fix image clearing with VK_REMAINING\_\* - v3dv: fix image clearing with VK_REMAINING_\*
- v3dv: don't support image formats that we can rendet to or texture from - v3dv: don't support image formats that we can rendet to or texture from
- v3dv: fix fill buffer with VK_WHOLE_SIZE - v3dv: fix fill buffer with VK_WHOLE_SIZE
- v3dv: implement vkGetRenderAreaGranularity - v3dv: implement vkGetRenderAreaGranularity
@ -2468,7 +2468,7 @@ Ian Romanick (34):
- intel/compiler: Silence unused parameter warning in brw_surface_payload_size - intel/compiler: Silence unused parameter warning in brw_surface_payload_size
- intel/compiler: Don't fallback to vec4 when scalar GS compile fails \[v2\] - intel/compiler: Don't fallback to vec4 when scalar GS compile fails \[v2\]
- intel/vec4: Remove inline lowering of LRP - intel/vec4: Remove inline lowering of LRP
- intel/compiler: Remove INTEL_SCALAR\_... env variables - intel/compiler: Remove INTEL_SCALAR_... env variables
- intel/vec4: Remove all support for Gen8+ \[v2\] - intel/vec4: Remove all support for Gen8+ \[v2\]
- intel/vec4: Remove everything related to VS_OPCODE_SET_SIMD4X2_HEADER_GEN9 - intel/vec4: Remove everything related to VS_OPCODE_SET_SIMD4X2_HEADER_GEN9
- i965: Allow viewport array extensions with allow_higher_compat_version - i965: Allow viewport array extensions with allow_higher_compat_version
@ -2637,7 +2637,7 @@ Jason Ekstrand (296):
- intel/nir: Allow splitting a single load into up to 32 loads - intel/nir: Allow splitting a single load into up to 32 loads
- clover/spirv: Don't call llvm::regularizeLlvmForSpirv - clover/spirv: Don't call llvm::regularizeLlvmForSpirv
- clover: Call clang with -O0 for the SPIR-V path - clover: Call clang with -O0 for the SPIR-V path
- nir: Report progress properly in nir_lower_bool_to\_\* - nir: Report progress properly in nir_lower_bool_to_\*
- intel/nir: Pass the nir_builder by reference in lower_alpha_to_coverage - intel/nir: Pass the nir_builder by reference in lower_alpha_to_coverage
- intel/nir: Rewrite the guts of lower_alpha_to_coverage - intel/nir: Rewrite the guts of lower_alpha_to_coverage
- intel/nir: Clean up lower_alpha_to_coverage a bit - intel/nir: Clean up lower_alpha_to_coverage a bit
@ -2712,7 +2712,7 @@ Jason Ekstrand (296):
- spirv: Run repair_ssa if there are discard instructions - spirv: Run repair_ssa if there are discard instructions
- intel/nir: Call validate_ssa_dominance at both ends of the NIR compile - intel/nir: Call validate_ssa_dominance at both ends of the NIR compile
- nir: More NIR_MAX_VEC_COMPONENTS fixes - nir: More NIR_MAX_VEC_COMPONENTS fixes
- nir/idiv_const: Use the modern nir_src_as\_\* constant helpers - nir/idiv_const: Use the modern nir_src_as_\* constant helpers
- anv: Fix the target_bo assertion in anv_reloc_list_add - anv: Fix the target_bo assertion in anv_reloc_list_add
- clover: Pull the stride from pipe_transfer for image maps - clover: Pull the stride from pipe_transfer for image maps
- spirv: Access qualifiers are not a bitfield - spirv: Access qualifiers are not a bitfield
@ -2833,7 +2833,7 @@ Jason Ekstrand (296):
- nir/opt_find_array_copies: Allow copies from mem_constant - nir/opt_find_array_copies: Allow copies from mem_constant
- nir: Add and use some deref mode helpers - nir: Add and use some deref mode helpers
- nir/lower_array_deref_of_vec: Use nir_deref_mode_must_be - nir/lower_array_deref_of_vec: Use nir_deref_mode_must_be
- nir/lower_io: Use nir_deref_mode\_\* helpers - nir/lower_io: Use nir_deref_mode_\* helpers
- nir/phis_to_scalar,gcm: Use nir_deref_mode_may_be - nir/phis_to_scalar,gcm: Use nir_deref_mode_may_be
- nir: Only force loop unrolling if we know it's a in/out/temp - nir: Only force loop unrolling if we know it's a in/out/temp
- nir/vars_to_ssa: Use nir_deref_must_be - nir/vars_to_ssa: Use nir_deref_must_be
@ -2847,7 +2847,7 @@ Jason Ekstrand (296):
- nir/opt_deref: Add a deref mode specialization optimization - nir/opt_deref: Add a deref mode specialization optimization
- nir/opt_deref: Add an optimization for deref_mode_is - nir/opt_deref: Add an optimization for deref_mode_is
- nir/lower_io: Add a mode parameter to build_addr_iadd - nir/lower_io: Add a mode parameter to build_addr_iadd
- nir/lower_io: Add a mode parameter to addr_format_is\_\* - nir/lower_io: Add a mode parameter to addr_format_is_\*
- nir/lower_io: Add support for 32/64bit_global for shared - nir/lower_io: Add support for 32/64bit_global for shared
- nir/lower_io: Add support for lowering deref_mode_is - nir/lower_io: Add support for lowering deref_mode_is
- nir/lower_io: Support generic pointer access - nir/lower_io: Support generic pointer access
@ -3270,8 +3270,8 @@ Marcin Ślusarz (50):
- intel/fs,vec4: remove unused assignments - intel/fs,vec4: remove unused assignments
- intel: add INTEL_DEBUG=shaders - intel: add INTEL_DEBUG=shaders
- intel/fs: add hint how to get more info when shader validation fails - intel/fs: add hint how to get more info when shader validation fails
- intel/compiler: match brw_compile\_\* declarations with their definitions - intel/compiler: match brw_compile_\* declarations with their definitions
- intel/compiler: use the same name for nir shaders in brw_compile\_\* functions - intel/compiler: use the same name for nir shaders in brw_compile_\* functions
- intel/compiler: move extern C functions out of namespace brw - intel/compiler: move extern C functions out of namespace brw
- intel/compiler: print dispatch width when shader fails to compile - intel/compiler: print dispatch width when shader fails to compile
- intel/compiler: fix typo in a comment - intel/compiler: fix typo in a comment
@ -3388,8 +3388,8 @@ Marek Olšák (278):
- radeonsi: stop using TGSI_PROPERTY_TES_POINT_MODE / TES_PRIM_MODE - radeonsi: stop using TGSI_PROPERTY_TES_POINT_MODE / TES_PRIM_MODE
- radeonsi: stop using TGSI_PROPERTY_TES_SPACING - radeonsi: stop using TGSI_PROPERTY_TES_SPACING
- radeonsi: stop using TGSI_PROPERTY_TES_VERTEX_ORDER_CW - radeonsi: stop using TGSI_PROPERTY_TES_VERTEX_ORDER_CW
- radeonsi: stop using TGSI_PROPERTY_GS\_\* - radeonsi: stop using TGSI_PROPERTY_GS_\*
- radeonsi: stop using TGSI_PROPERTY_CS\_\* - radeonsi: stop using TGSI_PROPERTY_CS_\*
- radeonsi: stop using TGSI_PROPERTY_FS_EARLY_DEPTH_STENCIL - radeonsi: stop using TGSI_PROPERTY_FS_EARLY_DEPTH_STENCIL
- radeonsi: stop using TGSI_PROPERTY_FS_POST_DEPTH_COVERAGE - radeonsi: stop using TGSI_PROPERTY_FS_POST_DEPTH_COVERAGE
- radeonsi: stop using TGSI_PROPERTY_FS_COORD_PIXEL_CENTER - radeonsi: stop using TGSI_PROPERTY_FS_COORD_PIXEL_CENTER
@ -3400,7 +3400,7 @@ Marek Olšák (278):
- radeonsi: remove redundant si_shader_info::shader_buffers_declared - radeonsi: remove redundant si_shader_info::shader_buffers_declared
- radeonsi: remove redundant si_shader_info::images_declared - radeonsi: remove redundant si_shader_info::images_declared
- radeonsi: remove redundant si_shader_info::const_buffers_declared - radeonsi: remove redundant si_shader_info::const_buffers_declared
- radeonsi: remove redundant si_shader_info:\*(clip|cull)\* fields - radeonsi: remove redundant si_shader_info:*(clip|cull)\* fields
- radeonsi: remove unused si_shader_info::uses_(vertexid|basevertex) - radeonsi: remove unused si_shader_info::uses_(vertexid|basevertex)
- radeonsi: merge uses_persp_opcode_interp_sample/uses_linear_opcode_interp_sample - radeonsi: merge uses_persp_opcode_interp_sample/uses_linear_opcode_interp_sample
- radeonsi: remove redundant si_shader_info::uses_kill - radeonsi: remove redundant si_shader_info::uses_kill
@ -3439,10 +3439,10 @@ Marek Olšák (278):
- radeonsi: vectorize IO for better ALU vectorization - radeonsi: vectorize IO for better ALU vectorization
- radeonsi: don't scalarize 16-bit vec2 ALU opcodes - radeonsi: don't scalarize 16-bit vec2 ALU opcodes
- radeonsi: add 16-bit ALU vectorization - radeonsi: add 16-bit ALU vectorization
- gallium: rename PIPE_TRANSFER\_\* -\> PIPE_MAP\_\* - gallium: rename PIPE_TRANSFER_\* -\> PIPE_MAP_\*
- gallium: rename pipe_transfer_usage -\> pipe_map_flags - gallium: rename pipe_transfer_usage -\> pipe_map_flags
- gallium: rename transfer flags -\> map flags in comments - gallium: rename transfer flags -\> map flags in comments
- radeon: rename RADEON_TRANSFER\_\* -\> RADEON_MAP\_\* - radeon: rename RADEON_TRANSFER_\* -\> RADEON_MAP_\*
- radeonsi: set TRUNC_COORD=0 for Total War: WARHAMMER to fix it - radeonsi: set TRUNC_COORD=0 for Total War: WARHAMMER to fix it
- radeonsi: move debug options from si_disk_cache_create to si_get_ir_cache_key - radeonsi: move debug options from si_disk_cache_create to si_get_ir_cache_key
- radeonsi: remove KILL_PS_INF_INTERP/CLAMP_DIV_BY_ZERO, use screen::options - radeonsi: remove KILL_PS_INF_INTERP/CLAMP_DIV_BY_ZERO, use screen::options
@ -4281,7 +4281,7 @@ Samuel Pitoiset (157):
- radv: ignore BB labels when splitting the disassembly string - radv: ignore BB labels when splitting the disassembly string
- aco: add ACO_DEBUG=force-waitcnt to emit wait-states - aco: add ACO_DEBUG=force-waitcnt to emit wait-states
- amd/registers: add missing TBA registers on GFX6-GFX8 - amd/registers: add missing TBA registers on GFX6-GFX8
- amd/registers: add some SQ_WAVE\_\* register definitions - amd/registers: add some SQ_WAVE_\* register definitions
- aco: add TBA/TMA/TTMP0-11 physical registers definitions - aco: add TBA/TMA/TTMP0-11 physical registers definitions
- aco: validate that SMEM operands can use fixed registers - aco: validate that SMEM operands can use fixed registers
- aco: add a helper for building a trap handler shader - aco: add a helper for building a trap handler shader
@ -4328,7 +4328,7 @@ Samuel Pitoiset (157):
- nir/lower_memory_model: return progress when visiting instructions - nir/lower_memory_model: return progress when visiting instructions
- nir/lower_memory_model: do not break with global atomic operations - nir/lower_memory_model: do not break with global atomic operations
- ac/nir: implement nir_intrinsic_{load,store}_global - ac/nir: implement nir_intrinsic_{load,store}_global
- ac/nir: implement nir_intrinsic_global_atomic\_\* - ac/nir: implement nir_intrinsic_global_atomic_\*
- radv: lower deref operations for global memory for both backends - radv: lower deref operations for global memory for both backends
- ac/llvm: fix invalid IR if image stores are shrinked using the format - ac/llvm: fix invalid IR if image stores are shrinked using the format
- nir/lower_io: change nir_io_add_const_offset_to_base to use bitfield modes - nir/lower_io: change nir_io_add_const_offset_to_base to use bitfield modes

View File

@ -4,7 +4,7 @@ Source Code Repository
Mesa uses `Git <https://git-scm.com>`__ as its source code management Mesa uses `Git <https://git-scm.com>`__ as its source code management
system. system.
The upstream Git repository is hosted on The master Git repository is hosted on
`freedesktop.org <https://www.freedesktop.org>`__. `freedesktop.org <https://www.freedesktop.org>`__.
You may access the repository either as an :ref:`anonymous You may access the repository either as an :ref:`anonymous
@ -26,19 +26,19 @@ To get the Mesa sources anonymously (read-only):
#. Install the Git software on your computer if needed. #. Install the Git software on your computer if needed.
#. Get an initial, local copy of the repository with: #. Get an initial, local copy of the repository with:
.. code-block:: console ::
git clone https://gitlab.freedesktop.org/mesa/mesa.git git clone https://gitlab.freedesktop.org/mesa/mesa.git
#. Later, you can update your tree from the upstream repository with: #. Later, you can update your tree from the master repository with:
.. code-block:: console ::
git pull origin git pull origin
#. If you also want the Mesa demos/tests repository: #. If you also want the Mesa demos/tests repository:
.. code-block:: console ::
git clone https://gitlab.freedesktop.org/mesa/demos.git git clone https://gitlab.freedesktop.org/mesa/demos.git
@ -74,10 +74,10 @@ Useful for people behind strict proxies
You can use `personal access You can use `personal access
tokens <https://gitlab.freedesktop.org/profile/personal_access_tokens>`__ tokens <https://gitlab.freedesktop.org/profile/personal_access_tokens>`__
to push over HTTPS if ssh does not suit your needs. In this case, create to push over HTTPS if ssh will does not suit your needs. In this case,
a token, and put it in the URL as shown here: create a token, and put it in the URL as shown here:
.. code-block:: console ::
git remote set-url --push origin https://USER:TOKEN@gitlab.freedesktop.org/your~user~name/mesa.git git remote set-url --push origin https://USER:TOKEN@gitlab.freedesktop.org/your~user~name/mesa.git
@ -89,7 +89,7 @@ Windows <https://git.wiki.kernel.org/index.php/WindowsInstall>`__ you'll
want to enable automatic CR/LF conversion in your local copy of the want to enable automatic CR/LF conversion in your local copy of the
repository: repository:
.. code-block:: console ::
git config --global core.autocrlf true git config --global core.autocrlf true
@ -102,7 +102,7 @@ Development Branches
-------------------- --------------------
At any given time, there may be several active branches in Mesa's At any given time, there may be several active branches in Mesa's
repository. Generally, ``main`` contains the latest development repository. Generally, ``master`` contains the latest development
(unstable) code while a branch has the latest stable code. (unstable) code while a branch has the latest stable code.
The command ``git branch`` will list all available branches. The command ``git branch`` will list all available branches.
@ -113,31 +113,31 @@ mailing list.
Developer Git Tips Developer Git Tips
------------------ ------------------
#. Setting up to edit the main branch #. Setting up to edit the master branch
If you try to do a pull by just saying\ ``git pull`` and Git If you try to do a pull by just saying\ ``git pull`` and Git
complains that you have not specified a branch, try: complains that you have not specified a branch, try:
.. code-block:: console ::
git config branch.main.remote origin git config branch.master.remote origin
git config branch.main.merge main git config branch.master.merge master
Otherwise, you have to say\ ``git pull origin main`` each time you Otherwise, you have to say\ ``git pull origin master`` each time you
do a pull. do a pull.
#. Small changes to main #. Small changes to master
If you are an experienced Git user working on substantial If you are an experienced Git user working on substantial
modifications, you are probably working on a separate branch and modifications, you are probably working on a separate branch and
would rebase your branch prior to merging with main. But for small would rebase your branch prior to merging with master. But for small
changes to the main branch itself, you also need to use the rebase changes to the master branch itself, you also need to use the rebase
feature in order to avoid an unnecessary and distracting branch in feature in order to avoid an unnecessary and distracting branch in
main. master.
If it has been awhile since you've done the initial clone, try If it has been awhile since you've done the initial clone, try
.. code-block:: console ::
git pull git pull
@ -145,15 +145,14 @@ Developer Git Tips
Make your changes and use Make your changes and use
.. code-block:: console ::
git add <files to commit> git add <files to commit>
git commit git commit
to get your changes ready to push back into the freedesktop.org to get your changes ready to push back into the fd.o repository.
repository.
It is possible (and likely) that someone has changed main since you It is possible (and likely) that someone has changed master since you
did your last pull. Even if your changes do not conflict with their did your last pull. Even if your changes do not conflict with their
changes, Git will make a fast-forward merge branch, branching from changes, Git will make a fast-forward merge branch, branching from
the point in time where you did your last pull and merging it to a the point in time where you did your last pull and merging it to a
@ -161,7 +160,7 @@ Developer Git Tips
To avoid this, To avoid this,
.. code-block:: console ::
git pull --rebase git pull --rebase
git push git push
@ -181,9 +180,9 @@ Developer Git Tips
If you want the rebase action to be the default action, then If you want the rebase action to be the default action, then
.. code-block:: console ::
git config branch.main.rebase true git config branch.master.rebase true
git config --global branch.autosetuprebase=always git config --global branch.autosetuprebase=always
See `Understanding Git See `Understanding Git

View File

@ -37,7 +37,8 @@ Experimenting with Shader Replacements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Shaders can be dumped and replaced on runtime for debugging purposes. Shaders can be dumped and replaced on runtime for debugging purposes.
This is controlled via following environment variables: This feature is not currently supported by SCons build. This is
controlled via following environment variables:
- **MESA_SHADER_DUMP_PATH** - path where shader sources are dumped - **MESA_SHADER_DUMP_PATH** - path where shader sources are dumped
- **MESA_SHADER_READ_PATH** - path where replacement shaders are read - **MESA_SHADER_READ_PATH** - path where replacement shaders are read
@ -115,13 +116,13 @@ Programming Hints
- Use the built-in library functions whenever possible. For example, - Use the built-in library functions whenever possible. For example,
instead of writing this: instead of writing this:
.. code-block:: glsl ::
float x = 1.0 / sqrt(y); float x = 1.0 / sqrt(y);
Write this: Write this:
.. code-block:: glsl ::
float x = inversesqrt(y); float x = inversesqrt(y);
@ -143,7 +144,7 @@ src/compiler/glsl/glsl_compiler
Here's an example of using the compiler to compile a vertex shader and Here's an example of using the compiler to compile a vertex shader and
emit GL_ARB_vertex_program-style instructions: emit GL_ARB_vertex_program-style instructions:
.. code-block:: console ::
src/compiler/glsl/glsl_compiler --version XXX --dump-ast myshader.vert src/compiler/glsl/glsl_compiler --version XXX --dump-ast myshader.vert

View File

@ -0,0 +1,18 @@
Source Documentation
====================
`Doxygen <http://www.doxygen.nl>`__ is used to automatically produce
cross-referenced documentation from the Mesa source code.
The Doxygen configuration files and generated files are not included in
the normal Mesa distribution (they're very large). To generate Doxygen
documentation, download Mesa from Git, change to the ``doxygen``
directory and run ``make``.
For an example of Doxygen usage in Mesa, see a recent source file such
as
`bufferobj.c <https://gitlab.freedesktop.org/mesa/mesa/-/blob/master/src/mesa/main/bufferobj.c>`__.
If you're reading this page from your local copy of Mesa, and have run
the doxygen scripts, you can read the documentation
`here <../doxygen/main/index.html>`__

View File

@ -204,10 +204,8 @@ each directory.
- **panfrost** - Panfrost-specific sources - **panfrost** - Panfrost-specific sources
- **bifrost** - shader compiler for the Bifrost generation GPUs - **bifrost** - shader compiler for the Bifrost generation GPUs
- **lib** - GPU data structures (command stream) support code`
- **midgard** - shader compiler for the Midgard generation GPUs - **midgard** - shader compiler for the Midgard generation GPUs
- **shared** - shared Mali code between Lima and Panfrost - **pandecode** - command stream debugger
- **util** - shared code between Midgard and Bifrost shader compilers
- **util** - Various utility codes - **util** - Various utility codes
- **vulkan** - Common code for Vulkan drivers - **vulkan** - Common code for Vulkan drivers

View File

@ -163,11 +163,11 @@ check for regressions.
As mentioned at the beginning, patches should be bisectable. A good way As mentioned at the beginning, patches should be bisectable. A good way
to test this is to make use of the \`git rebase\` command, to run your to test this is to make use of the \`git rebase\` command, to run your
tests on each commit. Assuming your branch is based off tests on each commit. Assuming your branch is based off
``origin/main``, you can run: ``origin/master``, you can run:
.. code-block:: console ::
$ git rebase --interactive --exec "meson test -C build/" origin/main $ git rebase --interactive --exec "meson test -C build/" origin/master
replacing ``"meson test"`` with whatever other test you want to run. replacing ``"meson test"`` with whatever other test you want to run.
@ -188,7 +188,7 @@ Add labels to your MR to help reviewers find it. For example:
- Other tag examples: gallium, util - Other tag examples: gallium, util
Tick the following when creating the MR. It allows developers to rebase Tick the following when creating the MR. It allows developers to rebase
your work on top of main. your work on top of master.
:: ::
@ -304,7 +304,7 @@ accepted and which are not. The stable-release manager is also given
broad discretion in rejecting patches that have been nominated. broad discretion in rejecting patches that have been nominated.
- Patch must conform with the :ref:`Basic guidelines <guidelines>` - Patch must conform with the :ref:`Basic guidelines <guidelines>`
- Patch must have landed in main first. In case where the original - Patch must have landed in master first. In case where the original
patch is too large and/or otherwise contradicts with the rules set patch is too large and/or otherwise contradicts with the rules set
within, a backport is appropriate. within, a backport is appropriate.
- It must not introduce a regression - be that build or runtime wise. - It must not introduce a regression - be that build or runtime wise.
@ -353,28 +353,13 @@ conflicts they should ask the original author to provide a backport or
de-nominate the patch. de-nominate the patch.
For patches that either need to be nominated after they've landed in For patches that either need to be nominated after they've landed in
main, or that are known ahead of time to not not apply cleanly to a master, or that are known ahead of time to not not apply cleanly to a
stable branch (such as due to a rename), using a GitLab MR is most stable branch (such as due to a rename), using a GitLab MR is most
appropriate. The MR should be based on and target the appropriate. The MR should be based on and target the
staging/year.quarter branch, not on the year.quarter branch, per the staging/year.quarter branch, not on the year.quarter branch, per the
stable branch policy. Assigning the MR to release maintainer for said stable branch policy. Assigning the MR to release maintainer for said
branch or mentioning them is helpful, but not required. branch or mentioning them is helpful, but not required.
Documentation patches
---------------------
Our documentation is written as `reStructuredText`_ files in the
:file:`docs` folder, and built using `Sphinx`_.
The preferred language of the documentation is US English. This
doesn't mean that everyone is expected to pay close attention to
the different English variants, but it does mean someone might
suggest a spelling-change, either during review or as a follow-up
merge-request.
.. _reStructuredText: https://docutils.sourceforge.io/rst.html
.. _Sphinx: https://www.sphinx-doc.org/
Git tips Git tips
-------- --------

View File

@ -6,8 +6,8 @@ support for Windows, other flavors of Unix and other systems such as
Haiku. We're actively developing and maintaining several hardware and Haiku. We're actively developing and maintaining several hardware and
software drivers. software drivers.
The primary API is OpenGL but there's also support for OpenGL ES, Vulkan, The primary API is OpenGL but there's also support for OpenGL ES 1, ES2
EGL, OpenMAX, OpenCL, VDPAU, VA-API and XvMC. and ES 3, OpenCL, VDPAU, XvMC and the EGL interface.
Hardware drivers include: Hardware drivers include:
@ -17,33 +17,29 @@ Hardware drivers include:
`RadeonFeature <https://www.x.org/wiki/RadeonFeature>`__ `RadeonFeature <https://www.x.org/wiki/RadeonFeature>`__
- NVIDIA GPUs (Riva TNT and later). See `Nouveau - NVIDIA GPUs (Riva TNT and later). See `Nouveau
Wiki <https://nouveau.freedesktop.org>`__ Wiki <https://nouveau.freedesktop.org>`__
- Qualcomm Adreno A2xx-A6xx. See :doc:`Freedreno - Qualcomm Adreno A2xx-A6xx. See `Freedreno
<drivers/freedreno>` Wiki <https://github.com/freedreno/freedreno/wiki>`__
- Broadcom VideoCore 4 and 5. See :doc:`VC4 <drivers/vc4>` and - Broadcom VideoCore 4, 5. See `This Week in
:doc:`V3D <drivers/v3d>` V3D <https://anholt.github.io/twivc4/>`__
- ARM Mali Utgard. See :doc:`Lima <drivers/lima>` - ARM Mali Utgard. See `Lima
- ARM Mali Midgard, Bifrost. See :doc:`Panfrost <drivers/panfrost>` Wiki <https://gitlab.freedesktop.org/lima/web/wikis/home>`__
- ARM Mali Midgard, Bifrost. See `Panfrost
Site <https://panfrost.freedesktop.org/>`__
- Vivante GCxxx. See `Etnaviv - Vivante GCxxx. See `Etnaviv
Wiki <https://github.com/laanwj/etna_viv/wiki>`__ Wiki <https://github.com/laanwj/etna_viv/wiki>`__
- NVIDIA Tegra (K1 and later). - NVIDIA Tegra (K1 and later).
Layered driver include:
- :doc:`D3D12 <drivers/d3d12>` - driver providing OpenGL on top of
Microsoft's Direct3D 12 API.
- :doc:`SVGA3D <drivers/svga3d>` - driver for VMware virtual GPU
- `VirGL <https://virgil3d.github.io/>`__ - research project for
accelerated graphics for qemu guests
- :doc:`Zink <drivers/zink>` - driver providing OpenGL on top of
Khoronos' Vulkan API.
Software drivers include: Software drivers include:
- :doc:`LLVMpipe <drivers/llvmpipe>` - uses LLVM for x86 JIT code generation - :doc:`llvmpipe <drivers/llvmpipe>` - uses LLVM for x86 JIT code generation
and is multi-threaded and is multi-threaded
- Softpipe - a reference Gallium driver - softpipe - a reference Gallium driver
- :doc:`OpenSWR <drivers/openswr>` - x86-optimized software renderer - :doc:`svga <drivers/vmware-guest>` - driver for VMware virtual GPU
- `swr <https://www.openswr.org/>`__ - x86-optimized software renderer
for visualization workloads for visualization workloads
- `virgl <https://virgil3d.github.io/>`__ - research project for
accelerated graphics for qemu guests
- swrast - the legacy/original Mesa software rasterizer
Additional driver information: Additional driver information:
@ -51,6 +47,7 @@ Additional driver information:
Window System Window System
- :doc:`Xlib / swrast driver <xlibdriver>` for the X Window System - :doc:`Xlib / swrast driver <xlibdriver>` for the X Window System
and Unix-like operating systems and Unix-like operating systems
- `Microsoft Windows <README.WIN32>`__
Deprecated Systems and Drivers Deprecated Systems and Drivers
------------------------------ ------------------------------
@ -60,16 +57,15 @@ systems. These have been removed from the Mesa source tree and
distribution. If anyone's interested though, the code can be found in distribution. If anyone's interested though, the code can be found in
the Git repo. The list includes: the Git repo. The list includes:
- 3dfx Glide - 3dfx/glide
- 3DLABS Gamma
- ATI Mach 64
- ATI Rage 128
- DEC OpenVMS
- Intel i810
- Linux fbdev
- Matrox - Matrox
- MS-DOS - ATI R128
- S3 Savage - Savage
- Silicon Integrated Systems
- swrast
- VIA Unichrome - VIA Unichrome
- SIS
- 3Dlabs gamma
- DOS
- fbdev
- DEC/VMS
- Mach64
- Intel i810

File diff suppressed because it is too large Load Diff

View File

@ -121,7 +121,7 @@ Maya-03 test 2
This test makes some unusual calls to glRotate. For example: This test makes some unusual calls to glRotate. For example:
.. code-block:: c ::
glRotate(50, 50, 50, 1); glRotate(50, 50, 50, 1);
glRotate(100, 100, 100, 1); glRotate(100, 100, 100, 1);
@ -130,25 +130,21 @@ This test makes some unusual calls to glRotate. For example:
These unusual values lead to invalid modelview matrices. For example, These unusual values lead to invalid modelview matrices. For example,
the last glRotate command above produces this matrix with Mesa: the last glRotate command above produces this matrix with Mesa:
.. math:: ::
\begin{matrix} 1.08536e+24 2.55321e-23 -0.000160389 0
1.08536 \times 10^{24} & 2.55321 \times 10^{-23} & -0.000160389 & 0\\ 5.96937e-25 1.08536e+24 103408 0
5.96937 \times 10^{25} & 1.08536 \times 10^{24} & 103408 & 0\\ 103408 -0.000160389 1.74755e+09 0
103408 & -0.000160389 & 1.74755\times 10^{9} & 0\\ 0 0 0 nan
0 & 0 & 0 & nan
\end{matrix}
and with NVIDIA's OpenGL: and with NVIDIA's OpenGL:
.. math:: ::
\begin{matrix} 1.4013e-45 0 -nan 0
1.4013 \times 10^{-45} & 0 & -nan & 0\\ 0 1.4013e-45 1.4013e-45 0
0 & 1.4013 \times 10^{-45} & 1.4013 \times 10^{-45} & 0\\ 1.4013e-45 -nan 1.4013e-45 0
1.4013 \times 10^{-45} & -nan & 1.4013 \times 10^{-45} & 0\\ 0 0 0 1.4013e-45
0 & 0 & 0 & 1.4013 \times 10^{-45}
\end{matrix}
This causes the object in question to be drawn in a strange orientation This causes the object in question to be drawn in a strange orientation
and with a semi-random color (between white and black) since GL_FOG is and with a semi-random color (between white and black) since GL_FOG is

View File

@ -23,10 +23,12 @@ Mesa supports RGB(A) rendering into almost any X visual type and depth.
The glXChooseVisual function tries to choose the best X visual for the The glXChooseVisual function tries to choose the best X visual for the
given attribute list. However, if this doesn't suit your needs you can 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 force Mesa to use any X visual you want (any supported by your X server
that is) by setting the **MESA_RGB_VISUAL** environment variable. When that is) by setting the **MESA_RGB_VISUAL** and **MESA_CI_VISUAL**
a visual is requested, glXChooseVisual will first look if the environment variables. When an RGB visual is requested, glXChooseVisual
MESA_RGB_VISUAL variable is defined. If so, it will try to use the will first look if the MESA_RGB_VISUAL variable is defined. If so, it
specified visual. 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`` The format of accepted values is: ``visual-class depth``
@ -36,10 +38,12 @@ Here are some examples:
using csh: using csh:
% setenv MESA_RGB_VISUAL "TrueColor 8" // 8-bit TrueColor % 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 % setenv MESA_RGB_VISUAL "PseudoColor 8" // 8-bit PseudoColor
using bash: using bash:
$ export MESA_RGB_VISUAL="TrueColor 8" $ export MESA_RGB_VISUAL="TrueColor 8"
$ export MESA_CI_VISUAL="PseudoColor 12"
$ export MESA_RGB_VISUAL="PseudoColor 8" $ export MESA_RGB_VISUAL="PseudoColor 8"
Double Buffering Double Buffering
@ -76,6 +80,8 @@ window. Otherwise, a new, private colormap will be allocated.
When sharing the root colormap, Mesa may be unable to allocate the 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 colors it needs, resulting in poor color quality. This can happen when a
large number of colorcells in the root colormap are already allocated. large number of colorcells in the root colormap are already allocated.
To prevent colormap sharing in GLUT, set the **MESA_PRIVATE_CMAP**
environment variable. The value isn't significant.
Gamma Correction Gamma Correction
---------------- ----------------
@ -94,10 +100,10 @@ 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 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: defaults are all 1.0, effectively disabling gamma correction. Examples:
.. code-block:: console ::
% export MESA_GAMMA="2.3 2.2 2.4" # separate R,G,B values % export MESA_GAMMA="2.3 2.2 2.4" // separate R,G,B values
% export MESA_GAMMA="2.0" # same gamma for R,G,B % export MESA_GAMMA="2.0" // same gamma for R,G,B
The ``demos/gamma.c`` program in mesa/demos repository may help you to The ``demos/gamma.c`` program in mesa/demos repository may help you to
determine reasonable gamma value for your display. With correct gamma determine reasonable gamma value for your display. With correct gamma
@ -124,10 +130,17 @@ Hardware overlay planes are supported by the Xlib driver. To determine
if your X server has overlay support you can test for the if your X server has overlay support you can test for the
SERVER_OVERLAY_VISUALS property: SERVER_OVERLAY_VISUALS property:
.. code-block:: console ::
xprop -root | grep SERVER_OVERLAY_VISUALS xprop -root | grep SERVER_OVERLAY_VISUALS
HPCR 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) feature. This incurs a small
performance penalty.
Extensions Extensions
---------- ----------
@ -140,7 +153,7 @@ GLX_MESA_pixmap_colormap
This extension adds the GLX function: This extension adds the GLX function:
.. code-block:: c ::
GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual, GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
Pixmap pixmap, Colormap cmap ) Pixmap pixmap, Colormap cmap )
@ -173,7 +186,7 @@ The GLX_MESA_release_buffers extension allows a client to explicitly
deallocate the ancillary buffers by calling glxReleaseBuffersMESA() just deallocate the ancillary buffers by calling glxReleaseBuffersMESA() just
before an X window is destroyed. For example: before an X window is destroyed. For example:
.. code-block:: c ::
#ifdef GLX_MESA_release_buffers #ifdef GLX_MESA_release_buffers
glXReleaseBuffersMESA( dpy, window ); glXReleaseBuffersMESA( dpy, window );
@ -200,15 +213,10 @@ This extension was added in Mesa 2.6
Summary of X-related environment variables Summary of X-related environment variables
------------------------------------------ ------------------------------------------
+-----------------------------+--------------------------------------+ ::
| Environment variable | Description |
+=============================+======================================+ MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode (X only)
| :envvar:`MESA_RGB_VISUAL` | specifies the X visual and depth for | MESA_CI_VISUAL - specifies the X visual and depth for CI mode (X only)
| | RGB 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)
| :envvar:`MESA_BACK_BUFFER` | specifies how to implement the back | MESA_GAMMA - gamma correction coefficients (X only)
| | color buffer (X only) |
+-----------------------------+--------------------------------------+
| :envvar:`MESA_GAMMA` | gamma correction coefficients |
| | (X only) |
+-----------------------------+--------------------------------------+

19
mesa 3D driver/doxygen/.gitignore vendored Normal file
View File

@ -0,0 +1,19 @@
*.db
*.tag
*.tmp
core_subset
gallium
gbm
glapi
glsl
i965
main
math
math_subset
nir
radeon_subset
swrast
swrast_setup
tnl
tnl_dd
vbo

View File

@ -0,0 +1,37 @@
default: full
all: full subset
%.tag: %.doxy
doxygen $<
FULL = \
main.doxy \
math.doxy \
vbo.doxy \
glapi.doxy \
glsl.doxy \
swrast.doxy \
swrast_setup.doxy \
tnl.doxy \
tnl_dd.doxy \
gbm.doxy \
i965.doxy \
nir.doxy
full: $(FULL:.doxy=.tag)
$(foreach FILE,$(FULL),doxygen $(FILE);)
SUBSET = \
main.doxy \
math.doxy \
gallium.doxy
subset: $(SUBSET:.doxy=.tag)
$(foreach FILE,$(SUBSET),doxygen $(FILE);)
clean:
-rm -rf $(FULL:.doxy=) $(SUBSET:.doxy=)
-rm -rf *.tag
-rm -rf *.db

View File

@ -0,0 +1,10 @@
This directory is for doxygen (a source code documentation system).
See http://www.doxygen.org/ for more info.
Either run 'make' (Unix) or 'doxy.bat' (Windows) to run doxygen
and generate souce code documentation.
Then, load either doxygen/main/index.html or doxygen/core_subset/index.html into
your web browser.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,224 @@
# Doxyfile 0.1
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa Main"
PROJECT_NUMBER =
OUTPUT_DIRECTORY =
OUTPUT_LANGUAGE = English
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
INTERNAL_DOCS = YES
STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = YES
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = NO
INHERIT_DOCS = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = NO
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
ALIASES =
ENABLED_SECTIONS = subset
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO
SHOW_USED_FILES = YES
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = NO
WARN_FORMAT =
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/main/
FILE_PATTERNS = \
accum.h \
attrib.h \
blend.[ch] \
buffers.[ch] \
dd.h \
debug.h \
depth.h \
dlist.h \
context.[ch] \
config.h \
colormac.h \
colortab.h \
enable.h \
enums.h \
eval.h \
extensions.h \
feedback.[ch] \
fog.h \
get.h \
glheader.h \
hash.[ch] \
hint.h \
histogram.h \
image.[ch] \
imports.[ch] \
lines.[ch] \
light.h \
matrix.[ch] \
macros.h \
mmath.h \
mtypes.h \
pixel.h \
points.[ch] \
polygon.[ch] \
rastpos.[ch] \
simple_list.h \
state.[ch] \
stencil.[ch] \
subset_*.c \
texformat.h \
teximage.h \
texstate.h \
texstore.h \
texobj.[ch] \
texutil_tmp.h \
varray.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = core_subset
HTML_HEADER = header_subset.html
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT =
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT =
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT =
MAN_EXTENSION =
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = \
math_subset.tag=../math_subset
GENERATE_TAGFILE = core_subset.tag
ALLEXTERNALS = NO
PERL_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
HAVE_DOT = NO
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
HIDE_UNDOC_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
CGI_NAME =
CGI_URL =
DOC_URL =
DOC_ABSPATH =
BIN_ABSPATH =
EXT_DOC_PATHS =

View File

@ -0,0 +1,24 @@
doxygen tnl_dd.doxy
doxygen vbo.doxy
doxygen math.doxy
doxygen swrast.doxy
doxygen swrast_setup.doxy
doxygen tnl.doxy
doxygen core.doxy
doxygen glapi.doxy
doxygen glsl.doxy
doxygen nir.doxy
doxygen i965.doxy
echo Building again, to resolve tags
doxygen tnl_dd.doxy
doxygen vbo.doxy
doxygen math.doxy
doxygen swrast.doxy
doxygen swrast_setup.doxy
doxygen tnl.doxy
doxygen core.doxy
doxygen glapi.doxy
doxygen glsl.doxy
doxygen nir.doxy
doxygen i965.doxy

View File

@ -0,0 +1,309 @@
/** \mainpage
\section about About
Gallium3D is <a href="http://www.tungstengraphics.com/">Tungsten Graphics</a>'
new architecture for building 3D graphics drivers. Initially
supporting Mesa and Linux graphics drivers, Gallium3D is designed to allow
portability to all major operating systems and graphics interfaces.
Compared to existing Linux graphics drivers, Gallium3D will:
- Make drivers smaller and simpler.
Current DRI drivers are rather complicated. They're large, contain
duplicated code and are burdened with implementing many concepts tightly
tied to the OpenGL 1.x/2.x API.
- Model modern graphics hardware.
The new driver architecture is an abstraction of modern graphics hardware,
rather than an OpenGL->hardware translator. The new driver interface will
assume the presence of programmable vertex/fragment shaders and flexible
memory objects.
- Support multiple graphics APIs.
The OpenGL 3.0 API will be very different from OpenGL 1.x/2.x. We'd like a
driver model that is API-neutral so that it's not tied to a specific
graphics API.
\section contents Contents
- \ref overview
- \ref statetracker
- Pipe drivers:
- \ref softpipe
- \ref i915g
- Winsys drivers:
- X11 winsys driver (xm_winsys.c)
- Intel DRI winsys driver (intel_context.h, intel_winsys_pipe.c)
- Ancillary Modules:
- \ref draw
- \ref tgsi
- LLVM TGSI backend (gallivm.h)
- \ref callgraph
\section external External documentation
- <a href="http://www.tungstengraphics.com/gallium3D.htm">Gallium3D's Architectural Overview</a>
- <a href="http://www.tungstengraphics.com/wiki/index.php/Gallium3D">Technical Overview</a>
- <a href="http://www.tungstengraphics.com/wiki/files/gallium3d-xds2007.pdf">Gallium3D talk from XDS 2007</a>
*/
/** \page overview Overview
The public interface of a Gallium3D driver is described by the p_context.h
header file. The pipe_context structure is an abstract base class with
methods for:
- Setting rendering state (texture sampler state, vertex array info, drawing surfaces, etc.)
- Setting shader state, using the TGSI binary shader representation.
- Vertex array and indexed vertex array drawing.
- Region (memory) management for textures, renderbuffers, vertex buffers, etc.
- Hardware queries (number of texture units, max texture size, etc).
The p_state.h header defines all the state objects (such as polygon
rasterization options, blend modes, etc) and resources (drawing surfaces,
textures, memory buffers). The pipe interface uses "constant state" objects.
That is, state objects are created once and are immutable. State objects are
put into effect by binding them. This allows Gallium3D drivers to create
corresponding hardware state objects which can be quickly handled.
The p_defines.h header defines numerous constants and tokens (blend modes,
texture wrap modes, surface formats, etc.
The p_winsys.h header defines the window system and OS facilities which
Gallium3D drivers rely upon. For example, memory allocation is typically a
service the OS provides while window size/position information is provided by
the window system. Pipe drivers use the winsys interface to handle these
things.
By abstracting OS and window system services, pipe drivers are portable to
other platforms (e.g. embedded devices).
*/
/** \page statetracker The State Tracker
The state tracker is the piece which interfaces core Mesa to the Gallium3D
interface. It's responsible for translating Mesa state (blend modes, texture
state, etc) and drawing commands (like glDrawArrays and glDrawPixels) into
pipe objects and operations.
Traditional fixed-function OpenGL components (such as lighting and texture
combining) are implemented with shaders. OpenGL commands such as glDrawPixels
are translated into textured quadrilateral rendering. Basically, any
rendering operation that isn't directly supported by modern graphics hardware
is translated into a hardware-friendly form.
Future state trackers will be created for OpenGL 3.0 and OpenGL-ES 2.x.
*/
/** \page softpipe Softpipe Driver
The softpipe driver is a software implementation of the Gallium3D interface.
It will be used as a reference implementation and as a fallback driver when a
hardware driver isn't available. The softpipe driver will make extensive use
of run-time code generation to efficiently execute vertex, fragment and
rasterization operations.
\sa sp_winsys.h
*/
/** \page i915g i915 Driver
The i915 Gallium3D Driver is an initial hardware driver implementation within
the Gallium3D driver architecture. We expect that once complete this driver
will have equivalent functionality and performance to the current Mesa
i915tex driver, but from a much smaller codebase.
\sa i915_context.h
\sa i915_winsys.h
*/
/** \page draw Draw Module
The Draw module provides point/line/polygon rendering services such as
vertex transformation, polygon culling and clipping. It will be used by
drivers for hardware which lacks vertex transformation (such as the
i915/i945). It may also be instantiated and used directly by the state
tracker to implement some API functionality that doesn't map well to hardware
capabilities.
The interface of this module corresponds closely to the subset of the Gallium
Driver Interface which is relevent to these steps in the pipeline. Specifically
there are calls for:
- Vertex shader constant state objects
- Vertex buffer binding
- Vertex element layout (vertex fetch) constant state objects
- DrawArrays and DrawElements
- Rasterizer constant state objects.
The Draw module is effectively the part of \ref softpipe which is concerned with
vertex processing, split off into a separate module so that it can be reused
by drivers for rasterization-only hardware. As such it is also instantiated
by the \ref i915g driver.
Additionally, there are cases in the Mesa OpenGL state_tracker where it is
required to obtain transformed vertices and yet it is anticipated that using
hardware transformation even if available would reduce performance, usually
because the setup costs or latency are prohibitive. For this reason the Mesa
state_tracker also instantiates a copy of this module.
\sa draw_context.h
*/
/** \page tgsi TGSI
The TGSI module provides a universal representation of shaders and
CPU-based execution of shaders. All Mesa vertex/fragment programs and shaders
are translated into the TGSI representation before being passed to the
driver. In turn, the driver will convert the TGSI instructions into
GPU-specific instructions. For hardware that lacks vertex or fragment shader
support, the TGSI's executor can be used. The TGSI executor includes support
for SSE code generation. Support for other processors (such as Cell) will be
added in the future.
\sa tgsi_parse.h
\sa <a href="http://www.tungstengraphics.com/wiki/files/tgsi.pdf">TGSI specification</a>
*/
/** \page callgraph Glxgears callgraph example
Below is a call graph of the glxgears application together with the Gallium3D's softpipe reference driver.
\htmlonly
The functions in the graph below are clickable.
\endhtmlonly
\dot
digraph {
graph [fontname=Arial, fontsize=10];
node [fontcolor=white, fontname=Arial, style=filled, fontsize=10, shape=box];
edge [fontname=Arial, fontsize=10];
1 [color="#ff0000", URL="\ref main", label="main\n100.00% (0.68%)\n0"];
1 -> 2 [color="#fe0400", fontcolor="#fe0400", label="99.32%\n1433"];
2 [color="#fe0400", URL="\ref do_draw", label="do_draw\n99.32% (0.00%)\n1433"];
2 -> 4 [color="#fa1201", fontcolor="#fa1201", label="96.67%\n4298"];
2 -> 39 [color="#0d4f76", fontcolor="#0d4f76", label="2.45%\n1433"];
3 [color="#fa1201", URL="\ref execute_list", label="execute_list\n96.67% (0.00%)\n4299"];
3 -> 5 [color="#f91301", fontcolor="#f91301", label="96.38%\n17196"];
4 [color="#fa1201", URL="\ref _mesa_CallList", label="_mesa_CallList\n96.67% (0.00%)\n4299"];
4 -> 3 [color="#fa1201", fontcolor="#fa1201", label="96.67%\n4299"];
5 [color="#f91301", URL="\ref vbo_save_playback_vertex_list", label="vbo_save_playback_vertex_list\n96.38% (0.10%)\n17196"];
5 -> 6 [color="#f91501", fontcolor="#f91501", label="96.09%\n17196"];
6 [color="#f91501", URL="\ref st_draw_vbo", label="st_draw_vbo\n96.09% (0.00%)\n17196"];
6 -> 10 [color="#ec3f03", fontcolor="#ec3f03", label="87.48%\n30093"];
6 -> 33 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
6 -> 34 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
6 -> 47 [color="#0d3a74", fontcolor="#0d3a74", label="1.17%\n17196"];
7 [color="#f71d01", URL="\ref draw_do_flush", label="draw_do_flush\n94.52% (0.20%)\n101744"];
7 -> 13 [color="#e74e04", fontcolor="#e74e04", label="84.25%\n1146400"];
7 -> 8 [color="#0d7d6c", fontcolor="#0d7d6c", label="8.32%\n114640"];
7 -> 46 [color="#0d4175", fontcolor="#0d4175", label="1.57%\n97444"];
8 [color="#f32702", URL="\ref clip_tri", label="clip_tri\n92.37% (0.49%)\n1261040"];
8 -> 9 [color="#f32a02", fontcolor="#f32a02", label="91.88%\n1261040"];
9 [color="#f32a02", URL="\ref cull_tri", label="cull_tri\n91.88% (0.20%)\n1261040"];
9 -> 15 [color="#e35d04", fontcolor="#e35d04", label="81.12%\n560810"];
9 -> 12 [color="#0d805e", fontcolor="#0d805e", label="10.57%\n560810"];
10 [color="#ec3f03", URL="\ref softpipe_draw_arrays", label="softpipe_draw_arrays\n87.48% (0.00%)\n30093"];
10 -> 11 [color="#ec3f03", fontcolor="#ec3f03", label="87.48%\n30093"];
11 [color="#ec3f03", URL="\ref softpipe_draw_elements", label="softpipe_draw_elements\n87.48% (0.10%)\n30093"];
11 -> 17 [color="#cf9507", fontcolor="#cf9507", label="67.61%\n30093"];
11 -> 27 [color="#0d844f", fontcolor="#0d844f", label="13.01%\n120372"];
11 -> 36 [color="#0d5a77", fontcolor="#0d5a77", label="3.33%\n30093"];
11 -> 23 [color="#0d5977", fontcolor="#0d5977", label="3.23%\n30093"];
12 [color="#ea4703", URL="\ref flush_spans", label="flush_spans\n85.91% (4.60%)\n4586176"];
12 -> 14 [color="#e35c04", fontcolor="#e35c04", label="81.31%\n15910811"];
13 [color="#e74e04", URL="\ref flatshade_tri", label="flatshade_tri\n84.25% (0.29%)\n1146400"];
13 -> 8 [color="#e75004", fontcolor="#e75004", label="83.95%\n1146400"];
14 [color="#e35c04", URL="\ref shade_quad", label="shade_quad\n81.31% (7.73%)\n15910811"];
14 -> 21 [color="#c0bb09", fontcolor="#c0bb09", label="57.24%\n13903725"];
14 -> 26 [color="#0c883c", fontcolor="#0c883c", label="16.24%\n15910811"];
15 [color="#e35d04", URL="\ref setup_tri", label="setup_tri\n81.12% (1.47%)\n560810"];
15 -> 16 [color="#e06505", fontcolor="#e06505", label="79.26%\n1121620"];
16 [color="#e06505", URL="\ref subtriangle", label="subtriangle\n79.26% (3.91%)\n1121620"];
16 -> 12 [color="#da7606", fontcolor="#da7606", label="75.34%\n4025366"];
17 [color="#cf9507", URL="\ref draw_arrays", label="draw_arrays\n67.61% (0.00%)\n30093"];
17 -> 19 [color="#cf9607", fontcolor="#cf9607", label="67.42%\n630520"];
18 [color="#cf9607", URL="\ref do_ef_triangle", label="do_ef_triangle\n67.42% (0.49%)\n1261040"];
18 -> 20 [color="#ce9807", fontcolor="#ce9807", label="66.83%\n1261040"];
19 [color="#cf9607", URL="\ref do_quad", label="do_quad\n67.42% (0.00%)\n630520"];
19 -> 18 [color="#cf9607", fontcolor="#cf9607", label="67.42%\n1261040"];
20 [color="#ce9807", URL="\ref get_queued_prim", label="get_queued_prim\n66.83% (0.10%)\n1261040"];
20 -> 7 [color="#cd9907", fontcolor="#cd9907", label="66.54%\n71650"];
21 [color="#c0bb09", URL="\ref depth_test_quad", label="depth_test_quad\n57.24% (1.08%)\n13903725"];
21 -> 22 [color="#40a00b", fontcolor="#40a00b", label="34.54%\n13074127"];
21 -> 24 [color="#0c8f1e", fontcolor="#0c8f1e", label="21.62%\n13903725"];
22 [color="#40a00b", URL="\ref output_quad", label="output_quad\n34.54% (3.91%)\n13074127"];
22 -> 25 [color="#0c8c2b", fontcolor="#0c8c2b", label="19.28%\n13074127"];
22 -> 28 [color="#0d8159", fontcolor="#0d8159", label="11.35%\n7223435"];
23 [color="#1c970c", URL="\ref draw_flush", label="draw_flush\n27.98% (0.00%)\n257944"];
23 -> 7 [color="#1c970c", fontcolor="#1c970c", label="27.98%\n30093"];
24 [color="#0c8f1e", URL="\ref sp_depth_test_quad", label="sp_depth_test_quad\n21.62% (16.14%)\n13903725"];
24 -> 37 [color="#0d5977", fontcolor="#0d5977", label="3.23%\n13903725"];
24 -> 44 [color="#0d4c76", fontcolor="#0d4c76", label="2.25%\n13903725"];
25 [color="#0c8c2b", URL="\ref write_quad_f_swz", label="write_quad_f_swz\n19.28% (16.14%)\n13074127"];
25 -> 38 [color="#0d5877", fontcolor="#0d5877", label="3.13%\n26148254"];
26 [color="#0c883a", URL="\ref tgsi_exec_machine_init", label="tgsi_exec_machine_init\n16.73% (10.27%)\n16326381"];
26 -> 30 [color="#0d6178", fontcolor="#0d6178", label="3.91%\n16326381"];
26 -> 45 [color="#0d4475", fontcolor="#0d4475", label="1.76%\n16326381"];
26 -> 52 [color="#0d3174", fontcolor="#0d3174", label="0.78%\n16326381"];
27 [color="#0d844f", URL="\ref draw_set_mapped_vertex_buffer", label="draw_set_mapped_vertex_buffer\n13.01% (0.00%)\n120372"];
27 -> 23 [color="#0d844f", fontcolor="#0d844f", label="13.01%\n120372"];
28 [color="#0d8159", URL="\ref read_quad_f_swz", label="read_quad_f_swz\n11.35% (5.87%)\n7223435"];
28 -> 29 [color="#0d737a", fontcolor="#0d737a", label="5.48%\n14446870"];
29 [color="#0d737a", URL="\ref get_row_rgba", label="get_row_rgba\n5.48% (5.48%)\n14446870"];
30 [color="#0d6178", URL="\ref tgsi_parse_init", label="tgsi_parse_init\n3.91% (3.52%)\n16326383"];
31 [color="#0d5f78", URL="\ref draw_set_vertex_buffer", label="draw_set_vertex_buffer\n3.72% (0.00%)\n34392"];
31 -> 23 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
32 [color="#0d5f78", URL="\ref draw_set_vertex_element", label="draw_set_vertex_element\n3.72% (0.00%)\n34392"];
32 -> 23 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
33 [color="#0d5f78", URL="\ref softpipe_set_vertex_buffer", label="softpipe_set_vertex_buffer\n3.72% (0.00%)\n34392"];
33 -> 31 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
34 [color="#0d5f78", URL="\ref softpipe_set_vertex_element", label="softpipe_set_vertex_element\n3.72% (0.00%)\n34392"];
34 -> 32 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
35 [color="#0d5d77", URL="\ref __i686.get_pc_thunk.bx", label="__i686.get_pc_thunk.bx\n3.52% (3.52%)\n0"];
36 [color="#0d5a77", URL="\ref draw_set_mapped_constant_buffer", label="draw_set_mapped_constant_buffer\n3.33% (0.10%)\n30093"];
36 -> 23 [color="#0d5977", fontcolor="#0d5977", label="3.23%\n30093"];
37 [color="#0d5977", URL="\ref s8z24_read_quad_z", label="s8z24_read_quad_z\n3.23% (3.23%)\n13903725"];
38 [color="#0d5877", URL="\ref put_row_8R8G8B_ximage", label="put_row_8R8G8B_ximage\n3.13% (3.13%)\n26148254"];
39 [color="#0d4f76", URL="\ref _mesa_Clear", label="_mesa_Clear\n2.45% (0.00%)\n1433"];
39 -> 40 [color="#0d4f76", fontcolor="#0d4f76", label="2.45%\n1433"];
40 [color="#0d4f76", URL="\ref st_clear", label="st_clear\n2.45% (0.00%)\n1433"];
40 -> 41 [color="#0d4d76", fontcolor="#0d4d76", label="2.35%\n2866"];
41 [color="#0d4d76", URL="\ref xmesa_clear", label="xmesa_clear\n2.35% (0.00%)\n2866"];
41 -> 42 [color="#0d4c76", fontcolor="#0d4c76", label="2.25%\n1433"];
42 [color="#0d4c76", URL="\ref softpipe_clear", label="softpipe_clear\n2.25% (0.00%)\n1433"];
42 -> 43 [color="#0d4c76", fontcolor="#0d4c76", label="2.25%\n1433"];
43 [color="#0d4c76", URL="\ref sp_region_fill", label="sp_region_fill\n2.25% (2.25%)\n1433"];
44 [color="#0d4c76", URL="\ref s8z24_write_quad_z", label="s8z24_write_quad_z\n2.25% (2.25%)\n13903725"];
45 [color="#0d4475", URL="\ref tgsi_parse_free", label="tgsi_parse_free\n1.76% (0.78%)\n16326383"];
45 -> 49 [color="#0d3674", fontcolor="#0d3674", label="0.98%\n16326383"];
46 [color="#0d4175", URL="\ref draw_vertex_shader_queue_flush", label="draw_vertex_shader_queue_flush\n1.57% (0.49%)\n97444"];
46 -> 53 [color="#0d2f74", fontcolor="#0d2f74", label="0.68%\n415570"];
46 -> 26 [color="#0d2973", fontcolor="#0d2973", label="0.49%\n415570"];
47 [color="#0d3b74", URL="\ref st_validate_state", label="st_validate_state\n1.27% (0.00%)\n18629"];
47 -> 48 [color="#0d3874", fontcolor="#0d3874", label="1.08%\n8599"];
48 [color="#0d3874", URL="\ref update_raster_state", label="update_raster_state\n1.08% (0.10%)\n8599"];
48 -> 51 [color="#0d3674", fontcolor="#0d3674", label="0.98%\n8599"];
49 [color="#0d3674", URL="\ref tgsi_full_token_free", label="tgsi_full_token_free\n0.98% (0.98%)\n16326412"];
50 [color="#0d3674", URL="\ref draw_set_rasterizer_state", label="draw_set_rasterizer_state\n0.98% (0.00%)\n8599"];
50 -> 23 [color="#0d3674", fontcolor="#0d3674", label="0.98%\n8599"];
51 [color="#0d3674", URL="\ref softpipe_bind_rasterizer_state", label="softpipe_bind_rasterizer_state\n0.98% (0.00%)\n8599"];
51 -> 50 [color="#0d3674", fontcolor="#0d3674", label="0.98%\n8599"];
52 [color="#0d3174", URL="\ref tgsi_align_128bit", label="tgsi_align_128bit\n0.78% (0.78%)\n16326381"];
53 [color="#0d2f74", URL="\ref draw_vertex_fetch", label="draw_vertex_fetch\n0.68% (0.68%)\n415570"];
}
\enddot
The graph above was generated by the <a href="http://code.google.com/p/jrfonseca/wiki/Gprof2Dot">gprof2dot.py script</a>.
*/

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,48 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Generic Buffer Manager (gbm)"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/gbm/main
FILE_PATTERNS = *.c *.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = gbm
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = main.tag=../main \
math.tag=../math \
tnl_dd.tag=../tnl_dd \
swrast_setup.tag=../swrast_setup \
tnl.tag=../tnl \
vbo.tag=../vbo
GENERATE_TAGFILE = gbm.tag

View File

@ -0,0 +1,49 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa GL API dispatcher"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mapi/glapi/
FILE_PATTERNS = *.c *.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = glapi
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = main.tag=../main \
math.tag=../math \
tnl_dd.tag=../tnl_dd \
swrast.tag=../swrast \
swrast_setup.tag=../swrast_setup \
tnl.tag=../tnl \
vbo.tag=../vbo
GENERATE_TAGFILE = glapi.tag

View File

@ -0,0 +1,39 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa GLSL module"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/compiler/glsl/
FILE_PATTERNS = *.c *.cpp *.h
RECURSIVE = NO
EXCLUDE = ../src/compiler/glsl/glsl_lexer.cpp \
../src/compiler/glsl/glsl_parser.cpp \
../src/compiler/glsl/glsl_parser.h
EXCLUDE_PATTERNS =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = glsl
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = NO
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE = glsl.tag

View File

@ -0,0 +1,20 @@
<html>
<head>
<title>Mesa Source Code Documentation</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="qindex">
<a class="qindex" href="../main/index.html">core</a> |
<a class="qindex" href="../glapi/index.html">glapi</a> |
<a class="qindex" href="../glsl/index.html">glsl</a> |
<a class="qindex" href="../nir/index.html">nir</a> |
<a class="qindex" href="../vbo/index.html">vbo</a> |
<a class="qindex" href="../math/index.html">math</a> |
<a class="qindex" href="../swrast/index.html">swrast</a> |
<a class="qindex" href="../swrast_setup/index.html">swrast_setup</a> |
<a class="qindex" href="../tnl/index.html">tnl</a> |
<a class="qindex" href="../tnl_dd/index.html">tnl_dd</a> |
<a class="qindex" href="../gbm/index.html">gbm</a> |
<a class="qindex" href="../i965/index.html">i965</a>
</div>

View File

@ -0,0 +1,10 @@
<html>
<head><title>Mesa Source Code Documentation</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="qindex">
<a class="qindex" href="../core_subset/index.html">Mesa Core</a> |
<a class="qindex" href="../math_subset/index.html">math</a> |
<a class="qindex" href="../radeon_subset/index.html">radeon_subset</a>
</div>

View File

@ -0,0 +1,50 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Intel i965 Driver"
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/drivers/dri/i965
FILE_PATTERNS = *.c *.cpp *.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = i965
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
TAGFILES = glsl.tag=../glsl \
main.tag=../main \
math.tag=../math \
swrast.tag=../swrast \
swrast_setup.tag=../swrast_setup \
tnl.tag=../tnl \
tnl_dd.tag=../tnl_dd \
vbo.tag=../vbo
GENERATE_TAGFILE = i965.tag

View File

@ -0,0 +1,49 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa Main"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/main/
FILE_PATTERNS = *.c *.h
RECURSIVE = NO
EXCLUDE = ../src/glapitemp.h ../src/glapioffsets.h
EXCLUDE_PATTERNS = subset_*
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = main
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = tnl_dd.tag=../tnl_dd \
vbo.tag=../vbo \
glapi.tag=../glapi \
math.tag=../math \
swrast.tag=../swrast \
swrast_setup.tag=../swrast_setup \
tnl.tag=../tnl
GENERATE_TAGFILE = main.tag

View File

@ -0,0 +1,49 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa math module"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/math/
FILE_PATTERNS = *.c \
*.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = math
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = tnl_dd.tag=../tnl_dd \
main.tag=../main \
swrast.tag=../swrast \
swrast_setup.tag=../swrast_setup \
tnl.tag=../tnl \
vbo.tag=../vbo
GENERATE_TAGFILE = math.tag

View File

@ -0,0 +1,177 @@
# Doxyfile 0.1
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa math module"
PROJECT_NUMBER =
OUTPUT_DIRECTORY = .
OUTPUT_LANGUAGE = English
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
INTERNAL_DOCS = NO
STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = YES
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = NO
INHERIT_DOCS = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = NO
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
ALIASES =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = YES
SHOW_USED_FILES = YES
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = NO
WARN_FORMAT =
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/math/
FILE_PATTERNS = m_matrix.[ch]
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = math_subset
HTML_HEADER = header_subset.html
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT =
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT =
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT =
MAN_EXTENSION =
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = core_subset.tag=../core_subset
GENERATE_TAGFILE = math_subset.tag
ALLEXTERNALS = NO
PERL_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HAVE_DOT = NO
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
HIDE_UNDOC_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
CGI_NAME =
CGI_URL =
DOC_URL =
DOC_ABSPATH =
BIN_ABSPATH =
EXT_DOC_PATHS =

View File

@ -0,0 +1,50 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa NIR module"
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/compiler/nir
FILE_PATTERNS = *.c *.cpp *.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = nir
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
TAGFILES = glsl.tag=../glsl \
main.tag=../main \
math.tag=../math \
swrast.tag=../swrast \
swrast_setup.tag=../swrast_setup \
tnl.tag=../tnl \
tnl_dd.tag=../tnl_dd \
vbo.tag=../vbo
GENERATE_TAGFILE = nir.tag

View File

@ -0,0 +1,202 @@
# Doxyfile 0.1
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Radeon Subset Driver"
PROJECT_NUMBER =
OUTPUT_DIRECTORY =
OUTPUT_LANGUAGE = English
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
INTERNAL_DOCS = YES
STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = YES
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = NO
SHOW_INCLUDE_FILES = NO
JAVADOC_AUTOBRIEF = NO
INHERIT_DOCS = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = NO
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
ALIASES =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO
SHOW_USED_FILES = YES
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = NO
WARN_FORMAT =
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = \
../src/mesa/drivers/dri/common/mm.c \
../src/mesa/drivers/dri/common/mm.h \
../src/mesa/drivers/dri/radeon/radeon_context.c \
../src/mesa/drivers/dri/radeon/radeon_context.h \
../src/mesa/drivers/dri/radeon/radeon_ioctl.c \
../src/mesa/drivers/dri/radeon/radeon_ioctl.h \
../src/mesa/drivers/dri/radeon/radeon_lock.c \
../src/mesa/drivers/dri/radeon/radeon_lock.h \
../src/mesa/drivers/dri/radeon/radeon_screen.c \
../src/mesa/drivers/dri/radeon/radeon_screen.h \
../src/mesa/drivers/dri/radeon/radeon_state.c \
../src/mesa/drivers/dri/radeon/radeon_state.h \
../src/mesa/drivers/dri/radeon/radeon_state_init.c \
../src/mesa/drivers/dri/radeon/radeon_subset.h \
../src/mesa/drivers/dri/radeon/radeon_subset_bitmap.c \
../src/mesa/drivers/dri/radeon/radeon_subset_readpix.c \
../src/mesa/drivers/dri/radeon/radeon_subset_select.c \
../src/mesa/drivers/dri/radeon/radeon_subset_tex.c \
../src/mesa/drivers/dri/radeon/radeon_subset_vtx.c \
../src/mesa/drivers/dri/radeon/radeon_tcl.h \
../src/mesa/drivers/dri/radeon/radeon_tex.h \
../src/mesa/drivers/dri/radeon/radeon_vtxfmt.h \
../src/mesa/drivers/dri/radeon/server
FILE_PATTERNS = *.h *.c
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = radeon_subset
HTML_HEADER = header_subset.html
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT =
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT =
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT =
MAN_EXTENSION =
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = \
core_subset.tag=../core_subset \
math_subset.tag=../math_subset
GENERATE_TAGFILE = radeon_subset.tag
ALLEXTERNALS = NO
PERL_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
HAVE_DOT = NO
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
HIDE_UNDOC_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
CGI_NAME =
CGI_URL =
DOC_URL =
DOC_ABSPATH =
BIN_ABSPATH =
EXT_DOC_PATHS =

View File

@ -0,0 +1,48 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa Software Rasterization (swrast)"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/swrast/
FILE_PATTERNS = *.c *.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = swrast
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = main.tag=../main \
math.tag=../math \
tnl_dd.tag=../tnl_dd \
swrast_setup.tag=../swrast_setup \
tnl.tag=../tnl \
vbo.tag=../vbo
GENERATE_TAGFILE = swrast.tag

View File

@ -0,0 +1,49 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa swrast_setup"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/swrast_setup/
FILE_PATTERNS = *.c \
*.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = swrast_setup
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = tnl_dd.tag=../tnl_dd \
main.tag=../main \
math.tag=../math \
swrast.tag=../swrast \
tnl.tag=../tnl \
vbo.tag=../vbo
GENERATE_TAGFILE = swrast_setup.tag

View File

@ -0,0 +1,49 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa Transform and Lighting (tnl)"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/tnl/
FILE_PATTERNS = *.c \
*.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = tnl
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = tnl_dd.tag=../tnl_dd \
main.tag=../main \
math.tag=../math \
swrast.tag=../swrast \
swrast_setup.tag=../swrast_setup \
vbo.tag=../vbo
GENERATE_TAGFILE = tnl.tag

View File

@ -0,0 +1,48 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa tnl_dd"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/tnl_dd/
FILE_PATTERNS = *.c *.h
RECURSIVE = YES
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = tnl_dd
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = main.tag=../main \
math.tag=../math \
swrast.tag=../swrast \
swrast_setup.tag=../swrast_setup \
tnl.tag=../tnl \
vbo.tag=../vbo
GENERATE_TAGFILE = tnl_dd.tag

View File

@ -0,0 +1,49 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa vbo"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/vbo/
FILE_PATTERNS = *.c \
*.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = vbo
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = main.tag=../main \
math.tag=../math \
swrast.tag=../swrast \
swrast_setup.tag=../swrast_setup \
tnl.tag=../tnl \
tnl_dd.tag=../tnl_dd
GENERATE_TAGFILE = vbo.tag

View File

@ -6,15 +6,34 @@ extern "C" {
#endif #endif
/* /*
** Copyright 2013-2020 The Khronos Group Inc. ** Copyright (c) 2013-2017 The Khronos Group Inc.
** SPDX-License-Identifier: Apache-2.0
** **
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are 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 Materials.
**
** THE MATERIALS ARE 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
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
/*
** This header is generated from the Khronos EGL XML API Registry. ** This header is generated from the Khronos EGL XML API Registry.
** The current version of the Registry, generator scripts ** The current version of the Registry, generator scripts
** used to make the header, and the header can be found at ** used to make the header, and the header can be found at
** http://www.khronos.org/registry/egl ** http://www.khronos.org/registry/egl
** **
** Khronos $Git commit SHA1: e8baa0bf39 $ on $Git commit date: 2021-04-26 17:56:26 -0600 $ ** Khronos $Git commit SHA1: b5409265f3 $ on $Git commit date: 2020-02-20 08:24:34 -0800 $
*/ */
#include <EGL/eglplatform.h> #include <EGL/eglplatform.h>
@ -23,7 +42,7 @@ extern "C" {
#define EGL_EGL_PROTOTYPES 1 #define EGL_EGL_PROTOTYPES 1
#endif #endif
/* Generated on date 20210604 */ /* Generated on date 20200220 */
/* Generated C header for: /* Generated C header for:
* API: egl * API: egl

View File

@ -6,20 +6,39 @@ extern "C" {
#endif #endif
/* /*
** Copyright 2013-2020 The Khronos Group Inc. ** Copyright (c) 2013-2017 The Khronos Group Inc.
** SPDX-License-Identifier: Apache-2.0
** **
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are 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 Materials.
**
** THE MATERIALS ARE 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
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
/*
** This header is generated from the Khronos EGL XML API Registry. ** This header is generated from the Khronos EGL XML API Registry.
** The current version of the Registry, generator scripts ** The current version of the Registry, generator scripts
** used to make the header, and the header can be found at ** used to make the header, and the header can be found at
** http://www.khronos.org/registry/egl ** http://www.khronos.org/registry/egl
** **
** Khronos $Git commit SHA1: dc0b58dca5 $ on $Git commit date: 2021-06-25 01:58:50 +0200 $ ** Khronos $Git commit SHA1: b5409265f3 $ on $Git commit date: 2020-02-20 08:24:34 -0800 $
*/ */
#include <EGL/eglplatform.h> #include <EGL/eglplatform.h>
#define EGL_EGLEXT_VERSION 20210629 #define EGL_EGLEXT_VERSION 20200220
/* Generated C header for: /* Generated C header for:
* API: egl * API: egl
@ -574,14 +593,6 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSu
#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1 #define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */ #endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
#ifndef EGL_ANGLE_sync_control_rate
#define EGL_ANGLE_sync_control_rate 1
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
#endif
#endif /* EGL_ANGLE_sync_control_rate */
#ifndef EGL_ANGLE_window_fixed_size #ifndef EGL_ANGLE_window_fixed_size
#define EGL_ANGLE_window_fixed_size 1 #define EGL_ANGLE_window_fixed_size 1
#define EGL_FIXED_SIZE_ANGLE 0x3201 #define EGL_FIXED_SIZE_ANGLE 0x3201
@ -651,11 +662,6 @@ EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSwapPolicyEXT (EGLint external_win_id
#endif #endif
#endif /* EGL_EXT_compositor */ #endif /* EGL_EXT_compositor */
#ifndef EGL_EXT_config_select_group
#define EGL_EXT_config_select_group 1
#define EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
#endif /* EGL_EXT_config_select_group */
#ifndef EGL_EXT_create_context_robustness #ifndef EGL_EXT_create_context_robustness
#define EGL_EXT_create_context_robustness 1 #define EGL_EXT_create_context_robustness 1
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF #define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
@ -688,11 +694,6 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint a
#define EGL_DRM_MASTER_FD_EXT 0x333C #define EGL_DRM_MASTER_FD_EXT 0x333C
#endif /* EGL_EXT_device_drm */ #endif /* EGL_EXT_device_drm */
#ifndef EGL_EXT_device_drm_render_node
#define EGL_EXT_device_drm_render_node 1
#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
#endif /* EGL_EXT_device_drm_render_node */
#ifndef EGL_EXT_device_enumeration #ifndef EGL_EXT_device_enumeration
#define EGL_EXT_device_enumeration 1 #define EGL_EXT_device_enumeration 1
#endif /* EGL_EXT_device_enumeration */ #endif /* EGL_EXT_device_enumeration */
@ -702,26 +703,10 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint a
#define EGL_OPENWF_DEVICE_ID_EXT 0x3237 #define EGL_OPENWF_DEVICE_ID_EXT 0x3237
#endif /* EGL_EXT_device_openwf */ #endif /* EGL_EXT_device_openwf */
#ifndef EGL_EXT_device_persistent_id
#define EGL_EXT_device_persistent_id 1
#define EGL_DEVICE_UUID_EXT 0x335C
#define EGL_DRIVER_UUID_EXT 0x335D
#define EGL_DRIVER_NAME_EXT 0x335E
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
#endif
#endif /* EGL_EXT_device_persistent_id */
#ifndef EGL_EXT_device_query #ifndef EGL_EXT_device_query
#define EGL_EXT_device_query 1 #define EGL_EXT_device_query 1
#endif /* EGL_EXT_device_query */ #endif /* EGL_EXT_device_query */
#ifndef EGL_EXT_device_query_name
#define EGL_EXT_device_query_name 1
#define EGL_RENDERER_EXT 0x335F
#endif /* EGL_EXT_device_query_name */
#ifndef EGL_EXT_gl_colorspace_bt2020_linear #ifndef EGL_EXT_gl_colorspace_bt2020_linear
#define EGL_EXT_gl_colorspace_bt2020_linear 1 #define EGL_EXT_gl_colorspace_bt2020_linear 1
#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F #define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
@ -898,17 +883,6 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy,
#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6 #define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
#endif /* EGL_EXT_platform_x11 */ #endif /* EGL_EXT_platform_x11 */
#ifndef EGL_EXT_platform_xcb
#define EGL_EXT_platform_xcb 1
#define EGL_PLATFORM_XCB_EXT 0x31DC
#define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
#endif /* EGL_EXT_platform_xcb */
#ifndef EGL_EXT_present_opaque
#define EGL_EXT_present_opaque 1
#define EGL_PRESENT_OPAQUE_EXT 0x31DF
#endif /* EGL_EXT_present_opaque */
#ifndef EGL_EXT_protected_content #ifndef EGL_EXT_protected_content
#define EGL_EXT_protected_content 1 #define EGL_EXT_protected_content 1
#define EGL_PROTECTED_CONTENT_EXT 0x32C0 #define EGL_PROTECTED_CONTENT_EXT 0x32C0
@ -1175,24 +1149,6 @@ EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface sur
#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C #define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
#endif /* EGL_NV_robustness_video_memory_purge */ #endif /* EGL_NV_robustness_video_memory_purge */
#ifndef EGL_NV_stream_consumer_eglimage
#define EGL_NV_stream_consumer_eglimage 1
#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
#define EGL_STREAM_IMAGE_ADD_NV 0x3374
#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375
#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, EGLuint64KHR *modifiers, EGLAttrib *attrib_list);
typedef EGLint (EGLAPIENTRYP PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, EGLuint64KHR *modifiers, EGLAttrib *attrib_list);
EGLAPI EGLint EGLAPIENTRY eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
EGLAPI EGLBoolean EGLAPIENTRY eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
EGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
#endif
#endif /* EGL_NV_stream_consumer_eglimage */
#ifndef EGL_NV_stream_consumer_gltexture_yuv #ifndef EGL_NV_stream_consumer_gltexture_yuv
#define EGL_NV_stream_consumer_gltexture_yuv 1 #define EGL_NV_stream_consumer_gltexture_yuv 1
#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C #define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C

View File

@ -38,7 +38,9 @@
#if defined(__WIN32__) && !defined(__CYGWIN__) #if defined(__WIN32__) && !defined(__CYGWIN__)
# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */ # if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
# define GLAPI __declspec(dllexport) # define GLAPI __declspec(dllexport)
# else # elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
# define GLAPI __declspec(dllimport)
# else /* for use with static link lib build of Win32 edition only */
# define GLAPI extern # define GLAPI extern
# endif # endif
# if defined(__MINGW32__) && defined(GL_NO_STDCALL) || defined(UNDER_CE) /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */ # if defined(__MINGW32__) && defined(GL_NO_STDCALL) || defined(UNDER_CE) /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */
@ -1896,13 +1898,13 @@ GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GL
GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v ); GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );
GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble * m ); GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );
GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat * m ); GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );
GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble * m ); GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] );
GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat * m ); GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] );
GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert ); GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert );

Some files were not shown because too many files have changed in this diff Show More