On Mon, 24 Mar 2025 at 04:14:12 +0900, Marc Dequènes (duck) wrote:
> On 2025-01-07 23:11, Simon McVittie wrote:
> > It is technically possible to use the Steam Runtime as a separate thing
> > without going via Steam, but I'm not aware of any non-Steam games that
> > use DXVK Native in practice, and as a semi-self-contained binary
> > distribution it doesn't really help you to test a pure Debian setup.
> 
> I discovered Lutris is using umu which is based on the Steam Runtime, which
> can be handy for games that do not work with Wine+DXVK+VKD3D (the original
> VKD3D I mean). I have no idea if that's using DXVK Native inside but it's
> apparently vendoring everything so I won't be able to use the new libraries
> in the dxvk package.

I think anything that involves Wine is going to be using DXVK DLLs
(like what you already packaged) and not DXVK Native (what I'm aiming to
add here). DXVK Native is for the benefit of native Linux games like
Portal 2, rather than for the benefit of Wine running Windows games.

> > The examples I borrowed from @misyltoad for the autopkgtest are really
> > just a smoke-test, but they're the best I currently have for DirectX
> > branches other than 9. I've heard that native Linux games based on FNA
> > are
> > likely to require DXVK Native in future (not sure which DirectX branch),
> > but I don't have any concrete examples right now: the FNA maintainer is
> > waiting for us to integrate SDL 3 into the Steam Runtime, which in turn
> > is waiting for SDL upstream to declare it to be stable.
> 
> Alright, so I guess I could simply release new versions and upload as long
> as the basic tests work, and we'll add more later if we can, then may I
> leave it to you to do more testing on your end and report problems you
> encounter?

I think that's all we can really do at the moment. Given the trixie release
timeline, having DXVK Native in experimental for now would seem reasonable,
and perhaps it can go to testing/unstable in the forky cycle?

When dealing with the Steam Runtime, I'm branching from your packaging
*anyway* in order to do a backport to a Debian 11 derivative, so it's
equally straightforward for me to base the Steam Runtime's dxvk on either
testing, unstable or experimental.

I asked a FNA maintainer on
<https://github.com/ValveSoftware/steam-runtime/issues/687> and he's made
a SDL3 beta branch available for
<https://store.steampowered.com/app/1800730/I_MAED_A_GAM3_W1TH_Z0MB1ES_1N_IT1/>
(which is a Steam game, but free-as-in-free-beer, and probably doesn't
have any particular DRM beyond being most conveniently installed via Steam,
because there isn't much point in putting intrusive DRM in a free game).
Trying that out is on my to-do list: when I update to 2.6 I'll probably
use that as one of my smoke-tests.

The most likely games to use DXVK Native in the near future are FNA games
like that one, and the Valve games I mentioned previously.

> I looked at your changes and I have a few questions:
>   - why are the dh_auto_* steps in execute_after_* instead of override_*?
> IIUC they will be run twice.

Yes, but that's intentional. On the architectures that you were already
supporting, we need two separate `meson setup`/`meson compile` pipelines:
once for DXVK Native (added by my MR, usually a native build, mostly
with debhelper defaults, outputting Linux ELF shared libraries, building
in obj-${DEB_HOST_GNU_TYPE}) and once for use with Wine (pre-existing
code written by you, cross-compiling with the mingw64 toolchain and
outputting Windows PE DLLs, building in ${WINE_BUILD_DIR}, cannot always
use debhelper defaults).

On architectures where Wine isn't supported (for example riscv64) we
only run the first build pass (the new one added by by changes), so we
only build DXVK Native (Linux ELF libraries), and skip the Windows PE
DLLs. If someone builds riscv64 binaries for a FNA game, it could use
the resulting DXVK Native binaries as a dependency.

At the dh_auto_configure stage, I used override_ because we need hooks
both before and after dh_auto_configure. At the dh_auto_clean,
dh_auto_build and dh_auto_install stages, I used execute_after_ because
the debhelper defaults are fine for DXVK Native, and your Wine-specific
second build pass can be done semi-independently.

>   - would you mind having the headers bundled into subprojects / vendor.xz?
> honestly I would prefer if the debian/ diff would only show useful packaging
> bits.

You mean debian/vendor.xz? Sure, I can try to set that up while rebasing
on 2.6.

While being able to integrate this in Debian directly looked relatively
far-off, I was using the workflow for debian/vendor/mingw-directx-headers
that was easiest for me to maintain as a fork, but now that you've
showed interest in merging my changes, I'll pivot to trying to follow
your preference.

I personally prefer having the vendored stuff in git directly so I can
review what changed in it without needing to use diffoscope (for larger
vendored modules by using multiple orig.tar like I do in src:yquake2,
or for smaller vendored modules by having it unpacked in debian/ like I
did with debian/vendor/mingw-directx-headers here) but I realise opinions
can differ on this topic.

    smcv

Reply via email to