Changes
Page history
Convert all files to CRLF line endings.
authored
Sep 17, 2024
by
Alexandre Julliard
Hide whitespace changes
Inline
Side-by-side
home.md
View page @
ad54c07d
---
title
:
Vkd3d
---
Vkd3d is a 3D graphics library built on top of Vulkan. It has an API
very similar, but not identical, to Direct3D 12. Wine uses vkd3d
libraries for its implementation of Direct3D 12.
# Building
## Getting the vkd3d source
You can download the Vkd3d source code as a
[
tarball
](
https://dl.winehq.org/vkd3d/source/
)
, but if you plan to do
any actual testing or developing, you'll want to use
[
git
](
https://gitlab.winehq.org/wine/vkd3d
)
.
To grab the source code, just enter the following command:
```
sh
$
git clone https://gitlab.winehq.org/wine/vkd3d.git
```
## Compiling
Enter the following commands:
```
sh
$
./autogen.sh
$
./configure
$
make
```
See also the
[
README
file
](
https://gitlab.winehq.org/wine/vkd3d/-/raw/master/README
)
.
In order to build 32-bit libraries:
```
sh
$
../vkd3d/configure
--build
=
i686-pc-linux-gnu
"CPPFLAGS=-m32"
"LDFLAGS=-m32"
```
## Building a MinGW WoW64 Wine with a custom vkd3d build
If you want your Wine build to use a custom vkd3d build and make it
compatible with a wider range of applications, check
[
Building a MinGW
WoW64 Wine with a custom vkd3d
build
](
Building-a-MinGW-WoW64-Wine-with-a-custom-vkd3d-build
)
.
## Building Wine with Direct3D 12 support
Wine uses
**pkg-config**
to find vkd3d libraries. If vkd3d libraries are
installed system-wide, the Wine configure script should find the vkd3d
libraries automatically. You can also use
**PKG_CONFIG_PATH**
,
**VKD3D_CFLAGS**
or
**VKD3D_LIBS**
to override
**pkg-config**
search
path, C compiler flags for
**libvkd3d**
, or linker flags for
**libvkd3d**
, e.g.
```
sh
$
../wine-git/configure
PKG_CONFIG_PATH
=
$HOME
/src/vulkan/install/lib/pkgconfig
```
# Debugging
## Debug output
Vkd3d provides
**VKD3D_DEBUG**
and
**VKD3D_SHADER_DEBUG**
environment
variables to control debug log messages. The debug variables can be set
to one of the following debug log levels:
**none**
,
**err**
,
**fixme**
,
**warn**
,
**trace**
.
See the
[
README
file
](
https://gitlab.winehq.org/wine/vkd3d/-/raw/master/README
)
for
description of all debug environment variables.
## Vulkan validation layers
Enable validation layers in a standard way:
```
sh
export
VK_INSTANCE_LAYERS
=
VK_LAYER_KHRONOS_validation
```
You may also want to enable Vulkan debug extensions in vkd3d:
```
sh
VKD3D_CONFIG
=
vk_debug
```
## Other tools
-
[
RenderDoc
](
https://renderdoc.org/
)
is a frame-capture based debugger.
It supports Vulkan and Direct3D 12.
-
VK_LAYER_LUNARG_api_dump is useful to dump Vulkan commands produced by
libvkd3d.
-
[
Fossilize
](
https://github.com/ValveSoftware/Fossilize
)
might be
useful for debugging crashes in driver shader compiler. Just capture
pipelines using VK_LAYER_fossilize and use fossilize-replay to
reproduce the crash.
# Tests
Use the following command to run tests:
```
sh
$
make check
```
Tests can also be run individually, for example:
```
sh
$
make tests/d3d12
&&
./tests/d3d12
$ VKD3D_TEST_FILTER
=
clear_render_target ./tests/d3d12
```
To cross-compile tests for Windows run the following command:
```
sh
$
make crosstest
```
## Shader bytecode in tests
Some tests include compiled shader bytecode. Shader bytecode should be
generated with
`/Qstrip_debug /Qstrip_reflect`
options. For example:
```
sh
$
fxc /Qstrip_debug /Qstrip_reflect /T ps_5_0 source.hlsl /Fo output.dxbc
```
# See also
-
[
Todo
](
Todo
)
-
[
Known Issues
](
Known-Issues
)
---
title
:
Vkd3d
---
Vkd3d is a 3D graphics library built on top of Vulkan. It has an API
very similar, but not identical, to Direct3D 12. Wine uses vkd3d
libraries for its implementation of Direct3D 12.
# Building
## Getting the vkd3d source
You can download the Vkd3d source code as a
[
tarball
](
https://dl.winehq.org/vkd3d/source/
)
, but if you plan to do
any actual testing or developing, you'll want to use
[
git
](
https://gitlab.winehq.org/wine/vkd3d
)
.
To grab the source code, just enter the following command:
```
sh
$
git clone https://gitlab.winehq.org/wine/vkd3d.git
```
## Compiling
Enter the following commands:
```
sh
$
./autogen.sh
$
./configure
$
make
```
See also the
[
README
file
](
https://gitlab.winehq.org/wine/vkd3d/-/raw/master/README
)
.
In order to build 32-bit libraries:
```
sh
$
../vkd3d/configure
--build
=
i686-pc-linux-gnu
"CPPFLAGS=-m32"
"LDFLAGS=-m32"
```
## Building a MinGW WoW64 Wine with a custom vkd3d build
If you want your Wine build to use a custom vkd3d build and make it
compatible with a wider range of applications, check
[
Building a MinGW
WoW64 Wine with a custom vkd3d
build
](
Building-a-MinGW-WoW64-Wine-with-a-custom-vkd3d-build
)
.
## Building Wine with Direct3D 12 support
Wine uses
**pkg-config**
to find vkd3d libraries. If vkd3d libraries are
installed system-wide, the Wine configure script should find the vkd3d
libraries automatically. You can also use
**PKG_CONFIG_PATH**
,
**VKD3D_CFLAGS**
or
**VKD3D_LIBS**
to override
**pkg-config**
search
path, C compiler flags for
**libvkd3d**
, or linker flags for
**libvkd3d**
, e.g.
```
sh
$
../wine-git/configure
PKG_CONFIG_PATH
=
$HOME
/src/vulkan/install/lib/pkgconfig
```
# Debugging
## Debug output
Vkd3d provides
**VKD3D_DEBUG**
and
**VKD3D_SHADER_DEBUG**
environment
variables to control debug log messages. The debug variables can be set
to one of the following debug log levels:
**none**
,
**err**
,
**fixme**
,
**warn**
,
**trace**
.
See the
[
README
file
](
https://gitlab.winehq.org/wine/vkd3d/-/raw/master/README
)
for
description of all debug environment variables.
## Vulkan validation layers
Enable validation layers in a standard way:
```
sh
export
VK_INSTANCE_LAYERS
=
VK_LAYER_KHRONOS_validation
```
You may also want to enable Vulkan debug extensions in vkd3d:
```
sh
VKD3D_CONFIG
=
vk_debug
```
## Other tools
-
[
RenderDoc
](
https://renderdoc.org/
)
is a frame-capture based debugger.
It supports Vulkan and Direct3D 12.
-
VK_LAYER_LUNARG_api_dump is useful to dump Vulkan commands produced by
libvkd3d.
-
[
Fossilize
](
https://github.com/ValveSoftware/Fossilize
)
might be
useful for debugging crashes in driver shader compiler. Just capture
pipelines using VK_LAYER_fossilize and use fossilize-replay to
reproduce the crash.
# Tests
Use the following command to run tests:
```
sh
$
make check
```
Tests can also be run individually, for example:
```
sh
$
make tests/d3d12
&&
./tests/d3d12
$ VKD3D_TEST_FILTER
=
clear_render_target ./tests/d3d12
```
To cross-compile tests for Windows run the following command:
```
sh
$
make crosstest
```
## Shader bytecode in tests
Some tests include compiled shader bytecode. Shader bytecode should be
generated with
`/Qstrip_debug /Qstrip_reflect`
options. For example:
```
sh
$
fxc /Qstrip_debug /Qstrip_reflect /T ps_5_0 source.hlsl /Fo output.dxbc
```
# See also
-
[
Todo
](
Todo
)
-
[
Known Issues
](
Known-Issues
)