GithubHelp home page GithubHelp logo

joshua-ashton / d9vk Goto Github PK

View Code? Open in Web Editor NEW
833.0 65.0 42.0 19.29 MB

A Direct3D9 to Vulkan layer using the DXVK backend. [Upstreamed to DXVK]

Home Page: https://github.com/doitsujin/dxvk

License: zlib License

C++ 88.23% C 10.97% Meson 0.38% Shell 0.11% Python 0.01% GLSL 0.31%
d3d9 vulkan spirv wine linux directx nine dxvk windows direct3d

d9vk's Introduction

d9vk's People

Contributors

aeikum avatar aviau avatar cdavis5e avatar cjacek avatar cme42 avatar dhewg avatar doitsujin avatar entryhazard avatar eszlari avatar guy1524 avatar joshua-ashton avatar jp7677 avatar k0bin avatar lacc97 avatar liam-middlebrook avatar libcg avatar loathingkernel avatar mixaill avatar mkljczk avatar nelsonjchen avatar notaz avatar orbea avatar pchome avatar raffarti avatar shellyherself avatar ssorgatem avatar svesop avatar varris1 avatar xdshot avatar zerofault avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

d9vk's Issues

Payday: the heist - floor and wall textures are blocky and pixelated.

Wall and floor has incorrect textures. Game draws solid color squares which are covered in digital camo-like pixelated texture. Pixels are moving all the time.
https://i.imgur.com/knqF9sE.jpg

Software information

Latest Steam version, any settings.

System information

  • GPU: GTX 1060
  • Driver: 418.52.03
  • Wine version: vanila 4.6
  • DXVK version: git master

Apitrace file(s)

https://drive.google.com/open?id=1sGgfHyjobyi6jNTKiEZb9_Tima6x-tsN

Log files

d9vk build fails (dll / 32-bit) with undefined reference to `vtable for IDirect3D9Ex'

Here is the failure error:

[227/227] Linking target src/d3d9/d3d9.dll.
FAILED: src/d3d9/d3d9.dll 
i686-w64-mingw32-g++  -o src/d3d9/d3d9.dll 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_main.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_interface.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_monitor.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_caps.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_device.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_cursor.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_swapchain.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_format.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_presenter.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_common_texture.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_texture.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_surface.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_volume.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_common_buffer.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_buffer.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_shader.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_vertex_declaration.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_query.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_multithread.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_options.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_sampler.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_util.cpp.obj' 'src/d3d9/ecc23b3@@d3d9@sha/d3d9_initializer.cpp.obj' ../source/src/d3d9/d3d9.def -shared ../source/src/d3d9/d3d9.def -Wl,--start-group -Wl,--out-implib=src/d3d9/d3d9.dll.a src/dxso/libdxso.a src/dxvk/libdxvk.a src/util/libutil.a src/spirv/libspirv.a src/vulkan/libvkcommon.a /home/user/build/d9vk/source/lib32/vulkan-1.lib -pthread -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -Wl,--end-group -static -static-libgcc -static-libstdc++ -Wl,--add-stdcall-alias,--enable-stdcall-fixup 
/usr/bin/i686-w64-mingw32-ld: src/d3d9/ecc23b3@@d3d9@sha/d3d9_interface.cpp.obj: in function `ZN12IDirect3D9ExC2Ev':
/usr/share/mingw-w64/include/d3d9.h:1590: undefined reference to `vtable for IDirect3D9Ex'
/usr/bin/i686-w64-mingw32-ld: src/d3d9/ecc23b3@@d3d9@sha/d3d9_interface.cpp.obj:d3d9_interface.cpp:(.rdata$_ZTVN4dxvk9ComObjectIJ12IDirect3D9ExEEE[__ZTVN4dxvk9ComObjectIJ12IDirect3D9ExEEE]+0x54): undefined reference to `IDirect3D9Ex::GetAdapterDisplayModeEx(unsigned int, D3DDISPLAYMODEEX*, D3DDISPLAYROTATION*)@16'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Build failed!

Doing it on current Debian testing:

i686-w64-mingw32-g++ --version
i686-w64-mingw32-g++ (GCC) 8.2-posix 20190215

Splinter Cell Chaos Theory unrerndered. Sound still on.

Software information

