Fix issue where immutable samplers are removed during descriptor update.
Suppress spurious debug message.
Minor syntax fix.
Update MoltenVK version to 1.0.41.
diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md
index 26e9a1c..590ce15 100644
--- a/Docs/Whats_New.md
+++ b/Docs/Whats_New.md
@@ -14,6 +14,15 @@
+MoltenVK 1.0.41
+---------------
+
+Released TBD
+
+- Fix issue where immutable samplers are removed during descriptor update.
+
+
+
MoltenVK 1.0.40
---------------
diff --git a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
index 078c134..f18bfaf 100644
--- a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
+++ b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
@@ -50,7 +50,7 @@
*/
#define MVK_VERSION_MAJOR 1
#define MVK_VERSION_MINOR 0
-#define MVK_VERSION_PATCH 40
+#define MVK_VERSION_PATCH 41
#define MVK_MAKE_VERSION(major, minor, patch) (((major) * 10000) + ((minor) * 100) + (patch))
#define MVK_VERSION MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm b/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm
index 3004ece..28d3b89 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm
@@ -189,7 +189,7 @@
[msl appendLineMVK];
[msl appendLineMVK: @"}"];
- MVKLogDebug("\n%s", msl.UTF8String);
+// MVKLogDebug("\n%s", msl.UTF8String);
return newMTLFunction(msl, funcName);
}
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm
index 74d0b4a..bcf712d 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm
@@ -782,21 +782,18 @@
switch (descriptorType) {
case VK_DESCRIPTOR_TYPE_SAMPLER:
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: {
- auto* oldSamp = _mvkSampler;
-
- const auto* pImgInfo = &get<VkDescriptorImageInfo>(pData, stride, srcIndex);
if (_hasDynamicSampler) {
+ auto* oldSamp = _mvkSampler;
+
+ const auto* pImgInfo = &get<VkDescriptorImageInfo>(pData, stride, srcIndex);
_mvkSampler = (MVKSampler*)pImgInfo->sampler;
if (_mvkSampler && _mvkSampler->getRequiresConstExprSampler()) {
_mvkSampler->reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkUpdateDescriptorSets(): Depth texture samplers using a compare operation can only be used as immutable samplers on this device.");
}
- } else {
- _mvkSampler = nullptr;
+
+ if (_mvkSampler) { _mvkSampler->retain(); }
+ if (oldSamp) { oldSamp->release(); }
}
-
- if (_mvkSampler) { _mvkSampler->retain(); }
- if (oldSamp) { oldSamp->release(); }
-
break;
}
@@ -816,7 +813,7 @@
case VK_DESCRIPTOR_TYPE_SAMPLER:
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: {
auto& imgInfo = pImageInfo[dstIndex];
- imgInfo.sampler = (VkSampler)_mvkSampler;
+ imgInfo.sampler = _hasDynamicSampler ? (VkSampler)_mvkSampler : nullptr;
break;
}
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm
index 8e220bb..a433703 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm
@@ -700,7 +700,7 @@
break;
}
}
- }
+ }
const void* pData = getWriteParameters(pDescWrite->descriptorType, pDescWrite->pImageInfo,
pDescWrite->pBufferInfo, pDescWrite->pTexelBufferView,