From 592cec58fd368daf3391cae3e4848b09276c9c17 Mon Sep 17 00:00:00 2001 From: Chip Davis Date: Thu, 28 Jan 2021 20:05:58 -0600 Subject: [PATCH 1/2] MVKPhysicalDevice: Require Mac family 2 for render without attachments. We've seen reports that rendering without attachments doesn't work on family 1 GPUs. Disable it for them. --- MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm index bdcbe15a..ea3f6937 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm @@ -1412,13 +1412,13 @@ void MVKPhysicalDevice::initMetalFeatures() { _metalFeatures.mslVersionEnum = MTLLanguageVersion2_2; _metalFeatures.maxQueryBufferSize = (256 * KIBI); _metalFeatures.native3DCompressedTextures = true; - _metalFeatures.renderWithoutAttachments = true; if ( mvkOSVersionIsAtLeast(mvkMakeOSVersion(10, 15, 6)) ) { _metalFeatures.sharedLinearTextures = true; } if (supportsMTLGPUFamily(Mac2)) { _metalFeatures.nativeTextureSwizzle = true; _metalFeatures.placementHeaps = mvkGetMVKConfiguration()->useMTLHeap; + _metalFeatures.renderWithoutAttachments = true; } } From 24c1b7276e61056be1a532bc15f6b860a6c380bd Mon Sep 17 00:00:00 2001 From: Chip Davis Date: Thu, 28 Jan 2021 22:01:13 -0600 Subject: [PATCH 2/2] MVKPhysicalDevice: Require Mac family 2 for quad-scope permutation. According to the Metal Feature Set Tables, only family 2 supports quad-scope permutation. We've been seeing issues with SIMD-group functions on family 1 hardware, so for now I'm moving quad-group permutation to family 2. --- MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm index ea3f6937..5dde5d08 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm @@ -1396,7 +1396,6 @@ void MVKPhysicalDevice::initMetalFeatures() { _metalFeatures.multisampleArrayTextures = true; _metalFeatures.events = true; _metalFeatures.textureBuffers = true; - _metalFeatures.quadPermute = true; _metalFeatures.simdPermute = true; } @@ -1405,6 +1404,7 @@ void MVKPhysicalDevice::initMetalFeatures() { _metalFeatures.stencilFeedback = true; _metalFeatures.depthResolve = true; _metalFeatures.stencilResolve = true; + _metalFeatures.quadPermute = true; _metalFeatures.simdReduction = true; }