Splinter Cell Chaos Theory Ubisoft original CDs (I assume the steam version should be similar but I'm testing with Lutris + D9VK).
Goes in-game but nothing is rendered, all black screen. You can still hear the sound.

System information

  • GPU:GTX 1060 6GB
  • Driver:418.49
  • Wine version: tkg-4.5 wine
  • DXVK version: latest master

Apitrace file(s):

-unable to provide one.

Log files

d3d9.log:

Warhammer 40K Space Marine doesn't render 3D models

Observed Results: On Windows 10 Videos and Menus render correctly. 3D rendering does not. At the start screen you should see an Ultramarine fighting Orcs and instead it is a black screen. Once into game play everything is a black screen. On WINE the game crashes after Warning Screen is displayed. I believe the crash is due to a WINE bug and not D9VK because its running otherwise on Windows 10.

Software information

Warhammer 40,000 Space Marine

System information

  • GPU: Geforce GTX 980ti (Linux), Geforce GTX 960 (Windows)
  • Driver: 418.52.03 (Linux), 425.31 (Windows 10)
  • Wine version: Wine-TKG 4.5 GIT
  • DXVK version: master

Apitrace file(s)

Log files

ReShade doesn't work

https://reshade.me/

Tried it with Arkham Asylum and the game just hangs on launch. Portal 2 shows the same error but ReShade doesn't show up. Black Ops launches but has a second screen in the top left.
All these games work fine before adding the ReShade d3d9.dll to the game folder.

Here's the d3d9.log from ReShade for Arkham Asylum:

13:34:02:095 [00065] | INFO  | Initializing crosire's ReShade version '4.2.1.542' (32-bit) built on '2019-03-04 22:32:13' loaded from "Z:\mnt\storage2\SteamLibrary\SteamApps\common\Batman Arkham Asylum GOTY\Binaries\d3d9.dll" to "Z:\mnt\storage2\SteamLibrary\SteamApps\common\Batman Arkham Asylum GOTY\Binaries\ShippingPC-BmGame.exe" ...
13:34:02:109 [00065] | INFO  | Registering hooks for "user32.dll" ...
13:34:02:109 [00065] | INFO  | > Libraries loaded.
13:34:02:110 [00065] | INFO  | > Found 13 match(es). Installing ...
13:34:02:114 [00065] | INFO  | Registering hooks for "ws2_32.dll" ...
13:34:02:114 [00065] | INFO  | > Libraries loaded.
13:34:02:114 [00065] | INFO  | > Found 8 match(es). Installing ...
13:34:02:117 [00065] | INFO  | Registering hooks for "C:\windows\system32\d3d9.dll" ...
13:34:02:117 [00065] | INFO  | > Delayed until first call to an exported function.
13:34:02:118 [00065] | INFO  | Registering hooks for "C:\windows\system32\d3d10.dll" ...
13:34:02:118 [00065] | INFO  | > Delayed.
13:34:02:118 [00065] | INFO  | Registering hooks for "C:\windows\system32\d3d10_1.dll" ...
13:34:02:119 [00065] | INFO  | > Delayed.
13:34:02:119 [00065] | INFO  | Registering hooks for "C:\windows\system32\d3d11.dll" ...
13:34:02:121 [00065] | INFO  | > Delayed.
13:34:02:121 [00065] | INFO  | Registering hooks for "C:\windows\system32\dxgi.dll" ...
13:34:02:122 [00065] | INFO  | > Delayed.
13:34:02:122 [00065] | INFO  | Registering hooks for "C:\windows\system32\opengl32.dll" ...
13:34:02:122 [00065] | INFO  | > Delayed.
13:34:02:122 [00065] | INFO  | Initialized.
13:34:02:728 [00065] | INFO  | Redirecting Direct3DCreate9(32) ...
13:34:02:742 [00065] | INFO  | Installing export hooks for "C:\windows\system32\d3d9.dll" ...
13:34:02:742 [00065] | INFO  | > Found 9 match(es). Installing ...
13:34:02:857 [00065] | INFO  | Installing delayed hooks for "C:\windows\system32\opengl32.dll" (Just loaded via LoadLibrary("ddraw.dll")) ...
13:34:02:857 [00065] | INFO  | > Found 359 match(es). Installing ...
13:34:02:924 [00065] | INFO  | Redirecting wglChoosePixelFormat(00260049, 02F8DE14) ...
13:34:02:925 [00065] | INFO  | > Dumping pixel format descriptor:
13:34:02:925 [00065] | INFO  |   +-----------------------------------------+-----------------------------------------+
13:34:02:925 [00065] | INFO  |   | Name                                    | Value                                   |
13:34:02:925 [00065] | INFO  |   +-----------------------------------------+-----------------------------------------+
13:34:02:925 [00065] | INFO  |   | Flags                                   | 0x25                                    |
13:34:02:925 [00065] | INFO  |   | ColorBits                               | 32                                      |
13:34:02:925 [00065] | INFO  |   | DepthBits                               | 0                                       |
13:34:02:925 [00065] | INFO  |   | StencilBits                             | 0                                       |
13:34:02:925 [00065] | INFO  |   +-----------------------------------------+-----------------------------------------+
13:34:02:926 [00065] | INFO  | > Returned format: 3
13:34:02:926 [00065] | INFO  | Redirecting wglSetPixelFormat(00260049, 3, 02F8DE14) ...
13:34:02:926 [00065] | INFO  | Redirecting wglCreateContext(00260049) ...
13:34:02:926 [00065] | INFO  | > Passing on to 'wglCreateLayerContext' ...
13:34:02:926 [00065] | INFO  | Redirecting wglCreateLayerContext(00260049, 0) ...
13:34:02:926 [00065] | INFO  | Redirecting wglCreateContext(00260049) ...
13:34:02:926 [00065] | INFO  | > Passing on to 'wglCreateLayerContext' ...
13:34:02:926 [00065] | INFO  | Redirecting wglCreateLayerContext(00260049, 0) ...
13:34:02:926 [00065] | INFO  | Redirecting wglCreateContext(00260049) ...
13:34:02:927 [00065] | INFO  | > Passing on to 'wglCreateLayerContext' ...
13:34:02:927 [00065] | INFO  | Redirecting wglCreateLayerContext(00260049, 0) ...
13:34:02:927 [00065] | INFO  | Redirecting wglCreateContext(00260049) ...
13:34:02:927 [00065] | INFO  | > Passing on to 'wglCreateLayerContext' ...
...

The log goes on but just keeps repeating these lines

Redirecting wglCreateLayerContext(00260049, 0) ...
Redirecting wglCreateContext(00260049) ...
 > Passing on to 'wglCreateLayerContext' ...

FlatOut 2 - Entirely black but the game itself works

The game loads absolutely fine but is entirely black from start to finish. Judging from the sound the entire game logic works as intended but absolutely nothing is displayed.

Software information

FlatOut 2 on lowest settings (higher settings have the same symptoms)

System information

  • GPU: Radeon R9 290X
  • Driver: amdgpu
  • Wine version: 4.6 from (latest from the Arch repos)
  • DXVK version: a262dcd

Apitrace file(s)

Log files

Dead Space lighting issue

Dead Space now renders in-game with Low settings, however, there are issues with lighting and misaligned menus. I'll try making a video later once I figure out why OBS won't record full screen games.

Software information

Dead Space Low settings preset

System information

  • GPU: GTX 960
  • Driver: 418.56
  • Wine version: Staging 3.21
  • D9VK version: c37ae6d

Apitrace file(s)

Log files

Dead Space_d3d9_log.zip (568MB decompressed)

Dragon's Dogma: Dark Arisen ~ game loads, but non-HUD stuff is just solid white

After the game finishes loading, it instantly crashes.

More minor issues include the main menu background being rendered white. The particle effects used for the game name while loading are also not displayed.

Software information

Dragon's Dogma: Dark Arisen using Proton 4.2-2 + Steam + D9VK d3d9.dll 32-bit

System information

  • GPU: AMD RX 580
  • Driver: Mesa master + LLVM master
  • Wine version: 4.2
  • D9VK version: master

Apitrace file(s)

https://mega.nz/#!Q8lymKJA!43INKkLuugaDD7ysqk5aQh76JpdjSeziWLtL9Pn9ZxE

Log files

DDDA_d3d9.tar.gz

Anarchy Online crashes on launch

Hello,
I have been attempting to get Anarchy Online (the new engine which uses dx9) to work with d9vk.
But it results in the game crashing right after clicking "play" and its about to take you ingame.
It gives a game crash message and before that message pops up my gnome desktop becomes really sluggish, not sure why that is happening but could be cause d9vk is in the early stages.

Anyways I wanted to help out by putting this issue out there and get some idea what is missing if anything is missing.

Software information

Anarchy Online New Engine

System information

  • GPU: Nvidia Geforce 1070 gtx
  • Driver: 418.43
  • Wine version: Wine 4.3-staging
  • D9VK version: build is from today, is there a build number?

Apitrace file(s)

Apitrace from a Windows10 machine with Geforce 680:
Apitrace.zip
I were unable to do an apitrace with the game via Wine but hope this is fine.

Log files

anarchyonline_d3d9.log

Game also spits out this logfile: AnarchyCrashLog.txt
Not sure if it is to any use but posting anyways.

Thank you in advance also thanks for the great work with d9vk so far.

Payday the heist draws transparent cylinder on the top half of the screen

Game draws cylinder on the top half of the screen which obscures the view, it scales with FOV angle.
Screenshot:
https://steamuserimages-a.akamaihd.net/ugc/972124142076415321/779FFB141C269EDBB3DBE6A9F9910B233B96A185/

Software information

Payday the heist, latest version on Steam, any settings.

System information

  • GPU: GTX 1060
  • Driver: 418.52.03
  • Wine version: 4.6 vanilla, Proton 4.2
  • D9VK version: git master

Apitrace file(s)

https://drive.google.com/file/d/14IaQWzw5Y7SHK7QNTD-0GNQLxcQ9L24B

Log files

Change README.md

README.md is still from DXVK so maybe it should change to prevent confusion?

StarCraft 2 don't runs when D9VK is in use.

Hi! Yes, I know that D9VK is still in early development, so for the time being we should not expect too much from it, but I’ll just write in advance about this issue.

Software information

StarCraft 2 (Direct3D9-only game).

System information

  • OS: Arch Linux
  • GPU: AMD Radeon HD 7850
  • Driver: AMDGPU (manually enabled), Mesa-git
  • Wine version: Wine-tkg-git with latest Wine Staging git
  • DXVK version: winelib latest git from Wine-tkg-git

Apitrace file(s)

Log files:

SC2_x64_d.zip

Failed to compile "fatal error: dxgi1_4.h: No such file or directory #include <dxgi1_4.h>"

$ ./package-release.sh master ./build --no-package
The Meson build system
Version: 0.45.1
Source dir: /home/rachael/d9vk
Build dir: /home/rachael/d9vk/build/dxvk-master/build.64
Build type: cross build
Project name: dxvk
Native C compiler: cc (gcc 7.3.0 "cc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0")
Cross C compiler: x86_64-w64-mingw32-gcc (gcc 7.3.0)
Native C++ compiler: c++ (gcc 7.3.0 "c++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0")
Cross C++ compiler: x86_64-w64-mingw32-g++ (gcc 7.3.0)
Host machine cpu family: x86_64
Host machine cpu: x86_64
Target machine cpu family: x86_64
Target machine cpu: x86_64
Build machine cpu family: x86_64
Build machine cpu: x86_64
Checking if "winelib check" compiles: NO
Program x86_64-w64-mingw32-windres found: YES (/usr/bin/x86_64-w64-mingw32-windres)
Library vulkan-1 found: YES
Library d3d9 found: YES
Library d3d11 found: YES
Library dxgi found: YES
Library d3dcompiler_43 found: YES
Library d3dcompiler_47 found: YES
Program glslangValidator found: YES (/usr/bin/glslangValidator)
Dependency threads found: YES
Dependency threads found: YES (cached)
Build targets in project: 13
Found ninja-1.8.2 at /usr/bin/ninja
[3/242] Generating version.h with a custom command.
fatal: No names found, cannot describe anything.
[4/242] Compiling C++ object 'src/util/util@sta/com_com_guid.cpp.obj'.
FAILED: src/util/util@sta/com_com_guid.cpp.obj 
x86_64-w64-mingw32-g++  -Isrc/util/util@sta -Isrc/util -I../../../src/util -I../../.././include -fdiagnostics-color=always -pipe -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++1z -O3 -DNOMINMAX -MD -MQ 'src/util/util@sta/com_com_guid.cpp.obj' -MF 'src/util/util@sta/com_com_guid.cpp.obj.d' -o 'src/util/util@sta/com_com_guid.cpp.obj' -c ../../../src/util/com/com_guid.cpp
In file included from ../../../src/util/com/../../d3d11/d3d11_include.h:3:0,
                 from ../../../src/util/com/../../d3d11/d3d11_interfaces.h:3,
                 from ../../../src/util/com/com_guid.cpp:3:
../../../src/util/com/../../d3d11/../dxgi/dxgi_include.h:28:10: fatal error: dxgi1_4.h: No such file or directory
 #include <dxgi1_4.h>
          ^~~~~~~~~~~
compilation terminated.
[9/242] Compiling C++ object 'src/util/util@sta/config_config.cpp.obj'.
ninja: build stopped: subcommand failed.

The Sims 4 crashes after playing intro

d3d9 log ends with err: DxsoCodeSlice: End of stream. (full log:
TS4_x64_d3d9.log )

Stuff spirv-val complains about:

FS_1173323f0d9002dcca8010ff428ef4354ab4bfc7.spv
error: line 94: OpEntryPoint interfaces must be OpVariables with Storage Class of Input(1) or Output(3). Found Storage Class 6 for Entry Point id 2.
  %p0 = OpVariable %_ptr_Private_v4float Private
FS_4a25fe0d3308a0c7922e927189f8bfa55b87c36c.spv
error: line 191: Expected Result Type to be a composite type
  %112 = OpCompositeConstruct %float %111 %111 %111 %111
FS_4cd6154128cfdbf78c8204309efeb0048338638b.spv
error: line 271: ID 156[cf3] defined in block 154 does not dominate its use in block 138
  %138 = OpLabel

Shaderdump with some of the shaders ran through spirv-cross (saved with .cross, some could not be because spirv-cross borks out with SPIRV-Cross threw an exception: Cannot subdivide a scalar value!): shaderdump.zip
Apitrace: https://yadi.sk/d/xF3y_FkB2HVCkA

A new compilation error

Arch Linux, wine-tkg-git.
I'm not sure that this is exactly the D9VK bug, and if so, then I will close this bug report. Thanks you.
Снимок экрана от 2019-05-02 15-59-22

Collection of spirv-val errors

How to check for spirv errors

  1. Make 100% sure you are using the latest compiling master of d9vk before reporting! Otherwise you could encounter issues that are already fixed, which would be a waste of time for everybody.
  2. use winetricks to install d3dx9 and d3dcompiler_43 otherwise your .dis will be useless!
  3. set the envvar DXVK_SHADER_DUMP_PATH=/home/user/.../dumplocation to the location you want d9vk to dump its shaders (directories must exists)
  4. run spirv-val on all of the dumped shaders:
for i in *.spv; do
echo $i
spirv-val $i
done
  1. look for shader errors
  2. Take the .spv and .dis file of the broken shader and zip them. Make sure .dis isn't corrupted.
  3. Post a comment with the error message and zip under this issue. You may keep a similar style to the existing comments.

Checklist

  • Guild 2
  • Call of Duty 4

Guild 2

Guild 2 crashes, but dumping the shaders and running spirv-val worked. So here are the invalid shaders.

  • VS_bca7
VS_bca7272b16585f37b83f01956056660e2d050e6b.spv
error: line 171: Result type (OpTypeInt) does not match the type that results from indexing into the composite (OpTypeFloat).
  %59 = OpCompositeExtract %int %58 0

VS_bca7.zip

------

This error occurred in multiple shaders, if you want a 2nd one please tell me.

  • VS_bf70
VS_bf70ef6d077b993bd733c73c480424a10d156f90.spv
error: line 248: Reached non-composite type while indexes still remain to be traversed.
  %137 = OpCompositeExtract %int %136 0

VS_bf70.zip

Call of Duty 4

FS_d3b510fb64530da674a5ac7001f747f9fbd09ed0.spv
error: line 752: ID 448[%cf2] defined in block 445[%445] does not dominate its use in block 577[%577]
  %577 = OpLabel

FS_d3b5.zip

Q - Can d9vk support SweetFX in the future?

My dx9 game collections runs well with d9vk, but there is no options for antialiasing in these games, so I really need to use SweetFX to inject SMAA or FXAA, so is there any chance that d9vk will support SweetFX in the future or is that impossible?

Stalker Shadow of Chernobyl: black screen

Screen is black but game works.

Software information

Stalker Shadow of Chernobyl with patch 1.0004 (i use this patch because it's compatible with mods, unlike 1.0006)

System information

  • GPU: GeForce GTX 1050
  • Driver: 418.56
  • Wine version: 4.7
  • D9VK version: commit 673f5fb
  • Arch Linux (if it matters)

Apitrace file(s)

https://www.dropbox.com/s/8d0rj0ywfgi1dgw/Stalker%20Shadow%20of%20Chernobyl%20%28patch%201.0004%2C%20menu%20only%29%20%5Bd3d9%5D.tar.xz?dl=0
Apitrace produces two files simultaneously. I didn't apitrace actual gameplay, only menu, else trace grows larger than 1Gb. Full dynamic lighting enabled when apitracing, but screen is black even with full static lighting. I tried to apitrace with static lighting but it still produces such large traces. Yes, this game is glitchy, but it's the classic game.

Log files

XR_3DA_d3d9.log

edit: menu is also black so these apitraces should be enough to reproduce the bug.

The Witcher not rendering correctly

The Witcher doesn't render intro movies (green screen) but it does render the menu screen just not the menus. I can load my game save but it crashes before ever reaching in-game.

Screenshot from 2019-04-11 21-15-23

Screenshot from 2019-04-11 21-15-25

Software information

The Witcher Enhanced Edition w/ Rise of the White Wolf mod

System information

  • GPU: GTX 960
  • Driver: 418.56
  • Wine version: Staging 3.21
  • DXVK version: b71f514

Apitrace file(s)

Log files

Borderlands 2 problems

Despite other glitches the main one is the constantly degrading GPU usage (so FPS).

From ~100FPS to ~5FPS in several minutes.

The perf utility says:

std::_Hashtable<dxvk::D3D9SamplerKey, std::pair<dxvk::D3D9SamplerKey const, dxvk::Rcdxvk::DxvkSampler >, std::allocator<std::pair<dxvk::D3D9SamplerKey const, dxvk::Rcdxvk::DxvkSampler > >, std::__detail::_Select1st, dxvk::D3D9SamplerKeyEq, dxvk::D3D9SamplerKeyHash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_find_before_node (15,388 samples, 40.58%)

Test:

--- a/src/d3d9/d3d9_device.cpp
+++ b/src/d3d9/d3d9_device.cpp
@@ -3829,9 +3829,9 @@
     key.MaxMipLevel   = state[D3DSAMP_MAXMIPLEVEL];
     key.BorderColor   = D3DCOLOR(state[D3DSAMP_BORDERCOLOR]);
 
-    auto pair = m_samplers.find(key);
-    if (pair != m_samplers.end())
-      return pair->second;
+    //auto pair = m_samplers.find(key);
+    //if (pair != m_samplers.end())
+    //  return pair->second;
 
     auto mipFilter = DecodeMipFilter(key.MipFilter);
 
@@ -3855,7 +3855,7 @@
 
     Rc<DxvkSampler> sampler = m_dxvkDevice->createSampler(info);
 
-    m_samplers.insert(std::make_pair(key, sampler));
+    //m_samplers.insert(std::make_pair(key, sampler));
     return sampler;
   }
 

GPU usage seems OK with this patch, the problem indeed somewhere in the "sampler".


Other problems (FYI):

  • high and constantly growing VRAM usage
  • rotated Ammo/Weapon/Damage hints
  • red texture borders (black is red)

d9vk-borderlands-2

EDIT: "black is red"

Trine 2 - The main menu is rotated and there is no text

Software information

Screenshot from 2019-04-29 02-46-54

System information

  • GPU: HD 8750M
  • Driver: Mesa 19.0.2
  • Wine version: 4.7
  • D9VK version: e1886cc

Log files

The main menu is rotated to the right direction and there is no text

Screenshot from 2019-04-29 02-26-10

That is how it looks with wined3d

Screenshot from 2019-04-29 02-23-41

The loading screen is rotated also with d9vk

Screenshot from 2019-04-29 02-25-29

Sorry for not recording apitrace, if you need it, please tell me, and I will record it.

GuildWars 2 Black Screen & Crash

On Windows 10 the 64bit client gets stuck on a black screen while on WINE it gets to the character select screen and crashes. The 32bit client was not tested.

Software information

GuildWars 2 64-bit client

System information

  • GPU: Geforce GTX 980Ti (Linux), Geforce GTX 960 (Windows)
  • Driver: 418.52.03 and 425.31 respectively
  • Wine version: WINE-TKG 4.5 Git Master
  • DXVK version: git master

Apitrace file(s)

Log files

Everquest Black Screen

Observed Results: Black Screen with no music on start up. Up until yesterday's (4-11-19) update to git master everything rendered except for character models. This happens on both Windows 10 and WINE.

Software information

Everquest

System information

  • GPU: Geforce GTX 980Ti (Linux), Geforce GTX 960 (Windows)
  • Driver: 418.52.03 and 425.31 respectively
  • Wine version: WINE-TKG 4.5 Git Master
  • DXVK version: git master

Apitrace file(s)

Log files

Everquest 2 Black Screen

Observed Results: Black Screen on start up. This happens on both Windows 10 and WINE.

Software information

Everquest 2

System information

  • GPU: Geforce GTX 980Ti (Linux), Geforce GTX 960 (Windows)
  • Driver: 418.52.03 and 425.31 respectively
  • Wine version: WINE-TKG 4.5 Git Master
  • DXVK version: git master

Apitrace file(s)

Log files

Override vendor/device id (probably) doesn't work

Hi. I'm trying to override vendor/device ID, I put this into dxvk.conf:

d3d9.customVendorId = "10de"
d3d9.customDeviceId = "402"

But game (Fallout 3 launcher, actually) still reports that i have Intel GPU. That's what i see in d3d9.log:

info:  Effective configuration:
info:    d3d9.customDeviceId = "402"
info:    d3d9.customVendorId = "10de"

Can someone else test if vendor/device ID overriding works?

System information

  • GPU: Intel HD 630
  • Driver: Mesa 19.0.1
  • Wine version: 4.6
  • DXVK version: 331d883

Dragon's Dogma: Dark Arisen ~ now loads without crashing, but 3D elements are solid white

Dragon's Dogma: Dark Arisen now loads without crashing, as of b91f6e2, but the 3D elements are solid white, excepting HUD elements.

Software information

Dragon's Dogma: Dark Arisen using Proton 4.2-2 + Steam + 32-bit D9VK

System information

  • GPU: RX 580
  • Driver: Mesa master + LLVM master
  • Wine version: 4.2
  • D9VK version: b91f6e2

Apitrace file(s)

https://mega.nz/#!Q8lymKJA!43INKkLuugaDD7ysqk5aQh76JpdjSeziWLtL9Pn9ZxE

Log files

DDDA_d3d9.tar.gz

Mouse hidden in World of Warcraft: Wrath of The Lich King

I can move the mouse around and click everything just fine, I just can't see the mouse icon itself. This may have something to do with most 2D sprites not being shown properly. A screenshot of said glitches is shown below (should I open a different issue for that?).

wow_sprites
The minimap is invisible and the ability bar should be filled with ability sprites.

Software information

World of Warcraft: Wrath of The Lich King

System information

  • GPU: AMD RX480
  • Driver: free
  • Wine version: 4.5
  • DXVK version: master (65fc6f8)

Apitrace file(s)

I tried getting an apitrace but couldn't get Wine to use apitrace's d3d9.dll, it just ignored the overrides.

Log files

Wow_d3d9.log

Sidenote: The game wouldn't even open yesterday, and today it's running smoothly, other than these issues above. Awesome!

Shader compiler fails to parse some shaders

The d9vk shader compiler fails to parse some shaders with invalid opcodes and out of range source registers

err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
err:   DxsoDecodeContext::decodeSourceRegister: source register out of range.
warn:  DxsoCompiler::processInstruction: unhandled opcode: Invalid Opcode (2337)
warn:  DxsoCompiler::processInstruction: unhandled opcode: Invalid Opcode (21062)
warn:  DxsoCompiler::processInstruction: unhandled opcode: Invalid Opcode (248)

Software information

Game is Artificial Academy 2. Default dxvk settings.

System information

  • GPU: Nvidia GTX 1050
  • Driver: 418.56
  • Wine version: 4.0
  • DXVK version: d9vk master

Apitrace files

https://mega.nz/#F!wYRXAYia!FQjOZi69z0sLf921baRw5g

Shader dumps

aa2edit-shadersv1.zip
aa2edit-shadersv2.zip

Log files

[question] how to apitrace for D9VK?

I try to apitrace Stalker Shadows of Chernobyl (D3D9 game).
DXVK suggests to do this: wine apitrace.exe trace -a dxgi YOURGAME.exe
But apitrace says this:
warning: Z:\home\redneck\programs\apitrace-msvc\x86\bin\..\lib\wrappers\dxgitrace.dll was never used: application probably does not use this API
and doesn't produce .trace file, while the game works while being apitraced.

The Guild 2 - rendering issues

The initial loading screen of the game renders black. The main menu UI isn't rendered, but the ingame background renders ok except for the npcs that move around.

The log file contains some unhandled op-codes and grows extremely fast due to a spam of warn: D3D9DeviceEx::SetMaterial: Stub.

System information

  • GPU: GTX 970
  • Driver: 418.52.05
  • Wine version: 4.5
  • DXVK version: 4957fec

Apitrace file(s)

https://git.froggi.es/Riesi/tracehub/raw/master/traces/d3d9/Guild%202%20%20%5Bnative%5D.tar.xz?inline=false

Log files

GuildII_d3d9.log

Cant launch WPF apps

.NET WPF depending on DX9 + D3Dcompiler_47

With gallium-nine everything OK, almost.

[Question] Is the D9VK ready for testing?

@Joshua-Ashton Hi! Thank you for your great work!
Sorry, but I just want to ask you, what the current readiness of your project? How much is it currently ready? Can I just now try to test it with a few games that I usually play or it will be better if I will wait some more time?

[Feature Request] Allow forcing MSAA

Several older games do not allow setting MSAA in the in-game options. It would be nice if there was a D9VK_MSAA=8 option which forced the sample count to 8x.

TERA Online crash on Windows and corrupted textures on WINE

On Windows 10 it crashes at the character select screen, but on WINE it does not crash. Instead it has corrupted textures and NPC hover text is rotated 90 degrees.
Example 1
Example 2

Software information

TERA Online

System information

  • GPU: Geforce GTX 980Ti (Linux), Geforce GTX 960 (Windows)
  • Driver: 418.52.03 and 425.31 respectively
  • Wine version: WINE-TKG 4.5 Git Master
  • DXVK version: git master

Apitrace file(s)

Log files

[Question] Will D9VK support DXVK_ASYNC patchset?

I have noticed that D9VK with low CPU overhead completely get rid of Fallout New Vegas stuttering (wich exist on Gallium-Nine).

Also, D9VK supports DX9 for WPF as Nine

Will be DXVK_ASYNC=1 ported to D9VK?

Apitraces of different broken games (RA3,DNF,CallofJuarezBiB,Darkness2)

Hi,

here a traces for different games wich still show issues with the wip compiler branch:

Red Alert 3:
Different graphical issues.
https://drive.google.com/open?id=1aCu-lANTJotYQQt5R9Q5TUVY7vtTPDR9

Call of Juarez Bound in Blood:
The game has very bad vertex explosions.
https://drive.google.com/open?id=1BpqcB5itNdeIceGSj3fF-Dk_Nt4AUMKD

Duken Nukem Forever:
Is rendered to dark and the textures don't load in full resolution it seems.
https://drive.google.com/open?id=1zEXBd_KEzF8XhfTB1p9BlQNisSSl_bCp

The Darkness 2:
The menu renders fine, in game all is black except some hud parts.
https://drive.google.com/open?id=1OrVVRR3pjhPi95mstrOnxK8C0VIsJSmj

Many thanks, keep on your great work !!

Christian

Mass Effect 2 messed up faces

Everything seems to render fine except for Shepard's face and armor. Faces don't render right on some NPCs either. Also, menus don't align if the game resolution isn't equal to the screen res.

canvas

canvas

https://www.youtube.com/watch?v=fsw_Onh66lE

Software information

Mass Effect 2

System information

  • GPU: GTX 960
  • Driver: 418.56
  • Wine version: Wine Staging 3.21
  • DXVK version: I don't remember

Apitrace file(s)

Log files

ME2Game_d3d9.log

X-Men Origins Wolverine

Hello,

on X-Men Origins Wolverine, the main menu miss light with d9vk.

without d9vk (wine 4.6 staging)
Capture d’écran de 2019-04-26 21-39-16

with d9vk (wine 4.6 staging)
Capture d’écran de 2019-04-26 21-38-31

d3d9.log
Wolverine_d3d9.log

Config: Ubuntu 19.04 Disco Dingo 64 bits - NVIDIA GeForce GTX 770 - Nvidia drivers 418.56 - 1920x1080 - Processor Intel i5-3570 3,4 Ghz - 16 Go RAM

Do you need apitrace?

fail build

Software information

Archlinux

System information

  • GPU:
  • Driver:
  • Wine version: staging 4.5
  • DXVK version: d9vk 8859f98

Log files

[60/263] Compiling C++ object 'tests/d3d9/ffcce2f@@d3d9-buffer@exe/test_d3d9_buffer.cpp.o'.
FAILED: tests/d3d9/ffcce2f@@d3d9-buffer@exe/test_d3d9_buffer.cpp.o 
wineg++ -Itests/d3d9/ffcce2f@@d3d9-buffer@exe -Itests/d3d9 -I../d9vk/tests/d3d9 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++1z -g -DNOMINMAX -m64 --no-gnu-unique -MD -MQ 'tests/d3d9/ffcce2f@@d3d9-buffer@exe/test_d3d9_buffer.cpp.o' -MF 'tests/d3d9/ffcce2f@@d3d9-buffer@exe/test_d3d9_buffer.cpp.o.d' -o 'tests/d3d9/ffcce2f@@d3d9-buffer@exe/test_d3d9_buffer.cpp.o' -c ../d9vk/tests/d3d9/test_d3d9_buffer.cpp
../d9vk/tests/d3d9/test_d3d9_buffer.cpp: In constructor 'BufferApp::BufferApp(HINSTANCE, HWND)':
../d9vk/tests/d3d9/test_d3d9_buffer.cpp:52:10: error: 'memset' is not a member of 'std'
     std::memset(data, 0xFC, 512);
          ^~~~~~
../d9vk/tests/d3d9/test_d3d9_buffer.cpp:52:10: note: suggested alternative: 'mem_fn'
     std::memset(data, 0xFC, 512);
          ^~~~~~
          mem_fn
../d9vk/tests/d3d9/test_d3d9_buffer.cpp:54:30: error: 'ARRAYSIZE' was not declared in this scope
     for (uint32_t i = 0; i < ARRAYSIZE(g_UsagePermuatations); i++) {
                              ^~~~~~~~~
../d9vk/tests/d3d9/test_d3d9_buffer.cpp:54:30: note: suggested alternative: 'ARRAYDESC'
     for (uint32_t i = 0; i < ARRAYSIZE(g_UsagePermuatations); i++) {
                              ^~~~~~~~~
                              ARRAYDESC
../d9vk/tests/d3d9/test_d3d9_buffer.cpp: In member function 'void BufferApp::testBuffer(uint8_t*, DWORD, DWORD)':
../d9vk/tests/d3d9/test_d3d9_buffer.cpp:76:10: error: 'memcpy' is not a member of 'std'
     std::memcpy(bufferMem, data, 512);
          ^~~~~~
../d9vk/tests/d3d9/test_d3d9_buffer.cpp:76:10: note: suggested alternative: 'mem_fn'
     std::memcpy(bufferMem, data, 512);
          ^~~~~~
          mem_fn
winegcc: g++ failed
[77/263] Compiling C++ object 'tests/d3d9/ffcce2f@@d3d9-triangle@exe/test_d3d9_triangle.cpp.o'.
FAILED: tests/d3d9/ffcce2f@@d3d9-triangle@exe/test_d3d9_triangle.cpp.o 
wineg++ -Itests/d3d9/ffcce2f@@d3d9-triangle@exe -Itests/d3d9 -I../d9vk/tests/d3d9 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++1z -g -DNOMINMAX -m64 --no-gnu-unique -MD -MQ 'tests/d3d9/ffcce2f@@d3d9-triangle@exe/test_d3d9_triangle.cpp.o' -MF 'tests/d3d9/ffcce2f@@d3d9-triangle@exe/test_d3d9_triangle.cpp.o.d' -o 'tests/d3d9/ffcce2f@@d3d9-triangle@exe/test_d3d9_triangle.cpp.o' -c ../d9vk/tests/d3d9/test_d3d9_triangle.cpp
../d9vk/tests/d3d9/test_d3d9_triangle.cpp: In constructor 'TriangleApp::TriangleApp(HINSTANCE, HWND)':
../d9vk/tests/d3d9/test_d3d9_triangle.cpp:143:10: error: 'memcpy' is not a member of 'std'
     std::memcpy(data, vertices.data(), vbSize);
          ^~~~~~
../d9vk/tests/d3d9/test_d3d9_triangle.cpp:143:10: note: suggested alternative: 'mem_fn'
     std::memcpy(data, vertices.data(), vbSize);
          ^~~~~~
          mem_fn
winegcc: g++ failed
[109/263] Compiling C++ object 'src/dxbc/5c53ffa@@dxbc@sta/dxbc_compiler.cpp.o'.
ninja: build stopped: subcommand failed.

after patch with

diff --git a/tests/d3d9/test_d3d9_buffer.cpp b/tests/d3d9/test_d3d9_buffer.cpp
index c237bc38..e1cfa210 100644
--- a/tests/d3d9/test_d3d9_buffer.cpp
+++ b/tests/d3d9/test_d3d9_buffer.cpp
@@ -1,3 +1,5 @@
+#include <cstring>
+
 #include <d3d9.h>
 
 #include "../test_utils.h"
diff --git a/tests/d3d9/test_d3d9_clear.cpp b/tests/d3d9/test_d3d9_clear.cpp
index 9715333f..aa221125 100644
--- a/tests/d3d9/test_d3d9_clear.cpp
+++ b/tests/d3d9/test_d3d9_clear.cpp
@@ -1,3 +1,5 @@
+#include <cstring>
+
 #include <d3d9.h>
 
 #include "../test_utils.h"
diff --git a/tests/d3d9/test_d3d9_triangle.cpp b/tests/d3d9/test_d3d9_triangle.cpp
index 568bf7bc..8ea514dc 100644
--- a/tests/d3d9/test_d3d9_triangle.cpp
+++ b/tests/d3d9/test_d3d9_triangle.cpp
@@ -1,3 +1,5 @@
+#include <cstring>
+
 #include <d3d9.h>
 
 #include <d3dcompiler.h>

i get

[73/263] Compiling C++ object 'tests/d3d9/ffcce2f@@d3d9-buffer@exe/test_d3d9_buffer.cpp.o'.
FAILED: tests/d3d9/ffcce2f@@d3d9-buffer@exe/test_d3d9_buffer.cpp.o 
wineg++ -Itests/d3d9/ffcce2f@@d3d9-buffer@exe -Itests/d3d9 -I../d9vk/tests/d3d9 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++1z -g -DNOMINMAX -m64 --no-gnu-unique -MD -MQ 'tests/d3d9/ffcce2f@@d3d9-buffer@exe/test_d3d9_buffer.cpp.o' -MF 'tests/d3d9/ffcce2f@@d3d9-buffer@exe/test_d3d9_buffer.cpp.o.d' -o 'tests/d3d9/ffcce2f@@d3d9-buffer@exe/test_d3d9_buffer.cpp.o' -c ../d9vk/tests/d3d9/test_d3d9_buffer.cpp
../d9vk/tests/d3d9/test_d3d9_buffer.cpp: In constructor 'BufferApp::BufferApp(HINSTANCE, HWND)':
../d9vk/tests/d3d9/test_d3d9_buffer.cpp:56:30: error: 'ARRAYSIZE' was not declared in this scope
     for (uint32_t i = 0; i < ARRAYSIZE(g_UsagePermuatations); i++) {
                              ^~~~~~~~~
../d9vk/tests/d3d9/test_d3d9_buffer.cpp:56:30: note: suggested alternative: 'ARRAYDESC'
     for (uint32_t i = 0; i < ARRAYSIZE(g_UsagePermuatations); i++) {
                              ^~~~~~~~~
                              ARRAYDESC
winegcc: g++ failed
[122/263] Compiling C++ object 'src/dxvk/1752c3e@@dxvk@sta/dxvk_context.cpp.o'.
ninja: build stopped: subcommand failed.

if use -j1

[224/263] Compiling C++ object 'src/d3d9/ecc23b3@@d3d9.dll@sha/d3d9_device.cpp.o'.
FAILED: src/d3d9/ecc23b3@@d3d9.dll@sha/d3d9_device.cpp.o 
wineg++ -Isrc/d3d9/ecc23b3@@d3d9.dll@sha -Isrc/d3d9 -I../d9vk/src/d3d9 -I../d9vk/./include -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++1z -g -DNOMINMAX -fPIC -m64 --no-gnu-unique -MD -MQ 'src/d3d9/ecc23b3@@d3d9.dll@sha/d3d9_device.cpp.o' -MF 'src/d3d9/ecc23b3@@d3d9.dll@sha/d3d9_device.cpp.o.d' -o 'src/d3d9/ecc23b3@@d3d9.dll@sha/d3d9_device.cpp.o' -c ../d9vk/src/d3d9/d3d9_device.cpp
In file included from ../d9vk/src/d3d9/d3d9_device.cpp:6:
../d9vk/src/d3d9/d3d9_texture.h: In member function 'void dxvk::Direct3DBaseTexture9<SubresourceType, Base>::GenerateMipSubLevels()':
../d9vk/src/d3d9/d3d9_texture.h:79:7: error: 'm_parent' was not declared in this scope
       m_parent->GenerateMips(&m_texture);
       ^~~~~~~~
../d9vk/src/d3d9/d3d9_texture.h:79:7: note: suggested alternative: '_m_pandn'
       m_parent->GenerateMips(&m_texture);
       ^~~~~~~~
       _m_pandn
winegcc: g++ failed
ninja: build stopped: subcommand failed.

greetings

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.