Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VideoBackends:Metal: Enable shouldMaximizeConcurrentCompilation when available #11911

Merged

Conversation

TellowKrinkle
Copy link
Contributor

macOS 13.3 finally lets us use all our cores when compiling shaders, turn that on

Improves launch time with Compile Shaders Before Starting + Ubershaders

For anyone who wants to test, clear your Metal shader cache with

rm -r $TMPDIR/../C/org.dolphin-emu.dolphin/com.apple.metal

@iwubcode
Copy link
Contributor

@OatmealDome - are you comfortable reviewing or at least testing this?

@dolphin-ci
Copy link

dolphin-ci bot commented Jun 10, 2023

FifoCI detected that this change impacts graphical rendering. Here are the behavior differences detected by the system:

  • ab11-homebrew on mvk-osx-m1: diff
  • aeon-charge-attack on mvk-osx-m1: diff
  • bk-tev on mvk-osx-m1: diff
  • burnout2-vehicletextures on mvk-osx-m1: diff
  • chibi-robo-fastdepth on mvk-osx-m1: diff
  • chibi-robo-zfighting on mvk-osx-m1: diff
  • custom-brawl-char on mvk-osx-m1: diff
  • dbz-depth on mvk-osx-m1: diff
  • djfny-menu on mvk-osx-m1: diff
  • djhero2-blend on mvk-osx-m1: diff
  • DKCR-Char on mvk-osx-m1: diff
  • DKCR-fast-depth on mvk-osx-m1: diff
  • ea-pink on mvk-osx-m1: diff
  • ea-vp6 on mvk-osx-m1: diff
  • ed-updated on mvk-osx-m1: diff
  • et-vid on mvk-osx-m1: diff
  • find-mii on mvk-osx-m1: diff
  • fishing-resort-map on mvk-osx-m1: diff
  • fog-adj on mvk-osx-m1: diff
  • fortune-street on mvk-osx-m1: diff
  • fortune-street-fog on mvk-osx-m1: diff
  • fortune-street-white-box on mvk-osx-m1: diff
  • fsa-layers on mvk-osx-m1: diff
  • f-zero-rain on mvk-osx-m1: diff
  • goldeneye-depth on mvk-osx-m1: diff
  • hb-discgolf on mvk-osx-m1: diff
  • inverted-depth-range on mvk-osx-m1: diff
  • jb-shadow on mvk-osx-m1: diff
  • jd2-fmv on mvk-osx-m1: diff
  • jj-awae-mirrored on mvk-osx-m1: diff
  • kirby-logicop on mvk-osx-m1: diff
  • kirby-shadows on mvk-osx-m1: diff
  • last-story-shadows on mvk-osx-m1: diff
  • lego-star-wars-crane-shadow on mvk-osx-m1: diff
  • lesson08 on mvk-osx-m1: diff
  • line-width-test on mvk-osx-m1: diff
  • lm-mario-portrait on mvk-osx-m1: diff
  • luigi-shadows on mvk-osx-m1: diff
  • major-minor on mvk-osx-m1: diff
  • mario-baseball-shadows on mvk-osx-m1: diff
  • mario-golf-oob on mvk-osx-m1: diff
  • mario-sluggers-bar on mvk-osx-m1: diff
  • mario-tennis-menu on mvk-osx-m1: diff
  • MaS-LOG-wiimote on mvk-osx-m1: diff
  • megaman-heat on mvk-osx-m1: diff
  • melee-depth on mvk-osx-m1: diff
  • melee-lighting on mvk-osx-m1: diff
  • metroid-visor on mvk-osx-m1: diff
  • mii-channel on mvk-osx-m1: diff
  • milotic-texture on mvk-osx-m1: diff
  • mini-ninjas on mvk-osx-m1: diff
  • mkdd-babypark on mvk-osx-m1: diff
  • mkdd-efb on mvk-osx-m1: diff
  • mkw-bridge on mvk-osx-m1: diff
  • mkw-flags on mvk-osx-m1: diff
  • mkwii-bluebox on mvk-osx-m1: diff
  • mmx-light on mvk-osx-m1: diff
  • monkeyball-fuse on mvk-osx-m1: diff
  • mp2-scanner on mvk-osx-m1: diff
  • mp3-bloom on mvk-osx-m1: diff
  • mp4-vertexcache on mvk-osx-m1: diff
  • mp7-text on mvk-osx-m1: diff
  • mp8-widescreen on mvk-osx-m1: diff
  • mtennis-zfreeze on mvk-osx-m1: diff
  • my-word-coach on mvk-osx-m1: diff
  • nes-vc on mvk-osx-m1: diff
  • nfsu-purplerect on mvk-osx-m1: diff
  • nfsu-reflections on mvk-osx-m1: diff
  • nhl-slap on mvk-osx-m1: diff
  • nintendo-channel on mvk-osx-m1: diff
  • nsmbw-coins on mvk-osx-m1: diff
  • nsmbw-intro on mvk-osx-m1: diff
  • pbr-sfx on mvk-osx-m1: diff
  • pm-hc-jp on mvk-osx-m1: diff
  • pw-black-bars on mvk-osx-m1: diff
  • quake-gx on mvk-osx-m1: diff
  • rs2-bumpmapping on mvk-osx-m1: diff
  • rs2-glass on mvk-osx-m1: diff
  • rs2-skybox on mvk-osx-m1: diff
  • rs2-zfreeze on mvk-osx-m1: diff
  • rs3-bumpmapping on mvk-osx-m1: diff
  • rs3-skybox2 on mvk-osx-m1: diff
  • sadx-ui on mvk-osx-m1: diff
  • sfa-shadows on mvk-osx-m1: diff
  • sf-assault-flashing on mvk-osx-m1: diff
  • shadow-eyes on mvk-osx-m1: diff
  • simpsons-game on mvk-osx-m1: diff
  • smb-mirror on mvk-osx-m1: diff
  • smg2-fog on mvk-osx-m1: diff
  • smg-marioeyes on mvk-osx-m1: diff
  • smg-mmg on mvk-osx-m1: diff
  • smg-roar on mvk-osx-m1: diff
  • sms-bubbles on mvk-osx-m1: diff
  • sms-coconut-drinks on mvk-osx-m1: diff
  • sms-gc on mvk-osx-m1: diff
  • sms-water on mvk-osx-m1: diff
  • soa-black on mvk-osx-m1: diff
  • soniccolors-mm on mvk-osx-m1: diff
  • sonic-riders-blur on mvk-osx-m1: diff
  • sonic-riders-zg-4p on mvk-osx-m1: diff
  • sonicriderszg-gb on mvk-osx-m1: diff
  • spyro-bloom on mvk-osx-m1: diff
  • spyro-depth on mvk-osx-m1: diff
  • ssbb-mod-lloyd on mvk-osx-m1: diff
  • ssbm-pointsize on mvk-osx-m1: diff
  • ss-map on mvk-osx-m1: diff
  • super-sluggers-white-out on mvk-osx-m1: diff
  • sw3-dt on mvk-osx-m1: diff
  • taiko-depth on mvk-osx-m1: diff
  • thps3-earlyz on mvk-osx-m1: diff
  • thps4-shadow on mvk-osx-m1: diff
  • tla-menu on mvk-osx-m1: diff
  • tos-invis-char on mvk-osx-m1: diff
  • tp-skin on mvk-osx-m1: diff
  • tsp3-pinkgrass on mvk-osx-m1: diff
  • vegas-party-depth on mvk-osx-m1: diff
  • viewitful-joe-distortion on mvk-osx-m1: diff
  • ww-song-of-passing on mvk-osx-m1: diff
  • xblade-bloom on mvk-osx-m1: diff
  • xenoblade-menu on mvk-osx-m1: diff
  • zelda1-vc on mvk-osx-m1: diff
  • ztp-grass on mvk-osx-m1: diff
  • zww-armos on mvk-osx-m1: diff
  • zww-water on mvk-osx-m1: diff
  • zww-waves on mvk-osx-m1: diff
  • ab11-homebrew on mtl-osx-m1: diff
  • aeon-charge-attack on mtl-osx-m1: diff
  • bk-tev on mtl-osx-m1: diff
  • burnout2-vehicletextures on mtl-osx-m1: diff
  • chibi-robo-fastdepth on mtl-osx-m1: diff
  • chibi-robo-zfighting on mtl-osx-m1: diff
  • custom-brawl-char on mtl-osx-m1: diff
  • dbz-depth on mtl-osx-m1: diff
  • djfny-menu on mtl-osx-m1: diff
  • djhero2-blend on mtl-osx-m1: diff
  • DKCR-Char on mtl-osx-m1: diff
  • DKCR-fast-depth on mtl-osx-m1: diff
  • ea-pink on mtl-osx-m1: diff
  • ea-vp6 on mtl-osx-m1: diff
  • ed-updated on mtl-osx-m1: diff
  • et-vid on mtl-osx-m1: diff
  • find-mii on mtl-osx-m1: diff
  • fishing-resort-map on mtl-osx-m1: diff
  • fog-adj on mtl-osx-m1: diff
  • fortune-street on mtl-osx-m1: diff
  • fortune-street-fog on mtl-osx-m1: diff
  • fortune-street-white-box on mtl-osx-m1: diff
  • fsa-layers on mtl-osx-m1: diff
  • f-zero-rain on mtl-osx-m1: diff
  • goldeneye-depth on mtl-osx-m1: diff
  • hb-discgolf on mtl-osx-m1: diff
  • inverted-depth-range on mtl-osx-m1: diff
  • jb-shadow on mtl-osx-m1: diff
  • jd2-fmv on mtl-osx-m1: diff
  • jj-awae-mirrored on mtl-osx-m1: diff
  • kirby-logicop on mtl-osx-m1: diff
  • kirby-shadows on mtl-osx-m1: diff
  • last-story-shadows on mtl-osx-m1: diff
  • lego-star-wars-crane-shadow on mtl-osx-m1: diff
  • lesson08 on mtl-osx-m1: diff
  • line-width-test on mtl-osx-m1: diff
  • lm-mario-portrait on mtl-osx-m1: diff
  • luigi-shadows on mtl-osx-m1: diff
  • major-minor on mtl-osx-m1: diff
  • mario-baseball-shadows on mtl-osx-m1: diff
  • mario-golf-oob on mtl-osx-m1: diff
  • mario-sluggers-bar on mtl-osx-m1: diff
  • mario-tennis-menu on mtl-osx-m1: diff
  • MaS-LOG-wiimote on mtl-osx-m1: diff
  • megaman-heat on mtl-osx-m1: diff
  • melee-depth on mtl-osx-m1: diff
  • melee-lighting on mtl-osx-m1: diff
  • metroid-visor on mtl-osx-m1: diff
  • mii-channel on mtl-osx-m1: diff
  • milotic-texture on mtl-osx-m1: diff
  • mini-ninjas on mtl-osx-m1: diff
  • mkdd-babypark on mtl-osx-m1: diff
  • mkdd-efb on mtl-osx-m1: diff
  • mkw-bridge on mtl-osx-m1: diff
  • mkw-flags on mtl-osx-m1: diff
  • mkwii-bluebox on mtl-osx-m1: diff
  • mmx-light on mtl-osx-m1: diff
  • monkeyball-fuse on mtl-osx-m1: diff
  • mp2-scanner on mtl-osx-m1: diff
  • mp3-bloom on mtl-osx-m1: diff
  • mp4-vertexcache on mtl-osx-m1: diff
  • mp7-text on mtl-osx-m1: diff
  • mp8-widescreen on mtl-osx-m1: diff
  • mtennis-zfreeze on mtl-osx-m1: diff
  • my-word-coach on mtl-osx-m1: diff
  • nes-vc on mtl-osx-m1: diff
  • nfsu-purplerect on mtl-osx-m1: diff
  • nfsu-reflections on mtl-osx-m1: diff
  • nhl-slap on mtl-osx-m1: diff
  • nintendo-channel on mtl-osx-m1: diff
  • nsmbw-coins on mtl-osx-m1: diff
  • nsmbw-intro on mtl-osx-m1: diff
  • pbr-sfx on mtl-osx-m1: diff
  • pm-hc-jp on mtl-osx-m1: diff
  • pw-black-bars on mtl-osx-m1: diff
  • quake-gx on mtl-osx-m1: diff
  • rs2-bumpmapping on mtl-osx-m1: diff
  • rs2-glass on mtl-osx-m1: diff
  • rs2-skybox on mtl-osx-m1: diff
  • rs2-zfreeze on mtl-osx-m1: diff
  • rs3-bumpmapping on mtl-osx-m1: diff
  • rs3-skybox2 on mtl-osx-m1: diff
  • sadx-ui on mtl-osx-m1: diff
  • sfa-shadows on mtl-osx-m1: diff
  • sf-assault-flashing on mtl-osx-m1: diff
  • shadow-eyes on mtl-osx-m1: diff
  • simpsons-game on mtl-osx-m1: diff
  • smb-mirror on mtl-osx-m1: diff
  • smg2-fog on mtl-osx-m1: diff
  • smg-marioeyes on mtl-osx-m1: diff
  • smg-mmg on mtl-osx-m1: diff
  • smg-roar on mtl-osx-m1: diff
  • sms-bubbles on mtl-osx-m1: diff
  • sms-coconut-drinks on mtl-osx-m1: diff
  • sms-gc on mtl-osx-m1: diff
  • sms-water on mtl-osx-m1: diff
  • soa-black on mtl-osx-m1: diff
  • soniccolors-mm on mtl-osx-m1: diff
  • sonic-riders-blur on mtl-osx-m1: diff
  • sonic-riders-zg-4p on mtl-osx-m1: diff
  • sonicriderszg-gb on mtl-osx-m1: diff
  • spyro-bloom on mtl-osx-m1: diff
  • spyro-depth on mtl-osx-m1: diff
  • ssbb-mod-lloyd on mtl-osx-m1: diff
  • ssbm-pointsize on mtl-osx-m1: diff
  • ss-map on mtl-osx-m1: diff
  • super-sluggers-white-out on mtl-osx-m1: diff
  • sw3-dt on mtl-osx-m1: diff
  • taiko-depth on mtl-osx-m1: diff
  • thps3-earlyz on mtl-osx-m1: diff
  • thps4-shadow on mtl-osx-m1: diff
  • tla-menu on mtl-osx-m1: diff
  • tos-invis-char on mtl-osx-m1: diff
  • tp-skin on mtl-osx-m1: diff
  • tsp3-pinkgrass on mtl-osx-m1: diff
  • vegas-party-depth on mtl-osx-m1: diff
  • viewitful-joe-distortion on mtl-osx-m1: diff
  • ww-song-of-passing on mtl-osx-m1: diff
  • xblade-bloom on mtl-osx-m1: diff
  • xenoblade-menu on mtl-osx-m1: diff
  • zelda1-vc on mtl-osx-m1: diff
  • ztp-grass on mtl-osx-m1: diff
  • zww-armos on mtl-osx-m1: diff
  • zww-water on mtl-osx-m1: diff
  • zww-waves on mtl-osx-m1: diff

automated-fifoci-reporter

@OatmealDome OatmealDome merged commit 7752e24 into dolphin-emu:master Jun 10, 2023
14 checks passed
@TellowKrinkle TellowKrinkle deleted the MTLParallelCompilation branch June 10, 2023 21:32
@kemenaran
Copy link
Contributor

This PR makes Dolphin crash when starting emulation, with the following error:

2023-11-22 16:28:51.725 Dolphin[36049:1724971] -[MTLIGAccelDevice setShouldMaximizeConcurrentCompilation:]: unrecognized selector sent to instance 0x7fdf40597000

  • Dolphin version: 19870
  • macOS version: 13.6.1
  • iGPU: Intel Iris with Metal 2 support

From this MoltenVK snippet, it seems that even on macOS > 13.3 the feature needs to be dynamically tested (which seems fine in this context).

I opened an issue to track this: https://bugs.dolphin-emu.org/issues/13404

@TellowKrinkle
Copy link
Contributor Author

TellowKrinkle commented Nov 23, 2023

MoltenVK always prefers respondsToSelector checks over version-based checks, and has the availability warnings disabled, if we used it as a reference we'd dynamically test everything.

Are you using OCLP? Can you get your actual CPU model with sysctl machdep.cpu.brand_string, there's a lot of different "Intel Iris with Metal 2 support"s

@kemenaran
Copy link
Contributor

machdep.cpu.brand_string: Intel(R) Core(TM) i7-4558U CPU @ 2.80GHz

And yes, that's using OCLP. I think Haswell GPUs are not natively supported on macOS >= 12, so the actual cause may be that the legacy driver bundled in OCLP does not implement the latest 13.3 improvements.

Continuing the discussion in #12311

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
4 participants