2016-10-28 03:33:37 -07:00
|
|
|
=============================
|
|
|
|
The vkd3d 3D Graphics Library
|
|
|
|
=============================
|
|
|
|
|
|
|
|
Vkd3d is a 3D graphics library built on top of Vulkan. It has an API very
|
|
|
|
similar, but not identical, to Direct3D 12.
|
2019-01-25 10:08:57 -08:00
|
|
|
|
|
|
|
==============
|
|
|
|
Building vkd3d
|
|
|
|
==============
|
|
|
|
|
2023-09-18 02:56:20 -07:00
|
|
|
Vkd3d depends on SPIRV-Headers and Vulkan-Headers (>= 1.2.148).
|
2019-01-25 10:08:57 -08:00
|
|
|
|
|
|
|
Vkd3d generates some of its headers from IDL files. If you are using the
|
|
|
|
release tarballs, then these headers are pre-generated and are included. If
|
|
|
|
you are building from git, then they will be generated at build-time using
|
|
|
|
widl. By default, vkd3d will use the widl found in `PATH'. If widl is not
|
2023-07-11 02:08:37 -07:00
|
|
|
available or is not recent (>= 3.21), then you can build Wine with `make
|
|
|
|
tools/widl/widl' to avoid building all of Wine. You can then point vkd3d's
|
2019-01-25 10:08:57 -08:00
|
|
|
configure at that widl binary with `WIDL="/path/to/widl"'.
|
|
|
|
|
2019-05-17 01:39:16 -07:00
|
|
|
For release builds, you may want to define NDEBUG. If you do not need debug log
|
|
|
|
messages, you may also consider VKD3D_NO_TRACE_MESSAGES and
|
|
|
|
VKD3D_NO_DEBUG_MESSAGES. For example, you can pass `CPPFLAGS="-DNDEBUG
|
|
|
|
-DVKD3D_NO_TRACE_MESSAGES"' to configure.
|
|
|
|
|
2019-01-25 10:08:57 -08:00
|
|
|
===========
|
|
|
|
Using vkd3d
|
|
|
|
===========
|
|
|
|
|
|
|
|
Vkd3d can be used by projects that target Direct3D 12 as a drop-in replacement
|
|
|
|
at build-time with some modest source modifications.
|
|
|
|
|
|
|
|
If vkd3d is available when building Wine, then Wine will use it to support
|
|
|
|
Direct3D 12 applications.
|
2019-05-17 01:39:15 -07:00
|
|
|
|
|
|
|
=====================
|
|
|
|
Environment variables
|
|
|
|
=====================
|
|
|
|
|
|
|
|
Most of the environment variables used by vkd3d are for debugging purposes. The
|
|
|
|
environment variables are not considered a part of API and might be changed or
|
|
|
|
removed in the future versions of vkd3d.
|
|
|
|
|
|
|
|
Some of debug variables are lists of elements. Elements must be separated by
|
|
|
|
commas or semicolons.
|
|
|
|
|
2021-08-30 16:16:26 -07:00
|
|
|
* NO_COLOR - this is an alias of NO_COLOUR.
|
|
|
|
|
2023-08-03 03:00:01 -07:00
|
|
|
* NO_COLOUR - when set, vkd3d-compiler and vkd3d-dxbc will default to
|
|
|
|
monochrome output, even when the output supports colour.
|
2021-08-30 16:16:26 -07:00
|
|
|
|
2019-05-17 01:39:15 -07:00
|
|
|
* VKD3D_CONFIG - a list of options that change the behavior of libvkd3d.
|
2022-02-21 07:18:59 -08:00
|
|
|
* virtual_heaps - Create descriptors for each D3D12 root signature
|
|
|
|
descriptor range instead of entire descriptor heaps. Useful when push
|
|
|
|
constant or bound descriptor limits are exceeded.
|
2019-05-17 01:39:15 -07:00
|
|
|
* vk_debug - enables Vulkan debug extensions.
|
|
|
|
|
|
|
|
* VKD3D_DEBUG - controls the debug level for log messages produced by
|
|
|
|
libvkd3d. Accepts the following values: none, err, fixme, warn, trace.
|
|
|
|
|
|
|
|
* VKD3D_VULKAN_DEVICE - a zero-based device index. Use to force the selected
|
|
|
|
Vulkan device.
|
|
|
|
|
|
|
|
* VKD3D_DISABLE_EXTENSIONS - a list of Vulkan extensions that libvkd3d should
|
|
|
|
not use even if available.
|
|
|
|
|
2023-12-03 07:28:53 -08:00
|
|
|
* VKD3D_SHADER_CONFIG - a list of options that change the behavior of
|
|
|
|
libvkd3d-shader.
|
|
|
|
* force_validation - Enable (additional) validation of libvkd3d-shader's
|
|
|
|
internal representation of shaders.
|
|
|
|
|
2019-05-17 01:39:15 -07:00
|
|
|
* VKD3D_SHADER_DEBUG - controls the debug level for log messages produced by
|
|
|
|
libvkd3d-shader. See VKD3D_DEBUG for accepted values.
|
|
|
|
|
|
|
|
* VKD3D_SHADER_DUMP_PATH - path where shader bytecode is dumped.
|
|
|
|
|
|
|
|
* VKD3D_TEST_DEBUG - enables additional debug messages in tests. Set to 0, 1
|
|
|
|
or 2.
|
|
|
|
|
2019-07-17 04:17:35 -07:00
|
|
|
* VKD3D_TEST_FILTER - a filter string. Only the tests whose names matches the
|
|
|
|
filter string will be run, e.g. VKD3D_TEST_FILTER=clear_render_target.
|
|
|
|
Useful for debugging or developing new tests.
|
|
|
|
|
2019-05-17 01:39:15 -07:00
|
|
|
* VKD3D_TEST_PLATFORM - can be set to "wine", "windows" or "other". The test
|
|
|
|
platform controls the behavior of todo(), todo_if(), bug_if() and broken()
|
|
|
|
conditions in tests.
|
|
|
|
|
|
|
|
* VKD3D_TEST_BUG - set to 0 to disable bug_if() conditions in tests.
|
2023-08-30 13:09:39 -07:00
|
|
|
|
2023-09-14 02:29:24 -07:00
|
|
|
If the configuration defines 'DXCOMPILER_LIBS=-L/path/to/dxcompiler', Shader
|
|
|
|
Runner attempts to load libdxcompiler.so or dxcompiler.dll to compile test
|
|
|
|
shaders in Shader Model 6. LD_LIBRARY_PATH (linux), WINEPATH (wine) or PATH
|
|
|
|
(native windows) should include the location of dxcompiler if SM 6 shader
|
|
|
|
tests are desired. If dxcompiler is not found, Shader Runner will compile the
|
|
|
|
test shaders only in earlier shader models. The DXC source does not contain
|
|
|
|
code for adding DXBC checksums, so the official release should be installed
|
|
|
|
from:
|
|
|
|
https://github.com/microsoft/DirectXShaderCompiler/releases
|
|
|
|
|
2023-08-30 13:09:39 -07:00
|
|
|
================
|
|
|
|
Developing vkd3d
|
|
|
|
================
|
|
|
|
|
|
|
|
Development of vkd3d happens on the Wine GitLab instance
|
|
|
|
(https://gitlab.winehq.org/wine/vkd3d/). Contributors are encouraged
|
|
|
|
to submit their patches using the merge request tool.
|
|
|
|
|
|
|
|
Each merge request is automatically tested with the GitLab CI
|
|
|
|
system. See gitlab/README in the Git tree for more details.
|