Conversation
|
Doesn't make sense. You get VK_ERROR_FEATURE_NOT_PRESENT from the driver. The driver is properly reporting it doesn't support something. Just check for the feature and disable the setting if it is not supported. |
Yes and no. The emulator incorrectly detects my GPU as supported and continues execution, but because this is a false positive, it crashes. My fix prevents that false positive and, even if the option is enabled, disables it on the fly to avoid the crash. |
|
The PR seems like crap to me, testing on latest unaltered master (which uses MoltenVK 1.4.1 with private Metal API support exposed), the 'Allow Host GPU Labels' option works perfectly fine and doesn't crash on an M4 Pro MBP on macOS 15.7.4. We already do an extension support check here: https://github.com/RPCS3/rpcs3/blob/master/rpcs3/Emu/RSX/VK/vkutils/device.cpp#L123, adding a bloated & unnecessary test-case to check for support is the complete wrong way to do things here. If some older AS hardware really needs this feature disabled, raise it up with MoltenVK and not us. |
I tested this on four different MacBooks using the official release build, and it crashes on all of them:
So whatever is working on your M4 Pro / macOS 15.7.4 / MoltenVK 1.4.1 (private Metal API exposed) setup is not representative of what we’re seeing in the wild. Also, calling the PR “crap” is not helpful. The change isn’t “bloated” for the sake of it. It’s a practical guardrail for a real, repeatable crash across multiple Apple Silicon machines. An extension support check in code doesn’t automatically mean the feature is safe/stable in every runtime scenario. If you can point to a specific technical issue with the approach (or propose a simpler guard that still prevents the crash on M1/M3/M4), I’m happy to adjust it but dismissing it outright doesn’t match the actual behavior we’re observing. |
| const u64 vram_allocation_limit = g_cfg.video.vk.vram_allocation_limit * 0x100000ull; | ||
| memory_map.device_local_total_bytes = std::min(memory_map.device_local_total_bytes, vram_allocation_limit); | ||
|
|
||
| // Runtime validation for external_memory_host - some drivers advertise but don't fully support it |
There was a problem hiding this comment.
That is a driver bug. Please report to upstream.
For actual internal issues like general incompatibility (quirks) that is handled in rpcs3 layer not the driver wrapper layer. Consider vkuitls to not be part of the emulator if you need a mental model to work with. See VKHelpers and VKGSRender for quirks handling.
There was a problem hiding this comment.
In emergency situations (lets say AMD or NV have a driver regression) we allow turning off the feature on pgpu status and reporting it to the vendor. You can turn off the feature for apple here using a basic preprocessor macro: https://github.com/RPCS3/rpcs3/blob/master/rpcs3/Emu/RSX/VK/vkutils/device.cpp#L123
To clarify - this piece of code here is not correct vulkan behavior by any means. If the spec means nothing we would have to check every extension like this.
I don't really have anything to suggest beyond: post full & complete logs for the exact crashes you're seeing, with the games in question stated explicitly. Testing the latest master build (unmodified, I'm not running a fancy setup here, MVK 1.4.1 w/privateapi is standard in the current releases) I have been unable to repro this behaviour in GTA IV and God of War 3 on my hardware. |
I think you have edited your files somehow, this should be impossible. If it is incorrectly detecting your GPU, why not fix the GPU detection? We detect apple devices by driver, not chip class so anything running on moltenvk would be classified correctly. As for host GPU labels not working correctly, it would have made more sense to report it as a bug. |
|
EDIT: Nvm, it wouldn't if it crashes on startup. That is a driver issue or incorrect library being used somehow. |
|
@kd-11 I did a test since I had a little theory as to what was up: swapped in the old MoltenVK 1.3.0 ICD into the latest master build and boom, got the same feature error, whilst the stock 1.4.1 w/privateapi ICD works fine. Clearly @freakmaxi somehow is having an older MoltenVK version load into their builds, either via custom building with the wrong MVK version, or by having an older Vulkan SDK/MVK version installed elsewhere on the system (homebrew or otherwise). |
|
@freakmaxi Please confirm if using the 1.4 ICD resolves the problem. |
|
Let me share the full log with you, so you can identify the problem Debugger: 0 Apple's crash report is the following: https://sharetext.io/fnbafjli |
Homebrew's interfering, remove the homebrew MoltenVK installation entirely and test again, ideally via a clean unmodified download of the emulator from rpcs3.net and NOT from a custom compile of your own. |
Nope, it didn't help. |
|
by the way, it is not my build. It is exactly what I've downloaded from the web |
|
@freakmaxi Move this to a bug report. For log file, we need the actual file, not just console output from the emulator. Tag @schm1dtmac once you open the ticket, we'll check why that could be happening. |
This fixes a crash that occurs on unsupported (or falsely detected as supported) GPUs when Allow Host GPU Labels (Experimental) is enabled. In my case, it happens on an Apple MacBook with Apple Silicon.
RPCS3: RSX [0x0014afc]: 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 /Users/tunacelik/Projects/rpcs3/rpcs3/Emu/RSX/VK/vkutils/buffer_object.cpp:111[:64], in function 'vk::buffer::buffer(const vk::render_device &, VkBufferUsageFlags, void *, u64)') (errno=60=Operation timed out) (in file /Users/tunacelik/Projects/rpcs3/rpcs3/Emu/RSX/VK/vkutils/shared.cpp:205[:4], in function 'void vk::die_with_error(VkResult, std::string, std::source_location)') (errno=60=Operation timed out)