summaryrefslogtreecommitdiffstats
path: root/tools/gfx
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-06-01 19:26:14 -0700
committerGitHub <noreply@github.com>2024-06-01 19:26:14 -0700
commitc5a453e56985022deb820cbbb2ff5cd6a8347e34 (patch)
tree019c81e8bfcc099f2ff17c1a58f625cf6a527d47 /tools/gfx
parent5799281bda2f9a174b825de4058c5e8c9aa5b27f (diff)
Support different SPIRV versions. (#4254)
Diffstat (limited to 'tools/gfx')
-rw-r--r--tools/gfx/vulkan/vk-api.h4
-rw-r--r--tools/gfx/vulkan/vk-device.cpp11
2 files changed, 15 insertions, 0 deletions
diff --git a/tools/gfx/vulkan/vk-api.h b/tools/gfx/vulkan/vk-api.h
index 04d9d066f..79d4f8cfd 100644
--- a/tools/gfx/vulkan/vk-api.h
+++ b/tools/gfx/vulkan/vk-api.h
@@ -311,6 +311,10 @@ struct VulkanExtendedFeatureProperties
VkPhysicalDeviceVulkan12Features vulkan12Features = {
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES
};
+
+ VkPhysicalDeviceComputeShaderDerivativesFeaturesNV computeShaderDerivativesFeatures = {
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV
+ };
};
struct VulkanApi
diff --git a/tools/gfx/vulkan/vk-device.cpp b/tools/gfx/vulkan/vk-device.cpp
index 8ad941ead..ad0924294 100644
--- a/tools/gfx/vulkan/vk-device.cpp
+++ b/tools/gfx/vulkan/vk-device.cpp
@@ -508,6 +508,10 @@ Result DeviceImpl::initVulkanInstanceAndDevice(
extendedFeatures.fragmentShadingRateFeatures.pNext = deviceFeatures2.pNext;
deviceFeatures2.pNext = &extendedFeatures.fragmentShadingRateFeatures;
+ // Compute Quad Derivative features
+ extendedFeatures.computeShaderDerivativesFeatures.pNext = deviceFeatures2.pNext;
+ deviceFeatures2.pNext = &extendedFeatures.computeShaderDerivativesFeatures;
+
if (VK_MAKE_VERSION(majorVersion, minorVersion, 0) >= VK_API_VERSION_1_2)
{
extendedFeatures.vulkan12Features.pNext = deviceFeatures2.pNext;
@@ -602,6 +606,13 @@ Result DeviceImpl::initVulkanInstanceAndDevice(
"extended-dynamic-states"
);
+ SIMPLE_EXTENSION_FEATURE(
+ extendedFeatures.computeShaderDerivativesFeatures,
+ computeDerivativeGroupQuads,
+ VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME,
+ "compute-shader-derivative"
+ );
+
if (extendedFeatures.accelerationStructureFeatures.accelerationStructure
&& extensionNames.contains(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME)
&& extensionNames.contains(VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME))