macOS/iOS fixes plus other generic fixes for clang and validation warnings (#1117)
* Fix clang Objective-C++ flags for macOS command line builds * Fix getAssetPath() and getShaderBasePath() for macOS command line builds * Protect debugUtilsMessageCallback() from failing when pMessageIdName is NULL * Fix a few clang function override and mismatched type warnings * Fix validation layer warnings on exit for computeraytracing example * Fix regression in text visibility toggle for textOverlay example * Support VK_USE_PLATFORM_METAL_EXT vs. deprecated VK_USE_PLATFORM_MACOS_MVK / DVK_USE_PLATFORM_IOS_MVK * Check dynamic state features before enabling capabilities in dynamicstate example * Fix vkCmdDraw() vertexCount argument (PARTICLE_COUNT) in particlesystem example * Update examples list and restore benchmarking script (to top level) * Fix validation warning in descriptorindexing example * Fix device max recursion depth validation warnings in ray tracing examples * Fix OpenMP build settings for texture3d example on all platforms * Update and simplify build instructions for macOS * Update CI script with correct library path for libomp on macOS x86_64 * Update CI scipt to install libomp prior to macOS builds * Trying one more time to get the CI script working for macOS libomp * Fix vertexCount argument using calculated size in particlesystem example * Fix combined image descriptor offset calculation in descriptorbuffer example * macOS: Support non-system level Vulkan SDK installs, with fallback to MoltenVK library
This commit is contained in:
parent
4a0c8b8f23
commit
bdfd4709ff
29 changed files with 320 additions and 88 deletions
|
|
@ -94,23 +94,35 @@ public:
|
|||
|
||||
void getEnabledExtensions()
|
||||
{
|
||||
// Get the full list of extended dynamic state features supported by the device
|
||||
extendedDynamicStateFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
|
||||
extendedDynamicStateFeaturesEXT.pNext = &extendedDynamicState2FeaturesEXT;
|
||||
extendedDynamicState2FeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT;
|
||||
extendedDynamicState2FeaturesEXT.pNext = &extendedDynamicState3FeaturesEXT;
|
||||
extendedDynamicState3FeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT;
|
||||
extendedDynamicState3FeaturesEXT.pNext = nullptr;
|
||||
|
||||
VkPhysicalDeviceFeatures2 physicalDeviceFeatures2;
|
||||
physicalDeviceFeatures2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
|
||||
physicalDeviceFeatures2.pNext = &extendedDynamicStateFeaturesEXT;
|
||||
vkGetPhysicalDeviceFeatures2(physicalDevice, &physicalDeviceFeatures2);
|
||||
|
||||
// Check what dynamic states are supported by the current implementation
|
||||
hasDynamicState = vulkanDevice->extensionSupported(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
|
||||
hasDynamicState2 = vulkanDevice->extensionSupported(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
|
||||
hasDynamicState3 = vulkanDevice->extensionSupported(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME);
|
||||
// Checking for available features is probably sufficient, but retained redundant extension checks for clarity and consistency
|
||||
hasDynamicState = vulkanDevice->extensionSupported(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME) && extendedDynamicStateFeaturesEXT.extendedDynamicState;
|
||||
hasDynamicState2 = vulkanDevice->extensionSupported(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME) && extendedDynamicState2FeaturesEXT.extendedDynamicState2;
|
||||
hasDynamicState3 = vulkanDevice->extensionSupported(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME) && extendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendEnable && extendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendEquation;
|
||||
hasDynamicVertexState = vulkanDevice->extensionSupported(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
|
||||
|
||||
// Enable dynamic state extensions if present. This function is called after physical and before logical device creation, so we can enabled extensions based on a list of supported extensions
|
||||
if (vulkanDevice->extensionSupported(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME)) {
|
||||
if (hasDynamicState) {
|
||||
enabledDeviceExtensions.push_back(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
|
||||
extendedDynamicStateFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
|
||||
extendedDynamicStateFeaturesEXT.extendedDynamicState = VK_TRUE;
|
||||
extendedDynamicStateFeaturesEXT.pNext = nullptr;
|
||||
deviceCreatepNextChain = &extendedDynamicStateFeaturesEXT;
|
||||
}
|
||||
if (vulkanDevice->extensionSupported(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME)) {
|
||||
if (hasDynamicState2) {
|
||||
enabledDeviceExtensions.push_back(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
|
||||
extendedDynamicState2FeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT;
|
||||
extendedDynamicState2FeaturesEXT.extendedDynamicState2 = VK_TRUE;
|
||||
extendedDynamicState2FeaturesEXT.pNext = nullptr;
|
||||
if (hasDynamicState) {
|
||||
extendedDynamicStateFeaturesEXT.pNext = &extendedDynamicState2FeaturesEXT;
|
||||
}
|
||||
|
|
@ -118,11 +130,8 @@ public:
|
|||
deviceCreatepNextChain = &extendedDynamicState2FeaturesEXT;
|
||||
}
|
||||
}
|
||||
if (vulkanDevice->extensionSupported(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME)) {
|
||||
if (hasDynamicState3) {
|
||||
enabledDeviceExtensions.push_back(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME);
|
||||
extendedDynamicState3FeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT;
|
||||
extendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendEnable = VK_TRUE;
|
||||
extendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendEquation = VK_TRUE;
|
||||
if (hasDynamicState2) {
|
||||
extendedDynamicState2FeaturesEXT.pNext = &extendedDynamicState3FeaturesEXT;
|
||||
}
|
||||
|
|
@ -131,7 +140,7 @@ public:
|
|||
}
|
||||
|
||||
}
|
||||
if (vulkanDevice->extensionSupported(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME)) {
|
||||
if (hasDynamicVertexState) {
|
||||
enabledDeviceExtensions.push_back(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
|
||||
}
|
||||
}
|
||||
|
|
@ -377,7 +386,7 @@ public:
|
|||
rebuildCB |= overlay->checkBox("Depth test", &dynamicState.depthTest);
|
||||
rebuildCB |= overlay->checkBox("Depth write", &dynamicState.depthWrite);
|
||||
} else {
|
||||
overlay->text("Extension not supported");
|
||||
overlay->text("Extension or features not supported");
|
||||
}
|
||||
}
|
||||
if (overlay->header("Dynamic state 2")) {
|
||||
|
|
@ -385,7 +394,7 @@ public:
|
|||
rebuildCB |= overlay->checkBox("Rasterizer discard", &dynamicState2.rasterizerDiscardEnable);
|
||||
}
|
||||
else {
|
||||
overlay->text("Extension not supported");
|
||||
overlay->text("Extension or features not supported");
|
||||
}
|
||||
}
|
||||
if (overlay->header("Dynamic state 3")) {
|
||||
|
|
@ -394,7 +403,7 @@ public:
|
|||
rebuildCB |= overlay->colorPicker("Clear color", clearColor);
|
||||
}
|
||||
else {
|
||||
overlay->text("Extension not supported");
|
||||
overlay->text("Extension or features not supported");
|
||||
}
|
||||
}
|
||||
if (rebuildCB) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue