A d3d9 and d3d10 to d3d11 translation layer.

Overview

DXUP

A D3D9 and D3D10 -> D3D11 Translation Layer

Get latest build here or tagged builds here.

What's the point?

  • The main reason is for DXVK, a D3D11->Vulkan translation layer. I'm sure where you can see where this is going... (linux, wine stuff.)
  • You can use this if you're a lazy gamedev and want to get access to some D3D11 features by querying the interfaces (and get some extensions, coming soon!)
  • You write a D3D9Ex game and don't want to deal with sync and other issues for VR.
  • You write a D3D9 game and don't want to deal with D3D9Ex's pool changes and therefore can't get shared resources.

D3D10 support is now deprecated on Linux platforms and won't be installed with the script or the verb as DXVK now implements this.

How do I use it?

In order to install DXUP, get a release from either the releases page (for versioned releases) or from the build server if you want one built against the latest or a specific commit then run

export WINEPREFIX=/path/to/.wine-prefix
winetricks --force setup_dxup_d3d9.verb

How do I build it?

Simple (Linux Only): Use ./package-release.sh master /your/target/directory --no-package to automagically.

Advanced (Windows & Linux):

You can use meson to build the DLLs:

Windows: meson --backend vs2017 --buildtype release build in a Visual Studio x86/x64 Command Prompt depending on the arch you wish to build.

Linux: meson --cross-file build-win64.txt --buildtype release --prefix /your/dxup/directory build.w64 and vice versa for each arch (change 64s to 32s.)

Screenshots

D3D10 (before DXVK got D3D10 support)

Crysis Warhead Menu Crysis Warhead Game Crysis Warhead Game Just Cause 2 Just Cause 2 Just Cause 2

Have fun! 🐸

