Fork of VKD3D. Development branches for Proton's Direct3D 12 implementation.
Go to file
Joshua Ashton d0f8e854d1 build: Remove -Wno-incompatible-pointer-types
No longer needed with recent changes.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2020-07-03 15:48:14 +01:00
bin build: Add initial Autotools files. 2016-09-21 09:05:15 +02:00
crosslibs Add crosslibs .a to .gitignore. 2016-10-24 13:57:04 +02:00
demos build: Add public include dirs to demos 2020-07-01 21:31:43 +02:00
include vkd3d-shader: Fix incorrect enum being used for tesselator partitioning 2020-06-26 15:42:41 +02:00
libs vkd3d-shader: Use uint32 for immediate constants 2020-07-03 15:47:52 +01:00
m4 build: Redirect stderr to /dev/null in VKD3D_PROG_WIDL. 2019-04-15 21:02:14 +02:00
programs programs/vkd3d-compiler: Add build script 2020-06-24 15:27:22 +02:00
subprojects build: Use Meson subproject for dxil-spirv 2020-06-26 18:33:27 +02:00
tests vkd3d: Use CONST_VTBL instead of const for vtable decls 2020-07-03 02:02:21 +01:00
.gitignore build: Add Meson build system 2020-06-23 14:55:43 +02:00
.gitlab-ci.yml build: Add .gitlab-ci 2020-06-29 17:04:56 +02:00
.gitmodules subprojects: Add submodules for dependencies 2020-06-23 14:55:43 +02:00
ANNOUNCE Release 1.1. 2018-10-05 13:48:18 -05:00
AUTHORS Release 1.1. 2018-10-05 13:48:18 -05:00
COPYING Update copyright info for 2019. 2019-01-10 10:03:58 -06:00
LICENSE Update license to LGPL v2.1. 2017-06-16 22:11:21 +02:00
Makefile.am build: Remove SPIRV-Tools dependency 2020-06-26 13:43:08 +02:00
README.md meta: Make README markdown and update for Meson 2020-07-01 12:01:26 +02:00
autogen.sh build: Add initial Autotools files. 2016-09-21 09:05:15 +02:00
build-win32.txt build: Use Meson subproject for dxil-spirv 2020-06-26 18:33:27 +02:00
build-win64.txt build: Use Meson subproject for dxil-spirv 2020-06-26 18:33:27 +02:00
configure.ac build: Remove SPIRV-Tools dependency 2020-06-26 13:43:08 +02:00
meson.build build: Remove -Wno-incompatible-pointer-types 2020-07-03 15:48:14 +01:00
meson_options.txt build: Add Meson build system 2020-06-23 14:55:43 +02:00
package-release.sh build: Add package-release helper 2020-06-29 17:04:56 +02:00
vkd3d_version.c.in build: Add Meson build system 2020-06-23 14:55:43 +02:00

README.md

VKD3D

VKD3D is a 3D graphics library built on top of Vulkan. It has an API very similar, but not identical, to Direct3D 12.


Cloning the repo

To clone the repo you should run:

git clone --recursive https://github.com/HansKristian-Work/vkd3d

in order to pull in all the submodules which are needed for building.

Building VKD3D

Requirements:

  • wine (for widl)
    • On Windows this may be substituted for Strawberry Perl as it ships widl and is easy to find and install -- although this dependency may be eliminated in the future.
  • Meson build system (at least version 0.51)
  • glslang compiler

Building:

The simple way

Inside the VKD3D directory, run:

./package-release.sh master /your/target/directory --no-package

This will create a folder vkd3d-master in /your/target/directory, which contains both 32-bit and 64-bit versions of VKD3D, which can be set up in the same way as the release versions as noted above.

In order to preserve the build directories for development, pass --dev-build to the script. This option implies --no-package. After making changes to the source code, you can then do the following to rebuild VKD3D:

# change to build.86 for 32-bit
cd /your/target/directory/build.64
ninja install

Compiling manually

# 64-bit build.
meson --buildtype release --prefix /your/vkd3d/directory build.64
cd build.64
ninja install

# 32-bit build
meson --cross-file x86-linux-gnu --buildtype release --prefix /your/vkd3d/directory build.86
cd build.86
ninja install

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.

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.

  • VKD3D_CONFIG - a list of options that change the behavior of libvkd3d.
    • 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.
  • 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.
  • 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.
  • 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.