ppsspp icon indicating copy to clipboard operation
ppsspp copied to clipboard

libMoltenVK Black Screen on Mac (x86, Radeon Pro 560 4 GB)

Open eks28 opened this issue 3 years ago • 18 comments

Game or games this happens in

None

What area of the game / PPSSPP

Mac OS big sur iMac (Retina 4K, 21.5-inch, 2017)

PPSSPP Latest Action/Git version black screen of PPSSPP/Emu menu but if I replease the libMoltenVK in the app contents framework folder to release version https://github.com/hrydgard/ppsspp/releases/tag/v1.12.3 it works fine I can see the ppsspp menu and play games etc

I want to use the latest git version but evey time I have to replace the older libMoltenVK to work ok

What should happen

It shold show menu but shows black screen

Logs

No response

Platform

macOS

Mobile phone model or graphics card

Retina 4K, 21.5-inch, 2017 / Radeon Pro 560 4 GB

PPSSPP version affected

Every Git version after 1.12.3 (oct/release version)

Last working version

v1.12.3 (oct/release version/

Graphics backend (3D API)

Vulkan

Checklist

  • [X] Test in the latest git build in case it's already fixed.
  • [X] Search for other reports of the same issue.
  • [ ] Try resetting settings or older versions and include if the issue is related.
  • [ ] Try without any cheats and without loading any save states.
  • [ ] Include logs or screenshots of issue.

eks28 avatar Apr 11 '22 16:04 eks28

I have the same problem. Has anyone found a solution?

fat4talk avatar Aug 01 '22 13:08 fat4talk

Don't really know what might be going on here. Will try to look into it in the near future.

hrydgard avatar Aug 01 '22 14:08 hrydgard

On Macbook Air M1, this problem doesn't happen, for whatever reason...

hrydgard avatar Nov 23 '22 08:11 hrydgard

I'm having a similar issue on two machines running Monterey 12.6.1. Problem is present on all versions from 1.13 to 1.14.1.

The last fully functioning version is 1.12.3. Also, swapping the 1.12.3 libMoltenVK dylib into 1.14.1 does not solve the issue. However, launching 1.12.3 and then switching the graphics backend mode to OpenGL instead of Vulkan then allows 1.14.1 to operate correctly.

My systems are as follows: MacBook Pro 2019 with i9 processor and AMD Radeon Pro 5500M 8 GB. Hackintosh running an i9-10900 with 128GB memory and a Radeon 5700XT.

Both machines are running Monterey 12.6.1.

Issue #15744 may be a duplicate of this issue.

XStylus avatar Dec 25 '22 20:12 XStylus

Does switching to OpenGL only help because it's then using OpenGL (and not MoltenVK)? Or do you mean that after it starts it OpenGL, it can switch to Vulkan/MoltenVK and works?

From the duplicate, it seems like this is happening only on Intel based macOS. Maybe there's a problem with the MoltenVK dylib and it is only setup properly for M1?

The last MoltenVK update was in #15186, over a year ago. Maybe simply updating to the latest would help.

Does it help to use a newer one? I assume the SDK from https://www.lunarg.com/vulkan-sdk/ contains it for macOS, or maybe you could use https://www.lwjgl.org/browse/nightly/macosx/x64. Or else you could build a fresh one: https://github.com/KhronosGroup/MoltenVK#building

-[Unknown]

unknownbrackets avatar Dec 29 '22 01:12 unknownbrackets

Does switching to OpenGL only help because it's then using OpenGL (and not MoltenVK)? Or do you mean that after it starts it OpenGL, it can switch to Vulkan/MoltenVK and works?

Switching to OpenGL and then back to Vulkan/MoltenVK does not help, no.

From the duplicate, it seems like this is happening only on Intel based macOS. Maybe there's a problem with the MoltenVK dylib and it is only setup properly for M1?

I do not have access to an M1 mac at the moment, but I will in about a week. I will test on one of those.

Does it help to use a newer one? I assume the SDK from https://www.lunarg.com/vulkan-sdk/ contains it for macOS, or maybe you could use https://www.lwjgl.org/browse/nightly/macosx/x64. Or else you could build a fresh one: https://github.com/KhronosGroup/MoltenVK#building

I've just now tested by swapping in the libMoltenVK.dylib file from https://www.lwjgl.org/browse/nightly/macosx/x64 into the 1.14.1 app. It unfortunately did not help the problem.

XStylus avatar Dec 30 '22 13:12 XStylus

It might be an AMD exclusive issue when using PPSSPP with MoltenVK

Vulkan backend with the following versions: 1.14.3-28-gcd535263c MacOS 1.14.4 Windows + wineskin

Both resulted in a black screen on AMD RX580, but not Intel UHD 617, with Monterey 12.6.2

Despite the black screen, emulation seems to function otherwise, game audio would play if one manages to fumble/click to a game launch

Edit: Bit of an update Using wineskin with https://github.com/The-Wineskin-Project/MoltenVK/releases/tag/v1.1.11 (macos-1.1.11-gc2e9f1d-pr1678-pr1735-UE4hack-zeroinit.tar.xz), 1.12.3 windows works, but black screen on 1.13 and 1.14.4 windows

So some Vulkan backend changes on PPSSPP after 1.12.3 seems to have broken Moltenvk+AMD

Kethen avatar Jan 14 '23 00:01 Kethen

That might be when we removed the hack that made AMD use a single thread on Vulkan... but there are plenty of other changes, our releases tend to have a lot of improvements, bugfixes, speedups, etc. in them. It'd be better to try more builds, but I realize those are a bit gone from the buildbot now.

-[Unknown]

unknownbrackets avatar Jan 15 '23 01:01 unknownbrackets

Bisect attempt on AMD RX580

Downgrading moltenvk?

  • fee3b7144952fbfa4f90b33387e00fac357678c2 is when the black screen is first observed, but at this point one can still get video back by downgrading moltenvk to the last commit
  • 0c3c89a0939d4bd36030977d9de6f6472d777bdc, one commit before, would not black screen, but would backscreen once mvk is updated to fee3b7144952fbfa4f90b33387e00fac357678c2; it also has the same moltenvk as v1.12.3
  • v1.12.3, ce0a45cf0fcdd5bebf32208b9998f68dfc1107b7, would not black screen with it's current moltenvk nor with mvk in fee3b7144952fbfa4f90b33387e00fac357678c2
  • v1.13.2, 9fe6338e3bf397f8a009a51a282c139dfa180eb6, would black screen with it's current moltenvk, but works fine with moltenvk from v1.12.3
  • v1.14, aad5d7542e1f8e805121df4713317eda3ba9eb02, would black screen with it's current moltenvk, splash screen would flash then black screen with moltenvk from v1.12.3

First version that downgrading mvk does not work (black screen/flashing)

v1.13.2 .. v1.14

  • d66c5c11c1532c2850552e8eb2095994021d055c freezes with vulkan backend
  • 97ca40530b5c87d56dccb0ffd17d569b0cd79033 behaves like v1.14

First version that would blackscreen with newer moltenvk

v1.12.3 .. fee3b7144952fbfa4f90b33387e00fac357678c2

  • v1.14.4 and fee3b7144952fbfa4f90b33387e00fac357678c2 has the same moltenvk library, it was not changed since
  • 8f29d9542c729d04db44d6974ab5f401ffe95515 shows a black screen with updated moltenvk
  • 8f9ce03a8d61ea7e384e4a6ca403dc6ff522699a .. 2cbadefb29e4c8637d5f8fd4a8bd737872bc689e does not build due to linking error, vulkan related undefined symbols
  • eceb691f92aa52da998fa12bbbbd8e55e653d716 works fine with moltenvk from fee3b7144952fbfa4f90b33387e00fac357678c2

Kethen avatar Jan 17 '23 16:01 Kethen

I've just merged a new MoltenVK upgrade, #17839 .

If it doesn't help, please try setting "Buffer graphics commands" to off, since that will prevent use of the extra thread, which might be a factor.

hrydgard avatar Aug 08 '23 14:08 hrydgard

I'm going to assume that the upgrade fixed it unless reported otherwise, closing.

hrydgard avatar Aug 17 '23 08:08 hrydgard

@hrydgard When I select Vulkan, there is a black screen. This problem has not been fixed

macbook pro 2016 (radeon pro 455)

setanarut avatar Nov 29 '23 16:11 setanarut

I really don't know what is going on there, I don't have an AMD macbook to investigate on and it's not so easy to find one these days.

If you run PPSSPP from the command line, do you see anything interesting in the log output?

(You can do this by navigating to the folder with the app, and running this command:

 build/PPSSPPSDL.app/Contents/MacOS/PPSSPPSDL

hrydgard avatar Nov 29 '23 19:11 hrydgard

I really don't know what is going on there, I don't have an AMD macbook to investigate on and it's not so easy to find one these days.

If you run PPSSPP from the command line, do you see anything interesting in the log output?

(You can do this by navigating to the folder with the app, and running this command:

 build/PPSSPPSDL.app/Contents/MacOS/PPSSPPSDL

Here it is, I censored personal information with ***.

Terminal Output
~ % /*****/***/Applications/PPSSPPSDL.app/Contents/MacOS/PPSSPPSDL
VulkanMayBeAvailable: Device allowed ('SDL:macOS')
VulkanMayBeAvailable: Library loaded ('@executable_path/../Frameworks/libMoltenVK.dylib')
VulkanMayBeAvailable: Enumerating instance extensions
VulkanMayBeAvailable: Instance extension count: 14
VulkanMaybeAvailable: Instance extension found: VK_KHR_device_group_creation (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_external_fence_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_external_memory_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_external_semaphore_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_get_physical_device_properties2 (00000002)
VulkanMaybeAvailable: Instance extension found: VK_KHR_get_surface_capabilities2 (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_surface (00000019)
VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_report (0000000a)
VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_utils (00000002)
VulkanMaybeAvailable: Instance extension found: VK_EXT_metal_surface (00000001)
VulkanMayBeAvailable: Found platform surface extension 'VK_EXT_metal_surface'
VulkanMayBeAvailable: Calling vkCreateInstance
[mvk-info] MoltenVK version 1.2.4, supporting Vulkan version 1.2.250.
	The following 87 Vulkan extensions are supported:
		VK_KHR_16bit_storage v1
		VK_KHR_8bit_storage v1
		VK_KHR_bind_memory2 v1
		VK_KHR_copy_commands2 v1
		VK_KHR_create_renderpass2 v1
		VK_KHR_dedicated_allocation v3
		VK_KHR_depth_stencil_resolve v1
		VK_KHR_descriptor_update_template v1
		VK_KHR_device_group v4
		VK_KHR_device_group_creation v1
		VK_KHR_driver_properties v1
		VK_KHR_dynamic_rendering v1
		VK_KHR_external_fence v1
		VK_KHR_external_fence_capabilities v1
		VK_KHR_external_memory v1
		VK_KHR_external_memory_capabilities v1
		VK_KHR_external_semaphore v1
		VK_KHR_external_semaphore_capabilities v1
		VK_KHR_fragment_shader_barycentric v1
		VK_KHR_get_memory_requirements2 v1
		VK_KHR_get_physical_device_properties2 v2
		VK_KHR_get_surface_capabilities2 v1
		VK_KHR_imageless_framebuffer v1
		VK_KHR_image_format_list v1
		VK_KHR_maintenance1 v2
		VK_KHR_maintenance2 v1
		VK_KHR_maintenance3 v1
		VK_KHR_map_memory2 v1
		VK_KHR_multiview v1
		VK_KHR_portability_subset v1
		VK_KHR_push_descriptor v2
		VK_KHR_relaxed_block_layout v1
		VK_KHR_sampler_mirror_clamp_to_edge v3
		VK_KHR_sampler_ycbcr_conversion v14
		VK_KHR_separate_depth_stencil_layouts v1
		VK_KHR_shader_draw_parameters v1
		VK_KHR_shader_float_controls v4
		VK_KHR_shader_float16_int8 v1
		VK_KHR_shader_subgroup_extended_types v1
		VK_KHR_spirv_1_4 v1
		VK_KHR_storage_buffer_storage_class v1
		VK_KHR_surface v25
		VK_KHR_swapchain v70
		VK_KHR_swapchain_mutable_format v1
		VK_KHR_timeline_semaphore v2
		VK_KHR_uniform_buffer_standard_layout v1
		VK_KHR_variable_pointers v1
		VK_EXT_debug_marker v4
		VK_EXT_debug_report v10
		VK_EXT_debug_utils v2
		VK_EXT_descriptor_indexing v2
		VK_EXT_external_memory_host v1
		VK_EXT_fragment_shader_interlock v1
		VK_EXT_hdr_metadata v2
		VK_EXT_host_query_reset v1
		VK_EXT_image_robustness v1
		VK_EXT_inline_uniform_block v1
		VK_EXT_memory_budget v1
		VK_EXT_metal_objects v1
		VK_EXT_metal_surface v1
		VK_EXT_pipeline_creation_cache_control v3
		VK_EXT_post_depth_coverage v1
		VK_EXT_private_data v1
		VK_EXT_robustness2 v1
		VK_EXT_sample_locations v1
		VK_EXT_scalar_block_layout v1
		VK_EXT_separate_stencil_usage v1
		VK_EXT_shader_stencil_export v1
		VK_EXT_shader_viewport_index_layer v1
		VK_EXT_subgroup_size_control v2
		VK_EXT_surface_maintenance1 v1
		VK_EXT_swapchain_colorspace v4
		VK_EXT_swapchain_maintenance1 v1
		VK_EXT_texel_buffer_alignment v1
		VK_EXT_texture_compression_astc_hdr v1
		VK_EXT_vertex_attribute_divisor v3
		VK_AMD_gpu_shader_half_float v2
		VK_AMD_negative_viewport_height v1
		VK_AMD_shader_image_load_store_lod v1
		VK_AMD_shader_trinary_minmax v1
		VK_IMG_format_pvrtc v1
		VK_INTEL_shader_integer_functions2 v1
		VK_GOOGLE_display_timing v1
		VK_MVK_macos_surface v3
		VK_MVK_moltenvk v37
		VK_NV_fragment_shader_barycentric v1
		VK_NV_glsl_shader v1
[mvk-info] GPU device:
		model: AMD Radeon Pro 455
		type: Discrete
		vendorID: 0x1002
		deviceID: 0x67ef
		pipelineCacheUUID: 4C6BFBEB-0C07-07D2-0000-000000000000
	supports the following Metal Versions, GPU's and Feature Sets:
		Metal Shading Language 2.4
		GPU Family Mac 2
		GPU Family Mac 1
		GPU Family Common 3
		GPU Family Common 2
		GPU Family Common 1
		macOS GPU Family 2 v1
		macOS GPU Family 1 v4
		macOS GPU Family 1 v3
		macOS GPU Family 1 v2
		macOS GPU Family 1 v1
		macOS Read-Write Texture Tier 2
[mvk-info] GPU device:
		model: Intel(R) HD Graphics 530
		type: Integrated
		vendorID: 0x8086
		deviceID: 0x191b
		pipelineCacheUUID: 4C6BFBEB-0C07-07D2-0000-000000000000
	supports the following Metal Versions, GPU's and Feature Sets:
		Metal Shading Language 2.4
		GPU Family Mac 2
		GPU Family Mac 1
		GPU Family Common 3
		GPU Family Common 2
		GPU Family Common 1
		macOS GPU Family 2 v1
		macOS GPU Family 1 v4
		macOS GPU Family 1 v3
		macOS GPU Family 1 v2
		macOS GPU Family 1 v1
[mvk-info] Created VkInstance for Vulkan version 1.0.0, as requested by app, with the following 2 Vulkan extensions enabled:
		VK_KHR_surface v25
		VK_EXT_metal_surface v1
VulkanMayBeAvailable: Vulkan test instance created successfully.
VulkanMayBeAvailable: Eligible device found: 'AMD Radeon Pro 455'
VulkanMayBeAvailable: Eligible device found: 'Intel(R) HD Graphics 530'
VulkanMayBeAvailable: Found working Vulkan API!
VulkanMayBeAvailable: Destroying instance
DEBUG: Vulkan might be available.
Info: We compiled against SDL version 2.26.5 and we are linking against SDL version 2.26.5. :)
ThreadManager::Init(compute threads: 8, all: 16)
53:46:089 Core/Config.cpp:329 I[G3D]: Longest display side: 1680 pixels. Choosing scale 2
53:46:099 UI/BackgroundAudio.cpp:521 E[SYSTEM]: Failed to load the default sample for UI sound 5
53:46:099 UI/BackgroundAudio.cpp:521 E[SYSTEM]: Failed to load the default sample for UI sound 6
[mvk-info] MoltenVK version 1.2.4, supporting Vulkan version 1.2.250.
	The following 87 Vulkan extensions are supported:
		VK_KHR_16bit_storage v1
		VK_KHR_8bit_storage v1
		VK_KHR_bind_memory2 v1
		VK_KHR_copy_commands2 v1
		VK_KHR_create_renderpass2 v1
		VK_KHR_dedicated_allocation v3
		VK_KHR_depth_stencil_resolve v1
		VK_KHR_descriptor_update_template v1
		VK_KHR_device_group v4
		VK_KHR_device_group_creation v1
		VK_KHR_driver_properties v1
		VK_KHR_dynamic_rendering v1
		VK_KHR_external_fence v1
		VK_KHR_external_fence_capabilities v1
		VK_KHR_external_memory v1
		VK_KHR_external_memory_capabilities v1
		VK_KHR_external_semaphore v1
		VK_KHR_external_semaphore_capabilities v1
		VK_KHR_fragment_shader_barycentric v1
		VK_KHR_get_memory_requirements2 v1
		VK_KHR_get_physical_device_properties2 v2
		VK_KHR_get_surface_capabilities2 v1
		VK_KHR_imageless_framebuffer v1
		VK_KHR_image_format_list v1
		VK_KHR_maintenance1 v2
		VK_KHR_maintenance2 v1
		VK_KHR_maintenance3 v1
		VK_KHR_map_memory2 v1
		VK_KHR_multiview v1
		VK_KHR_portability_subset v1
		VK_KHR_push_descriptor v2
		VK_KHR_relaxed_block_layout v1
		VK_KHR_sampler_mirror_clamp_to_edge v3
		VK_KHR_sampler_ycbcr_conversion v14
		VK_KHR_separate_depth_stencil_layouts v1
		VK_KHR_shader_draw_parameters v1
		VK_KHR_shader_float_controls v4
		VK_KHR_shader_float16_int8 v1
		VK_KHR_shader_subgroup_extended_types v1
		VK_KHR_spirv_1_4 v1
		VK_KHR_storage_buffer_storage_class v1
		VK_KHR_surface v25
		VK_KHR_swapchain v70
		VK_KHR_swapchain_mutable_format v1
		VK_KHR_timeline_semaphore v2
		VK_KHR_uniform_buffer_standard_layout v1
		VK_KHR_variable_pointers v1
		VK_EXT_debug_marker v4
		VK_EXT_debug_report v10
		VK_EXT_debug_utils v2
		VK_EXT_descriptor_indexing v2
		VK_EXT_external_memory_host v1
		VK_EXT_fragment_shader_interlock v1
		VK_EXT_hdr_metadata v2
		VK_EXT_host_query_reset v1
		VK_EXT_image_robustness v1
		VK_EXT_inline_uniform_block v1
		VK_EXT_memory_budget v1
		VK_EXT_metal_objects v1
		VK_EXT_metal_surface v1
		VK_EXT_pipeline_creation_cache_control v3
		VK_EXT_post_depth_coverage v1
		VK_EXT_private_data v1
		VK_EXT_robustness2 v1
		VK_EXT_sample_locations v1
		VK_EXT_scalar_block_layout v1
		VK_EXT_separate_stencil_usage v1
		VK_EXT_shader_stencil_export v1
		VK_EXT_shader_viewport_index_layer v1
		VK_EXT_subgroup_size_control v2
		VK_EXT_surface_maintenance1 v1
		VK_EXT_swapchain_colorspace v4
		VK_EXT_swapchain_maintenance1 v1
		VK_EXT_texel_buffer_alignment v1
		VK_EXT_texture_compression_astc_hdr v1
		VK_EXT_vertex_attribute_divisor v3
		VK_AMD_gpu_shader_half_float v2
		VK_AMD_negative_viewport_height v1
		VK_AMD_shader_image_load_store_lod v1
		VK_AMD_shader_trinary_minmax v1
		VK_IMG_format_pvrtc v1
		VK_INTEL_shader_integer_functions2 v1
		VK_GOOGLE_display_timing v1
		VK_MVK_macos_surface v3
		VK_MVK_moltenvk v37
		VK_NV_fragment_shader_barycentric v1
		VK_NV_glsl_shader v1
[mvk-info] GPU device:
		model: AMD Radeon Pro 455
		type: Discrete
		vendorID: 0x1002
		deviceID: 0x67ef
		pipelineCacheUUID: 4C6BFBEB-0C07-07D2-0000-000000000000
	supports the following Metal Versions, GPU's and Feature Sets:
		Metal Shading Language 2.4
		GPU Family Mac 2
		GPU Family Mac 1
		GPU Family Common 3
		GPU Family Common 2
		GPU Family Common 1
		macOS GPU Family 2 v1
		macOS GPU Family 1 v4
		macOS GPU Family 1 v3
		macOS GPU Family 1 v2
		macOS GPU Family 1 v1
		macOS Read-Write Texture Tier 2
[mvk-info] GPU device:
		model: Intel(R) HD Graphics 530
		type: Integrated
		vendorID: 0x8086
		deviceID: 0x191b
		pipelineCacheUUID: 4C6BFBEB-0C07-07D2-0000-000000000000
	supports the following Metal Versions, GPU's and Feature Sets:
		Metal Shading Language 2.4
		GPU Family Mac 2
		GPU Family Mac 1
		GPU Family Common 3
		GPU Family Common 2
		GPU Family Common 1
		macOS GPU Family 2 v1
		macOS GPU Family 1 v4
		macOS GPU Family 1 v3
		macOS GPU Family 1 v2
		macOS GPU Family 1 v1
[mvk-info] Created VkInstance for Vulkan version 1.2.0, as requested by app, with the following 4 Vulkan extensions enabled:
		VK_KHR_get_physical_device_properties2 v2
		VK_KHR_surface v25
		VK_EXT_metal_surface v1
		VK_EXT_swapchain_colorspace v4
[mvk-info] Vulkan semaphores using MTLEvent.
[mvk-info] Created VkDevice to run on GPU AMD Radeon Pro 455 with the following 10 Vulkan extensions enabled:
		VK_KHR_create_renderpass2 v1
		VK_KHR_dedicated_allocation v3
		VK_KHR_depth_stencil_resolve v1
		VK_KHR_get_memory_requirements2 v1
		VK_KHR_maintenance1 v2
		VK_KHR_maintenance2 v1
		VK_KHR_maintenance3 v1
		VK_KHR_multiview v1
		VK_KHR_swapchain v70
		VK_EXT_shader_stencil_export v1
[mvk-info] Created 3 swapchain images with initial size (555, 221) and contents scale 1.0 for screen Built-in Retina Display.
loading control pad mappings from gamecontrollerdb.txt: SUCCESS!
[mvk-info] Created 3 swapchain images with initial size (555, 221) and contents scale 1.0 for screen Built-in Retina Display.
/Users/****/Documents/****.iso
/Users/****/Documents/****.iso
Vulkan submission thread joined. Frame=0
Vulkan compiler thread joined.
Backbuffers destroyed
VulkanRenderManager destructor
VulkanQueueRunner::DestroyDeviceObjects
VulkanContext::DestroyDevice (performing deletes)
Leaving main
~ %

setanarut avatar Nov 29 '23 23:11 setanarut

Hm, that's odd, it all looks pretty normal, don't see any errors.

What if you go into ~/.config/ppsspp/PSP/SYSTEM/ppsspp.ini, and change all the levels under [Log] to 4, and the enables to True, then run again?

hrydgard avatar Nov 30 '23 00:11 hrydgard

Hm, that's odd, it all looks pretty normal, don't see any errors.

What if you go into ~/.config/ppsspp/PSP/SYSTEM/ppsspp.ini, and change all the levels under [Log] to 4, and the enables to True, then run again?

log.txt

setanarut avatar Nov 30 '23 02:11 setanarut