Vulkan error, vk::PhysicalDevice::createDeviceUnique: ErrorFeatureNotPresent

Same here on Linux. And I don't have an Intel GPU.

Edit: I don't use Steam.
Last edited by Nomys#7614 on Sep 1, 2024, 7:09:19 AM
Ok so it was the nvidia driver who was behaving funny, downgrading or going for a newer version did the trick.
I'm still getting this issue on AMD drivers ... RIPED my HC chars :(
"
Okay... so I decided to track down what exactly is missing in intel's vulkan.
The answer is shaderStorageImageReadWithoutFormat.
'vulkaninfo' reports it as a 'false' and PoE requests it, resulting in 'VK_ERROR_FEATURE_NOT_PRESENT' upon 'vkCreateDevice'.

Now the WTF part begins: PoE with Vulkan Intel graphics seems to run fine when tricked to think that the feature shaderStorageImageReadWithoutFormat is supported!

I wrote a basic wrapper for the 'vkCreateDevice' function that just takes down the bit requesting this feature.
LD_PRELOAD'ing a .so with the wrapper makes PoE just run...
I can't tell if there is a case/place where this would crash the game, but the basic gameplay just works.

Have a source here (one obviously needs a C++ compiler and vulkan dev headers to compile it):
"

#include <vulkan/vulkan.h>
#include <dlfcn.h>
#include <cstdio>
/*
Compile as:
g++ -fPIC --shared vulkan_intel_poe_override.cpp -lvulkan -o vulkan_intel_poe_override.so

Run wine as:
LD_PRELOAD=vulkan_intel_poe_override.so wine C:/Program\ Files\ \(x86\)/Grinding\ Gear\ Games/Path\ of\ Exile/PathOfExile.exe

Or just export that LD_PRELOAD as:
LD_PRELOAD=`readlink -e vulkan_intel_poe_override.so`
and then run wine in the same shell.
*/

// handle to the original vkCreateDevice function
auto vkCreateDevice_orig = (decltype(&vkCreateDevice)) dlsym(RTLD_NEXT, "vkCreateDevice");

extern "C" {

// the function that replaces the original vkCreateDevice
VkResult vkCreateDevice(
VkPhysicalDevice physicalDevice,
const VkDeviceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDevice* pDevice){

printf("\nvkCreateDevice hack for running PoE on Intel graphics\n\n");

// POE needs:
// shaderStorageImageReadWithoutFormat: true <-- this one is FALSE on Intel

VkDeviceCreateInfo i = *pCreateInfo;
VkPhysicalDeviceFeatures f = *i.pEnabledFeatures;
f.shaderStorageImageReadWithoutFormat = false;
i.pEnabledFeatures=&f;

return vkCreateDevice_orig(physicalDevice, &i, pAllocator, pDevice);
}

}//extern "C"

I put a pre-built binary (for those too lazy to compile it themselves and lucky enough to have system libraries compatible with mine) here: https://jprofesorek.mooo.com/pub/vulkan_intel_poe_override.so



Bro could you reach to POE devs themselves to make a built in fix for this, this is crazy, this is a big issue
I managed to fix the issue for me, and can use Vulkan again. :)
My fix is a bit random, i am not sure if it really helps others - but maybe, and therefore i post it.

My setup is Pop OS 22.04 (its based on Ubuntu, so might apply there too), on a laptop with dedicated nvidia gpu, and integrated intel gpu. Integrated gpu does most of the rendering, nvidia just gets used for poe and similar stuff.
I am using steam to play.

What i did: I installed the package "dxvk", including its dependencies "dxvk-wine32-development" and "dxvk-wine32-development:i386".

It was a complete shot in the blue, which i didnt not expect to really work. But i was really surprised to see that dxvk is not installed, so i figured why not.
And now im very, very happily enjoying vulkan renderer again, which is a crazy fps increase. :)
I may be late, but I found another workaround (I did not read it in the upper posts here)

Set "renderer_type=opengl" instead of "renderer_type=vulkan" in production_Config.ini file.
test

Report Forum Post

Report Account:

Report Type

Additional Info