protonscr

VK_ERROR_INCOMPATIBLE_DRIVER in regular wine

dxvkclosed intel anv
doitsujin/dxvk#3383 · opened 2023-04-29 by baldrianbandit · updated 2023-07-04 · 13 comments · github
Bbaldrianbandit 2023-04-29 github

Hi. Using some d3d9 software with wine-8.6.1, I'll get the following console output if there's any 3d rendering going on:

VK_ERROR_INCOMPATIBLE_DRIVER

The software keeps running fine, although there is no 3d output. Same for wine-staging-8.6.1.

However, after switching to wine-tkg-8.6.1, rendering is fine. Now wine-tkg includes a lot of patches that may make a difference, but I wonder: Vanilla wine should have support for DXVK since wine-7, shouldn't it?

arch-6.2.12
wine-8.6.1 / wine-staging-8.6.1 / wine-tkg-8.6.1
mesa-23.0.3-1
dxvk-bin-2.1-3

vulkaninfo --summary
[...]
deviceName         = Intel(R) UHD Graphics 620 (KBL GT2)
[...]

When running vanilla wine-8.6.1, I need to set DXVK_FILTER_DEVICE_NAME=Intel. Otherwise, the console output will state that there is no gpu found.

Now I think this is more likely a wine issue and not dependent on DXVK, since I can modulate the behaviour by exchanging wine builds while having constant DXVK version. I wonder what you guys think, though.

Thank you
Alex

BBlisto91 2023-05-06 github

It should work in regular Wine yes.
What does the full output look like with and without DXVK_FILTER_DEVICE_NAME=Intel in regular Wine?

Bbaldrianbandit 2023-05-10 github

I cannot reproduce this anymore. DXVK finds my gpu with and without DXVK_FILTER_DEVICE_NAME=Intel.

Still, although the gpu is found, no 3d rendering happens with regular wine-8.6. Meanwhile DXVK logs VK_ERROR_INCOMPATIBLE_DRIVER

Here's the full log.
wine-8.6_dxvk_nofilter_dxp.log

Ddoitsujin maintainer 2023-05-11 github

The error happens during surface creation. Relevant code in x11drv:

    /* TODO: support child window rendering. */
    if (create_info->hwnd && NtUserGetAncestor(create_info->hwnd, GA_PARENT) != NtUserGetDesktopWindow())
    {
        FIXME("Application requires child window rendering, which is not implemented yet!\n");
        return VK_ERROR_INCOMPATIBLE_DRIVER;
    }

This isn't an Intel problem, this is a problem with upstream wine lacking some patches to make your particular app work. Any applications that don't require child window rendering (i.e. 99% of games) should run just fine.

BBlisto91 2023-05-11 github

TIL it's a child window rendering related error. Good to know

Bbaldrianbandit 2023-05-12 github

The error happens during surface creation. Relevant code in x11drv:

    /* TODO: support child window rendering. */
    if (create_info->hwnd && NtUserGetAncestor(create_info->hwnd, GA_PARENT) != NtUserGetDesktopWindow())
    {
        FIXME("Application requires child window rendering, which is not implemented yet!\n");
        return VK_ERROR_INCOMPATIBLE_DRIVER;
    }

This isn't an Intel problem, this is a problem with upstream wine lacking some patches to make your particular app work. Any applications that don't require child window rendering (i.e. 99% of games) should run just fine.

That explaines why it runs fine using dxvk and wine-tkg, which is patched for child window rendering. Thanks for looking into it.

On the other hand, the application also runs fine on regular wine without dxvk. With inferiour framerate and high cpu load, of course. Do you have an idea how that connects? Does regular wine render through llvmpipe and not need child window rendering then?

Mmbriar 2023-05-12 github

Vulkan child window rendering is missing in upstream wine. Without DXVK it will use OpenGL by default.

KK0bin maintainer 2023-05-12 github

Please retest this with DXVK 2.2.

It should fall back to presenting on the CPU now if surface creation fails.

Bbaldrianbandit 2023-05-12 github

Please retest this with DXVK 2.2.

It should fall back to presenting on the CPU now if surface creation fails.

Just testet with wine-tkg and release 2.2 https://github.com/doitsujin/dxvk/actions/runs/4957751939

Runs fine, much less flickering than on 2.1.

Bbaldrianbandit 2023-05-12 github

Closing, since the original issue is due to wine lacking vulkan child window rendering. Thank you for your help.

Lliang1wang 2023-07-04 github

why closing the issue, do you mean it is just not a dxvk issue but in wine? however, since wine lacking vulkan child window rendering, so the issue can't be fixed currently? or how to fix? thanks!

Lliang1wang 2023-07-04 github

The error happens during surface creation. Relevant code in x11drv:

    /* TODO: support child window rendering. */
    if (create_info->hwnd && NtUserGetAncestor(create_info->hwnd, GA_PARENT) != NtUserGetDesktopWindow())
    {
        FIXME("Application requires child window rendering, which is not implemented yet!\n");
        return VK_ERROR_INCOMPATIBLE_DRIVER;
    }

This isn't an Intel problem, this is a problem with upstream wine lacking some patches to make your particular app work. Any applications that don't require child window rendering (i.e. 99% of games) should run just fine.

// Do you know any patches now for this issue "Application requires child window rendering, which is not implemented yet!"?

BBlisto91 2023-07-04 github

Proton and anything based on Protons Wine should already have it included.
wine-tkg also have it as a option https://github.com/Frogging-Family/wine-tkg-git/tree/master/wine-tkg-git/wine-tkg-patches/misc/childwindow

Bbaldrianbandit 2023-07-04 github

Wine-tkg with default setting indeed has child window rendering included.