Add support for VK_EXT_pipeline_protected_access

This commit is contained in:
baldurk
2025-08-20 10:12:40 +01:00
parent d78e44688c
commit cba07ed3d5
6 changed files with 37 additions and 5 deletions
+1 -1
View File
@@ -87,6 +87,7 @@ Maintainers can update this file by updating vk.xml in this folder and running `
* `VK_EXT_pci_bus_info`
* `VK_EXT_pipeline_creation_cache_control`
* `VK_EXT_pipeline_creation_feedback`
* `VK_EXT_pipeline_protected_access`
* `VK_EXT_pipeline_robustness`
* `VK_EXT_post_depth_coverage`
* `VK_EXT_present_mode_fifo_latest_ready`
@@ -309,7 +310,6 @@ The portability subset is only relevant on mac, which is not a supported platfor
* `VK_EXT_opacity_micromap`
* `VK_EXT_physical_device_drm`
* `VK_EXT_pipeline_library_group_handles`
* `VK_EXT_pipeline_protected_access`
* `VK_EXT_shader_float8`
* `VK_EXT_shader_module_identifier`
* `VK_EXT_shader_replicated_composites`
+2
View File
@@ -1755,6 +1755,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePerformanceQueryFeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePerformanceQueryPropertiesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePipelineCreationCacheControlFeatures);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePipelineProtectedAccessFeatures);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePipelineRobustnessFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePipelineRobustnessPropertiesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePointClippingProperties);
@@ -2276,6 +2277,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePerformanceQueryFeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePerformanceQueryPropertiesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePipelineCreationCacheControlFeatures);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePipelineProtectedAccessFeatures);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePipelineRobustnessFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePipelineRobustnessPropertiesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePointClippingProperties);
+4
View File
@@ -1278,6 +1278,10 @@ static const VkExtensionProperties supportedExtensions[] = {
VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME,
VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION,
},
{
VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME,
VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION,
},
{
VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME,
VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION,
+2 -1
View File
@@ -443,6 +443,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
VkPhysicalDevicePipelineCreationCacheControlFeatures); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, \
VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR) \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES, \
VkPhysicalDevicePipelineProtectedAccessFeatures) \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES, \
VkPhysicalDevicePipelineRobustnessFeatures) \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES, \
@@ -1237,7 +1239,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV: \
+21 -3
View File
@@ -853,6 +853,10 @@ SERIALISE_VK_HANDLES();
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO, \
VkPipelineCreationFeedbackCreateInfo) \
\
/* VK_EXT_pipeline_protected_access */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES, \
VkPhysicalDevicePipelineProtectedAccessFeatures) \
\
/* VK_EXT_pipeline_robustness */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO, VkPipelineRobustnessCreateInfo) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES, \
@@ -1903,9 +1907,6 @@ SERIALISE_VK_HANDLES();
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT) \
\
/* VK_EXT_pipeline_protected_access */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES) \
\
/* VK_EXT_shader_float8 */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT) \
\
@@ -10592,6 +10593,22 @@ void Deserialise(const VkPipelineCreationFeedbackCreateInfo &el)
delete[] el.pPipelineStageCreationFeedbacks;
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDevicePipelineProtectedAccessFeatures &el)
{
RDCASSERT(ser.IsReading() ||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(pipelineProtectedAccess);
}
template <>
void Deserialise(const VkPhysicalDevicePipelineProtectedAccessFeatures &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPipelineRobustnessCreateInfo &el)
{
@@ -14682,6 +14699,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePerformanceQueryFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePerformanceQueryPropertiesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePipelineCreationCacheControlFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePipelineProtectedAccessFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePipelineRobustnessFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePipelineRobustnessProperties);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePointClippingProperties);
@@ -3578,6 +3578,13 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
CHECK_PHYS_EXT_FEATURE(pipelineRobustness);
}
END_PHYS_EXT_CHECK();
BEGIN_PHYS_EXT_CHECK(VkPhysicalDevicePipelineProtectedAccessFeatures,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES);
{
CHECK_PHYS_EXT_FEATURE(pipelineProtectedAccess);
}
END_PHYS_EXT_CHECK();
}
if(availFeatures.depthClamp)