-
Notifications
You must be signed in to change notification settings - Fork 2.9k
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
mpv crashed when switching between integrated & discrete display adapter under OS X El Capitan #2371
Comments
This crashes deep within Apple code, so I'm just going to blame Apple. If anyone finds evidence that mpv does something not right, we'll fix it (if we know what it is). |
The gl->Flush() is not present anymore in a recent copy of vo_opengl.c, so I wonder if this "bug" still occurs. I could not reproduce it, albeit not with Photoshop anyway but with forced settings using gfxCardSettings. Switching from integrated to discrete and back to integrated while playing a clip seems to work fine:
The new code adds the fencing mechanism, and if it's translated into the apple fencing (https://www.opengl.org/registry/specs/APPLE/fence.txt), then it ought to do the right thing with regard to the pipeline load, even though the pipeline has switched between one GPU and the other one (combined GPU in MBP's). The earlier glFlush() probably lead to the crash in former versions of the code. |
I replied too early, got the crash after fast switching between integrated and discrete GPU using gfxCardStatus v2.3:
Most probably mpv does not update the GL context when the dynamic GPU switching happens, so further calls inside the vo driver code are from a GL client point of view sent to a non existing GL server context: https://developer.apple.com/library/content/technotes/tn2229/_index.html The way I understood the code, addressing this would probably require a major rewrite of the GL context code inside mpv. Having only looked at the code for a brief amount of time, I could be entirely wrong. |
i can't really test this on my mid 2010 MBP since mpv always forces it to the dedicated GPU. so i was wondering if this fixes the issue? this is just a test so it still needs to be properly done. |
@Akemi I can't tell if it's the patch, but so far no crash anymore. |
thx for the reply. i hope i can get some more input on that. |
My bad, still crash
|
this is another problem since it crashes in a different part of the code now. wonder what exactly happens now. |
Alright, great timing. I was about to binge a lot of episodes! |
The overall performance when resizing and exiting fullscreen has increased but I still encountered a segfault.
|
okay this problem is related to the one i thought was fixed with git master. i just mitigated the issue but didn't eliminate the cause of it. now it just shows at a different place in the code. |
i pushed a fix to the same cocoa_gpu branch. |
Shit is 🔥 dawg
|
i am poking in the dark here now but could you try with |
I'll try What you did so far helped reduce the frequency of crashes which is an obvious enhancement thank you! From my side I'm still trying to understand how to reproduce the crash at will. |
so for you, as opposed to the other two people here on the issue, you could never just reproduce it by switching the GPU? |
never isn't quite right. I had mpv crash crash multiple times when closing photoshop but since I applied your patches I can't get it to crash voluntarily by launching and closing photoshop. I thought the issue was fixed but it just crashed again 2 hours ago while mpv was the only application running. |
FWIW it's the same for me. On my machine mpv always run on the iGPU, so I don't encounter this issue too much, but if something triggers the GPU switch while mpv is open, sometimes it works fine, sometimes it crashes. |
i see. i will look at it a bit more when i get around to it. there are still a few things i want to try. |
25 hours later and I still haven't encountered a segfault. One kernel panic related to mpv though. No sure if it's caused by your patches. I hope you got it this time. |
Now it's 2 kernel panics. |
i don't think my patches can cause a kernel panic and this is also kinda impossible for me to debug. i am just assuming here but maybe we have 2 different problems here. one is the GPU switching, which might be fixed with my patches and another problem that makes mpv segfault/causes kernel panics for you while mpv just runs. i am saying you since the other two people only reported segfaults on GPU switching. i am kinda curious if my patches fix the GPU switching issue for others who had that issue and if they also get kernel panics. since i never experienced mpv causing any kernel panics ever. |
Not a single segfault or kernel panic since I'm forcing the discrete GPU. IOKit didn't mess with me once. |
Oh I got a new clue! mpv just crashed right now when I clicked on the "Normal Size" option in the menubar.
|
yeah this one is fixed, in the cocoa_gpu branch and still needs merging into master and that forcegpu PR. i will do something about this tonight. gonna let you know when it's done. sry about that. |
okay i merged PR #4181 and the fix for the above segfault. |
👌 |
So far, switching between integrated and discrete GPU would cause the kernel to kill mpv due to an indecipherable buffer error. The technical note TN2229 from Apple recommends to enable OpenGL Offline Renderers for every Mac with more GPUs than displays to handle the switch between GPU. By ordering the array from the least commonly rejected to the most, we can sequentially remove PixelFormat attributes to fit the host. Fixes mpv-player#2371
So far, switching between integrated and discrete GPU would cause the kernel to kill mpv due to an indecipherable buffer error. The technical note TN2229 from Apple recommends to enable OpenGL Offline Renderers for every Mac with more GPUs than displays to handle the switch between GPU. By ordering the array from the least commonly rejected to the most, we can sequentially remove PixelFormat attributes to fit the host. Fixes mpv-player#2371
mpv crashed when switching between integrated & discrete display adapter: when playing a movie, I shut down Photoshop CC, then OS X switched to the integrated display adapter, mpv crahsed immediately.
The crash can be reproduced every time when the display card is switched.
The line 162 in
vo_opengl.c
is the firstFlush()
call.The text was updated successfully, but these errors were encountered: