rpcs3 icon indicating copy to clipboard operation
rpcs3 copied to clipboard

Fatal Error - Vulkan API call fail

Open Takamura83 opened this issue 1 year ago • 10 comments

Quick summary

Receiving the below error when trying to open any game with vulkan renderer

**Fatal Error

Assertion Failed! Vulkan API call failed with unrecoverable error: Requested feature not available (VK_ERROR_FEATURE_NOT_PRESENT)**

Hardware/Software I am using is -

Hades Canyon NUC8i7HVK GPU - AMD Radeon RX Vega M GH AMD Adrenalin Version 23.10.01.46 Vulkan API Version 1.3.250

Details

No game loads. The below prompt is received when trying to load games. RPCS3 then crashes

Screenshot 2024-07-04 141314

Vulkan diagnostics log below

Screenshot 2024-07-04 141315

Attach a log file

RPCS3 v0.0.32-16659-33851d51 Alpha .zip

Attach capture files for visual issues

No response

System configuration

No response

Other details

No response

Takamura83 avatar Jul 04 '24 13:07 Takamura83

Any guidance is greatly appreciated!

Takamura83 avatar Jul 04 '24 13:07 Takamura83

here https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md it is reported to use Vulkan API 1.3.268.0

digant73 avatar Jul 15 '24 12:07 digant73

Thank you for the steer @digant73

Apologies for the stupid follow up question, but which files do I need and what do I do with them? I've run the SDK and runtime installers, but no change.

Takamura83 avatar Jul 17 '24 14:07 Takamura83

This is an undiagnosed issue that only affects the Vega+Intel IGP combo. I'm fairly certain it's our fault but the diagnostic dump from the emulator doesn't catch anything unusual.

·A 0:00:09.812848 RSX: Found Vulkan-compatible GPU: 'Radeon RX Vega M GH Graphics' running on driver 2.0.270
·W 0:00:09.819321 RSX: Physical device reports a low amount of allowed deferred descriptor updates. Draw call threshold will be lowered accordingly.
·A 0:00:09.819331 RSX: Found Vulkan-compatible GPU: 'Intel(R) HD Graphics 630' running on driver 0.404.636
·W 0:00:09.819355 RSX: Unknown chip with device ID 0x591b
·E 0:00:09.819484 RSX: Your GPU does not support alpha-to-one for multisampling. Graphics may be inaccurate when MSAA is enabled.
·! 0:00:09.819489 RSX: GPU/driver supports float16 data types natively. Using native float16_t variables if possible.
·! 0:00:09.819940 RSX: Dumping requested extensions...
·! 0:00:09.820141 RSX: [Supported] VK_KHR_swapchain
·! 0:00:09.820145 RSX: [Supported] VK_KHR_shader_float16_int8
·! 0:00:09.820147 RSX: [Supported] VK_EXT_conditional_rendering
·! 0:00:09.820149 RSX: [Supported] VK_EXT_depth_range_unrestricted
·! 0:00:09.820150 RSX: [Supported] VK_KHR_external_memory
·! 0:00:09.820152 RSX: [Supported] VK_EXT_external_memory_host
·! 0:00:09.820155 RSX: [Supported] VK_EXT_shader_stencil_export
·! 0:00:09.820157 RSX: [Supported] VK_KHR_sampler_mirror_clamp_to_edge
·! 0:00:09.820158 RSX: [Supported] VK_KHR_maintenance3
·! 0:00:09.820160 RSX: [Supported] VK_EXT_descriptor_indexing
·! 0:00:09.820162 RSX: [Supported] VK_EXT_attachment_feedback_loop_layout
·! 0:00:09.820163 RSX: [Supported] VK_KHR_fragment_shader_barycentric
·! 0:00:09.820165 RSX: [Supported] VK_EXT_custom_border_color
·! 0:00:09.820167 RSX: [Supported] VK_KHR_synchronization2
·! 0:00:09.820168 RSX: Dumping requested features...
·! 0:00:09.820169 RSX: [Supported] robustBufferAccess
·! 0:00:09.820169 RSX: [Supported] fullDrawIndexUint32
·! 0:00:09.820170 RSX: [Supported] independentBlend
·! 0:00:09.820171 RSX: [Supported] sampleRateShading
·! 0:00:09.820171 RSX: [Supported] logicOp
·! 0:00:09.820172 RSX: [Supported] depthClamp
·! 0:00:09.820173 RSX: [Supported] depthBounds
·! 0:00:09.820173 RSX: [Supported] wideLines
·! 0:00:09.820174 RSX: [Supported] largePoints
·! 0:00:09.820175 RSX: [Supported] samplerAnisotropy
·! 0:00:09.820175 RSX: [Supported] textureCompressionBC
·! 0:00:09.820176 RSX: [Supported] occlusionQueryPrecise
·! 0:00:09.820177 RSX: [Supported] shaderStorageImageMultisample
·! 0:00:09.820178 RSX: [Supported] shaderStorageImageWriteWithoutFormat
·! 0:00:09.820178 RSX: [Supported] shaderStorageBufferArrayDynamicIndexing
·! 0:00:09.820179 RSX: [Supported] shaderClipDistance
·! 0:00:09.820180 RSX: [Supported] shaderFloat64
·F 0:00:09.820216 SIG: Thread terminated due to fatal error: Assertion Failed! Vulkan API call failed with unrecoverable error: Requested feature not available (VK_ERROR_FEATURE_NOT_PRESENT)
(in file D:\a\1\s\rpcs3\Emu\RSX\VK\vkutils\device.cpp:685[:8], in function void __cdecl vk::render_device::create(class vk::physical_device &,unsigned int,unsigned int,unsigned int)) (error=0x7f)
(in file D:\a\1\s\rpcs3\Emu\RSX\VK\vkutils\shared.cpp:110[:24], in function void __cdecl vk::die_with_error(enum VkResult,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::source_location)) (error=0x7f)
·W 0:00:09.831101 SYS: Emulation has been frozen! You can either use debugger tools to inspect current emulation state or terminate it.