Issues
  • Build troubles

    Build troubles

    Interesting project, so i thought i would give it a test... Used the same machine i build dxvk with (just built dxvk without errors prior to testing this). Ubuntu 18.04 w/mostly ubuntu release packages.

    Attaching log after doing the regular meson config (same as i would do with dxvk) and running "ninja" build.log

    opened by SveSop 25
  • Binaries upload

    Binaries upload

    Personally, I couldn't build binaries myself. Meson on Windows doesn't build any dlls for me, I use VS2010. On Linux I have too many strange errors. Why not just add binaries?

    opened by Svyatpro 20
  • Need better documentation

    Need better documentation

    You need better documentation about what you want to say with "/your/target/directory" and what exactly it uses with dxvk in linux. Because I tried to compile but a meson file it has 1 wrong thing, the file is "wine_utils/meson.build".

    It indicates an entry of 'setup_dx10to11.sh.in' and does not exist, but there is "setup_dxup.in". And I changed this, now it compiles, but in Linux at least it does not create the .dll in the directories. And the DLLs that we must copy to wine_utils from dxvk, it is not specified if it should be x86 or x64. Because the Linux script does both and none works.

    I hope you can find the best way to make it work.

    Sorry if something is bad translated.

    opened by iareciog 5
  • [d3d9] Fix widechar conversion for winelib

    [d3d9] Fix widechar conversion for winelib

    wcstombs creates garbage in device description for winelib WideCharToMultiByte used, see https://github.com/doitsujin/dxvk/blob/master/src/util/util_string.cpp

    opened by pchome 4
  • [d3d9-dev] Virtual milestones

    [d3d9-dev] Virtual milestones

    e.g. https://github.com/koalaylj/hello-directx

    Some tests are runs fine using DXVK, but draws nothing, due to missing

    • Direct3DDevice9Ex::SetClipPlane
    • Direct3DDevice9Ex::SetTransform
    • Direct3DDevice9Ex::SetRenderState

    log_d3d9.txt 02_Triangle_dxgi.log 02_Triangle_d3d11.log

    opened by pchome 4
  • Add '--always' to vcs_tag in meson.build

    Add '--always' to vcs_tag in meson.build

    Without it there is a chance that the build will fail because git couldn't generate a full version name.

    change

    > ['git', 'describe' '--dirty=+']
    

    to

    > ['git', 'describe', '--always', '--dirty=+']
    
    opened by ComfyKernel 3
  • Can't build

    Can't build

    [[email protected] dxup]$ export WINEARCH=win64 [[email protected] dxup]$ export WINEPREFIX=~/.wine64/ [[email protected] dxup]$ meson --cross-file build-win64.txt -Denable_tests=false bbbuild The Meson build system Version: 0.46.0 Source dir: /home/xdshot/dxup Build dir: /home/xdshot/dxup/bbbuild Build type: cross build Project name: dxup 000b:fixme:winediag:start_process Wine Staging 3.8 is a testing version containing experimental patches. 000b:fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org. wine: cannot find L"C:\windows\system32\winemenubuilder.exe" 000b:err:wineboot:ProcessRunKeys Error running cmd L"C:\windows\system32\winemenubuilder.exe -a -r" (2) Native C compiler: ccache cc (gcc 8.1.0 "cc (GCC) 8.1.0") Cross C compiler: /usr/bin/x86_64-w64-mingw32-gcc (gcc 8.1.0) Native C++ compiler: ccache c++ (gcc 8.1.0 "c++ (GCC) 8.1.0") Cross C++ compiler: /usr/bin/x86_64-w64-mingw32-g++ (gcc 8.1.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 Library d3d11 found: YES

    wine_utils/meson.build:4:0: ERROR: File setup_dx10to11.sh.in does not exist.

    A full log can be found at /home/xdshot/dxup/bbbuild/meson-logs/meson-log.txt

    opened by xDShot 2
  • Is it possible do the revert operation 'dxdown' d3d11 to d3d10 translation?

    Is it possible do the revert operation 'dxdown' d3d11 to d3d10 translation?

    Hi,Ashton. First thank you very much for developing such useful tool to improve the performance of DX10 games but as you know DX10 is even not popular as DX9.0c when still many games on steam support 9.0c only like the Source engine-based games.So DX10 games was quite minor due to the failure of Vista,when I noticed that many Unreal Engine 4 games (UE4 is almost a native D3D11 engine) like PUBG F13games Fernbus are cooked only with SM5 content but if you search 'GlobalShaderCache-PCD3D_SM4.bin' on google you will find A LOT of people still using the classical ATI HD3/4 & NVIDIA G92/Tesla even the a bit newer 2011's Sandybridge iGPUs. Accroding to the NVIDIA's advertisment ,the DX11 was 'compat' with DX10 GPUs and they showed us with the "Ocean‘ compute shader demo many years ago,and M$ said DX11 is only a hyperset of DX10 but digging into the UE4's code I found that still a lot API names difference and possible the HLSL assembly code produced by the fxc compiler for DX11&DX10 was different.Neverthess,I had tried the classical DX to OGL wined3d solution but it require equal level of DX11=OGL4 which is not suppport by the DX10 GPUs. So,is it possible to make some 'dxdown' d3d11 to d3d10 translation layer for games like PUBG and so many UE4 games?I know some guys will say 'DX11 GPU is cheap just replace your crappiest card', but they don't know people are not always wealthy like them and even have the access to a bit newer hardware,i don't want some kids have a disappointed childhood like me just beacuse of the worst compability of Games or GPU. From my view i found that DX11 may just add several shaders and Tessellation and ShaderUAV??? ,I have a idea that transpond the DX11 drawcall to CPU for emulated and DX10 compact drawcall passthrough to the GPU driver fo redering,Based on the display schematic i think just filter DX11 calls and convert PS_5_0 VS_5_0 to PS_4_0 VS_4_0 will be a better approach,and ignore the HS_5_0 stuff.After such operation the output image may possible deform but it's better than just reported some hard-understanding error.

    opened by copslock 1
  • Debugging

    Debugging

    In case someone interested in.

    VS Code example (dxup/.vscode/launch.json):

    {
        "version": "0.2.0",
        "configurations": [
    
            {
                "name": "Debug",
                "type": "gdb",
                "request": "attach",
                "executable": "/usr/lib/wine-vanilla-3.21/bin/wine",
                "cwd": "${workspaceRoot}",
                "target": ":2345",
                "remote": true,
                "valuesFormatting": "prettyPrinters"
            }
        ]
    }
    
    • In terminal: $ winedbg --gdb --no-start --port 2345 Test.exe
    • In VS Code: set breakpoints
    • Run debug

    Note:

    • I'm using winedbg from wine-staging, cause wine-vanilla's one refuse to launch for me
    • With a test program built as winelib, and dxup winelib build I can walk through both sources during debug (will probably try to install WINE sources as well)
    opened by pchome 1
  • [build] Fix winelib build

    [build] Fix winelib build

    • [build] Fix x86 crossfile
    • [util] Fix version.h build order
    • [util] default is reserved keyword
    • [util] Headers are case sensitive (Windows.h)
    • [util] Missing WINE definitions
    • [dx9asm] Use std::max
    • [d3d9] Use std::size
    • [dx9asm, util] Missing headers for std::memcpy, std::invoke, std::reverse, std::max
    • [dx9asm] Fix -fpermissive errors (this-> and pushObject)
    opened by pchome 1
  • no dx10 support?

    no dx10 support?

    I think I did something wrong to be getting this. (obviously) so wine 3.9 dxvk dlls 0.54 and the version of dxup that was on here today 06/08/2018. download the dxup-x64.zip, extract, read readme file. download dxvk-0.54 in the x64 sub folder rename dxgi.dll -> dxgi_original.dll. copy both d3d11.dll and dxgi_original.dll to dxup-x64 folder. dos2unix fix the setup script, do the export WINEPREFIX variable. run setup script. try to run game, complains dx10 not supported? what what did I do wrong here? fyi, the game is original crysis x64 version.

    opened by Teuwu 1
  • Cube World

    Cube World

    using latest(pipeline 63), Cube world launches but nothing except the background renders, no textures, just the background color. image Shortened log since it was an endless repeat of the same 2 messages(unhandled render state and invalid internal render state) Cube_d3d9.log

    Edit: pipeline 64 same thing

    opened by Growlith1223 0
  • [d3d9-dev] SWTOR logs.

    [d3d9-dev] SWTOR logs.

    Hello Joshua,

    I tried to run Star Wars: The Old Republic using latest build of DXUP, result is black screen with some of 2D GUI elements, text, and some of them was misplaced.

    Logs of DXVK and DXUP: swtor_d3d11.log swtor_dxgi.log swtor_d3d9.log

    Possibly they'll help getting DXUP working.

    opened by leonmaxx 10
  • Assassin's Creed II

    Assassin's Creed II

    opened by AccountOneOff 3
Owner
Joshie
🐸✨
Joshie
Webusb-libusb - Translation layer from libusb to webusb.

webusb-libusb IMPORTANT: This implementation requires a patched version of Emscripten to work properly. This project is a translation layer from libus

Luigi Cruz 47 Jun 16, 2022
An implementation of physically based shading & image based lighting in D3D11, D3D12, Vulkan, and OpenGL 4.

Physically Based Rendering (c) 2017 - 2018 Michał Siejak (@Nadrin) An implementation of physically based shading model & image based lighting in vario

Michał Siejak 995 Jun 10, 2022
English Translation Mod for Air Nintendo Switch version

AIR-ENX English translation mod for Nintendo Switch version of "Air" 1.0.1 Current status: Alpha Chapters translation status: Dream 100% Summer 100% A

MasaGratoR 4 May 22, 2022
This is the repo that hosts the code for Mozilla's translation service

Translation service HTTP service that uses bergamot-translator and compressed neural machine translation models for fast inference on CPU. Running loc

Mozilla 11 Jun 21, 2022
Unofficial upload of ChinesePython, a translation of the Python programming language in Chinese [Provided by UrduPython engineers]

# Downloaded from SourceForge: https://sourceforge.net/projects/chinesepython/ # (Uploaded as is) ---------------------------------------------------

Saad A. Bazaz 3 Feb 12, 2022
Support for TrueType (.ttf) font files with Simple Directmedia Layer.

This library is a wrapper around the excellent FreeType 2.0 library

Simple Directmedia Layer 135 Jul 3, 2022
layer to control the global priority of any vulkan application

vk-force-priority vk-force-priority allows you to control the global priority of any vulkan application. Building from Source Dependencies Before buil

Georg Lehmann 5 Sep 2, 2021
A data plane framework that supports any layer-7 protocols.

中文 meta-protocol-proxy Why MetaProtocol is needed? Almost all open source and commercial Service Meshes currently support only two Layer-7 protocols -

Aeraki 48 Jun 25, 2022
Application layer for sounding rockets software

Lynx On-Board Software The on-board software represents the top layer of the rocket's firmware. This includes all the logics needed for a successful f

Skyward Experimental Rocketry 4 Apr 13, 2022
Yet another abstraction layer - a general purpose C++ library.

Yet Another Abstraction Layer What yaal is a cross platform, general purpose C++ library. This library provides unified, high level, C++ interfaces an

Marcin Konarski 15 Jun 30, 2022
Wayfire plugin for handling touchpad gestures globally in a layer-shell surface

wf-globalgestures Global touchpad gestures plugin for Wayfire: implements a special protocol (also in this repo) that lets clients request that a part

null 4 Jan 18, 2022
A Direct3D9 to Vulkan layer using the DXVK backend. [Upstreamed to DXVK]

This work has been upstreamed and is continuing development there This repo is only open for the remaining issues on the tracker https://github.com/do

Joshie 811 Jun 27, 2022
null 235 Jun 22, 2022
PikaScript is an ultra-lightweight Python engine with zero dependencies and zero-configuration, that can run with 4KB of RAM (such as STM32G030C8 and STM32F103C8), and is very easy to deploy and expand.

PikaScript 中文页| Star please~ 1. Abstract PikaScript is an ultra-lightweight Python engine with zero dependencies and zero-configuration, that can run

Lyon 786 Jun 27, 2022
Signed - a 3D modeling and construction language based on Lua and SDFs. Signed will be available for macOS and iOS and is heavily optimized for Metal.

Signed - A 3D modeling language Abstract Signed is a Lua based 3D modeling language, it provides a unique way to create high quality 3D content for yo

Markus Moenig 88 May 26, 2022
ESP32 firmware to read and control EMS and Heatronic compatible equipment such as boilers, thermostats, solar modules, and heat pumps

EMS-ESP is an open-source firmware for the Espressif ESP8266 and ESP32 microcontroller that communicates with EMS (Energy Management System) based equipment from manufacturers like Bosch, Buderus, Nefit, Junkers, Worcester and Sieger.

EMS-ESP 153 Jun 28, 2022
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.

SynnixOS Epic Hobby OS targeting x86_64 CPUs, it includes some hacked together functionality for most essential OSs although, with interactivity via Q

RaidTheWeb 40 May 27, 2022
🎮 Plants vs. Zombies multiplayer battle, developed via reverse engineering, inline hook and dynamic-link library injection. Two online players defend and attack as the plant side and zombie side respectively.

Plants vs. Zombies Online Battle This project has two original repositories: https://github.com/czs108/Plants-vs.-Zombies-Online-Battle https://github

Liugw 71 Oct 14, 2021
Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++, the architecture and usage like Cobalt Strike

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Young 1.3k Jun 24, 2022