mirror of
https://github.com/mpv-player/mpv
synced 2025-03-11 08:37:59 +00:00
mac/vulkan: workaround for MoltenVK problem that causes flicker
MoltenVK itself tries to work around a supposedly Metal problem that itself causes flicker, black screens or broken rendering. it sets the drawableSize to 1x1 to forcefully complete the presentation. though if 1x1 resolution frame is presented it causes a visual flicker or rather a solid coloured frame. it causes even more problems since sometimes it does not reset the drawableSize to the proper resolution and keeps rendering everything in 1x1. work around this workaround by discarding drawableSize that are <=1 in any direction. Fixes #13505
This commit is contained in:
parent
665a472098
commit
6016423427
@ -20,6 +20,17 @@ import Cocoa
|
||||
class MetalLayer: CAMetalLayer {
|
||||
unowned var common: MacCommon
|
||||
|
||||
// workaround for a MoltenVK workaround that sets the drawableSize to 1x1 to forcefully complete
|
||||
// the presentation, this causes flicker and the drawableSize possibly staying at 1x1
|
||||
override var drawableSize: CGSize {
|
||||
get { return super.drawableSize }
|
||||
set {
|
||||
if Int(newValue.width) > 1 && Int(newValue.height) > 1 {
|
||||
super.drawableSize = newValue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init(common com: MacCommon) {
|
||||
common = com
|
||||
super.init()
|
||||
|
Loading…
Reference in New Issue
Block a user