@Takamura83 Once you have the SDK installed, enabled debug output. You can do this in the developers "debug tab" if you have it unhidden or by manually finding the "debug output" entry in the configuration file for the game and setting it from false to true. After that, start the game again and attach the log that is generated here.

kd-11 avatar Jul 18 '24 07:07 kd-11

Came to say I have the same issue on the same CPU/GPU (8809G). Will try the steps installing the sdk and posting debug output log as soon as I can. Using OpenGL as workaround.

blconway avatar Jul 20 '24 02:07 blconway

I have attached the log. Hopefully it helps. If I gathered the wrong info or additional logs are needed, please let me know.

Thank you.

RPCS3.log

Also, it looks like shaderFloat16=false for that GPU in Vulcan Configurator's Vulkan Info tool from the SDK under VkPhysicalDeviceVulkan12Features section. But maybe I'm misreading the attached log where it says that it's supported.

blconway avatar Jul 22 '24 13:07 blconway

The log is correct, but even the official validation layers don't see anything wrong with our code. I however see this:

RSX: Physical device reports a low amount of allowed deferred descriptor updates. Draw call threshold will be lowered accordingly.

That makes me think it's not a feature or extension problem, but one of the extended features that is maybe requesting too much data. I'll compare this GPU stats with a normal AMD card and try to figure out what is happening.

kd-11 avatar Jul 22 '24 15:07 kd-11

@kd-11 Thank you! If you need me to test any changes or supply additional logs, please let me know.

blconway avatar Jul 22 '24 17:07 blconway

I have attached the log. Hopefully it helps. If I gathered the wrong info or additional logs are needed, please let me know.

Thank you.

RPCS3.log

Also, it looks like shaderFloat16=false for that GPU in Vulcan Configurator's Vulkan Info tool from the SDK under VkPhysicalDeviceVulkan12Features section. But maybe I'm misreading the attached log where it says that it's supported.

Checking the extension sheet in gpuinfo shows the same: https://vulkan.gpuinfo.org/displayreport.php?id=29343#features_extensions However, we fetch the data from the GPU driver so I'm a bit confused why the mismatch is happening.

kd-11 avatar Jul 22 '24 23:07 kd-11

Grab a build from https://github.com/RPCS3/rpcs3/pull/15825 and try again. If fp16 is the issue, that build should work. Attach the log file here either way.

