Files
third_party_mesa3d/meson_options.txt
Dave Airlie b38879f8c5 vallium: initial import of the vulkan frontend
This is the initial import of the vallium frontend for gallium.
This is only good enough to run the triangle and the gears demo
(wrongly) from Sascha demos.

Improvements are mostly on the llvmpipe side after this.

It contains an implementation of the Vulkan API which is mapped
onto the gallium API, and is suitable only for SOFTWARE drivers.

Command buffers are recordred into malloced memory, then later
they are played back against the gallium API. The command buffers
are mostly just Vulkan API marshalling but in some places the information is
processed before being put into the command buffer (renderpass stuff).

Execution happens on a separate "graphics" thread, againt the gallium API.

There is only a single queue which wraps a single gallium context.

Resources are allocated via the new resource/memory APIs.
Shaders are created via the context and bound/unbound in the
second thread.

(No HW for reasons - memory management, sw paths for lots of paths,
pointless CPU side queue)

v2: drop mesa_icd, drop cpp_args, drop extra flags, change meson config (Eric)
v2.1: use meson-gallium job

meson pieces:
Reviewed-by: Eric Engestrom <eric@engestrom.ch>

overall:

Acked-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6082>
2020-08-17 14:31:47 +10:00

403 lines
10 KiB
Meson

