From 19f034e8182d566d0defb8a895fe067769686f6e Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Sun, 4 Jul 2021 20:35:56 +0900 Subject: [PATCH] internal/graphicsdriver/metal: Refactoring --- internal/graphicsdriver/metal/graphics.go | 54 ++++++++++++----------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/internal/graphicsdriver/metal/graphics.go b/internal/graphicsdriver/metal/graphics.go index b1459e4e2..e3ab0c847 100644 --- a/internal/graphicsdriver/metal/graphics.go +++ b/internal/graphicsdriver/metal/graphics.go @@ -826,33 +826,35 @@ func (g *Graphics) HasHighPrecisionFloat() bool { } func (g *Graphics) MaxImageSize() int { - if g.maxImageSize == 0 { + if g.maxImageSize != 0 { + return g.maxImageSize + } + + g.maxImageSize = 4096 + // https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf + switch { + case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily5_v1): + g.maxImageSize = 16384 + case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily4_v1): + g.maxImageSize = 16384 + case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily3_v1): + g.maxImageSize = 16384 + case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily2_v2): + g.maxImageSize = 8192 + case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily2_v1): g.maxImageSize = 4096 - // https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf - switch { - case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily5_v1): - g.maxImageSize = 16384 - case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily4_v1): - g.maxImageSize = 16384 - case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily3_v1): - g.maxImageSize = 16384 - case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily2_v2): - g.maxImageSize = 8192 - case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily2_v1): - g.maxImageSize = 4096 - case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily1_v2): - g.maxImageSize = 8192 - case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily1_v1): - g.maxImageSize = 4096 - case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_tvOS_GPUFamily2_v1): - g.maxImageSize = 16384 - case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_tvOS_GPUFamily1_v1): - g.maxImageSize = 8192 - case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_macOS_GPUFamily1_v1): - g.maxImageSize = 16384 - default: - panic("metal: there is no supported feature set") - } + case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily1_v2): + g.maxImageSize = 8192 + case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_iOS_GPUFamily1_v1): + g.maxImageSize = 4096 + case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_tvOS_GPUFamily2_v1): + g.maxImageSize = 16384 + case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_tvOS_GPUFamily1_v1): + g.maxImageSize = 8192 + case g.view.getMTLDevice().SupportsFeatureSet(mtl.FeatureSet_macOS_GPUFamily1_v1): + g.maxImageSize = 16384 + default: + panic("metal: there is no supported feature set") } return g.maxImageSize }