kd-11 avatar Jul 22 '24 23:07 kd-11

Hey @kd-11 , I'll try to set up something to build it for Windows as soon as I can. Unless there is an exe built already that I missed.

Thank you!

blconway avatar Jul 23 '24 13:07 blconway

Hey @kd-11 , I'll try to set up something to build it for Windows as soon as I can. Unless there is an exe built already that I missed.

Thank you!

You can use the build from the PR CI: https://artprodsu6weu.artifacts.visualstudio.com/Ad52971ce-2651-462c-a71a-8019f393a0cf/3598951b-4d39-4fad-ad3b-ff2386a649de/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL25la290ZWtpbmEvcHJvamVjdElkLzM1OTg5NTFiLTRkMzktNGZhZC1hZDNiLWZmMjM4NmE2NDlkZS9idWlsZElkLzExNDczL2FydGlmYWN0TmFtZS9SUENTMytmb3IrV2luZG93cw2/content?format=zip

kd-11 avatar Jul 23 '24 13:07 kd-11

@kd-11 Here is the new log file after running the build provided. It failed with the error: image

RPCS3.log

blconway avatar Jul 23 '24 14:07 blconway

I'll just disable all extensions for this GPU and let's see if it can boot a core VK1.0 instance.

kd-11 avatar Jul 23 '24 18:07 kd-11

@kd-11 Same link for exe? Edit: I misread it as "I just disabled" instead of "I'll just disable". I'll wait for your direction.

blconway avatar Jul 23 '24 19:07 blconway

I realized now that the previous experiment didn't even kick in because your device ID is different from what I expected. It is interesting that there is more than one version of Vega M out there, I figured it was just a one-off product. Anyway, I have modified rpcs3 to boot in pure VK1.0 mode, only using the KHR_swapchain extension required to display things to the screen. Note that with all extensions disabled, performance will be quite bad, likely cut by around half. It's not a real fix, so we still need to figure out which part was tripping things up. The build details will appear in the "artifacts" section of this CI build: https://dev.azure.com/nekotekina/nekotekina/_build/results?buildId=11478&view=results Check for artifacts in about an hour and download the windows executable. If it still crashes attach the log, though the only thing we could do if disabling all extensions doesn't work is:

  1. Drop all feature requests and initialize a device with no optional features enabled. Pretty much useless for rendering.
  2. Run in offscreen mode. We support an offscreen swapchain created in the early vulkan days when WSI support was poor.

kd-11 avatar Jul 24 '24 10:07 kd-11

Apologies, I'm off the pace. Attached is the log post debug enabling RPCS3 Log.zip

Takamura83 avatar Jul 24 '24 13:07 Takamura83

@kd-11 Here is the log from CI build RPCS3.log

blconway avatar Jul 24 '24 15:07 blconway

·! 0:00:06.523724 RSX: Dumping requested extensions...
·! 0:00:06.523943 RSX: [Supported] VK_KHR_swapchain
·! 0:00:06.523947 RSX: [Supported] VK_KHR_shader_float16_int8

It keeps insisting on this float16 extension on your setup for some weird reason even when I have disabled it. I have no idea why it would do that, need to double-check.

kd-11 avatar Jul 24 '24 17:07 kd-11

There was indeed a bug forcing float16 to enabled on VEGA. Next test build: https://dev.azure.com/nekotekina/nekotekina/_build/results?buildId=11479&view=results

kd-11 avatar Jul 24 '24 23:07 kd-11

@kd-11 it works! RPCS3.log

blconway avatar Jul 25 '24 00:07 blconway

Last one: https://dev.azure.com/nekotekina/nekotekina/_build/results?buildId=11480&view=results If this one crashes, then we know that the driver is reporting float16 but doesn't support it. This is a known issue with Vega, since I can see a similar thing was in place to block linux drivers from trying to run float16 on Vega. If it crashes, I'll just disable it for all Vega chips regardless of the driver used.

kd-11 avatar Jul 25 '24 01:07 kd-11

@kd-11 that one works too! Thank you! RPCS3.log

blconway avatar Jul 25 '24 02:07 blconway

Thanks for testing. The fix will be mainlined shortly.

kd-11 avatar Jul 25 '24 09:07 kd-11