# Copyright © 2017-2019 Intel Corporation
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
option(
'platforms',
type : 'array',
value : ['auto'],
choices : [
'auto', 'x11', 'wayland', 'drm', 'surfaceless', 'haiku', 'android',
'windows',
],
description : 'window systems to support. If this is set to `auto`, all platforms applicable will be enabled.'
)
option(
'android-stub',
type : 'boolean',
value : false,
description : 'Build against android-stub',
)
option(
'dri3',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'disabled', 'enabled'],
description : 'enable support for dri3'
)
option(
'dri-drivers',
type : 'array',
value : ['auto'],
choices : ['auto', 'i915', 'i965', 'r100', 'r200', 'nouveau', 'swrast'],
description : 'List of dri drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
)
option(
'dri-drivers-path',
type : 'string',
value : '',
description : 'Location to install dri drivers. Default: $libdir/dri.'
)
option(
'dri-search-path',
type : 'string',
value : '',
description : 'Locations to search for dri drivers, passed as colon separated list. Default: dri-drivers-path.'
)
option(
'gallium-drivers',
type : 'array',
value : ['auto'],
choices : [
'auto', 'kmsro', 'radeonsi', 'r300', 'r600', 'nouveau', 'freedreno',
'swrast', 'v3d', 'vc4', 'etnaviv', 'tegra', 'i915', 'svga', 'virgl',
'swr', 'panfrost', 'iris', 'lima', 'zink'
],
description : 'List of gallium drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
)
option(
'gallium-extra-hud',
type : 'boolean',
value : false,
description : 'Enable HUD block/NIC I/O HUD status support',
)
option(
'gallium-vdpau',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'enable gallium vdpau frontend.',
)
option(
'vdpau-libs-path',
type : 'string',
value : '',
description : 'path to put vdpau libraries. defaults to $libdir/vdpau.'
)
option(
'gallium-xvmc',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'enable gallium xvmc frontend.',
)
option(
'xvmc-libs-path',
type : 'string',
value : '',
description : 'path to put xvmc libraries. defaults to $libdir.'
)
option(
'gallium-omx',
type : 'combo',
value : 'auto',
choices : ['auto', 'disabled', 'bellagio', 'tizonia'],
description : 'enable gallium omx frontend.',
)
option(
'omx-libs-path',
type : 'string',
value : '',
description : 'path to put omx libraries. defaults to omx-bellagio pkg-config pluginsdir.'
)
option(
'gallium-va',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'enable gallium va frontend.',
)
option(
'va-libs-path',
type : 'string',
value : '',
description : 'path to put va libraries. defaults to $libdir/dri.'
)
option(
'gallium-xa',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'enable gallium xa frontend.',
)
option(
'gallium-nine',
type : 'boolean',
value : false,
description : 'build gallium "nine" Direct3D 9.x frontend.',
)
option(
'gallium-opencl',
type : 'combo',
choices : ['icd', 'standalone', 'disabled'],
value : 'disabled',
description : 'build gallium "clover" OpenCL frontend.',
)
option(
'opencl-spirv',
type : 'boolean',
value : false,
description : 'build gallium "clover" OpenCL frontend with SPIR-V binary support.',
)
option(
'd3d-drivers-path',
type : 'string',
value : '',
description : 'Location of D3D drivers. Default: $libdir/d3d',
)
option(
'vulkan-drivers',
type : 'array',
value : ['auto'],
choices : ['auto', 'amd', 'freedreno', 'intel', 'swrast'],
description : 'List of vulkan drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
)
option(
'shader-cache',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Build with on-disk shader cache support'
)
option(
'vulkan-icd-dir',
type : 'string',
value : '',
description : 'Location relative to prefix to put vulkan icds on install. Default: $datadir/vulkan/icd.d'
)
option(
'vulkan-overlay-layer',
type : 'boolean',
value : false,
description : 'Whether to build the vulkan overlay layer'
)
option(
'vulkan-device-select-layer',
type : 'boolean',
value : false,
description : 'Whether to build the vulkan device select layer'
)
option(
'shared-glapi',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Whether to build a shared or static glapi. Defaults to false on Windows, true elsewhere'
)
option(
'gles1',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Build support for OpenGL ES 1.x'
)
option(
'gles2',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Build support for OpenGL ES 2.x and 3.x'
)
option(
'opengl',
type : 'boolean',
value : true,
description : 'Build support for OpenGL (all versions)'
)
option(
'gbm',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Build support for gbm platform'
)
option(
'glx',
type : 'combo',
value : 'auto',
choices : ['auto', 'disabled', 'dri', 'xlib', 'gallium-xlib'],
description : 'Build support for GLX platform'
)
option(
'egl',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Build support for EGL platform'
)
option(
'glvnd',
type : 'boolean',
value : false,
description : 'Enable GLVND support.'
)
option(
'glx-read-only-text',
type : 'boolean',
value : false,
description : 'Disable writable .text section on x86 (decreases performance)'
)
option(
'llvm',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Build with LLVM support.'
)
option(
'shared-llvm',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Whether to link LLVM shared or statically.'
)
option(
'valgrind',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Build with valgrind support'
)
option(
'libunwind',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Use libunwind for stack-traces'
)
option(
'lmsensors',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Enable HUD lmsensors support.'
)
option(
'build-tests',
type : 'boolean',
value : false,
description : 'Build unit tests. Currently this will build *all* unit tests except the ACO tests, which may build more than expected.'
)
option(
'build-aco-tests',
type : 'boolean',
value : false,
description : 'Build ACO tests. These require RADV and glslang but not an AMD GPU.'
)
option(
'install-intel-gpu-tests',
type : 'boolean',
value : false,
description : 'Build and install Intel unit tests which require the GPU. This option is for developers and the Intel CI system only.'
)
option(
'selinux',
type : 'boolean',
value : false,
description : 'Build an SELinux-aware Mesa'
)
option(
'osmesa',
type : 'combo',
value : 'none',
choices : ['none', 'classic', 'gallium'],
description : 'Build OSmesa.'
)
option(
'osmesa-bits',
type : 'combo',
value : '8',
choices : ['8', '16', '32'],
description : 'Number of channel bits for OSMesa.'
)
option(
'swr-arches',
type : 'array',
value : ['avx', 'avx2'],
choices : ['avx', 'avx2', 'knl', 'skx'],
description : 'Architectures to build SWR support for.',
)
option(
'shared-swr',
type : 'boolean',
value : true,
description : 'Whether to link SWR shared or statically.',
)
option(
'tools',
type : 'array',
value : [],
choices : ['drm-shim', 'etnaviv', 'freedreno', 'glsl', 'intel', 'intel-ui', 'nir', 'nouveau', 'xvmc', 'lima', 'panfrost', 'all'],
description : 'List of tools to build. (Note: `intel-ui` selects `intel`)',
)
option(
'power8',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Enable power8 optimizations.',
)
option(
'xlib-lease',
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
description : 'Enable VK_EXT_acquire_xlib_display.'
)
option(
'glx-direct',
type : 'boolean',
value : true,
description : 'Enable direct rendering in GLX and EGL for DRI',
)
option(
'prefer-iris',
type : 'boolean',
value : true,
description : 'Prefer new Intel iris driver over older i965 driver'
)
option('egl-lib-suffix',
type : 'string',
value : '',
description : 'Suffix to append to EGL library name. Default: none.'
)
option(
'gles-lib-suffix',
type : 'string',
value : '',
description : 'Suffix to append to GLES library names. Default: none.'
)
option(
'platform-sdk-version',
type : 'integer',
min : 25,
max : 28,
value : 25,
description : 'Android Platform SDK version. Default: Nougat version.'
)
option(
'zstd',
type : 'combo',
choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
value : 'auto',
description : 'Use ZSTD instead of ZLIB in some cases.'
)