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:
parent
decfd47661
commit
1bf06322b8
@ -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 \
|
||||||
|
@ -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
187
mesa 3D driver/SConstruct
Normal 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)
|
@ -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', ''),
|
||||||
])
|
])
|
||||||
|
@ -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,25 +133,18 @@ 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
|
||||||
|
else:
|
||||||
|
raise Exception('No closes found?')
|
||||||
|
if bug.startswith('h'):
|
||||||
# This means we have a bug in the form "Closes: https://..."
|
# This means we have a bug in the form "Closes: https://..."
|
||||||
issues.append(os.path.basename(urllib.parse.urlparse(bug).path))
|
issues.append(os.path.basename(urllib.parse.urlparse(bug).path))
|
||||||
elif ',' in bug:
|
else:
|
||||||
issues.extend([b.strip().lstrip('#') for b in bug.split(',')])
|
|
||||||
elif bug.startswith('#'):
|
|
||||||
issues.append(bug.lstrip('#'))
|
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:
|
||||||
results = await asyncio.gather(*[get_bug(session, i) for i in issues])
|
results = await asyncio.gather(*[get_bug(session, i) for i in issues])
|
||||||
@ -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())
|
||||||
|
@ -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)
|
|
||||||
|
45
mesa 3D driver/bin/get-extra-pick-list.sh
Normal file
45
mesa 3D driver/bin/get-extra-pick-list.sh
Normal 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
|
150
mesa 3D driver/bin/get-pick-list.sh
Normal file
150
mesa 3D driver/bin/get-pick-list.sh
Normal 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
|
@ -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
|
||||||
|
|
||||||
|
@ -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),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
@ -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()
|
||||||
|
@ -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()
|
||||||
|
@ -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:
|
||||||
|
@ -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)
|
||||||
|
@ -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])
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
|
@ -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
124
mesa 3D driver/common.py
Normal 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)
|
64
mesa 3D driver/docs/README.WIN32
Normal file
64
mesa 3D driver/docs/README.WIN32
Normal 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.
|
@ -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
|
|
||||||
|
@ -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))
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
@ -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``.
|
||||||
|
@ -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.
|
|
||||||
|
@ -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!).
|
||||||
|
@ -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).
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
|
||||||
|
@ -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",
|
||||||
|
103
mesa 3D driver/docs/contents.rst
Normal file
103
mesa 3D driver/docs/contents.rst
Normal 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>
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
|
||||||
|
@ -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`:
|
||||||
|
|
||||||
|
@ -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
|
||||||
~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
@ -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: ::
|
||||||
|
316
mesa 3D driver/docs/drivers/vmware-guest.rst
Normal file
316
mesa 3D driver/docs/drivers/vmware-guest.rst
Normal 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".
|
@ -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
|
|
||||||
|
@ -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``).
|
||||||
|
@ -8,49 +8,47 @@ but they can sometimes be useful for debugging end-user issues.
|
|||||||
LibGL environment variables
|
LibGL environment variables
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
:envvar:`LIBGL_DEBUG`
|
``LIBGL_DEBUG``
|
||||||
If defined debug information will be printed to stderr. If set to
|
If defined debug information will be printed to stderr. If set to
|
||||||
``verbose`` additional information will be printed.
|
``verbose`` additional information will be printed.
|
||||||
:envvar:`LIBGL_DRIVERS_PATH`
|
``LIBGL_DRIVERS_PATH``
|
||||||
colon-separated list of paths to search for DRI drivers
|
colon-separated list of paths to search for DRI drivers
|
||||||
:envvar:`LIBGL_ALWAYS_INDIRECT`
|
``LIBGL_ALWAYS_INDIRECT``
|
||||||
if set to ``true``, forces an indirect rendering context/connection.
|
if set to ``true``, forces an indirect rendering context/connection.
|
||||||
:envvar:`LIBGL_ALWAYS_SOFTWARE`
|
``LIBGL_ALWAYS_SOFTWARE``
|
||||||
if set to ``true``, always use software rendering
|
if set to ``true``, always use software rendering
|
||||||
:envvar:`LIBGL_NO_DRAWARRAYS`
|
``LIBGL_NO_DRAWARRAYS``
|
||||||
if set to ``true``, do not use DrawArrays GLX protocol (for
|
if set to ``true``, do not use DrawArrays GLX protocol (for
|
||||||
debugging)
|
debugging)
|
||||||
:envvar:`LIBGL_SHOW_FPS`
|
``LIBGL_SHOW_FPS``
|
||||||
print framerate to stdout based on the number of ``glXSwapBuffers``
|
print framerate to stdout based on the number of ``glXSwapBuffers``
|
||||||
calls per second.
|
calls per second.
|
||||||
:envvar:`LIBGL_DRI2_DISABLE`
|
``LIBGL_DRI3_DISABLE``
|
||||||
disable DRI2 if set to ``true``.
|
|
||||||
:envvar:`LIBGL_DRI3_DISABLE`
|
|
||||||
disable DRI3 if set to ``true``.
|
disable DRI3 if set to ``true``.
|
||||||
|
|
||||||
Core Mesa environment variables
|
Core Mesa environment variables
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
:envvar:`MESA_NO_ASM`
|
``MESA_NO_ASM``
|
||||||
if set, disables all assembly language optimizations
|
if set, disables all assembly language optimizations
|
||||||
:envvar:`MESA_NO_MMX`
|
``MESA_NO_MMX``
|
||||||
if set, disables Intel MMX optimizations
|
if set, disables Intel MMX optimizations
|
||||||
:envvar:`MESA_NO_3DNOW`
|
``MESA_NO_3DNOW``
|
||||||
if set, disables AMD 3DNow! optimizations
|
if set, disables AMD 3DNow! optimizations
|
||||||
:envvar:`MESA_NO_SSE`
|
``MESA_NO_SSE``
|
||||||
if set, disables Intel SSE optimizations
|
if set, disables Intel SSE optimizations
|
||||||
:envvar:`MESA_NO_ERROR`
|
``MESA_NO_ERROR``
|
||||||
if set to 1, error checking is disabled as per ``KHR_no_error``. This
|
if set to 1, error checking is disabled as per ``KHR_no_error``. This
|
||||||
will result in undefined behavior for invalid use of the API, but
|
will result in undefined behavior for invalid use of the API, but
|
||||||
can reduce CPU use for apps that are known to be error free.
|
can reduce CPU use for apps that are known to be error free.
|
||||||
:envvar:`MESA_DEBUG`
|
``MESA_DEBUG``
|
||||||
if set, error messages are printed to stderr. For example, if the
|
if set, error messages are printed to stderr. For example, if the
|
||||||
application generates a ``GL_INVALID_ENUM`` error, a corresponding
|
application generates a ``GL_INVALID_ENUM`` error, a corresponding
|
||||||
error message indicating where the error occurred, and possibly why,
|
error message indicating where the error occurred, and possibly why,
|
||||||
will be printed to stderr. For release builds, :envvar:`MESA_DEBUG`
|
will be printed to stderr. For release builds, ``MESA_DEBUG``
|
||||||
defaults to off (no debug output). :envvar:`MESA_DEBUG` accepts the
|
defaults to off (no debug output). ``MESA_DEBUG`` accepts the
|
||||||
following comma-separated list of named flags, which adds extra
|
following comma-separated list of named flags, which adds extra
|
||||||
behavior to just set :envvar:`MESA_DEBUG` to ``1``:
|
behavior to just set ``MESA_DEBUG=1``:
|
||||||
|
|
||||||
``silent``
|
``silent``
|
||||||
turn off debug messages. Only useful for debug builds.
|
turn off debug messages. Only useful for debug builds.
|
||||||
@ -65,21 +63,21 @@ Core Mesa environment variables
|
|||||||
print error and performance messages to stderr (or
|
print error and performance messages to stderr (or
|
||||||
``MESA_LOG_FILE``).
|
``MESA_LOG_FILE``).
|
||||||
|
|
||||||
:envvar:`MESA_LOG_FILE`
|
``MESA_LOG_FILE``
|
||||||
specifies a file name for logging all errors, warnings, etc., rather
|
specifies a file name for logging all errors, warnings, etc., rather
|
||||||
than stderr
|
than stderr
|
||||||
:envvar:`MESA_TEX_PROG`
|
``MESA_TEX_PROG``
|
||||||
if set, implement conventional texture environment modes with fragment
|
if set, implement conventional texture env modes with fragment
|
||||||
programs (intended for developers only)
|
programs (intended for developers only)
|
||||||
:envvar:`MESA_TNL_PROG`
|
``MESA_TNL_PROG``
|
||||||
if set, implement conventional vertex transformation operations with
|
if set, implement conventional vertex transformation operations with
|
||||||
vertex programs (intended for developers only). Setting this variable
|
vertex programs (intended for developers only). Setting this variable
|
||||||
automatically sets the :envvar:`MESA_TEX_PROG` variable as well.
|
automatically sets the ``MESA_TEX_PROG`` variable as well.
|
||||||
:envvar:`MESA_EXTENSION_OVERRIDE`
|
``MESA_EXTENSION_OVERRIDE``
|
||||||
can be used to enable/disable extensions. A value such as
|
can be used to enable/disable extensions. A value such as
|
||||||
``GL_EXT_foo -GL_EXT_bar`` will enable the ``GL_EXT_foo`` extension
|
``GL_EXT_foo -GL_EXT_bar`` will enable the ``GL_EXT_foo`` extension
|
||||||
and disable the ``GL_EXT_bar`` extension.
|
and disable the ``GL_EXT_bar`` extension.
|
||||||
:envvar:`MESA_EXTENSION_MAX_YEAR`
|
``MESA_EXTENSION_MAX_YEAR``
|
||||||
The ``GL_EXTENSIONS`` string returned by Mesa is sorted by extension
|
The ``GL_EXTENSIONS`` string returned by Mesa is sorted by extension
|
||||||
year. If this variable is set to year X, only extensions defined on
|
year. If this variable is set to year X, only extensions defined on
|
||||||
or before year X will be reported. This is to work-around a bug in
|
or before year X will be reported. This is to work-around a bug in
|
||||||
@ -87,7 +85,7 @@ Core Mesa environment variables
|
|||||||
buffer without truncating. If the extension string is too long, the
|
buffer without truncating. If the extension string is too long, the
|
||||||
buffer overrun can cause the game to crash. This is a work-around for
|
buffer overrun can cause the game to crash. This is a work-around for
|
||||||
that.
|
that.
|
||||||
:envvar:`MESA_GL_VERSION_OVERRIDE`
|
``MESA_GL_VERSION_OVERRIDE``
|
||||||
changes the value returned by ``glGetString(GL_VERSION)`` and
|
changes the value returned by ``glGetString(GL_VERSION)`` and
|
||||||
possibly the GL API type.
|
possibly the GL API type.
|
||||||
|
|
||||||
@ -127,7 +125,7 @@ Core Mesa environment variables
|
|||||||
- Mesa may not really implement all the features of the given
|
- Mesa may not really implement all the features of the given
|
||||||
version. (for developers only)
|
version. (for developers only)
|
||||||
|
|
||||||
:envvar:`MESA_GLES_VERSION_OVERRIDE`
|
``MESA_GLES_VERSION_OVERRIDE``
|
||||||
changes the value returned by ``glGetString(GL_VERSION)`` for OpenGL
|
changes the value returned by ``glGetString(GL_VERSION)`` for OpenGL
|
||||||
ES.
|
ES.
|
||||||
|
|
||||||
@ -136,17 +134,17 @@ Core Mesa environment variables
|
|||||||
- Mesa may not really implement all the features of the given
|
- Mesa may not really implement all the features of the given
|
||||||
version. (for developers only)
|
version. (for developers only)
|
||||||
|
|
||||||
:envvar:`MESA_GLSL_VERSION_OVERRIDE`
|
``MESA_GLSL_VERSION_OVERRIDE``
|
||||||
changes the value returned by
|
changes the value returned by
|
||||||
``glGetString(GL_SHADING_LANGUAGE_VERSION)``. Valid values are
|
``glGetString(GL_SHADING_LANGUAGE_VERSION)``. Valid values are
|
||||||
integers, such as ``130``. Mesa will not really implement all the
|
integers, such as ``130``. Mesa will not really implement all the
|
||||||
features of the given language version if it's higher than what's
|
features of the given language version if it's higher than what's
|
||||||
normally reported. (for developers only)
|
normally reported. (for developers only)
|
||||||
:envvar:`MESA_GLSL_CACHE_DISABLE`
|
``MESA_GLSL_CACHE_DISABLE``
|
||||||
if set to ``true``, disables the GLSL shader cache. If set to
|
if set to ``true``, disables the GLSL shader cache. If set to
|
||||||
``false``, enables the GLSL shader cache when it is disabled by
|
``false``, enables the GLSL shader cache when it is disabled by
|
||||||
default.
|
default.
|
||||||
:envvar:`MESA_GLSL_CACHE_MAX_SIZE`
|
``MESA_GLSL_CACHE_MAX_SIZE``
|
||||||
if set, determines the maximum size of the on-disk cache of compiled
|
if set, determines the maximum size of the on-disk cache of compiled
|
||||||
GLSL programs. Should be set to a number optionally followed by
|
GLSL programs. Should be set to a number optionally followed by
|
||||||
``K``, ``M``, or ``G`` to specify a size in kilobytes, megabytes, or
|
``K``, ``M``, or ``G`` to specify a size in kilobytes, megabytes, or
|
||||||
@ -160,22 +158,22 @@ Core Mesa environment variables
|
|||||||
you may end up with a 1GB cache for x86_64 and another 1GB cache for
|
you may end up with a 1GB cache for x86_64 and another 1GB cache for
|
||||||
i386.
|
i386.
|
||||||
|
|
||||||
:envvar:`MESA_GLSL_CACHE_DIR`
|
``MESA_GLSL_CACHE_DIR``
|
||||||
if set, determines the directory to be used for the on-disk cache of
|
if set, determines the directory to be used for the on-disk cache of
|
||||||
compiled GLSL programs. If this variable is not set, then the cache
|
compiled GLSL programs. If this variable is not set, then the cache
|
||||||
will be stored in ``$XDG_CACHE_HOME/mesa_shader_cache`` (if that
|
will be stored in ``$XDG_CACHE_HOME/mesa_shader_cache`` (if that
|
||||||
variable is set), or else within ``.cache/mesa_shader_cache`` within
|
variable is set), or else within ``.cache/mesa_shader_cache`` within
|
||||||
the user's home directory.
|
the user's home directory.
|
||||||
:envvar:`MESA_GLSL`
|
``MESA_GLSL``
|
||||||
:ref:`shading language compiler options <envvars>`
|
:ref:`shading language compiler options <envvars>`
|
||||||
:envvar:`MESA_NO_MINMAX_CACHE`
|
``MESA_NO_MINMAX_CACHE``
|
||||||
when set, the minmax index cache is globally disabled.
|
when set, the minmax index cache is globally disabled.
|
||||||
:envvar:`MESA_SHADER_CAPTURE_PATH`
|
``MESA_SHADER_CAPTURE_PATH``
|
||||||
see :ref:`Capturing Shaders <capture>`
|
see :ref:`Capturing Shaders <capture>`
|
||||||
:envvar:`MESA_SHADER_DUMP_PATH` and :envvar:`MESA_SHADER_READ_PATH`
|
``MESA_SHADER_DUMP_PATH`` and ``MESA_SHADER_READ_PATH``
|
||||||
see :ref:`Experimenting with Shader
|
see :ref:`Experimenting with Shader
|
||||||
Replacements <replacement>`
|
Replacements <replacement>`
|
||||||
:envvar:`MESA_VK_VERSION_OVERRIDE`
|
``MESA_VK_VERSION_OVERRIDE``
|
||||||
changes the Vulkan physical device version as returned in
|
changes the Vulkan physical device version as returned in
|
||||||
``VkPhysicalDeviceProperties::apiVersion``.
|
``VkPhysicalDeviceProperties::apiVersion``.
|
||||||
|
|
||||||
@ -184,27 +182,23 @@ Core Mesa environment variables
|
|||||||
instance version as advertised by ``vkEnumerateInstanceVersion``
|
instance version as advertised by ``vkEnumerateInstanceVersion``
|
||||||
- This can be very useful for debugging but some features may not be
|
- This can be very useful for debugging but some features may not be
|
||||||
implemented correctly. (For developers only)
|
implemented correctly. (For developers only)
|
||||||
:envvar:`MESA_VK_WSI_PRESENT_MODE`
|
``MESA_LOADER_DRIVER_OVERRIDE``
|
||||||
overrides the WSI present mode clients specify in
|
|
||||||
``VkSwapchainCreateInfoKHR::presentMode``. Values can be ``fifo``,
|
|
||||||
``relaxed``, ``mailbox`` or ``immediate``.
|
|
||||||
:envvar:`MESA_LOADER_DRIVER_OVERRIDE`
|
|
||||||
chooses a different driver binary such as ``etnaviv`` or ``zink``.
|
chooses a different driver binary such as ``etnaviv`` or ``zink``.
|
||||||
|
|
||||||
NIR passes environment variables
|
NIR passes environment variables
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
The following are only applicable for drivers that uses NIR, as they
|
The following are only applicable for drivers that uses NIR, as they
|
||||||
modify the behavior for the common ``NIR_PASS`` and ``NIR_PASS_V`` macros,
|
modify the behavior for the common NIR_PASS and NIR_PASS_V macros, that
|
||||||
that wrap calls to NIR lowering/optimizations.
|
wrap calls to NIR lowering/optimizations.
|
||||||
|
|
||||||
:envvar:`NIR_PRINT`
|
``NIR_PRINT``
|
||||||
If defined, the resulting NIR shader will be printed out at each
|
If defined, the resulting NIR shader will be printed out at each
|
||||||
successful NIR lowering/optimization call.
|
successful NIR lowering/optimization call.
|
||||||
:envvar:`NIR_TEST_CLONE`
|
``NIR_TEST_CLONE``
|
||||||
If defined, cloning a NIR shader would be tested at each successful
|
If defined, cloning a NIR shader would be tested at each successful
|
||||||
NIR lowering/optimization call.
|
NIR lowering/optimization call.
|
||||||
:envvar:`NIR_TEST_SERIALIZE`
|
``NIR_TEST_SERIALIZE``
|
||||||
If defined, serialize and deserialize a NIR shader would be tested at
|
If defined, serialize and deserialize a NIR shader would be tested at
|
||||||
each successful NIR lowering/optimization call.
|
each successful NIR lowering/optimization call.
|
||||||
|
|
||||||
@ -214,32 +208,33 @@ Mesa Xlib driver environment variables
|
|||||||
The following are only applicable to the Mesa Xlib software driver. See
|
The following are only applicable to the Mesa Xlib software driver. See
|
||||||
the :doc:`Xlib software driver page <xlibdriver>` for details.
|
the :doc:`Xlib software driver page <xlibdriver>` for details.
|
||||||
|
|
||||||
:envvar:`MESA_RGB_VISUAL`
|
``MESA_RGB_VISUAL``
|
||||||
specifies the X visual and depth for RGB mode
|
specifies the X visual and depth for RGB mode
|
||||||
:envvar:`MESA_BACK_BUFFER`
|
``MESA_CI_VISUAL``
|
||||||
|
specifies the X visual and depth for CI mode
|
||||||
|
``MESA_BACK_BUFFER``
|
||||||
specifies how to implement the back color buffer, either ``pixmap``
|
specifies how to implement the back color buffer, either ``pixmap``
|
||||||
or ``ximage``
|
or ``ximage``
|
||||||
:envvar:`MESA_GAMMA`
|
``MESA_GAMMA``
|
||||||
gamma correction coefficients for red, green, blue channels
|
gamma correction coefficients for red, green, blue channels
|
||||||
:envvar:`MESA_XSYNC`
|
``MESA_XSYNC``
|
||||||
enable synchronous X behavior (for debugging only)
|
enable synchronous X behavior (for debugging only)
|
||||||
:envvar:`MESA_GLX_FORCE_CI`
|
``MESA_GLX_FORCE_CI``
|
||||||
if set, force GLX to treat 8 BPP visuals as CI visuals
|
if set, force GLX to treat 8 BPP visuals as CI visuals
|
||||||
:envvar:`MESA_GLX_FORCE_ALPHA`
|
``MESA_GLX_FORCE_ALPHA``
|
||||||
if set, forces RGB windows to have an alpha channel.
|
if set, forces RGB windows to have an alpha channel.
|
||||||
:envvar:`MESA_GLX_DEPTH_BITS`
|
``MESA_GLX_DEPTH_BITS``
|
||||||
specifies default number of bits for depth buffer.
|
specifies default number of bits for depth buffer.
|
||||||
:envvar:`MESA_GLX_ALPHA_BITS`
|
``MESA_GLX_ALPHA_BITS``
|
||||||
specifies default number of bits for alpha channel.
|
specifies default number of bits for alpha channel.
|
||||||
|
|
||||||
Intel driver environment variables
|
i945/i965 driver environment variables (non-Gallium)
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
|
|
||||||
:envvar:`INTEL_BLACKHOLE_DEFAULT`
|
``INTEL_NO_HW``
|
||||||
if set to 1, true or yes, then the OpenGL implementation will
|
if set to 1, prevents batches from being submitted to the hardware.
|
||||||
default ``GL_BLACKHOLE_RENDER_INTEL`` to true, thus disabling any
|
This is useful for debugging hangs, etc.
|
||||||
rendering.
|
``INTEL_DEBUG``
|
||||||
:envvar:`INTEL_DEBUG`
|
|
||||||
a comma-separated list of named flags, which do various things:
|
a comma-separated list of named flags, which do various things:
|
||||||
|
|
||||||
``ann``
|
``ann``
|
||||||
@ -335,97 +330,32 @@ Intel driver environment variables
|
|||||||
``vs``
|
``vs``
|
||||||
dump shader assembly for vertex shaders
|
dump shader assembly for vertex shaders
|
||||||
|
|
||||||
:envvar:`INTEL_MEASURE`
|
``INTEL_SCALAR_VS`` (or ``TCS``, ``TES``, ``GS``)
|
||||||
Collects GPU timestamps over common intervals, and generates a CSV report
|
force scalar/vec4 mode for a shader stage (Gen8-9 only)
|
||||||
to show how long rendering took. The overhead of collection is limited to
|
``INTEL_PRECISE_TRIG``
|
||||||
the flushing that is required at the interval boundaries for accurate
|
|
||||||
timestamps. By default, timing data is sent to ``stderr``. To direct output
|
|
||||||
to a file:
|
|
||||||
|
|
||||||
``INTEL_MEASURE=file=/tmp/measure.csv {workload}``
|
|
||||||
|
|
||||||
To begin capturing timestamps at a particular frame:
|
|
||||||
|
|
||||||
``INTEL_MEASURE=file=/tmp/measure.csv,start=15 {workload}``
|
|
||||||
|
|
||||||
To capture only 23 frames:
|
|
||||||
|
|
||||||
``INTEL_MEASURE=count=23 {workload}``
|
|
||||||
|
|
||||||
To capture frames 15-37, stopping before frame 38:
|
|
||||||
|
|
||||||
``INTEL_MEASURE=start=15,count=23 {workload}``
|
|
||||||
|
|
||||||
Designate an asynchronous control file with:
|
|
||||||
|
|
||||||
``INTEL_MEASURE=control=path/to/control.fifo {workload}``
|
|
||||||
|
|
||||||
As the workload runs, enable capture for 5 frames with:
|
|
||||||
|
|
||||||
``$ echo 5 > path/to/control.fifo``
|
|
||||||
|
|
||||||
Enable unbounded capture:
|
|
||||||
|
|
||||||
``$ echo -1 > path/to/control.fifo``
|
|
||||||
|
|
||||||
and disable with:
|
|
||||||
|
|
||||||
``$ echo 0 > path/to/control.fifo``
|
|
||||||
|
|
||||||
Select the boundaries of each snapshot with:
|
|
||||||
|
|
||||||
``INTEL_MEASURE=draw``
|
|
||||||
Collects timings for every render (DEFAULT)
|
|
||||||
|
|
||||||
``INTEL_MEASURE=rt``
|
|
||||||
Collects timings when the render target changes
|
|
||||||
|
|
||||||
``INTEL_MEASURE=batch``
|
|
||||||
Collects timings when batches are submitted
|
|
||||||
|
|
||||||
``INTEL_MEASURE=frame``
|
|
||||||
Collects timings at frame boundaries
|
|
||||||
|
|
||||||
With ``INTEL_MEASURE=interval=5``, the duration of 5 events will be
|
|
||||||
combined into a single record in the output. When possible, a single
|
|
||||||
start and end event will be submitted to the GPU to minimize
|
|
||||||
stalling. Combined events will not span batches, except in
|
|
||||||
the case of ``INTEL_MEASURE=frame``.
|
|
||||||
:envvar:`INTEL_NO_HW`
|
|
||||||
if set to 1, true or yes, prevents batches from being submitted to the
|
|
||||||
hardware. This is useful for debugging hangs, etc.
|
|
||||||
:envvar:`INTEL_PRECISE_TRIG`
|
|
||||||
if set to 1, true or yes, then the driver prefers accuracy over
|
if set to 1, true or yes, then the driver prefers accuracy over
|
||||||
performance in trig functions.
|
performance in trig functions.
|
||||||
:envvar:`INTEL_SHADER_ASM_READ_PATH`
|
``INTEL_SHADER_ASM_READ_PATH``
|
||||||
if set, determines the directory to be used for overriding shader
|
if set, determines the directory to be used for overriding shader
|
||||||
assembly. The binaries with custom assembly should be placed in
|
assembly. The binaries with custom assembly should be placed in
|
||||||
this folder and have a name formatted as ``sha1_of_assembly.bin``.
|
this folder and have a name formatted as ``sha1_of_assembly.bin``.
|
||||||
The sha1 of a shader assembly is printed when assembly is dumped via
|
The sha1 of a shader assembly is printed when assembly is dumped via
|
||||||
corresponding :envvar:`INTEL_DEBUG` flag (e.g. ``vs`` for vertex shader).
|
corresponding ``INTEL_DEBUG`` flag (e.g. ``vs`` for vertex shader).
|
||||||
A binary could be generated from a dumped assembly by ``i965_asm``.
|
A binary could be generated from a dumped assembly by ``i965_asm``.
|
||||||
For :envvar:`INTEL_SHADER_ASM_READ_PATH` to work it is necessary to enable
|
For ``INTEL_SHADER_ASM_READ_PATH`` to work it is necessary to enable
|
||||||
dumping of corresponding shader stages via :envvar:`INTEL_DEBUG`.
|
dumping of corresponding shader stages via ``INTEL_DEBUG``.
|
||||||
It is advised to use ``nocompact`` flag of :envvar:`INTEL_DEBUG` when
|
It is advised to use ``nocompact`` flag of ``INTEL_DEBUG`` when
|
||||||
dumping and overriding shader assemblies.
|
dumping and overriding shader assemblies.
|
||||||
The success of assembly override would be signified by "Successfully
|
The success of assembly override would be signified by "Successfully
|
||||||
overrode shader with sha1 <sha1>" in stderr replacing the original
|
overrode shader with sha1 <sha1>" in stderr replacing the original
|
||||||
assembly.
|
assembly.
|
||||||
|
|
||||||
|
|
||||||
Radeon driver environment variables (radeon, r200, and r300g)
|
Radeon driver environment variables (radeon, r200, and r300g)
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
|
|
||||||
:envvar:`RADEON_NO_TCL`
|
``RADEON_NO_TCL``
|
||||||
if set, disable hardware-accelerated Transform/Clip/Lighting.
|
if set, disable hardware-accelerated Transform/Clip/Lighting.
|
||||||
|
|
||||||
DRI environment variables
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
:envvar:`DRI_NO_MSAA`
|
|
||||||
disable MSAA for GLX/EGL MSAA visuals
|
|
||||||
|
|
||||||
|
|
||||||
EGL environment variables
|
EGL environment variables
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
@ -435,78 +365,77 @@ Mesa EGL supports different sets of environment variables. See the
|
|||||||
Gallium environment variables
|
Gallium environment variables
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
:envvar:`GALLIUM_HUD`
|
``GALLIUM_HUD``
|
||||||
draws various information on the screen, like framerate, CPU load,
|
draws various information on the screen, like framerate, CPU load,
|
||||||
driver statistics, performance counters, etc. Set
|
driver statistics, performance counters, etc. Set
|
||||||
:envvar:`GALLIUM_HUD` to ``help`` and run e.g. ``glxgears`` for more info.
|
``GALLIUM_HUD=help`` and run e.g. ``glxgears`` for more info.
|
||||||
:envvar:`GALLIUM_HUD_PERIOD`
|
``GALLIUM_HUD_PERIOD``
|
||||||
sets the HUD update rate in seconds (float). Use zero to update every
|
sets the HUD update rate in seconds (float). Use zero to update every
|
||||||
frame. The default period is 1/2 second.
|
frame. The default period is 1/2 second.
|
||||||
:envvar:`GALLIUM_HUD_VISIBLE`
|
``GALLIUM_HUD_VISIBLE``
|
||||||
control default visibility, defaults to true.
|
control default visibility, defaults to true.
|
||||||
:envvar:`GALLIUM_HUD_TOGGLE_SIGNAL`
|
``GALLIUM_HUD_TOGGLE_SIGNAL``
|
||||||
toggle visibility via user specified signal. Especially useful to
|
toggle visibility via user specified signal. Especially useful to
|
||||||
toggle HUD at specific points of application and disable for
|
toggle HUD at specific points of application and disable for
|
||||||
unencumbered viewing the rest of the time. For example, set
|
unencumbered viewing the rest of the time. For example, set
|
||||||
:envvar:`GALLIUM_HUD_VISIBLE` to ``false`` and
|
``GALLIUM_HUD_VISIBLE`` to ``false`` and
|
||||||
:envvar:`GALLIUM_HUD_TOGGLE_SIGNAL` to ``10`` (``SIGUSR1``). Use
|
``GALLIUM_HUD_TOGGLE_SIGNAL`` to ``10`` (``SIGUSR1``). Use
|
||||||
``kill -10 <pid>`` to toggle the HUD as desired.
|
``kill -10 <pid>`` to toggle the HUD as desired.
|
||||||
:envvar:`GALLIUM_HUD_SCALE`
|
``GALLIUM_HUD_SCALE``
|
||||||
Scale HUD by an integer factor, for high DPI displays. Default is 1.
|
Scale HUD by an integer factor, for high DPI displays. Default is 1.
|
||||||
:envvar:`GALLIUM_HUD_DUMP_DIR`
|
``GALLIUM_HUD_DUMP_DIR``
|
||||||
specifies a directory for writing the displayed HUD values into
|
specifies a directory for writing the displayed HUD values into
|
||||||
files.
|
files.
|
||||||
:envvar:`GALLIUM_DRIVER`
|
``GALLIUM_DRIVER``
|
||||||
useful in combination with :envvar:`LIBGL_ALWAYS_SOFTWARE`=`true` for
|
useful in combination with ``LIBGL_ALWAYS_SOFTWARE=true`` for
|
||||||
choosing one of the software renderers ``softpipe``, ``llvmpipe`` or
|
choosing one of the software renderers ``softpipe``, ``llvmpipe`` or
|
||||||
``swr``.
|
``swr``.
|
||||||
:envvar:`GALLIUM_LOG_FILE`
|
``GALLIUM_LOG_FILE``
|
||||||
specifies a file for logging all errors, warnings, etc. rather than
|
specifies a file for logging all errors, warnings, etc. rather than
|
||||||
stderr.
|
stderr.
|
||||||
:envvar:`GALLIUM_PIPE_SEARCH_DIR`
|
``GALLIUM_PIPE_SEARCH_DIR``
|
||||||
specifies an alternate search directory for pipe-loader which overrides
|
specifies an alternate search directory for pipe-loader which overrides
|
||||||
the compile-time path based on the install location.
|
the compile-time path based on the install location.
|
||||||
:envvar:`GALLIUM_PRINT_OPTIONS`
|
``GALLIUM_PRINT_OPTIONS``
|
||||||
if non-zero, print all the Gallium environment variables which are
|
if non-zero, print all the Gallium environment variables which are
|
||||||
used, and their current values.
|
used, and their current values.
|
||||||
:envvar:`GALLIUM_DUMP_CPU`
|
``GALLIUM_DUMP_CPU``
|
||||||
if non-zero, print information about the CPU on start-up
|
if non-zero, print information about the CPU on start-up
|
||||||
:envvar:`TGSI_PRINT_SANITY`
|
``TGSI_PRINT_SANITY``
|
||||||
if set, do extra sanity checking on TGSI shaders and print any errors
|
if set, do extra sanity checking on TGSI shaders and print any errors
|
||||||
to stderr.
|
to stderr.
|
||||||
:envvar:`DRAW_FSE`
|
``DRAW_FSE``
|
||||||
Enable fetch-shade-emit middle-end even though its not correct (e.g.
|
???
|
||||||
for softpipe)
|
``DRAW_NO_FSE``
|
||||||
:envvar:`DRAW_NO_FSE`
|
???
|
||||||
Disable fetch-shade-emit middle-end even when it is correct
|
``DRAW_USE_LLVM``
|
||||||
:envvar:`DRAW_USE_LLVM`
|
|
||||||
if set to zero, the draw module will not use LLVM to execute shaders,
|
if set to zero, the draw module will not use LLVM to execute shaders,
|
||||||
vertex fetch, etc.
|
vertex fetch, etc.
|
||||||
:envvar:`ST_DEBUG`
|
``ST_DEBUG``
|
||||||
controls debug output from the Mesa/Gallium state tracker. Setting to
|
controls debug output from the Mesa/Gallium state tracker. Setting to
|
||||||
``tgsi``, for example, will print all the TGSI shaders. See
|
``tgsi``, for example, will print all the TGSI shaders. See
|
||||||
:file:`src/mesa/state_tracker/st_debug.c` for other options.
|
``src/mesa/state_tracker/st_debug.c`` for other options.
|
||||||
|
|
||||||
Clover environment variables
|
Clover environment variables
|
||||||
----------------------------
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
:envvar:`CLOVER_EXTRA_BUILD_OPTIONS`
|
``CLOVER_EXTRA_BUILD_OPTIONS``
|
||||||
allows specifying additional compiler and linker options. Specified
|
allows specifying additional compiler and linker options. Specified
|
||||||
options are appended after the options set by the OpenCL program in
|
options are appended after the options set by the OpenCL program in
|
||||||
``clBuildProgram``.
|
``clBuildProgram``.
|
||||||
:envvar:`CLOVER_EXTRA_COMPILE_OPTIONS`
|
``CLOVER_EXTRA_COMPILE_OPTIONS``
|
||||||
allows specifying additional compiler options. Specified options are
|
allows specifying additional compiler options. Specified options are
|
||||||
appended after the options set by the OpenCL program in
|
appended after the options set by the OpenCL program in
|
||||||
``clCompileProgram``.
|
``clCompileProgram``.
|
||||||
:envvar:`CLOVER_EXTRA_LINK_OPTIONS`
|
``CLOVER_EXTRA_LINK_OPTIONS``
|
||||||
allows specifying additional linker options. Specified options are
|
allows specifying additional linker options. Specified options are
|
||||||
appended after the options set by the OpenCL program in
|
appended after the options set by the OpenCL program in
|
||||||
``clLinkProgram``.
|
``clLinkProgram``.
|
||||||
|
|
||||||
Softpipe driver environment variables
|
Softpipe driver environment variables
|
||||||
-------------------------------------
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
:envvar:`SOFTPIPE_DEBUG`
|
``SOFTPIPE_DEBUG``
|
||||||
a comma-separated list of named flags, which do various things:
|
a comma-separated list of named flags, which do various things:
|
||||||
|
|
||||||
``vs``
|
``vs``
|
||||||
@ -518,7 +447,7 @@ Softpipe driver environment variables
|
|||||||
``cs``
|
``cs``
|
||||||
Dump compute shader assembly to stderr
|
Dump compute shader assembly to stderr
|
||||||
``no_rast``
|
``no_rast``
|
||||||
rasterization is disabled. For profiling purposes.
|
rasterization is no-op'd. For profiling purposes.
|
||||||
``use_llvm``
|
``use_llvm``
|
||||||
the softpipe driver will try to use LLVM JIT for vertex
|
the softpipe driver will try to use LLVM JIT for vertex
|
||||||
shading processing.
|
shading processing.
|
||||||
@ -527,35 +456,35 @@ Softpipe driver environment variables
|
|||||||
of NIR.
|
of NIR.
|
||||||
|
|
||||||
LLVMpipe driver environment variables
|
LLVMpipe driver environment variables
|
||||||
-------------------------------------
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
:envvar:`LP_NO_RAST`
|
``LP_NO_RAST``
|
||||||
if set LLVMpipe will no-op rasterization
|
if set LLVMpipe will no-op rasterization
|
||||||
:envvar:`LP_DEBUG`
|
``LP_DEBUG``
|
||||||
a comma-separated list of debug options is accepted. See the source
|
a comma-separated list of debug options is accepted. See the source
|
||||||
code for details.
|
code for details.
|
||||||
:envvar:`LP_PERF`
|
``LP_PERF``
|
||||||
a comma-separated list of options to selectively no-op various parts
|
a comma-separated list of options to selectively no-op various parts
|
||||||
of the driver. See the source code for details.
|
of the driver. See the source code for details.
|
||||||
:envvar:`LP_NUM_THREADS`
|
``LP_NUM_THREADS``
|
||||||
an integer indicating how many threads to use for rendering. Zero
|
an integer indicating how many threads to use for rendering. Zero
|
||||||
turns off threading completely. The default value is the number of
|
turns off threading completely. The default value is the number of
|
||||||
CPU cores present.
|
CPU cores present.
|
||||||
|
|
||||||
VMware SVGA driver environment variables
|
VMware SVGA driver environment variables
|
||||||
----------------------------------------
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
:envvar`SVGA_FORCE_SWTNL`
|
``SVGA_FORCE_SWTNL``
|
||||||
force use of software vertex transformation
|
force use of software vertex transformation
|
||||||
:envvar`SVGA_NO_SWTNL`
|
``SVGA_NO_SWTNL``
|
||||||
don't allow software vertex transformation fallbacks (will often
|
don't allow software vertex transformation fallbacks (will often
|
||||||
result in incorrect rendering).
|
result in incorrect rendering).
|
||||||
:envvar`SVGA_DEBUG`
|
``SVGA_DEBUG``
|
||||||
for dumping shaders, constant buffers, etc. See the code for details.
|
for dumping shaders, constant buffers, etc. See the code for details.
|
||||||
:envvar`SVGA_EXTRA_LOGGING`
|
``SVGA_EXTRA_LOGGING``
|
||||||
if set, enables extra logging to the ``vmware.log`` file, such as the
|
if set, enables extra logging to the ``vmware.log`` file, such as the
|
||||||
OpenGL program's name and command line arguments.
|
OpenGL program's name and command line arguments.
|
||||||
:envvar`SVGA_NO_LOGGING`
|
``SVGA_NO_LOGGING``
|
||||||
if set, disables logging to the ``vmware.log`` file. This is useful
|
if set, disables logging to the ``vmware.log`` file. This is useful
|
||||||
when using Valgrind because it otherwise crashes when initializing
|
when using Valgrind because it otherwise crashes when initializing
|
||||||
the host log feature.
|
the host log feature.
|
||||||
@ -563,24 +492,24 @@ VMware SVGA driver environment variables
|
|||||||
See the driver code for other, lesser-used variables.
|
See the driver code for other, lesser-used variables.
|
||||||
|
|
||||||
WGL environment variables
|
WGL environment variables
|
||||||
-------------------------
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
:envvar:`WGL_SWAP_INTERVAL`
|
``WGL_SWAP_INTERVAL``
|
||||||
to set a swap interval, equivalent to calling
|
to set a swap interval, equivalent to calling
|
||||||
``wglSwapIntervalEXT()`` in an application. If this environment
|
``wglSwapIntervalEXT()`` in an application. If this environment
|
||||||
variable is set, application calls to ``wglSwapIntervalEXT()`` will
|
variable is set, application calls to ``wglSwapIntervalEXT()`` will
|
||||||
have no effect.
|
have no effect.
|
||||||
|
|
||||||
VA-API environment variables
|
VA-API environment variables
|
||||||
----------------------------
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
:envvar:`VAAPI_MPEG4_ENABLED`
|
``VAAPI_MPEG4_ENABLED``
|
||||||
enable MPEG4 for VA-API, disabled by default.
|
enable MPEG4 for VA-API, disabled by default.
|
||||||
|
|
||||||
VC4 driver environment variables
|
VC4 driver environment variables
|
||||||
--------------------------------
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
:envvar:`VC4_DEBUG`
|
``VC4_DEBUG``
|
||||||
a comma-separated list of named flags, which do various things:
|
a comma-separated list of named flags, which do various things:
|
||||||
|
|
||||||
``cl``
|
``cl``
|
||||||
@ -607,34 +536,31 @@ VC4 driver environment variables
|
|||||||
write a GPU command stream trace file (VC4 simulator only)
|
write a GPU command stream trace file (VC4 simulator only)
|
||||||
|
|
||||||
RADV driver environment variables
|
RADV driver environment variables
|
||||||
---------------------------------
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
:envvar:`RADV_DEBUG`
|
``RADV_DEBUG``
|
||||||
a comma-separated list of named flags, which do various things:
|
a comma-separated list of named flags, which do various things:
|
||||||
|
|
||||||
``llvm``
|
``llvm``
|
||||||
enable LLVM compiler backend
|
enable LLVM compiler backend
|
||||||
``allbos``
|
``allbos``
|
||||||
force all allocated buffers to be referenced in submissions
|
force all allocated buffers to be referenced in submissions
|
||||||
|
``allentrypoints``
|
||||||
|
enable all device/instance entrypoints
|
||||||
``checkir``
|
``checkir``
|
||||||
validate the LLVM IR before LLVM compiles the shader
|
validate the LLVM IR before LLVM compiles the shader
|
||||||
|
``errors``
|
||||||
|
display more info about errors
|
||||||
``forcecompress``
|
``forcecompress``
|
||||||
Enables DCC,FMASK,CMASK,HTILE in situations where the driver supports it
|
Enables DCC,FMASK,CMASK,HTILE in situations where the driver supports it
|
||||||
but normally does not deem it beneficial.
|
but normally does not deem it beneficial.
|
||||||
``hang``
|
``hang``
|
||||||
enable GPU hangs detection and dump a report to
|
enable GPU hangs detection and dump a report to $HOME/radv_dumps_<pid>
|
||||||
$HOME/radv_dumps_<pid>_<time> if a GPU hang is detected
|
if a GPU hang is detected
|
||||||
``img``
|
|
||||||
Print image info
|
|
||||||
``info``
|
``info``
|
||||||
show GPU-related information
|
show GPU-related information
|
||||||
``invariantgeom``
|
|
||||||
Mark geometry-affecting outputs as invariant. This works around a common
|
|
||||||
class of application bugs appearing as flickering.
|
|
||||||
``metashaders``
|
``metashaders``
|
||||||
dump internal meta shaders
|
dump internal meta shaders
|
||||||
``noatocdithering``
|
|
||||||
disable dithering for alpha to coverage
|
|
||||||
``nobinning``
|
``nobinning``
|
||||||
disable primitive binning
|
disable primitive binning
|
||||||
``nocache``
|
``nocache``
|
||||||
@ -643,8 +569,6 @@ RADV driver environment variables
|
|||||||
disable compute queue
|
disable compute queue
|
||||||
``nodcc``
|
``nodcc``
|
||||||
disable Delta Color Compression (DCC) on images
|
disable Delta Color Compression (DCC) on images
|
||||||
``nodisplaydcc``
|
|
||||||
disable Delta Color Compression (DCC) on displayable images
|
|
||||||
``nodynamicbounds``
|
``nodynamicbounds``
|
||||||
do not check OOB access for dynamic descriptors
|
do not check OOB access for dynamic descriptors
|
||||||
``nofastclears``
|
``nofastclears``
|
||||||
@ -657,21 +581,12 @@ RADV driver environment variables
|
|||||||
disable memory shaders cache
|
disable memory shaders cache
|
||||||
``nongg``
|
``nongg``
|
||||||
disable NGG for GFX10+
|
disable NGG for GFX10+
|
||||||
``nonggc``
|
|
||||||
disable NGG culling on GPUs where it's enabled by default (GFX10.3+ only).
|
|
||||||
``nooutoforder``
|
``nooutoforder``
|
||||||
disable out-of-order rasterization
|
disable out-of-order rasterization
|
||||||
``notccompatcmask``
|
``nothreadllvm``
|
||||||
disable TC-compat CMASK for MSAA surfaces
|
disable LLVM threaded compilation
|
||||||
``noumr``
|
|
||||||
disable UMR dumps during GPU hang detection (only with
|
|
||||||
:envvar:`RADV_DEBUG`=``hang``)
|
|
||||||
``novrsflatshading``
|
|
||||||
disable VRS for flat shading (only on GFX10.3+)
|
|
||||||
``preoptir``
|
``preoptir``
|
||||||
dump LLVM IR before any optimizations
|
dump LLVM IR before any optimizations
|
||||||
``prologs``
|
|
||||||
dump vertex shader prologs
|
|
||||||
``shaders``
|
``shaders``
|
||||||
dump shaders
|
dump shaders
|
||||||
``shaderstats``
|
``shaderstats``
|
||||||
@ -687,15 +602,10 @@ RADV driver environment variables
|
|||||||
``zerovram``
|
``zerovram``
|
||||||
initialize all memory allocated in VRAM as zero
|
initialize all memory allocated in VRAM as zero
|
||||||
|
|
||||||
:envvar:`RADV_FORCE_FAMILY`
|
``RADV_FORCE_FAMILY``
|
||||||
create a null device to compile shaders without a AMD GPU (e.g. vega10)
|
create a null device to compile shaders without a AMD GPU (e.g.
|
||||||
|
gfx900)
|
||||||
:envvar:`RADV_FORCE_VRS`
|
``RADV_PERFTEST``
|
||||||
allow to force per-pipeline vertex VRS rates on GFX10.3+. This is only
|
|
||||||
forced for pipelines that don't explicitely use VRS or flat shading.
|
|
||||||
The supported values are 2x2, 1x2 and 2x1. Only for testing purposes.
|
|
||||||
|
|
||||||
:envvar:`RADV_PERFTEST`
|
|
||||||
a comma-separated list of named flags, which do various things:
|
a comma-separated list of named flags, which do various things:
|
||||||
|
|
||||||
``bolist``
|
``bolist``
|
||||||
@ -704,28 +614,20 @@ RADV driver environment variables
|
|||||||
enable wave32 for compute shaders (GFX10+)
|
enable wave32 for compute shaders (GFX10+)
|
||||||
``dccmsaa``
|
``dccmsaa``
|
||||||
enable DCC for MSAA images
|
enable DCC for MSAA images
|
||||||
``force_emulate_rt``
|
``dfsm``
|
||||||
forces ray-tracing to be emulated in software,
|
enable dfsm
|
||||||
even if there is hardware support.
|
|
||||||
``gewave32``
|
``gewave32``
|
||||||
enable wave32 for vertex/tess/geometry shaders (GFX10+)
|
enable wave32 for vertex/tess/geometry shaders (GFX10+)
|
||||||
``localbos``
|
``localbos``
|
||||||
enable local BOs
|
enable local BOs
|
||||||
``nosam``
|
|
||||||
disable optimizations that get enabled when all VRAM is CPU visible.
|
|
||||||
``pswave32``
|
``pswave32``
|
||||||
enable wave32 for pixel shaders (GFX10+)
|
enable wave32 for pixel shaders (GFX10+)
|
||||||
``nggc``
|
``tccompatcmask``
|
||||||
enable NGG culling on GPUs where it's not enabled by default (GFX10.1 only).
|
enable TC-compat cmask for MSAA images
|
||||||
``rt``
|
|
||||||
enable rt extensions whose implementation is still experimental.
|
|
||||||
``sam``
|
|
||||||
enable optimizations to move more driver internal objects to VRAM.
|
|
||||||
|
|
||||||
:envvar:`RADV_TEX_ANISO`
|
``RADV_TEX_ANISO``
|
||||||
force anisotropy filter (up to 16)
|
force anisotropy filter (up to 16)
|
||||||
|
``ACO_DEBUG``
|
||||||
:envvar:`ACO_DEBUG`
|
|
||||||
a comma-separated list of named flags, which do various things:
|
a comma-separated list of named flags, which do various things:
|
||||||
|
|
||||||
``validateir``
|
``validateir``
|
||||||
@ -743,236 +645,120 @@ RADV driver environment variables
|
|||||||
disable various optimizations
|
disable various optimizations
|
||||||
``noscheduling``
|
``noscheduling``
|
||||||
disable instructions scheduling
|
disable instructions scheduling
|
||||||
``perfinfo``
|
|
||||||
print information used to calculate some pipeline statistics
|
|
||||||
``liveinfo``
|
|
||||||
print liveness and register demand information before scheduling
|
|
||||||
|
|
||||||
radeonsi driver environment variables
|
radeonsi driver environment variables
|
||||||
-------------------------------------
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
:envvar:`AMD_DEBUG`
|
``AMD_DEBUG``
|
||||||
a comma-separated list of named flags, which do various things:
|
a comma-separated list of named flags, which do various things:
|
||||||
|
``nodma``
|
||||||
``nodcc``
|
Disable SDMA
|
||||||
|
``nodmaclear``
|
||||||
|
Disable SDMA clears
|
||||||
|
``nodmacopyimage``
|
||||||
|
Disable SDMA image copies
|
||||||
|
``zerovram``
|
||||||
|
Clear VRAM allocations.
|
||||||
|
``nodcc``
|
||||||
Disable DCC.
|
Disable DCC.
|
||||||
``nodccclear``
|
``nodccclear``
|
||||||
Disable DCC fast clear.
|
Disable DCC fast clear.
|
||||||
``nodccmsaa``
|
``nodccfb``
|
||||||
|
Disable separate DCC on the main framebuffer
|
||||||
|
``nodccmsaa``
|
||||||
Disable DCC for MSAA
|
Disable DCC for MSAA
|
||||||
``nodpbb``
|
``nodpbb``
|
||||||
Disable DPBB.
|
Disable DPBB.
|
||||||
``nodfsm``
|
``nodfsm``
|
||||||
Disable DFSM.
|
Disable DFSM.
|
||||||
``notiling``
|
``notiling``
|
||||||
Disable tiling
|
Disable tiling
|
||||||
``nofmask``
|
``nofmask``
|
||||||
Disable MSAA compression
|
Disable MSAA compression
|
||||||
``nohyperz``
|
``nohyperz``
|
||||||
Disable Hyper-Z
|
Disable Hyper-Z
|
||||||
``no2d``
|
``norbplus``
|
||||||
|
Disable RB+.
|
||||||
|
``no2d``
|
||||||
Disable 2D tiling
|
Disable 2D tiling
|
||||||
``info``
|
``info``
|
||||||
Print driver information
|
Print driver information
|
||||||
``tex``
|
``tex``
|
||||||
Print texture info
|
Print texture info
|
||||||
``compute``
|
``compute``
|
||||||
Print compute info
|
Print compute info
|
||||||
``vm``
|
``vm``
|
||||||
Print virtual addresses when creating resources
|
Print virtual addresses when creating resources
|
||||||
``vs``
|
``vs``
|
||||||
Print vertex shaders
|
Print vertex shaders
|
||||||
``ps``
|
``ps``
|
||||||
Print pixel shaders
|
Print pixel shaders
|
||||||
``gs``
|
``gs``
|
||||||
Print geometry shaders
|
Print geometry shaders
|
||||||
``tcs``
|
``tcs``
|
||||||
Print tessellation control shaders
|
Print tessellation control shaders
|
||||||
``tes``
|
``tes``
|
||||||
Print tessellation evaluation shaders
|
Print tessellation evaluation shaders
|
||||||
``cs``
|
``cs``
|
||||||
Print compute shaders
|
Print compute shaders
|
||||||
``noir``
|
``noir``
|
||||||
Don't print the LLVM IR
|
Don't print the LLVM IR
|
||||||
``nonir``
|
``nonir``
|
||||||
Don't print NIR when printing shaders
|
Don't print NIR when printing shaders
|
||||||
``noasm``
|
``noasm``
|
||||||
Don't print disassembled shaders
|
Don't print disassembled shaders
|
||||||
``preoptir``
|
``preoptir``
|
||||||
Print the LLVM IR before initial optimizations
|
Print the LLVM IR before initial optimizations
|
||||||
``gisel``
|
``gisel``
|
||||||
Enable LLVM global instruction selector.
|
Enable LLVM global instruction selector.
|
||||||
``w32ge``
|
``w32ge``
|
||||||
Use Wave32 for vertex, tessellation, and geometry shaders.
|
Use Wave32 for vertex, tessellation, and geometry shaders.
|
||||||
``w32ps``
|
``w32ps``
|
||||||
Use Wave32 for pixel shaders.
|
Use Wave32 for pixel shaders.
|
||||||
``w32cs``
|
``w32cs``
|
||||||
Use Wave32 for computes shaders.
|
Use Wave32 for computes shaders.
|
||||||
``w64ge``
|
``w64ge``
|
||||||
Use Wave64 for vertex, tessellation, and geometry shaders.
|
Use Wave64 for vertex, tessellation, and geometry shaders.
|
||||||
``w64ps``
|
``w64ps``
|
||||||
Use Wave64 for pixel shaders.
|
Use Wave64 for pixel shaders.
|
||||||
``w64cs``
|
``w64cs``
|
||||||
Use Wave64 for computes shaders.
|
Use Wave64 for computes shaders.
|
||||||
``checkir``
|
``checkir``
|
||||||
Enable additional sanity checks on shader IR
|
Enable additional sanity checks on shader IR
|
||||||
``mono``
|
``mono``
|
||||||
Use old-style monolithic shaders compiled on demand
|
Use old-style monolithic shaders compiled on demand
|
||||||
``nooptvariant``
|
``nooptvariant``
|
||||||
Disable compiling optimized shader variants.
|
Disable compiling optimized shader variants.
|
||||||
``nowc``
|
``forcedma``
|
||||||
|
Use SDMA for all operations when possible.
|
||||||
|
``nowc``
|
||||||
Disable GTT write combining
|
Disable GTT write combining
|
||||||
``check_vm``
|
``check_vm``
|
||||||
Check VM faults and dump debug info.
|
Check VM faults and dump debug info.
|
||||||
``reserve_vmid``
|
``reserve_vmid``
|
||||||
Force VMID reservation per context.
|
Force VMID reservation per context.
|
||||||
``nogfx``
|
``nogfx``
|
||||||
Disable graphics. Only multimedia compute paths can be used.
|
Disable graphics. Only multimedia compute paths can be used.
|
||||||
``nongg``
|
``nongg``
|
||||||
Disable NGG and use the legacy pipeline.
|
Disable NGG and use the legacy pipeline.
|
||||||
``nggc``
|
``nggc``
|
||||||
Always use NGG culling even when it can hurt.
|
Always use NGG culling even when it can hurt.
|
||||||
``nonggc``
|
``nonggc``
|
||||||
Disable NGG culling.
|
Disable NGG culling.
|
||||||
``switch_on_eop``
|
``alwayspd``
|
||||||
|
Always enable the primitive discard compute shader.
|
||||||
|
``pd``
|
||||||
|
Enable the primitive discard compute shader for large draw calls.
|
||||||
|
``nopd``
|
||||||
|
Disable the primitive discard compute shader.
|
||||||
|
``switch_on_eop``
|
||||||
Program WD/IA to switch on end-of-packet.
|
Program WD/IA to switch on end-of-packet.
|
||||||
``nooutoforder``
|
``nooutoforder``
|
||||||
Disable out-of-order rasterization
|
Disable out-of-order rasterization
|
||||||
``dpbb``
|
``dpbb``
|
||||||
Enable DPBB.
|
Enable DPBB.
|
||||||
``dfsm``
|
``dfsm``
|
||||||
Enable DFSM.
|
Enable DFSM.
|
||||||
|
|
||||||
r600 driver environment variables
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
:envvar:`R600_DEBUG`
|
|
||||||
a comma-separated list of named flags, which do various things:
|
|
||||||
|
|
||||||
``nocpdma``
|
|
||||||
Disable CP DMA
|
|
||||||
``nosb``
|
|
||||||
Disable sb backend for graphics shaders
|
|
||||||
``sbcl``
|
|
||||||
Enable sb backend for compute shaders
|
|
||||||
``sbdry``
|
|
||||||
Don't use optimized bytecode (just print the dumps)
|
|
||||||
``sbstat``
|
|
||||||
Print optimization statistics for shaders
|
|
||||||
``sbdump``
|
|
||||||
Print IR dumps after some optimization passes
|
|
||||||
``sbnofallback``
|
|
||||||
Abort on errors instead of fallback
|
|
||||||
``sbdisasm``
|
|
||||||
Use sb disassembler for shader dumps
|
|
||||||
``sbsafemath``
|
|
||||||
Disable unsafe math optimizations
|
|
||||||
``nirsb``
|
|
||||||
Enable NIR with SB optimizer
|
|
||||||
``tex``
|
|
||||||
Print texture info
|
|
||||||
``nir``
|
|
||||||
Enable experimental NIR shaders
|
|
||||||
``compute``
|
|
||||||
Print compute info
|
|
||||||
``vm``
|
|
||||||
Print virtual addresses when creating resources
|
|
||||||
``info``
|
|
||||||
Print driver information
|
|
||||||
``fs``
|
|
||||||
Print fetch shaders
|
|
||||||
``vs``
|
|
||||||
Print vertex shaders
|
|
||||||
``gs``
|
|
||||||
Print geometry shaders
|
|
||||||
``ps``
|
|
||||||
Print pixel shaders
|
|
||||||
``cs``
|
|
||||||
Print compute shaders
|
|
||||||
``tcs``
|
|
||||||
Print tessellation control shaders
|
|
||||||
``tes``
|
|
||||||
Print tessellation evaluation shaders
|
|
||||||
``noir``
|
|
||||||
Don't print the LLVM IR
|
|
||||||
``notgsi``
|
|
||||||
Don't print the TGSI
|
|
||||||
``noasm``
|
|
||||||
Don't print disassembled shaders
|
|
||||||
``preoptir``
|
|
||||||
Print the LLVM IR before initial optimizations
|
|
||||||
``checkir``
|
|
||||||
Enable additional sanity checks on shader IR
|
|
||||||
``nooptvariant``
|
|
||||||
Disable compiling optimized shader variants.
|
|
||||||
``testdma``
|
|
||||||
Invoke SDMA tests and exit.
|
|
||||||
``testvmfaultcp``
|
|
||||||
Invoke a CP VM fault test and exit.
|
|
||||||
``testvmfaultsdma``
|
|
||||||
Invoke a SDMA VM fault test and exit.
|
|
||||||
``testvmfaultshader``
|
|
||||||
Invoke a shader VM fault test and exit.
|
|
||||||
``nodma``
|
|
||||||
Disable asynchronous DMA
|
|
||||||
``nohyperz``
|
|
||||||
Disable Hyper-Z
|
|
||||||
``noinvalrange``
|
|
||||||
Disable handling of INVALIDATE_RANGE map flags
|
|
||||||
``no2d``
|
|
||||||
Disable 2D tiling
|
|
||||||
``notiling``
|
|
||||||
Disable tiling
|
|
||||||
``switch_on_eop``
|
|
||||||
Program WD/IA to switch on end-of-packet.
|
|
||||||
``forcedma``
|
|
||||||
Use asynchronous DMA for all operations when possible.
|
|
||||||
``precompile``
|
|
||||||
Compile one shader variant at shader creation.
|
|
||||||
``nowc``
|
|
||||||
Disable GTT write combining
|
|
||||||
``check_vm``
|
|
||||||
Check VM faults and dump debug info.
|
|
||||||
``unsafemath``
|
|
||||||
Enable unsafe math shader optimizations
|
|
||||||
|
|
||||||
:envvar:`R600_DEBUG_COMPUTE`
|
|
||||||
if set to ``true``, various compute-related debug information will
|
|
||||||
be printed to stderr. Defaults to ``false``.
|
|
||||||
:envvar:`R600_DUMP_SHADERS`
|
|
||||||
if set to ``true``, NIR shaders will be printed to stderr. Defaults
|
|
||||||
to ``false``.
|
|
||||||
:envvar:`R600_HYPERZ`
|
|
||||||
If set to ``false``, disables HyperZ optimizations. Defaults to ``true``.
|
|
||||||
:envvar:`R600_NIR_DEBUG`
|
|
||||||
a comma-separated list of named flags, which do various things:
|
|
||||||
|
|
||||||
``instr``
|
|
||||||
Log all consumed nir instructions
|
|
||||||
``ir``
|
|
||||||
Log created R600 IR
|
|
||||||
``cc``
|
|
||||||
Log R600 IR to assembly code creation
|
|
||||||
``noerr``
|
|
||||||
Don't log shader conversion errors
|
|
||||||
``si``
|
|
||||||
Log shader info (non-zero values)
|
|
||||||
``reg``
|
|
||||||
Log register allocation and lookup
|
|
||||||
``io``
|
|
||||||
Log shader in and output
|
|
||||||
``ass``
|
|
||||||
Log IR to assembly conversion
|
|
||||||
``flow``
|
|
||||||
Log control flow instructions
|
|
||||||
``merge``
|
|
||||||
Log register merge operations
|
|
||||||
``nomerge``
|
|
||||||
Skip register merge step
|
|
||||||
``tex``
|
|
||||||
Log texture ops
|
|
||||||
``trans``
|
|
||||||
Log generic translation messages
|
|
||||||
|
|
||||||
Other Gallium drivers have their own environment variables. These may
|
Other Gallium drivers have their own environment variables. These may
|
||||||
change frequently so the source code should be consulted for details.
|
change frequently so the source code should be consulted for details.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
^^^^^^^^
|
^^^^^^^^
|
||||||
|
@ -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,
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@ Contents:
|
|||||||
format
|
format
|
||||||
context
|
context
|
||||||
cso
|
cso
|
||||||
buffermapping
|
|
||||||
distro
|
distro
|
||||||
postprocess
|
postprocess
|
||||||
glossary
|
glossary
|
||||||
|
@ -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
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
@ -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
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -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:**
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
-------------
|
-------------
|
||||||
|
@ -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'
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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 |
|
||||||
|
+--------+---------------+------------+-----------------+-----------------------------------------+
|
||||||
|
@ -112,7 +112,7 @@ 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
|
||||||
|
|
||||||
@ -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
|
||||||
--------------------
|
--------------------
|
||||||
|
@ -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
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
18
mesa 3D driver/docs/sourcedocs.rst
Normal file
18
mesa 3D driver/docs/sourcedocs.rst
Normal 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>`__
|
@ -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
|
||||||
|
@ -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
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
1656
mesa 3D driver/docs/versions.rst
Normal file
1656
mesa 3D driver/docs/versions.rst
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
|
||||||
|
@ -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
19
mesa 3D driver/doxygen/.gitignore
vendored
Normal 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
|
37
mesa 3D driver/doxygen/Makefile
Normal file
37
mesa 3D driver/doxygen/Makefile
Normal 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
|
10
mesa 3D driver/doxygen/README
Normal file
10
mesa 3D driver/doxygen/README
Normal 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.
|
1102
mesa 3D driver/doxygen/common.doxy
Normal file
1102
mesa 3D driver/doxygen/common.doxy
Normal file
File diff suppressed because it is too large
Load Diff
224
mesa 3D driver/doxygen/core_subset.doxy
Normal file
224
mesa 3D driver/doxygen/core_subset.doxy
Normal 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 =
|
24
mesa 3D driver/doxygen/doxy.bat
Normal file
24
mesa 3D driver/doxygen/doxy.bat
Normal 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
|
309
mesa 3D driver/doxygen/gallium.doc
Normal file
309
mesa 3D driver/doxygen/gallium.doc
Normal 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>.
|
||||||
|
*/
|
1303
mesa 3D driver/doxygen/gallium.doxy
Normal file
1303
mesa 3D driver/doxygen/gallium.doxy
Normal file
File diff suppressed because it is too large
Load Diff
48
mesa 3D driver/doxygen/gbm.doxy
Normal file
48
mesa 3D driver/doxygen/gbm.doxy
Normal 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
|
49
mesa 3D driver/doxygen/glapi.doxy
Normal file
49
mesa 3D driver/doxygen/glapi.doxy
Normal 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
|
39
mesa 3D driver/doxygen/glsl.doxy
Normal file
39
mesa 3D driver/doxygen/glsl.doxy
Normal 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
|
20
mesa 3D driver/doxygen/header.html
Normal file
20
mesa 3D driver/doxygen/header.html
Normal 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>
|
10
mesa 3D driver/doxygen/header_subset.html
Normal file
10
mesa 3D driver/doxygen/header_subset.html
Normal 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>
|
50
mesa 3D driver/doxygen/i965.doxy
Normal file
50
mesa 3D driver/doxygen/i965.doxy
Normal 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
|
49
mesa 3D driver/doxygen/main.doxy
Normal file
49
mesa 3D driver/doxygen/main.doxy
Normal 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
|
49
mesa 3D driver/doxygen/math.doxy
Normal file
49
mesa 3D driver/doxygen/math.doxy
Normal 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
|
177
mesa 3D driver/doxygen/math_subset.doxy
Normal file
177
mesa 3D driver/doxygen/math_subset.doxy
Normal 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 =
|
50
mesa 3D driver/doxygen/nir.doxy
Normal file
50
mesa 3D driver/doxygen/nir.doxy
Normal 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
|
202
mesa 3D driver/doxygen/radeon_subset.doxy
Normal file
202
mesa 3D driver/doxygen/radeon_subset.doxy
Normal 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 =
|
48
mesa 3D driver/doxygen/swrast.doxy
Normal file
48
mesa 3D driver/doxygen/swrast.doxy
Normal 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
|
49
mesa 3D driver/doxygen/swrast_setup.doxy
Normal file
49
mesa 3D driver/doxygen/swrast_setup.doxy
Normal 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
|
49
mesa 3D driver/doxygen/tnl.doxy
Normal file
49
mesa 3D driver/doxygen/tnl.doxy
Normal 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
|
48
mesa 3D driver/doxygen/tnl_dd.doxy
Normal file
48
mesa 3D driver/doxygen/tnl_dd.doxy
Normal 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
|
49
mesa 3D driver/doxygen/vbo.doxy
Normal file
49
mesa 3D driver/doxygen/vbo.doxy
Normal 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
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
Loading…
Reference in New Issue
Block a user