Skip to content

Commit 5db92d3

Browse files
committed
Disabled extensions not supported by llvmpipe
1 parent 20e61bd commit 5db92d3

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

src/nbl/video/CVulkanPhysicalDevice.cpp

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1892,6 +1892,10 @@ core::smart_refctd_ptr<ILogicalDevice> CVulkanPhysicalDevice::createLogicalDevic
18921892
extensionStrings[i++] = feature.c_str();
18931893
}
18941894

1895+
// remove inheritedQueries since llvmpipe doesn't support it
1896+
vk_deviceFeatures2.features.inheritedQueries = VK_FALSE;
1897+
//vk_deviceFeatures2.features = VkPhysicalDeviceFeatures{};
1898+
18951899
// Create Device
18961900
VkDeviceCreateInfo vk_createInfo = { VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO };
18971901
vk_createInfo.pNext = &vk_deviceFeatures2;
@@ -1913,7 +1917,32 @@ core::smart_refctd_ptr<ILogicalDevice> CVulkanPhysicalDevice::createLogicalDevic
19131917
}
19141918
vk_createInfo.queueCreateInfoCount = queueCreateInfos.size();
19151919
vk_createInfo.pQueueCreateInfos = queueCreateInfos.data();
1916-
1920+
1921+
// erase extensions not supported by llvm
1922+
{
1923+
core::vector<const char*> llvmUnsupportedExtensions = {
1924+
"VK_NV_shader_image_footprint",
1925+
"VK_KHR_fragment_shader_barycentric",
1926+
"VK_EXT_conservative_rasterization",
1927+
"VK_KHR_external_memory_win32",
1928+
"VK_KHR_shader_subgroup_uniform_control_flow",
1929+
"VK_EXT_pci_bus_info",
1930+
"VK_KHR_external_fence_win32",
1931+
"VK_KHR_external_semaphore_win32",
1932+
"VK_KHR_win32_keyed_mutex",
1933+
"VK_EXT_discard_rectangles"
1934+
"VK_NV_compute_shader_derivatives",
1935+
"VK_NV_shader_sm_builtins"
1936+
};
1937+
1938+
for (const char* extension : llvmUnsupportedExtensions)
1939+
{
1940+
auto it = std::find_if(extensionStrings.begin(), extensionStrings.end(), [extension](const char* s) { return std::strcmp(s, extension) == 0; });
1941+
if(it != extensionStrings.end())
1942+
extensionStrings.erase(it);
1943+
}
1944+
}
1945+
19171946
vk_createInfo.enabledExtensionCount = static_cast<uint32_t>(extensionStrings.size());
19181947
vk_createInfo.ppEnabledExtensionNames = extensionStrings.data();
19191948

0 commit comments

Comments
 (0)