Comments (11)
The information on the Intel driver on the wiki applies to both Linux and Windows.
All Intel drivers currently lack depth bounds and UAVs, and without those features DXVK won't work.
from dxvk.
Ah OK I saw ANV driver not supported not remembered Windows driver is about the same..
from dxvk.
Can you post vulkaninfo
output? My guess is that DXVK is trying to use some features that the driver doesn't support, which is actually the case on ANV driver at the moment.
from dxvk.
I'd recently wanted to find out whether there is a difference between Intel ANV and Intel for Windows.
I uploaded a GPU report for Windows here, and one on ArchLinux here. depthBounds
are not supported on either.
Here's a diff of all the features.
diff windows linux
27c27
< shaderInt16 true
---
> shaderInt16 false
29,30c29,30
< shaderResourceMinLod true
< shaderResourceResidency true
---
> shaderResourceMinLod false
> shaderResourceResidency false
35c35
< shaderStorageImageMultisample true
---
> shaderStorageImageMultisample false
40,48c40,48
< sparseBinding true
< sparseResidency16Samples true
< sparseResidency2Samples true
< sparseResidency4Samples true
< sparseResidency8Samples true
< sparseResidencyAliased true
< sparseResidencyBuffer true
< sparseResidencyImage2D true
< sparseResidencyImage3D true
---
> sparseBinding false
> sparseResidency16Samples false
> sparseResidency2Samples false
> sparseResidency4Samples false
> sparseResidency8Samples false
> sparseResidencyAliased false
> sparseResidencyBuffer false
> sparseResidencyImage2D false
> sparseResidencyImage3D false
53c53
< variableMultisampleRate true
---
> variableMultisampleRate false
from dxvk.
The issue is about calling vkCreateInstance on his driver ends up calling your dxgi CreateDXGIFactory or CreateDXGIFactory1 method which also ends up calling vkCreateInstance:
I solve assuming first call to CreateDXGIFactory* is from app others are from Intel Vulkan driver:
very crude hack:
feel free to improve:
note I have seen in AMD or Nvidia Vulkan driver binaries also DXGI and CreateDXGIFactory references but may be they end up loading correct DXGI from Windows system folder..
may be it's an Intel bug and should be pointed to them..
--- C:\dxvk\igpu2\dxvk\src\dxgi\dxgi_mainori - copia.cpp 2018-03-02 17:37:04.831000000 +0100
+++ C:\dxvk\igpu2\dxvk\src\dxgi\dxgi_main.cpp 2018-03-02 18:04:17.604000000 +0100
@@ -22,12 +22,39 @@
}
}
+typedef HRESULT (__stdcall PFN_trueCreateDXGIFactory1)(REFIID riid, _COM_Outptr_ void **ppFactory);
+typedef HRESULT(__stdcall PFN_trueCreateDXGIFactory)(REFIID riid, _COM_Outptr_ void **ppFactory);
+
extern "C" {
+ static int counter1 = 0;
+
DLLEXPORT HRESULT __stdcall CreateDXGIFactory1(REFIID riid, void **ppFactory) {
- return dxvk::createDxgiFactory(riid, ppFactory);
+ counter1++;
+ if (counter1 > 1)
+ {
+ HMODULE lib = LoadLibrary("c:\\windows\\system32\\dxgi.dll");
+ PFN_trueCreateDXGIFactory1 *fp = (PFN_trueCreateDXGIFactory1*) GetProcAddress(lib, "CreateDXGIFactory1");
+ // cast p to the approriate function pointer type (fp) and call it
+
+ return fp(riid, ppFactory);
+ FreeLibrary(lib);
+ }
+ else
+ return dxvk::createDxgiFactory(riid, ppFactory);
}
DLLEXPORT HRESULT __stdcall CreateDXGIFactory(REFIID riid, void **ppFactory) {
+ counter1++;
+ if (counter1 > 1)
+ {
+ HMODULE lib = LoadLibrary("c:\\windows\\system32\\dxgi.dll");
+ PFN_trueCreateDXGIFactory *fp = (PFN_trueCreateDXGIFactory*)GetProcAddress(lib, "CreateDXGIFactory");
+ // cast p to the approriate function pointer type (fp) and call it
+
+ return fp(riid, ppFactory);
+ FreeLibrary(lib);
+ }
+ else
return dxvk::createDxgiFactory(riid, ppFactory);
}
}
\ No newline at end of file
from dxvk.
I'll close this as I have no intention to support a workaround only for Intel's Windows driver.
from dxvk.
To clarify...Intel GPU hardware doesn't support depth bounds test. Drivers would have to emulate the feature with software, and none of them - on any OS - do that today. So, this resolution basically means "DXVK won't work on Intel GPUs".
It seems a bit odd to require a feature that's optional even in DX12...
from dxvk.
@kaydenl The depth bounds requirement was a mistake that I fixed several months ago, and DXVK works on ANV (sort of). It doesn't work on the Windows driver because it tries to create a DXGI factory, but it does so with DXVK's dxgi.dll
and not the one provided by Microsoft, which results in an infinite recursion.
from dxvk.
Oh, nevermind then. Thanks! Someone was confused and asking us to support that feature for DXVK. Sounds like we don't need to.
from dxvk.
@doitsujin That someone was me. @kaydenl Thanks for taking the time to comment on this. I appreciate it. :)
from dxvk.
I have pinged @SlawomirCn of Intel Win Vulkan team on twitter.. let'see if it can help..
also seems is @scygan user of github?
also seems slawomir.grajewski 'at' intel.com is another dev who can possibly help..
mailing later if no response..
from dxvk.
Related Issues (20)
- Farcry 4 crashes on title screen (Windows 10) HOT 5
- Battlefield 2: Project Reality mod is not launching. HOT 2
- Error: Couldn't switch to requested monitor resolution HOT 4
- Higher fps in borderlands 2 but high stuttering in combat HOT 9
- Huge slowdown on specific models + animations SAGE engine issues HOT 12
- Eschatos: Debug runtime popup HOT 10
- GTA 4 wont open at all HOT 6
- fallout 76 not open with dxvk HOT 5
- dxvk doesn't work on nvidia cards? HOT 4
- Undertale on wined3d are fullscreen bug on Winlator HOT 1
- Mass effects out of memory error wit DXKVv2.xx (works with DXKVv1.10.3) HOT 6
- bad perfomance with nvidia cards HOT 2
- When i play undertale with wine d3d,I try full screen,its bugged,on Winlator 6.1 HOT 2
- Genshin Impact: an ancient tea tree rendering issue HOT 3
- Compile failed on fedora 39, gcc 13 HOT 2
- Any chances add "d3d9.enableDialogMode = True" for dx11? HOT 8
- 9th Dawn II: Stuck on black screen HOT 2
- please help me HOT 2
- Game Capped at 60 FPS HOT 2
- [d3d9] DxvkContext::updatePushConstants always uses complete layout to update push constant HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dxvk.