From c573f68fd6ff5e3f505c8acb35449921d219e73d Mon Sep 17 00:00:00 2001 From: FakeMichau <49685661+FakeMichau@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:18:11 +0200 Subject: [PATCH] Add Proton-LFX2 patches --- README.md | 324 +-- dxvk-nvapi | 2 +- lfx2-bin/latencyflex2_rust.dll | Bin 0 -> 611328 bytes lfx2-bin/latencyflex2_rust_32.dll | Bin 0 -> 647680 bytes patches/apply-patches.sh | 34 + patches/lfx2-dxvk.patch | 1171 +++++++++++ patches/lfx2-dxvk.patch.old | 3201 +++++++++++++++++++++++++++++ patches/lfx2-nvapi.patch | 947 +++++++++ patches/lfx2-vkd3d.patch | 616 ++++++ patches/lfx2-vkd3d.patch.old | 616 ++++++ patches/makefile.patch | 21 + patches/proton.patch | 130 ++ patches/revert-patches.sh | 24 + patches/wine-hags-spoof.patch | 77 + 14 files changed, 6868 insertions(+), 295 deletions(-) create mode 100755 lfx2-bin/latencyflex2_rust.dll create mode 100755 lfx2-bin/latencyflex2_rust_32.dll create mode 100755 patches/apply-patches.sh create mode 100644 patches/lfx2-dxvk.patch create mode 100644 patches/lfx2-dxvk.patch.old create mode 100644 patches/lfx2-nvapi.patch create mode 100644 patches/lfx2-vkd3d.patch create mode 100644 patches/lfx2-vkd3d.patch.old create mode 100644 patches/makefile.patch create mode 100644 patches/proton.patch create mode 100755 patches/revert-patches.sh create mode 100644 patches/wine-hags-spoof.patch diff --git a/README.md b/README.md index cab55b4f76..4df7514a90 100644 --- a/README.md +++ b/README.md @@ -1,316 +1,52 @@ -Introduction ------------- - -**Proton** is a tool for use with the Steam client which allows games which are -exclusive to Windows to run on the Linux operating system. It uses Wine to -facilitate this. - -**Most users should use Proton provided by the Steam Client itself.** See -[this Steam Community post][steam-play-introduction] for more details. - -The source code is provided to enable advanced users the ability to alter -Proton. For example, some users may wish to use a different version of Wine -with a particular title. - -**The changelog** is available on [our wiki][changelog]. - -[steam-play-introduction]: https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561 -[changelog]: https://github.com/ValveSoftware/Proton/wiki/Changelog - - -Obtaining Proton sources ------------------------- - -Acquire Proton's source by cloning -and checking out the branch you desire. - -You can clone the latest Proton to your system with this command: - -```bash -git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton -``` - -Be sure to update submodules when switching between branches: - -```bash -git checkout experimental_6.3 -git submodule update --init --recursive -``` - -If you want to change any subcomponent, now is the time to do so. For -example, if you wish to make changes to Wine, you would apply them to the -`wine/` directory. - - -Building Proton ---------------- - -Most of Proton builds inside the Proton SDK container with very few -dependencies on the host side. - -## Preparing the build environment - -You need either a Docker or a Podman setup. We highly recommend [the rootless -Podman setup][rootless-podman]. Please refer to your distribution's -documentation for setup instructions (e.g. Arch [Podman][arch-podman] / -[Docker][arch-docker], Debian [Podman][debian-podman] / -[Docker][debian-docker]). - -[rootless-podman]: https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md -[arch-podman]: https://wiki.archlinux.org/title/Podman -[arch-docker]: https://wiki.archlinux.org/title/Docker -[debian-podman]: https://wiki.debian.org/Podman -[debian-docker]: https://wiki.debian.org/Docker - - -## The Easy Way - -We provide a top-level Makefile which will execute most of the build commands -for you. - -After checking out the repository and updating its submodules, assuming that -you have a working Docker or Podman setup, you can build and install Proton -with a simple: - -```bash -make install -``` - -If your build system is missing dependencies, it will fail quickly with a clear -error message. - -After the build finishes, you may need to restart the Steam client to see the -new Proton tool. The tool's name in the Steam client will be based on the -currently checked out branch of Proton. You can override this name using the -`build_name` variable. - -See `make help` for other build targets and options. - - - -## Manual building - -### Configuring the build - -```bash -mkdir ../build && cd ../build -../proton/configure.sh --enable-ccache --build-name=my_build -``` - -Running `configure.sh` will create a `Makefile` allowing you to build Proton. -The scripts checks if containers are functional and prompt you if any -host-side dependencies are missing. You should run the command from a -directory created specifically for your build. +Disclaimer +---------- -The configuration script tries to discover a working Docker or Podman setup -to use, but you can force a compatible engine with -`--container-engine=`. +For basic info about Proton, usage and compilation read [Valve's README](https://github.com/ValveSoftware/Proton/blob/bleeding-edge/README.md#install-proton-locally) -You can enable ccache with `--enable-cache` flag. This will mount your -`$CCACHE_DIR` or `$HOME/.ccache` inside the container. +Make sure to apply patches before compiling by running -`--proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:` -can be used to build with a custom version of the Proton SDK images. +`./patches/apply-patches.sh` -Check `--help` for other configuration options. -NOTE: If **SELinux** is in use, the Proton build container may fail to access -your user's files. This is caused by [SELinux's filesystem -labels][selinux-labels]. You may pass the `--relabel-volumes` switch to -configure to cause the [container engine to relabel its -bind-mounts][bind-mounts] and allow access to those files from within the -container. This can be dangerous when used with system directories. Proceed -with caution and refer your container engine's manual. - -[selinux-labels]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-working_with_selinux-selinux_contexts_labeling_files -[bind-mounts]: https://docs.docker.com/storage/bind-mounts/ - - -### Building - -``` -make -``` - -**Important make targets:** - -`make install` - install Proton into your user's Steam directory, see the [install Proton -locally](#install-proton-locally) section for details. - -`make redist` - create a redistribute build (`redist/`) that can be copied to -`~/.steam/root/compatibilitytools.d/`. - -`make deploy` - create a deployment build (`deploy/`). This is what we use to -deploy Proton to Steam users via Steamworks. - -`make module= module` - build both 32- and 64-bit versions of the -specified wine module. This allows rapid iteration on one module. This target -is only useful after building Proton. - -`make dxvk` / `make vkd3d-proton` - rebuild DXVK / vkd3d-proton. - - -### Debug Builds - -To prevent symbol stripping add `UNSTRIPPED_BUILD=1` to the `make` -invocation. This should be used only with a clean build directory. - -E.g.: - -``` -mkdir ../debug-proton-build && cd ../debug-proton-build -../proton/configure.sh --enable-ccache --build-name=debug_build -make UNSTRIPPED_BUILD=1 install -``` - - -Install Proton locally ----------------------- - -Steam ships with several versions of Proton, which games will use by default or -that you can select in Steam Settings' Steam Play page. Steam also supports -running games with local builds of Proton, which you can install on your -machine. - -To install a local build of Proton into Steam, make a new directory in -`~/.steam/root/compatibilitytools.d/` with a tool name of your choosing and -place the directory containing your redistributable build under that path. - -The `make install` target will perform this task for you, installing the -Proton build into the Steam folder for the current user. You will have to -restart the Steam client for it to pick up on a new tool. - -A correct local tool installation should look similar to this: - -``` -compatibilitytools.d/my_proton/ -├── compatibilitytool.vdf -├── filelock.py -├── LICENSE -├── proton -├── proton_dist.tar -├── toolmanifest.vdf -├── user_settings.sample.py -└── version -``` - -To enable your local build in Steam, go to the Steam Play section of the -Settings window. If the build was correctly installed, you should see -"proton-localbuild" in the drop-down list of compatibility tools. - -Each component of this software is used under the terms of their licenses. -See the `LICENSE` files here, as well as the `LICENSE`, `COPYING`, etc files -in each submodule and directory for details. If you distribute a built -version of Proton to other users, you must adhere to the terms of these -licenses. - - -Debugging ---------- - -Proton builds have their symbols stripped by default. You can switch to -"debug" beta branch in Steam (search for Proton in your library, -Properties... -> BETAS -> select "debug") or build without stripping (see -[Debug Builds section](#debug-builds)). - -The symbols are provided through the accompanying `.debug` files which may -need to be explicitly loaded by the debugging tools. For GDB there's a helper -script `wine/tools/gdbinit.py` (source it) that provides `load-symbol-files` -(or `lsf` for short) command which loads the symbols for all the mapped files. - -For tips on debugging see [docs/DEBUGGING.md](docs/DEBUGGING.md). +Introduction +------------ +**Proton-LFX2** is a fork of Proton that merged [LatencyFlex2](https://github.com/ishitatsuyuki/LatencyFleX2), a library who's goal is to lower input latency by hooking into Nvidia's Reflex. It also tried to streamline the process. -`compile_commands.json` ------------------------ +Speaking of streamline - Proton-LFX2 also attempts to bypass [Streamline](https://github.com/NVIDIAGameWorks/Streamline/) to allow the usage of upscalers like CyberFSR or CyberXESS in games that are not supported on Windows by those mods. The usage of those upscalers is also made easier in Proton-LFX2. -For use with [clangd](https://clangd.llvm.org/) LSP server and similar tooling. -Projects built using cmake or meson (e.g. vkd3d-proton) automatically come with -`compile_commands.json`. For autotools (e.g. wine) you have to [configure the -build](#configuring-the-build) with `--enable-bear` that uses -[bear](https://github.com/rizsotto/Bear) to create the compilation database. -It's not on by default as it make the build slightly slower. +LatencyFlex 2 +------------ -The build system collects all the created compile_commands.json files in a -build subdirectory named `compile_commands/`. +Main reason why this fork was created. All you need to do is to add -The paths are translated to point to the real source (i.e. not the rsynced -copy). It still may depend on build directory for things like auto-generated -`config.h` though and for wine it may be beneficial to run `tools/make_requests` -in you source directories as those changes are not committed. +`LFX2=1` -You can then configure your editor to use that file for clangd in a few ways: +to your environment variables. +Everything else is taken care off **except** `DXVK_NVAPI_USE_LATENCY_MARKERS`. Usually you won't have to care about that but it's sometimes needed. Refer to the [documentation](https://github.com/FakeMichau/latencyflex2/blob/master/docs/shim/installing.md#environment-variables) to read more. +In case of issues you still can enable LatencyFlex 2 manually, without using the `LFX2` environment variable. -1) directly - some editors/plugins allow you to specify the path to `compile_commands.json` -2) via `.clangd` file, e.g. -```bash -cd src/proton/wine/ -cat > .clangd < +That will also effectively disable LFX2 because currently it causes a crash. But you can still use `LFX2=1` to spoof an Nvidia GPU instead of doing that manually. +So for AMDGPUs you want both. +Also remember about applying the registry signature override file. \ No newline at end of file diff --git a/dxvk-nvapi b/dxvk-nvapi index da3bccb2f3..b64831c4ff 160000 --- a/dxvk-nvapi +++ b/dxvk-nvapi @@ -1 +1 @@ -Subproject commit da3bccb2f33af25064782382d462624c32064adc +Subproject commit b64831c4fff7a9bc259dff47cee5f94b7680f55a diff --git a/lfx2-bin/latencyflex2_rust.dll b/lfx2-bin/latencyflex2_rust.dll new file mode 100755 index 0000000000000000000000000000000000000000..884934b76091201de0f9bd6240aa6e8889bcd753 GIT binary patch literal 611328 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

`0m~zyM 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

-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�)yjniI)@^N-QxYT7qnMT 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%0Dm}wFXe!5!xshp zzDr2%FB+W@a;(rL_*)ZJpltTSd#&Il;)Fll9PLLAS(CbSZ00D&=LFjD%x2kw*(Udj zHXNjy>0RwHIjhPT%3hNuE>RmMd#HS~x`-JM19@ydJw|h4a$~p6n6@=FsG)uAx%l@W zM8D<$q4T>L27KyyAj8&9pB#;VHuQCB%P_ato}Wqu93He6rg=J&ro~eP!DvN0$c!YHixIgnWK%mXz3dew@Iq=_v(buO_F35>(J|5_;o1qv!qxQsfbm)x?g7&3kR;1a@pXCZe}q z4<4AZxK5M;g}@IHAf>66ynGoAFc$d;PQqouM{!?lfm zd9bgSSLvJ>CFk`$))4c0#CC4w92oBBtXv6Fwb(@$r5hVF$U)OIYqeG?#!Z|sbyBJ% z!s%pGM2@5n++{TURqE)5Q*sJi)DuS!1V)^J%1aM@1sck8PIHx*70Ouv%og^6*=1BT z-5Ctc$i3#0F)>I&`DmUa2jMeH-_5ZFsd%ksH*V8JYB=_s+9{V-w z#$S*K9QHvcXk+7^8&B_n=(+#%u7_bHa%qC|+aRoI8(@}(31BOnRU;K(xrYJ`rKCUN zTqo(}`b8&_NG}tWPCq9p{ZC{HJ>r}v>BT`TCl27Y9URk+{gWT3;Fk0hnFH1{`nQeo zrN(|OlhS2wC|iwP+s1lQW2nTt9IqRCq2?66Z2{7I^+z`Nc~V-O;DF#npqJkq`#cVh zk``C1rn4BB@w>!=*Gr;JBCI+$b5A8ZZm)60kKUckUMA$2psE`;RRNmfCT`XS!US!%0@DNH>0);kuVptYRm7Bc% zN!p+|`oYIjWM_Dk;62s32DM` zZud##4E={a$=h7?q=G+c{KZA}vMk_Z?hb)GFlsl*24*Ar*++J*N@VzdV;P z@3?zldP=;Rms)xGvzGS~{T*iA!zGG$bX7WEk-|atqDtonlnheUDYOkj$V}LiJmJY! zYIL+ZCgoSS`saJhhMgS4zt+-qSoy1 zPt-n%vd6!+DTOiXtYDb|BkCFHO%(0?a*c~?bK4Z>Z&^YU_(6BR$VtiR&UIVWw=vk6 zqO2fXdO*2WUzi>)vgUZ$?Y-6WKU^+l(Doj>OXW*-(xvz5GW5rea>w~7=i)+vO(7^t z+-OzkT=*Ds!n{1^Z$AM8V~6YO!scf5wGn&%5kXKkT)}CT(b6Bc7K6unxIAer&V$Zz zSzK5$^xTG~ZiE_SO$gjNBlb0B_&(QT2D|lRhdLvN%Y+O|Inw1vEWnLLhGU%MSpEFM z#?Qio(K%Eh^*1z!uH2^HQk_XxYXPJkoLF8Hch3o7;@U^$yr;i3PpqGE#7eJpn0h6^ zUz)963GkO@s#gMBKXS^i?EpR}dWk{$Q}JGF;wWdz=`=By^E#WtoYI*eQ1^j-9sUVi zujW3m3g#Ve*9FL)XaV&FWQlvhZam#{&(c%?&iYT0m|p)`6M>S5Ktq{(6Ji4EMW5U! zHGtt{(oZHSZ_*@H_zy;O-p4YcXRmWdG~D2b^E1*`I(u7OD%1BlDSD`O>7m*g_zj^4 zakG)2hbpJvBVczzz?vR(?m)aqMs(ph5xsn+AiCn5adTAMOsNpu&jk11__4x0`q_j& z4t&oPtB*i+6233Tm_!2SRQ(H--#T2Q+&T;8K?Xcm#G8NJc##a-_YfR!s&<}&fXok^ z(rKWqZsz~bE8Kp;DxTK#!B!dl5^R0n#z%f7JiX=MQMdWvXtWonk3DjQJ9o*|t;Z(c9qDn$srON3QU0QzF z4F!%eTYDH;A!+4?!U3?$sSE~IByyI=tIv*_RUT#qib>H|^~SHYF6+sA`bQ|%jPG;a zh2IP@zUKh;_t67?{|(L}xAFf#jdADxW5xrSi7~cO3fm+?95>t=huf_de4@3S zwull*)(1S*2_K$<&J>gGFIz6PA^pwbDQpXgKLai_*@Zo8ULSpeBv@OhNp2-Qd%ZP_M(kNK#eGG}Ow-F~|DM z`_a5a?j2?rOBV}ij?3vl5%|MLc{dAMqQMr0aupVluuu!W_>`A$XoZB|*MZ2wEg1q0 z6{sw4LoJYUOO^9nFP)f zVMhfn(}A@F-pR>Z3A`WOTFV>)LYyH~0k^?dLM;mjTF6<$ln7p&?j3G4JjlCUW^~i! z0%&rfS|xs$MH!r^6lof4#HR9TkITt_^A5lBU0iBF1xVZ;$l68AL*HY4hwwOfV}=Y9 zQQy=S@P?J(TDhq2atU}#t|gq6kb?BCrx32Q>PLO#C1)Bb?@cVKlK5YRb&tn<9n0{) z)zgZxJ}&8$i=6P4Ue3wJTRpiua@&ix%*!#k#&SkS?x~_y9&<0WhTxOe&e&KnX|gkB zgeYeG@yo3Kxw}PW<7=`#kI5mNd==v}Z|qtYk}{M!L>o; z=jmO0k(&`e`mae9dH0S1wKray2$q1p{9(faCL-s&Kz|vZNMLH57P!xV`yAyy%iL$s zeU`h=JZMg|0&iWwGcO>Tn0>s~ewA<;WZ(aq(mr7~JpmS;%0SOyeJQD(@4moX${7aH z)b1fSnxvfMjT?KEtOwx{SWo?YxgNq-LT+jZBkor?&$yv}Ld9uZN^Hajrg+xw+X?xIroJI1M#otgZW@5E`WKVv69ckayNch=5f{8sPGHZt0H z3GVb78SiidiFz+IF4|=b&3MQ_=)34$V`%k5oDcREwS|9Ev@P5pA4YrQmzsNJf7jP) z`j!O<{RfUK2cTz`p=?d_GWTW4Ql5o%CWEe`E9`R&d{MAUBO0N zwh=srF2Z{u;Jg!X0@^IeSLqDQS3m`r73RrW0sHhRUEvI8@i8gQPicMsNKr2 zhkH+*P663cfU`YMs{|WzGALY_a5Lf7BEN+L3__+?cD0jufmFIY=OFrt+78|^S$Ih2 zlzH|kvd|r2rIlT~EmVr^=6G?wvoNP3RGhzkao6-|)A|`dZZ;w&eREGbHMQXFnxi~Q zBkwVq!bF8GO-4I>-!NZ~U-7blE&ergXZ%V|qCfv2Ldy|pYCbs>3814?6ZlUhishX& zDuYNXoH>PtO$EUIE@laMM1}Zod>Wo;d*(HY;2mrg!5I|>44F?)D?jC}B2wcBUWE}E z;3brF`{_5SNC5)a90Dj6)KZ0i*=rOud-nmFJ!Wc}eS~^dgKPKEI-%Q`8?%rY*?$4H zEF1NDve{efrCx=w3g>cNwpEg8M*IYu`})ZoqH(%e(E~oNPF$_=S(3>}6x#Z-6sXCC zH+dDrlTp+*If82|PsAlAdxth4q*QkOR;f&O0piBL5QbPY)e3TxkS_6wqdyyYc8RLt zB%(wS;ii&exV-bn>#)QtV3Ht_$}DS+bOYf>Du0}c0H#nFDisCJ&#@;GTqDDNUBLHK)a=*kGL^65o5MSK5RC} zjEas4s0NM+$^#15sN`k2q6esbOc_5nRj4>YmjqR*uRQl_rur&$ziQQ2!2Oz|zRKLM z1<^>oRK#C2(x6|YR_KFYbrg1Jq=|4UQ9k2T9OVyr#i;EV9q5?k*I{MhgH>>kw5SrjkNJA z$caW?<5&KST+X*j{)7CA9|BEwyx^w|@|3ziAd06IQ%_QKxDiJZ0mt2dP6DD48Q1*d zO@_9-ZHsv2;W)XlEEYBS+nwt^W&sFscXZ*f^>zm3S$yQb8#U4w6RAmCiLcMP!FLec zi=d+rwA8BgP?U{Am9huxvRxg;_=Jw)SD)9V9|Im13mN%i>4u^+)%f9F8LO`+k}h$R z`k*mUXTTm9#o-b0F|^q&_iKs7)7->=ODb0#s3c41d|9EM=j1PCV>nHRvf?9xy_V5F zdU43Kw&f>qcFv+3PuCvs{TNkJj?|Z=A0_+ zuEZ!Y5MX z36(k9fY`>vBJ4!F==6%QjX;n)w0*BEOQ>7 ztb%VxqQlR{Uo?-@wu!`D_+xiX%ap)+ zB&R~1d(!Mn9evVsn>4%kJTq0DerizcjTo8gB$2H}u1#{1%DGPo`D%?I17(xU%FgqR zO7d3$RfIY}(E$NTA!RrXIzR|)Q>LV-OUhC!0pC#piZ=Svo92FWL^_nD_`XvV-v#`r zV`*e1nqQr~n@j7CCuLih$Y$%V#-65y8?(YJaIT^ywPn1;Cv2>e0CZ_7wJRjxx{X0u z6I~$zwX!A}4vi(ZX5Tbg^8!Dyo20yH-3z9WESN_8mx~m(`^+e-^8HT55>{uMmB^9Q zy5-Wk9DWk5OQkepU3JbBP_CEg>q9w{5E-Yoe8^4f1H%I)!g=X_O^^fM6UCf_`J6Mf zw&f$a;7VlQbVNQJ>I-x?KE@#0B&xL9HN4dx8Ve0&gA`84JTyj4LF}LgMFQ8m@)<4iM zCE2=A>npACu=pE0!+7KFoDsVTFrLG{uygU@HsHeL^Dm|d&uC|~J1cn*V1q&_uAs<9x7P1}LgW5-vSbkgLw|^DbOP zpg7#wr0&q=L<+d|=8Jk^e@$|{o_t_>7?1SI*HP_R1x3BANuQJo&AQ{c+s`FuXL;9vN(n;A*^OR6k za2g*GUxnZ{3VL7#Ias`>?m`BFMoUF{!t#Iq>VL-&u9>XP6hcgpB2br zt+-hLJT?o9nr7YzSgQgudE3C7Gw~kn5YF|zKsz&7xy~e71a%4xD3;Gbdb%6ny9{OC z$DGO(IuSg)CGEqtgQBuokuGseBhHh=DY4Kc90E2aiBO#52=OMbb)U}~H1Y&Z%=|Rycp!rN<8n_velo4015zE(oq(C|e)J|Mut)-Pa1*M-Xy=aMT?w0y|DJa5)kVG9sDOkQOY ztUQ0l_VxPINwyOP3_WzwXW#9MXY?=)_`yV@VT&ZV%o=;zn((PLy%UVir2kpgW6E3u zP0d{3E_`Fs9jVH}guBnMn=CT>Z?qCgFDBfbFuhRUIx9bPJc7~*c;qKH zq^Bf_O2f!hy8(%7dTa-k2q6O2skA`+{)x9#56XulPL%u9-kQuMsM&rf0XE^B|HKkj!m@yyWMI3O7^L4R6_u{~N3;-b6P&$v% zhuirPq@*Yx70&GG3Kh((eKH~WRXE|tTw#Z#{)f#b;GB$q zMCIIQ=8J!>Co%Gkrl+~6_5Te$g|7TJwDfzSrRU~DOTX=FiSupMO2HSfiG782Nq%#m z`io9-0ZN0IjiK4)T3C@+K{M}ydP1+xw1BjBv0l^6~c=0^NfU?P))8qEL z9IPaKcKZ`vyp!C1Ur+p5ZojQXKGT<@oPUcZK9S9nCu2@enQ!z`f!CJi}?z3DZ3}7@nTkl+DyJ^w<=Zht4lw z6;|bAQ@=;j{5d^WQ%%FKd9x>W#<>lwp4Sx7hn?<$;EHa2m}Idl#Gh{EY4l;`IXO(Q z*^))TYE2krO%GH!zkf~fMfX_uknrrpvXkAJz0N~-!%~z z_0y39ZbWd&lh*Uha-DRrsh1=6t|`t(OJt-b*~iKLZ7udDE(kHW7Z*v92birJWWCM~ zP^7t2X?B|UWYCKIkqOTe-Ek%cAy#Ezy7Sb|WbjbR6(p7xxGl+)=XB>c&H@yPDf=O0iB|M5q`-KFpH?36$KOX6`#ZZL-uYo*X=y#xeFn ziWqBl){InlBG-M0hUXINNp&%3e)ELT1+t&@Q)$qI@bP#*j?&^W^X5cL%+XvCIoZ9O z)y{aMuN|8>?s2Yr(1mG|720Zv$Vo)>G)?ti^Urg@s{(kHp95YZ>in z0QB`4PA$?DeHDA6#hSi~UHVdYN|}o~ie9g~&y2=IV6|>xtKDmj^F_Xy5*1dH61tWZ za#r&EZq-W#Qv5$m_MB6!x~d*2k zI7Po>Q_T|=z#4~-kPf%MX0gvKf~d{A*=^VMx;=H2Qb!UxKE)VaA2Nqz3J52YiupCWazfARH(czb2BVG2WMp9w>d5F#r=fH6O zn?<3=W^&5dDBU$C5h6Sc?jGk4j`%*|Vjgwi z8cz@VY~L>T@ckbXDSc?q#+ttO#YY$~G^<-6lOs>gRnYr=QO zJJQ-@fGAsqQ?oTVKBkb~;5g#Ov=h@C3Sj!EB7%pc{^M_^?ueZ9;rKwljL1JpFV0e3}HNEk%=AuL94il#?6RL5j0XoF1>F=c~aU5FX7B`;b`5g)yPgUco6$hx`;SdQ* z5(&IWG^N(G*G%7g;7;70;=oht!$XjqnIDZksL`PINM_(wt66Hm1%SDT?(H*Yyc54t zP(B0CO0RY2AhryU-g&$-8pLD&vq%!a28n*`p z8R~BNck36er9{SWhh3M7!x^Kb9p^`?0l_D#;i5%ng#6wT^0UWrbJvUJncVl1ZgTH9 z&+Q%#eQ>BC6t39-tpp0f2E?Doc9LmdHOhz8K6`$u>%z*Om}ZaRhV{Cyn)rHCU4g7U zi^b`O8ea?}F1BPCHA)#cesEo3y;Fo|n1&~07Q+9H#@Q^4)_NGUrDMh4Vg=oPOu8NZ zI3_M$pk9}-agt_++f7CT#IMe>{*zhST5z^it9`pBwdaZNO==N0W;rnvI>i^`P~mVL(3rNju)F2c3S6Yzo!LP!ag0ZSJHxIABiJi#)c6~ax79umiT=9^7AU9T%}wZ%t=AfHy3Tx8owH4;HUxR{j^byMQRIX%cF7Zovi-1H|6WDV>4`65^eg zM4Or=Wu8iz>=?3_GnEfeSt*Io+!cQ(N!m~jRSw;sD6fzE!=2p`eH^O1l!)jdM!kQ; zd7ldFVg#t`eNSAXP1SlfiM>MsMv7)Sh zO7lOXyzLmZm2`x!zz@~mQ|DgP(}ES&PrJ*{@5=woSRYYhc+}iC_ZrD>DKAGfF356b zEme>05zk(jB_g15l4S0y`x6*1V+CVdPrj@q@~#P?C2sl1<1w~;x_a{7N!}!wD$#Dm zA{VAf?MujSUhE4O`BFk@ac^W%MvA#7)GaTH%S7z^qPcsyp_Xe6AC0E&%5V0*-_V6- zJ^Tjp)y_zlr!E7tz8x#-znQ{z0{tkS5Iz=viA$>YEZ)*}=FFMnd#*Tod`mrlp^F;3 z?te^D1Ao$o>PUM$zSP{oMZgT4$e&L~w%|73JNE|r{!SEBiw@8Kx^;>9{^C|u(B3Of z9dDI_!k1h3ddyRcqbhj!74IL9s$g$qi+AL-!}E3`-$jNCVK3^)-6J&(l$v4}6O_9H z_l75pu`RI+`RV~k0v>7g-@L|rBg{e5TT<&!T@(HWFKJEh*8kzv`hQ+xEExc^F!y<$ z9(9Qk*+*~dTQ@en8xu>JXsMF&Sg}4W)A9cN=K7ZQdfYxm9wJss;Z`tnzX}{U|9%1x zPwI_z+ilP2?%>-A_M9DDL2$pbgNq36e|GQ}2p({D@Zj#CxW9qZYcx1?GYaKHbcuI< zQ_NDxA@;uRWBaH#OyrE}45} z(_P2@RhAt(OY4Jo9W&O2Y1bc&b(06Q9PFRE4g47E-e~!#Kgzjv$0Vr5~+nMmhVq1s62HQ^gxydn0n8*r-xT;25U`Ws>c zpY3Xv3GP}0r?Z_b1T){(oYS!H?L^_g^ak+wECiy&^`6{q%!zrlBmBY zjW;3q`g_uO`=NUC@Mfzwj&wIHS8x4!lO<36Jp)oU$3bYXGiq&NJjN-qi7DdIPBa^Tz}=zyh^+9v_6^8iQ1)C{AxdL+#zS=Or; z#5(;V!&QZd0IXhE&Z!sS&+r3|ugXqxvDj0c&;M~=b3E>GKlO74(Z;!C_)~jYXa08f z&PopRGyV`i)845abqmMCYFE>a>FU>+v_M*uk*q;;&xein%UY8|t@mdr7raSkNYCDi zn(&M|={La>9@2B*#v+2_e41Y^KHNZ?S^LTgcv6;?^4S)@(b!JdXIt1|l<{QcZTK?Z zi_iFZ7)vS%dRYQ`Sf9eL*|G8F&#m8e`~&ky%g5(^Z;PbPZTViyeHmD)I2X+BoW(VW zDfQQS{kbO=pXoaIkACK!8nfZ^cM5^5Z%IT-(Dw=l?Qt^1Jhf8|!zp#L~WZ zL>2YP(Alrg%H2Vjd6erX2TF-tI@wP$MVik*?TjHLLxY18}C6AvR1GZEAx_Jh^pVBfma?)=eXqwn%KhRaz9uFjy zfV^(*O61>gZ6bgD2Zk{0;%&NwHn)UQRl@5V>PeT|aou7bb+y1;5!dv}JJM?Be~0m0 zY#yb%#xfimbj8%TS-<@JKHVeNs{(wL)n40A9Qo!(E5UB9cocW$-6f>rU%XY&s>Y|; zvZFq=o+; z8v^A=7QK~%DimGOeoi%ia5}PGHX;Ub8tILgTxwtkzrGJgs?5*M+uPHWNx>f^TOqb1 z;tw>MLWA*r+=0w4ehNe>d)6{>*SECn{wx`k?0!eKtPyv(!L}*~G8DT;d6+ZSV5!Ut z2di;t-)|KrL0p>D%(Y6*(|Cag1jH16SEN;T`Hdyw`nto2o+k;zADQ3wS~J!lB$*R^ z+e$OBPvkf<2kt&1m0G~D;#%Fstc{n*Z6ya&A_q^S@K7F@h8hje(gGYUV_bYN9T}(b zzxWo--D&tAdtyf8F8p&P>eY z1nt*107d)TnMjz|^zeigcXZv6S{uYO`IN3b?k?2e@W*mWFwDm9^|*|P-`V3I=7wmA zBmM5}8pa;)xZYvJg+0FhHb|Oo=P-lJZIhfsRoDz4d1is@7-k9?@|%~YQ&H&Ap61B? z^CbuIgVE3c62O#;ODAO3;|Ir3E|Bc| zGvV4pIZh%ra(`gI>}o2HZ|;G|X#6EhU;D!2kPDBA6wH#XH#~fk7+B8kO7^VAcXYeT zVLdL@7>&13Ui@L_yU=y)G4eY%%i9lmlieA+Wb?+ApJFK>1F5#^1RL-HbxyezTNc)Z ztlTQF?b~##M6VGmzi+aOu9%5l<7E@!%=^}vuGmP5ROwU>o%lSRICeR4RHbTB^(9wT zrK^g`?XgLPULl2kM3|iS53h}uY;G6N8zs$@#d-hN_!W(?iT~5^)@aEF7AxV^9!t+m7Z{zc(y#Y3zV{?54y4^X%7LDKh3ojRO9IBO%ugb@lQJS4_&gT^pc>51&Db8p7;A7zL z%0Pi3dBXYh5XZsBcQ~7gnc}Py<6<$S5PQfZPbzmxS7PkAsYqA;(EQz4mukN8z3m(C zx%Mf0#%etL=5Lqy7gEE1b4&dW@%sI_@R8UlNcx4eFb=H-8cR>p4~fK&ACb6GkiC!b0nZilhDH|Pbz*R&*#im2vWf3b?2wbhZ%tQ;jRslkG&bAe zHYSZ*&SGwVnx>gsBh5)-Zm+w+-zPYlBJF^=Nt?`;?uxD?u540;xzm|LT|o2%DG!rQ=;%7H98MN#^~9^V3=Mnmx(hc@WXkS? z0x#{KPMrO)mH$_o6Z;wO8>J~u9w?3-hOy|+EBLH%J|vBD-(oQCFbbYcYdH3p;Q!X= zE2xe2`!r+S7%$2mJh0|(AJ($_??ro!NSLy%5iNi1pWm!Zj^KIa*Js*Oug?r${fuNR zY7LEaM}JEiX7Y1?6FHa`{-wFg`LFZXdVj_lg)nNi#{UyJW!hoqdN!|^wcV`YKcE>m z)@4Fh^{3Lq!?%sjOmX*5&C%ZIXhb%^?0WK8czsq%=u1}c`s_%vk837`Ep-?zgCZw9 zbMJ|KkQNS6>D5x{Y&&>;7I%o1U!UEpY5izgXrYyA-|cCdaTr-3be=d$ncg)AF6)VZ z#TsJIXycT_6$l00^J7#GV5Skz6wYvp=MwBoa5ugV_tgP^WYKC-nRcTs|1;^yAOH@L zhx^5^;bE-93q$Mzm^&?8E)W>s5eo}8c4|Z|Kx8rZ$J$7dVCCkC+J!Qf{`j2)a}zRC z=2On&)3q@|y?`gN-p~AAiwrHM1t`B~!dYQmr|{bq!hd{+RS9mtGSRy`UbNeY$mu%k z+LjMNu9D+G?$paLl(;N2JX~Wa8oD+C!Bj!+OM={AIcluK)k z#_!0>)=ZfoV+IYUf7vFEt2=(1>ipo82Z!+o%_G(~gmF)M$GXu|)N%2SxfhNI9~v?K zoq9fs6F5JKhO94|IhRHk<5DEcVE|D zd+oK?UTbaR$4$nR4oBr7i}J2@Qtm#a#m1;xa^~FKB-R*3%~@Q=;q4G(QIsIus$kvc z(jBoc8~LQ!;jqf{L?26x1LpQfEEO77U+*+qoLm8JcstW^RdaTHBwK4CCY<+4lK!z; zCrv(O3}ujp%6z%Ld#S5?P`ppH(G3UP>;L%r?ge;xD~2~&du+NLcx!@glk_yBL*jjO zzh^d=nJo>zAsYK}xUU0#yC+8nBYsHe%O>PT-@NesPDI0J!X>CP%$6bXzV`XE*-~aU zH~7{hJDnqR{)y1}hpc-0*^9^bMVC=M>S(($t3**5`-ilSSnZV^QDMdmes~UMBS!E& zK0r)iN8<a*jXlThh{#WB+rQt&a2eNGJ9%J&1Pv9X<*(>-;;A7O+<6|4Bjqm$+8KPg!mvuve zlrn*cx1<}N9wQhfrvxu=nT*r2Fml}QWG;?WVO2J7hpU`7!{nl9Zd721Zevds|6@A7 zpr7j(yv%FjB}XUmV>RngUnXr}OSpm=+~VsW&hEbNRF4hhC9~7x8;#-#ZEc5m*^9iQ z^2o@D^XkaVtGlhY>SZN)O{mg%b<6P`Z+$XF4EClTiOxCh6xF%h7=X~V&j>Ce5uVeh zNt&si)7?TB$JaDMk?7ahNUr%*-Yh!c|Icu}7=%QyVwNpd{8f_eQNe-`&0Pf6 zsEAf4zCF*k$hF;^i;Ze5dc$gT?6IZ|IVFtU-+p|5akoyOMCdP0-{P}V=#ujQsN&;n zYkrB-a+c`HNr}r^Sb~c~$q?F&aal=0;&-I{My3sSOhwO7t`by-Z#eVKU(b0o^__@* z2I8$FVLvx9V6)H>{}qSOB}~XiC7c^{`|z*C@5MUFBBF=u|2os|Unifncadw$v~xd6 ze9+mkC+Px<|KFSi^P;;CBcgERGnU;~89BMGg}?lC$j@tK{3-tO&E;3dzxj%M=w6x{ z_VH9A*8m;(66X6xv$cBPWLuQW6Le?UuP%nYvbMMwd-L#!c(0d7QmDqEzzgO90!3IA zF6#zQl4@=1U7_`8|LbHKj=nKle$Ydlh-T=Um&^EyE%6ck0KE}CE;8#26mEAw>@D8T zoB7TSRMQAK9z|Y3&`yn@&}UQ>fV@oVD={YG^w^E9IeNRutWK-)RDC{0ecOTLf)v;_ zM$y+}pD6JsTBUWyx}iH%?@?jWTTlM9~iI-yLgtHVkk$Br>iL2tdp`!a8X!?GxDLJzR{=U(dG@oywjXaMa z??wC7)m974*2=M#Inn1RrGy!A8E1LCbBC)P5ZN%N-Y7UV#-xxzyA z>W1jEGlj%@=pjAc-W3{eFNYp$yuIY^f%qE8OO7|n{^VtV z56+A~(mrI0?_R8+tZf<}BjU-xvZZ_nm*yB#PZaN5*-hgzt&_%&nwa{mbdXZML{G_v zPcePV_>3GH&q+*W;t57(?W>p9Q=KEaeJq&=d;?Z?!R-P*BDN7ABXF%wrM}jR z9(e*T82!Dz{!;r2!b7cXk=g^1%6$nsvGH?klf$2{T0vC__GNe19_vLV=E- zY;G>l#W&Sudp!(0lJb|hI_srtR+Ea)|0%uMWwn{xB$$4&|Gl`8$_&1&CcYgw6~51f zk8nSze{r7mkcaU2HN5a0KGx(wGDV7BfspSnUb2>O>22o6qOC3Q6;TJ$R(pIysz|Nt zqkm{!{~m`0yE@EK{|NUL(UdcqfylAhELHwN_SWrwS9ia7ZVQ`C?4-Nr*am{B(o*{6 z(c$Vm!kH19s-tMPv1+&MeIDc>3AB+79Z>^({8&)5Yg;@@3zjdRh=ydgY6BfO>Y$R0f=(xVy z-&O&FqW_3N*NYCYstb~Qf;>)|JVTI3K)?BCh%+Y2L*(Jq>s4Yye1Zw*-nmj|nSEA>e<9-(-HVw!_Fr_M2Qi6)o8Xl9%?0-)ujE+{*U5Ydg+F zuE@v#Q~b6oeoH!h^HOcq@}xh-z8pdE(fH-*_$|Sh+heSH7hHj1WAzT1(Or6^SoNJn ztbVuNn2?)gQ-QtJWQ@WNLE$B4B5Em*>USzvW8CP9e+2y{5 zP--kTLXQK9#lG1<@P1dU8yPfwwZ!ziz23zE6`lhvH)zM>^N7l;Uk29iyNxeHqkpi! z1RK^l{Fm8mVa+Yh_~=x^Hzi?SG?b+I|6f@t6#-~KrYXS&65V>?}Z-; zcbh~*E?P^_{|qB&N^@uDi3fc@8hL(j?|P|2TVzaY<2uZUv%zddFv+v)eBKdkAQ1#zUYGzVKw!IgQfAw#yH}-PL-cdZa)Jvyk7%^W;g)MGW)%QFksuDVZS_}y z#i_?X&|i8#h8sxM;$v_8QU?oH2klo}+BJw=<# zoEfqGyn>#`&GKE8$~~a|T;WR2XmK*P|Cdr9`idWNoW@-LK`Qak`doWzI+KZ|iE9#7 zAtoBZb;!I#iO$S3`r4evBU z4YWl=LI&68OP8{ux1`E#mI-`vs;|gAInO^MmG+kU;db{g zO{M)gY2)5hnk(xEOPZW$-&C5Vl4g{ofw<9ni7u%>(eoZsn-`aiEs3R3I=Ow*dx|rH zZG5Po@ek#3ugvY~`nh&`XV{+D|G}e9?A=(#NO@Vw?=u7=K|Gwg>(7yfIimhlDgOmS z)4FVmzf&^delNbH713YXCWunnUy|wU(n_VYZ{La`+HfFT4)b2_V5sXSLh)6dEC^Ml ztl1UOlMAK2oMSFoJBTS%#6R>*U-@T!>HX~#BnX>Iruw zHf2WeN}0Ol&hRo92EAB&H`gp@(;6rpv)F$hjtt^?jRoE8lEdb^a2WM$E%(?mfnnB? z*?dGe^xZ(kI|H>*;nQ}|Yb?N+^yMBLVc;lwyyb0+uHg)lBwjfH(|089cbzLHhIJ*| zP;23&V3cp0UcB@89@NCeTT&tt^5KCO9F7h-!3v7yDGeng)0l4Iy5Hy7!dR{?a55M3 zy3K*jPX|s7tMNF0AJ0$jXXNchc{>5lyD7nSlT5b-)A_Y6$3JkK;NZ*nQKPHNTIOOG zgZ{;W74Lk(5x!0~sgvU0Rls*|QWlv|A>%nZeuvrUAUAoc`{Bxyz}_k@ z_v?Pa0rQgVzA@IWlyDH-i{*Uas3T26_zVpa<~N(2R^vKHaErgU?T597bDIWpbD{3t z{_NmlZf(q;;|F^5nfc*rasJ{yD*vIH@!>0Bh?fRRb87q-V%$B!f5@tK)m$DZy<)L{ z3=2C#;uPZQm@UF-ja7dHk+IGE>CxE2{TbW_^+6IJj>;(3zg(=?PEj?FFet2iV@enM z?)pE*|1~!LUzSyG`tkSeRj(1}?X}*cjKEejjK+^za%+#`>E%D$YBB2GaBQb_HIcZ% zIm>jrt!yT125_*^JlT=4&auXUJ({ge=7wACO!bEr7X{4m#3nIrDS5X&&w3|3*J-^0 z(T9zaT{Q)a#*jd1vESc+`Z^gn)a@m^s`F#d3mR+%WXUeW{5KwjS%`d0pNlaGbsMWi z2Q@v|KsMi8Qq?ucMB-4joNdIR6!lVniT{xA3dH1MB~$mZ%j-EQ0|6h9_r4q?Jx5#3 zUWi)O7kj0Nmtxtwt9o#Jgq+xM%PBhEd>f?QxwLt)-#MM^j*jY_k~U`Q(*Dg;$<2&s zYHmhrck`l6Y%Ked+(q(+T4y}Z-xvORc1c^!;6SNk<0AvAo`NM+EQl6hGob9q|0$AK zi(^~SJAvAEEb)EUIvR@`iVmmuW}4u_cTHK~;lACABg@&1_&?`ZW>JT4YRNk_69T1I zZG5Bzt^RYAjS4Ed@vcPS)>vzvvt_DFjKf-{vJOLU>bos3io4@yp}}ae+VFs|j#NaW zlcgVAB+F?Irb)s2BR`CFYzir}gxDt1* z*5WOZ(oDA7jHgjIEV%c9p;K0N1tgJbBV)HKvy~To#|symwGrllNr98^ExpvJdoUBd znECM}cT3=8NA-BIH#R@Yku!sj`kMzQxlg)}+QO}GK6c~rQF1WTlN)d9dR^q8Y6y2t4^?Ba8h?6*^WMAO+=c>Lp{T{}K= z>}ve1*UFRE!{M!?%RZ9pbj##C1}n?j1I0Tr^oThBLK`?{{zf@_;w8tAp>Hz1`{mm0#iq$M*bHj0d+dyV^=i-T#=mBdOkoKFjV8c;@&rn=W*VVe=0m>=Nu2m&kXa__-h#2DI>bN9;V_ zF^r?_UJp%HD5ZZ&2lPBjx8=Sbs{CT=Y37SIf(YNzcUqp*532G(kbw1${~JAhGBjFG zy~}RZpD7`cpTJzH-MkT8L(ckjNLtL+$CCBL?`Jj+p{xRHhr7{NY!5|6^d96>ijmIw zZ?zjau>O4Mi6eSlGBe+%3CYg&jqGWSZ(y>+qwSVx5oarIE=Rqfk9{S%oQ7qg;$S&x zO{!Z1v{8cVJ;lHOO#D_cqvZL&`zJar`6q@K@=waCCSP)WMn2@c)WN{awYC*^ujM9) z3A3Fw*@04**Ed1D9f#SS98jMpoy?4WdrFc%20)q+7);2%3(wya@1yItoS;s&W^=wP zQ2Gkcv)|4mp2Su*VOQ8eIZAfdTx8UFa?Gx4eV3YDGyNmjmf>T}uIw`1m0hB{GSu%= zT(LvciI;#a$;VD~b$6FxJ}Dcv=zsA^7jkP+RF>#&a#W_<`%UmiYwkx1NbJvU>d{IT zoS~KUB(;(?(?la_?S6$-n{CNKv4dkz_Bzm8S&P^dH@QARc%h;GVX`UP!lvx4jG8Co z9^H|>m7yEUu+7x1T}e&ad6UoF$a?H}B+XMq#h%=w(5Vyiq9;%ivyF>m0yeG3o>A7j zGHZL-tt;Nm!Vq?`99UdUbG;Lz!jd*L5s-#a#|5**y8@fCha)@@J}-}W%2#&lnzq8T z>;{;ET+i&ZPMa+o&F=BWY6CjSDtL9=7*?}`s8#bw;w*Wq=GH*z(C_(g62*5pp_*l# znpH321EfFSUa3XY@Qsh*oGRRt1VfW24`WjajL%|f^0igsas5`R@*1xgDu zXr~c;haR;!3mL+Um~{M%j|;$4@}q>|mX8Puh1j8OPu*<<+`m*JPIkjGeUU)o_*4_tXdHW!$GUY8fWu`fuwk_v4S>0#l; zSEV6r3SG68H_g~q#)=a??-?;!oRVl!y*v$0^d*K=S^p?o=-60t3F*H;;`*gF4}N1} zS}pqo!PgN%(sC9`La~!fiVFXhp6~?{#_s1UsU@U2+hO0>V8a?`VM-sRhgHtPJ)vw>VxI`jq)>WkTB+Z+6U%b+g2VC@8X-B@j^*=5 z8t~(^q>Izby^jy+4Y*elCgi!x(-W5SAvT9UIxJR4sjQO9O@<~{$n5m=D!g~uGOyf~ z8zp+spbpn$^uA{2JR-PA z-JSD|pzKA>&Pv}+iAEgeAR@UoxO*BAe3#epVK#F5C8c+nTMRq*k>bmgln;{qJO#(n zW*o9v%mxsasN;D+)xg89e`A*s`*G^?kK}WeOrl=#_v|VM)ZZ`9S<$6-a(WkmD|Rx$ zQAn+_6D_LuNutd71p9e#lIkWWGZ~@zuuw8?gm1}Ed4;3uh>uL-HQ!DwG%46WmlUxp zB^fWYC!x#b)u$}>Yl|7)+58jJ_5aDgc91XsB=1iWW&HX7L0JpQE53D?GBKqL{78D* zv6*l3U4G?T5>EaeOiP=5m)?iuyEOSs?E}Z@KFK$qXqDR#o!vIG+dp1OK}E+2*cn=T z5LHXVv-45L6?Yfy8QM}a8S|+mW&Mfd2_f2_eyER}X>J~;n|aC>)(VNN(z3_Lqh{AI ztnYSb)C@HnZ;N=b`vUwE+5W_1*|DT?pMvwge z`26(brGohXOXsJ5q_F?l`DtD_6Jt<4Aone|c7^A11-6p|r5z&T4=I>g9$+H4?3MGFO@S1|XH!T9x7C-)J%yGr(R zIikF%%MLa?;F%tIpv~;gt$r`wxYnp!;Sl$c5ge$MzPGg88dqr4EzNAiC+wq1?$f2j z(x{#j9#?1{)DyOY{f)ZmS)9eWJKeh{>K?8VRXm%1XQI&W$L^*%Sh1VUneLO;?$jro z2>BAbhCdY8c+lg1k9EE|D?P>4l47)^pqIrBdXOPT5LZ~&d#rM2>I&R6e)ApC@o!eL zNAsT=sx$Zv8#E*MreJaM5INWU_W9lSb1p$J0GGXBi7|xPeU5DfA@=xk_9aNOJ$Ld^ z<8kH}jhCcXP$maN1eLX|)Ds5diPP@z>>(B1OEKe;I*^1H1WpEgZARU!BUjEkS~I|E zJ>5W55n>?Kus~1i6OC`%D3!k8kXD2q1P5x*I(^8u&yixZshR?LHz29PVzTM-Z+Vto^Ur}CC(HwQF2o2W)#@V{MEA?^-y{)H?#qJ$4Jmw)ng4z%Fy>*q=?s|(`9J(V&>)xb=V@ct=c{#_*

%Z$_v}=HglWNh71kc?mK~U4>B9fa6uw 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 KUe9DjvV^GL_Rh=6@=;Rm}es<=9)5j7>p4VKE+A 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
  • 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%0A7?<^@r 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 ++#include ++#include ++#include ++#include ++#ifdef LFX2_VK ++#include ++#endif ++ ++#ifdef LFX2_DX12 ++#include ++#endif ++ ++#ifdef _WIN32 ++#define LFX2_API __declspec(dllimport) ++#else ++#define LFX2_API ++#endif ++ ++typedef enum lfx2MarkType { ++ lfx2MarkTypeBegin, ++ lfx2MarkTypeEnd, ++} lfx2MarkType; ++ ++typedef struct lfx2Context lfx2Context; ++ ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++typedef struct lfx2Dx12Context lfx2Dx12Context; ++#endif ++ ++/** ++ * A write handle for frame markers. ++ */ ++typedef struct lfx2Frame lfx2Frame; ++ ++typedef struct lfx2ImplicitContext lfx2ImplicitContext; ++ ++#if defined(LFX2_VK) ++typedef struct lfx2VulkanContext lfx2VulkanContext; ++#endif ++ ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++typedef struct lfx2Dx12SubmitAux { ++ ID3D12GraphicsCommandList* execute_before; ++ ID3D12GraphicsCommandList* execute_after; ++ ID3D12Fence* signal_fence; ++ uint64_t signal_fence_value; ++} lfx2Dx12SubmitAux; ++#endif ++ ++typedef uint64_t lfx2Timestamp; ++typedef uint64_t lfx2Interval; ++ ++typedef uint32_t lfx2SectionId; ++ ++#if defined(LFX2_VK) ++typedef struct lfx2VulkanSubmitAux { ++ VkCommandBuffer submit_before; ++ VkCommandBuffer submit_after; ++ VkSemaphore signal_sem; ++ uint64_t signal_sem_value; ++} lfx2VulkanSubmitAux; ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif // __cplusplus ++ ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++LFX2_API struct lfx2Dx12Context *lfx2Dx12ContextCreate(ID3D12Device* device); ++ ++LFX2_API void lfx2Dx12ContextAddRef(struct lfx2Dx12Context *context); ++ ++LFX2_API void lfx2Dx12ContextRelease(struct lfx2Dx12Context *context); ++ ++LFX2_API ++struct lfx2Dx12SubmitAux lfx2Dx12ContextBeforeSubmit(struct lfx2Dx12Context *context, ++ ID3D12CommandQueue* queue); ++ ++LFX2_API void lfx2Dx12ContextBeginFrame(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++ ++LFX2_API void lfx2Dx12ContextEndFrame(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++#endif ++ ++LFX2_API lfx2Timestamp lfx2TimestampNow(void); ++ ++#if defined(_WIN32) ++LFX2_API lfx2Timestamp lfx2TimestampFromQpc(uint64_t qpc); ++#endif ++ ++LFX2_API void lfx2SleepUntil(lfx2Timestamp target); ++ ++LFX2_API struct lfx2Context *lfx2ContextCreate(void); ++ ++LFX2_API void lfx2ContextAddRef(struct lfx2Context *context); ++ ++LFX2_API void lfx2ContextRelease(struct lfx2Context *context); ++ ++LFX2_API ++struct lfx2Frame *lfx2FrameCreate(struct lfx2Context *context, ++ lfx2Timestamp *out_timestamp); ++ ++LFX2_API void lfx2FrameAddRef(struct lfx2Frame *frame); ++ ++LFX2_API void lfx2FrameRelease(struct lfx2Frame *frame); ++ ++LFX2_API ++void lfx2MarkSection(struct lfx2Frame *frame, ++ lfx2SectionId section_id, ++ enum lfx2MarkType mark_type, ++ lfx2Timestamp timestamp); ++ ++LFX2_API ++void lfx2FrameOverrideQueuingDelay(struct lfx2Frame *frame, ++ lfx2SectionId section_id, ++ lfx2Interval queueing_delay); ++ ++LFX2_API ++void lfx2FrameOverrideInverseThroughput(struct lfx2Frame *frame, ++ lfx2SectionId section_id, ++ lfx2Interval inverse_throughput); ++ ++LFX2_API struct lfx2ImplicitContext *lfx2ImplicitContextCreate(void); ++ ++LFX2_API void lfx2ImplicitContextRelease(struct lfx2ImplicitContext *context); ++ ++LFX2_API void lfx2ImplicitContextReset(struct lfx2ImplicitContext *context); ++ ++LFX2_API ++struct lfx2Frame *lfx2FrameCreateImplicit(struct lfx2ImplicitContext *context, ++ lfx2Timestamp *out_timestamp); ++ ++LFX2_API ++struct lfx2Frame *lfx2FrameDequeueImplicit(struct lfx2ImplicitContext *context, ++ bool critical); ++ ++#if defined(LFX2_VK) ++LFX2_API ++struct lfx2VulkanContext *lfx2VulkanContextCreate(PFN_vkGetInstanceProcAddr gipa, ++ VkInstance instance, ++ VkPhysicalDevice physical_device, ++ VkDevice device, ++ uint32_t queue_family_index); ++ ++LFX2_API void lfx2VulkanContextAddRef(struct lfx2VulkanContext *context); ++ ++LFX2_API void lfx2VulkanContextRelease(struct lfx2VulkanContext *context); ++ ++LFX2_API ++struct lfx2VulkanSubmitAux lfx2VulkanContextBeforeSubmit(struct lfx2VulkanContext *context); ++ ++LFX2_API ++void lfx2VulkanContextBeginFrame(struct lfx2VulkanContext *context, ++ struct lfx2Frame *frame); ++ ++LFX2_API void lfx2VulkanContextEndFrame(struct lfx2VulkanContext *context, struct lfx2Frame *frame); ++#endif ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif // __cplusplus ++ ++#endif /* LATENCYFLEX2_H */ +diff --git a/include/native/directx b/include/native/directx +--- a/include/native/directx ++++ b/include/native/directx +@@ -1 +1 @@ +-Subproject commit 9df86f2341616ef1888ae59919feaa6d4fad693d ++Subproject commit 9df86f2341616ef1888ae59919feaa6d4fad693d-dirty +diff --git a/include/spirv b/include/spirv +index 8b246ff7..ff2afc3a 160000 +--- a/include/spirv ++++ b/include/spirv +@@ -1 +1 @@ +-Subproject commit 8b246ff75c6615ba4532fe4fde20f1be090c3764 ++Subproject commit ff2afc3afc48dff4eec2a10f0212402a80708e38-dirty +diff --git a/include/vulkan b/include/vulkan +index 46dc0f6e..192d051d 160000 +--- a/include/vulkan ++++ b/include/vulkan +@@ -1 +1 @@ +-Subproject commit 46dc0f6e514f5730784bb2cac2a7c731636839e8 ++Subproject commit 192d051db3382e213f8bd9d8048fc9eaa78ed6ab-dirty +diff --git a/src/d3d11/d3d11_context_ext.cpp b/src/d3d11/d3d11_context_ext.cpp +index c89e0bc0..6512656a 100644 +--- a/src/d3d11/d3d11_context_ext.cpp ++++ b/src/d3d11/d3d11_context_ext.cpp +@@ -215,7 +215,6 @@ namespace dxvk { + return true; + } + +- + template class D3D11DeviceContextExt; + template class D3D11DeviceContextExt; + +diff --git a/src/d3d11/d3d11_context_imm.cpp b/src/d3d11/d3d11_context_imm.cpp +index aa379d41..fe338fa5 100644 +--- a/src/d3d11/d3d11_context_imm.cpp ++++ b/src/d3d11/d3d11_context_imm.cpp +@@ -844,6 +844,7 @@ namespace dxvk { + + EmitCs([] (DxvkContext* ctx) { + ctx->endFrame(); ++ ctx->endLfx2FrameImplicit(); + }); + } + +@@ -892,6 +893,7 @@ namespace dxvk { + + + void D3D11ImmediateContext::EmitCsChunk(DxvkCsChunkRef&& chunk) { ++ chunk->finalize(); + m_csSeqNum = m_csThread.dispatchChunk(std::move(chunk)); + } + +diff --git a/src/d3d11/d3d11_context_imm.h b/src/d3d11/d3d11_context_imm.h +index 3e683250..f5b105e8 100644 +--- a/src/d3d11/d3d11_context_imm.h ++++ b/src/d3d11/d3d11_context_imm.h +@@ -18,6 +18,7 @@ namespace dxvk { + friend class D3D11SwapChain; + friend class D3D11VideoContext; + friend class D3D11DXGIKeyedMutex; ++ friend class D3D11DeviceLfx2Ext; + public: + + D3D11ImmediateContext( +@@ -182,6 +183,8 @@ namespace dxvk { + HANDLE hEvent, + BOOL Synchronize); + ++ private: ++ Lfx2Frame m_implicitLfx2Frame {}; + }; + + } +diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp +index 863a9a31..c3bbf223 100644 +--- a/src/d3d11/d3d11_device.cpp ++++ b/src/d3d11/d3d11_device.cpp +@@ -2469,6 +2469,9 @@ namespace dxvk { + return deviceFeatures.nvxBinaryImport + && deviceFeatures.vk12.bufferDeviceAddress; + ++ case D3D11_VK_LATENCYFLEX2: ++ return true; // TODO ++ + default: + return false; + } +@@ -2781,10 +2784,6 @@ namespace dxvk { + return static_cast(got->second); + } + +- +- +- +- + D3D11VideoDevice::D3D11VideoDevice( + D3D11DXGIDevice* pContainer, + D3D11Device* pDevice) +@@ -3084,6 +3083,7 @@ namespace dxvk { + m_dxvkDevice (pDxvkDevice), + m_d3d11Device (this, FeatureLevel, FeatureFlags), + m_d3d11DeviceExt(this, &m_d3d11Device), ++ m_d3d11DeviceLfx2Ext(this, m_d3d11Device.m_context.ptr()), + m_d3d11Interop (this, &m_d3d11Device), + m_d3d11Video (this, &m_d3d11Device), + m_d3d11on12 (this, &m_d3d11Device, pD3D12Device, pD3D12Queue), +@@ -3142,6 +3142,11 @@ namespace dxvk { + *ppvObject = ref(&m_d3d11DeviceExt); + return S_OK; + } ++ ++ if (riid == __uuidof(ID3DLfx2ExtDevice)) { ++ *ppvObject = ref(&m_d3d11DeviceLfx2Ext); ++ return S_OK; ++ } + + if (riid == __uuidof(IDXGIDXVKDevice)) { + *ppvObject = ref(&m_metaDevice); +@@ -3429,4 +3434,42 @@ namespace dxvk { + return m_dxvkDevice; + } + ++ D3D11DeviceLfx2Ext::D3D11DeviceLfx2Ext( ++ D3D11DXGIDevice* pContainer, ++ D3D11ImmediateContext* pImmediateContext) ++ : m_container(pContainer), m_immediateContext(pImmediateContext), m_dxvkDevice(pContainer->GetDXVKDevice()) { ++ ++ } ++ ++ HRESULT STDMETHODCALLTYPE D3D11DeviceLfx2Ext::QueryInterface(const IID &riid, void **ppvObject) { ++ return m_container->QueryInterface(riid, ppvObject); ++ } ++ ++ ULONG STDMETHODCALLTYPE D3D11DeviceLfx2Ext::AddRef() { ++ return m_container->AddRef(); ++ } ++ ++ ULONG STDMETHODCALLTYPE D3D11DeviceLfx2Ext::Release() { ++ return m_container->Release(); ++ } ++ ++ void STDMETHODCALLTYPE D3D11DeviceLfx2Ext::ImplicitBeginFrame(uint64_t *outTimestamp, void *outFrame) { ++ *(lfx2Frame **)outFrame = m_dxvkDevice->lfx2().FrameCreateImplicit(m_dxvkDevice->getImplicitLfx2Context()->context(), outTimestamp); ++ } ++ ++ void STDMETHODCALLTYPE D3D11DeviceLfx2Ext::MarkRenderStart(void *frame) { ++ auto frameWrapper = Lfx2Frame(m_dxvkDevice->lfx2(), static_cast(frame)); ++ ++ m_immediateContext->EmitCs([cDevice = m_dxvkDevice, frameWrapper] (DxvkContext* ctx) { ++ ctx->beginLfx2Frame(frameWrapper); ++ }); ++ } ++ ++ void STDMETHODCALLTYPE D3D11DeviceLfx2Ext::MarkRenderEnd(void *frame) { ++ auto frameWrapper = Lfx2Frame(m_dxvkDevice->lfx2(), static_cast(frame)); ++ ++ m_immediateContext->EmitCs([cDevice = m_dxvkDevice, frameWrapper] (DxvkContext* ctx) { ++ ctx->endLfx2Frame(); ++ }); ++ } + } +diff --git a/src/d3d11/d3d11_device.h b/src/d3d11/d3d11_device.h +index 7a44b5ad..d0d6a285 100644 +--- a/src/d3d11/d3d11_device.h ++++ b/src/d3d11/d3d11_device.h +@@ -48,6 +48,7 @@ namespace dxvk { + * as part of a \ref D3D11DeviceContainer. + */ + class D3D11Device final : public ID3D11Device5 { ++ friend class D3D11DXGIDevice; + /// Maximum number of resource init commands per command buffer + constexpr static uint64_t InitCommandThreshold = 50; + public: +@@ -561,7 +562,7 @@ namespace dxvk { + const D3D11_SAMPLER_DESC* pSamplerDesc, + ID3D11SamplerState** ppSamplerState, + uint32_t* pDriverHandle); +- ++ + private: + + D3D11DXGIDevice* m_container; +@@ -696,6 +697,29 @@ namespace dxvk { + + }; + ++ class D3D11DeviceLfx2Ext : public ID3DLfx2ExtDevice { ++ public: ++ D3D11DeviceLfx2Ext(D3D11DXGIDevice *pContainer, ++ D3D11ImmediateContext *pImmediateContext); ++ ++ HRESULT STDMETHODCALLTYPE QueryInterface(const IID &riid, void **ppvObject); ++ ++ ULONG STDMETHODCALLTYPE AddRef(); ++ ++ ULONG STDMETHODCALLTYPE Release(); ++ ++ void STDMETHODCALLTYPE ImplicitBeginFrame(uint64_t *outTimestamp, void *outFrame); ++ ++ void STDMETHODCALLTYPE MarkRenderStart(void *frame); ++ ++ void STDMETHODCALLTYPE MarkRenderEnd(void *frame); ++ ++ private: ++ D3D11DXGIDevice *m_container; ++ D3D11ImmediateContext *m_immediateContext; ++ const Rc m_dxvkDevice; ++ }; ++ + + /** + * \brief DXVK swap chain factory +@@ -858,6 +882,7 @@ namespace dxvk { + + D3D11Device m_d3d11Device; + D3D11DeviceExt m_d3d11DeviceExt; ++ D3D11DeviceLfx2Ext m_d3d11DeviceLfx2Ext; + D3D11VkInterop m_d3d11Interop; + D3D11VideoDevice m_d3d11Video; + D3D11on12Device m_d3d11on12; +diff --git a/src/d3d11/d3d11_interfaces.h b/src/d3d11/d3d11_interfaces.h +index 8a2e6fcf..35bbedf0 100644 +--- a/src/d3d11/d3d11_interfaces.h ++++ b/src/d3d11/d3d11_interfaces.h +@@ -16,6 +16,7 @@ enum D3D11_VK_EXTENSION : uint32_t { + D3D11_VK_EXT_BARRIER_CONTROL = 3, + D3D11_VK_NVX_BINARY_IMPORT = 4, + D3D11_VK_NVX_IMAGE_VIEW_HANDLE = 5, ++ D3D11_VK_LATENCYFLEX2 = 6, + }; + + +@@ -114,6 +115,17 @@ ID3D11VkExtDevice1 : public ID3D11VkExtDevice { + uint32_t* pCudaTextureHandle) = 0; + }; + ++MIDL_INTERFACE("851a9f0f-5da0-4850-b563-a7bbc414f4e6") ++ID3DLfx2ExtDevice : public IUnknown { ++ ++ virtual void STDMETHODCALLTYPE MarkRenderStart(void *frame) = 0; ++ ++ virtual void STDMETHODCALLTYPE MarkRenderEnd(void *frame) = 0; ++ ++ virtual void STDMETHODCALLTYPE ImplicitBeginFrame(uint64_t *outTimestamp, void *outFrame) = 0; ++ ++}; ++ + + /** + * \brief Extended D3D11 context +@@ -182,11 +194,11 @@ ID3D11VkExtContext1 : public ID3D11VkExtContext { + uint32_t numWriteResources) = 0; + }; + +- + #ifndef _MSC_VER + __CRT_UUID_DECL(ID3D11VkExtShader, 0xbb8a4fb9,0x3935,0x4762,0xb4,0x4b,0x35,0x18,0x9a,0x26,0x41,0x4a); + __CRT_UUID_DECL(ID3D11VkExtDevice, 0x8a6e3c42,0xf74c,0x45b7,0x82,0x65,0xa2,0x31,0xb6,0x77,0xca,0x17); + __CRT_UUID_DECL(ID3D11VkExtDevice1, 0xcfcf64ef,0x9586,0x46d0,0xbc,0xa4,0x97,0xcf,0x2c,0xa6,0x1b,0x06); ++__CRT_UUID_DECL(ID3DLfx2ExtDevice, 0x851a9f0f,0x5da0,0x4850,0xb5,0x63,0xa7,0xbb,0xc4,0x14,0xf4,0xe6); + __CRT_UUID_DECL(ID3D11VkExtContext, 0xfd0bca13,0x5cb6,0x4c3a,0x98,0x7e,0x47,0x50,0xde,0x2c,0xa7,0x91); + __CRT_UUID_DECL(ID3D11VkExtContext1, 0x874b09b2,0xae0b,0x41d8,0x84,0x76,0x5f,0x3b,0x7a,0x0e,0x87,0x9d); + #endif +diff --git a/src/d3d11/d3d11_swapchain.cpp b/src/d3d11/d3d11_swapchain.cpp +index 73939e2c..4bae8609 100644 +--- a/src/d3d11/d3d11_swapchain.cpp ++++ b/src/d3d11/d3d11_swapchain.cpp +@@ -450,6 +450,7 @@ namespace dxvk { + // Ensure that we can safely destroy the swap chain + m_device->waitForSubmission(&m_presentStatus); + m_device->waitForIdle(); ++ m_device->getImplicitLfx2Context()->reset(); + + m_presentStatus.result = VK_SUCCESS; + m_dirtyHdrMetadata = true; +diff --git a/src/d3d11/meson.build b/src/d3d11/meson.build +index 20bec082..d10ff8d4 100644 +--- a/src/d3d11/meson.build ++++ b/src/d3d11/meson.build +@@ -86,6 +86,7 @@ d3d11_dll = shared_library(dxvk_name_prefix+'d3d11', dxgi_common_src + d3d11_src + link_args : d3d11_ld_args, + link_depends : [ d3d11_link_depends ], + kwargs : dxvk_so_version, ++ cpp_pch : '../pch/d3d11_pch.h', + ) + + d3d11_dep = declare_dependency( +diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp +index e53c96a3..aa671a30 100644 +--- a/src/d3d9/d3d9_device.cpp ++++ b/src/d3d9/d3d9_device.cpp +@@ -5346,6 +5346,7 @@ namespace dxvk { + + + void D3D9DeviceEx::EmitCsChunk(DxvkCsChunkRef&& chunk) { ++ chunk->finalize(); + m_csSeqNum = m_csThread.dispatchChunk(std::move(chunk)); + } + +diff --git a/src/d3d9/meson.build b/src/d3d9/meson.build +index bc3eac42..062d9645 100644 +--- a/src/d3d9/meson.build ++++ b/src/d3d9/meson.build +@@ -65,6 +65,7 @@ d3d9_dll = shared_library(dxvk_name_prefix+'d3d9', d3d9_src, glsl_generator.proc + link_args : d3d9_ld_args, + link_depends : [ d3d9_link_depends ], + kwargs : dxvk_so_version, ++ cpp_pch : '../pch/d3d9_pch.h', + ) + + d3d9_dep = declare_dependency( +diff --git a/src/dxvk/dxvk_cmdlist.cpp b/src/dxvk/dxvk_cmdlist.cpp +index 3bd3aa95..a38fea40 100644 +--- a/src/dxvk/dxvk_cmdlist.cpp ++++ b/src/dxvk/dxvk_cmdlist.cpp +@@ -272,6 +272,9 @@ namespace dxvk { + 0, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT); + } + ++ if (isFirst && m_lfx2Aux.submit_before) ++ m_commandSubmission.executeCommandBuffer(m_lfx2Aux.submit_before); ++ + // Submit graphics commands + if (cmd.usedFlags.test(DxvkCmdBuffer::InitBuffer)) + m_commandSubmission.executeCommandBuffer(cmd.initBuffer); +@@ -296,6 +299,12 @@ namespace dxvk { + m_commandSubmission.signalFence(m_fence); + } + ++ if (isLast && m_lfx2Aux.submit_after) ++ m_commandSubmission.executeCommandBuffer(m_lfx2Aux.submit_after); ++ if (isLast && m_lfx2Aux.signal_sem) ++ m_commandSubmission.signalSemaphore(m_lfx2Aux.signal_sem, m_lfx2Aux.signal_sem_value, ++ VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT); ++ + // Finally, submit all graphics commands of the current submission + if ((status = m_commandSubmission.submit(m_device, graphics.queueHandle))) + return status; +@@ -364,6 +373,8 @@ namespace dxvk { + + + void DxvkCommandList::reset() { ++ m_lfx2Aux = {}; ++ + // Free resources and other objects + // that are no longer in use + m_resources.reset(); +diff --git a/src/dxvk/dxvk_cmdlist.h b/src/dxvk/dxvk_cmdlist.h +index 1934b9a0..cc3b581e 100644 +--- a/src/dxvk/dxvk_cmdlist.h ++++ b/src/dxvk/dxvk_cmdlist.h +@@ -1,6 +1,7 @@ + #pragma once + + #include ++#include + + #include "dxvk_bind_mask.h" + #include "dxvk_buffer.h" +@@ -17,6 +18,7 @@ + #include "dxvk_sparse.h" + #include "dxvk_staging.h" + #include "dxvk_stats.h" ++#include "dxvk_lfx2.h" + + namespace dxvk { + +@@ -1026,6 +1028,10 @@ namespace dxvk { + m_descriptorPools.push_back({ pool, manager }); + } + ++ void setLfx2Aux(lfx2VulkanSubmitAux aux) { ++ m_lfx2Aux = aux; ++ } ++ + private: + + DxvkDevice* m_device; +@@ -1065,6 +1071,8 @@ namespace dxvk { + + std::vector m_pipelines; + ++ lfx2VulkanSubmitAux m_lfx2Aux = {}; ++ + VkCommandBuffer getCmdBuffer(DxvkCmdBuffer cmdBuffer) const { + if (cmdBuffer == DxvkCmdBuffer::ExecBuffer) return m_cmd.execBuffer; + if (cmdBuffer == DxvkCmdBuffer::InitBuffer) return m_cmd.initBuffer; +diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp +index c63dce53..73aac9b5 100644 +--- a/src/dxvk/dxvk_context.cpp ++++ b/src/dxvk/dxvk_context.cpp +@@ -1,4 +1,5 @@ + #include ++#include + #include + #include + +@@ -106,8 +107,10 @@ namespace dxvk { + + + void DxvkContext::flushCommandList(DxvkSubmitStatus* status) { +- m_device->submitCommandList( +- this->endRecording(), status); ++ auto cmdList = this->endRecording(); ++ if (m_type == DxvkContextType::Primary) ++ cmdList->setLfx2Aux(m_device->lfx2().VulkanContextBeforeSubmit(m_device->getLfx2VkContext())); ++ m_device->submitCommandList(cmdList, status); + + this->beginRecording( + m_device->createCommandList()); +@@ -6513,4 +6516,42 @@ namespace dxvk { + this->beginCurrentCommands(); + } + ++ void DxvkContext::tryBeginLfx2FrameImplicit(bool critical) { ++ if (!m_lfx2Frame) { ++ auto lfx2Frame = m_device->getImplicitLfx2Context()->dequeueFrame(critical); ++ if (lfx2Frame) { ++ beginLfx2Frame(lfx2Frame); ++ } ++ } ++ } ++ ++ void DxvkContext::endLfx2FrameImplicit() { ++ tryBeginLfx2FrameImplicit(true); ++ if (m_lfx2Frame) { ++ endLfx2Frame(); ++ } ++ } ++ ++ void DxvkContext::beginLfx2Frame(Lfx2Frame frame) { ++ if (m_type != DxvkContextType::Primary) ++ Logger::err("beginLfx2Frame should only be called on immediate contexts"); ++ auto &cLfx2 = m_device->lfx2(); ++ m_lfx2Frame = std::move(frame); ++ cLfx2.VulkanContextBeginFrame(m_device->getLfx2VkContext(), m_lfx2Frame); ++ m_frameCsTime = 0; ++ m_minQueuingDelay = UINT64_MAX; ++ } ++ ++ void DxvkContext::endLfx2Frame() { ++ if (m_type != DxvkContextType::Primary) ++ Logger::err("endLfx2Frame should only be called on immediate contexts"); ++ auto status = new DxvkSubmitStatus; ++ flushCommandList(status); ++ auto &cLfx2 = m_device->lfx2(); ++ cLfx2.VulkanContextEndFrame(m_device->getLfx2VkContext(), m_lfx2Frame); ++ cLfx2.FrameOverrideInverseThroughput(m_lfx2Frame, 800, m_frameCsTime); ++ if (m_minQueuingDelay != UINT64_MAX) ++ cLfx2.FrameOverrideQueuingDelay(m_lfx2Frame, 0, m_minQueuingDelay); ++ m_lfx2Frame = {}; ++ } + } +diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h +index 3b61d474..136a12dd 100644 +--- a/src/dxvk/dxvk_context.h ++++ b/src/dxvk/dxvk_context.h +@@ -67,6 +67,11 @@ namespace dxvk { + * \param [out] status Submission feedback + */ + void flushCommandList(DxvkSubmitStatus* status); ++ ++ void tryBeginLfx2FrameImplicit(bool critical); ++ void endLfx2FrameImplicit(); ++ void beginLfx2Frame(Lfx2Frame frame); ++ void endLfx2Frame(); + + /** + * \brief Begins generating query data +@@ -1388,6 +1393,11 @@ namespace dxvk { + m_cmd->addStatCtr(counter, value); + } + ++ void recordChunkExecutionTiming(uint64_t duration, uint64_t queueingDelay) { ++ m_frameCsTime += duration; ++ m_minQueuingDelay = std::min(m_minQueuingDelay, queueingDelay); ++ } ++ + private: + + Rc m_device; +@@ -1432,6 +1442,10 @@ namespace dxvk { + std::array m_gpLookupCache = { }; + std::array m_cpLookupCache = { }; + ++ Lfx2Frame m_lfx2Frame = {}; ++ uint64_t m_frameCsTime = 0; ++ uint64_t m_minQueuingDelay = 0; ++ + void blitImageFb( + const Rc& dstImage, + const Rc& srcImage, +@@ -1739,7 +1753,6 @@ namespace dxvk { + void endCurrentCommands(); + + void splitCommands(); +- + }; + + } +diff --git a/src/dxvk/dxvk_cs.cpp b/src/dxvk/dxvk_cs.cpp +index 5788ba82..44d7e718 100644 +--- a/src/dxvk/dxvk_cs.cpp ++++ b/src/dxvk/dxvk_cs.cpp +@@ -55,8 +55,12 @@ namespace dxvk { + + m_commandOffset = 0; + } +- +- ++ ++ void DxvkCsChunk::finalize() { ++ m_queuedTimestamp = high_resolution_clock::now(); ++ } ++ ++ + DxvkCsChunkPool::DxvkCsChunkPool() { + + } +@@ -161,6 +165,8 @@ namespace dxvk { + // them in order to potentially reduce lock contention. + std::vector chunks; + ++ high_resolution_clock::time_point lastFinish; ++ + try { + while (!m_stopped.load()) { + { std::unique_lock lock(m_mutex); +@@ -175,8 +181,16 @@ namespace dxvk { + + for (auto& chunk : chunks) { + m_context->addStatCtr(DxvkStatCounter::CsChunkCount, 1); +- ++ m_context->tryBeginLfx2FrameImplicit(false); ++ high_resolution_clock::time_point start = high_resolution_clock::now(); + chunk->executeAll(m_context.ptr()); ++ high_resolution_clock::time_point end = high_resolution_clock::now(); ++ m_context->recordChunkExecutionTiming( ++ std::chrono::duration_cast(end - start).count(), ++ std::max(std::chrono::duration_cast( ++ lastFinish - chunk->getQueuedTimestamp()).count(), 0LL) ++ ); ++ lastFinish = end; + + // Use a separate mutex for the chunk counter, this + // will only ever be contested if synchronization is +diff --git a/src/dxvk/dxvk_cs.h b/src/dxvk/dxvk_cs.h +index ae20746a..d8ee4fdf 100644 +--- a/src/dxvk/dxvk_cs.h ++++ b/src/dxvk/dxvk_cs.h +@@ -233,10 +233,18 @@ namespace dxvk { + * that it can be reused later. + */ + void reset(); ++ ++ void finalize(); ++ ++ high_resolution_clock::time_point getQueuedTimestamp() { ++ return m_queuedTimestamp; ++ } + + private: + + size_t m_commandOffset = 0; ++ ++ high_resolution_clock::time_point m_queuedTimestamp; + + DxvkCsCmd* m_head = nullptr; + DxvkCsCmd* m_tail = nullptr; +diff --git a/src/dxvk/dxvk_device.cpp b/src/dxvk/dxvk_device.cpp +index 226596f0..943f3b27 100644 +--- a/src/dxvk/dxvk_device.cpp ++++ b/src/dxvk/dxvk_device.cpp +@@ -14,6 +14,7 @@ namespace dxvk { + m_instance (instance), + m_adapter (adapter), + m_vkd (vkd), ++ m_lfx2ImplicitContext(&m_lfx2), + m_features (features), + m_properties (adapter->devicePropertiesExt()), + m_perfHints (getPerfHints()), +@@ -21,6 +22,7 @@ namespace dxvk { + m_queues (queues), + m_submissionQueue (this, queueCallback) { + ++ m_lfx2Vk = m_lfx2.VulkanContextCreate(instance->vki()->getLoaderProc(), instance->handle(), m_adapter->handle(), m_vkd->device(), queues.graphics.queueIndex); + } + + +@@ -39,6 +41,8 @@ namespace dxvk { + // Stop workers explicitly in order to prevent + // access to structures that are being destroyed. + m_objects.pipelineManager().stopWorkerThreads(); ++ ++ m_lfx2.VulkanContextRelease(m_lfx2Vk); + } + + +@@ -339,4 +343,12 @@ namespace dxvk { + m_recycledCommandLists.returnObject(cmdList); + } + ++ lfx2VulkanContext *DxvkDevice::getLfx2VkContext() { ++ return m_lfx2Vk; ++ } ++ ++ DxvkLfx2ImplicitContext *DxvkDevice::getImplicitLfx2Context() { ++ return &m_lfx2ImplicitContext; ++ } ++ + } +diff --git a/src/dxvk/dxvk_device.h b/src/dxvk/dxvk_device.h +index a24ee311..4e6c2ed7 100644 +--- a/src/dxvk/dxvk_device.h ++++ b/src/dxvk/dxvk_device.h +@@ -98,6 +98,10 @@ namespace dxvk { + Rc vkd() const { + return m_vkd; + } ++ ++ const Lfx2Fn &lfx2() const { ++ return m_lfx2; ++ } + + /** + * \brief Logical device handle +@@ -534,6 +538,9 @@ namespace dxvk { + * used by the GPU can be safely destroyed. + */ + void waitForIdle(); ++ ++ lfx2VulkanContext* getLfx2VkContext(); ++ DxvkLfx2ImplicitContext* getImplicitLfx2Context(); + + private: + +@@ -542,6 +549,9 @@ namespace dxvk { + Rc m_instance; + Rc m_adapter; + Rc m_vkd; ++ Lfx2Fn m_lfx2; ++ lfx2VulkanContext *m_lfx2Vk; ++ DxvkLfx2ImplicitContext m_lfx2ImplicitContext; + + DxvkDeviceFeatures m_features; + DxvkDeviceInfo m_properties; +diff --git a/src/dxvk/dxvk_extensions.h b/src/dxvk/dxvk_extensions.h +index 729f09c1..40c5bcc1 100644 +--- a/src/dxvk/dxvk_extensions.h ++++ b/src/dxvk/dxvk_extensions.h +@@ -297,6 +297,7 @@ namespace dxvk { + DxvkExt amdMemoryOverallocationBehaviour = { VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt amdShaderFragmentMask = { VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt extAttachmentFeedbackLoopLayout = { VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME, DxvkExtMode::Optional }; ++ DxvkExt extCalibratedTimestamps = { VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt extConservativeRasterization = { VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt extCustomBorderColor = { VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt extDepthClipEnable = { VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, DxvkExtMode::Optional }; +diff --git a/src/dxvk/dxvk_gpu_query.cpp b/src/dxvk/dxvk_gpu_query.cpp +index aaec6a0f..5f4885f0 100644 +--- a/src/dxvk/dxvk_gpu_query.cpp ++++ b/src/dxvk/dxvk_gpu_query.cpp +@@ -340,7 +340,7 @@ namespace dxvk { + handle.queryId); + + cmd->cmdWriteTimestamp( +- VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, ++ VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, + handle.queryPool, + handle.queryId); + +diff --git a/src/dxvk/dxvk_gpu_query.h b/src/dxvk/dxvk_gpu_query.h +index 919d0e26..acf1654e 100644 +--- a/src/dxvk/dxvk_gpu_query.h ++++ b/src/dxvk/dxvk_gpu_query.h +@@ -11,6 +11,7 @@ + namespace dxvk { + + class DxvkCommandList; ++ class DxvkDevice; + + class DxvkGpuQueryPool; + class DxvkGpuQueryAllocator; +diff --git a/src/dxvk/dxvk_lfx2.cpp b/src/dxvk/dxvk_lfx2.cpp +new file mode 100644 +index 00000000..c7e50abe +--- /dev/null ++++ b/src/dxvk/dxvk_lfx2.cpp +@@ -0,0 +1,137 @@ ++#include "dxvk_lfx2.h" ++ ++#include ++ ++#include "../util/util_time.h" ++#include "dxvk_device.h" ++#include "../util/util_win32_compat.h" ++ ++namespace dxvk { ++ ++ Lfx2Fn::Lfx2Fn() { ++#ifdef _WIN32 ++ const auto lfxModuleName = "latencyflex2_rust.dll"; ++#else ++ const auto lfxModuleName = "liblatencyflex2_rust.so"; ++#endif ++ ++ m_lfxModule = ::LoadLibraryA(lfxModuleName); ++ if (m_lfxModule == nullptr) { ++ Logger::err(str::format("Failed to load ", lfxModuleName)); ++ return; ++ } ++ ++#define LOAD_PFN(x) \ ++ this->x = GetProcAddress("lfx2" #x) ++ ++ LOAD_PFN(ContextCreate); ++ LOAD_PFN(ContextAddRef); ++ LOAD_PFN(ContextRelease); ++ LOAD_PFN(FrameCreate); ++ LOAD_PFN(FrameAddRef); ++ LOAD_PFN(FrameRelease); ++ LOAD_PFN(MarkSection); ++ LOAD_PFN(FrameOverrideQueuingDelay); ++ LOAD_PFN(FrameOverrideInverseThroughput); ++ LOAD_PFN(SleepUntil); ++ LOAD_PFN(TimestampNow); ++#ifdef _WIN32 ++ LOAD_PFN(TimestampFromQpc); ++#endif ++ LOAD_PFN(ImplicitContextCreate); ++ LOAD_PFN(ImplicitContextRelease); ++ LOAD_PFN(ImplicitContextReset); ++ LOAD_PFN(FrameCreateImplicit); ++ LOAD_PFN(FrameDequeueImplicit); ++ LOAD_PFN(VulkanContextCreate); ++ LOAD_PFN(VulkanContextAddRef); ++ LOAD_PFN(VulkanContextRelease); ++ LOAD_PFN(VulkanContextBeforeSubmit); ++ LOAD_PFN(VulkanContextBeginFrame); ++ LOAD_PFN(VulkanContextEndFrame); ++ ++#undef LOAD_PFN ++ } ++ ++ Lfx2Fn::~Lfx2Fn() { ++ if (m_lfxModule == nullptr) ++ return; ++ ++ // Calling FreeLibrary deadlocks if called from DllMain. ++ if (this_thread::isInModuleDetachment()) ++ return; ++ ++ ::FreeLibrary(m_lfxModule); ++ m_lfxModule = nullptr; ++ } ++ ++ template ++ T Lfx2Fn::GetProcAddress(const char *name) { ++ return reinterpret_cast(reinterpret_cast(::GetProcAddress(m_lfxModule, name))); ++ } ++ ++ DxvkLfx2ImplicitContext::DxvkLfx2ImplicitContext(Lfx2Fn *lfx2): m_lfx2(lfx2) { ++ m_context = m_lfx2->ImplicitContextCreate(); ++ } ++ ++ DxvkLfx2ImplicitContext::~DxvkLfx2ImplicitContext() { ++ m_lfx2->ImplicitContextRelease(m_context); ++ } ++ ++ Lfx2Frame DxvkLfx2ImplicitContext::dequeueFrame(bool critical) { ++ lfx2Frame *frame = m_lfx2->FrameDequeueImplicit(m_context, critical); ++ Lfx2Frame wrapper(*m_lfx2, frame); ++ if (frame) ++ m_lfx2->FrameRelease(frame); ++ return wrapper; ++ } ++ ++ void DxvkLfx2ImplicitContext::reset() { ++ m_lfx2->ImplicitContextReset(m_context); ++ } ++ ++ Lfx2Frame::Lfx2Frame() { ++ ++ } ++ ++ Lfx2Frame::Lfx2Frame(const Lfx2Fn &lfx2, lfx2Frame *lfx2Frame) : m_lfx2(&lfx2), m_lfx2Frame(lfx2Frame) { ++ if (m_lfx2Frame) ++ m_lfx2->FrameAddRef(m_lfx2Frame); ++ } ++ ++ Lfx2Frame::~Lfx2Frame() { ++ if (m_lfx2Frame != nullptr) ++ m_lfx2->FrameRelease(m_lfx2Frame); ++ } ++ ++ Lfx2Frame::Lfx2Frame(const Lfx2Frame &other): m_lfx2(other.m_lfx2), m_lfx2Frame(other.m_lfx2Frame) { ++ m_lfx2->FrameAddRef(m_lfx2Frame); ++ } ++ ++ Lfx2Frame::Lfx2Frame(Lfx2Frame &&other) noexcept : m_lfx2(other.m_lfx2), m_lfx2Frame(other.m_lfx2Frame) { ++ other.m_lfx2Frame = nullptr; ++ } ++ ++ Lfx2Frame &Lfx2Frame::operator=(const Lfx2Frame &other) { ++ if (this != &other) { ++ if (m_lfx2Frame != nullptr) ++ m_lfx2->FrameRelease(m_lfx2Frame); ++ ++ m_lfx2 = other.m_lfx2; ++ m_lfx2Frame = other.m_lfx2Frame; ++ m_lfx2->FrameAddRef(m_lfx2Frame); ++ } ++ ++ return *this; ++ } ++ ++ Lfx2Frame &Lfx2Frame::operator=(Lfx2Frame &&other) noexcept { ++ if (m_lfx2Frame != nullptr) ++ m_lfx2->FrameRelease(m_lfx2Frame); ++ ++ m_lfx2 = other.m_lfx2; ++ m_lfx2Frame = other.m_lfx2Frame; ++ other.m_lfx2Frame = nullptr; ++ return *this; ++ } ++} // dxvk +\ No newline at end of file +diff --git a/src/dxvk/dxvk_lfx2.h b/src/dxvk/dxvk_lfx2.h +new file mode 100644 +index 00000000..dc81d0a5 +--- /dev/null ++++ b/src/dxvk/dxvk_lfx2.h +@@ -0,0 +1,83 @@ ++#pragma once ++ ++#include ++#include "dxvk_gpu_query.h" ++#include "latencyflex2.h" ++ ++namespace dxvk { ++ ++ class Lfx2Fn { ++ public: ++ Lfx2Fn(); ++ virtual ~Lfx2Fn(); ++ ++#define DECLARE_PFN(x) \ ++ decltype(&::lfx2##x) x {} ++ ++ DECLARE_PFN(ContextCreate); ++ DECLARE_PFN(ContextAddRef); ++ DECLARE_PFN(ContextRelease); ++ DECLARE_PFN(FrameCreate); ++ DECLARE_PFN(FrameAddRef); ++ DECLARE_PFN(FrameRelease); ++ DECLARE_PFN(MarkSection); ++ DECLARE_PFN(FrameOverrideQueuingDelay); ++ DECLARE_PFN(FrameOverrideInverseThroughput); ++ DECLARE_PFN(SleepUntil); ++ DECLARE_PFN(TimestampNow); ++#ifdef _WIN32 ++ DECLARE_PFN(TimestampFromQpc); ++#endif ++ DECLARE_PFN(ImplicitContextCreate); ++ DECLARE_PFN(ImplicitContextRelease); ++ DECLARE_PFN(ImplicitContextReset); ++ DECLARE_PFN(FrameCreateImplicit); ++ DECLARE_PFN(FrameDequeueImplicit); ++ DECLARE_PFN(VulkanContextCreate); ++ DECLARE_PFN(VulkanContextAddRef); ++ DECLARE_PFN(VulkanContextRelease); ++ DECLARE_PFN(VulkanContextBeforeSubmit); ++ DECLARE_PFN(VulkanContextBeginFrame); ++ DECLARE_PFN(VulkanContextEndFrame); ++ ++#undef DECLARE_PFN ++ ++ private: ++ template ++ T GetProcAddress(const char* name); ++ ++ HMODULE m_lfxModule{}; ++ }; ++ ++ class Lfx2Frame { ++ public: ++ Lfx2Frame(); ++ Lfx2Frame(const Lfx2Fn &lfx2, lfx2Frame *lfx2Frame); ++ Lfx2Frame(const Lfx2Frame &other); ++ Lfx2Frame(Lfx2Frame &&other) noexcept; ++ ~Lfx2Frame(); ++ ++ Lfx2Frame& operator=(const Lfx2Frame &other); ++ Lfx2Frame& operator=(Lfx2Frame &&other) noexcept; ++ ++ operator lfx2Frame *() const { return m_lfx2Frame; } ++ ++ private: ++ const Lfx2Fn *m_lfx2{}; ++ lfx2Frame *m_lfx2Frame{}; ++ }; ++ ++ class DxvkLfx2ImplicitContext { ++ public: ++ explicit DxvkLfx2ImplicitContext(Lfx2Fn *lfx2); ++ ~DxvkLfx2ImplicitContext(); ++ lfx2ImplicitContext *context() const { return m_context; } ++ Lfx2Frame dequeueFrame(bool critical); ++ void reset(); ++ ++ private: ++ Lfx2Fn *m_lfx2; ++ lfx2ImplicitContext *m_context; ++ }; ++ ++} // dxvk +\ No newline at end of file +diff --git a/src/dxvk/meson.build b/src/dxvk/meson.build +index 78ff2ecf..a26f6a55 100644 +--- a/src/dxvk/meson.build ++++ b/src/dxvk/meson.build +@@ -79,6 +79,7 @@ dxvk_src = [ + 'dxvk_image.cpp', + 'dxvk_instance.cpp', + 'dxvk_lifetime.cpp', ++ 'dxvk_lfx2.cpp', + 'dxvk_memory.cpp', + 'dxvk_meta_blit.cpp', + 'dxvk_meta_clear.cpp', +@@ -127,6 +128,7 @@ dxvk_lib = static_library('dxvk', dxvk_src, glsl_generator.process(dxvk_shaders) + link_with : [ util_lib, spirv_lib, wsi_lib ], + dependencies : [ vkcommon_dep ] + dxvk_extra_deps, + include_directories : [ dxvk_include_path ], ++ cpp_pch : '../pch/dxvk_pch.h', + ) + + dxvk_dep = declare_dependency( +diff --git a/src/pch/d3d11_pch.h b/src/pch/d3d11_pch.h +new file mode 100644 +index 00000000..0989dd0d +--- /dev/null ++++ b/src/pch/d3d11_pch.h +@@ -0,0 +1,9 @@ ++#include "../dxvk/dxvk_adapter.h" ++#include "../dxvk/dxvk_buffer.h" ++#include "../dxvk/dxvk_device.h" ++#include "d3d11_context.h" ++#include "d3d11_device.h" ++#include "../util/util_string.h" ++#include "../util/util_env.h" ++#include "../util/log/log.h" ++#include "../util/thread.h" +\ No newline at end of file +diff --git a/src/pch/d3d9_pch.h b/src/pch/d3d9_pch.h +new file mode 100644 +index 00000000..1d9e06b2 +--- /dev/null ++++ b/src/pch/d3d9_pch.h +@@ -0,0 +1,7 @@ ++#include "../dxvk/dxvk_adapter.h" ++#include "../dxvk/dxvk_buffer.h" ++#include "../dxvk/dxvk_device.h" ++#include "../util/util_string.h" ++#include "../util/util_env.h" ++#include "../util/log/log.h" ++#include "../util/thread.h" +\ No newline at end of file +diff --git a/src/pch/dxvk_pch.h b/src/pch/dxvk_pch.h +new file mode 100644 +index 00000000..081d583b +--- /dev/null ++++ b/src/pch/dxvk_pch.h +@@ -0,0 +1,7 @@ ++#include "dxvk_adapter.h" ++#include "dxvk_buffer.h" ++#include "dxvk_device.h" ++#include "../util/util_string.h" ++#include "../util/util_env.h" ++#include "../util/log/log.h" ++#include "../util/thread.h" +\ No newline at end of file +diff --git a/src/vulkan/vulkan_loader.h b/src/vulkan/vulkan_loader.h +index 1741ccb8..630dfb7b 100644 +--- a/src/vulkan/vulkan_loader.h ++++ b/src/vulkan/vulkan_loader.h +@@ -452,6 +452,11 @@ namespace dxvk::vk { + VULKAN_FN(wine_vkAcquireKeyedMutex); + VULKAN_FN(wine_vkReleaseKeyedMutex); + #endif ++ ++ #ifdef VK_EXT_calibrated_timestamps ++ VULKAN_FN(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT); ++ VULKAN_FN(vkGetCalibratedTimestampsEXT); ++ #endif + }; + + } diff --git a/patches/lfx2-dxvk.patch.old b/patches/lfx2-dxvk.patch.old new file mode 100644 index 0000000000..a328c0839f --- /dev/null +++ b/patches/lfx2-dxvk.patch.old @@ -0,0 +1,3201 @@ +From 00ef6bc4f526bb3e8771853f7518608356e362cf Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Sat, 31 Dec 2022 23:07:33 +0900 +Subject: [PATCH 01/12] lfx2 wip + +--- + include/latencyflex2.h | 62 +++++++++++++++++++++ + src/d3d11/d3d11_context.cpp | 3 +- + src/d3d11/d3d11_context_ext.cpp | 38 +++++++++++++ + src/d3d11/d3d11_context_ext.h | 8 ++- + src/d3d11/d3d11_device.cpp | 3 + + src/d3d11/d3d11_interfaces.h | 13 +++++ + src/dxvk/dxvk_cmdlist.cpp | 4 +- + src/dxvk/dxvk_cmdlist.h | 8 +++ + src/dxvk/dxvk_context.cpp | 4 ++ + src/dxvk/dxvk_context.h | 2 + + src/dxvk/dxvk_device.h | 5 ++ + src/dxvk/dxvk_extensions.h | 1 + + src/dxvk/dxvk_gpu_query.h | 1 + + src/dxvk/dxvk_lfx2.cpp | 98 +++++++++++++++++++++++++++++++++ + src/dxvk/dxvk_lfx2.h | 48 ++++++++++++++++ + src/dxvk/meson.build | 1 + + src/util/util_time.h | 6 +- + src/vulkan/vulkan_loader.h | 5 ++ + 18 files changed, 306 insertions(+), 4 deletions(-) + create mode 100644 include/latencyflex2.h + create mode 100644 src/dxvk/dxvk_lfx2.cpp + create mode 100644 src/dxvk/dxvk_lfx2.h + +diff --git a/include/latencyflex2.h b/include/latencyflex2.h +new file mode 100644 +index 00000000..5513093c +--- /dev/null ++++ b/include/latencyflex2.h +@@ -0,0 +1,62 @@ ++#ifndef LATENCYFLEX2_H ++#define LATENCYFLEX2_H ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#ifdef _WIN32 ++#define LFX2_API __declspec(dllimport) ++#else ++#define LFX2_API ++#endif ++ ++ ++enum class lfx2MarkType { ++ lfx2MarkTypeBegin, ++ lfx2MarkTypeEnd, ++}; ++ ++struct lfx2Context; ++ ++/// A write handle for frame markers. ++struct lfx2Frame; ++ ++using lfx2Timestamp = uint64_t; ++ ++using lfx2SectionId = uint32_t; ++ ++ ++extern "C" { ++ ++LFX2_API lfx2Timestamp lfx2TimestampNow(); ++ ++#if defined(_WIN32) ++LFX2_API lfx2Timestamp lfx2TimestampFromQpc(uint64_t qpc); ++#endif ++ ++LFX2_API void lfx2SleepUntil(lfx2Timestamp target); ++ ++LFX2_API const lfx2Context *lfx2ContextCreate(); ++ ++LFX2_API void lfx2ContextAddRef(const lfx2Context *context); ++ ++LFX2_API void lfx2ContextRelease(const lfx2Context *context); ++ ++LFX2_API const lfx2Frame *lfx2FrameCreate(const lfx2Context *context, lfx2Timestamp *out_timestamp); ++ ++LFX2_API void lfx2FrameAddRef(const lfx2Frame *frame); ++ ++LFX2_API void lfx2FrameRelease(const lfx2Frame *frame); ++ ++LFX2_API ++void lfx2MarkSection(const lfx2Frame *frame, ++ lfx2SectionId section_id, ++ lfx2MarkType mark_type, ++ lfx2Timestamp timestamp); ++ ++} // extern "C" ++ ++#endif // LATENCYFLEX2_H +diff --git a/src/d3d11/d3d11_context.cpp b/src/d3d11/d3d11_context.cpp +index 4b06ae38..fd72258a 100644 +--- a/src/d3d11/d3d11_context.cpp ++++ b/src/d3d11/d3d11_context.cpp +@@ -50,7 +50,8 @@ namespace dxvk { + } + + if (riid == __uuidof(ID3D11VkExtContext) +- || riid == __uuidof(ID3D11VkExtContext1)) { ++ || riid == __uuidof(ID3D11VkExtContext1) ++ || riid == __uuidof(ID3D11VkExtContext2)) { + *ppvObject = ref(&m_contextExt); + return S_OK; + } +diff --git a/src/d3d11/d3d11_context_ext.cpp b/src/d3d11/d3d11_context_ext.cpp +index c89e0bc0..be412630 100644 +--- a/src/d3d11/d3d11_context_ext.cpp ++++ b/src/d3d11/d3d11_context_ext.cpp +@@ -215,6 +215,44 @@ namespace dxvk { + return true; + } + ++ template ++ bool STDMETHODCALLTYPE D3D11DeviceContextExt::MarkRenderStartLFX2(void *frame) { ++ auto query = m_ctx->m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); ++ ++ m_ctx->m_device->lfx2().FrameAddRef(static_cast(frame)); ++ m_ctx->EmitCs([query, frame, cDevice = m_ctx->m_device] (DxvkContext* ctx) { ++ auto &cLfx2 = cDevice->lfx2(); ++ cLfx2.MarkSection(static_cast(frame), 800, lfx2MarkType::lfx2MarkTypeBegin, cLfx2.TimestampNow()); ++ ctx->writeTimestamp(query); ++ ctx->trackLatencyMarker(frame, query, false); ++ }); ++ return true; ++ } ++ ++ template ++ bool STDMETHODCALLTYPE D3D11DeviceContextExt::MarkRenderEndLFX2(void *frame) { ++ auto query = m_ctx->m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); ++ ++ m_ctx->m_device->lfx2().FrameAddRef(static_cast(frame)); ++ m_ctx->EmitCs([query, frame, cDevice = m_ctx->m_device] (DxvkContext* ctx) { ++ auto &cLfx2 = cDevice->lfx2(); ++ cLfx2.MarkSection(static_cast(frame), 800, lfx2MarkType::lfx2MarkTypeEnd, cLfx2.TimestampNow()); ++ ctx->writeTimestamp(query); ++ ctx->trackLatencyMarker(frame, query, true); ++ }); ++ return true; ++ } ++ ++ template ++ bool STDMETHODCALLTYPE D3D11DeviceContextExt::SleepAndBeginFrameLFX2() { ++ Logger::err("SleepAndBeginFrameLFX2 should be only called on an immediate context"); ++ return false; ++ } ++ ++ template<> ++ bool STDMETHODCALLTYPE D3D11DeviceContextExt::SleepAndBeginFrameLFX2() { ++ return true; ++ } + + template class D3D11DeviceContextExt; + template class D3D11DeviceContextExt; +diff --git a/src/d3d11/d3d11_context_ext.h b/src/d3d11/d3d11_context_ext.h +index 6b95dcf9..e9951d27 100644 +--- a/src/d3d11/d3d11_context_ext.h ++++ b/src/d3d11/d3d11_context_ext.h +@@ -8,7 +8,7 @@ namespace dxvk { + class D3D11ImmediateContext; + + template +- class D3D11DeviceContextExt : public ID3D11VkExtContext1 { ++ class D3D11DeviceContextExt : public ID3D11VkExtContext2 { + + public: + +@@ -71,6 +71,12 @@ namespace dxvk { + void* const* pWriteResources, + uint32_t NumWriteResources); + ++ bool STDMETHODCALLTYPE MarkRenderStartLFX2(void *lfx2Frame); ++ ++ bool STDMETHODCALLTYPE MarkRenderEndLFX2(void *lfx2Frame); ++ ++ bool STDMETHODCALLTYPE SleepAndBeginFrameLFX2(); ++ + private: + + ContextType* m_ctx; +diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp +index 9398e484..078dcb4b 100644 +--- a/src/d3d11/d3d11_device.cpp ++++ b/src/d3d11/d3d11_device.cpp +@@ -2469,6 +2469,9 @@ namespace dxvk { + return deviceFeatures.nvxBinaryImport + && deviceFeatures.vk12.bufferDeviceAddress; + ++ case D3D11_VK_LATENCYFLEX2: ++ return true; // TODO ++ + default: + return false; + } +diff --git a/src/d3d11/d3d11_interfaces.h b/src/d3d11/d3d11_interfaces.h +index 8a2e6fcf..77ad12ba 100644 +--- a/src/d3d11/d3d11_interfaces.h ++++ b/src/d3d11/d3d11_interfaces.h +@@ -16,6 +16,7 @@ enum D3D11_VK_EXTENSION : uint32_t { + D3D11_VK_EXT_BARRIER_CONTROL = 3, + D3D11_VK_NVX_BINARY_IMPORT = 4, + D3D11_VK_NVX_IMAGE_VIEW_HANDLE = 5, ++ D3D11_VK_LATENCYFLEX2 = 6, + }; + + +@@ -182,6 +183,17 @@ ID3D11VkExtContext1 : public ID3D11VkExtContext { + uint32_t numWriteResources) = 0; + }; + ++MIDL_INTERFACE("6e65f21a-0ecd-4e76-8faf-9e9afa4093a4") ++ID3D11VkExtContext2 : public ID3D11VkExtContext1 { ++ ++ virtual bool STDMETHODCALLTYPE MarkRenderStartLFX2( ++ void* lfx2Frame) = 0; ++ ++ virtual bool STDMETHODCALLTYPE MarkRenderEndLFX2( ++ void* lfx2Frame) = 0; ++ ++}; ++ + + #ifndef _MSC_VER + __CRT_UUID_DECL(ID3D11VkExtShader, 0xbb8a4fb9,0x3935,0x4762,0xb4,0x4b,0x35,0x18,0x9a,0x26,0x41,0x4a); +@@ -189,4 +201,5 @@ __CRT_UUID_DECL(ID3D11VkExtDevice, 0x8a6e3c42,0xf74c,0x45b7,0x82,0x65,0x + __CRT_UUID_DECL(ID3D11VkExtDevice1, 0xcfcf64ef,0x9586,0x46d0,0xbc,0xa4,0x97,0xcf,0x2c,0xa6,0x1b,0x06); + __CRT_UUID_DECL(ID3D11VkExtContext, 0xfd0bca13,0x5cb6,0x4c3a,0x98,0x7e,0x47,0x50,0xde,0x2c,0xa7,0x91); + __CRT_UUID_DECL(ID3D11VkExtContext1, 0x874b09b2,0xae0b,0x41d8,0x84,0x76,0x5f,0x3b,0x7a,0x0e,0x87,0x9d); ++__CRT_UUID_DECL(ID3D11VkExtContext2, 0x6e65f21a,0x0ecd,0x4e76,0x8f,0xaf,0x9e,0x9a,0xfa,0x40,0x93,0xa4); + #endif +diff --git a/src/dxvk/dxvk_cmdlist.cpp b/src/dxvk/dxvk_cmdlist.cpp +index 3bd3aa95..ad190fc0 100644 +--- a/src/dxvk/dxvk_cmdlist.cpp ++++ b/src/dxvk/dxvk_cmdlist.cpp +@@ -170,7 +170,8 @@ namespace dxvk { + DxvkCommandList::DxvkCommandList(DxvkDevice* device) + : m_device (device), + m_vkd (device->vkd()), +- m_vki (device->instance()->vki()) { ++ m_vki (device->instance()->vki()), ++ m_lfx2Tracker (device) { + const auto& graphicsQueue = m_device->queues().graphics; + const auto& transferQueue = m_device->queues().transfer; + +@@ -374,6 +375,7 @@ namespace dxvk { + // Return query and event handles + m_gpuQueryTracker.reset(); + m_gpuEventTracker.reset(); ++ m_lfx2Tracker.reset(); + + // Less important stuff + m_signalTracker.reset(); +diff --git a/src/dxvk/dxvk_cmdlist.h b/src/dxvk/dxvk_cmdlist.h +index 1934b9a0..110a7ccc 100644 +--- a/src/dxvk/dxvk_cmdlist.h ++++ b/src/dxvk/dxvk_cmdlist.h +@@ -1,6 +1,7 @@ + #pragma once + + #include ++#include + + #include "dxvk_bind_mask.h" + #include "dxvk_buffer.h" +@@ -17,6 +18,7 @@ + #include "dxvk_sparse.h" + #include "dxvk_staging.h" + #include "dxvk_stats.h" ++#include "dxvk_lfx2.h" + + namespace dxvk { + +@@ -319,12 +321,17 @@ namespace dxvk { + m_signalTracker.add(signal, value); + } + ++ void trackLatencyMarker(void *lfx2Frame, Rc timestampQuery, bool end) { ++ m_lfx2Tracker.add(lfx2Frame, std::move(timestampQuery), end); ++ } ++ + /** + * \brief Notifies resources and signals + */ + void notifyObjects() { + m_resources.notify(); + m_signalTracker.notify(); ++ m_lfx2Tracker.notify(); + } + + /** +@@ -1050,6 +1057,7 @@ namespace dxvk { + DxvkGpuQueryTracker m_gpuQueryTracker; + DxvkBufferTracker m_bufferTracker; + DxvkStatCounters m_statCounters; ++ DxvkLfx2Tracker m_lfx2Tracker; + + DxvkCommandSubmission m_commandSubmission; + +diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp +index bbd139ed..a5f1cd9c 100644 +--- a/src/dxvk/dxvk_context.cpp ++++ b/src/dxvk/dxvk_context.cpp +@@ -6444,4 +6444,8 @@ namespace dxvk { + this->beginCurrentCommands(); + } + ++ void DxvkContext::trackLatencyMarker(void *frame, Rc timestampQuery, bool end) { ++ m_cmd->trackLatencyMarker(frame, std::move(timestampQuery), end); ++ } ++ + } +diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h +index b1fbc7df..1379cef6 100644 +--- a/src/dxvk/dxvk_context.h ++++ b/src/dxvk/dxvk_context.h +@@ -1388,6 +1388,8 @@ namespace dxvk { + m_cmd->addStatCtr(counter, value); + } + ++ void trackLatencyMarker(void *frame, Rc timestampQuery, bool end); ++ + private: + + Rc m_device; +diff --git a/src/dxvk/dxvk_device.h b/src/dxvk/dxvk_device.h +index a24ee311..5b3a1f04 100644 +--- a/src/dxvk/dxvk_device.h ++++ b/src/dxvk/dxvk_device.h +@@ -98,6 +98,10 @@ namespace dxvk { + Rc vkd() const { + return m_vkd; + } ++ ++ const DxvkLfx2 &lfx2() const { ++ return m_lfx2; ++ } + + /** + * \brief Logical device handle +@@ -542,6 +546,7 @@ namespace dxvk { + Rc m_instance; + Rc m_adapter; + Rc m_vkd; ++ DxvkLfx2 m_lfx2; + + DxvkDeviceFeatures m_features; + DxvkDeviceInfo m_properties; +diff --git a/src/dxvk/dxvk_extensions.h b/src/dxvk/dxvk_extensions.h +index ae4c8a74..ac0f4853 100644 +--- a/src/dxvk/dxvk_extensions.h ++++ b/src/dxvk/dxvk_extensions.h +@@ -297,6 +297,7 @@ namespace dxvk { + DxvkExt amdMemoryOverallocationBehaviour = { VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt amdShaderFragmentMask = { VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt extAttachmentFeedbackLoopLayout = { VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME, DxvkExtMode::Optional }; ++ DxvkExt extCalibratedTimestamps = { VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt extConservativeRasterization = { VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt extCustomBorderColor = { VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, DxvkExtMode::Optional }; + DxvkExt extDepthClipEnable = { VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, DxvkExtMode::Optional }; +diff --git a/src/dxvk/dxvk_gpu_query.h b/src/dxvk/dxvk_gpu_query.h +index 919d0e26..acf1654e 100644 +--- a/src/dxvk/dxvk_gpu_query.h ++++ b/src/dxvk/dxvk_gpu_query.h +@@ -11,6 +11,7 @@ + namespace dxvk { + + class DxvkCommandList; ++ class DxvkDevice; + + class DxvkGpuQueryPool; + class DxvkGpuQueryAllocator; +diff --git a/src/dxvk/dxvk_lfx2.cpp b/src/dxvk/dxvk_lfx2.cpp +new file mode 100644 +index 00000000..ccb1ad1e +--- /dev/null ++++ b/src/dxvk/dxvk_lfx2.cpp +@@ -0,0 +1,98 @@ ++#include "dxvk_lfx2.h" ++ ++#include "../util/util_time.h" ++#include "dxvk_device.h" ++ ++namespace dxvk { ++ ++ DxvkLfx2::DxvkLfx2() { ++ const auto lfxModuleName = "latencyflex2_rust.dll"; ++ ++ m_lfxModule = ::LoadLibraryA(lfxModuleName); ++ if (m_lfxModule == nullptr) { ++ Logger::err(str::format("Failed to load ", lfxModuleName)); ++ return; ++ } ++ ++#define LOAD_PFN(x) \ ++ this->x = GetProcAddress("lfx2" #x) ++ ++ LOAD_PFN(ContextCreate); ++ LOAD_PFN(ContextAddRef); ++ LOAD_PFN(ContextRelease); ++ LOAD_PFN(FrameCreate); ++ LOAD_PFN(FrameAddRef); ++ LOAD_PFN(FrameRelease); ++ LOAD_PFN(MarkSection); ++ LOAD_PFN(SleepUntil); ++ LOAD_PFN(TimestampNow); ++ ++#undef LOAD_PFN ++ } ++ ++ DxvkLfx2::~DxvkLfx2() { ++ if (m_lfxModule == nullptr) ++ return; ++ ++ ::FreeLibrary(m_lfxModule); ++ m_lfxModule = nullptr; ++ } ++ ++ template ++ T DxvkLfx2::GetProcAddress(const char* name) { ++ return reinterpret_cast(reinterpret_cast(::GetProcAddress(m_lfxModule, name))); ++ } ++ ++ DxvkLfx2Tracker::DxvkLfx2Tracker(DxvkDevice *device) : m_device(device) { ++ } ++ ++ void DxvkLfx2Tracker::add(void *lfx2Frame, Rc query, bool end) { ++ m_query[end] = std::move(query); ++ m_frame_handle[end] = lfx2Frame; ++ } ++ ++ void DxvkLfx2Tracker::notify() { ++ for (uint32_t i = 0; i < 2; i++) { ++ Rc &query = m_query[i]; ++ if (query.ptr()) { ++ DxvkQueryData queryData; // NOLINT(cppcoreguidelines-pro-type-member-init) ++ DxvkGpuQueryStatus status; ++ while ((status = query->getData(queryData)) == DxvkGpuQueryStatus::Pending); ++ ++ if (status == DxvkGpuQueryStatus::Available) { ++ uint64_t gpuTimestamp = queryData.timestamp.time; ++ VkCalibratedTimestampInfoEXT calibratedTimestampInfo[2]; ++ uint64_t calibratedTimestamps[2]; ++ uint64_t maxDeviation[2]; ++ calibratedTimestampInfo[0].sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT; ++ calibratedTimestampInfo[0].pNext = nullptr; ++ calibratedTimestampInfo[0].timeDomain = VK_TIME_DOMAIN_DEVICE_EXT; ++ calibratedTimestampInfo[1].sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT; ++ calibratedTimestampInfo[1].pNext = nullptr; ++ calibratedTimestampInfo[1].timeDomain = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT; ++ m_device->vkd()->vkGetCalibratedTimestampsEXT(m_device->handle(), 2, calibratedTimestampInfo, ++ calibratedTimestamps, maxDeviation); ++ ++ uint64_t hostNsTimestamp = dxvk::high_resolution_clock::to_ns(calibratedTimestamps[1]); ++ int64_t gpuTimestampDelta = gpuTimestamp - calibratedTimestamps[0]; ++ int64_t timestamp = hostNsTimestamp + (int64_t) (gpuTimestampDelta * ++ (double) m_device->adapter()->deviceProperties().limits.timestampPeriod); ++ ++ m_device->lfx2().MarkSection(static_cast(m_frame_handle[i]), ++ 1000, i == 0 ? lfx2MarkType::lfx2MarkTypeBegin : lfx2MarkType::lfx2MarkTypeEnd, timestamp); ++ m_device->lfx2().FrameRelease(static_cast(m_frame_handle[i])); ++ } ++ } ++ } ++ } ++ ++ void DxvkLfx2Tracker::reset() { ++ for (auto &i: m_query) { ++ i = nullptr; ++ } ++ for (auto &i: m_frame_handle) { ++ i = nullptr; ++ } ++ } ++ ++} // dxvk +\ No newline at end of file +diff --git a/src/dxvk/dxvk_lfx2.h b/src/dxvk/dxvk_lfx2.h +new file mode 100644 +index 00000000..f56fa608 +--- /dev/null ++++ b/src/dxvk/dxvk_lfx2.h +@@ -0,0 +1,48 @@ ++#pragma once ++ ++#include "dxvk_gpu_query.h" ++#include "latencyflex2.h" ++ ++namespace dxvk { ++ ++ class DxvkLfx2 { ++ public: ++ DxvkLfx2(); ++ virtual ~DxvkLfx2(); ++ ++#define DECLARE_PFN(x) \ ++ decltype(&::lfx2##x) x {} ++ ++ DECLARE_PFN(ContextCreate); ++ DECLARE_PFN(ContextAddRef); ++ DECLARE_PFN(ContextRelease); ++ DECLARE_PFN(FrameCreate); ++ DECLARE_PFN(FrameAddRef); ++ DECLARE_PFN(FrameRelease); ++ DECLARE_PFN(MarkSection); ++ DECLARE_PFN(SleepUntil); ++ DECLARE_PFN(TimestampNow); ++ ++#undef DECLARE_PFN ++ ++ private: ++ template ++ T GetProcAddress(const char* name); ++ ++ HMODULE m_lfxModule{}; ++ }; ++ ++ class DxvkLfx2Tracker { ++ public: ++ explicit DxvkLfx2Tracker(DxvkDevice *device); ++ void add(void *lfx2Frame, Rc query, bool end); ++ void reset(); ++ void notify(); ++ ++ private: ++ DxvkDevice *m_device; ++ Rc m_query[2]{}; ++ void *m_frame_handle[2]{}; ++ }; ++ ++} // dxvk +\ No newline at end of file +diff --git a/src/dxvk/meson.build b/src/dxvk/meson.build +index 2bf46c5f..fa174987 100644 +--- a/src/dxvk/meson.build ++++ b/src/dxvk/meson.build +@@ -82,6 +82,7 @@ dxvk_src = [ + 'dxvk_image.cpp', + 'dxvk_instance.cpp', + 'dxvk_lifetime.cpp', ++ 'dxvk_lfx2.cpp', + 'dxvk_memory.cpp', + 'dxvk_meta_blit.cpp', + 'dxvk_meta_clear.cpp', +diff --git a/src/util/util_time.h b/src/util/util_time.h +index bcc311b6..c62f1065 100644 +--- a/src/util/util_time.h ++++ b/src/util/util_time.h +@@ -23,13 +23,17 @@ namespace dxvk { + } + + static inline time_point get_time_from_counter(int64_t counter) { ++ return time_point(duration(to_ns(counter))); ++ } ++ ++ static inline int64_t to_ns(int64_t counter) { + // Keep the frequency static, this doesn't change at all. + static const int64_t freq = get_frequency(); + + const int64_t whole = (counter / freq) * period::den; + const int64_t part = (counter % freq) * period::den / freq; + +- return time_point(duration(whole + part)); ++ return whole + part; + } + + static inline int64_t get_frequency() { +diff --git a/src/vulkan/vulkan_loader.h b/src/vulkan/vulkan_loader.h +index 1741ccb8..630dfb7b 100644 +--- a/src/vulkan/vulkan_loader.h ++++ b/src/vulkan/vulkan_loader.h +@@ -452,6 +452,11 @@ namespace dxvk::vk { + VULKAN_FN(wine_vkAcquireKeyedMutex); + VULKAN_FN(wine_vkReleaseKeyedMutex); + #endif ++ ++ #ifdef VK_EXT_calibrated_timestamps ++ VULKAN_FN(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT); ++ VULKAN_FN(vkGetCalibratedTimestampsEXT); ++ #endif + }; + + } +-- +2.43.0 + + +From cf40b68b9e9423f4653c3a3b7aa7765686cf86e5 Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Sat, 31 Dec 2022 23:30:09 +0900 +Subject: [PATCH 02/12] unix compat for ci + +--- + src/dxvk/dxvk_lfx2.cpp | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/src/dxvk/dxvk_lfx2.cpp b/src/dxvk/dxvk_lfx2.cpp +index ccb1ad1e..1bea5bbe 100644 +--- a/src/dxvk/dxvk_lfx2.cpp ++++ b/src/dxvk/dxvk_lfx2.cpp +@@ -2,11 +2,16 @@ + + #include "../util/util_time.h" + #include "dxvk_device.h" ++#include "../util/util_win32_compat.h" + + namespace dxvk { + + DxvkLfx2::DxvkLfx2() { ++#ifdef _WIN32 + const auto lfxModuleName = "latencyflex2_rust.dll"; ++#else ++ const auto lfxModuleName = "liblatencyflex2_rust.so"; ++#endif + + m_lfxModule = ::LoadLibraryA(lfxModuleName); + if (m_lfxModule == nullptr) { +@@ -38,9 +43,9 @@ namespace dxvk { + m_lfxModule = nullptr; + } + +- template +- T DxvkLfx2::GetProcAddress(const char* name) { +- return reinterpret_cast(reinterpret_cast(::GetProcAddress(m_lfxModule, name))); ++ template ++ T DxvkLfx2::GetProcAddress(const char *name) { ++ return reinterpret_cast(reinterpret_cast(::GetProcAddress(m_lfxModule, name))); + } + + DxvkLfx2Tracker::DxvkLfx2Tracker(DxvkDevice *device) : m_device(device) { +@@ -79,7 +84,8 @@ namespace dxvk { + (double) m_device->adapter()->deviceProperties().limits.timestampPeriod); + + m_device->lfx2().MarkSection(static_cast(m_frame_handle[i]), +- 1000, i == 0 ? lfx2MarkType::lfx2MarkTypeBegin : lfx2MarkType::lfx2MarkTypeEnd, timestamp); ++ 1000, i == 0 ? lfx2MarkType::lfx2MarkTypeBegin : lfx2MarkType::lfx2MarkTypeEnd, ++ timestamp); + m_device->lfx2().FrameRelease(static_cast(m_frame_handle[i])); + } + } +-- +2.43.0 + + +From 57357cc438286dcaf38138eccde080d8fdab299a Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Sat, 31 Dec 2022 23:33:17 +0900 +Subject: [PATCH 03/12] more win32 compat for ci + +--- + src/dxvk/dxvk_lfx2.cpp | 13 ++++++++++++- + src/dxvk/dxvk_lfx2.h | 3 +++ + src/util/util_time.h | 6 +----- + 3 files changed, 16 insertions(+), 6 deletions(-) + +diff --git a/src/dxvk/dxvk_lfx2.cpp b/src/dxvk/dxvk_lfx2.cpp +index 1bea5bbe..494256d5 100644 +--- a/src/dxvk/dxvk_lfx2.cpp ++++ b/src/dxvk/dxvk_lfx2.cpp +@@ -31,6 +31,9 @@ namespace dxvk { + LOAD_PFN(MarkSection); + LOAD_PFN(SleepUntil); + LOAD_PFN(TimestampNow); ++#ifdef _WIN32 ++ LOAD_PFN(TimestampFromQpc); ++#endif + + #undef LOAD_PFN + } +@@ -74,11 +77,19 @@ namespace dxvk { + calibratedTimestampInfo[0].timeDomain = VK_TIME_DOMAIN_DEVICE_EXT; + calibratedTimestampInfo[1].sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT; + calibratedTimestampInfo[1].pNext = nullptr; ++#ifdef _WIN32 + calibratedTimestampInfo[1].timeDomain = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT; ++#else ++ calibratedTimestampInfo[1].timeDomain = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT; ++#endif + m_device->vkd()->vkGetCalibratedTimestampsEXT(m_device->handle(), 2, calibratedTimestampInfo, + calibratedTimestamps, maxDeviation); + +- uint64_t hostNsTimestamp = dxvk::high_resolution_clock::to_ns(calibratedTimestamps[1]); ++#ifdef _WIN32 ++ uint64_t hostNsTimestamp = m_device->lfx2().TimestampFromQpc(calibratedTimestamps[1]); ++#else ++ uint64_t hostNsTimestamp = calibratedTimestamps[1]; ++#endif + int64_t gpuTimestampDelta = gpuTimestamp - calibratedTimestamps[0]; + int64_t timestamp = hostNsTimestamp + (int64_t) (gpuTimestampDelta * + (double) m_device->adapter()->deviceProperties().limits.timestampPeriod); +diff --git a/src/dxvk/dxvk_lfx2.h b/src/dxvk/dxvk_lfx2.h +index f56fa608..1f5c5b5f 100644 +--- a/src/dxvk/dxvk_lfx2.h ++++ b/src/dxvk/dxvk_lfx2.h +@@ -22,6 +22,9 @@ namespace dxvk { + DECLARE_PFN(MarkSection); + DECLARE_PFN(SleepUntil); + DECLARE_PFN(TimestampNow); ++#ifdef _WIN32 ++ DECLARE_PFN(TimestampFromQpc); ++#endif + + #undef DECLARE_PFN + +diff --git a/src/util/util_time.h b/src/util/util_time.h +index c62f1065..bcc311b6 100644 +--- a/src/util/util_time.h ++++ b/src/util/util_time.h +@@ -23,17 +23,13 @@ namespace dxvk { + } + + static inline time_point get_time_from_counter(int64_t counter) { +- return time_point(duration(to_ns(counter))); +- } +- +- static inline int64_t to_ns(int64_t counter) { + // Keep the frequency static, this doesn't change at all. + static const int64_t freq = get_frequency(); + + const int64_t whole = (counter / freq) * period::den; + const int64_t part = (counter % freq) * period::den / freq; + +- return whole + part; ++ return time_point(duration(whole + part)); + } + + static inline int64_t get_frequency() { +-- +2.43.0 + + +From 3f02471745b7fdcf7301f1e32552b768282bb235 Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Sun, 1 Jan 2023 16:04:13 +0900 +Subject: [PATCH 04/12] deconstify + +--- + include/latencyflex2.h | 14 +++++++------- + src/d3d11/d3d11_context_ext.cpp | 8 ++++---- + src/dxvk/dxvk_lfx2.cpp | 4 ++-- + 3 files changed, 13 insertions(+), 13 deletions(-) + +diff --git a/include/latencyflex2.h b/include/latencyflex2.h +index 5513093c..6978e2af 100644 +--- a/include/latencyflex2.h ++++ b/include/latencyflex2.h +@@ -39,20 +39,20 @@ LFX2_API lfx2Timestamp lfx2TimestampFromQpc(uint64_t qpc); + + LFX2_API void lfx2SleepUntil(lfx2Timestamp target); + +-LFX2_API const lfx2Context *lfx2ContextCreate(); ++LFX2_API lfx2Context *lfx2ContextCreate(); + +-LFX2_API void lfx2ContextAddRef(const lfx2Context *context); ++LFX2_API void lfx2ContextAddRef(lfx2Context *context); + +-LFX2_API void lfx2ContextRelease(const lfx2Context *context); ++LFX2_API void lfx2ContextRelease(lfx2Context *context); + +-LFX2_API const lfx2Frame *lfx2FrameCreate(const lfx2Context *context, lfx2Timestamp *out_timestamp); ++LFX2_API lfx2Frame *lfx2FrameCreate(lfx2Context *context, lfx2Timestamp *out_timestamp); + +-LFX2_API void lfx2FrameAddRef(const lfx2Frame *frame); ++LFX2_API void lfx2FrameAddRef(lfx2Frame *frame); + +-LFX2_API void lfx2FrameRelease(const lfx2Frame *frame); ++LFX2_API void lfx2FrameRelease(lfx2Frame *frame); + + LFX2_API +-void lfx2MarkSection(const lfx2Frame *frame, ++void lfx2MarkSection(lfx2Frame *frame, + lfx2SectionId section_id, + lfx2MarkType mark_type, + lfx2Timestamp timestamp); +diff --git a/src/d3d11/d3d11_context_ext.cpp b/src/d3d11/d3d11_context_ext.cpp +index be412630..cd1a7d1d 100644 +--- a/src/d3d11/d3d11_context_ext.cpp ++++ b/src/d3d11/d3d11_context_ext.cpp +@@ -219,10 +219,10 @@ namespace dxvk { + bool STDMETHODCALLTYPE D3D11DeviceContextExt::MarkRenderStartLFX2(void *frame) { + auto query = m_ctx->m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); + +- m_ctx->m_device->lfx2().FrameAddRef(static_cast(frame)); ++ m_ctx->m_device->lfx2().FrameAddRef(static_cast(frame)); + m_ctx->EmitCs([query, frame, cDevice = m_ctx->m_device] (DxvkContext* ctx) { + auto &cLfx2 = cDevice->lfx2(); +- cLfx2.MarkSection(static_cast(frame), 800, lfx2MarkType::lfx2MarkTypeBegin, cLfx2.TimestampNow()); ++ cLfx2.MarkSection(static_cast(frame), 800, lfx2MarkType::lfx2MarkTypeBegin, cLfx2.TimestampNow()); + ctx->writeTimestamp(query); + ctx->trackLatencyMarker(frame, query, false); + }); +@@ -233,10 +233,10 @@ namespace dxvk { + bool STDMETHODCALLTYPE D3D11DeviceContextExt::MarkRenderEndLFX2(void *frame) { + auto query = m_ctx->m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); + +- m_ctx->m_device->lfx2().FrameAddRef(static_cast(frame)); ++ m_ctx->m_device->lfx2().FrameAddRef(static_cast(frame)); + m_ctx->EmitCs([query, frame, cDevice = m_ctx->m_device] (DxvkContext* ctx) { + auto &cLfx2 = cDevice->lfx2(); +- cLfx2.MarkSection(static_cast(frame), 800, lfx2MarkType::lfx2MarkTypeEnd, cLfx2.TimestampNow()); ++ cLfx2.MarkSection(static_cast(frame), 800, lfx2MarkType::lfx2MarkTypeEnd, cLfx2.TimestampNow()); + ctx->writeTimestamp(query); + ctx->trackLatencyMarker(frame, query, true); + }); +diff --git a/src/dxvk/dxvk_lfx2.cpp b/src/dxvk/dxvk_lfx2.cpp +index 494256d5..f56bcb51 100644 +--- a/src/dxvk/dxvk_lfx2.cpp ++++ b/src/dxvk/dxvk_lfx2.cpp +@@ -94,10 +94,10 @@ namespace dxvk { + int64_t timestamp = hostNsTimestamp + (int64_t) (gpuTimestampDelta * + (double) m_device->adapter()->deviceProperties().limits.timestampPeriod); + +- m_device->lfx2().MarkSection(static_cast(m_frame_handle[i]), ++ m_device->lfx2().MarkSection(static_cast(m_frame_handle[i]), + 1000, i == 0 ? lfx2MarkType::lfx2MarkTypeBegin : lfx2MarkType::lfx2MarkTypeEnd, + timestamp); +- m_device->lfx2().FrameRelease(static_cast(m_frame_handle[i])); ++ m_device->lfx2().FrameRelease(static_cast(m_frame_handle[i])); + } + } + } +-- +2.43.0 + + +From 3e359e1ba2a7a5da872bbd42b2e3a5e5ccb2dce2 Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Mon, 2 Jan 2023 12:08:47 +0900 +Subject: [PATCH 05/12] pch + +--- + src/d3d11/meson.build | 1 + + src/d3d9/meson.build | 1 + + src/dxvk/meson.build | 1 + + src/pch/d3d11_pch.h | 9 +++++++++ + src/pch/d3d9_pch.h | 7 +++++++ + src/pch/dxvk_pch.h | 7 +++++++ + 6 files changed, 26 insertions(+) + create mode 100644 src/pch/d3d11_pch.h + create mode 100644 src/pch/d3d9_pch.h + create mode 100644 src/pch/dxvk_pch.h + +diff --git a/src/d3d11/meson.build b/src/d3d11/meson.build +index 9b51e6ea..218d7c6a 100644 +--- a/src/d3d11/meson.build ++++ b/src/d3d11/meson.build +@@ -86,6 +86,7 @@ d3d11_dll = shared_library('d3d11'+dll_ext, dxgi_common_src + d3d11_src + d3d10_ + vs_module_defs : 'd3d11'+def_spec_ext, + link_args : d3d11_ld_args, + link_depends : [ d3d11_link_depends ], ++ cpp_pch : '../pch/d3d11_pch.h', + ) + + d3d11_dep = declare_dependency( +diff --git a/src/d3d9/meson.build b/src/d3d9/meson.build +index dd6b2316..dc2aa1fb 100644 +--- a/src/d3d9/meson.build ++++ b/src/d3d9/meson.build +@@ -65,6 +65,7 @@ d3d9_dll = shared_library('d3d9'+dll_ext, d3d9_src, glsl_generator.process(d3d9_ + vs_module_defs : 'd3d9'+def_spec_ext, + link_args : d3d9_ld_args, + link_depends : [ d3d9_link_depends ], ++ cpp_pch : '../pch/d3d9_pch.h', + ) + + d3d9_dep = declare_dependency( +diff --git a/src/dxvk/meson.build b/src/dxvk/meson.build +index fa174987..73fc4c71 100644 +--- a/src/dxvk/meson.build ++++ b/src/dxvk/meson.build +@@ -144,6 +144,7 @@ dxvk_lib = static_library('dxvk', dxvk_src, glsl_generator.process(dxvk_shaders) + link_with : [ util_lib, spirv_lib, wsi_lib ], + dependencies : [ vkcommon_dep ] + dxvk_extra_deps, + include_directories : [ dxvk_include_path ], ++ cpp_pch : '../pch/dxvk_pch.h', + ) + + dxvk_dep = declare_dependency( +diff --git a/src/pch/d3d11_pch.h b/src/pch/d3d11_pch.h +new file mode 100644 +index 00000000..0989dd0d +--- /dev/null ++++ b/src/pch/d3d11_pch.h +@@ -0,0 +1,9 @@ ++#include "../dxvk/dxvk_adapter.h" ++#include "../dxvk/dxvk_buffer.h" ++#include "../dxvk/dxvk_device.h" ++#include "d3d11_context.h" ++#include "d3d11_device.h" ++#include "../util/util_string.h" ++#include "../util/util_env.h" ++#include "../util/log/log.h" ++#include "../util/thread.h" +\ No newline at end of file +diff --git a/src/pch/d3d9_pch.h b/src/pch/d3d9_pch.h +new file mode 100644 +index 00000000..1d9e06b2 +--- /dev/null ++++ b/src/pch/d3d9_pch.h +@@ -0,0 +1,7 @@ ++#include "../dxvk/dxvk_adapter.h" ++#include "../dxvk/dxvk_buffer.h" ++#include "../dxvk/dxvk_device.h" ++#include "../util/util_string.h" ++#include "../util/util_env.h" ++#include "../util/log/log.h" ++#include "../util/thread.h" +\ No newline at end of file +diff --git a/src/pch/dxvk_pch.h b/src/pch/dxvk_pch.h +new file mode 100644 +index 00000000..081d583b +--- /dev/null ++++ b/src/pch/dxvk_pch.h +@@ -0,0 +1,7 @@ ++#include "dxvk_adapter.h" ++#include "dxvk_buffer.h" ++#include "dxvk_device.h" ++#include "../util/util_string.h" ++#include "../util/util_env.h" ++#include "../util/log/log.h" ++#include "../util/thread.h" +\ No newline at end of file +-- +2.43.0 + + +From 424a50594af6c38f3e7e76412f1dc2dd5b6ad07d Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Mon, 2 Jan 2023 22:34:42 +0900 +Subject: [PATCH 06/12] Frame wrapper conversion, add implicit frame support + +--- + src/d3d11/d3d11_context_ext.cpp | 27 +++----- + src/d3d11/d3d11_context_ext.h | 2 - + src/d3d11/d3d11_context_imm.cpp | 1 + + src/d3d11/d3d11_context_imm.h | 2 + + src/d3d11/d3d11_device.cpp | 9 +-- + src/d3d11/d3d11_device.h | 6 +- + src/d3d11/d3d11_interfaces.h | 8 +++ + src/d3d11/d3d11_swapchain.cpp | 1 + + src/dxvk/dxvk_cmdlist.h | 4 +- + src/dxvk/dxvk_context.cpp | 35 +++++++++- + src/dxvk/dxvk_context.h | 7 +- + src/dxvk/dxvk_cs.cpp | 2 +- + src/dxvk/dxvk_device.cpp | 5 ++ + src/dxvk/dxvk_device.h | 7 +- + src/dxvk/dxvk_gpu_query.cpp | 2 +- + src/dxvk/dxvk_lfx2.cpp | 109 +++++++++++++++++++++++++++++--- + src/dxvk/dxvk_lfx2.h | 44 +++++++++++-- + 17 files changed, 222 insertions(+), 49 deletions(-) + +diff --git a/src/d3d11/d3d11_context_ext.cpp b/src/d3d11/d3d11_context_ext.cpp +index cd1a7d1d..3e33f2dc 100644 +--- a/src/d3d11/d3d11_context_ext.cpp ++++ b/src/d3d11/d3d11_context_ext.cpp +@@ -218,13 +218,13 @@ namespace dxvk { + template + bool STDMETHODCALLTYPE D3D11DeviceContextExt::MarkRenderStartLFX2(void *frame) { + auto query = m_ctx->m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); ++ auto frameWrapper = Lfx2Frame(m_ctx->m_device->lfx2(), static_cast(frame)); + +- m_ctx->m_device->lfx2().FrameAddRef(static_cast(frame)); +- m_ctx->EmitCs([query, frame, cDevice = m_ctx->m_device] (DxvkContext* ctx) { ++ m_ctx->EmitCs([query, cDevice = m_ctx->m_device, frameWrapper] (DxvkContext* ctx) { + auto &cLfx2 = cDevice->lfx2(); +- cLfx2.MarkSection(static_cast(frame), 800, lfx2MarkType::lfx2MarkTypeBegin, cLfx2.TimestampNow()); ++ cLfx2.MarkSection(frameWrapper, 800, lfx2MarkType::lfx2MarkTypeBegin, cLfx2.TimestampNow()); + ctx->writeTimestamp(query); +- ctx->trackLatencyMarker(frame, query, false); ++ ctx->trackLatencyMarker(frameWrapper, query, false); + }); + return true; + } +@@ -232,28 +232,17 @@ namespace dxvk { + template + bool STDMETHODCALLTYPE D3D11DeviceContextExt::MarkRenderEndLFX2(void *frame) { + auto query = m_ctx->m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); ++ auto frameWrapper = Lfx2Frame(m_ctx->m_device->lfx2(), static_cast(frame)); + +- m_ctx->m_device->lfx2().FrameAddRef(static_cast(frame)); +- m_ctx->EmitCs([query, frame, cDevice = m_ctx->m_device] (DxvkContext* ctx) { ++ m_ctx->EmitCs([query, cDevice = m_ctx->m_device, frameWrapper] (DxvkContext* ctx) { + auto &cLfx2 = cDevice->lfx2(); +- cLfx2.MarkSection(static_cast(frame), 800, lfx2MarkType::lfx2MarkTypeEnd, cLfx2.TimestampNow()); ++ cLfx2.MarkSection(frameWrapper, 800, lfx2MarkType::lfx2MarkTypeEnd, cLfx2.TimestampNow()); + ctx->writeTimestamp(query); +- ctx->trackLatencyMarker(frame, query, true); ++ ctx->trackLatencyMarker(frameWrapper, query, true); + }); + return true; + } + +- template +- bool STDMETHODCALLTYPE D3D11DeviceContextExt::SleepAndBeginFrameLFX2() { +- Logger::err("SleepAndBeginFrameLFX2 should be only called on an immediate context"); +- return false; +- } +- +- template<> +- bool STDMETHODCALLTYPE D3D11DeviceContextExt::SleepAndBeginFrameLFX2() { +- return true; +- } +- + template class D3D11DeviceContextExt; + template class D3D11DeviceContextExt; + +diff --git a/src/d3d11/d3d11_context_ext.h b/src/d3d11/d3d11_context_ext.h +index e9951d27..3b17d1f5 100644 +--- a/src/d3d11/d3d11_context_ext.h ++++ b/src/d3d11/d3d11_context_ext.h +@@ -75,8 +75,6 @@ namespace dxvk { + + bool STDMETHODCALLTYPE MarkRenderEndLFX2(void *lfx2Frame); + +- bool STDMETHODCALLTYPE SleepAndBeginFrameLFX2(); +- + private: + + ContextType* m_ctx; +diff --git a/src/d3d11/d3d11_context_imm.cpp b/src/d3d11/d3d11_context_imm.cpp +index 466e9a96..32e3eb78 100644 +--- a/src/d3d11/d3d11_context_imm.cpp ++++ b/src/d3d11/d3d11_context_imm.cpp +@@ -842,6 +842,7 @@ namespace dxvk { + D3D10DeviceLock lock = LockContext(); + + EmitCs([] (DxvkContext* ctx) { ++ ctx->endLfx2Frame(); + ctx->endFrame(); + }); + } +diff --git a/src/d3d11/d3d11_context_imm.h b/src/d3d11/d3d11_context_imm.h +index 3e683250..ffd2c703 100644 +--- a/src/d3d11/d3d11_context_imm.h ++++ b/src/d3d11/d3d11_context_imm.h +@@ -182,6 +182,8 @@ namespace dxvk { + HANDLE hEvent, + BOOL Synchronize); + ++ private: ++ Lfx2Frame m_implicitLfx2Frame {}; + }; + + } +diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp +index 078dcb4b..0353109d 100644 +--- a/src/d3d11/d3d11_device.cpp ++++ b/src/d3d11/d3d11_device.cpp +@@ -2784,10 +2784,10 @@ namespace dxvk { + return static_cast(got->second); + } + ++ void D3D11DeviceExt::EnqueueImplicitFrameLFX2(void *frame) { ++ m_device->GetDXVKDevice()->getImplicitLfx2Context()->EnqueueFrame(Lfx2Frame(m_device->GetDXVKDevice()->lfx2(), reinterpret_cast(frame))); ++ } + +- +- +- + D3D11VideoDevice::D3D11VideoDevice( + D3D11DXGIDevice* pContainer, + D3D11Device* pDevice) +@@ -3141,7 +3141,8 @@ namespace dxvk { + } + + if (riid == __uuidof(ID3D11VkExtDevice) +- || riid == __uuidof(ID3D11VkExtDevice1)) { ++ || riid == __uuidof(ID3D11VkExtDevice1) ++ || riid == __uuidof(ID3D11VkExtDevice2)) { + *ppvObject = ref(&m_d3d11DeviceExt); + return S_OK; + } +diff --git a/src/d3d11/d3d11_device.h b/src/d3d11/d3d11_device.h +index 7a44b5ad..129353be 100644 +--- a/src/d3d11/d3d11_device.h ++++ b/src/d3d11/d3d11_device.h +@@ -507,7 +507,7 @@ namespace dxvk { + /** + * \brief Extended D3D11 device + */ +- class D3D11DeviceExt : public ID3D11VkExtDevice1 { ++ class D3D11DeviceExt : public ID3D11VkExtDevice2 { + + public: + +@@ -561,7 +561,9 @@ namespace dxvk { + const D3D11_SAMPLER_DESC* pSamplerDesc, + ID3D11SamplerState** ppSamplerState, + uint32_t* pDriverHandle); +- ++ ++ void STDMETHODCALLTYPE EnqueueImplicitFrameLFX2(void *lfx2Frame) override; ++ + private: + + D3D11DXGIDevice* m_container; +diff --git a/src/d3d11/d3d11_interfaces.h b/src/d3d11/d3d11_interfaces.h +index 77ad12ba..f7b8e6d2 100644 +--- a/src/d3d11/d3d11_interfaces.h ++++ b/src/d3d11/d3d11_interfaces.h +@@ -115,6 +115,13 @@ ID3D11VkExtDevice1 : public ID3D11VkExtDevice { + uint32_t* pCudaTextureHandle) = 0; + }; + ++MIDL_INTERFACE("a1a5185c-0c43-4608-91a0-97a0cd098d48") ++ID3D11VkExtDevice2 : public ID3D11VkExtDevice1 { ++ ++ virtual void STDMETHODCALLTYPE EnqueueImplicitFrameLFX2(void *lfx2Frame) = 0; ++ ++}; ++ + + /** + * \brief Extended D3D11 context +@@ -199,6 +206,7 @@ ID3D11VkExtContext2 : public ID3D11VkExtContext1 { + __CRT_UUID_DECL(ID3D11VkExtShader, 0xbb8a4fb9,0x3935,0x4762,0xb4,0x4b,0x35,0x18,0x9a,0x26,0x41,0x4a); + __CRT_UUID_DECL(ID3D11VkExtDevice, 0x8a6e3c42,0xf74c,0x45b7,0x82,0x65,0xa2,0x31,0xb6,0x77,0xca,0x17); + __CRT_UUID_DECL(ID3D11VkExtDevice1, 0xcfcf64ef,0x9586,0x46d0,0xbc,0xa4,0x97,0xcf,0x2c,0xa6,0x1b,0x06); ++__CRT_UUID_DECL(ID3D11VkExtDevice2, 0xa1a5185c,0x0c43,0x4608,0x91,0xa0,0x97,0xa0,0xcd,0x09,0x8d,0x48); + __CRT_UUID_DECL(ID3D11VkExtContext, 0xfd0bca13,0x5cb6,0x4c3a,0x98,0x7e,0x47,0x50,0xde,0x2c,0xa7,0x91); + __CRT_UUID_DECL(ID3D11VkExtContext1, 0x874b09b2,0xae0b,0x41d8,0x84,0x76,0x5f,0x3b,0x7a,0x0e,0x87,0x9d); + __CRT_UUID_DECL(ID3D11VkExtContext2, 0x6e65f21a,0x0ecd,0x4e76,0x8f,0xaf,0x9e,0x9a,0xfa,0x40,0x93,0xa4); +diff --git a/src/d3d11/d3d11_swapchain.cpp b/src/d3d11/d3d11_swapchain.cpp +index 73939e2c..f37486bc 100644 +--- a/src/d3d11/d3d11_swapchain.cpp ++++ b/src/d3d11/d3d11_swapchain.cpp +@@ -450,6 +450,7 @@ namespace dxvk { + // Ensure that we can safely destroy the swap chain + m_device->waitForSubmission(&m_presentStatus); + m_device->waitForIdle(); ++ m_device->getImplicitLfx2Context()->Reset(); + + m_presentStatus.result = VK_SUCCESS; + m_dirtyHdrMetadata = true; +diff --git a/src/dxvk/dxvk_cmdlist.h b/src/dxvk/dxvk_cmdlist.h +index 110a7ccc..55507bb8 100644 +--- a/src/dxvk/dxvk_cmdlist.h ++++ b/src/dxvk/dxvk_cmdlist.h +@@ -321,8 +321,8 @@ namespace dxvk { + m_signalTracker.add(signal, value); + } + +- void trackLatencyMarker(void *lfx2Frame, Rc timestampQuery, bool end) { +- m_lfx2Tracker.add(lfx2Frame, std::move(timestampQuery), end); ++ void trackLatencyMarker(Lfx2Frame lfx2Frame, Rc timestampQuery, bool end) { ++ m_lfx2Tracker.add(std::move(lfx2Frame), std::move(timestampQuery), end); + } + + /** +diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp +index a5f1cd9c..319b292d 100644 +--- a/src/dxvk/dxvk_context.cpp ++++ b/src/dxvk/dxvk_context.cpp +@@ -6444,8 +6444,39 @@ namespace dxvk { + this->beginCurrentCommands(); + } + +- void DxvkContext::trackLatencyMarker(void *frame, Rc timestampQuery, bool end) { +- m_cmd->trackLatencyMarker(frame, std::move(timestampQuery), end); ++ void DxvkContext::trackLatencyMarker(Lfx2Frame frame, Rc timestampQuery, bool end) { ++ m_cmd->trackLatencyMarker(std::move(frame), std::move(timestampQuery), end); ++ } ++ ++ void DxvkContext::tryBeginLfx2Frame(bool critical) { ++ if (m_type != DxvkContextType::Primary) ++ Logger::err("beginLfx2Frame should only be called on immediate contexts"); ++ if (!m_lfx2Frame) { ++ m_lfx2Frame = m_device->getImplicitLfx2Context()->DequeueFrame(critical); ++ if (m_lfx2Frame) { ++ auto query = m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); ++ m_device->lfx2().MarkSection(m_lfx2Frame, ++ 800, lfx2MarkType::lfx2MarkTypeBegin, ++ m_device->lfx2().TimestampNow()); ++ writeTimestamp(query); ++ trackLatencyMarker(m_lfx2Frame, query, false); ++ } ++ } ++ } ++ ++ void DxvkContext::endLfx2Frame() { ++ if (m_type != DxvkContextType::Primary) ++ Logger::err("endLfx2Frame should only be called on immediate contexts"); ++ tryBeginLfx2Frame(true); ++ if (m_lfx2Frame) { ++ auto query = m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); ++ m_device->lfx2().MarkSection(m_lfx2Frame, ++ 800, lfx2MarkType::lfx2MarkTypeEnd, ++ m_device->lfx2().TimestampNow()); ++ writeTimestamp(query); ++ trackLatencyMarker(m_lfx2Frame, query, true); ++ m_lfx2Frame = {}; ++ } + } + + } +diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h +index 1379cef6..ffd505ba 100644 +--- a/src/dxvk/dxvk_context.h ++++ b/src/dxvk/dxvk_context.h +@@ -67,6 +67,9 @@ namespace dxvk { + * \param [out] status Submission feedback + */ + void flushCommandList(DxvkSubmitStatus* status); ++ ++ void tryBeginLfx2Frame(bool critical); ++ void endLfx2Frame(); + + /** + * \brief Begins generating query data +@@ -1388,7 +1391,7 @@ namespace dxvk { + m_cmd->addStatCtr(counter, value); + } + +- void trackLatencyMarker(void *frame, Rc timestampQuery, bool end); ++ void trackLatencyMarker(Lfx2Frame frame, Rc timestampQuery, bool end); + + private: + +@@ -1434,6 +1437,8 @@ namespace dxvk { + std::array m_gpLookupCache = { }; + std::array m_cpLookupCache = { }; + ++ Lfx2Frame m_lfx2Frame = {}; ++ + void blitImageFb( + const Rc& dstImage, + const Rc& srcImage, +diff --git a/src/dxvk/dxvk_cs.cpp b/src/dxvk/dxvk_cs.cpp +index 5788ba82..fe1f4c3a 100644 +--- a/src/dxvk/dxvk_cs.cpp ++++ b/src/dxvk/dxvk_cs.cpp +@@ -175,7 +175,7 @@ namespace dxvk { + + for (auto& chunk : chunks) { + m_context->addStatCtr(DxvkStatCounter::CsChunkCount, 1); +- ++ m_context->tryBeginLfx2Frame(false); + chunk->executeAll(m_context.ptr()); + + // Use a separate mutex for the chunk counter, this +diff --git a/src/dxvk/dxvk_device.cpp b/src/dxvk/dxvk_device.cpp +index 9a053791..d133930f 100644 +--- a/src/dxvk/dxvk_device.cpp ++++ b/src/dxvk/dxvk_device.cpp +@@ -14,6 +14,7 @@ namespace dxvk { + m_instance (instance), + m_adapter (adapter), + m_vkd (vkd), ++ m_lfx2ImplicitContext(&m_lfx2), + m_features (features), + m_properties (adapter->devicePropertiesExt()), + m_perfHints (getPerfHints()), +@@ -339,4 +340,8 @@ namespace dxvk { + m_recycledCommandLists.returnObject(cmdList); + } + ++ DxvkLfx2ImplicitContext *DxvkDevice::getImplicitLfx2Context() { ++ return &m_lfx2ImplicitContext; ++ } ++ + } +diff --git a/src/dxvk/dxvk_device.h b/src/dxvk/dxvk_device.h +index 5b3a1f04..7fa12dc5 100644 +--- a/src/dxvk/dxvk_device.h ++++ b/src/dxvk/dxvk_device.h +@@ -99,7 +99,7 @@ namespace dxvk { + return m_vkd; + } + +- const DxvkLfx2 &lfx2() const { ++ const Lfx2Fn &lfx2() const { + return m_lfx2; + } + +@@ -538,6 +538,8 @@ namespace dxvk { + * used by the GPU can be safely destroyed. + */ + void waitForIdle(); ++ ++ DxvkLfx2ImplicitContext* getImplicitLfx2Context(); + + private: + +@@ -546,7 +548,8 @@ namespace dxvk { + Rc m_instance; + Rc m_adapter; + Rc m_vkd; +- DxvkLfx2 m_lfx2; ++ Lfx2Fn m_lfx2; ++ DxvkLfx2ImplicitContext m_lfx2ImplicitContext; + + DxvkDeviceFeatures m_features; + DxvkDeviceInfo m_properties; +diff --git a/src/dxvk/dxvk_gpu_query.cpp b/src/dxvk/dxvk_gpu_query.cpp +index aaec6a0f..5f4885f0 100644 +--- a/src/dxvk/dxvk_gpu_query.cpp ++++ b/src/dxvk/dxvk_gpu_query.cpp +@@ -340,7 +340,7 @@ namespace dxvk { + handle.queryId); + + cmd->cmdWriteTimestamp( +- VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, ++ VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, + handle.queryPool, + handle.queryId); + +diff --git a/src/dxvk/dxvk_lfx2.cpp b/src/dxvk/dxvk_lfx2.cpp +index f56bcb51..aa844668 100644 +--- a/src/dxvk/dxvk_lfx2.cpp ++++ b/src/dxvk/dxvk_lfx2.cpp +@@ -1,12 +1,14 @@ + #include "dxvk_lfx2.h" + ++#include ++ + #include "../util/util_time.h" + #include "dxvk_device.h" + #include "../util/util_win32_compat.h" + + namespace dxvk { + +- DxvkLfx2::DxvkLfx2() { ++ Lfx2Fn::Lfx2Fn() { + #ifdef _WIN32 + const auto lfxModuleName = "latencyflex2_rust.dll"; + #else +@@ -38,7 +40,7 @@ namespace dxvk { + #undef LOAD_PFN + } + +- DxvkLfx2::~DxvkLfx2() { ++ Lfx2Fn::~Lfx2Fn() { + if (m_lfxModule == nullptr) + return; + +@@ -47,16 +49,16 @@ namespace dxvk { + } + + template +- T DxvkLfx2::GetProcAddress(const char *name) { ++ T Lfx2Fn::GetProcAddress(const char *name) { + return reinterpret_cast(reinterpret_cast(::GetProcAddress(m_lfxModule, name))); + } + + DxvkLfx2Tracker::DxvkLfx2Tracker(DxvkDevice *device) : m_device(device) { + } + +- void DxvkLfx2Tracker::add(void *lfx2Frame, Rc query, bool end) { ++ void DxvkLfx2Tracker::add(Lfx2Frame lfx2Frame, Rc query, bool end) { + m_query[end] = std::move(query); +- m_frame_handle[end] = lfx2Frame; ++ m_frame_handle[end] = std::move(lfx2Frame); + } + + void DxvkLfx2Tracker::notify() { +@@ -94,10 +96,9 @@ namespace dxvk { + int64_t timestamp = hostNsTimestamp + (int64_t) (gpuTimestampDelta * + (double) m_device->adapter()->deviceProperties().limits.timestampPeriod); + +- m_device->lfx2().MarkSection(static_cast(m_frame_handle[i]), ++ m_device->lfx2().MarkSection(m_frame_handle[i], + 1000, i == 0 ? lfx2MarkType::lfx2MarkTypeBegin : lfx2MarkType::lfx2MarkTypeEnd, + timestamp); +- m_device->lfx2().FrameRelease(static_cast(m_frame_handle[i])); + } + } + } +@@ -108,8 +109,100 @@ namespace dxvk { + i = nullptr; + } + for (auto &i: m_frame_handle) { +- i = nullptr; ++ i = {}; ++ } ++ } ++ ++ DxvkLfx2ImplicitContext::DxvkLfx2ImplicitContext(Lfx2Fn *lfx2): m_lfx2(lfx2) { ++ } ++ ++ DxvkLfx2ImplicitContext::~DxvkLfx2ImplicitContext() { ++ std::lock_guard lock(m_mutex); ++ m_frames.clear(); ++ } ++ ++ void DxvkLfx2ImplicitContext::EnqueueFrame(Lfx2Frame frame) { ++ std::unique_lock lock(m_mutex, std::defer_lock); ++ if (m_needReset.load()) { ++ std::this_thread::sleep_for(std::chrono::milliseconds(200)); ++ lock.lock(); ++ Logger::info("Reset LFX2 context done"); ++ m_needReset.store(false); ++ m_frames.clear(); ++ } else { ++ lock.lock(); ++ } ++ m_frames.push_back(std::move(frame)); ++ if (m_frames.size() >= 16) { ++ Logger::info("Resetting LFX2 context: too many inflight frames"); ++ m_needReset.store(true); + } + } + ++ Lfx2Frame DxvkLfx2ImplicitContext::DequeueFrame(bool critical) { ++ if (m_needReset.load()) { ++ return {}; ++ } ++ std::lock_guard lock(m_mutex); ++ if (m_frames.empty()) { ++ if (critical) { ++ Logger::info("Resetting LFX2 context: no frames"); ++ m_needReset.store(true); ++ } ++ return {}; ++ } ++ Lfx2Frame frame = std::move(m_frames.front()); ++ m_frames.pop_front(); ++ return frame; ++ } ++ ++ void DxvkLfx2ImplicitContext::Reset() { ++ std::lock_guard lock(m_mutex); ++ Logger::info("Resetting LFX2 context: initiated by swapchain"); ++ m_needReset.store(true); ++ } ++ ++ Lfx2Frame::Lfx2Frame() { ++ ++ } ++ ++ Lfx2Frame::Lfx2Frame(const Lfx2Fn &lfx2, lfx2Frame *lfx2Frame) : m_lfx2(&lfx2), m_lfx2Frame(lfx2Frame) { ++ m_lfx2->FrameAddRef(m_lfx2Frame); ++ } ++ ++ Lfx2Frame::~Lfx2Frame() { ++ if (m_lfx2Frame != nullptr) ++ m_lfx2->FrameRelease(m_lfx2Frame); ++ } ++ ++ Lfx2Frame::Lfx2Frame(const Lfx2Frame &other): m_lfx2(other.m_lfx2), m_lfx2Frame(other.m_lfx2Frame) { ++ m_lfx2->FrameAddRef(m_lfx2Frame); ++ } ++ ++ Lfx2Frame::Lfx2Frame(Lfx2Frame &&other) noexcept : m_lfx2(other.m_lfx2), m_lfx2Frame(other.m_lfx2Frame) { ++ other.m_lfx2Frame = nullptr; ++ } ++ ++ Lfx2Frame &Lfx2Frame::operator=(const Lfx2Frame &other) { ++ if (this != &other) { ++ if (m_lfx2Frame != nullptr) ++ m_lfx2->FrameRelease(m_lfx2Frame); ++ ++ m_lfx2 = other.m_lfx2; ++ m_lfx2Frame = other.m_lfx2Frame; ++ m_lfx2->FrameAddRef(m_lfx2Frame); ++ } ++ ++ return *this; ++ } ++ ++ Lfx2Frame &Lfx2Frame::operator=(Lfx2Frame &&other) noexcept { ++ if (m_lfx2Frame != nullptr) ++ m_lfx2->FrameRelease(m_lfx2Frame); ++ ++ m_lfx2 = other.m_lfx2; ++ m_lfx2Frame = other.m_lfx2Frame; ++ other.m_lfx2Frame = nullptr; ++ return *this; ++ } + } // dxvk +\ No newline at end of file +diff --git a/src/dxvk/dxvk_lfx2.h b/src/dxvk/dxvk_lfx2.h +index 1f5c5b5f..809234dc 100644 +--- a/src/dxvk/dxvk_lfx2.h ++++ b/src/dxvk/dxvk_lfx2.h +@@ -1,14 +1,15 @@ + #pragma once + ++#include + #include "dxvk_gpu_query.h" + #include "latencyflex2.h" + + namespace dxvk { + +- class DxvkLfx2 { ++ class Lfx2Fn { + public: +- DxvkLfx2(); +- virtual ~DxvkLfx2(); ++ Lfx2Fn(); ++ virtual ~Lfx2Fn(); + + #define DECLARE_PFN(x) \ + decltype(&::lfx2##x) x {} +@@ -35,17 +36,50 @@ namespace dxvk { + HMODULE m_lfxModule{}; + }; + ++ class Lfx2Frame { ++ public: ++ Lfx2Frame(); ++ Lfx2Frame(const Lfx2Fn &lfx2, lfx2Frame *lfx2Frame); ++ Lfx2Frame(const Lfx2Frame &other); ++ Lfx2Frame(Lfx2Frame &&other) noexcept; ++ ~Lfx2Frame(); ++ ++ Lfx2Frame& operator=(const Lfx2Frame &other); ++ Lfx2Frame& operator=(Lfx2Frame &&other) noexcept; ++ ++ operator lfx2Frame *() const { return m_lfx2Frame; } ++ ++ private: ++ const Lfx2Fn *m_lfx2{}; ++ lfx2Frame *m_lfx2Frame{}; ++ }; ++ ++ class DxvkLfx2ImplicitContext { ++ public: ++ explicit DxvkLfx2ImplicitContext(Lfx2Fn *lfx2); ++ ~DxvkLfx2ImplicitContext(); ++ void EnqueueFrame(Lfx2Frame frame); ++ Lfx2Frame DequeueFrame(bool critical); ++ void Reset(); ++ ++ private: ++ Lfx2Fn *m_lfx2; ++ std::mutex m_mutex; ++ std::deque m_frames; ++ std::atomic_bool m_needReset = false; ++ }; ++ + class DxvkLfx2Tracker { + public: + explicit DxvkLfx2Tracker(DxvkDevice *device); +- void add(void *lfx2Frame, Rc query, bool end); ++ void add(Lfx2Frame frame, Rc query, bool end); + void reset(); + void notify(); + + private: + DxvkDevice *m_device; + Rc m_query[2]{}; +- void *m_frame_handle[2]{}; ++ Lfx2Frame m_frame_handle[2]{}; + }; + + } // dxvk +\ No newline at end of file +-- +2.43.0 + + +From b9171a2ff124c6bee91b4f36c0b0d9c1cd08e69c Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Sat, 7 Jan 2023 12:58:36 +0900 +Subject: [PATCH 07/12] Update to new LFX2 implicit context API + +--- + include/latencyflex2.h | 68 +++++++++++++++++++++++------------ + src/d3d11/d3d11_device.cpp | 4 +-- + src/d3d11/d3d11_device.h | 2 +- + src/d3d11/d3d11_interfaces.h | 2 +- + src/d3d11/d3d11_swapchain.cpp | 2 +- + src/dxvk/dxvk_context.cpp | 2 +- + src/dxvk/dxvk_lfx2.cpp | 57 +++++++++-------------------- + src/dxvk/dxvk_lfx2.h | 15 ++++---- + 8 files changed, 77 insertions(+), 75 deletions(-) + +diff --git a/include/latencyflex2.h b/include/latencyflex2.h +index 6978e2af..9de7a1cf 100644 +--- a/include/latencyflex2.h ++++ b/include/latencyflex2.h +@@ -1,12 +1,11 @@ + #ifndef LATENCYFLEX2_H + #define LATENCYFLEX2_H + +-#include +-#include +-#include +-#include +-#include +-#include ++#include ++#include ++#include ++#include ++#include + #ifdef _WIN32 + #define LFX2_API __declspec(dllimport) + #else +@@ -14,24 +13,29 @@ + #endif + + +-enum class lfx2MarkType { ++typedef enum lfx2MarkType { + lfx2MarkTypeBegin, + lfx2MarkTypeEnd, +-}; ++} lfx2MarkType; + +-struct lfx2Context; ++typedef struct lfx2Context lfx2Context; + +-/// A write handle for frame markers. +-struct lfx2Frame; ++/** ++ * A write handle for frame markers. ++ */ ++typedef struct lfx2Frame lfx2Frame; + +-using lfx2Timestamp = uint64_t; ++typedef struct lfx2ImplicitContext lfx2ImplicitContext; + +-using lfx2SectionId = uint32_t; ++typedef uint64_t lfx2Timestamp; + ++typedef uint32_t lfx2SectionId; + ++#ifdef __cplusplus + extern "C" { ++#endif // __cplusplus + +-LFX2_API lfx2Timestamp lfx2TimestampNow(); ++LFX2_API lfx2Timestamp lfx2TimestampNow(void); + + #if defined(_WIN32) + LFX2_API lfx2Timestamp lfx2TimestampFromQpc(uint64_t qpc); +@@ -39,24 +43,42 @@ LFX2_API lfx2Timestamp lfx2TimestampFromQpc(uint64_t qpc); + + LFX2_API void lfx2SleepUntil(lfx2Timestamp target); + +-LFX2_API lfx2Context *lfx2ContextCreate(); ++LFX2_API struct lfx2Context *lfx2ContextCreate(void); + +-LFX2_API void lfx2ContextAddRef(lfx2Context *context); ++LFX2_API void lfx2ContextAddRef(struct lfx2Context *context); + +-LFX2_API void lfx2ContextRelease(lfx2Context *context); ++LFX2_API void lfx2ContextRelease(struct lfx2Context *context); + +-LFX2_API lfx2Frame *lfx2FrameCreate(lfx2Context *context, lfx2Timestamp *out_timestamp); ++LFX2_API ++struct lfx2Frame *lfx2FrameCreate(struct lfx2Context *context, ++ lfx2Timestamp *out_timestamp); + +-LFX2_API void lfx2FrameAddRef(lfx2Frame *frame); ++LFX2_API void lfx2FrameAddRef(struct lfx2Frame *frame); + +-LFX2_API void lfx2FrameRelease(lfx2Frame *frame); ++LFX2_API void lfx2FrameRelease(struct lfx2Frame *frame); + + LFX2_API +-void lfx2MarkSection(lfx2Frame *frame, ++void lfx2MarkSection(struct lfx2Frame *frame, + lfx2SectionId section_id, +- lfx2MarkType mark_type, ++ enum lfx2MarkType mark_type, + lfx2Timestamp timestamp); + ++LFX2_API struct lfx2ImplicitContext *lfx2ImplicitContextCreate(void); ++ ++LFX2_API void lfx2ImplicitContextRelease(struct lfx2ImplicitContext *context); ++ ++LFX2_API void lfx2ImplicitContextReset(struct lfx2ImplicitContext *context); ++ ++LFX2_API ++void lfx2FrameCreateImplicit(struct lfx2ImplicitContext *context, ++ lfx2Timestamp *out_timestamp); ++ ++LFX2_API ++struct lfx2Frame *lfx2FrameDequeueImplicit(struct lfx2ImplicitContext *context, ++ bool critical); ++ ++#ifdef __cplusplus + } // extern "C" ++#endif // __cplusplus + +-#endif // LATENCYFLEX2_H ++#endif /* LATENCYFLEX2_H */ +diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp +index 0353109d..0bee3d3d 100644 +--- a/src/d3d11/d3d11_device.cpp ++++ b/src/d3d11/d3d11_device.cpp +@@ -2784,8 +2784,8 @@ namespace dxvk { + return static_cast(got->second); + } + +- void D3D11DeviceExt::EnqueueImplicitFrameLFX2(void *frame) { +- m_device->GetDXVKDevice()->getImplicitLfx2Context()->EnqueueFrame(Lfx2Frame(m_device->GetDXVKDevice()->lfx2(), reinterpret_cast(frame))); ++ void *D3D11DeviceExt::GetImplicitContextLFX2() { ++ return m_device->GetDXVKDevice()->getImplicitLfx2Context()->context(); + } + + D3D11VideoDevice::D3D11VideoDevice( +diff --git a/src/d3d11/d3d11_device.h b/src/d3d11/d3d11_device.h +index 129353be..ab4763ed 100644 +--- a/src/d3d11/d3d11_device.h ++++ b/src/d3d11/d3d11_device.h +@@ -562,7 +562,7 @@ namespace dxvk { + ID3D11SamplerState** ppSamplerState, + uint32_t* pDriverHandle); + +- void STDMETHODCALLTYPE EnqueueImplicitFrameLFX2(void *lfx2Frame) override; ++ void* STDMETHODCALLTYPE GetImplicitContextLFX2(); + + private: + +diff --git a/src/d3d11/d3d11_interfaces.h b/src/d3d11/d3d11_interfaces.h +index f7b8e6d2..b6d83e54 100644 +--- a/src/d3d11/d3d11_interfaces.h ++++ b/src/d3d11/d3d11_interfaces.h +@@ -118,7 +118,7 @@ ID3D11VkExtDevice1 : public ID3D11VkExtDevice { + MIDL_INTERFACE("a1a5185c-0c43-4608-91a0-97a0cd098d48") + ID3D11VkExtDevice2 : public ID3D11VkExtDevice1 { + +- virtual void STDMETHODCALLTYPE EnqueueImplicitFrameLFX2(void *lfx2Frame) = 0; ++ virtual void* STDMETHODCALLTYPE GetImplicitContextLFX2() = 0; + + }; + +diff --git a/src/d3d11/d3d11_swapchain.cpp b/src/d3d11/d3d11_swapchain.cpp +index f37486bc..4bae8609 100644 +--- a/src/d3d11/d3d11_swapchain.cpp ++++ b/src/d3d11/d3d11_swapchain.cpp +@@ -450,7 +450,7 @@ namespace dxvk { + // Ensure that we can safely destroy the swap chain + m_device->waitForSubmission(&m_presentStatus); + m_device->waitForIdle(); +- m_device->getImplicitLfx2Context()->Reset(); ++ m_device->getImplicitLfx2Context()->reset(); + + m_presentStatus.result = VK_SUCCESS; + m_dirtyHdrMetadata = true; +diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp +index 319b292d..b6fdbe93 100644 +--- a/src/dxvk/dxvk_context.cpp ++++ b/src/dxvk/dxvk_context.cpp +@@ -6452,7 +6452,7 @@ namespace dxvk { + if (m_type != DxvkContextType::Primary) + Logger::err("beginLfx2Frame should only be called on immediate contexts"); + if (!m_lfx2Frame) { +- m_lfx2Frame = m_device->getImplicitLfx2Context()->DequeueFrame(critical); ++ m_lfx2Frame = m_device->getImplicitLfx2Context()->dequeueFrame(critical); + if (m_lfx2Frame) { + auto query = m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); + m_device->lfx2().MarkSection(m_lfx2Frame, +diff --git a/src/dxvk/dxvk_lfx2.cpp b/src/dxvk/dxvk_lfx2.cpp +index aa844668..2caa8983 100644 +--- a/src/dxvk/dxvk_lfx2.cpp ++++ b/src/dxvk/dxvk_lfx2.cpp +@@ -36,6 +36,11 @@ namespace dxvk { + #ifdef _WIN32 + LOAD_PFN(TimestampFromQpc); + #endif ++ LOAD_PFN(ImplicitContextCreate); ++ LOAD_PFN(ImplicitContextRelease); ++ LOAD_PFN(ImplicitContextReset); ++ LOAD_PFN(FrameCreateImplicit); ++ LOAD_PFN(FrameDequeueImplicit); + + #undef LOAD_PFN + } +@@ -114,52 +119,23 @@ namespace dxvk { + } + + DxvkLfx2ImplicitContext::DxvkLfx2ImplicitContext(Lfx2Fn *lfx2): m_lfx2(lfx2) { ++ m_context = m_lfx2->ImplicitContextCreate(); + } + + DxvkLfx2ImplicitContext::~DxvkLfx2ImplicitContext() { +- std::lock_guard lock(m_mutex); +- m_frames.clear(); +- } +- +- void DxvkLfx2ImplicitContext::EnqueueFrame(Lfx2Frame frame) { +- std::unique_lock lock(m_mutex, std::defer_lock); +- if (m_needReset.load()) { +- std::this_thread::sleep_for(std::chrono::milliseconds(200)); +- lock.lock(); +- Logger::info("Reset LFX2 context done"); +- m_needReset.store(false); +- m_frames.clear(); +- } else { +- lock.lock(); +- } +- m_frames.push_back(std::move(frame)); +- if (m_frames.size() >= 16) { +- Logger::info("Resetting LFX2 context: too many inflight frames"); +- m_needReset.store(true); +- } ++ m_lfx2->ImplicitContextRelease(m_context); + } + +- Lfx2Frame DxvkLfx2ImplicitContext::DequeueFrame(bool critical) { +- if (m_needReset.load()) { +- return {}; +- } +- std::lock_guard lock(m_mutex); +- if (m_frames.empty()) { +- if (critical) { +- Logger::info("Resetting LFX2 context: no frames"); +- m_needReset.store(true); +- } +- return {}; +- } +- Lfx2Frame frame = std::move(m_frames.front()); +- m_frames.pop_front(); +- return frame; ++ Lfx2Frame DxvkLfx2ImplicitContext::dequeueFrame(bool critical) { ++ lfx2Frame *frame = m_lfx2->FrameDequeueImplicit(m_context, critical); ++ Lfx2Frame wrapper(*m_lfx2, frame); ++ if (frame) ++ m_lfx2->FrameRelease(frame); ++ return wrapper; + } + +- void DxvkLfx2ImplicitContext::Reset() { +- std::lock_guard lock(m_mutex); +- Logger::info("Resetting LFX2 context: initiated by swapchain"); +- m_needReset.store(true); ++ void DxvkLfx2ImplicitContext::reset() { ++ m_lfx2->ImplicitContextReset(m_context); + } + + Lfx2Frame::Lfx2Frame() { +@@ -167,7 +143,8 @@ namespace dxvk { + } + + Lfx2Frame::Lfx2Frame(const Lfx2Fn &lfx2, lfx2Frame *lfx2Frame) : m_lfx2(&lfx2), m_lfx2Frame(lfx2Frame) { +- m_lfx2->FrameAddRef(m_lfx2Frame); ++ if (m_lfx2Frame) ++ m_lfx2->FrameAddRef(m_lfx2Frame); + } + + Lfx2Frame::~Lfx2Frame() { +diff --git a/src/dxvk/dxvk_lfx2.h b/src/dxvk/dxvk_lfx2.h +index 809234dc..96c7931b 100644 +--- a/src/dxvk/dxvk_lfx2.h ++++ b/src/dxvk/dxvk_lfx2.h +@@ -26,6 +26,11 @@ namespace dxvk { + #ifdef _WIN32 + DECLARE_PFN(TimestampFromQpc); + #endif ++ DECLARE_PFN(ImplicitContextCreate); ++ DECLARE_PFN(ImplicitContextRelease); ++ DECLARE_PFN(ImplicitContextReset); ++ DECLARE_PFN(FrameCreateImplicit); ++ DECLARE_PFN(FrameDequeueImplicit); + + #undef DECLARE_PFN + +@@ -58,15 +63,13 @@ namespace dxvk { + public: + explicit DxvkLfx2ImplicitContext(Lfx2Fn *lfx2); + ~DxvkLfx2ImplicitContext(); +- void EnqueueFrame(Lfx2Frame frame); +- Lfx2Frame DequeueFrame(bool critical); +- void Reset(); ++ lfx2ImplicitContext *context() const { return m_context; } ++ Lfx2Frame dequeueFrame(bool critical); ++ void reset(); + + private: + Lfx2Fn *m_lfx2; +- std::mutex m_mutex; +- std::deque m_frames; +- std::atomic_bool m_needReset = false; ++ lfx2ImplicitContext *m_context; + }; + + class DxvkLfx2Tracker { +-- +2.43.0 + + +From 52ccfa0364dc2e61debeccf6df3d4f1dcb0e7d24 Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Sun, 8 Jan 2023 19:09:59 +0900 +Subject: [PATCH 08/12] Convert to new unified ID3DLfx2ExtDevice API + +--- + include/latencyflex2.h | 46 +++++++++++++++++++++++-- + src/d3d11/d3d11_context.cpp | 3 +- + src/d3d11/d3d11_context_ext.cpp | 28 ---------------- + src/d3d11/d3d11_context_ext.h | 6 +--- + src/d3d11/d3d11_context_imm.h | 1 + + src/d3d11/d3d11_device.cpp | 59 +++++++++++++++++++++++++++++---- + src/d3d11/d3d11_device.h | 29 ++++++++++++++-- + src/d3d11/d3d11_interfaces.h | 25 +++++--------- + 8 files changed, 134 insertions(+), 63 deletions(-) + +diff --git a/include/latencyflex2.h b/include/latencyflex2.h +index 9de7a1cf..91ab1397 100644 +--- a/include/latencyflex2.h ++++ b/include/latencyflex2.h +@@ -6,12 +6,24 @@ + #include + #include + #include ++#ifdef LFX2_DX12 ++#include ++#endif ++ + #ifdef _WIN32 + #define LFX2_API __declspec(dllimport) + #else + #define LFX2_API + #endif + ++#ifdef LFX2_DX12 ++typedef struct lfx2Dx12SubmitAux { ++ ID3D12GraphicsCommandList* executeBefore; ++ ID3D12GraphicsCommandList* executeAfter; ++ ID3D12Fence* fence; ++ uint64_t fenceValue; ++} lfx2Dx12SubmitAux; ++#endif + + typedef enum lfx2MarkType { + lfx2MarkTypeBegin, +@@ -20,6 +32,10 @@ typedef enum lfx2MarkType { + + typedef struct lfx2Context lfx2Context; + ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++typedef struct lfx2Dx12Context lfx2Dx12Context; ++#endif ++ + /** + * A write handle for frame markers. + */ +@@ -35,6 +51,32 @@ typedef uint32_t lfx2SectionId; + extern "C" { + #endif // __cplusplus + ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++LFX2_API struct lfx2Dx12Context *lfx2Dx12ContextCreate(ID3D12Device* device); ++#endif ++ ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++LFX2_API void lfx2Dx12ContextAddRef(struct lfx2Dx12Context *context); ++#endif ++ ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++LFX2_API void lfx2Dx12ContextRelease(struct lfx2Dx12Context *context); ++#endif ++ ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++LFX2_API ++lfx2Dx12SubmitAux lfx2Dx12ContextBeforeSubmit(struct lfx2Dx12Context *context, ++ ID3D12CommandQueue* queue); ++#endif ++ ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++LFX2_API void lfx2Dx12ContextBeginFrame(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++#endif ++ ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++LFX2_API void lfx2Dx12ContextEndFrame(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++#endif ++ + LFX2_API lfx2Timestamp lfx2TimestampNow(void); + + #if defined(_WIN32) +@@ -70,8 +112,8 @@ LFX2_API void lfx2ImplicitContextRelease(struct lfx2ImplicitContext *context); + LFX2_API void lfx2ImplicitContextReset(struct lfx2ImplicitContext *context); + + LFX2_API +-void lfx2FrameCreateImplicit(struct lfx2ImplicitContext *context, +- lfx2Timestamp *out_timestamp); ++struct lfx2Frame *lfx2FrameCreateImplicit(struct lfx2ImplicitContext *context, ++ lfx2Timestamp *out_timestamp); + + LFX2_API + struct lfx2Frame *lfx2FrameDequeueImplicit(struct lfx2ImplicitContext *context, +diff --git a/src/d3d11/d3d11_context.cpp b/src/d3d11/d3d11_context.cpp +index fd72258a..4b06ae38 100644 +--- a/src/d3d11/d3d11_context.cpp ++++ b/src/d3d11/d3d11_context.cpp +@@ -50,8 +50,7 @@ namespace dxvk { + } + + if (riid == __uuidof(ID3D11VkExtContext) +- || riid == __uuidof(ID3D11VkExtContext1) +- || riid == __uuidof(ID3D11VkExtContext2)) { ++ || riid == __uuidof(ID3D11VkExtContext1)) { + *ppvObject = ref(&m_contextExt); + return S_OK; + } +diff --git a/src/d3d11/d3d11_context_ext.cpp b/src/d3d11/d3d11_context_ext.cpp +index 3e33f2dc..6512656a 100644 +--- a/src/d3d11/d3d11_context_ext.cpp ++++ b/src/d3d11/d3d11_context_ext.cpp +@@ -215,34 +215,6 @@ namespace dxvk { + return true; + } + +- template +- bool STDMETHODCALLTYPE D3D11DeviceContextExt::MarkRenderStartLFX2(void *frame) { +- auto query = m_ctx->m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); +- auto frameWrapper = Lfx2Frame(m_ctx->m_device->lfx2(), static_cast(frame)); +- +- m_ctx->EmitCs([query, cDevice = m_ctx->m_device, frameWrapper] (DxvkContext* ctx) { +- auto &cLfx2 = cDevice->lfx2(); +- cLfx2.MarkSection(frameWrapper, 800, lfx2MarkType::lfx2MarkTypeBegin, cLfx2.TimestampNow()); +- ctx->writeTimestamp(query); +- ctx->trackLatencyMarker(frameWrapper, query, false); +- }); +- return true; +- } +- +- template +- bool STDMETHODCALLTYPE D3D11DeviceContextExt::MarkRenderEndLFX2(void *frame) { +- auto query = m_ctx->m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); +- auto frameWrapper = Lfx2Frame(m_ctx->m_device->lfx2(), static_cast(frame)); +- +- m_ctx->EmitCs([query, cDevice = m_ctx->m_device, frameWrapper] (DxvkContext* ctx) { +- auto &cLfx2 = cDevice->lfx2(); +- cLfx2.MarkSection(frameWrapper, 800, lfx2MarkType::lfx2MarkTypeEnd, cLfx2.TimestampNow()); +- ctx->writeTimestamp(query); +- ctx->trackLatencyMarker(frameWrapper, query, true); +- }); +- return true; +- } +- + template class D3D11DeviceContextExt; + template class D3D11DeviceContextExt; + +diff --git a/src/d3d11/d3d11_context_ext.h b/src/d3d11/d3d11_context_ext.h +index 3b17d1f5..6b95dcf9 100644 +--- a/src/d3d11/d3d11_context_ext.h ++++ b/src/d3d11/d3d11_context_ext.h +@@ -8,7 +8,7 @@ namespace dxvk { + class D3D11ImmediateContext; + + template +- class D3D11DeviceContextExt : public ID3D11VkExtContext2 { ++ class D3D11DeviceContextExt : public ID3D11VkExtContext1 { + + public: + +@@ -71,10 +71,6 @@ namespace dxvk { + void* const* pWriteResources, + uint32_t NumWriteResources); + +- bool STDMETHODCALLTYPE MarkRenderStartLFX2(void *lfx2Frame); +- +- bool STDMETHODCALLTYPE MarkRenderEndLFX2(void *lfx2Frame); +- + private: + + ContextType* m_ctx; +diff --git a/src/d3d11/d3d11_context_imm.h b/src/d3d11/d3d11_context_imm.h +index ffd2c703..f5b105e8 100644 +--- a/src/d3d11/d3d11_context_imm.h ++++ b/src/d3d11/d3d11_context_imm.h +@@ -18,6 +18,7 @@ namespace dxvk { + friend class D3D11SwapChain; + friend class D3D11VideoContext; + friend class D3D11DXGIKeyedMutex; ++ friend class D3D11DeviceLfx2Ext; + public: + + D3D11ImmediateContext( +diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp +index 0bee3d3d..a11b8835 100644 +--- a/src/d3d11/d3d11_device.cpp ++++ b/src/d3d11/d3d11_device.cpp +@@ -2784,10 +2784,6 @@ namespace dxvk { + return static_cast(got->second); + } + +- void *D3D11DeviceExt::GetImplicitContextLFX2() { +- return m_device->GetDXVKDevice()->getImplicitLfx2Context()->context(); +- } +- + D3D11VideoDevice::D3D11VideoDevice( + D3D11DXGIDevice* pContainer, + D3D11Device* pDevice) +@@ -3087,6 +3083,7 @@ namespace dxvk { + m_dxvkDevice (pDxvkDevice), + m_d3d11Device (this, FeatureLevel, FeatureFlags), + m_d3d11DeviceExt(this, &m_d3d11Device), ++ m_d3d11DeviceLfx2Ext(this, m_d3d11Device.m_context.ptr()), + m_d3d11Interop (this, &m_d3d11Device), + m_d3d11Video (this, &m_d3d11Device), + m_d3d11on12 (this, &m_d3d11Device, pD3D12Device, pD3D12Queue), +@@ -3141,11 +3138,15 @@ namespace dxvk { + } + + if (riid == __uuidof(ID3D11VkExtDevice) +- || riid == __uuidof(ID3D11VkExtDevice1) +- || riid == __uuidof(ID3D11VkExtDevice2)) { ++ || riid == __uuidof(ID3D11VkExtDevice1)) { + *ppvObject = ref(&m_d3d11DeviceExt); + return S_OK; + } ++ ++ if (riid == __uuidof(ID3DLfx2ExtDevice)) { ++ *ppvObject = ref(&m_d3d11DeviceLfx2Ext); ++ return S_OK; ++ } + + if (riid == __uuidof(IDXGIDXVKDevice)) { + *ppvObject = ref(&m_metaDevice); +@@ -3432,4 +3433,50 @@ namespace dxvk { + return m_dxvkDevice; + } + ++ D3D11DeviceLfx2Ext::D3D11DeviceLfx2Ext( ++ D3D11DXGIDevice* pContainer, ++ D3D11ImmediateContext* pImmediateContext) ++ : m_container(pContainer), m_immediateContext(pImmediateContext), m_dxvkDevice(pContainer->GetDXVKDevice()) { ++ ++ } ++ ++ HRESULT STDMETHODCALLTYPE D3D11DeviceLfx2Ext::QueryInterface(const IID &riid, void **ppvObject) { ++ return m_container->QueryInterface(riid, ppvObject); ++ } ++ ++ ULONG STDMETHODCALLTYPE D3D11DeviceLfx2Ext::AddRef() { ++ return m_container->AddRef(); ++ } ++ ++ ULONG STDMETHODCALLTYPE D3D11DeviceLfx2Ext::Release() { ++ return m_container->Release(); ++ } ++ ++ void STDMETHODCALLTYPE D3D11DeviceLfx2Ext::ImplicitBeginFrame(uint64_t *outTimestamp, void *outFrame) { ++ *(lfx2Frame **)outFrame = m_dxvkDevice->lfx2().FrameCreateImplicit(m_dxvkDevice->getImplicitLfx2Context()->context(), outTimestamp); ++ } ++ ++ void STDMETHODCALLTYPE D3D11DeviceLfx2Ext::MarkRenderStart(void *frame) { ++ auto query = m_dxvkDevice->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); ++ auto frameWrapper = Lfx2Frame(m_dxvkDevice->lfx2(), static_cast(frame)); ++ ++ m_immediateContext->EmitCs([query, cDevice = m_dxvkDevice, frameWrapper] (DxvkContext* ctx) { ++ auto &cLfx2 = cDevice->lfx2(); ++ cLfx2.MarkSection(frameWrapper, 800, lfx2MarkType::lfx2MarkTypeBegin, cLfx2.TimestampNow()); ++ ctx->writeTimestamp(query); ++ ctx->trackLatencyMarker(frameWrapper, query, false); ++ }); ++ } ++ ++ void STDMETHODCALLTYPE D3D11DeviceLfx2Ext::MarkRenderEnd(void *frame) { ++ auto query = m_dxvkDevice->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); ++ auto frameWrapper = Lfx2Frame(m_dxvkDevice->lfx2(), static_cast(frame)); ++ ++ m_immediateContext->EmitCs([query, cDevice = m_dxvkDevice, frameWrapper] (DxvkContext* ctx) { ++ auto &cLfx2 = cDevice->lfx2(); ++ cLfx2.MarkSection(frameWrapper, 800, lfx2MarkType::lfx2MarkTypeEnd, cLfx2.TimestampNow()); ++ ctx->writeTimestamp(query); ++ ctx->trackLatencyMarker(frameWrapper, query, true); ++ }); ++ } + } +diff --git a/src/d3d11/d3d11_device.h b/src/d3d11/d3d11_device.h +index ab4763ed..d0d6a285 100644 +--- a/src/d3d11/d3d11_device.h ++++ b/src/d3d11/d3d11_device.h +@@ -48,6 +48,7 @@ namespace dxvk { + * as part of a \ref D3D11DeviceContainer. + */ + class D3D11Device final : public ID3D11Device5 { ++ friend class D3D11DXGIDevice; + /// Maximum number of resource init commands per command buffer + constexpr static uint64_t InitCommandThreshold = 50; + public: +@@ -507,7 +508,7 @@ namespace dxvk { + /** + * \brief Extended D3D11 device + */ +- class D3D11DeviceExt : public ID3D11VkExtDevice2 { ++ class D3D11DeviceExt : public ID3D11VkExtDevice1 { + + public: + +@@ -562,8 +563,6 @@ namespace dxvk { + ID3D11SamplerState** ppSamplerState, + uint32_t* pDriverHandle); + +- void* STDMETHODCALLTYPE GetImplicitContextLFX2(); +- + private: + + D3D11DXGIDevice* m_container; +@@ -698,6 +697,29 @@ namespace dxvk { + + }; + ++ class D3D11DeviceLfx2Ext : public ID3DLfx2ExtDevice { ++ public: ++ D3D11DeviceLfx2Ext(D3D11DXGIDevice *pContainer, ++ D3D11ImmediateContext *pImmediateContext); ++ ++ HRESULT STDMETHODCALLTYPE QueryInterface(const IID &riid, void **ppvObject); ++ ++ ULONG STDMETHODCALLTYPE AddRef(); ++ ++ ULONG STDMETHODCALLTYPE Release(); ++ ++ void STDMETHODCALLTYPE ImplicitBeginFrame(uint64_t *outTimestamp, void *outFrame); ++ ++ void STDMETHODCALLTYPE MarkRenderStart(void *frame); ++ ++ void STDMETHODCALLTYPE MarkRenderEnd(void *frame); ++ ++ private: ++ D3D11DXGIDevice *m_container; ++ D3D11ImmediateContext *m_immediateContext; ++ const Rc m_dxvkDevice; ++ }; ++ + + /** + * \brief DXVK swap chain factory +@@ -860,6 +882,7 @@ namespace dxvk { + + D3D11Device m_d3d11Device; + D3D11DeviceExt m_d3d11DeviceExt; ++ D3D11DeviceLfx2Ext m_d3d11DeviceLfx2Ext; + D3D11VkInterop m_d3d11Interop; + D3D11VideoDevice m_d3d11Video; + D3D11on12Device m_d3d11on12; +diff --git a/src/d3d11/d3d11_interfaces.h b/src/d3d11/d3d11_interfaces.h +index b6d83e54..35bbedf0 100644 +--- a/src/d3d11/d3d11_interfaces.h ++++ b/src/d3d11/d3d11_interfaces.h +@@ -115,10 +115,14 @@ ID3D11VkExtDevice1 : public ID3D11VkExtDevice { + uint32_t* pCudaTextureHandle) = 0; + }; + +-MIDL_INTERFACE("a1a5185c-0c43-4608-91a0-97a0cd098d48") +-ID3D11VkExtDevice2 : public ID3D11VkExtDevice1 { ++MIDL_INTERFACE("851a9f0f-5da0-4850-b563-a7bbc414f4e6") ++ID3DLfx2ExtDevice : public IUnknown { + +- virtual void* STDMETHODCALLTYPE GetImplicitContextLFX2() = 0; ++ virtual void STDMETHODCALLTYPE MarkRenderStart(void *frame) = 0; ++ ++ virtual void STDMETHODCALLTYPE MarkRenderEnd(void *frame) = 0; ++ ++ virtual void STDMETHODCALLTYPE ImplicitBeginFrame(uint64_t *outTimestamp, void *outFrame) = 0; + + }; + +@@ -190,24 +194,11 @@ ID3D11VkExtContext1 : public ID3D11VkExtContext { + uint32_t numWriteResources) = 0; + }; + +-MIDL_INTERFACE("6e65f21a-0ecd-4e76-8faf-9e9afa4093a4") +-ID3D11VkExtContext2 : public ID3D11VkExtContext1 { +- +- virtual bool STDMETHODCALLTYPE MarkRenderStartLFX2( +- void* lfx2Frame) = 0; +- +- virtual bool STDMETHODCALLTYPE MarkRenderEndLFX2( +- void* lfx2Frame) = 0; +- +-}; +- +- + #ifndef _MSC_VER + __CRT_UUID_DECL(ID3D11VkExtShader, 0xbb8a4fb9,0x3935,0x4762,0xb4,0x4b,0x35,0x18,0x9a,0x26,0x41,0x4a); + __CRT_UUID_DECL(ID3D11VkExtDevice, 0x8a6e3c42,0xf74c,0x45b7,0x82,0x65,0xa2,0x31,0xb6,0x77,0xca,0x17); + __CRT_UUID_DECL(ID3D11VkExtDevice1, 0xcfcf64ef,0x9586,0x46d0,0xbc,0xa4,0x97,0xcf,0x2c,0xa6,0x1b,0x06); +-__CRT_UUID_DECL(ID3D11VkExtDevice2, 0xa1a5185c,0x0c43,0x4608,0x91,0xa0,0x97,0xa0,0xcd,0x09,0x8d,0x48); ++__CRT_UUID_DECL(ID3DLfx2ExtDevice, 0x851a9f0f,0x5da0,0x4850,0xb5,0x63,0xa7,0xbb,0xc4,0x14,0xf4,0xe6); + __CRT_UUID_DECL(ID3D11VkExtContext, 0xfd0bca13,0x5cb6,0x4c3a,0x98,0x7e,0x47,0x50,0xde,0x2c,0xa7,0x91); + __CRT_UUID_DECL(ID3D11VkExtContext1, 0x874b09b2,0xae0b,0x41d8,0x84,0x76,0x5f,0x3b,0x7a,0x0e,0x87,0x9d); +-__CRT_UUID_DECL(ID3D11VkExtContext2, 0x6e65f21a,0x0ecd,0x4e76,0x8f,0xaf,0x9e,0x9a,0xfa,0x40,0x93,0xa4); + #endif +-- +2.43.0 + + +From 8a374ead0982bdf5e3d466979e5ba436fc7e1cff Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Fri, 13 Jan 2023 18:56:54 +0900 +Subject: [PATCH 09/12] Don't call FreeLibrary within unload callback + +In attempt to fix shutdown hang. +--- + src/dxvk/dxvk_lfx2.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/dxvk/dxvk_lfx2.cpp b/src/dxvk/dxvk_lfx2.cpp +index 2caa8983..4d5298db 100644 +--- a/src/dxvk/dxvk_lfx2.cpp ++++ b/src/dxvk/dxvk_lfx2.cpp +@@ -49,6 +49,10 @@ namespace dxvk { + if (m_lfxModule == nullptr) + return; + ++ // Calling FreeLibrary deadlocks if called from DllMain. ++ if (this_thread::isInModuleDetachment()) ++ return; ++ + ::FreeLibrary(m_lfxModule); + m_lfxModule = nullptr; + } +-- +2.43.0 + + +From 1437bedd1b98814040ad3356d3272654f8c1516d Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Sun, 15 Jan 2023 12:51:34 +0900 +Subject: [PATCH 10/12] Port to new LFX2 Vulkan Context API + +--- + include/latencyflex2.h | 73 +++++++++++++++++++++++---------- + src/d3d11/d3d11_context_imm.cpp | 2 +- + src/d3d11/d3d11_device.cpp | 15 +++---- + src/dxvk/dxvk_cmdlist.cpp | 15 +++++-- + src/dxvk/dxvk_cmdlist.h | 12 +++--- + src/dxvk/dxvk_context.cpp | 27 ++++-------- + src/dxvk/dxvk_context.h | 2 - + src/dxvk/dxvk_device.cpp | 7 ++++ + src/dxvk/dxvk_device.h | 2 + + src/dxvk/dxvk_lfx2.cpp | 66 +++-------------------------- + src/dxvk/dxvk_lfx2.h | 19 +++------ + 11 files changed, 106 insertions(+), 134 deletions(-) + +diff --git a/include/latencyflex2.h b/include/latencyflex2.h +index 91ab1397..9e8d1536 100644 +--- a/include/latencyflex2.h ++++ b/include/latencyflex2.h +@@ -1,11 +1,17 @@ + #ifndef LATENCYFLEX2_H + #define LATENCYFLEX2_H + ++#define LFX2_VK ++ + #include + #include + #include + #include + #include ++#ifdef LFX2_VK ++#include ++#endif ++ + #ifdef LFX2_DX12 + #include + #endif +@@ -16,15 +22,6 @@ + #define LFX2_API + #endif + +-#ifdef LFX2_DX12 +-typedef struct lfx2Dx12SubmitAux { +- ID3D12GraphicsCommandList* executeBefore; +- ID3D12GraphicsCommandList* executeAfter; +- ID3D12Fence* fence; +- uint64_t fenceValue; +-} lfx2Dx12SubmitAux; +-#endif +- + typedef enum lfx2MarkType { + lfx2MarkTypeBegin, + lfx2MarkTypeEnd, +@@ -43,37 +40,49 @@ typedef struct lfx2Frame lfx2Frame; + + typedef struct lfx2ImplicitContext lfx2ImplicitContext; + ++#if defined(LFX2_VK) ++typedef struct lfx2VulkanContext lfx2VulkanContext; ++#endif ++ ++#if (defined(LFX2_DX12) && defined(_WIN32)) ++typedef struct lfx2Dx12SubmitAux { ++ ID3D12GraphicsCommandList* execute_before; ++ ID3D12GraphicsCommandList* execute_after; ++ ID3D12Fence* signal_fence; ++ uint64_t signal_fence_value; ++} lfx2Dx12SubmitAux; ++#endif ++ + typedef uint64_t lfx2Timestamp; + + typedef uint32_t lfx2SectionId; + ++#if defined(LFX2_VK) ++typedef struct lfx2VulkanSubmitAux { ++ VkCommandBuffer submit_before; ++ VkCommandBuffer submit_after; ++ VkSemaphore signal_sem; ++ uint64_t signal_sem_value; ++} lfx2VulkanSubmitAux; ++#endif ++ + #ifdef __cplusplus + extern "C" { + #endif // __cplusplus + + #if (defined(LFX2_DX12) && defined(_WIN32)) + LFX2_API struct lfx2Dx12Context *lfx2Dx12ContextCreate(ID3D12Device* device); +-#endif + +-#if (defined(LFX2_DX12) && defined(_WIN32)) + LFX2_API void lfx2Dx12ContextAddRef(struct lfx2Dx12Context *context); +-#endif + +-#if (defined(LFX2_DX12) && defined(_WIN32)) + LFX2_API void lfx2Dx12ContextRelease(struct lfx2Dx12Context *context); +-#endif + +-#if (defined(LFX2_DX12) && defined(_WIN32)) + LFX2_API +-lfx2Dx12SubmitAux lfx2Dx12ContextBeforeSubmit(struct lfx2Dx12Context *context, +- ID3D12CommandQueue* queue); +-#endif ++struct lfx2Dx12SubmitAux lfx2Dx12ContextBeforeSubmit(struct lfx2Dx12Context *context, ++ ID3D12CommandQueue* queue); + +-#if (defined(LFX2_DX12) && defined(_WIN32)) + LFX2_API void lfx2Dx12ContextBeginFrame(struct lfx2Dx12Context *context, struct lfx2Frame *frame); +-#endif + +-#if (defined(LFX2_DX12) && defined(_WIN32)) + LFX2_API void lfx2Dx12ContextEndFrame(struct lfx2Dx12Context *context, struct lfx2Frame *frame); + #endif + +@@ -119,6 +128,28 @@ LFX2_API + struct lfx2Frame *lfx2FrameDequeueImplicit(struct lfx2ImplicitContext *context, + bool critical); + ++#if defined(LFX2_VK) ++LFX2_API ++struct lfx2VulkanContext *lfx2VulkanContextCreate(PFN_vkGetInstanceProcAddr gipa, ++ VkInstance instance, ++ VkPhysicalDevice physical_device, ++ VkDevice device, ++ uint32_t queue_family_index); ++ ++LFX2_API void lfx2VulkanContextAddRef(struct lfx2VulkanContext *context); ++ ++LFX2_API void lfx2VulkanContextRelease(struct lfx2VulkanContext *context); ++ ++LFX2_API ++struct lfx2VulkanSubmitAux lfx2VulkanContextBeforeSubmit(struct lfx2VulkanContext *context); ++ ++LFX2_API ++void lfx2VulkanContextBeginFrame(struct lfx2VulkanContext *context, ++ struct lfx2Frame *frame); ++ ++LFX2_API void lfx2VulkanContextEndFrame(struct lfx2VulkanContext *context, struct lfx2Frame *frame); ++#endif ++ + #ifdef __cplusplus + } // extern "C" + #endif // __cplusplus +diff --git a/src/d3d11/d3d11_context_imm.cpp b/src/d3d11/d3d11_context_imm.cpp +index 32e3eb78..767956c2 100644 +--- a/src/d3d11/d3d11_context_imm.cpp ++++ b/src/d3d11/d3d11_context_imm.cpp +@@ -842,8 +842,8 @@ namespace dxvk { + D3D10DeviceLock lock = LockContext(); + + EmitCs([] (DxvkContext* ctx) { +- ctx->endLfx2Frame(); + ctx->endFrame(); ++ ctx->endLfx2Frame(); + }); + } + +diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp +index a11b8835..ea39e6fe 100644 +--- a/src/d3d11/d3d11_device.cpp ++++ b/src/d3d11/d3d11_device.cpp +@@ -3457,26 +3457,21 @@ namespace dxvk { + } + + void STDMETHODCALLTYPE D3D11DeviceLfx2Ext::MarkRenderStart(void *frame) { +- auto query = m_dxvkDevice->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); + auto frameWrapper = Lfx2Frame(m_dxvkDevice->lfx2(), static_cast(frame)); + +- m_immediateContext->EmitCs([query, cDevice = m_dxvkDevice, frameWrapper] (DxvkContext* ctx) { ++ m_immediateContext->EmitCs([cDevice = m_dxvkDevice, frameWrapper] (DxvkContext* ctx) { + auto &cLfx2 = cDevice->lfx2(); +- cLfx2.MarkSection(frameWrapper, 800, lfx2MarkType::lfx2MarkTypeBegin, cLfx2.TimestampNow()); +- ctx->writeTimestamp(query); +- ctx->trackLatencyMarker(frameWrapper, query, false); ++ cLfx2.VulkanContextBeginFrame(cDevice->getLfx2VkContext(), frameWrapper); + }); + } + + void STDMETHODCALLTYPE D3D11DeviceLfx2Ext::MarkRenderEnd(void *frame) { +- auto query = m_dxvkDevice->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); + auto frameWrapper = Lfx2Frame(m_dxvkDevice->lfx2(), static_cast(frame)); + +- m_immediateContext->EmitCs([query, cDevice = m_dxvkDevice, frameWrapper] (DxvkContext* ctx) { ++ m_immediateContext->EmitCs([cDevice = m_dxvkDevice, frameWrapper] (DxvkContext* ctx) { + auto &cLfx2 = cDevice->lfx2(); +- cLfx2.MarkSection(frameWrapper, 800, lfx2MarkType::lfx2MarkTypeEnd, cLfx2.TimestampNow()); +- ctx->writeTimestamp(query); +- ctx->trackLatencyMarker(frameWrapper, query, true); ++ ctx->flushCommandList(); ++ cLfx2.VulkanContextEndFrame(cDevice->getLfx2VkContext(), frameWrapper); + }); + } + } +diff --git a/src/dxvk/dxvk_cmdlist.cpp b/src/dxvk/dxvk_cmdlist.cpp +index ad190fc0..a38fea40 100644 +--- a/src/dxvk/dxvk_cmdlist.cpp ++++ b/src/dxvk/dxvk_cmdlist.cpp +@@ -170,8 +170,7 @@ namespace dxvk { + DxvkCommandList::DxvkCommandList(DxvkDevice* device) + : m_device (device), + m_vkd (device->vkd()), +- m_vki (device->instance()->vki()), +- m_lfx2Tracker (device) { ++ m_vki (device->instance()->vki()) { + const auto& graphicsQueue = m_device->queues().graphics; + const auto& transferQueue = m_device->queues().transfer; + +@@ -273,6 +272,9 @@ namespace dxvk { + 0, VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT); + } + ++ if (isFirst && m_lfx2Aux.submit_before) ++ m_commandSubmission.executeCommandBuffer(m_lfx2Aux.submit_before); ++ + // Submit graphics commands + if (cmd.usedFlags.test(DxvkCmdBuffer::InitBuffer)) + m_commandSubmission.executeCommandBuffer(cmd.initBuffer); +@@ -297,6 +299,12 @@ namespace dxvk { + m_commandSubmission.signalFence(m_fence); + } + ++ if (isLast && m_lfx2Aux.submit_after) ++ m_commandSubmission.executeCommandBuffer(m_lfx2Aux.submit_after); ++ if (isLast && m_lfx2Aux.signal_sem) ++ m_commandSubmission.signalSemaphore(m_lfx2Aux.signal_sem, m_lfx2Aux.signal_sem_value, ++ VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT); ++ + // Finally, submit all graphics commands of the current submission + if ((status = m_commandSubmission.submit(m_device, graphics.queueHandle))) + return status; +@@ -365,6 +373,8 @@ namespace dxvk { + + + void DxvkCommandList::reset() { ++ m_lfx2Aux = {}; ++ + // Free resources and other objects + // that are no longer in use + m_resources.reset(); +@@ -375,7 +385,6 @@ namespace dxvk { + // Return query and event handles + m_gpuQueryTracker.reset(); + m_gpuEventTracker.reset(); +- m_lfx2Tracker.reset(); + + // Less important stuff + m_signalTracker.reset(); +diff --git a/src/dxvk/dxvk_cmdlist.h b/src/dxvk/dxvk_cmdlist.h +index 55507bb8..cc3b581e 100644 +--- a/src/dxvk/dxvk_cmdlist.h ++++ b/src/dxvk/dxvk_cmdlist.h +@@ -321,17 +321,12 @@ namespace dxvk { + m_signalTracker.add(signal, value); + } + +- void trackLatencyMarker(Lfx2Frame lfx2Frame, Rc timestampQuery, bool end) { +- m_lfx2Tracker.add(std::move(lfx2Frame), std::move(timestampQuery), end); +- } +- + /** + * \brief Notifies resources and signals + */ + void notifyObjects() { + m_resources.notify(); + m_signalTracker.notify(); +- m_lfx2Tracker.notify(); + } + + /** +@@ -1033,6 +1028,10 @@ namespace dxvk { + m_descriptorPools.push_back({ pool, manager }); + } + ++ void setLfx2Aux(lfx2VulkanSubmitAux aux) { ++ m_lfx2Aux = aux; ++ } ++ + private: + + DxvkDevice* m_device; +@@ -1057,7 +1056,6 @@ namespace dxvk { + DxvkGpuQueryTracker m_gpuQueryTracker; + DxvkBufferTracker m_bufferTracker; + DxvkStatCounters m_statCounters; +- DxvkLfx2Tracker m_lfx2Tracker; + + DxvkCommandSubmission m_commandSubmission; + +@@ -1073,6 +1071,8 @@ namespace dxvk { + + std::vector m_pipelines; + ++ lfx2VulkanSubmitAux m_lfx2Aux = {}; ++ + VkCommandBuffer getCmdBuffer(DxvkCmdBuffer cmdBuffer) const { + if (cmdBuffer == DxvkCmdBuffer::ExecBuffer) return m_cmd.execBuffer; + if (cmdBuffer == DxvkCmdBuffer::InitBuffer) return m_cmd.initBuffer; +diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp +index b6fdbe93..726356a6 100644 +--- a/src/dxvk/dxvk_context.cpp ++++ b/src/dxvk/dxvk_context.cpp +@@ -106,8 +106,10 @@ namespace dxvk { + + + void DxvkContext::flushCommandList(DxvkSubmitStatus* status) { +- m_device->submitCommandList( +- this->endRecording(), status); ++ auto cmdList = this->endRecording(); ++ if (m_type == DxvkContextType::Primary) ++ cmdList->setLfx2Aux(m_device->lfx2().VulkanContextBeforeSubmit(m_device->getLfx2VkContext())); ++ m_device->submitCommandList(cmdList, status); + + this->beginRecording( + m_device->createCommandList()); +@@ -6444,22 +6446,14 @@ namespace dxvk { + this->beginCurrentCommands(); + } + +- void DxvkContext::trackLatencyMarker(Lfx2Frame frame, Rc timestampQuery, bool end) { +- m_cmd->trackLatencyMarker(std::move(frame), std::move(timestampQuery), end); +- } +- + void DxvkContext::tryBeginLfx2Frame(bool critical) { + if (m_type != DxvkContextType::Primary) + Logger::err("beginLfx2Frame should only be called on immediate contexts"); + if (!m_lfx2Frame) { + m_lfx2Frame = m_device->getImplicitLfx2Context()->dequeueFrame(critical); + if (m_lfx2Frame) { +- auto query = m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); +- m_device->lfx2().MarkSection(m_lfx2Frame, +- 800, lfx2MarkType::lfx2MarkTypeBegin, +- m_device->lfx2().TimestampNow()); +- writeTimestamp(query); +- trackLatencyMarker(m_lfx2Frame, query, false); ++ auto &cLfx2 = m_device->lfx2(); ++ cLfx2.VulkanContextBeginFrame(m_device->getLfx2VkContext(), m_lfx2Frame); + } + } + } +@@ -6469,12 +6463,9 @@ namespace dxvk { + Logger::err("endLfx2Frame should only be called on immediate contexts"); + tryBeginLfx2Frame(true); + if (m_lfx2Frame) { +- auto query = m_device->createGpuQuery(VK_QUERY_TYPE_TIMESTAMP, 0, 0); +- m_device->lfx2().MarkSection(m_lfx2Frame, +- 800, lfx2MarkType::lfx2MarkTypeEnd, +- m_device->lfx2().TimestampNow()); +- writeTimestamp(query); +- trackLatencyMarker(m_lfx2Frame, query, true); ++ flushCommandList(); ++ auto &cLfx2 = m_device->lfx2(); ++ cLfx2.VulkanContextEndFrame(m_device->getLfx2VkContext(), m_lfx2Frame); + m_lfx2Frame = {}; + } + } +diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h +index ffd505ba..b5af4d52 100644 +--- a/src/dxvk/dxvk_context.h ++++ b/src/dxvk/dxvk_context.h +@@ -1391,8 +1391,6 @@ namespace dxvk { + m_cmd->addStatCtr(counter, value); + } + +- void trackLatencyMarker(Lfx2Frame frame, Rc timestampQuery, bool end); +- + private: + + Rc m_device; +diff --git a/src/dxvk/dxvk_device.cpp b/src/dxvk/dxvk_device.cpp +index d133930f..0c240eb1 100644 +--- a/src/dxvk/dxvk_device.cpp ++++ b/src/dxvk/dxvk_device.cpp +@@ -22,6 +22,7 @@ namespace dxvk { + m_queues (queues), + m_submissionQueue (this, queueCallback) { + ++ m_lfx2Vk = m_lfx2.VulkanContextCreate(instance->vki()->getLoaderProc(), instance->handle(), m_adapter->handle(), m_vkd->device(), queues.graphics.queueIndex); + } + + +@@ -40,6 +41,8 @@ namespace dxvk { + // Stop workers explicitly in order to prevent + // access to structures that are being destroyed. + m_objects.pipelineManager().stopWorkerThreads(); ++ ++ m_lfx2.VulkanContextRelease(m_lfx2Vk); + } + + +@@ -340,6 +343,10 @@ namespace dxvk { + m_recycledCommandLists.returnObject(cmdList); + } + ++ lfx2VulkanContext *DxvkDevice::getLfx2VkContext() { ++ return m_lfx2Vk; ++ } ++ + DxvkLfx2ImplicitContext *DxvkDevice::getImplicitLfx2Context() { + return &m_lfx2ImplicitContext; + } +diff --git a/src/dxvk/dxvk_device.h b/src/dxvk/dxvk_device.h +index 7fa12dc5..4e6c2ed7 100644 +--- a/src/dxvk/dxvk_device.h ++++ b/src/dxvk/dxvk_device.h +@@ -539,6 +539,7 @@ namespace dxvk { + */ + void waitForIdle(); + ++ lfx2VulkanContext* getLfx2VkContext(); + DxvkLfx2ImplicitContext* getImplicitLfx2Context(); + + private: +@@ -549,6 +550,7 @@ namespace dxvk { + Rc m_adapter; + Rc m_vkd; + Lfx2Fn m_lfx2; ++ lfx2VulkanContext *m_lfx2Vk; + DxvkLfx2ImplicitContext m_lfx2ImplicitContext; + + DxvkDeviceFeatures m_features; +diff --git a/src/dxvk/dxvk_lfx2.cpp b/src/dxvk/dxvk_lfx2.cpp +index 4d5298db..23e20bb9 100644 +--- a/src/dxvk/dxvk_lfx2.cpp ++++ b/src/dxvk/dxvk_lfx2.cpp +@@ -41,6 +41,12 @@ namespace dxvk { + LOAD_PFN(ImplicitContextReset); + LOAD_PFN(FrameCreateImplicit); + LOAD_PFN(FrameDequeueImplicit); ++ LOAD_PFN(VulkanContextCreate); ++ LOAD_PFN(VulkanContextAddRef); ++ LOAD_PFN(VulkanContextRelease); ++ LOAD_PFN(VulkanContextBeforeSubmit); ++ LOAD_PFN(VulkanContextBeginFrame); ++ LOAD_PFN(VulkanContextEndFrame); + + #undef LOAD_PFN + } +@@ -62,66 +68,6 @@ namespace dxvk { + return reinterpret_cast(reinterpret_cast(::GetProcAddress(m_lfxModule, name))); + } + +- DxvkLfx2Tracker::DxvkLfx2Tracker(DxvkDevice *device) : m_device(device) { +- } +- +- void DxvkLfx2Tracker::add(Lfx2Frame lfx2Frame, Rc query, bool end) { +- m_query[end] = std::move(query); +- m_frame_handle[end] = std::move(lfx2Frame); +- } +- +- void DxvkLfx2Tracker::notify() { +- for (uint32_t i = 0; i < 2; i++) { +- Rc &query = m_query[i]; +- if (query.ptr()) { +- DxvkQueryData queryData; // NOLINT(cppcoreguidelines-pro-type-member-init) +- DxvkGpuQueryStatus status; +- while ((status = query->getData(queryData)) == DxvkGpuQueryStatus::Pending); +- +- if (status == DxvkGpuQueryStatus::Available) { +- uint64_t gpuTimestamp = queryData.timestamp.time; +- VkCalibratedTimestampInfoEXT calibratedTimestampInfo[2]; +- uint64_t calibratedTimestamps[2]; +- uint64_t maxDeviation[2]; +- calibratedTimestampInfo[0].sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT; +- calibratedTimestampInfo[0].pNext = nullptr; +- calibratedTimestampInfo[0].timeDomain = VK_TIME_DOMAIN_DEVICE_EXT; +- calibratedTimestampInfo[1].sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT; +- calibratedTimestampInfo[1].pNext = nullptr; +-#ifdef _WIN32 +- calibratedTimestampInfo[1].timeDomain = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT; +-#else +- calibratedTimestampInfo[1].timeDomain = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT; +-#endif +- m_device->vkd()->vkGetCalibratedTimestampsEXT(m_device->handle(), 2, calibratedTimestampInfo, +- calibratedTimestamps, maxDeviation); +- +-#ifdef _WIN32 +- uint64_t hostNsTimestamp = m_device->lfx2().TimestampFromQpc(calibratedTimestamps[1]); +-#else +- uint64_t hostNsTimestamp = calibratedTimestamps[1]; +-#endif +- int64_t gpuTimestampDelta = gpuTimestamp - calibratedTimestamps[0]; +- int64_t timestamp = hostNsTimestamp + (int64_t) (gpuTimestampDelta * +- (double) m_device->adapter()->deviceProperties().limits.timestampPeriod); +- +- m_device->lfx2().MarkSection(m_frame_handle[i], +- 1000, i == 0 ? lfx2MarkType::lfx2MarkTypeBegin : lfx2MarkType::lfx2MarkTypeEnd, +- timestamp); +- } +- } +- } +- } +- +- void DxvkLfx2Tracker::reset() { +- for (auto &i: m_query) { +- i = nullptr; +- } +- for (auto &i: m_frame_handle) { +- i = {}; +- } +- } +- + DxvkLfx2ImplicitContext::DxvkLfx2ImplicitContext(Lfx2Fn *lfx2): m_lfx2(lfx2) { + m_context = m_lfx2->ImplicitContextCreate(); + } +diff --git a/src/dxvk/dxvk_lfx2.h b/src/dxvk/dxvk_lfx2.h +index 96c7931b..e6ae73df 100644 +--- a/src/dxvk/dxvk_lfx2.h ++++ b/src/dxvk/dxvk_lfx2.h +@@ -31,6 +31,12 @@ namespace dxvk { + DECLARE_PFN(ImplicitContextReset); + DECLARE_PFN(FrameCreateImplicit); + DECLARE_PFN(FrameDequeueImplicit); ++ DECLARE_PFN(VulkanContextCreate); ++ DECLARE_PFN(VulkanContextAddRef); ++ DECLARE_PFN(VulkanContextRelease); ++ DECLARE_PFN(VulkanContextBeforeSubmit); ++ DECLARE_PFN(VulkanContextBeginFrame); ++ DECLARE_PFN(VulkanContextEndFrame); + + #undef DECLARE_PFN + +@@ -72,17 +78,4 @@ namespace dxvk { + lfx2ImplicitContext *m_context; + }; + +- class DxvkLfx2Tracker { +- public: +- explicit DxvkLfx2Tracker(DxvkDevice *device); +- void add(Lfx2Frame frame, Rc query, bool end); +- void reset(); +- void notify(); +- +- private: +- DxvkDevice *m_device; +- Rc m_query[2]{}; +- Lfx2Frame m_frame_handle[2]{}; +- }; +- + } // dxvk +\ No newline at end of file +-- +2.43.0 + + +From 62e4b89d0e95979f85737df752207d5da4d51e41 Mon Sep 17 00:00:00 2001 +From: Tatsuyuki Ishi +Date: Tue, 7 Feb 2023 14:46:17 +0900 +Subject: [PATCH 11/12] Add support for explicit latency and throughput + annotation + +--- + include/latencyflex2.h | 11 +++++++++ + src/d3d11/d3d11_context_imm.cpp | 3 ++- + src/d3d11/d3d11_device.cpp | 7 ++---- + src/d3d9/d3d9_device.cpp | 1 + + src/dxvk/dxvk_context.cpp | 44 ++++++++++++++++++++++----------- + src/dxvk/dxvk_context.h | 12 +++++++-- + src/dxvk/dxvk_cs.cpp | 20 ++++++++++++--- + src/dxvk/dxvk_cs.h | 8 ++++++ + src/dxvk/dxvk_lfx2.cpp | 2 ++ + src/dxvk/dxvk_lfx2.h | 2 ++ + 10 files changed, 84 insertions(+), 26 deletions(-) + +diff --git a/include/latencyflex2.h b/include/latencyflex2.h +index 9e8d1536..bda252c5 100644 +--- a/include/latencyflex2.h ++++ b/include/latencyflex2.h +@@ -54,6 +54,7 @@ typedef struct lfx2Dx12SubmitAux { + #endif + + typedef uint64_t lfx2Timestamp; ++typedef uint64_t lfx2Interval; + + typedef uint32_t lfx2SectionId; + +@@ -114,6 +115,16 @@ void lfx2MarkSection(struct lfx2Frame *frame, + enum lfx2MarkType mark_type, + lfx2Timestamp timestamp); + ++LFX2_API ++void lfx2FrameOverrideQueuingDelay(struct lfx2Frame *frame, ++ lfx2SectionId section_id, ++ lfx2Interval queueing_delay); ++ ++LFX2_API ++void lfx2FrameOverrideInverseThroughput(struct lfx2Frame *frame, ++ lfx2SectionId section_id, ++ lfx2Interval inverse_throughput); ++ + LFX2_API struct lfx2ImplicitContext *lfx2ImplicitContextCreate(void); + + LFX2_API void lfx2ImplicitContextRelease(struct lfx2ImplicitContext *context); +diff --git a/src/d3d11/d3d11_context_imm.cpp b/src/d3d11/d3d11_context_imm.cpp +index 767956c2..bdab28c9 100644 +--- a/src/d3d11/d3d11_context_imm.cpp ++++ b/src/d3d11/d3d11_context_imm.cpp +@@ -843,7 +843,7 @@ namespace dxvk { + + EmitCs([] (DxvkContext* ctx) { + ctx->endFrame(); +- ctx->endLfx2Frame(); ++ ctx->endLfx2FrameImplicit(); + }); + } + +@@ -892,6 +892,7 @@ namespace dxvk { + + + void D3D11ImmediateContext::EmitCsChunk(DxvkCsChunkRef&& chunk) { ++ chunk->finalize(); + m_csSeqNum = m_csThread.dispatchChunk(std::move(chunk)); + } + +diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp +index ea39e6fe..f0ba640b 100644 +--- a/src/d3d11/d3d11_device.cpp ++++ b/src/d3d11/d3d11_device.cpp +@@ -3460,8 +3460,7 @@ namespace dxvk { + auto frameWrapper = Lfx2Frame(m_dxvkDevice->lfx2(), static_cast(frame)); + + m_immediateContext->EmitCs([cDevice = m_dxvkDevice, frameWrapper] (DxvkContext* ctx) { +- auto &cLfx2 = cDevice->lfx2(); +- cLfx2.VulkanContextBeginFrame(cDevice->getLfx2VkContext(), frameWrapper); ++ ctx->beginLfx2Frame(frameWrapper); + }); + } + +@@ -3469,9 +3468,7 @@ namespace dxvk { + auto frameWrapper = Lfx2Frame(m_dxvkDevice->lfx2(), static_cast(frame)); + + m_immediateContext->EmitCs([cDevice = m_dxvkDevice, frameWrapper] (DxvkContext* ctx) { +- auto &cLfx2 = cDevice->lfx2(); +- ctx->flushCommandList(); +- cLfx2.VulkanContextEndFrame(cDevice->getLfx2VkContext(), frameWrapper); ++ ctx->endLfx2Frame(); + }); + } + } +diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp +index a5fc7f5d..e0030cf5 100644 +--- a/src/d3d9/d3d9_device.cpp ++++ b/src/d3d9/d3d9_device.cpp +@@ -5272,6 +5272,7 @@ namespace dxvk { + + + void D3D9DeviceEx::EmitCsChunk(DxvkCsChunkRef&& chunk) { ++ chunk->finalize(); + m_csSeqNum = m_csThread.dispatchChunk(std::move(chunk)); + } + +diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp +index 726356a6..384be705 100644 +--- a/src/dxvk/dxvk_context.cpp ++++ b/src/dxvk/dxvk_context.cpp +@@ -1,4 +1,5 @@ + #include ++#include + #include + #include + +@@ -6446,28 +6447,41 @@ namespace dxvk { + this->beginCurrentCommands(); + } + +- void DxvkContext::tryBeginLfx2Frame(bool critical) { +- if (m_type != DxvkContextType::Primary) +- Logger::err("beginLfx2Frame should only be called on immediate contexts"); ++ void DxvkContext::tryBeginLfx2FrameImplicit(bool critical) { + if (!m_lfx2Frame) { +- m_lfx2Frame = m_device->getImplicitLfx2Context()->dequeueFrame(critical); +- if (m_lfx2Frame) { +- auto &cLfx2 = m_device->lfx2(); +- cLfx2.VulkanContextBeginFrame(m_device->getLfx2VkContext(), m_lfx2Frame); ++ auto lfx2Frame = m_device->getImplicitLfx2Context()->dequeueFrame(critical); ++ if (lfx2Frame) { ++ beginLfx2Frame(lfx2Frame); + } + } + } + +- void DxvkContext::endLfx2Frame() { +- if (m_type != DxvkContextType::Primary) +- Logger::err("endLfx2Frame should only be called on immediate contexts"); +- tryBeginLfx2Frame(true); ++ void DxvkContext::endLfx2FrameImplicit() { ++ tryBeginLfx2FrameImplicit(true); + if (m_lfx2Frame) { +- flushCommandList(); +- auto &cLfx2 = m_device->lfx2(); +- cLfx2.VulkanContextEndFrame(m_device->getLfx2VkContext(), m_lfx2Frame); +- m_lfx2Frame = {}; ++ endLfx2Frame(); + } + } + ++ void DxvkContext::beginLfx2Frame(Lfx2Frame frame) { ++ if (m_type != DxvkContextType::Primary) ++ Logger::err("beginLfx2Frame should only be called on immediate contexts"); ++ auto &cLfx2 = m_device->lfx2(); ++ m_lfx2Frame = std::move(frame); ++ cLfx2.VulkanContextBeginFrame(m_device->getLfx2VkContext(), m_lfx2Frame); ++ m_frameCsTime = 0; ++ m_minQueuingDelay = UINT64_MAX; ++ } ++ ++ void DxvkContext::endLfx2Frame() { ++ if (m_type != DxvkContextType::Primary) ++ Logger::err("endLfx2Frame should only be called on immediate contexts"); ++ flushCommandList(); ++ auto &cLfx2 = m_device->lfx2(); ++ cLfx2.VulkanContextEndFrame(m_device->getLfx2VkContext(), m_lfx2Frame); ++ cLfx2.FrameOverrideInverseThroughput(m_lfx2Frame, 800, m_frameCsTime); ++ if (m_minQueuingDelay != UINT64_MAX) ++ cLfx2.FrameOverrideQueuingDelay(m_lfx2Frame, 0, m_minQueuingDelay); ++ m_lfx2Frame = {}; ++ } + } +diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h +index b5af4d52..8dcdb3a7 100644 +--- a/src/dxvk/dxvk_context.h ++++ b/src/dxvk/dxvk_context.h +@@ -68,7 +68,9 @@ namespace dxvk { + */ + void flushCommandList(DxvkSubmitStatus* status); + +- void tryBeginLfx2Frame(bool critical); ++ void tryBeginLfx2FrameImplicit(bool critical); ++ void endLfx2FrameImplicit(); ++ void beginLfx2Frame(Lfx2Frame frame); + void endLfx2Frame(); + + /** +@@ -1391,6 +1393,11 @@ namespace dxvk { + m_cmd->addStatCtr(counter, value); + } + ++ void recordChunkExecutionTiming(uint64_t duration, uint64_t queueingDelay) { ++ m_frameCsTime += duration; ++ m_minQueuingDelay = std::min(m_minQueuingDelay, queueingDelay); ++ } ++ + private: + + Rc m_device; +@@ -1436,6 +1443,8 @@ namespace dxvk { + std::array m_cpLookupCache = { }; + + Lfx2Frame m_lfx2Frame = {}; ++ uint64_t m_frameCsTime = 0; ++ uint64_t m_minQueuingDelay = 0; + + void blitImageFb( + const Rc& dstImage, +@@ -1743,7 +1752,6 @@ namespace dxvk { + void endCurrentCommands(); + + void splitCommands(); +- + }; + + } +diff --git a/src/dxvk/dxvk_cs.cpp b/src/dxvk/dxvk_cs.cpp +index fe1f4c3a..44d7e718 100644 +--- a/src/dxvk/dxvk_cs.cpp ++++ b/src/dxvk/dxvk_cs.cpp +@@ -55,8 +55,12 @@ namespace dxvk { + + m_commandOffset = 0; + } +- +- ++ ++ void DxvkCsChunk::finalize() { ++ m_queuedTimestamp = high_resolution_clock::now(); ++ } ++ ++ + DxvkCsChunkPool::DxvkCsChunkPool() { + + } +@@ -161,6 +165,8 @@ namespace dxvk { + // them in order to potentially reduce lock contention. + std::vector chunks; + ++ high_resolution_clock::time_point lastFinish; ++ + try { + while (!m_stopped.load()) { + { std::unique_lock lock(m_mutex); +@@ -175,8 +181,16 @@ namespace dxvk { + + for (auto& chunk : chunks) { + m_context->addStatCtr(DxvkStatCounter::CsChunkCount, 1); +- m_context->tryBeginLfx2Frame(false); ++ m_context->tryBeginLfx2FrameImplicit(false); ++ high_resolution_clock::time_point start = high_resolution_clock::now(); + chunk->executeAll(m_context.ptr()); ++ high_resolution_clock::time_point end = high_resolution_clock::now(); ++ m_context->recordChunkExecutionTiming( ++ std::chrono::duration_cast(end - start).count(), ++ std::max(std::chrono::duration_cast( ++ lastFinish - chunk->getQueuedTimestamp()).count(), 0LL) ++ ); ++ lastFinish = end; + + // Use a separate mutex for the chunk counter, this + // will only ever be contested if synchronization is +diff --git a/src/dxvk/dxvk_cs.h b/src/dxvk/dxvk_cs.h +index ae20746a..d8ee4fdf 100644 +--- a/src/dxvk/dxvk_cs.h ++++ b/src/dxvk/dxvk_cs.h +@@ -233,10 +233,18 @@ namespace dxvk { + * that it can be reused later. + */ + void reset(); ++ ++ void finalize(); ++ ++ high_resolution_clock::time_point getQueuedTimestamp() { ++ return m_queuedTimestamp; ++ } + + private: + + size_t m_commandOffset = 0; ++ ++ high_resolution_clock::time_point m_queuedTimestamp; + + DxvkCsCmd* m_head = nullptr; + DxvkCsCmd* m_tail = nullptr; +diff --git a/src/dxvk/dxvk_lfx2.cpp b/src/dxvk/dxvk_lfx2.cpp +index 23e20bb9..c7e50abe 100644 +--- a/src/dxvk/dxvk_lfx2.cpp ++++ b/src/dxvk/dxvk_lfx2.cpp +@@ -31,6 +31,8 @@ namespace dxvk { + LOAD_PFN(FrameAddRef); + LOAD_PFN(FrameRelease); + LOAD_PFN(MarkSection); ++ LOAD_PFN(FrameOverrideQueuingDelay); ++ LOAD_PFN(FrameOverrideInverseThroughput); + LOAD_PFN(SleepUntil); + LOAD_PFN(TimestampNow); + #ifdef _WIN32 +diff --git a/src/dxvk/dxvk_lfx2.h b/src/dxvk/dxvk_lfx2.h +index e6ae73df..dc81d0a5 100644 +--- a/src/dxvk/dxvk_lfx2.h ++++ b/src/dxvk/dxvk_lfx2.h +@@ -21,6 +21,8 @@ namespace dxvk { + DECLARE_PFN(FrameAddRef); + DECLARE_PFN(FrameRelease); + DECLARE_PFN(MarkSection); ++ DECLARE_PFN(FrameOverrideQueuingDelay); ++ DECLARE_PFN(FrameOverrideInverseThroughput); + DECLARE_PFN(SleepUntil); + DECLARE_PFN(TimestampNow); + #ifdef _WIN32 +-- +2.43.0 + + +From 30b72b3ad2c4a9aae9eb1a7681128e464bb9b1d9 Mon Sep 17 00:00:00 2001 +From: FakeMichau <49685661+FakeMichau@users.noreply.github.com> +Date: Tue, 16 Jan 2024 18:15:48 +0100 +Subject: [PATCH 12/12] Update for upstream changes + +--- + src/dxvk/dxvk_context.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp +index 384be705..0b319287 100644 +--- a/src/dxvk/dxvk_context.cpp ++++ b/src/dxvk/dxvk_context.cpp +@@ -6476,7 +6476,8 @@ namespace dxvk { + void DxvkContext::endLfx2Frame() { + if (m_type != DxvkContextType::Primary) + Logger::err("endLfx2Frame should only be called on immediate contexts"); +- flushCommandList(); ++ auto status = new DxvkSubmitStatus; ++ flushCommandList(status); + auto &cLfx2 = m_device->lfx2(); + cLfx2.VulkanContextEndFrame(m_device->getLfx2VkContext(), m_lfx2Frame); + cLfx2.FrameOverrideInverseThroughput(m_lfx2Frame, 800, m_frameCsTime); +-- +2.43.0 + diff --git a/patches/lfx2-nvapi.patch b/patches/lfx2-nvapi.patch new file mode 100644 index 0000000000..9de0420a7a --- /dev/null +++ b/patches/lfx2-nvapi.patch @@ -0,0 +1,947 @@ +From 68de9614166e3df3174c1f2b41f3eb94fb66792e Mon Sep 17 00:00:00 2001 +From: FakeMichau <49685661+FakeMichau@users.noreply.github.com> +Date: Mon, 2 Oct 2023 14:50:19 +0200 +Subject: [PATCH 1/3] LFX2 support and gpu spoofing + +--- + inc/latencyflex2.h | 83 ++++++++++++++++ + src/d3d/lfx2.cpp | 176 +++++++++++++++++++++++++++++++++ + src/d3d/lfx2.h | 60 +++++++++++ + src/d3d/nvapi_d3d_instance.cpp | 33 +++++-- + src/d3d/nvapi_d3d_instance.h | 9 +- + src/dxvk/dxvk_interfaces.cpp | 1 + + src/dxvk/dxvk_interfaces.h | 13 +++ + src/meson.build | 1 + + src/nvapi_d3d.cpp | 28 ++++-- + src/nvapi_gpu.cpp | 73 +------------- + src/resource_factory.cpp | 4 +- + src/resource_factory.h | 4 +- + 12 files changed, 395 insertions(+), 90 deletions(-) + create mode 100644 inc/latencyflex2.h + create mode 100644 src/d3d/lfx2.cpp + create mode 100644 src/d3d/lfx2.h + +diff --git a/inc/latencyflex2.h b/inc/latencyflex2.h +new file mode 100644 +index 0000000..02767c5 +--- /dev/null ++++ b/inc/latencyflex2.h +@@ -0,0 +1,83 @@ ++#ifndef LATENCYFLEX2_H ++#define LATENCYFLEX2_H ++ ++#include ++#include ++#include ++#include ++#include ++#ifdef _WIN32 ++#define LFX2_API __declspec(dllimport) ++#else ++#define LFX2_API ++#endif ++ ++typedef enum lfx2MarkType { ++ lfx2MarkTypeBegin, ++ lfx2MarkTypeEnd, ++} lfx2MarkType; ++ ++typedef struct lfx2Context lfx2Context; ++ ++/** ++ * A write handle for frame markers. ++ */ ++typedef struct lfx2Frame lfx2Frame; ++ ++typedef struct lfx2ImplicitContext lfx2ImplicitContext; ++ ++typedef uint64_t lfx2Timestamp; ++ ++typedef uint32_t lfx2SectionId; ++ ++#ifdef __cplusplus ++extern "C" { ++#endif // __cplusplus ++ ++ LFX2_API lfx2Timestamp lfx2TimestampNow(void); ++ ++#if defined(_WIN32) ++ LFX2_API lfx2Timestamp lfx2TimestampFromQpc(uint64_t qpc); ++#endif ++ ++ LFX2_API void lfx2SleepUntil(lfx2Timestamp target); ++ ++ LFX2_API struct lfx2Context* lfx2ContextCreate(void); ++ ++ LFX2_API void lfx2ContextAddRef(struct lfx2Context* context); ++ ++ LFX2_API void lfx2ContextRelease(struct lfx2Context* context); ++ ++ LFX2_API ++ struct lfx2Frame* lfx2FrameCreate(struct lfx2Context* context, ++ lfx2Timestamp* out_timestamp); ++ ++ LFX2_API void lfx2FrameAddRef(struct lfx2Frame* frame); ++ ++ LFX2_API void lfx2FrameRelease(struct lfx2Frame* frame); ++ ++ LFX2_API ++ void lfx2MarkSection(struct lfx2Frame* frame, ++ lfx2SectionId section_id, ++ enum lfx2MarkType mark_type, ++ lfx2Timestamp timestamp); ++ ++ LFX2_API struct lfx2ImplicitContext* lfx2ImplicitContextCreate(void); ++ ++ LFX2_API void lfx2ImplicitContextRelease(struct lfx2ImplicitContext* context); ++ ++ LFX2_API void lfx2ImplicitContextReset(struct lfx2ImplicitContext* context); ++ ++ LFX2_API ++ struct lfx2Frame* lfx2FrameCreateImplicit(struct lfx2ImplicitContext* context, ++ lfx2Timestamp* out_timestamp); ++ ++ LFX2_API ++ struct lfx2Frame* lfx2FrameDequeueImplicit(struct lfx2ImplicitContext* context, ++ bool critical); ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif // __cplusplus ++ ++#endif /* LATENCYFLEX2_H */ +diff --git a/src/d3d/lfx2.cpp b/src/d3d/lfx2.cpp +new file mode 100644 +index 0000000..b75cf0d +--- /dev/null ++++ b/src/d3d/lfx2.cpp +@@ -0,0 +1,176 @@ ++#include "lfx2.h" ++#include "util/util_log.h" ++#include "util/util_string.h" ++ ++namespace dxvk { ++ ++ Lfx2::Lfx2() { ++ const auto lfxModuleName = "latencyflex2_rust.dll"; ++ ++ m_lfxModule = ::LoadLibraryA(lfxModuleName); ++ if (m_lfxModule == nullptr) { ++ auto lastError = ::GetLastError(); ++ if (lastError != ERROR_MOD_NOT_FOUND) // Ignore library not found ++ log::write(str::format("Loading ", lfxModuleName, ++ " failed with error code: ", lastError)); ++ return; ++ } ++ ++#define LOAD_PFN(x) \ ++ this->x = GetProcAddress("lfx2" #x) ++ ++ LOAD_PFN(ContextCreate); ++ LOAD_PFN(ContextAddRef); ++ LOAD_PFN(ContextRelease); ++ LOAD_PFN(FrameCreate); ++ LOAD_PFN(FrameAddRef); ++ LOAD_PFN(FrameRelease); ++ LOAD_PFN(MarkSection); ++ LOAD_PFN(SleepUntil); ++ LOAD_PFN(TimestampNow); ++#ifdef _WIN32 ++ LOAD_PFN(TimestampFromQpc); ++#endif ++ LOAD_PFN(ImplicitContextCreate); ++ LOAD_PFN(ImplicitContextRelease); ++ LOAD_PFN(ImplicitContextReset); ++ LOAD_PFN(FrameCreateImplicit); ++ LOAD_PFN(FrameDequeueImplicit); ++ ++#undef LOAD_PFN ++ } ++ ++ Lfx2::~Lfx2() { ++ if (m_lfxModule == nullptr) ++ return; ++ ++ if (m_nextFrame) ++ FrameRelease(m_nextFrame); ++ ++ if (m_lfxContext) ++ ContextRelease(m_lfxContext); ++ ++ ::FreeLibrary(m_lfxModule); ++ } ++ ++ bool Lfx2::IsAvailable() const { ++ return m_lfxModule != nullptr; ++ } ++ ++ void Lfx2::Sleep() { ++ std::unique_lock lock(m_frameMapMutex); ++ if (m_lfxContext && !m_nextFrame) { ++ lfx2Timestamp sleepTarget; ++ m_nextFrame = FrameCreate(m_lfxContext, &sleepTarget); ++ lock.unlock(); ++ ++ SleepUntil(sleepTarget); ++ } ++ // Else: Sleep was called without recording frame timing, skip ++ } ++ ++ void Lfx2::Mark(uint64_t frame_id, NV_LATENCY_MARKER_TYPE type, Com& extDevice) { ++ if (!m_lfxContext) ++ return; ++ ++ uint32_t section; ++ lfx2MarkType markType; ++ switch (type) { ++ case SIMULATION_START: ++ section = 0; ++ markType = lfx2MarkType::lfx2MarkTypeBegin; ++ break; ++ case SIMULATION_END: ++ section = 0; ++ markType = lfx2MarkType::lfx2MarkTypeEnd; ++ break; ++ case RENDERSUBMIT_START: ++ section = 500; ++ markType = lfx2MarkType::lfx2MarkTypeBegin; ++ break; ++ case RENDERSUBMIT_END: ++ section = 500; ++ markType = lfx2MarkType::lfx2MarkTypeEnd; ++ break; ++ default: ++ return; ++ } ++ ++ std::unique_lock lock(m_frameMapMutex); ++ lfx2Frame* frame; ++ if (type == SIMULATION_START) { ++ EnsureFrame(); ++ m_frameMap[frame_id] = m_nextFrame; ++ m_callsExpectedByFrame[frame_id] = 4; ++ frame = m_nextFrame; ++ m_nextFrame = nullptr; ++ ++ decltype(m_frameMap)::iterator it; ++ if (frame_id >= kMaxInflightFrames && (it = m_frameMap.upper_bound(frame_id - kMaxInflightFrames)) != m_frameMap.end()) { ++ for (auto i = m_frameMap.begin(); i != it;) { ++ FrameRelease(i->second); ++ m_callsExpectedByFrame.erase(i->first); ++ i = m_frameMap.erase(i); ++ } ++ } ++ } else { ++ if (m_frameMap.find(frame_id) == m_frameMap.end()) ++ return; ++ frame = m_frameMap[frame_id]; ++ } ++ lock.unlock(); ++ ++ MarkSection(frame, section, markType, TimestampNow()); ++ ++ if (extDevice.ptr()) { ++ if (type == RENDERSUBMIT_START) { ++ extDevice->MarkRenderStart((void*)frame); ++ } else if (type == RENDERSUBMIT_END) { ++ extDevice->MarkRenderEnd((void*)frame); ++ } ++ } ++ ++ lock.lock(); ++ if (--m_callsExpectedByFrame[frame_id] == 0) { ++ FrameRelease(frame); ++ m_frameMap.erase(frame_id); ++ m_callsExpectedByFrame.erase(frame_id); ++ } ++ } ++ ++ void Lfx2::EnsureFrame() { ++ if (!m_nextFrame) { ++ lfx2Timestamp sleepTarget; ++ m_nextFrame = FrameCreate(m_lfxContext, &sleepTarget); ++ } ++ } ++ ++ void Lfx2::SleepImplicit(Com& extDevice) { ++ lfx2Timestamp sleepTarget; ++ lfx2Frame* implicitFrame; ++ extDevice->ImplicitBeginFrame(&sleepTarget, reinterpret_cast(&implicitFrame)); ++ ++ SleepUntil(sleepTarget); ++ MarkSection(implicitFrame, 0, lfx2MarkType::lfx2MarkTypeBegin, TimestampNow()); ++ MarkSection(implicitFrame, 0, lfx2MarkType::lfx2MarkTypeEnd, TimestampNow()); ++ FrameRelease(implicitFrame); ++ } ++ ++ void Lfx2::SetEnabled(bool enabled) { ++ if (enabled && !m_lfxContext) { ++ m_lfxContext = ContextCreate(); ++ } else if (!enabled && m_lfxContext) { ++ if (m_nextFrame) { ++ FrameRelease(m_nextFrame); ++ m_nextFrame = nullptr; ++ } ++ ContextRelease(m_lfxContext); ++ m_lfxContext = nullptr; ++ } ++ } ++ ++ template ++ T Lfx2::GetProcAddress(const char* name) { ++ return reinterpret_cast(reinterpret_cast(::GetProcAddress(m_lfxModule, name))); ++ } ++} +\ No newline at end of file +diff --git a/src/d3d/lfx2.h b/src/d3d/lfx2.h +new file mode 100644 +index 0000000..2e20ad7 +--- /dev/null ++++ b/src/d3d/lfx2.h +@@ -0,0 +1,60 @@ ++#pragma once ++ ++#include "../inc/latencyflex2.h" ++#include "../nvapi_private.h" ++#include "dxvk/dxvk_interfaces.h" ++#include "util/com_pointer.h" ++#include "vkd3d-proton/vkd3d-proton_interfaces.h" ++ ++namespace dxvk { ++ class Lfx2 { ++ public: ++ Lfx2(); ++ virtual ~Lfx2(); ++ ++ [[nodiscard]] virtual bool IsAvailable() const; ++ virtual void Sleep(); ++ virtual void SleepImplicit(Com& extDevice); ++ virtual void Mark(uint64_t frame_id, NV_LATENCY_MARKER_TYPE type, Com& extDevice); ++ virtual void SetEnabled(bool enabled); ++ ++ private: ++#define DECLARE_PFN(x) \ ++ decltype(&::lfx2##x) x {} ++ ++ DECLARE_PFN(ContextCreate); ++ DECLARE_PFN(ContextAddRef); ++ DECLARE_PFN(ContextRelease); ++ DECLARE_PFN(FrameCreate); ++ DECLARE_PFN(FrameAddRef); ++ DECLARE_PFN(FrameRelease); ++ DECLARE_PFN(MarkSection); ++ DECLARE_PFN(SleepUntil); ++ DECLARE_PFN(TimestampNow); ++#ifdef _WIN32 ++ DECLARE_PFN(TimestampFromQpc); ++#endif ++ DECLARE_PFN(ImplicitContextCreate); ++ DECLARE_PFN(ImplicitContextRelease); ++ DECLARE_PFN(ImplicitContextReset); ++ DECLARE_PFN(FrameCreateImplicit); ++ DECLARE_PFN(FrameDequeueImplicit); ++ ++#undef DECLARE_PFN ++ ++ template ++ T GetProcAddress(const char* name); ++ ++ void EnsureFrame(); ++ ++ std::mutex m_frameMapMutex; ++ std::map m_frameMap; ++ std::unordered_map m_callsExpectedByFrame; ++ ++ HMODULE m_lfxModule{}; ++ lfx2Context* m_lfxContext{}; ++ lfx2Frame* m_nextFrame{}; ++ ++ static constexpr uint64_t kMaxInflightFrames = 64; ++ }; ++} +\ No newline at end of file +diff --git a/src/d3d/nvapi_d3d_instance.cpp b/src/d3d/nvapi_d3d_instance.cpp +index 6cdf260..1685953 100644 +--- a/src/d3d/nvapi_d3d_instance.cpp ++++ b/src/d3d/nvapi_d3d_instance.cpp +@@ -1,9 +1,13 @@ + #include "../util/util_log.h" + #include "nvapi_d3d_instance.h" ++#include "util/util_env.h" + + namespace dxvk { + NvapiD3dInstance::NvapiD3dInstance(ResourceFactory& resourceFactory) +- : m_resourceFactory(resourceFactory) {} ++ : m_resourceFactory(resourceFactory) { ++ auto latencyMarkersEnv = env::getEnvVariable("DXVK_NVAPI_USE_LATENCY_MARKERS"); ++ m_useLatencyMarkers = latencyMarkersEnv.empty() || latencyMarkersEnv != "0"; ++ } + + NvapiD3dInstance::~NvapiD3dInstance() = default; + +@@ -17,21 +21,36 @@ namespace dxvk { + return m_lfx->IsAvailable(); + } + ++ Lfx2* NvapiD3dInstance::GetLfx2Instance() const { ++ return &*m_lfx; ++ } ++ + bool NvapiD3dInstance::IsReflexEnabled() const { + return m_isLfxEnabled; + } + + void NvapiD3dInstance::SetReflexEnabled(bool value) { + m_isLfxEnabled = value; ++ m_lfx->SetEnabled(value); + } + +- void NvapiD3dInstance::Sleep() { +- if (m_isLfxEnabled) +- m_lfx->WaitAndBeginFrame(); ++ bool NvapiD3dInstance::UseLatencyMarkers() const { ++ return m_useLatencyMarkers; + } + +- void NvapiD3dInstance::SetTargetFrameTime(uint64_t frameTimeUs) { +- constexpr uint64_t kNanoInMicro = 1000; +- m_lfx->SetTargetFrameTime(frameTimeUs * kNanoInMicro); ++ Com NvapiD3dInstance::GetLfx2DeviceExt(IUnknown* pDevice) { ++ static std::mutex map_mutex; ++ static std::unordered_map cacheMap; ++ ++ std::scoped_lock lock(map_mutex); ++ auto it = cacheMap.find(pDevice); ++ if (it != cacheMap.end()) ++ return it->second; ++ Com lfx2Device; ++ if (FAILED(pDevice->QueryInterface(IID_PPV_ARGS(&lfx2Device)))) ++ lfx2Device = nullptr; ++ ++ cacheMap.emplace(pDevice, lfx2Device.ptr()); ++ return lfx2Device; + } + } +\ No newline at end of file +diff --git a/src/d3d/nvapi_d3d_instance.h b/src/d3d/nvapi_d3d_instance.h +index 5a22371..2d5de3a 100644 +--- a/src/d3d/nvapi_d3d_instance.h ++++ b/src/d3d/nvapi_d3d_instance.h +@@ -13,12 +13,15 @@ namespace dxvk { + [[nodiscard]] bool IsReflexAvailable(); + [[nodiscard]] bool IsReflexEnabled() const; + void SetReflexEnabled(bool value); +- void Sleep(); +- void SetTargetFrameTime(uint64_t frameTimeUs); ++ [[nodiscard]] bool UseLatencyMarkers() const; ++ [[nodiscard]] Lfx2* GetLfx2Instance() const; ++ ++ Com GetLfx2DeviceExt(IUnknown* pDevice); + + private: + ResourceFactory& m_resourceFactory; +- std::unique_ptr m_lfx; ++ std::unique_ptr m_lfx; + bool m_isLfxEnabled = false; ++ bool m_useLatencyMarkers; + }; + } +\ No newline at end of file +diff --git a/src/dxvk/dxvk_interfaces.cpp b/src/dxvk/dxvk_interfaces.cpp +index 734fb75..aefd64a 100644 +--- a/src/dxvk/dxvk_interfaces.cpp ++++ b/src/dxvk/dxvk_interfaces.cpp +@@ -5,5 +5,6 @@ const GUID IDXGIVkInteropFactory1::guid = {0x2a289dbd, 0x2d0a, 0x4a51, {0x89, 0x + const GUID IDXGIVkInteropAdapter::guid = {0x3a6d8f2c, 0xb0e8, 0x4ab4, {0xb4, 0xdc, 0x4f, 0xd2, 0x48, 0x91, 0xbf, 0xa5}}; + const GUID ID3D11VkExtDevice::guid = {0x8a6e3c42, 0xf74c, 0x45b7, {0x82, 0x65, 0xa2, 0x31, 0xb6, 0x77, 0xca, 0x17}}; + const GUID ID3D11VkExtDevice1::guid = {0xcfcf64ef, 0x9586, 0x46d0, {0xbc, 0xa4, 0x97, 0xcf, 0x2c, 0xa6, 0x1b, 0x06}}; ++const GUID ID3DLfx2ExtDevice::guid = {0x851a9f0f, 0x5da0, 0x4850, {0xb5, 0x63, 0xa7, 0xbb, 0xc4, 0x14, 0xf4, 0xe6}}; + const GUID ID3D11VkExtContext::guid = {0xfd0bca13, 0x5cb6, 0x4c3a, {0x98, 0x7e, 0x47, 0x50, 0xde, 0x2c, 0xa7, 0x91}}; + const GUID ID3D11VkExtContext1::guid = {0x874b09b2, 0xae0b, 0x41d8, {0x84, 0x76, 0x5f, 0x3b, 0x7a, 0x0e, 0x87, 0x9d}}; +diff --git a/src/dxvk/dxvk_interfaces.h b/src/dxvk/dxvk_interfaces.h +index 98976b6..2063e54 100644 +--- a/src/dxvk/dxvk_interfaces.h ++++ b/src/dxvk/dxvk_interfaces.h +@@ -17,6 +17,7 @@ enum D3D11_VK_EXTENSION : uint32_t { + D3D11_VK_EXT_BARRIER_CONTROL = 3, + D3D11_VK_NVX_BINARY_IMPORT = 4, + D3D11_VK_NVX_IMAGE_VIEW_HANDLE = 5, ++ D3D11_VK_LATENCYFLEX2 = 6, + }; + + enum D3D11_VK_BARRIER_CONTROL : uint32_t { +@@ -117,6 +118,17 @@ ID3D11VkExtDevice1 : public ID3D11VkExtDevice { + uint32_t * pCudaTextureHandle) = 0; + }; + ++MIDL_INTERFACE("851a9f0f-5da0-4850-b563-a7bbc414f4e6") ++ID3DLfx2ExtDevice : public IUnknown { ++ static const GUID guid; ++ ++ virtual void STDMETHODCALLTYPE MarkRenderStart(void* frame) = 0; ++ ++ virtual void STDMETHODCALLTYPE MarkRenderEnd(void* frame) = 0; ++ ++ virtual void STDMETHODCALLTYPE ImplicitBeginFrame(uint64_t * outTimestamp, void* outFrame) = 0; ++}; ++ + MIDL_INTERFACE("fd0bca13-5cb6-4c3a-987e-4750de2ca791") + ID3D11VkExtContext : public IUnknown { + static const GUID guid; +@@ -193,5 +205,6 @@ DXVK_DEFINE_GUID(IDXGIVkInteropFactory1) + DXVK_DEFINE_GUID(IDXGIVkInteropAdapter) + DXVK_DEFINE_GUID(ID3D11VkExtDevice) + DXVK_DEFINE_GUID(ID3D11VkExtDevice1) ++DXVK_DEFINE_GUID(ID3DLfx2ExtDevice) + DXVK_DEFINE_GUID(ID3D11VkExtContext) + DXVK_DEFINE_GUID(ID3D11VkExtContext1) +diff --git a/src/meson.build b/src/meson.build +index 98410c0..1b4f83f 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -11,6 +11,7 @@ nvapi_src = files([ + 'sysinfo/nvapi_adapter_registry.cpp', + 'resource_factory.cpp', + 'd3d/lfx.cpp', ++ 'd3d/lfx2.cpp', + 'd3d/nvapi_d3d_instance.cpp', + 'd3d11/nvapi_d3d11_device.cpp', + 'd3d12/nvapi_d3d12_device.cpp', +diff --git a/src/nvapi_d3d.cpp b/src/nvapi_d3d.cpp +index 7f1168b..dfed404 100644 +--- a/src/nvapi_d3d.cpp ++++ b/src/nvapi_d3d.cpp +@@ -1,6 +1,8 @@ + #include "nvapi_private.h" + #include "nvapi_globals.h" + #include "util/util_statuscode.h" ++#include "dxvk/dxvk_interfaces.h" ++#include "d3d12/nvapi_d3d12_device.h" + + extern "C" { + using namespace dxvk; +@@ -115,7 +117,13 @@ extern "C" { + if (!nvapiD3dInstance->IsReflexAvailable()) + return NoImplementation(n, alreadyLoggedNoLfx); + +- nvapiD3dInstance->Sleep(); ++ nvapiD3dInstance->GetLfx2Instance()->Sleep(); ++ if (nvapiD3dInstance->IsReflexEnabled() && !nvapiD3dInstance->UseLatencyMarkers()) { ++ auto lfx2Ext = nvapiD3dInstance->GetLfx2DeviceExt(pDevice); ++ if (lfx2Ext.ptr()) { ++ nvapiD3dInstance->GetLfx2Instance()->SleepImplicit(lfx2Ext); ++ } ++ } + + return Ok(n, alreadyLoggedOk); + } +@@ -124,6 +132,10 @@ extern "C" { + constexpr auto n = __func__; + static bool alreadyLoggedNoLfx = false; + ++ Com context = nvapiD3dInstance->GetLfx2DeviceExt(pDevice); ++ if (!context.ptr()) ++ return NoImplementation(n, alreadyLoggedNoLfx); ++ + if (nvapiAdapterRegistry == nullptr) + return ApiNotInitialized(n); + +@@ -134,10 +146,7 @@ extern "C" { + return NoImplementation(n, alreadyLoggedNoLfx); + + nvapiD3dInstance->SetReflexEnabled(pSetSleepModeParams->bLowLatencyMode); +- if (pSetSleepModeParams->bLowLatencyMode) +- nvapiD3dInstance->SetTargetFrameTime(pSetSleepModeParams->minimumIntervalUs); +- +- return Ok(str::format(n, " (", pSetSleepModeParams->bLowLatencyMode ? (str::format("Enabled/", pSetSleepModeParams->minimumIntervalUs, "us")) : "Disabled", ")")); ++ return Ok(str::format(n, " (", pSetSleepModeParams->bLowLatencyMode ? str::format("Enabled/", pSetSleepModeParams->minimumIntervalUs, "us") : "Disabled", ")")); + } + + NvAPI_Status __cdecl NvAPI_D3D_GetSleepStatus(IUnknown* pDevice, NV_GET_SLEEP_STATUS_PARAMS* pGetSleepStatusParams) { +@@ -164,6 +173,13 @@ extern "C" { + + NvAPI_Status __cdecl NvAPI_D3D_SetLatencyMarker(IUnknown* pDev, NV_LATENCY_MARKER_PARAMS* pSetLatencyMarkerParams) { + static bool alreadyLogged = false; +- return NoImplementation(__func__, alreadyLogged); ++ if (pSetLatencyMarkerParams->version != NV_LATENCY_MARKER_PARAMS_VER1) ++ return IncompatibleStructVersion(__func__); ++ ++ Com context = nvapiD3dInstance->GetLfx2DeviceExt(pDev); ++ Lfx2* lfx2 = nvapiD3dInstance->GetLfx2Instance(); ++ lfx2->Mark(pSetLatencyMarkerParams->frameID, pSetLatencyMarkerParams->markerType, context); ++ ++ return Ok(__func__, alreadyLogged); + } + } +diff --git a/src/nvapi_gpu.cpp b/src/nvapi_gpu.cpp +index 97d3a10..772985f 100644 +--- a/src/nvapi_gpu.cpp ++++ b/src/nvapi_gpu.cpp +@@ -367,77 +367,10 @@ extern "C" { + + NvAPI_Status __cdecl NvAPI_GPU_GetArchInfo(NvPhysicalGpuHandle hPhysicalGpu, NV_GPU_ARCH_INFO* pGpuArchInfo) { + constexpr auto n = __func__; +- auto returnAddress = _ReturnAddress(); + +- if (nvapiAdapterRegistry == nullptr) +- return ApiNotInitialized(n); +- +- if (pGpuArchInfo == nullptr) +- return InvalidArgument(n); +- +- auto adapter = reinterpret_cast(hPhysicalGpu); +- if (!nvapiAdapterRegistry->IsAdapter(adapter)) +- return ExpectedPhysicalGpuHandle(n); +- +- if (pGpuArchInfo->version != NV_GPU_ARCH_INFO_VER_1 && pGpuArchInfo->version != NV_GPU_ARCH_INFO_VER_2) +- return IncompatibleStructVersion(n); +- +- auto architectureId = adapter->GetArchitectureId(); +- +- if (env::needsAmpereSpoofing(architectureId, returnAddress)) +- architectureId = NV_GPU_ARCHITECTURE_GA100; +- +- if (env::needsPascalSpoofing(architectureId)) +- architectureId = NV_GPU_ARCHITECTURE_GP100; +- +- // Assume the implementation ID from the architecture ID. No simple way +- // to do a more fine-grained query at this time. Would need wine-nvml +- // usage. +- NV_GPU_ARCH_IMPLEMENTATION_ID implementationId; +- switch (architectureId) { +- case NV_GPU_ARCHITECTURE_AD100: +- implementationId = NV_GPU_ARCH_IMPLEMENTATION_AD102; +- break; +- case NV_GPU_ARCHITECTURE_GA100: +- implementationId = NV_GPU_ARCH_IMPLEMENTATION_GA102; +- break; +- case NV_GPU_ARCHITECTURE_TU100: +- implementationId = NV_GPU_ARCH_IMPLEMENTATION_TU102; +- break; +- case NV_GPU_ARCHITECTURE_GV100: +- implementationId = NV_GPU_ARCH_IMPLEMENTATION_GV100; +- break; +- case NV_GPU_ARCHITECTURE_GP100: +- implementationId = NV_GPU_ARCH_IMPLEMENTATION_GP102; +- break; +- case NV_GPU_ARCHITECTURE_GM200: +- implementationId = NV_GPU_ARCH_IMPLEMENTATION_GM204; +- break; +- case NV_GPU_ARCHITECTURE_GK100: +- implementationId = NV_GPU_ARCH_IMPLEMENTATION_GK104; +- break; +- default: +- return Error(n); +- } +- +- auto revisionId = NV_GPU_CHIP_REV_UNKNOWN; +- +- switch (pGpuArchInfo->version) { +- case NV_GPU_ARCH_INFO_VER_1: { +- auto pGpuArchInfoV1 = reinterpret_cast(pGpuArchInfo); +- pGpuArchInfoV1->architecture = architectureId; +- pGpuArchInfoV1->implementation = implementationId; +- pGpuArchInfoV1->revision = revisionId; +- break; +- } +- case NV_GPU_ARCH_INFO_VER_2: +- pGpuArchInfo->architecture_id = architectureId; +- pGpuArchInfo->implementation_id = implementationId; +- pGpuArchInfo->revision_id = revisionId; +- break; +- default: +- return Error(n); // Unreachable, but just to be sure +- } ++ pGpuArchInfo->architecture_id = NV_GPU_ARCHITECTURE_AD100; ++ pGpuArchInfo->implementation_id = NV_GPU_ARCH_IMPLEMENTATION_AD102; ++ pGpuArchInfo->revision_id = NV_GPU_CHIP_REV_UNKNOWN; + + return Ok(n); + } +diff --git a/src/resource_factory.cpp b/src/resource_factory.cpp +index ce9a7d9..40c8295 100644 +--- a/src/resource_factory.cpp ++++ b/src/resource_factory.cpp +@@ -37,7 +37,7 @@ namespace dxvk { + return std::make_unique(); + } + +- std::unique_ptr ResourceFactory::CreateLfx() { +- return std::make_unique(); ++ std::unique_ptr ResourceFactory::CreateLfx() { ++ return std::make_unique(); + } + } +diff --git a/src/resource_factory.h b/src/resource_factory.h +index eebfbcd..69c2384 100644 +--- a/src/resource_factory.h ++++ b/src/resource_factory.h +@@ -4,7 +4,7 @@ + #include "util/com_pointer.h" + #include "sysinfo/vulkan.h" + #include "sysinfo/nvml.h" +-#include "d3d/lfx.h" ++#include "d3d/lfx2.h" + + namespace dxvk { + class ResourceFactory { +@@ -16,6 +16,6 @@ namespace dxvk { + virtual Com CreateDXGIFactory1(); + virtual std::unique_ptr CreateVulkan(Com& dxgiFactory); + virtual std::unique_ptr CreateNvml(); +- virtual std::unique_ptr CreateLfx(); ++ virtual std::unique_ptr CreateLfx(); + }; + } +-- +2.43.0 + + +From 7004a81746a35b8dc13301431772dbbc36e10fcd Mon Sep 17 00:00:00 2001 +From: FakeMichau <49685661+FakeMichau@users.noreply.github.com> +Date: Sat, 7 Oct 2023 15:12:55 +0200 +Subject: [PATCH 2/3] Remove incomplete support for the first latencyflex + +--- + src/d3d/lfx.cpp | 67 ----------------------------------------- + src/d3d/lfx.h | 26 ---------------- + src/meson.build | 1 - + tests/meson.build | 1 - + tests/mock_factory.h | 5 --- + tests/nvapi_d3d_mocks.h | 7 ----- + 6 files changed, 107 deletions(-) + delete mode 100644 src/d3d/lfx.cpp + delete mode 100644 src/d3d/lfx.h + +diff --git a/src/d3d/lfx.cpp b/src/d3d/lfx.cpp +deleted file mode 100644 +index c5b8ea4..0000000 +--- a/src/d3d/lfx.cpp ++++ /dev/null +@@ -1,67 +0,0 @@ +-#include "lfx.h" +- +-#include "../util/util_string.h" +-#include "../util/util_log.h" +- +-namespace dxvk { +- Lfx::Lfx() { +- const auto lfxModuleName = "latencyflex_layer.dll"; +- const auto lfxModuleNameFallback = "latencyflex_wine.dll"; +- auto useFallbackEntrypoints = false; +- +- m_lfxModule = ::LoadLibraryA(lfxModuleName); +- if (m_lfxModule != nullptr) +- log::write(str::format("Successfully loaded ", lfxModuleName)); +- +- if (m_lfxModule == nullptr && ::GetLastError() == ERROR_MOD_NOT_FOUND) { +- // Try fallback entrypoints. These were used by versions prior to [9c2836f]. +- // The fallback logic can be removed once enough time has passed since the release. +- // [9c2836f]: https://github.com/ishitatsuyuki/LatencyFleX/commit/9c2836faf14196190a915064b53c27e675e47960 +- m_lfxModule = ::LoadLibraryA(lfxModuleNameFallback); +- if (m_lfxModule != nullptr) +- log::write(str::format("Successfully loaded ", lfxModuleNameFallback)); +- +- useFallbackEntrypoints = true; +- } +- +- if (m_lfxModule == nullptr) { +- auto lastError = ::GetLastError(); +- if (lastError != ERROR_MOD_NOT_FOUND) // Ignore library not found +- log::write(str::format("Loading ", !useFallbackEntrypoints ? lfxModuleName : lfxModuleNameFallback, +- " failed with error code: ", lastError)); +- return; +- } +- +- m_lfx_WaitAndBeginFrame = GetProcAddress( +- !useFallbackEntrypoints ? "lfx_WaitAndBeginFrame" : "winelfx_WaitAndBeginFrame"); +- m_lfx_SetTargetFrameTime = GetProcAddress( +- !useFallbackEntrypoints ? "lfx_SetTargetFrameTime" : "winelfx_SetTargetFrameTime"); +- } +- +- Lfx::~Lfx() { +- if (m_lfxModule == nullptr) +- return; +- +- ::FreeLibrary(m_lfxModule); +- m_lfxModule = nullptr; +- } +- +- bool Lfx::IsAvailable() const { +- return m_lfxModule != nullptr; +- } +- +- void Lfx::WaitAndBeginFrame() { +- if (m_lfx_WaitAndBeginFrame) +- m_lfx_WaitAndBeginFrame(); +- } +- +- void Lfx::SetTargetFrameTime(uint64_t frame_time_ns) { +- if (m_lfx_SetTargetFrameTime) +- m_lfx_SetTargetFrameTime(static_cast<__int64>(frame_time_ns)); +- } +- +- template +- T Lfx::GetProcAddress(const char* name) { +- return reinterpret_cast(reinterpret_cast(::GetProcAddress(m_lfxModule, name))); +- } +-} +\ No newline at end of file +diff --git a/src/d3d/lfx.h b/src/d3d/lfx.h +deleted file mode 100644 +index daff36e..0000000 +--- a/src/d3d/lfx.h ++++ /dev/null +@@ -1,26 +0,0 @@ +-#pragma once +- +-#include "../nvapi_private.h" +- +-namespace dxvk { +- class Lfx { +- public: +- Lfx(); +- virtual ~Lfx(); +- +- [[nodiscard]] virtual bool IsAvailable() const; +- virtual void WaitAndBeginFrame(); +- virtual void SetTargetFrameTime(uint64_t frame_time_ns); +- +- private: +- using PFN_lfx_WaitAndBeginFrame = void (*)(); +- using PFN_lfx_SetTargetFrameTime = void (*)(__int64); +- +- HMODULE m_lfxModule{}; +- PFN_lfx_WaitAndBeginFrame m_lfx_WaitAndBeginFrame{}; +- PFN_lfx_SetTargetFrameTime m_lfx_SetTargetFrameTime{}; +- +- template +- T GetProcAddress(const char* name); +- }; +-} +\ No newline at end of file +diff --git a/src/meson.build b/src/meson.build +index 1b4f83f..5b4055b 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -10,7 +10,6 @@ nvapi_src = files([ + 'sysinfo/nvapi_adapter.cpp', + 'sysinfo/nvapi_adapter_registry.cpp', + 'resource_factory.cpp', +- 'd3d/lfx.cpp', + 'd3d/lfx2.cpp', + 'd3d/nvapi_d3d_instance.cpp', + 'd3d11/nvapi_d3d11_device.cpp', +diff --git a/tests/meson.build b/tests/meson.build +index 5aca1d5..95b4d0e 100644 +--- a/tests/meson.build ++++ b/tests/meson.build +@@ -6,7 +6,6 @@ nvapi_src = files([ + '../src/util/util_log.cpp', + '../src/sysinfo/vulkan.cpp', + '../src/sysinfo/nvml.cpp', +- '../src/d3d/lfx.cpp', + '../src/d3d/nvapi_d3d_instance.cpp', + '../src/sysinfo/nvapi_output.cpp', + '../src/sysinfo/nvapi_adapter.cpp', +diff --git a/tests/mock_factory.h b/tests/mock_factory.h +index 0f41f74..67852f9 100644 +--- a/tests/mock_factory.h ++++ b/tests/mock_factory.h +@@ -30,10 +30,6 @@ class MockFactory : public dxvk::ResourceFactory { + return std::move(m_nvmlMock); + } + +- std::unique_ptr CreateLfx() override { +- return std::move(m_lfxMock); +- } +- + [[nodiscard]] std::array, 1> ConfigureAllowRelease() { + return { + NAMED_ALLOW_CALL(*m_dxgiFactoryMock, Release()) +@@ -44,5 +40,4 @@ class MockFactory : public dxvk::ResourceFactory { + std::unique_ptr m_dxgiFactoryMock; + std::unique_ptr m_vulkanMock; + std::unique_ptr m_nvmlMock; +- std::unique_ptr m_lfxMock; + }; +diff --git a/tests/nvapi_d3d_mocks.h b/tests/nvapi_d3d_mocks.h +index d1e7ac7..b389882 100644 +--- a/tests/nvapi_d3d_mocks.h ++++ b/tests/nvapi_d3d_mocks.h +@@ -1,16 +1,9 @@ + #pragma once + + #include "nvapi_tests_private.h" +-#include "../src/d3d/lfx.h" + + class UnknownMock : public trompeloeil::mock_interface { + MAKE_MOCK2(QueryInterface, HRESULT(REFIID, void**), override); + MAKE_MOCK0(AddRef, ULONG(), override); + MAKE_MOCK0(Release, ULONG(), override); + }; +- +-class LfxMock : public trompeloeil::mock_interface { +- IMPLEMENT_CONST_MOCK0(IsAvailable); +- IMPLEMENT_MOCK0(WaitAndBeginFrame); +- IMPLEMENT_MOCK1(SetTargetFrameTime); +-}; +-- +2.43.0 + + +From b4d01b2ce7367d0be6cfe9cfcf6f0d1884e80ccc Mon Sep 17 00:00:00 2001 +From: FakeMichau <49685661+FakeMichau@users.noreply.github.com> +Date: Wed, 7 Feb 2024 16:39:27 +0100 +Subject: [PATCH 3/3] Disable LFX2 when WINEHAGS is enabled + +--- + src/d3d/lfx2.cpp | 6 +++++- + src/d3d/lfx2.h | 1 + + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/d3d/lfx2.cpp b/src/d3d/lfx2.cpp +index b75cf0d..a726afa 100644 +--- a/src/d3d/lfx2.cpp ++++ b/src/d3d/lfx2.cpp +@@ -1,12 +1,16 @@ + #include "lfx2.h" + #include "util/util_log.h" + #include "util/util_string.h" ++#include "util/util_env.h" + + namespace dxvk { + + Lfx2::Lfx2() { + const auto lfxModuleName = "latencyflex2_rust.dll"; + ++ auto hagsEnv = env::getEnvVariable("WINEHAGS"); ++ m_FG = !hagsEnv.empty() && hagsEnv != "0"; ++ + m_lfxModule = ::LoadLibraryA(lfxModuleName); + if (m_lfxModule == nullptr) { + auto lastError = ::GetLastError(); +@@ -70,7 +74,7 @@ namespace dxvk { + } + + void Lfx2::Mark(uint64_t frame_id, NV_LATENCY_MARKER_TYPE type, Com& extDevice) { +- if (!m_lfxContext) ++ if (!m_lfxContext || m_FG) + return; + + uint32_t section; +diff --git a/src/d3d/lfx2.h b/src/d3d/lfx2.h +index 2e20ad7..6221d5b 100644 +--- a/src/d3d/lfx2.h ++++ b/src/d3d/lfx2.h +@@ -47,6 +47,7 @@ namespace dxvk { + + void EnsureFrame(); + ++ bool m_FG; + std::mutex m_frameMapMutex; + std::map m_frameMap; + std::unordered_map m_callsExpectedByFrame; +-- +2.43.0 + diff --git a/patches/lfx2-vkd3d.patch b/patches/lfx2-vkd3d.patch new file mode 100644 index 0000000000..56d332a813 --- /dev/null +++ b/patches/lfx2-vkd3d.patch @@ -0,0 +1,616 @@ +diff --git a/include/latencyflex2.h b/include/latencyflex2.h +new file mode 100644 +index 00000000..6bdc1f84 +--- /dev/null ++++ b/include/latencyflex2.h +@@ -0,0 +1,129 @@ ++#ifndef LATENCYFLEX2_H ++#define LATENCYFLEX2_H ++ ++#define LFX2_DX12 ++ ++#include ++#include ++#include ++#include ++#include ++#ifdef LFX2_DX12 ++#include ++#endif ++ ++#ifdef _WIN32 ++#define LFX2_API __declspec(dllimport) ++#else ++#define LFX2_API ++#endif ++ ++typedef struct lfx2Dx12SubmitAux { ++ ID3D12GraphicsCommandList* executeBefore; ++ ID3D12GraphicsCommandList* executeAfter; ++ ID3D12Fence* fence; ++ uint64_t fenceValue; ++} lfx2Dx12SubmitAux; ++ ++ ++typedef enum lfx2MarkType { ++ lfx2MarkTypeBegin, ++ lfx2MarkTypeEnd, ++} lfx2MarkType; ++ ++typedef struct lfx2Context lfx2Context; ++ ++#if defined(LFX2_DX12) ++typedef struct lfx2Dx12Context lfx2Dx12Context; ++#endif ++ ++/** ++ * A write handle for frame markers. ++ */ ++typedef struct lfx2Frame lfx2Frame; ++ ++typedef struct lfx2ImplicitContext lfx2ImplicitContext; ++ ++typedef uint64_t lfx2Timestamp; ++ ++typedef uint32_t lfx2SectionId; ++ ++#ifdef __cplusplus ++extern "C" { ++#endif // __cplusplus ++ ++#if defined(LFX2_DX12) ++LFX2_API struct lfx2Dx12Context *lfx2Dx12ContextCreate(ID3D12Device* device); ++#endif ++ ++#if defined(LFX2_DX12) ++LFX2_API void lfx2Dx12ContextAddRef(struct lfx2Dx12Context *context); ++#endif ++ ++#if defined(LFX2_DX12) ++LFX2_API void lfx2Dx12ContextRelease(struct lfx2Dx12Context *context); ++#endif ++ ++#if defined(LFX2_DX12) ++LFX2_API ++lfx2Dx12SubmitAux lfx2Dx12ContextBeforeSubmit(struct lfx2Dx12Context *context, ++ ID3D12CommandQueue* queue); ++#endif ++ ++#if defined(LFX2_DX12) ++LFX2_API void lfx2Dx12ContextBeginFrame(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++#endif ++ ++#if defined(LFX2_DX12) ++LFX2_API void lfx2Dx12ContextEndFrame(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++#endif ++ ++LFX2_API lfx2Timestamp lfx2TimestampNow(void); ++ ++#if defined(_WIN32) ++LFX2_API lfx2Timestamp lfx2TimestampFromQpc(uint64_t qpc); ++#endif ++ ++LFX2_API void lfx2SleepUntil(lfx2Timestamp target); ++ ++LFX2_API struct lfx2Context *lfx2ContextCreate(void); ++ ++LFX2_API void lfx2ContextAddRef(struct lfx2Context *context); ++ ++LFX2_API void lfx2ContextRelease(struct lfx2Context *context); ++ ++LFX2_API ++struct lfx2Frame *lfx2FrameCreate(struct lfx2Context *context, ++ lfx2Timestamp *out_timestamp); ++ ++LFX2_API void lfx2FrameAddRef(struct lfx2Frame *frame); ++ ++LFX2_API void lfx2FrameRelease(struct lfx2Frame *frame); ++ ++LFX2_API ++void lfx2MarkSection(struct lfx2Frame *frame, ++ lfx2SectionId section_id, ++ enum lfx2MarkType mark_type, ++ lfx2Timestamp timestamp); ++ ++LFX2_API struct lfx2ImplicitContext *lfx2ImplicitContextCreate(void); ++ ++LFX2_API void lfx2ImplicitContextAddRef(struct lfx2ImplicitContext *context); ++ ++LFX2_API void lfx2ImplicitContextRelease(struct lfx2ImplicitContext *context); ++ ++LFX2_API void lfx2ImplicitContextReset(struct lfx2ImplicitContext *context); ++ ++LFX2_API ++struct lfx2Frame *lfx2FrameCreateImplicit(struct lfx2ImplicitContext *context, ++ lfx2Timestamp *out_timestamp); ++ ++LFX2_API ++struct lfx2Frame *lfx2FrameDequeueImplicit(struct lfx2ImplicitContext *context, ++ bool critical); ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif // __cplusplus ++ ++#endif /* LATENCYFLEX2_H */ +diff --git a/include/vkd3d_device_vkd3d_ext.idl b/include/vkd3d_device_vkd3d_ext.idl +index 093c96c5..9e3e666b 100644 +--- a/include/vkd3d_device_vkd3d_ext.idl ++++ b/include/vkd3d_device_vkd3d_ext.idl +@@ -81,3 +81,16 @@ interface ID3D12DeviceExt1 : ID3D12DeviceExt + HRESULT CreateResourceFromBorrowedHandle(const D3D12_RESOURCE_DESC1 *desc, UINT64 vk_handle, ID3D12Resource **resource); + HRESULT GetVulkanQueueInfoEx(ID3D12CommandQueue *queue, VkQueue *vk_queue, UINT32 *vk_queue_index, UINT32 *vk_queue_flags, UINT32 *vk_queue_family); + } ++ ++[ ++ uuid(851a9f0f-5da0-4850-b563-a7bbc414f4e6), ++ object, ++ local, ++ pointer_default(unique) ++] ++interface ID3DLfx2ExtDevice : IUnknown ++{ ++ void MarkRenderStart(void *frame); ++ void MarkRenderEnd(void *frame); ++ void ImplicitBeginFrame(UINT64 *out_timestamp, void *out_frame); ++} +\ No newline at end of file +diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c +index 288e7e24..cdf7239d 100644 +--- a/libs/vkd3d/command.c ++++ b/libs/vkd3d/command.c +@@ -17321,6 +17321,75 @@ static void STDMETHODCALLTYPE d3d12_command_queue_ExecuteCommandLists(ID3D12Comm + d3d12_command_queue_add_submission(command_queue, &sub); + } + ++static HRESULT STDMETHODCALLTYPE d3d12_command_queue_Signal(ID3D12CommandQueue *iface, ++ ID3D12Fence *fence_iface, UINT64 value); ++ ++static void STDMETHODCALLTYPE d3d12_command_queue_ExecuteCommandListsLFX2(ID3D12CommandQueue *iface, ++ UINT command_list_count, ID3D12CommandList *const *command_lists) ++{ ++ struct d3d12_command_queue *command_queue = impl_from_ID3D12CommandQueue(iface); ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ struct vkd3d_lfx2_context *lfx2_context = &command_queue->device->lfx2_context; ++ UINT new_command_list_count = command_list_count, i = 0; ++ ID3D12CommandList **new_command_lists; ++ struct lfx2Dx12SubmitAux lfx2_aux; ++ ++ if (!lfx2 || command_queue->desc.Type != D3D12_COMMAND_LIST_TYPE_DIRECT) ++ { ++ d3d12_command_queue_ExecuteCommandLists(iface, command_list_count, command_lists); ++ return; ++ } ++ ++ pthread_mutex_lock(&lfx2_context->current_implicit_frame_lock); ++ if (!lfx2_context->current_implicit_frame) ++ { ++ lfx2_context->current_implicit_frame = lfx2->FrameDequeueImplicit(lfx2_context->implicit_context, false); ++ if (lfx2_context->current_implicit_frame) { ++ lfx2->Dx12ContextBeginFrame(lfx2_context->dx12_context, lfx2_context->current_implicit_frame); ++ } ++ } ++ pthread_mutex_unlock(&lfx2_context->current_implicit_frame_lock); ++ ++ lfx2_aux = lfx2->Dx12ContextBeforeSubmit(lfx2_context->dx12_context, iface); ++ ++ if (lfx2_aux.executeBefore) ++ new_command_list_count++; ++ ++ if (lfx2_aux.executeAfter) ++ new_command_list_count++; ++ ++ if (!(new_command_lists = vkd3d_calloc(new_command_list_count, sizeof(*new_command_lists)))) ++ { ++ ERR("Failed to allocate command list array."); ++ return; ++ } ++ ++ if (lfx2_aux.executeBefore) ++ new_command_lists[i++] = (ID3D12CommandList *)lfx2_aux.executeBefore; ++ ++ memcpy(&new_command_lists[i], command_lists, command_list_count * sizeof(*command_lists)); ++ i += command_list_count; ++ ++ if (lfx2_aux.executeAfter) ++ new_command_lists[i++] = (ID3D12CommandList *)lfx2_aux.executeAfter; ++ ++ d3d12_command_queue_ExecuteCommandLists(iface, new_command_list_count, new_command_lists); ++ ++ if (lfx2_aux.executeBefore) ++ d3d12_command_list_Release((d3d12_command_list_iface *)lfx2_aux.executeBefore); ++ ++ if (lfx2_aux.executeAfter) ++ d3d12_command_list_Release((d3d12_command_list_iface *)lfx2_aux.executeAfter); ++ ++ vkd3d_free(new_command_lists); ++ ++ if (lfx2_aux.fence) ++ { ++ d3d12_command_queue_Signal(iface, lfx2_aux.fence, lfx2_aux.fenceValue); ++ d3d12_fence_Release((d3d12_fence_iface *)lfx2_aux.fence); ++ } ++} ++ + static void STDMETHODCALLTYPE d3d12_command_queue_SetMarker(ID3D12CommandQueue *iface, + UINT metadata, const void *data, UINT size) + { +@@ -17494,7 +17563,7 @@ static CONST_VTBL struct ID3D12CommandQueueVtbl d3d12_command_queue_vtbl = + /* ID3D12CommandQueue methods */ + d3d12_command_queue_UpdateTileMappings, + d3d12_command_queue_CopyTileMappings, +- d3d12_command_queue_ExecuteCommandLists, ++ d3d12_command_queue_ExecuteCommandListsLFX2, + d3d12_command_queue_SetMarker, + d3d12_command_queue_BeginEvent, + d3d12_command_queue_EndEvent, +diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c +index 9163cb8f..55da65ee 100644 +--- a/libs/vkd3d/device.c ++++ b/libs/vkd3d/device.c +@@ -3408,6 +3408,9 @@ extern ULONG STDMETHODCALLTYPE d3d12_device_vkd3d_ext_AddRef(d3d12_device_vkd3d_ + extern ULONG STDMETHODCALLTYPE d3d12_dxvk_interop_device_AddRef(ID3D12DXVKInteropDevice *iface); + extern ULONG STDMETHODCALLTYPE d3d12_low_latency_device_AddRef(ID3DLowLatencyDevice *iface); + ++/* ID3DLfx2ExtDevice */ ++extern ULONG STDMETHODCALLTYPE d3d12_device_lfx2_ext_AddRef(d3d12_device_lfx2_ext_iface *iface); ++ + HRESULT STDMETHODCALLTYPE d3d12_device_QueryInterface(d3d12_device_iface *iface, + REFIID riid, void **object) + { +@@ -3462,6 +3465,14 @@ HRESULT STDMETHODCALLTYPE d3d12_device_QueryInterface(d3d12_device_iface *iface, + return S_OK; + } + ++ if (IsEqualGUID(riid, &IID_ID3DLfx2ExtDevice)) ++ { ++ struct d3d12_device *device = impl_from_ID3D12Device(iface); ++ d3d12_device_lfx2_ext_AddRef(&device->ID3D12DeviceLfx2_iface); ++ *object = &device->ID3D12DeviceLfx2_iface; ++ return S_OK; ++ } ++ + WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid)); + + *object = NULL; +@@ -3508,6 +3519,7 @@ static void d3d12_device_destroy(struct d3d12_device *device) + vkd3d_private_store_destroy(&device->private_store); + + vkd3d_cleanup_format_info(device); ++ vkd3d_lfx2_context_free(&device->lfx2_context); + vkd3d_memory_info_cleanup(&device->memory_info, device); + vkd3d_address_binding_tracker_cleanup(&device->address_binding_tracker, device); + vkd3d_queue_timeline_trace_cleanup(&device->queue_timeline_trace); +@@ -7257,7 +7269,7 @@ static D3D12_RESOURCE_STATES vkd3d_barrier_layout_to_resource_state(D3D12_BARRIE + } + + static HRESULT STDMETHODCALLTYPE d3d12_device_CreateCommittedResource3(d3d12_device_iface *iface, +- const D3D12_HEAP_PROPERTIES *heap_properties, D3D12_HEAP_FLAGS heap_flags, ++ const D3D12_HEAP_PROPERTIES *heap_properties, D3D12_HEAP_FLAGS heap_flags, + const D3D12_RESOURCE_DESC1 *desc, D3D12_BARRIER_LAYOUT initial_layout, + const D3D12_CLEAR_VALUE *optimized_clear_value, ID3D12ProtectedResourceSession *protected_session, + UINT32 num_castable_formats, const DXGI_FORMAT *castable_formats, REFIID iid, void **resource) +@@ -8642,6 +8654,7 @@ static void vkd3d_scratch_pool_init(struct d3d12_device *device) + device->scratch_pools[VKD3D_SCRATCH_POOL_KIND_INDIRECT_PREPROCESS].scratch_buffer_size = + VKD3D_SCRATCH_BUFFER_COUNT_INDIRECT_PREPROCESS; + } ++extern CONST_VTBL struct ID3DLfx2ExtDeviceVtbl d3d12_device_lfx2_ext_vtbl; + + static HRESULT d3d12_device_init(struct d3d12_device *device, + struct vkd3d_instance *instance, const struct vkd3d_device_create_info *create_info) +@@ -8689,6 +8702,7 @@ static HRESULT d3d12_device_init(struct d3d12_device *device, + + device->ID3D12DeviceExt_iface.lpVtbl = &d3d12_device_vkd3d_ext_vtbl; + device->ID3D12DXVKInteropDevice_iface.lpVtbl = &d3d12_dxvk_interop_device_vtbl; ++ device->ID3D12DeviceLfx2_iface.lpVtbl = &d3d12_device_lfx2_ext_vtbl; + device->ID3DLowLatencyDevice_iface.lpVtbl = &d3d_low_latency_device_vtbl; + + if ((rc = rwlock_init(&device->vertex_input_lock))) +@@ -8759,6 +8773,8 @@ static HRESULT d3d12_device_init(struct d3d12_device *device, + } + #endif + ++ vkd3d_lfx2_context_init(&device->lfx2_context, (d3d12_device_iface *)device); ++ + if (vkd3d_descriptor_debug_active_qa_checks()) + { + if (FAILED(hr = vkd3d_descriptor_debug_alloc_global_info(&device->descriptor_qa_global_info, +@@ -8800,6 +8816,7 @@ static HRESULT d3d12_device_init(struct d3d12_device *device, + out_cleanup_descriptor_qa_global_info: + vkd3d_descriptor_debug_free_global_info(device->descriptor_qa_global_info, device); + out_cleanup_breadcrumb_tracer: ++ vkd3d_lfx2_context_free(&device->lfx2_context); + #ifdef VKD3D_ENABLE_BREADCRUMBS + if (vkd3d_config_flags & VKD3D_CONFIG_FLAG_BREADCRUMBS) + vkd3d_breadcrumb_tracer_cleanup(&device->breadcrumb_tracer, device); +diff --git a/libs/vkd3d/device_vkd3d_ext.c b/libs/vkd3d/device_vkd3d_ext.c +index 9b84c296..78f41303 100644 +--- a/libs/vkd3d/device_vkd3d_ext.c ++++ b/libs/vkd3d/device_vkd3d_ext.c +@@ -268,6 +268,65 @@ CONST_VTBL struct ID3D12DeviceExt1Vtbl d3d12_device_vkd3d_ext_vtbl = + d3d12_device_vkd3d_ext_GetVulkanQueueInfoEx, + }; + ++static inline struct d3d12_device *d3d12_device_from_ID3D12DeviceLfx2(d3d12_device_lfx2_ext_iface *iface) ++{ ++ return CONTAINING_RECORD(iface, struct d3d12_device, ID3D12DeviceLfx2_iface); ++} ++ ++ULONG STDMETHODCALLTYPE d3d12_device_lfx2_ext_AddRef(d3d12_device_lfx2_ext_iface *iface) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ return d3d12_device_add_ref(device); ++} ++ ++static ULONG STDMETHODCALLTYPE d3d12_device_lfx2_ext_Release(d3d12_device_lfx2_ext_iface *iface) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ return d3d12_device_release(device); ++} ++ ++static HRESULT STDMETHODCALLTYPE d3d12_device_lfx2_ext_QueryInterface(d3d12_device_lfx2_ext_iface *iface, REFIID iid, void **out) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out); ++ return d3d12_device_QueryInterface(&device->ID3D12Device_iface, iid, out); ++} ++ ++static void STDMETHODCALLTYPE d3d12_device_lfx2_ext_ImplicitBeginFrame(d3d12_device_lfx2_ext_iface *iface, UINT64 *out_timestamp, ++ void *out_frame) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ ++ *(lfx2Frame**)out_frame = lfx2->FrameCreateImplicit(device->lfx2_context.implicit_context, out_timestamp); ++} ++ ++static void STDMETHODCALLTYPE d3d12_device_lfx2_ext_MarkRenderStart(d3d12_device_lfx2_ext_iface *iface, void *frame) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ lfx2->Dx12ContextBeginFrame(device->lfx2_context.dx12_context, (lfx2Frame*)frame); ++} ++ ++static void STDMETHODCALLTYPE d3d12_device_lfx2_ext_MarkRenderEnd(d3d12_device_lfx2_ext_iface *iface, void *frame) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ lfx2->Dx12ContextEndFrame(device->lfx2_context.dx12_context, (lfx2Frame*)frame); ++} ++ ++CONST_VTBL struct ID3DLfx2ExtDeviceVtbl d3d12_device_lfx2_ext_vtbl = ++{ ++ /* IUnknown methods */ ++ d3d12_device_lfx2_ext_QueryInterface, ++ d3d12_device_lfx2_ext_AddRef, ++ d3d12_device_lfx2_ext_Release, ++ ++ /* ID3D12DeviceLfx2 methods */ ++ d3d12_device_lfx2_ext_MarkRenderStart, ++ d3d12_device_lfx2_ext_MarkRenderEnd, ++ d3d12_device_lfx2_ext_ImplicitBeginFrame, ++}; + + static inline struct d3d12_device *d3d12_device_from_ID3D12DXVKInteropDevice(ID3D12DXVKInteropDevice *iface) + { +diff --git a/libs/vkd3d/lfx2.c b/libs/vkd3d/lfx2.c +new file mode 100644 +index 00000000..5fd50b91 +--- /dev/null ++++ b/libs/vkd3d/lfx2.c +@@ -0,0 +1,70 @@ ++#define VKD3D_DBG_CHANNEL VKD3D_DBG_CHANNEL_API ++ ++#include "vkd3d_private.h" ++ ++static pthread_once_t library_once = PTHREAD_ONCE_INIT; ++static struct vkd3d_lfx2_vtable lfx2_vtable; ++static BOOL lfx2_available; ++ ++static void vkd3d_lfx2_load(void) ++{ ++ HMODULE module = LoadLibraryA("latencyflex2_rust.dll"); ++ if (!module) ++ { ++ lfx2_available = false; ++ return; ++ } ++ ++#define LOAD_FUNCTION(name) lfx2_vtable.name = (void *)GetProcAddress(module, "lfx2" #name) ++ ++ LOAD_FUNCTION(Dx12ContextCreate); ++ LOAD_FUNCTION(Dx12ContextRelease); ++ LOAD_FUNCTION(Dx12ContextBeforeSubmit); ++ LOAD_FUNCTION(Dx12ContextBeginFrame); ++ LOAD_FUNCTION(Dx12ContextEndFrame); ++ LOAD_FUNCTION(TimestampNow); ++ LOAD_FUNCTION(TimestampFromQpc); ++ LOAD_FUNCTION(ImplicitContextCreate); ++ LOAD_FUNCTION(ImplicitContextRelease); ++ LOAD_FUNCTION(ImplicitContextReset); ++ LOAD_FUNCTION(FrameCreateImplicit); ++ LOAD_FUNCTION(FrameDequeueImplicit); ++ LOAD_FUNCTION(FrameRelease); ++ ++#undef LOAD_FUNCTION ++ ++ lfx2_available = true; ++} ++ ++struct vkd3d_lfx2_vtable *vkd3d_lfx2_get_vtable(void) ++{ ++ pthread_once(&library_once, vkd3d_lfx2_load); ++ return lfx2_available ? &lfx2_vtable : NULL; ++} ++ ++void vkd3d_lfx2_context_init(struct vkd3d_lfx2_context *context, d3d12_device_iface *device) ++{ ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ if (!lfx2) ++ return; ++ ++ pthread_mutex_init(&context->current_implicit_frame_lock, NULL); ++ context->current_implicit_frame = NULL; ++ context->dx12_context = lfx2->Dx12ContextCreate((ID3D12Device *)device); ++ context->implicit_context = lfx2->ImplicitContextCreate(); ++} ++ ++void vkd3d_lfx2_context_free(struct vkd3d_lfx2_context *context) ++{ ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ if (!lfx2) ++ return; ++ ++ if (context->current_implicit_frame) ++ lfx2->FrameRelease(context->current_implicit_frame); ++ if (context->implicit_context) ++ lfx2->ImplicitContextRelease(context->implicit_context); ++ if (context->dx12_context) ++ lfx2->Dx12ContextRelease(context->dx12_context); ++ pthread_mutex_destroy(&context->current_implicit_frame_lock); ++} +\ No newline at end of file +diff --git a/libs/vkd3d/meson.build b/libs/vkd3d/meson.build +index a5c965f3..3b28e100 100644 +--- a/libs/vkd3d/meson.build ++++ b/libs/vkd3d/meson.build +@@ -77,7 +77,8 @@ vkd3d_src = [ + 'acceleration_structure.c', + 'swapchain.c', + 'queue_timeline.c', +- 'address_binding_tracker.c' ++ 'address_binding_tracker.c', ++ 'lfx2.c' + ] + + if enable_renderdoc +diff --git a/libs/vkd3d/swapchain.c b/libs/vkd3d/swapchain.c +index c4f0c2cc..6f41ca1e 100644 +--- a/libs/vkd3d/swapchain.c ++++ b/libs/vkd3d/swapchain.c +@@ -955,6 +955,8 @@ static void dxgi_vk_swap_chain_wait_internal_handle(struct dxgi_vk_swap_chain *c + static HRESULT STDMETHODCALLTYPE dxgi_vk_swap_chain_Present(IDXGIVkSwapChain *iface, UINT SyncInterval, UINT PresentFlags, const DXGI_PRESENT_PARAMETERS *pPresentParameters) + { + struct dxgi_vk_swap_chain *chain = impl_from_IDXGIVkSwapChain(iface); ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ struct vkd3d_lfx2_context *lfx2_context = &chain->queue->device->lfx2_context; + struct dxgi_vk_swap_chain_present_request *request; + struct vkd3d_queue_timeline_trace_cookie cookie; + bool low_latency_enable; +@@ -968,6 +970,22 @@ static HRESULT STDMETHODCALLTYPE dxgi_vk_swap_chain_Present(IDXGIVkSwapChain *if + if (PresentFlags & DXGI_PRESENT_TEST) + return S_OK; + ++ pthread_mutex_lock(&lfx2_context->current_implicit_frame_lock); ++ if (!lfx2_context->current_implicit_frame) ++ { ++ lfx2_context->current_implicit_frame = lfx2->FrameDequeueImplicit(lfx2_context->implicit_context, true); ++ if (lfx2_context->current_implicit_frame) { ++ lfx2->Dx12ContextBeginFrame(lfx2_context->dx12_context, lfx2_context->current_implicit_frame); ++ } ++ } ++ if (lfx2_context->current_implicit_frame) ++ { ++ lfx2->Dx12ContextEndFrame(lfx2_context->dx12_context, lfx2_context->current_implicit_frame); ++ lfx2->FrameRelease(lfx2_context->current_implicit_frame); ++ lfx2_context->current_implicit_frame = NULL; ++ } ++ pthread_mutex_unlock(&lfx2_context->current_implicit_frame_lock); ++ + /* If we missed the event signal last frame, we have to wait for it now. + * Otherwise, we end up in a floating state where our waits and thread signals might not stay in sync anymore. */ + if (chain->outstanding_present_request) +@@ -1654,6 +1672,7 @@ static void dxgi_vk_swap_chain_recreate_swapchain_in_present_task(struct dxgi_vk + VkSwapchainLatencyCreateInfoNV swapchain_latency_create_info; + VkSwapchainPresentModesCreateInfoEXT present_modes_info; + VkDevice vk_device = chain->queue->device->vk_device; ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); + VkCommandPoolCreateInfo command_pool_create_info; + VkSwapchainCreateInfoKHR swapchain_create_info; + VkPresentModeKHR present_mode_group[2]; +@@ -1673,6 +1692,9 @@ static void dxgi_vk_swap_chain_recreate_swapchain_in_present_task(struct dxgi_vk + if (chain->present.is_surface_lost) + return; + ++ if (lfx2) ++ lfx2->ImplicitContextReset(chain->queue->device->lfx2_context.implicit_context); ++ + /* If we fail to query formats we are hosed, treat it as a SURFACE_LOST scenario. */ + if (!dxgi_vk_swap_chain_update_formats(chain)) + { +diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h +index 64858c37..8fd577e4 100644 +--- a/libs/vkd3d/vkd3d_private.h ++++ b/libs/vkd3d/vkd3d_private.h +@@ -48,6 +48,8 @@ + #include + #include + ++#include "latencyflex2.h" ++ + #define VK_CALL(f) (vk_procs->f) + + #define MAKE_MAGIC(a,b,c,d) (((uint32_t)a) | (((uint32_t)b) << 8) | (((uint32_t)c) << 16) | (((uint32_t)d) << 24)) +@@ -4533,6 +4535,13 @@ struct vkd3d_device_frame_markers + uint64_t consumed_present_id; + }; + ++struct vkd3d_lfx2_context { ++ pthread_mutex_t current_implicit_frame_lock; ++ lfx2ImplicitContext *implicit_context; ++ lfx2Dx12Context *dx12_context; ++ lfx2Frame *current_implicit_frame; ++}; ++ + /* ID3D12Device */ + typedef ID3D12Device12 d3d12_device_iface; + +@@ -4541,6 +4550,7 @@ struct vkd3d_descriptor_qa_heap_buffer_data; + + /* ID3D12DeviceExt */ + typedef ID3D12DeviceExt1 d3d12_device_vkd3d_ext_iface; ++typedef ID3DLfx2ExtDevice d3d12_device_lfx2_ext_iface; + + /* ID3D12DXVKInteropDevice */ + typedef ID3D12DXVKInteropDevice d3d12_dxvk_interop_device_iface; +@@ -4766,6 +4776,7 @@ struct d3d12_device + d3d12_device_vkd3d_ext_iface ID3D12DeviceExt_iface; + d3d12_dxvk_interop_device_iface ID3D12DXVKInteropDevice_iface; + d3d_low_latency_device_iface ID3DLowLatencyDevice_iface; ++ d3d12_device_lfx2_ext_iface ID3D12DeviceLfx2_iface; + LONG refcount; + + VkDevice vk_device; +@@ -4831,6 +4842,7 @@ struct d3d12_device + struct hash_map vertex_input_pipelines; + rwlock_t fragment_output_lock; + struct hash_map fragment_output_pipelines; ++ struct vkd3d_lfx2_context lfx2_context; + #ifdef VKD3D_ENABLE_BREADCRUMBS + struct vkd3d_breadcrumb_tracer breadcrumb_tracer; + #endif +@@ -5736,4 +5748,24 @@ static inline const void *vk_find_pnext(const void *pnext, VkStructureType sType + return base_in; + } + ++struct vkd3d_lfx2_vtable { ++ struct lfx2Dx12Context *(*Dx12ContextCreate)(ID3D12Device *device); ++ void (*Dx12ContextRelease)(struct lfx2Dx12Context *context); ++ lfx2Dx12SubmitAux (*Dx12ContextBeforeSubmit)(struct lfx2Dx12Context *context, ID3D12CommandQueue *queue); ++ void (*Dx12ContextBeginFrame)(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++ void (*Dx12ContextEndFrame)(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++ lfx2Timestamp (*TimestampNow)(void); ++ lfx2Timestamp (*TimestampFromQpc)(uint64_t qpc); ++ struct lfx2ImplicitContext *(*ImplicitContextCreate)(void); ++ void (*ImplicitContextRelease)(struct lfx2ImplicitContext *context); ++ void (*ImplicitContextReset)(struct lfx2ImplicitContext *context); ++ struct lfx2Frame *(*FrameCreateImplicit)(struct lfx2ImplicitContext *context, lfx2Timestamp *out_timestamp); ++ struct lfx2Frame *(*FrameDequeueImplicit)(struct lfx2ImplicitContext *context, bool critical); ++ void (*FrameRelease)(struct lfx2Frame *frame); ++}; ++ ++struct vkd3d_lfx2_vtable *vkd3d_lfx2_get_vtable(void); ++void vkd3d_lfx2_context_init(struct vkd3d_lfx2_context *context, d3d12_device_iface *device); ++void vkd3d_lfx2_context_free(struct vkd3d_lfx2_context *context); ++ + #endif /* __VKD3D_PRIVATE_H */ diff --git a/patches/lfx2-vkd3d.patch.old b/patches/lfx2-vkd3d.patch.old new file mode 100644 index 0000000000..bbf76e6900 --- /dev/null +++ b/patches/lfx2-vkd3d.patch.old @@ -0,0 +1,616 @@ +diff --git a/include/latencyflex2.h b/include/latencyflex2.h +new file mode 100644 +index 00000000..6bdc1f84 +--- /dev/null ++++ b/include/latencyflex2.h +@@ -0,0 +1,129 @@ ++#ifndef LATENCYFLEX2_H ++#define LATENCYFLEX2_H ++ ++#define LFX2_DX12 ++ ++#include ++#include ++#include ++#include ++#include ++#ifdef LFX2_DX12 ++#include ++#endif ++ ++#ifdef _WIN32 ++#define LFX2_API __declspec(dllimport) ++#else ++#define LFX2_API ++#endif ++ ++typedef struct lfx2Dx12SubmitAux { ++ ID3D12GraphicsCommandList* executeBefore; ++ ID3D12GraphicsCommandList* executeAfter; ++ ID3D12Fence* fence; ++ uint64_t fenceValue; ++} lfx2Dx12SubmitAux; ++ ++ ++typedef enum lfx2MarkType { ++ lfx2MarkTypeBegin, ++ lfx2MarkTypeEnd, ++} lfx2MarkType; ++ ++typedef struct lfx2Context lfx2Context; ++ ++#if defined(LFX2_DX12) ++typedef struct lfx2Dx12Context lfx2Dx12Context; ++#endif ++ ++/** ++ * A write handle for frame markers. ++ */ ++typedef struct lfx2Frame lfx2Frame; ++ ++typedef struct lfx2ImplicitContext lfx2ImplicitContext; ++ ++typedef uint64_t lfx2Timestamp; ++ ++typedef uint32_t lfx2SectionId; ++ ++#ifdef __cplusplus ++extern "C" { ++#endif // __cplusplus ++ ++#if defined(LFX2_DX12) ++LFX2_API struct lfx2Dx12Context *lfx2Dx12ContextCreate(ID3D12Device* device); ++#endif ++ ++#if defined(LFX2_DX12) ++LFX2_API void lfx2Dx12ContextAddRef(struct lfx2Dx12Context *context); ++#endif ++ ++#if defined(LFX2_DX12) ++LFX2_API void lfx2Dx12ContextRelease(struct lfx2Dx12Context *context); ++#endif ++ ++#if defined(LFX2_DX12) ++LFX2_API ++lfx2Dx12SubmitAux lfx2Dx12ContextBeforeSubmit(struct lfx2Dx12Context *context, ++ ID3D12CommandQueue* queue); ++#endif ++ ++#if defined(LFX2_DX12) ++LFX2_API void lfx2Dx12ContextBeginFrame(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++#endif ++ ++#if defined(LFX2_DX12) ++LFX2_API void lfx2Dx12ContextEndFrame(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++#endif ++ ++LFX2_API lfx2Timestamp lfx2TimestampNow(void); ++ ++#if defined(_WIN32) ++LFX2_API lfx2Timestamp lfx2TimestampFromQpc(uint64_t qpc); ++#endif ++ ++LFX2_API void lfx2SleepUntil(lfx2Timestamp target); ++ ++LFX2_API struct lfx2Context *lfx2ContextCreate(void); ++ ++LFX2_API void lfx2ContextAddRef(struct lfx2Context *context); ++ ++LFX2_API void lfx2ContextRelease(struct lfx2Context *context); ++ ++LFX2_API ++struct lfx2Frame *lfx2FrameCreate(struct lfx2Context *context, ++ lfx2Timestamp *out_timestamp); ++ ++LFX2_API void lfx2FrameAddRef(struct lfx2Frame *frame); ++ ++LFX2_API void lfx2FrameRelease(struct lfx2Frame *frame); ++ ++LFX2_API ++void lfx2MarkSection(struct lfx2Frame *frame, ++ lfx2SectionId section_id, ++ enum lfx2MarkType mark_type, ++ lfx2Timestamp timestamp); ++ ++LFX2_API struct lfx2ImplicitContext *lfx2ImplicitContextCreate(void); ++ ++LFX2_API void lfx2ImplicitContextAddRef(struct lfx2ImplicitContext *context); ++ ++LFX2_API void lfx2ImplicitContextRelease(struct lfx2ImplicitContext *context); ++ ++LFX2_API void lfx2ImplicitContextReset(struct lfx2ImplicitContext *context); ++ ++LFX2_API ++struct lfx2Frame *lfx2FrameCreateImplicit(struct lfx2ImplicitContext *context, ++ lfx2Timestamp *out_timestamp); ++ ++LFX2_API ++struct lfx2Frame *lfx2FrameDequeueImplicit(struct lfx2ImplicitContext *context, ++ bool critical); ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif // __cplusplus ++ ++#endif /* LATENCYFLEX2_H */ +diff --git a/include/vkd3d_device_vkd3d_ext.idl b/include/vkd3d_device_vkd3d_ext.idl +index 3e615d76..92c5d447 100644 +--- a/include/vkd3d_device_vkd3d_ext.idl ++++ b/include/vkd3d_device_vkd3d_ext.idl +@@ -54,3 +54,16 @@ interface ID3D12DXVKInteropDevice : IUnknown + HRESULT LockCommandQueue(ID3D12CommandQueue *queue); + HRESULT UnlockCommandQueue(ID3D12CommandQueue *queue); + } ++ ++[ ++ uuid(851a9f0f-5da0-4850-b563-a7bbc414f4e6), ++ object, ++ local, ++ pointer_default(unique) ++] ++interface ID3DLfx2ExtDevice : IUnknown ++{ ++ void MarkRenderStart(void *frame); ++ void MarkRenderEnd(void *frame); ++ void ImplicitBeginFrame(UINT64 *out_timestamp, void *out_frame); ++} +\ No newline at end of file +diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c +index a3f7a3ad..67e67b28 100644 +--- a/libs/vkd3d/command.c ++++ b/libs/vkd3d/command.c +@@ -17140,6 +17140,75 @@ static void STDMETHODCALLTYPE d3d12_command_queue_ExecuteCommandLists(ID3D12Comm + d3d12_command_queue_add_submission(command_queue, &sub); + } + ++static HRESULT STDMETHODCALLTYPE d3d12_command_queue_Signal(ID3D12CommandQueue *iface, ++ ID3D12Fence *fence_iface, UINT64 value); ++ ++static void STDMETHODCALLTYPE d3d12_command_queue_ExecuteCommandListsLFX2(ID3D12CommandQueue *iface, ++ UINT command_list_count, ID3D12CommandList *const *command_lists) ++{ ++ struct d3d12_command_queue *command_queue = impl_from_ID3D12CommandQueue(iface); ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ struct vkd3d_lfx2_context *lfx2_context = &command_queue->device->lfx2_context; ++ UINT new_command_list_count = command_list_count, i = 0; ++ ID3D12CommandList **new_command_lists; ++ struct lfx2Dx12SubmitAux lfx2_aux; ++ ++ if (!lfx2 || command_queue->desc.Type != D3D12_COMMAND_LIST_TYPE_DIRECT) ++ { ++ d3d12_command_queue_ExecuteCommandLists(iface, command_list_count, command_lists); ++ return; ++ } ++ ++ pthread_mutex_lock(&lfx2_context->current_implicit_frame_lock); ++ if (!lfx2_context->current_implicit_frame) ++ { ++ lfx2_context->current_implicit_frame = lfx2->FrameDequeueImplicit(lfx2_context->implicit_context, false); ++ if (lfx2_context->current_implicit_frame) { ++ lfx2->Dx12ContextBeginFrame(lfx2_context->dx12_context, lfx2_context->current_implicit_frame); ++ } ++ } ++ pthread_mutex_unlock(&lfx2_context->current_implicit_frame_lock); ++ ++ lfx2_aux = lfx2->Dx12ContextBeforeSubmit(lfx2_context->dx12_context, iface); ++ ++ if (lfx2_aux.executeBefore) ++ new_command_list_count++; ++ ++ if (lfx2_aux.executeAfter) ++ new_command_list_count++; ++ ++ if (!(new_command_lists = vkd3d_calloc(new_command_list_count, sizeof(*new_command_lists)))) ++ { ++ ERR("Failed to allocate command list array."); ++ return; ++ } ++ ++ if (lfx2_aux.executeBefore) ++ new_command_lists[i++] = (ID3D12CommandList *)lfx2_aux.executeBefore; ++ ++ memcpy(&new_command_lists[i], command_lists, command_list_count * sizeof(*command_lists)); ++ i += command_list_count; ++ ++ if (lfx2_aux.executeAfter) ++ new_command_lists[i++] = (ID3D12CommandList *)lfx2_aux.executeAfter; ++ ++ d3d12_command_queue_ExecuteCommandLists(iface, new_command_list_count, new_command_lists); ++ ++ if (lfx2_aux.executeBefore) ++ d3d12_command_list_Release((d3d12_command_list_iface *)lfx2_aux.executeBefore); ++ ++ if (lfx2_aux.executeAfter) ++ d3d12_command_list_Release((d3d12_command_list_iface *)lfx2_aux.executeAfter); ++ ++ vkd3d_free(new_command_lists); ++ ++ if (lfx2_aux.fence) ++ { ++ d3d12_command_queue_Signal(iface, lfx2_aux.fence, lfx2_aux.fenceValue); ++ d3d12_fence_Release((d3d12_fence_iface *)lfx2_aux.fence); ++ } ++} ++ + static void STDMETHODCALLTYPE d3d12_command_queue_SetMarker(ID3D12CommandQueue *iface, + UINT metadata, const void *data, UINT size) + { +@@ -17311,7 +17380,7 @@ static CONST_VTBL struct ID3D12CommandQueueVtbl d3d12_command_queue_vtbl = + /* ID3D12CommandQueue methods */ + d3d12_command_queue_UpdateTileMappings, + d3d12_command_queue_CopyTileMappings, +- d3d12_command_queue_ExecuteCommandLists, ++ d3d12_command_queue_ExecuteCommandListsLFX2, + d3d12_command_queue_SetMarker, + d3d12_command_queue_BeginEvent, + d3d12_command_queue_EndEvent, +diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c +index 0b1bd876..0689029f 100644 +--- a/libs/vkd3d/device.c ++++ b/libs/vkd3d/device.c +@@ -3283,6 +3283,9 @@ void d3d12_device_return_query_pool(struct d3d12_device *device, const struct vk + extern ULONG STDMETHODCALLTYPE d3d12_device_vkd3d_ext_AddRef(ID3D12DeviceExt *iface); + extern ULONG STDMETHODCALLTYPE d3d12_dxvk_interop_device_AddRef(ID3D12DXVKInteropDevice *iface); + ++/* ID3DLfx2ExtDevice */ ++extern ULONG STDMETHODCALLTYPE d3d12_device_lfx2_ext_AddRef(d3d12_device_lfx2_ext_iface *iface); ++ + HRESULT STDMETHODCALLTYPE d3d12_device_QueryInterface(d3d12_device_iface *iface, + REFIID riid, void **object) + { +@@ -3328,6 +3331,14 @@ HRESULT STDMETHODCALLTYPE d3d12_device_QueryInterface(d3d12_device_iface *iface, + return S_OK; + } + ++ if (IsEqualGUID(riid, &IID_ID3DLfx2ExtDevice)) ++ { ++ struct d3d12_device *device = impl_from_ID3D12Device(iface); ++ d3d12_device_lfx2_ext_AddRef(&device->ID3D12DeviceLfx2_iface); ++ *object = &device->ID3D12DeviceLfx2_iface; ++ return S_OK; ++ } ++ + WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid)); + + *object = NULL; +@@ -3374,6 +3385,7 @@ static void d3d12_device_destroy(struct d3d12_device *device) + vkd3d_private_store_destroy(&device->private_store); + + vkd3d_cleanup_format_info(device); ++ vkd3d_lfx2_context_free(&device->lfx2_context); + vkd3d_memory_info_cleanup(&device->memory_info, device); + vkd3d_queue_timeline_trace_cleanup(&device->queue_timeline_trace); + vkd3d_shader_debug_ring_cleanup(&device->debug_ring, device); +@@ -7007,7 +7019,7 @@ static D3D12_RESOURCE_STATES vkd3d_barrier_layout_to_resource_state(D3D12_BARRIE + } + + static HRESULT STDMETHODCALLTYPE d3d12_device_CreateCommittedResource3(d3d12_device_iface *iface, +- const D3D12_HEAP_PROPERTIES *heap_properties, D3D12_HEAP_FLAGS heap_flags, ++ const D3D12_HEAP_PROPERTIES *heap_properties, D3D12_HEAP_FLAGS heap_flags, + const D3D12_RESOURCE_DESC1 *desc, D3D12_BARRIER_LAYOUT initial_layout, + const D3D12_CLEAR_VALUE *optimized_clear_value, ID3D12ProtectedResourceSession *protected_session, + UINT32 num_castable_formats, const DXGI_FORMAT *castable_formats, REFIID iid, void **resource) +@@ -8369,6 +8381,7 @@ static void vkd3d_scratch_pool_init(struct d3d12_device *device) + device->scratch_pools[VKD3D_SCRATCH_POOL_KIND_INDIRECT_PREPROCESS].scratch_buffer_size = + VKD3D_SCRATCH_BUFFER_COUNT_INDIRECT_PREPROCESS; + } ++extern CONST_VTBL struct ID3DLfx2ExtDeviceVtbl d3d12_device_lfx2_ext_vtbl; + + static HRESULT d3d12_device_init(struct d3d12_device *device, + struct vkd3d_instance *instance, const struct vkd3d_device_create_info *create_info) +@@ -8414,6 +8427,7 @@ static HRESULT d3d12_device_init(struct d3d12_device *device, + + device->ID3D12DeviceExt_iface.lpVtbl = &d3d12_device_vkd3d_ext_vtbl; + device->ID3D12DXVKInteropDevice_iface.lpVtbl = &d3d12_dxvk_interop_device_vtbl; ++ device->ID3D12DeviceLfx2_iface.lpVtbl = &d3d12_device_lfx2_ext_vtbl; + + if ((rc = rwlock_init(&device->vertex_input_lock))) + { +@@ -8480,6 +8494,8 @@ static HRESULT d3d12_device_init(struct d3d12_device *device, + } + #endif + ++ vkd3d_lfx2_context_init(&device->lfx2_context, (d3d12_device_iface *)device); ++ + if (vkd3d_descriptor_debug_active_qa_checks()) + { + if (FAILED(hr = vkd3d_descriptor_debug_alloc_global_info(&device->descriptor_qa_global_info, +@@ -8521,6 +8537,7 @@ static HRESULT d3d12_device_init(struct d3d12_device *device, + out_cleanup_descriptor_qa_global_info: + vkd3d_descriptor_debug_free_global_info(device->descriptor_qa_global_info, device); + out_cleanup_breadcrumb_tracer: ++ vkd3d_lfx2_context_free(&device->lfx2_context); + #ifdef VKD3D_ENABLE_BREADCRUMBS + if (vkd3d_config_flags & VKD3D_CONFIG_FLAG_BREADCRUMBS) + vkd3d_breadcrumb_tracer_cleanup(&device->breadcrumb_tracer, device); +diff --git a/libs/vkd3d/device_vkd3d_ext.c b/libs/vkd3d/device_vkd3d_ext.c +index 5bb7eca8..e778f479 100644 +--- a/libs/vkd3d/device_vkd3d_ext.c ++++ b/libs/vkd3d/device_vkd3d_ext.c +@@ -232,6 +232,65 @@ CONST_VTBL struct ID3D12DeviceExtVtbl d3d12_device_vkd3d_ext_vtbl = + d3d12_device_vkd3d_ext_CaptureUAVInfo + }; + ++static inline struct d3d12_device *d3d12_device_from_ID3D12DeviceLfx2(d3d12_device_lfx2_ext_iface *iface) ++{ ++ return CONTAINING_RECORD(iface, struct d3d12_device, ID3D12DeviceLfx2_iface); ++} ++ ++ULONG STDMETHODCALLTYPE d3d12_device_lfx2_ext_AddRef(d3d12_device_lfx2_ext_iface *iface) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ return d3d12_device_add_ref(device); ++} ++ ++static ULONG STDMETHODCALLTYPE d3d12_device_lfx2_ext_Release(d3d12_device_lfx2_ext_iface *iface) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ return d3d12_device_release(device); ++} ++ ++static HRESULT STDMETHODCALLTYPE d3d12_device_lfx2_ext_QueryInterface(d3d12_device_lfx2_ext_iface *iface, REFIID iid, void **out) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out); ++ return d3d12_device_QueryInterface(&device->ID3D12Device_iface, iid, out); ++} ++ ++static void STDMETHODCALLTYPE d3d12_device_lfx2_ext_ImplicitBeginFrame(d3d12_device_lfx2_ext_iface *iface, UINT64 *out_timestamp, ++ void *out_frame) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ ++ *(lfx2Frame**)out_frame = lfx2->FrameCreateImplicit(device->lfx2_context.implicit_context, out_timestamp); ++} ++ ++static void STDMETHODCALLTYPE d3d12_device_lfx2_ext_MarkRenderStart(d3d12_device_lfx2_ext_iface *iface, void *frame) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ lfx2->Dx12ContextBeginFrame(device->lfx2_context.dx12_context, (lfx2Frame*)frame); ++} ++ ++static void STDMETHODCALLTYPE d3d12_device_lfx2_ext_MarkRenderEnd(d3d12_device_lfx2_ext_iface *iface, void *frame) ++{ ++ struct d3d12_device *device = d3d12_device_from_ID3D12DeviceLfx2(iface); ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ lfx2->Dx12ContextEndFrame(device->lfx2_context.dx12_context, (lfx2Frame*)frame); ++} ++ ++CONST_VTBL struct ID3DLfx2ExtDeviceVtbl d3d12_device_lfx2_ext_vtbl = ++{ ++ /* IUnknown methods */ ++ d3d12_device_lfx2_ext_QueryInterface, ++ d3d12_device_lfx2_ext_AddRef, ++ d3d12_device_lfx2_ext_Release, ++ ++ /* ID3D12DeviceLfx2 methods */ ++ d3d12_device_lfx2_ext_MarkRenderStart, ++ d3d12_device_lfx2_ext_MarkRenderEnd, ++ d3d12_device_lfx2_ext_ImplicitBeginFrame, ++}; + + static inline struct d3d12_device *d3d12_device_from_ID3D12DXVKInteropDevice(ID3D12DXVKInteropDevice *iface) + { +diff --git a/libs/vkd3d/lfx2.c b/libs/vkd3d/lfx2.c +new file mode 100644 +index 00000000..5fd50b91 +--- /dev/null ++++ b/libs/vkd3d/lfx2.c +@@ -0,0 +1,70 @@ ++#define VKD3D_DBG_CHANNEL VKD3D_DBG_CHANNEL_API ++ ++#include "vkd3d_private.h" ++ ++static pthread_once_t library_once = PTHREAD_ONCE_INIT; ++static struct vkd3d_lfx2_vtable lfx2_vtable; ++static BOOL lfx2_available; ++ ++static void vkd3d_lfx2_load(void) ++{ ++ HMODULE module = LoadLibraryA("latencyflex2_rust.dll"); ++ if (!module) ++ { ++ lfx2_available = false; ++ return; ++ } ++ ++#define LOAD_FUNCTION(name) lfx2_vtable.name = (void *)GetProcAddress(module, "lfx2" #name) ++ ++ LOAD_FUNCTION(Dx12ContextCreate); ++ LOAD_FUNCTION(Dx12ContextRelease); ++ LOAD_FUNCTION(Dx12ContextBeforeSubmit); ++ LOAD_FUNCTION(Dx12ContextBeginFrame); ++ LOAD_FUNCTION(Dx12ContextEndFrame); ++ LOAD_FUNCTION(TimestampNow); ++ LOAD_FUNCTION(TimestampFromQpc); ++ LOAD_FUNCTION(ImplicitContextCreate); ++ LOAD_FUNCTION(ImplicitContextRelease); ++ LOAD_FUNCTION(ImplicitContextReset); ++ LOAD_FUNCTION(FrameCreateImplicit); ++ LOAD_FUNCTION(FrameDequeueImplicit); ++ LOAD_FUNCTION(FrameRelease); ++ ++#undef LOAD_FUNCTION ++ ++ lfx2_available = true; ++} ++ ++struct vkd3d_lfx2_vtable *vkd3d_lfx2_get_vtable(void) ++{ ++ pthread_once(&library_once, vkd3d_lfx2_load); ++ return lfx2_available ? &lfx2_vtable : NULL; ++} ++ ++void vkd3d_lfx2_context_init(struct vkd3d_lfx2_context *context, d3d12_device_iface *device) ++{ ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ if (!lfx2) ++ return; ++ ++ pthread_mutex_init(&context->current_implicit_frame_lock, NULL); ++ context->current_implicit_frame = NULL; ++ context->dx12_context = lfx2->Dx12ContextCreate((ID3D12Device *)device); ++ context->implicit_context = lfx2->ImplicitContextCreate(); ++} ++ ++void vkd3d_lfx2_context_free(struct vkd3d_lfx2_context *context) ++{ ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ if (!lfx2) ++ return; ++ ++ if (context->current_implicit_frame) ++ lfx2->FrameRelease(context->current_implicit_frame); ++ if (context->implicit_context) ++ lfx2->ImplicitContextRelease(context->implicit_context); ++ if (context->dx12_context) ++ lfx2->Dx12ContextRelease(context->dx12_context); ++ pthread_mutex_destroy(&context->current_implicit_frame_lock); ++} +\ No newline at end of file +diff --git a/libs/vkd3d/meson.build b/libs/vkd3d/meson.build +index 04394fd9..ad82667f 100644 +--- a/libs/vkd3d/meson.build ++++ b/libs/vkd3d/meson.build +@@ -75,7 +75,8 @@ vkd3d_src = [ + 'raytracing_pipeline.c', + 'acceleration_structure.c', + 'swapchain.c', +- 'queue_timeline.c' ++ 'queue_timeline.c', ++ 'lfx2.c' + ] + + if enable_renderdoc +diff --git a/libs/vkd3d/swapchain.c b/libs/vkd3d/swapchain.c +index d0bc526d..d5366c14 100644 +--- a/libs/vkd3d/swapchain.c ++++ b/libs/vkd3d/swapchain.c +@@ -837,6 +837,8 @@ static void dxgi_vk_swap_chain_present_callback(void *chain); + static HRESULT STDMETHODCALLTYPE dxgi_vk_swap_chain_Present(IDXGIVkSwapChain *iface, UINT SyncInterval, UINT PresentFlags, const DXGI_PRESENT_PARAMETERS *pPresentParameters) + { + struct dxgi_vk_swap_chain *chain = impl_from_IDXGIVkSwapChain(iface); ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); ++ struct vkd3d_lfx2_context *lfx2_context = &chain->queue->device->lfx2_context; + struct dxgi_vk_swap_chain_present_request *request; + struct vkd3d_queue_timeline_trace_cookie cookie; + TRACE("iface %p, SyncInterval %u, PresentFlags #%x, pPresentParameters %p.\n", +@@ -848,6 +850,22 @@ static HRESULT STDMETHODCALLTYPE dxgi_vk_swap_chain_Present(IDXGIVkSwapChain *if + if (PresentFlags & DXGI_PRESENT_TEST) + return S_OK; + ++ pthread_mutex_lock(&lfx2_context->current_implicit_frame_lock); ++ if (!lfx2_context->current_implicit_frame) ++ { ++ lfx2_context->current_implicit_frame = lfx2->FrameDequeueImplicit(lfx2_context->implicit_context, true); ++ if (lfx2_context->current_implicit_frame) { ++ lfx2->Dx12ContextBeginFrame(lfx2_context->dx12_context, lfx2_context->current_implicit_frame); ++ } ++ } ++ if (lfx2_context->current_implicit_frame) ++ { ++ lfx2->Dx12ContextEndFrame(lfx2_context->dx12_context, lfx2_context->current_implicit_frame); ++ lfx2->FrameRelease(lfx2_context->current_implicit_frame); ++ lfx2_context->current_implicit_frame = NULL; ++ } ++ pthread_mutex_unlock(&lfx2_context->current_implicit_frame_lock); ++ + /* If we missed the event signal last frame, we have to wait for it now. + * Otherwise, we end up in a floating state where our waits and thread signals might not stay in sync anymore. */ + if (chain->outstanding_present_request) +@@ -1454,6 +1472,7 @@ static void dxgi_vk_swap_chain_recreate_swapchain_in_present_task(struct dxgi_vk + VkPhysicalDevice vk_physical_device = chain->queue->device->vk_physical_device; + VkSwapchainPresentModesCreateInfoEXT present_modes_info; + VkDevice vk_device = chain->queue->device->vk_device; ++ struct vkd3d_lfx2_vtable *lfx2 = vkd3d_lfx2_get_vtable(); + VkCommandPoolCreateInfo command_pool_create_info; + VkSwapchainCreateInfoKHR swapchain_create_info; + VkPresentModeKHR present_mode_group[2]; +@@ -1473,6 +1492,9 @@ static void dxgi_vk_swap_chain_recreate_swapchain_in_present_task(struct dxgi_vk + if (chain->present.is_surface_lost) + return; + ++ if (lfx2) ++ lfx2->ImplicitContextReset(chain->queue->device->lfx2_context.implicit_context); ++ + /* If we fail to query formats we are hosed, treat it as a SURFACE_LOST scenario. */ + if (!dxgi_vk_swap_chain_update_formats(chain)) + { +diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h +index 935f3dc8..1eea15da 100644 +--- a/libs/vkd3d/vkd3d_private.h ++++ b/libs/vkd3d/vkd3d_private.h +@@ -47,6 +47,8 @@ + #include + #include + ++#include "latencyflex2.h" ++ + #define VK_CALL(f) (vk_procs->f) + + #define MAKE_MAGIC(a,b,c,d) (((uint32_t)a) | (((uint32_t)b) << 8) | (((uint32_t)c) << 16) | (((uint32_t)d) << 24)) +@@ -4456,6 +4458,13 @@ struct vkd3d_cached_command_allocator + uint32_t vk_family_index; + }; + ++struct vkd3d_lfx2_context { ++ pthread_mutex_t current_implicit_frame_lock; ++ lfx2ImplicitContext *implicit_context; ++ lfx2Dx12Context *dx12_context; ++ lfx2Frame *current_implicit_frame; ++}; ++ + /* ID3D12Device */ + typedef ID3D12Device12 d3d12_device_iface; + +@@ -4464,6 +4473,7 @@ struct vkd3d_descriptor_qa_heap_buffer_data; + + /* ID3D12DeviceExt */ + typedef ID3D12DeviceExt d3d12_device_vkd3d_ext_iface; ++typedef ID3DLfx2ExtDevice d3d12_device_lfx2_ext_iface; + + /* ID3D12DXVKInteropDevice */ + typedef ID3D12DXVKInteropDevice d3d12_dxvk_interop_device_iface; +@@ -4591,6 +4601,7 @@ struct d3d12_device + d3d12_device_iface ID3D12Device_iface; + d3d12_device_vkd3d_ext_iface ID3D12DeviceExt_iface; + d3d12_dxvk_interop_device_iface ID3D12DXVKInteropDevice_iface; ++ d3d12_device_lfx2_ext_iface ID3D12DeviceLfx2_iface; + LONG refcount; + + VkDevice vk_device; +@@ -4654,6 +4665,7 @@ struct d3d12_device + struct hash_map vertex_input_pipelines; + rwlock_t fragment_output_lock; + struct hash_map fragment_output_pipelines; ++ struct vkd3d_lfx2_context lfx2_context; + #ifdef VKD3D_ENABLE_BREADCRUMBS + struct vkd3d_breadcrumb_tracer breadcrumb_tracer; + #endif +@@ -5508,4 +5520,24 @@ HANDLE vkd3d_open_kmt_handle(HANDLE kmt_handle); + #define VKD3D_DRIVER_VERSION_PATCH_NV(v) (((v) >> 6) & 0xff) + #define VKD3D_DRIVER_VERSION_MAKE_NV(major, minor, patch) (((uint32_t)(major) << 22) | ((uint32_t)(minor) << 14) | ((uint32_t)(patch) << 6)) + ++struct vkd3d_lfx2_vtable { ++ struct lfx2Dx12Context *(*Dx12ContextCreate)(ID3D12Device *device); ++ void (*Dx12ContextRelease)(struct lfx2Dx12Context *context); ++ lfx2Dx12SubmitAux (*Dx12ContextBeforeSubmit)(struct lfx2Dx12Context *context, ID3D12CommandQueue *queue); ++ void (*Dx12ContextBeginFrame)(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++ void (*Dx12ContextEndFrame)(struct lfx2Dx12Context *context, struct lfx2Frame *frame); ++ lfx2Timestamp (*TimestampNow)(void); ++ lfx2Timestamp (*TimestampFromQpc)(uint64_t qpc); ++ struct lfx2ImplicitContext *(*ImplicitContextCreate)(void); ++ void (*ImplicitContextRelease)(struct lfx2ImplicitContext *context); ++ void (*ImplicitContextReset)(struct lfx2ImplicitContext *context); ++ struct lfx2Frame *(*FrameCreateImplicit)(struct lfx2ImplicitContext *context, lfx2Timestamp *out_timestamp); ++ struct lfx2Frame *(*FrameDequeueImplicit)(struct lfx2ImplicitContext *context, bool critical); ++ void (*FrameRelease)(struct lfx2Frame *frame); ++}; ++ ++struct vkd3d_lfx2_vtable *vkd3d_lfx2_get_vtable(void); ++void vkd3d_lfx2_context_init(struct vkd3d_lfx2_context *context, d3d12_device_iface *device); ++void vkd3d_lfx2_context_free(struct vkd3d_lfx2_context *context); ++ + #endif /* __VKD3D_PRIVATE_H */ diff --git a/patches/makefile.patch b/patches/makefile.patch new file mode 100644 index 0000000000..db9736712e --- /dev/null +++ b/patches/makefile.patch @@ -0,0 +1,21 @@ +--- a/Makefile.in ++++ b/Makefile.in +@@ -650,6 +650,18 @@ + touch $@ + + ++## ++## LatencyFleX2 and Upscalers ++## ++$(OBJ)/.vkd3d-proton-post-build32: ++ mkdir -p "$(DST_DIR)"/lib/wine/lfx2 ++ cp $(SRCDIR)/lfx2-bin/latencyflex2_rust_32.dll "$(DST_DIR)"/lib/wine/lfx2/latencyflex2_rust.dll ++ ++$(OBJ)/.vkd3d-proton-post-build64: ++ mkdir -p "$(DST_DIR)"/lib64/wine/lfx2 ++ cp $(SRCDIR)/lfx2-bin/latencyflex2_rust.dll "$(DST_DIR)"/lib64/wine/lfx2 ++ mkdir -p "$(DST_DIR)"/upscalers ++ cp -r $(SRCDIR)/upscalers/* "$(DST_DIR)"/upscalers + + ## + ## mediaconv diff --git a/patches/proton.patch b/patches/proton.patch new file mode 100644 index 0000000000..7a1181a60f --- /dev/null +++ b/patches/proton.patch @@ -0,0 +1,130 @@ +--- a/proton ++++ b/proton +@@ -414,6 +414,7 @@ + self.bin_dir = self.path("files/bin/") + self.lib_dir = self.path("files/lib/") + self.lib64_dir = self.path("files/lib64/") ++ self.upscalers_dir = self.path("files/upscalers/") + self.fonts_dir = self.path("files/share/fonts/") + self.wine_fonts_dir = self.path("files/share/wine/fonts/") + self.wine_inf = self.path("files/share/wine/wine.inf") +@@ -800,6 +801,8 @@ + # collect configuration info + steamdir = os.environ["STEAM_COMPAT_CLIENT_INSTALL_PATH"] + ++ use_upscaler = "PROTON_UPSCALER" in os.environ and nonzero(os.environ["PROTON_UPSCALER"]) ++ + use_wined3d = "wined3d" in g_session.compat_config + use_dxvk_dxgi = not use_wined3d and \ + not ("WINEDLLOVERRIDES" in g_session.env and "dxgi=b" in g_session.env["WINEDLLOVERRIDES"]) +@@ -843,6 +846,7 @@ + g_proton.fonts_dir, + g_proton.lib_dir, + g_proton.lib64_dir, ++ g_proton.upscalers_dir, + steamdir, + getmtimestr(steamdir, 'legacycompat', 'steamclient.dll'), + getmtimestr(steamdir, 'legacycompat', 'steamclient64.dll'), +@@ -853,6 +857,7 @@ + str(use_dxvk_dxgi), + builtin_dll_copy, + str(use_nvapi), ++ str(use_upscaler), + )) + + # check whether any prefix config has changed +@@ -957,6 +962,11 @@ + prefix=self.prefix_dir, track_file=tracked_files, link_debug=True) + g_session.dlloverrides[f] = "n" + ++ try_copy(g_proton.lib64_dir + "wine/lfx2/latencyflex2_rust.dll", "drive_c/windows/system32", ++ prefix=self.prefix_dir, track_file=tracked_files, link_debug=True) ++ try_copy(g_proton.lib_dir + "wine/lfx2/latencyflex2_rust.dll", "drive_c/windows/syswow64", ++ prefix=self.prefix_dir, track_file=tracked_files, link_debug=True) ++ + # If the user requested the NVAPI be available, copy it into place. + # If they didn't, clean up any stray nvapi DLLs. + if use_nvapi: +@@ -982,11 +992,59 @@ + # Try to detect known DLLs that ship with the NVIDIA Linux Driver + # and add them into the prefix + nvidia_wine_dll_dir = find_nvidia_wine_dll_dir() +- if nvidia_wine_dll_dir: ++ if nvidia_wine_dll_dir and not use_upscaler: + for dll in ["_nvngx.dll", "nvngx.dll"]: + try_copy(nvidia_wine_dll_dir + "/" + dll, "drive_c/windows/system32", optional=True, + prefix=self.prefix_dir, track_file=tracked_files, link_debug=True) + ++ if use_upscaler: ++ # very hacky way to do that ++ # but that way there's no need to call wine early ++ # it's needed so that nvngx.dll is loaded ++ with open(os.path.join(self.prefix_dir, "system.reg"), 'rt+') as system_reg: ++ count = 0 ++ for line in system_reg: ++ count += "41FCC608-8496-4DEF-B43E-7D9BD675A6FF" in line ++ if count < 2: ++ system_reg.writelines([ ++ '\n[System\\\\ControlSet001\\\\Services\\\\nvlddmkm] 1699294680\n', ++ '#time=1da10dd9364206e\n', ++ '"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}"=hex:01\n', ++ '\n', ++ '[Software\\\\NVIDIA Corporation\\\\Global] 1699294680\n', ++ '#time=1da10dd93641b32\n', ++ '"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}"=hex:01\n' ++ ]) ++ ++ upscaler_to_use = os.environ["PROTON_UPSCALER"] ++ upscaler_dir = os.path.join(g_proton.upscalers_dir, upscaler_to_use) ++ if os.path.exists(upscaler_dir): ++ files = os.listdir(upscaler_dir) ++ if [file for file in files if file.endswith('.dll')]: ++ for f in files: ++ try_copy(os.path.join(upscaler_dir, f), "drive_c/windows/system32", ++ prefix=self.prefix_dir, track_file=tracked_files, link_debug=True) ++ sys.stderr.write("Upscaler: Using PROTON_UPSCALER=" + upscaler_to_use + os.linesep) ++ else: ++ sys.stderr.write("Upscaler: No DLL file found in the given folder" + os.linesep) ++ else: ++ sys.stderr.write("Upscaler: Folder " + upscaler_to_use + " doesn't exist" + os.linesep) ++ sys.stderr.flush() ++ else: ++ files_to_remove = [] ++ if os.path.exists(g_proton.upscalers_dir): ++ upscalers = os.listdir(g_proton.upscalers_dir) ++ for upscaler in upscalers: ++ upscaler = os.path.join(g_proton.upscalers_dir, upscaler) ++ for file in os.listdir(upscaler): ++ files_to_remove.append(file) ++ files_to_remove = list(set(files_to_remove)) ++ for file in files_to_remove: ++ path_to_remove = self.prefix_dir + "drive_c/windows/system32/" + file ++ if file_exists(path_to_remove, follow_symlinks=False): ++ os.unlink(path_to_remove) ++ ++ + setup_game_dir_drive() + setup_steam_dir_drive() + +@@ -1453,6 +1511,8 @@ + self.check_environment("PROTON_ENABLE_NVAPI", "enablenvapi") + self.check_environment("PROTON_FORCE_NVAPI", "forcenvapi") + self.check_environment("PROTON_ENABLE_AMD_AGS", "enableamdags") ++ self.check_environment("LFX2", "forcelfx2") ++ self.check_environment("LFX2", "enablenvapi") + + if "noesync" in self.compat_config: + self.env.pop("WINEESYNC", "") +@@ -1595,6 +1655,12 @@ + s = dll + "=" + setting + append_to_env_str(self.env, "WINEDLLOVERRIDES", s, ";") + ++ #enable lfx2 ++ if "forcelfx2" in self.compat_config: ++ self.env["DXVK_NVAPI_DRIVER_VERSION"] = "53713" ++ self.env["DXVK_NVAPI_ALLOW_OTHER_DRIVERS"] = "1" ++ self.env["DXVK_CONFIG"] = "dxgi.customVendorId = 10de;dxgi.hideAmdGpu = True;dxgi.hideNvidiaGpu = False;dxgi.customDeviceId = 2684;dxgi.customDeviceDesc = \"NVIDIA GeForce RTX 4090\"" ++ + def dump_dbg_env(self, f): + f.write("PATH=\"" + self.env["PATH"] + "\" \\\n") + f.write("\tTERM=\"xterm\" \\\n") #XXX diff --git a/patches/revert-patches.sh b/patches/revert-patches.sh new file mode 100755 index 0000000000..486bcbe2ef --- /dev/null +++ b/patches/revert-patches.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +git checkout -- proton +git checkout -- Makefile.in + +pushd dxvk || exit +git reset --hard HEAD +git clean -xdf +popd || exit + +pushd vkd3d-proton || exit +git reset --hard HEAD +git clean -xdf +popd || exit + +pushd wine || exit +git reset --hard HEAD +git clean -xdf +popd || exit + +pushd dxvk-nvapi || exit +git reset --hard HEAD +git clean -xdf +popd || exit diff --git a/patches/wine-hags-spoof.patch b/patches/wine-hags-spoof.patch new file mode 100644 index 0000000000..fe09c001e8 --- /dev/null +++ b/patches/wine-hags-spoof.patch @@ -0,0 +1,77 @@ +diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c +index 7fcdbc4c383..ef73974bfb8 100644 +--- a/dlls/win32u/driver.c ++++ b/dlls/win32u/driver.c +@@ -1619,16 +1619,43 @@ NTSTATUS WINAPI NtGdiDdDDIDestroyDevice( const D3DKMT_DESTROYDEVICE *desc ) + return status; + } + ++static BOOL check_hags_enabled( void ) ++{ ++ const char *winehags = getenv( "WINEHAGS" ); ++ return winehags && *winehags && *winehags != '0'; ++} ++ + /****************************************************************************** + * NtGdiDdDDIQueryAdapterInfo (win32u.@) + */ + NTSTATUS WINAPI NtGdiDdDDIQueryAdapterInfo( D3DKMT_QUERYADAPTERINFO *desc ) + { ++ D3DKMT_WDDM_2_7_CAPS *d3dkmt_wddm_2_7_caps; ++ + if (!desc) + return STATUS_INVALID_PARAMETER; + +- FIXME("desc %p, type %d stub\n", desc, desc->Type); +- return STATUS_NOT_IMPLEMENTED; ++ TRACE("desc %p, type %d\n", desc, desc->Type); ++ ++ switch (desc->Type) ++ { ++ case KMTQAITYPE_WDDM_2_7_CAPS: ++ if (!desc->pPrivateDriverData || desc->PrivateDriverDataSize != sizeof(D3DKMT_WDDM_2_7_CAPS)) ++ return STATUS_INVALID_PARAMETER; ++ ++ d3dkmt_wddm_2_7_caps = desc->pPrivateDriverData; ++ d3dkmt_wddm_2_7_caps->HwSchSupported = 1; ++ d3dkmt_wddm_2_7_caps->HwSchEnabled = check_hags_enabled() ? 1 : 0; ++ d3dkmt_wddm_2_7_caps->HwSchEnabledByDefault = 0; ++ d3dkmt_wddm_2_7_caps->IndependentVidPnVSyncControl = 0; ++ break; ++ ++ default: ++ FIXME("type %d not supported\n", desc->Type); ++ return STATUS_NOT_IMPLEMENTED; ++ } ++ ++ return STATUS_SUCCESS; + } + + /****************************************************************************** +diff --git a/include/ddk/d3dkmthk.h b/include/ddk/d3dkmthk.h +index b7b99e2c146..a6ba2117cce 100644 +--- a/include/ddk/d3dkmthk.h ++++ b/include/ddk/d3dkmthk.h +@@ -773,6 +773,22 @@ typedef struct _D3DKMT_ENUMADAPTERS2 + D3DKMT_ADAPTERINFO *pAdapters; + } D3DKMT_ENUMADAPTERS2; + ++typedef struct _D3DKMT_WDDM_2_7_CAPS ++{ ++ union ++ { ++ struct ++ { ++ UINT HwSchSupported : 1; ++ UINT HwSchEnabled : 1; ++ UINT HwSchEnabledByDefault : 1; ++ UINT IndependentVidPnVSyncControl : 1; ++ UINT Reserved : 28; ++ }; ++ UINT Value; ++ }; ++} D3DKMT_WDDM_2_7_CAPS; ++ + #ifdef __cplusplus + extern "C" + {