| /* WARNING: This is auto-generated file. Do not modify, since changes will |
| * be lost! Modify the generating script instead. |
| * This file was generated by /scripts/gen_framework.py |
| */ |
| |
| bool canUseFeaturesStruct (const vector<VkExtensionProperties>& deviceExtensions, uint32_t usedApiVersion, const char* extension) |
| { |
| return (isExtensionStructSupported(deviceExtensions, RequiredExtension(extension)) |
| || isCoreDeviceExtension(usedApiVersion, extension)); |
| } |
| |
| bool checkMandatoryFeatures(const vkt::Context& context) |
| { |
| if (!context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2")) |
| TCU_THROW(NotSupportedError, "Extension VK_KHR_get_physical_device_properties2 is not present"); |
| |
| VkPhysicalDevice physicalDevice = context.getPhysicalDevice(); |
| const InstanceInterface& vki = context.getInstanceInterface(); |
| const vector<VkExtensionProperties> deviceExtensions = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL); |
| const uint32_t usedApiVersion = context.getUsedApiVersion(); |
| |
| tcu::TestLog& log = context.getTestContext().getLog(); |
| vk::VkPhysicalDeviceFeatures2 coreFeatures; |
| deMemset(&coreFeatures, 0, sizeof(coreFeatures)); |
| coreFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; |
| void** nextPtr = &coreFeatures.pNext; |
| |
| vk::VkPhysicalDevice16BitStorageFeatures physicalDevice16BitStorageFeatures; |
| deMemset(&physicalDevice16BitStorageFeatures, 0, sizeof(physicalDevice16BitStorageFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_16bit_storage") ) |
| { |
| physicalDevice16BitStorageFeatures.sType = getStructureType<VkPhysicalDevice16BitStorageFeatures>(); |
| *nextPtr = &physicalDevice16BitStorageFeatures; |
| nextPtr = &physicalDevice16BitStorageFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDevice4444FormatsFeaturesEXT physicalDevice4444FormatsFeaturesEXT; |
| deMemset(&physicalDevice4444FormatsFeaturesEXT, 0, sizeof(physicalDevice4444FormatsFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_4444_formats") ) |
| { |
| physicalDevice4444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT>(); |
| *nextPtr = &physicalDevice4444FormatsFeaturesEXT; |
| nextPtr = &physicalDevice4444FormatsFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDevice8BitStorageFeatures physicalDevice8BitStorageFeatures; |
| deMemset(&physicalDevice8BitStorageFeatures, 0, sizeof(physicalDevice8BitStorageFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_8bit_storage") ) |
| { |
| physicalDevice8BitStorageFeatures.sType = getStructureType<VkPhysicalDevice8BitStorageFeatures>(); |
| *nextPtr = &physicalDevice8BitStorageFeatures; |
| nextPtr = &physicalDevice8BitStorageFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDeviceAccelerationStructureFeaturesKHR physicalDeviceAccelerationStructureFeaturesKHR; |
| deMemset(&physicalDeviceAccelerationStructureFeaturesKHR, 0, sizeof(physicalDeviceAccelerationStructureFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_acceleration_structure") ) |
| { |
| physicalDeviceAccelerationStructureFeaturesKHR.sType = getStructureType<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(); |
| *nextPtr = &physicalDeviceAccelerationStructureFeaturesKHR; |
| nextPtr = &physicalDeviceAccelerationStructureFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceAddressBindingReportFeaturesEXT physicalDeviceAddressBindingReportFeaturesEXT; |
| deMemset(&physicalDeviceAddressBindingReportFeaturesEXT, 0, sizeof(physicalDeviceAddressBindingReportFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_device_address_binding_report") ) |
| { |
| physicalDeviceAddressBindingReportFeaturesEXT.sType = getStructureType<VkPhysicalDeviceAddressBindingReportFeaturesEXT>(); |
| *nextPtr = &physicalDeviceAddressBindingReportFeaturesEXT; |
| nextPtr = &physicalDeviceAddressBindingReportFeaturesEXT.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; |
| deMemset(&physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT, 0, sizeof(physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_attachment_feedback_loop_dynamic_state") ) |
| { |
| physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.sType = getStructureType<VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT>(); |
| *nextPtr = &physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; |
| nextPtr = &physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; |
| deMemset(&physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, 0, sizeof(physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_attachment_feedback_loop_layout") ) |
| { |
| physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.sType = getStructureType<VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>(); |
| *nextPtr = &physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; |
| nextPtr = &physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceBorderColorSwizzleFeaturesEXT physicalDeviceBorderColorSwizzleFeaturesEXT; |
| deMemset(&physicalDeviceBorderColorSwizzleFeaturesEXT, 0, sizeof(physicalDeviceBorderColorSwizzleFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_border_color_swizzle") ) |
| { |
| physicalDeviceBorderColorSwizzleFeaturesEXT.sType = getStructureType<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT>(); |
| *nextPtr = &physicalDeviceBorderColorSwizzleFeaturesEXT; |
| nextPtr = &physicalDeviceBorderColorSwizzleFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceBufferDeviceAddressFeatures physicalDeviceBufferDeviceAddressFeatures; |
| deMemset(&physicalDeviceBufferDeviceAddressFeatures, 0, sizeof(physicalDeviceBufferDeviceAddressFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_buffer_device_address") ) |
| { |
| physicalDeviceBufferDeviceAddressFeatures.sType = getStructureType<VkPhysicalDeviceBufferDeviceAddressFeatures>(); |
| *nextPtr = &physicalDeviceBufferDeviceAddressFeatures; |
| nextPtr = &physicalDeviceBufferDeviceAddressFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT physicalDeviceColorWriteEnableFeaturesEXT; |
| deMemset(&physicalDeviceColorWriteEnableFeaturesEXT, 0, sizeof(physicalDeviceColorWriteEnableFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_color_write_enable") ) |
| { |
| physicalDeviceColorWriteEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(); |
| *nextPtr = &physicalDeviceColorWriteEnableFeaturesEXT; |
| nextPtr = &physicalDeviceColorWriteEnableFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT physicalDeviceConditionalRenderingFeaturesEXT; |
| deMemset(&physicalDeviceConditionalRenderingFeaturesEXT, 0, sizeof(physicalDeviceConditionalRenderingFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_conditional_rendering") ) |
| { |
| physicalDeviceConditionalRenderingFeaturesEXT.sType = getStructureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(); |
| *nextPtr = &physicalDeviceConditionalRenderingFeaturesEXT; |
| nextPtr = &physicalDeviceConditionalRenderingFeaturesEXT.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV physicalDeviceCoverageReductionModeFeaturesNV; |
| deMemset(&physicalDeviceCoverageReductionModeFeaturesNV, 0, sizeof(physicalDeviceCoverageReductionModeFeaturesNV)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_NV_coverage_reduction_mode") ) |
| { |
| physicalDeviceCoverageReductionModeFeaturesNV.sType = getStructureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(); |
| *nextPtr = &physicalDeviceCoverageReductionModeFeaturesNV; |
| nextPtr = &physicalDeviceCoverageReductionModeFeaturesNV.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceDepthBiasControlFeaturesEXT physicalDeviceDepthBiasControlFeaturesEXT; |
| deMemset(&physicalDeviceDepthBiasControlFeaturesEXT, 0, sizeof(physicalDeviceDepthBiasControlFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_bias_control") ) |
| { |
| physicalDeviceDepthBiasControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthBiasControlFeaturesEXT>(); |
| *nextPtr = &physicalDeviceDepthBiasControlFeaturesEXT; |
| nextPtr = &physicalDeviceDepthBiasControlFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceDepthClampZeroOneFeaturesEXT physicalDeviceDepthClampZeroOneFeaturesEXT; |
| deMemset(&physicalDeviceDepthClampZeroOneFeaturesEXT, 0, sizeof(physicalDeviceDepthClampZeroOneFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_clamp_zero_one") ) |
| { |
| physicalDeviceDepthClampZeroOneFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClampZeroOneFeaturesEXT>(); |
| *nextPtr = &physicalDeviceDepthClampZeroOneFeaturesEXT; |
| nextPtr = &physicalDeviceDepthClampZeroOneFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceDepthClipControlFeaturesEXT physicalDeviceDepthClipControlFeaturesEXT; |
| deMemset(&physicalDeviceDepthClipControlFeaturesEXT, 0, sizeof(physicalDeviceDepthClipControlFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_clip_control") ) |
| { |
| physicalDeviceDepthClipControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClipControlFeaturesEXT>(); |
| *nextPtr = &physicalDeviceDepthClipControlFeaturesEXT; |
| nextPtr = &physicalDeviceDepthClipControlFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT physicalDeviceDepthClipEnableFeaturesEXT; |
| deMemset(&physicalDeviceDepthClipEnableFeaturesEXT, 0, sizeof(physicalDeviceDepthClipEnableFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_clip_enable") ) |
| { |
| physicalDeviceDepthClipEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(); |
| *nextPtr = &physicalDeviceDepthClipEnableFeaturesEXT; |
| nextPtr = &physicalDeviceDepthClipEnableFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceDescriptorBufferFeaturesEXT physicalDeviceDescriptorBufferFeaturesEXT; |
| deMemset(&physicalDeviceDescriptorBufferFeaturesEXT, 0, sizeof(physicalDeviceDescriptorBufferFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_descriptor_buffer") ) |
| { |
| physicalDeviceDescriptorBufferFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDescriptorBufferFeaturesEXT>(); |
| *nextPtr = &physicalDeviceDescriptorBufferFeaturesEXT; |
| nextPtr = &physicalDeviceDescriptorBufferFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceDescriptorIndexingFeatures physicalDeviceDescriptorIndexingFeatures; |
| deMemset(&physicalDeviceDescriptorIndexingFeatures, 0, sizeof(physicalDeviceDescriptorIndexingFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_descriptor_indexing") ) |
| { |
| physicalDeviceDescriptorIndexingFeatures.sType = getStructureType<VkPhysicalDeviceDescriptorIndexingFeatures>(); |
| *nextPtr = &physicalDeviceDescriptorIndexingFeatures; |
| nextPtr = &physicalDeviceDescriptorIndexingFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR physicalDeviceDynamicRenderingLocalReadFeaturesKHR; |
| deMemset(&physicalDeviceDynamicRenderingLocalReadFeaturesKHR, 0, sizeof(physicalDeviceDynamicRenderingLocalReadFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_dynamic_rendering_local_read") ) |
| { |
| physicalDeviceDynamicRenderingLocalReadFeaturesKHR.sType = getStructureType<VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR>(); |
| *nextPtr = &physicalDeviceDynamicRenderingLocalReadFeaturesKHR; |
| nextPtr = &physicalDeviceDynamicRenderingLocalReadFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; |
| deMemset(&physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT, 0, sizeof(physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_dynamic_rendering_unused_attachments") ) |
| { |
| physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT>(); |
| *nextPtr = &physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; |
| nextPtr = &physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT physicalDeviceExtendedDynamicState2FeaturesEXT; |
| deMemset(&physicalDeviceExtendedDynamicState2FeaturesEXT, 0, sizeof(physicalDeviceExtendedDynamicState2FeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_extended_dynamic_state2") ) |
| { |
| physicalDeviceExtendedDynamicState2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(); |
| *nextPtr = &physicalDeviceExtendedDynamicState2FeaturesEXT; |
| nextPtr = &physicalDeviceExtendedDynamicState2FeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceExtendedDynamicState3FeaturesEXT physicalDeviceExtendedDynamicState3FeaturesEXT; |
| deMemset(&physicalDeviceExtendedDynamicState3FeaturesEXT, 0, sizeof(physicalDeviceExtendedDynamicState3FeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_extended_dynamic_state3") ) |
| { |
| physicalDeviceExtendedDynamicState3FeaturesEXT.sType = getStructureType<VkPhysicalDeviceExtendedDynamicState3FeaturesEXT>(); |
| *nextPtr = &physicalDeviceExtendedDynamicState3FeaturesEXT; |
| nextPtr = &physicalDeviceExtendedDynamicState3FeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceExternalFormatResolveFeaturesANDROID physicalDeviceExternalFormatResolveFeaturesANDROID; |
| deMemset(&physicalDeviceExternalFormatResolveFeaturesANDROID, 0, sizeof(physicalDeviceExternalFormatResolveFeaturesANDROID)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_ANDROID_external_format_resolve") ) |
| { |
| physicalDeviceExternalFormatResolveFeaturesANDROID.sType = getStructureType<VkPhysicalDeviceExternalFormatResolveFeaturesANDROID>(); |
| *nextPtr = &physicalDeviceExternalFormatResolveFeaturesANDROID; |
| nextPtr = &physicalDeviceExternalFormatResolveFeaturesANDROID.pNext; |
| } |
| |
| vk::VkPhysicalDeviceFaultFeaturesEXT physicalDeviceFaultFeaturesEXT; |
| deMemset(&physicalDeviceFaultFeaturesEXT, 0, sizeof(physicalDeviceFaultFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_device_fault") ) |
| { |
| physicalDeviceFaultFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFaultFeaturesEXT>(); |
| *nextPtr = &physicalDeviceFaultFeaturesEXT; |
| nextPtr = &physicalDeviceFaultFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT physicalDeviceFragmentDensityMapFeaturesEXT; |
| deMemset(&physicalDeviceFragmentDensityMapFeaturesEXT, 0, sizeof(physicalDeviceFragmentDensityMapFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_fragment_density_map") ) |
| { |
| physicalDeviceFragmentDensityMapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(); |
| *nextPtr = &physicalDeviceFragmentDensityMapFeaturesEXT; |
| nextPtr = &physicalDeviceFragmentDensityMapFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT physicalDeviceFragmentShaderInterlockFeaturesEXT; |
| deMemset(&physicalDeviceFragmentShaderInterlockFeaturesEXT, 0, sizeof(physicalDeviceFragmentShaderInterlockFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_fragment_shader_interlock") ) |
| { |
| physicalDeviceFragmentShaderInterlockFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(); |
| *nextPtr = &physicalDeviceFragmentShaderInterlockFeaturesEXT; |
| nextPtr = &physicalDeviceFragmentShaderInterlockFeaturesEXT.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR physicalDeviceFragmentShadingRateFeaturesKHR; |
| deMemset(&physicalDeviceFragmentShadingRateFeaturesKHR, 0, sizeof(physicalDeviceFragmentShadingRateFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_fragment_shading_rate") ) |
| { |
| physicalDeviceFragmentShadingRateFeaturesKHR.sType = getStructureType<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>(); |
| *nextPtr = &physicalDeviceFragmentShadingRateFeaturesKHR; |
| nextPtr = &physicalDeviceFragmentShadingRateFeaturesKHR.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceFrameBoundaryFeaturesEXT physicalDeviceFrameBoundaryFeaturesEXT; |
| deMemset(&physicalDeviceFrameBoundaryFeaturesEXT, 0, sizeof(physicalDeviceFrameBoundaryFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_frame_boundary") ) |
| { |
| physicalDeviceFrameBoundaryFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFrameBoundaryFeaturesEXT>(); |
| *nextPtr = &physicalDeviceFrameBoundaryFeaturesEXT; |
| nextPtr = &physicalDeviceFrameBoundaryFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR physicalDeviceGlobalPriorityQueryFeaturesKHR; |
| deMemset(&physicalDeviceGlobalPriorityQueryFeaturesKHR, 0, sizeof(physicalDeviceGlobalPriorityQueryFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_global_priority") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_global_priority_query") ) |
| { |
| physicalDeviceGlobalPriorityQueryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR>(); |
| *nextPtr = &physicalDeviceGlobalPriorityQueryFeaturesKHR; |
| nextPtr = &physicalDeviceGlobalPriorityQueryFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceHostQueryResetFeatures physicalDeviceHostQueryResetFeatures; |
| deMemset(&physicalDeviceHostQueryResetFeatures, 0, sizeof(physicalDeviceHostQueryResetFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_host_query_reset") ) |
| { |
| physicalDeviceHostQueryResetFeatures.sType = getStructureType<VkPhysicalDeviceHostQueryResetFeatures>(); |
| *nextPtr = &physicalDeviceHostQueryResetFeatures; |
| nextPtr = &physicalDeviceHostQueryResetFeatures.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceImage2DViewOf3DFeaturesEXT physicalDeviceImage2DViewOf3DFeaturesEXT; |
| deMemset(&physicalDeviceImage2DViewOf3DFeaturesEXT, 0, sizeof(physicalDeviceImage2DViewOf3DFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_2d_view_of_3d") ) |
| { |
| physicalDeviceImage2DViewOf3DFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT>(); |
| *nextPtr = &physicalDeviceImage2DViewOf3DFeaturesEXT; |
| nextPtr = &physicalDeviceImage2DViewOf3DFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceImageCompressionControlFeaturesEXT physicalDeviceImageCompressionControlFeaturesEXT; |
| deMemset(&physicalDeviceImageCompressionControlFeaturesEXT, 0, sizeof(physicalDeviceImageCompressionControlFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_compression_control") ) |
| { |
| physicalDeviceImageCompressionControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImageCompressionControlFeaturesEXT>(); |
| *nextPtr = &physicalDeviceImageCompressionControlFeaturesEXT; |
| nextPtr = &physicalDeviceImageCompressionControlFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT physicalDeviceImageCompressionControlSwapchainFeaturesEXT; |
| deMemset(&physicalDeviceImageCompressionControlSwapchainFeaturesEXT, 0, sizeof(physicalDeviceImageCompressionControlSwapchainFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_compression_control_swapchain") ) |
| { |
| physicalDeviceImageCompressionControlSwapchainFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>(); |
| *nextPtr = &physicalDeviceImageCompressionControlSwapchainFeaturesEXT; |
| nextPtr = &physicalDeviceImageCompressionControlSwapchainFeaturesEXT.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT physicalDeviceImageSlicedViewOf3DFeaturesEXT; |
| deMemset(&physicalDeviceImageSlicedViewOf3DFeaturesEXT, 0, sizeof(physicalDeviceImageSlicedViewOf3DFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_sliced_view_of_3d") ) |
| { |
| physicalDeviceImageSlicedViewOf3DFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT>(); |
| *nextPtr = &physicalDeviceImageSlicedViewOf3DFeaturesEXT; |
| nextPtr = &physicalDeviceImageSlicedViewOf3DFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceImagelessFramebufferFeatures physicalDeviceImagelessFramebufferFeatures; |
| deMemset(&physicalDeviceImagelessFramebufferFeatures, 0, sizeof(physicalDeviceImagelessFramebufferFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_imageless_framebuffer") ) |
| { |
| physicalDeviceImagelessFramebufferFeatures.sType = getStructureType<VkPhysicalDeviceImagelessFramebufferFeatures>(); |
| *nextPtr = &physicalDeviceImagelessFramebufferFeatures; |
| nextPtr = &physicalDeviceImagelessFramebufferFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDeviceIndexTypeUint8FeaturesKHR physicalDeviceIndexTypeUint8FeaturesKHR; |
| deMemset(&physicalDeviceIndexTypeUint8FeaturesKHR, 0, sizeof(physicalDeviceIndexTypeUint8FeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_index_type_uint8") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_index_type_uint8") ) |
| { |
| physicalDeviceIndexTypeUint8FeaturesKHR.sType = getStructureType<VkPhysicalDeviceIndexTypeUint8FeaturesKHR>(); |
| *nextPtr = &physicalDeviceIndexTypeUint8FeaturesKHR; |
| nextPtr = &physicalDeviceIndexTypeUint8FeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT physicalDeviceInlineUniformBlockFeaturesEXT; |
| deMemset(&physicalDeviceInlineUniformBlockFeaturesEXT, 0, sizeof(physicalDeviceInlineUniformBlockFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_inline_uniform_block") ) |
| { |
| physicalDeviceInlineUniformBlockFeaturesEXT.sType = getStructureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(); |
| *nextPtr = &physicalDeviceInlineUniformBlockFeaturesEXT; |
| nextPtr = &physicalDeviceInlineUniformBlockFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceLegacyDitheringFeaturesEXT physicalDeviceLegacyDitheringFeaturesEXT; |
| deMemset(&physicalDeviceLegacyDitheringFeaturesEXT, 0, sizeof(physicalDeviceLegacyDitheringFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_legacy_dithering") ) |
| { |
| physicalDeviceLegacyDitheringFeaturesEXT.sType = getStructureType<VkPhysicalDeviceLegacyDitheringFeaturesEXT>(); |
| *nextPtr = &physicalDeviceLegacyDitheringFeaturesEXT; |
| nextPtr = &physicalDeviceLegacyDitheringFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceLineRasterizationFeaturesKHR physicalDeviceLineRasterizationFeaturesKHR; |
| deMemset(&physicalDeviceLineRasterizationFeaturesKHR, 0, sizeof(physicalDeviceLineRasterizationFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_line_rasterization") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_line_rasterization") ) |
| { |
| physicalDeviceLineRasterizationFeaturesKHR.sType = getStructureType<VkPhysicalDeviceLineRasterizationFeaturesKHR>(); |
| *nextPtr = &physicalDeviceLineRasterizationFeaturesKHR; |
| nextPtr = &physicalDeviceLineRasterizationFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceMaintenance5FeaturesKHR physicalDeviceMaintenance5FeaturesKHR; |
| deMemset(&physicalDeviceMaintenance5FeaturesKHR, 0, sizeof(physicalDeviceMaintenance5FeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_maintenance5") ) |
| { |
| physicalDeviceMaintenance5FeaturesKHR.sType = getStructureType<VkPhysicalDeviceMaintenance5FeaturesKHR>(); |
| *nextPtr = &physicalDeviceMaintenance5FeaturesKHR; |
| nextPtr = &physicalDeviceMaintenance5FeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceMaintenance6FeaturesKHR physicalDeviceMaintenance6FeaturesKHR; |
| deMemset(&physicalDeviceMaintenance6FeaturesKHR, 0, sizeof(physicalDeviceMaintenance6FeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_maintenance6") ) |
| { |
| physicalDeviceMaintenance6FeaturesKHR.sType = getStructureType<VkPhysicalDeviceMaintenance6FeaturesKHR>(); |
| *nextPtr = &physicalDeviceMaintenance6FeaturesKHR; |
| nextPtr = &physicalDeviceMaintenance6FeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT physicalDeviceMemoryPriorityFeaturesEXT; |
| deMemset(&physicalDeviceMemoryPriorityFeaturesEXT, 0, sizeof(physicalDeviceMemoryPriorityFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_memory_priority") ) |
| { |
| physicalDeviceMemoryPriorityFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(); |
| *nextPtr = &physicalDeviceMemoryPriorityFeaturesEXT; |
| nextPtr = &physicalDeviceMemoryPriorityFeaturesEXT.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceMeshShaderFeaturesEXT physicalDeviceMeshShaderFeaturesEXT; |
| deMemset(&physicalDeviceMeshShaderFeaturesEXT, 0, sizeof(physicalDeviceMeshShaderFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_mesh_shader") ) |
| { |
| physicalDeviceMeshShaderFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMeshShaderFeaturesEXT>(); |
| *nextPtr = &physicalDeviceMeshShaderFeaturesEXT; |
| nextPtr = &physicalDeviceMeshShaderFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceMultiDrawFeaturesEXT physicalDeviceMultiDrawFeaturesEXT; |
| deMemset(&physicalDeviceMultiDrawFeaturesEXT, 0, sizeof(physicalDeviceMultiDrawFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_multi_draw") ) |
| { |
| physicalDeviceMultiDrawFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMultiDrawFeaturesEXT>(); |
| *nextPtr = &physicalDeviceMultiDrawFeaturesEXT; |
| nextPtr = &physicalDeviceMultiDrawFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; |
| deMemset(&physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, 0, sizeof(physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_multisampled_render_to_single_sampled") ) |
| { |
| physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>(); |
| *nextPtr = &physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; |
| nextPtr = &physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceMultiviewFeatures physicalDeviceMultiviewFeatures; |
| deMemset(&physicalDeviceMultiviewFeatures, 0, sizeof(physicalDeviceMultiviewFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_multiview") ) |
| { |
| physicalDeviceMultiviewFeatures.sType = getStructureType<VkPhysicalDeviceMultiviewFeatures>(); |
| *nextPtr = &physicalDeviceMultiviewFeatures; |
| nextPtr = &physicalDeviceMultiviewFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT physicalDeviceMutableDescriptorTypeFeaturesEXT; |
| deMemset(&physicalDeviceMutableDescriptorTypeFeaturesEXT, 0, sizeof(physicalDeviceMutableDescriptorTypeFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_VALVE_mutable_descriptor_type") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_mutable_descriptor_type") ) |
| { |
| physicalDeviceMutableDescriptorTypeFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT>(); |
| *nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesEXT; |
| nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE physicalDeviceMutableDescriptorTypeFeaturesVALVE; |
| deMemset(&physicalDeviceMutableDescriptorTypeFeaturesVALVE, 0, sizeof(physicalDeviceMutableDescriptorTypeFeaturesVALVE)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_VALVE_mutable_descriptor_type") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_mutable_descriptor_type") ) |
| { |
| physicalDeviceMutableDescriptorTypeFeaturesVALVE.sType = getStructureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>(); |
| *nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesVALVE; |
| nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesVALVE.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT physicalDeviceNonSeamlessCubeMapFeaturesEXT; |
| deMemset(&physicalDeviceNonSeamlessCubeMapFeaturesEXT, 0, sizeof(physicalDeviceNonSeamlessCubeMapFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_non_seamless_cube_map") ) |
| { |
| physicalDeviceNonSeamlessCubeMapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT>(); |
| *nextPtr = &physicalDeviceNonSeamlessCubeMapFeaturesEXT; |
| nextPtr = &physicalDeviceNonSeamlessCubeMapFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceOpacityMicromapFeaturesEXT physicalDeviceOpacityMicromapFeaturesEXT; |
| deMemset(&physicalDeviceOpacityMicromapFeaturesEXT, 0, sizeof(physicalDeviceOpacityMicromapFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_opacity_micromap") ) |
| { |
| physicalDeviceOpacityMicromapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceOpacityMicromapFeaturesEXT>(); |
| *nextPtr = &physicalDeviceOpacityMicromapFeaturesEXT; |
| nextPtr = &physicalDeviceOpacityMicromapFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT physicalDevicePageableDeviceLocalMemoryFeaturesEXT; |
| deMemset(&physicalDevicePageableDeviceLocalMemoryFeaturesEXT, 0, sizeof(physicalDevicePageableDeviceLocalMemoryFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_pageable_device_local_memory") ) |
| { |
| physicalDevicePageableDeviceLocalMemoryFeaturesEXT.sType = getStructureType<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>(); |
| *nextPtr = &physicalDevicePageableDeviceLocalMemoryFeaturesEXT; |
| nextPtr = &physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDevicePerformanceQueryFeaturesKHR physicalDevicePerformanceQueryFeaturesKHR; |
| deMemset(&physicalDevicePerformanceQueryFeaturesKHR, 0, sizeof(physicalDevicePerformanceQueryFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_performance_query") ) |
| { |
| physicalDevicePerformanceQueryFeaturesKHR.sType = getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>(); |
| *nextPtr = &physicalDevicePerformanceQueryFeaturesKHR; |
| nextPtr = &physicalDevicePerformanceQueryFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR physicalDevicePipelineExecutablePropertiesFeaturesKHR; |
| deMemset(&physicalDevicePipelineExecutablePropertiesFeaturesKHR, 0, sizeof(physicalDevicePipelineExecutablePropertiesFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_pipeline_executable_properties") ) |
| { |
| physicalDevicePipelineExecutablePropertiesFeaturesKHR.sType = getStructureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(); |
| *nextPtr = &physicalDevicePipelineExecutablePropertiesFeaturesKHR; |
| nextPtr = &physicalDevicePipelineExecutablePropertiesFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT physicalDevicePipelineLibraryGroupHandlesFeaturesEXT; |
| deMemset(&physicalDevicePipelineLibraryGroupHandlesFeaturesEXT, 0, sizeof(physicalDevicePipelineLibraryGroupHandlesFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_pipeline_library_group_handles") ) |
| { |
| physicalDevicePipelineLibraryGroupHandlesFeaturesEXT.sType = getStructureType<VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT>(); |
| *nextPtr = &physicalDevicePipelineLibraryGroupHandlesFeaturesEXT; |
| nextPtr = &physicalDevicePipelineLibraryGroupHandlesFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDevicePipelineProtectedAccessFeaturesEXT physicalDevicePipelineProtectedAccessFeaturesEXT; |
| deMemset(&physicalDevicePipelineProtectedAccessFeaturesEXT, 0, sizeof(physicalDevicePipelineProtectedAccessFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_pipeline_protected_access") ) |
| { |
| physicalDevicePipelineProtectedAccessFeaturesEXT.sType = getStructureType<VkPhysicalDevicePipelineProtectedAccessFeaturesEXT>(); |
| *nextPtr = &physicalDevicePipelineProtectedAccessFeaturesEXT; |
| nextPtr = &physicalDevicePipelineProtectedAccessFeaturesEXT.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDevicePresentIdFeaturesKHR physicalDevicePresentIdFeaturesKHR; |
| deMemset(&physicalDevicePresentIdFeaturesKHR, 0, sizeof(physicalDevicePresentIdFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_present_id") ) |
| { |
| physicalDevicePresentIdFeaturesKHR.sType = getStructureType<VkPhysicalDevicePresentIdFeaturesKHR>(); |
| *nextPtr = &physicalDevicePresentIdFeaturesKHR; |
| nextPtr = &physicalDevicePresentIdFeaturesKHR.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDevicePresentWaitFeaturesKHR physicalDevicePresentWaitFeaturesKHR; |
| deMemset(&physicalDevicePresentWaitFeaturesKHR, 0, sizeof(physicalDevicePresentWaitFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_present_wait") ) |
| { |
| physicalDevicePresentWaitFeaturesKHR.sType = getStructureType<VkPhysicalDevicePresentWaitFeaturesKHR>(); |
| *nextPtr = &physicalDevicePresentWaitFeaturesKHR; |
| nextPtr = &physicalDevicePresentWaitFeaturesKHR.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT physicalDevicePrimitiveTopologyListRestartFeaturesEXT; |
| deMemset(&physicalDevicePrimitiveTopologyListRestartFeaturesEXT, 0, sizeof(physicalDevicePrimitiveTopologyListRestartFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_primitive_topology_list_restart") ) |
| { |
| physicalDevicePrimitiveTopologyListRestartFeaturesEXT.sType = getStructureType<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(); |
| *nextPtr = &physicalDevicePrimitiveTopologyListRestartFeaturesEXT; |
| nextPtr = &physicalDevicePrimitiveTopologyListRestartFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceProvokingVertexFeaturesEXT physicalDeviceProvokingVertexFeaturesEXT; |
| deMemset(&physicalDeviceProvokingVertexFeaturesEXT, 0, sizeof(physicalDeviceProvokingVertexFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_provoking_vertex") ) |
| { |
| physicalDeviceProvokingVertexFeaturesEXT.sType = getStructureType<VkPhysicalDeviceProvokingVertexFeaturesEXT>(); |
| *nextPtr = &physicalDeviceProvokingVertexFeaturesEXT; |
| nextPtr = &physicalDeviceProvokingVertexFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceRayQueryFeaturesKHR physicalDeviceRayQueryFeaturesKHR; |
| deMemset(&physicalDeviceRayQueryFeaturesKHR, 0, sizeof(physicalDeviceRayQueryFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_query") ) |
| { |
| physicalDeviceRayQueryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayQueryFeaturesKHR>(); |
| *nextPtr = &physicalDeviceRayQueryFeaturesKHR; |
| nextPtr = &physicalDeviceRayQueryFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR physicalDeviceRayTracingMaintenance1FeaturesKHR; |
| deMemset(&physicalDeviceRayTracingMaintenance1FeaturesKHR, 0, sizeof(physicalDeviceRayTracingMaintenance1FeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_tracing_maintenance1") ) |
| { |
| physicalDeviceRayTracingMaintenance1FeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR>(); |
| *nextPtr = &physicalDeviceRayTracingMaintenance1FeaturesKHR; |
| nextPtr = &physicalDeviceRayTracingMaintenance1FeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR physicalDeviceRayTracingPipelineFeaturesKHR; |
| deMemset(&physicalDeviceRayTracingPipelineFeaturesKHR, 0, sizeof(physicalDeviceRayTracingPipelineFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_tracing_pipeline") ) |
| { |
| physicalDeviceRayTracingPipelineFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(); |
| *nextPtr = &physicalDeviceRayTracingPipelineFeaturesKHR; |
| nextPtr = &physicalDeviceRayTracingPipelineFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR physicalDeviceRayTracingPositionFetchFeaturesKHR; |
| deMemset(&physicalDeviceRayTracingPositionFetchFeaturesKHR, 0, sizeof(physicalDeviceRayTracingPositionFetchFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_tracing_position_fetch") ) |
| { |
| physicalDeviceRayTracingPositionFetchFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR>(); |
| *nextPtr = &physicalDeviceRayTracingPositionFetchFeaturesKHR; |
| nextPtr = &physicalDeviceRayTracingPositionFetchFeaturesKHR.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV physicalDeviceRepresentativeFragmentTestFeaturesNV; |
| deMemset(&physicalDeviceRepresentativeFragmentTestFeaturesNV, 0, sizeof(physicalDeviceRepresentativeFragmentTestFeaturesNV)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_NV_representative_fragment_test") ) |
| { |
| physicalDeviceRepresentativeFragmentTestFeaturesNV.sType = getStructureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(); |
| *nextPtr = &physicalDeviceRepresentativeFragmentTestFeaturesNV; |
| nextPtr = &physicalDeviceRepresentativeFragmentTestFeaturesNV.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR physicalDeviceSamplerYcbcrConversionFeaturesKHR; |
| deMemset(&physicalDeviceSamplerYcbcrConversionFeaturesKHR, 0, sizeof(physicalDeviceSamplerYcbcrConversionFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_sampler_ycbcr_conversion") ) |
| { |
| physicalDeviceSamplerYcbcrConversionFeaturesKHR.sType = getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR>(); |
| *nextPtr = &physicalDeviceSamplerYcbcrConversionFeaturesKHR; |
| nextPtr = &physicalDeviceSamplerYcbcrConversionFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceScalarBlockLayoutFeatures physicalDeviceScalarBlockLayoutFeatures; |
| deMemset(&physicalDeviceScalarBlockLayoutFeatures, 0, sizeof(physicalDeviceScalarBlockLayoutFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_scalar_block_layout") ) |
| { |
| physicalDeviceScalarBlockLayoutFeatures.sType = getStructureType<VkPhysicalDeviceScalarBlockLayoutFeatures>(); |
| *nextPtr = &physicalDeviceScalarBlockLayoutFeatures; |
| nextPtr = &physicalDeviceScalarBlockLayoutFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures physicalDeviceSeparateDepthStencilLayoutsFeatures; |
| deMemset(&physicalDeviceSeparateDepthStencilLayoutsFeatures, 0, sizeof(physicalDeviceSeparateDepthStencilLayoutsFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_separate_depth_stencil_layouts") ) |
| { |
| physicalDeviceSeparateDepthStencilLayoutsFeatures.sType = getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(); |
| *nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeatures; |
| nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeatures.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT physicalDeviceShaderAtomicFloat2FeaturesEXT; |
| deMemset(&physicalDeviceShaderAtomicFloat2FeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloat2FeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_atomic_float2") ) |
| { |
| physicalDeviceShaderAtomicFloat2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(); |
| *nextPtr = &physicalDeviceShaderAtomicFloat2FeaturesEXT; |
| nextPtr = &physicalDeviceShaderAtomicFloat2FeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT physicalDeviceShaderAtomicFloatFeaturesEXT; |
| deMemset(&physicalDeviceShaderAtomicFloatFeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloatFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_atomic_float") ) |
| { |
| physicalDeviceShaderAtomicFloatFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(); |
| *nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT; |
| nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderAtomicInt64Features physicalDeviceShaderAtomicInt64Features; |
| deMemset(&physicalDeviceShaderAtomicInt64Features, 0, sizeof(physicalDeviceShaderAtomicInt64Features)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_atomic_int64") ) |
| { |
| physicalDeviceShaderAtomicInt64Features.sType = getStructureType<VkPhysicalDeviceShaderAtomicInt64Features>(); |
| *nextPtr = &physicalDeviceShaderAtomicInt64Features; |
| nextPtr = &physicalDeviceShaderAtomicInt64Features.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderClockFeaturesKHR physicalDeviceShaderClockFeaturesKHR; |
| deMemset(&physicalDeviceShaderClockFeaturesKHR, 0, sizeof(physicalDeviceShaderClockFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_clock") ) |
| { |
| physicalDeviceShaderClockFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR>(); |
| *nextPtr = &physicalDeviceShaderClockFeaturesKHR; |
| nextPtr = &physicalDeviceShaderClockFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; |
| deMemset(&physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, 0, sizeof(physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_demote_to_helper_invocation") ) |
| { |
| physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(); |
| *nextPtr = &physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; |
| nextPtr = &physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; |
| deMemset(&physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, 0, sizeof(physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_AMD_shader_early_and_late_fragment_tests") ) |
| { |
| physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.sType = getStructureType<VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>(); |
| *nextPtr = &physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; |
| nextPtr = &physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceShaderExpectAssumeFeaturesKHR physicalDeviceShaderExpectAssumeFeaturesKHR; |
| deMemset(&physicalDeviceShaderExpectAssumeFeaturesKHR, 0, sizeof(physicalDeviceShaderExpectAssumeFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_expect_assume") ) |
| { |
| physicalDeviceShaderExpectAssumeFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderExpectAssumeFeaturesKHR>(); |
| *nextPtr = &physicalDeviceShaderExpectAssumeFeaturesKHR; |
| nextPtr = &physicalDeviceShaderExpectAssumeFeaturesKHR.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceShaderFloat16Int8Features physicalDeviceShaderFloat16Int8Features; |
| deMemset(&physicalDeviceShaderFloat16Int8Features, 0, sizeof(physicalDeviceShaderFloat16Int8Features)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_float16_int8") ) |
| { |
| physicalDeviceShaderFloat16Int8Features.sType = getStructureType<VkPhysicalDeviceShaderFloat16Int8Features>(); |
| *nextPtr = &physicalDeviceShaderFloat16Int8Features; |
| nextPtr = &physicalDeviceShaderFloat16Int8Features.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderFloatControls2FeaturesKHR physicalDeviceShaderFloatControls2FeaturesKHR; |
| deMemset(&physicalDeviceShaderFloatControls2FeaturesKHR, 0, sizeof(physicalDeviceShaderFloatControls2FeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_float_controls2") ) |
| { |
| physicalDeviceShaderFloatControls2FeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderFloatControls2FeaturesKHR>(); |
| *nextPtr = &physicalDeviceShaderFloatControls2FeaturesKHR; |
| nextPtr = &physicalDeviceShaderFloatControls2FeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT physicalDeviceShaderImageAtomicInt64FeaturesEXT; |
| deMemset(&physicalDeviceShaderImageAtomicInt64FeaturesEXT, 0, sizeof(physicalDeviceShaderImageAtomicInt64FeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_image_atomic_int64") ) |
| { |
| physicalDeviceShaderImageAtomicInt64FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(); |
| *nextPtr = &physicalDeviceShaderImageAtomicInt64FeaturesEXT; |
| nextPtr = &physicalDeviceShaderImageAtomicInt64FeaturesEXT.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR physicalDeviceShaderIntegerDotProductFeaturesKHR; |
| deMemset(&physicalDeviceShaderIntegerDotProductFeaturesKHR, 0, sizeof(physicalDeviceShaderIntegerDotProductFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_integer_dot_product") ) |
| { |
| physicalDeviceShaderIntegerDotProductFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR>(); |
| *nextPtr = &physicalDeviceShaderIntegerDotProductFeaturesKHR; |
| nextPtr = &physicalDeviceShaderIntegerDotProductFeaturesKHR.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR physicalDeviceShaderMaximalReconvergenceFeaturesKHR; |
| deMemset(&physicalDeviceShaderMaximalReconvergenceFeaturesKHR, 0, sizeof(physicalDeviceShaderMaximalReconvergenceFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_maximal_reconvergence") ) |
| { |
| physicalDeviceShaderMaximalReconvergenceFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR>(); |
| *nextPtr = &physicalDeviceShaderMaximalReconvergenceFeaturesKHR; |
| nextPtr = &physicalDeviceShaderMaximalReconvergenceFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT physicalDeviceShaderModuleIdentifierFeaturesEXT; |
| deMemset(&physicalDeviceShaderModuleIdentifierFeaturesEXT, 0, sizeof(physicalDeviceShaderModuleIdentifierFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_module_identifier") ) |
| { |
| physicalDeviceShaderModuleIdentifierFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT>(); |
| *nextPtr = &physicalDeviceShaderModuleIdentifierFeaturesEXT; |
| nextPtr = &physicalDeviceShaderModuleIdentifierFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderObjectFeaturesEXT physicalDeviceShaderObjectFeaturesEXT; |
| deMemset(&physicalDeviceShaderObjectFeaturesEXT, 0, sizeof(physicalDeviceShaderObjectFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_object") ) |
| { |
| physicalDeviceShaderObjectFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderObjectFeaturesEXT>(); |
| *nextPtr = &physicalDeviceShaderObjectFeaturesEXT; |
| nextPtr = &physicalDeviceShaderObjectFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderQuadControlFeaturesKHR physicalDeviceShaderQuadControlFeaturesKHR; |
| deMemset(&physicalDeviceShaderQuadControlFeaturesKHR, 0, sizeof(physicalDeviceShaderQuadControlFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_quad_control") ) |
| { |
| physicalDeviceShaderQuadControlFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderQuadControlFeaturesKHR>(); |
| *nextPtr = &physicalDeviceShaderQuadControlFeaturesKHR; |
| nextPtr = &physicalDeviceShaderQuadControlFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures physicalDeviceShaderSubgroupExtendedTypesFeatures; |
| deMemset(&physicalDeviceShaderSubgroupExtendedTypesFeatures, 0, sizeof(physicalDeviceShaderSubgroupExtendedTypesFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_subgroup_extended_types") ) |
| { |
| physicalDeviceShaderSubgroupExtendedTypesFeatures.sType = getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(); |
| *nextPtr = &physicalDeviceShaderSubgroupExtendedTypesFeatures; |
| nextPtr = &physicalDeviceShaderSubgroupExtendedTypesFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR physicalDeviceShaderSubgroupRotateFeaturesKHR; |
| deMemset(&physicalDeviceShaderSubgroupRotateFeaturesKHR, 0, sizeof(physicalDeviceShaderSubgroupRotateFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_subgroup_rotate") ) |
| { |
| physicalDeviceShaderSubgroupRotateFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR>(); |
| *nextPtr = &physicalDeviceShaderSubgroupRotateFeaturesKHR; |
| nextPtr = &physicalDeviceShaderSubgroupRotateFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; |
| deMemset(&physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, 0, sizeof(physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_subgroup_uniform_control_flow") ) |
| { |
| physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(); |
| *nextPtr = &physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; |
| nextPtr = &physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR physicalDeviceShaderTerminateInvocationFeaturesKHR; |
| deMemset(&physicalDeviceShaderTerminateInvocationFeaturesKHR, 0, sizeof(physicalDeviceShaderTerminateInvocationFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_terminate_invocation") ) |
| { |
| physicalDeviceShaderTerminateInvocationFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>(); |
| *nextPtr = &physicalDeviceShaderTerminateInvocationFeaturesKHR; |
| nextPtr = &physicalDeviceShaderTerminateInvocationFeaturesKHR.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceShadingRateImageFeaturesNV physicalDeviceShadingRateImageFeaturesNV; |
| deMemset(&physicalDeviceShadingRateImageFeaturesNV, 0, sizeof(physicalDeviceShadingRateImageFeaturesNV)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_NV_shading_rate_image") ) |
| { |
| physicalDeviceShadingRateImageFeaturesNV.sType = getStructureType<VkPhysicalDeviceShadingRateImageFeaturesNV>(); |
| *nextPtr = &physicalDeviceShadingRateImageFeaturesNV; |
| nextPtr = &physicalDeviceShadingRateImageFeaturesNV.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT physicalDeviceSubgroupSizeControlFeaturesEXT; |
| deMemset(&physicalDeviceSubgroupSizeControlFeaturesEXT, 0, sizeof(physicalDeviceSubgroupSizeControlFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_subgroup_size_control") ) |
| { |
| physicalDeviceSubgroupSizeControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(); |
| *nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT; |
| nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT physicalDeviceSubpassMergeFeedbackFeaturesEXT; |
| deMemset(&physicalDeviceSubpassMergeFeedbackFeaturesEXT, 0, sizeof(physicalDeviceSubpassMergeFeedbackFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_subpass_merge_feedback") ) |
| { |
| physicalDeviceSubpassMergeFeedbackFeaturesEXT.sType = getStructureType<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT>(); |
| *nextPtr = &physicalDeviceSubpassMergeFeedbackFeaturesEXT; |
| nextPtr = &physicalDeviceSubpassMergeFeedbackFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceSynchronization2FeaturesKHR physicalDeviceSynchronization2FeaturesKHR; |
| deMemset(&physicalDeviceSynchronization2FeaturesKHR, 0, sizeof(physicalDeviceSynchronization2FeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_synchronization2") ) |
| { |
| physicalDeviceSynchronization2FeaturesKHR.sType = getStructureType<VkPhysicalDeviceSynchronization2FeaturesKHR>(); |
| *nextPtr = &physicalDeviceSynchronization2FeaturesKHR; |
| nextPtr = &physicalDeviceSynchronization2FeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT physicalDeviceTexelBufferAlignmentFeaturesEXT; |
| deMemset(&physicalDeviceTexelBufferAlignmentFeaturesEXT, 0, sizeof(physicalDeviceTexelBufferAlignmentFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_texel_buffer_alignment") ) |
| { |
| physicalDeviceTexelBufferAlignmentFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(); |
| *nextPtr = &physicalDeviceTexelBufferAlignmentFeaturesEXT; |
| nextPtr = &physicalDeviceTexelBufferAlignmentFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT physicalDeviceTextureCompressionASTCHDRFeaturesEXT; |
| deMemset(&physicalDeviceTextureCompressionASTCHDRFeaturesEXT, 0, sizeof(physicalDeviceTextureCompressionASTCHDRFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_texture_compression_astc_hdr") ) |
| { |
| physicalDeviceTextureCompressionASTCHDRFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>(); |
| *nextPtr = &physicalDeviceTextureCompressionASTCHDRFeaturesEXT; |
| nextPtr = &physicalDeviceTextureCompressionASTCHDRFeaturesEXT.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceTimelineSemaphoreFeatures physicalDeviceTimelineSemaphoreFeatures; |
| deMemset(&physicalDeviceTimelineSemaphoreFeatures, 0, sizeof(physicalDeviceTimelineSemaphoreFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_timeline_semaphore") ) |
| { |
| physicalDeviceTimelineSemaphoreFeatures.sType = getStructureType<VkPhysicalDeviceTimelineSemaphoreFeatures>(); |
| *nextPtr = &physicalDeviceTimelineSemaphoreFeatures; |
| nextPtr = &physicalDeviceTimelineSemaphoreFeatures.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT physicalDeviceTransformFeedbackFeaturesEXT; |
| deMemset(&physicalDeviceTransformFeedbackFeaturesEXT, 0, sizeof(physicalDeviceTransformFeedbackFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_transform_feedback") ) |
| { |
| physicalDeviceTransformFeedbackFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(); |
| *nextPtr = &physicalDeviceTransformFeedbackFeaturesEXT; |
| nextPtr = &physicalDeviceTransformFeedbackFeaturesEXT.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures physicalDeviceUniformBufferStandardLayoutFeatures; |
| deMemset(&physicalDeviceUniformBufferStandardLayoutFeatures, 0, sizeof(physicalDeviceUniformBufferStandardLayoutFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_uniform_buffer_standard_layout") ) |
| { |
| physicalDeviceUniformBufferStandardLayoutFeatures.sType = getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(); |
| *nextPtr = &physicalDeviceUniformBufferStandardLayoutFeatures; |
| nextPtr = &physicalDeviceUniformBufferStandardLayoutFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDeviceVariablePointersFeatures physicalDeviceVariablePointersFeatures; |
| deMemset(&physicalDeviceVariablePointersFeatures, 0, sizeof(physicalDeviceVariablePointersFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_variable_pointers") ) |
| { |
| physicalDeviceVariablePointersFeatures.sType = getStructureType<VkPhysicalDeviceVariablePointersFeatures>(); |
| *nextPtr = &physicalDeviceVariablePointersFeatures; |
| nextPtr = &physicalDeviceVariablePointersFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR physicalDeviceVertexAttributeDivisorFeaturesKHR; |
| deMemset(&physicalDeviceVertexAttributeDivisorFeaturesKHR, 0, sizeof(physicalDeviceVertexAttributeDivisorFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_vertex_attribute_divisor") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_vertex_attribute_divisor") ) |
| { |
| physicalDeviceVertexAttributeDivisorFeaturesKHR.sType = getStructureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR>(); |
| *nextPtr = &physicalDeviceVertexAttributeDivisorFeaturesKHR; |
| nextPtr = &physicalDeviceVertexAttributeDivisorFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT physicalDeviceVertexInputDynamicStateFeaturesEXT; |
| deMemset(&physicalDeviceVertexInputDynamicStateFeaturesEXT, 0, sizeof(physicalDeviceVertexInputDynamicStateFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_vertex_input_dynamic_state") ) |
| { |
| physicalDeviceVertexInputDynamicStateFeaturesEXT.sType = getStructureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>(); |
| *nextPtr = &physicalDeviceVertexInputDynamicStateFeaturesEXT; |
| nextPtr = &physicalDeviceVertexInputDynamicStateFeaturesEXT.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceVulkan11Features physicalDeviceVulkan11Features; |
| deMemset(&physicalDeviceVulkan11Features, 0, sizeof(physicalDeviceVulkan11Features)); |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) |
| { |
| physicalDeviceVulkan11Features.sType = getStructureType<VkPhysicalDeviceVulkan11Features>(); |
| *nextPtr = &physicalDeviceVulkan11Features; |
| nextPtr = &physicalDeviceVulkan11Features.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceVulkan12Features physicalDeviceVulkan12Features; |
| deMemset(&physicalDeviceVulkan12Features, 0, sizeof(physicalDeviceVulkan12Features)); |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) || context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) |
| { |
| physicalDeviceVulkan12Features.sType = getStructureType<VkPhysicalDeviceVulkan12Features>(); |
| *nextPtr = &physicalDeviceVulkan12Features; |
| nextPtr = &physicalDeviceVulkan12Features.pNext; |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| vk::VkPhysicalDeviceVulkan13Features physicalDeviceVulkan13Features; |
| deMemset(&physicalDeviceVulkan13Features, 0, sizeof(physicalDeviceVulkan13Features)); |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) |
| { |
| physicalDeviceVulkan13Features.sType = getStructureType<VkPhysicalDeviceVulkan13Features>(); |
| *nextPtr = &physicalDeviceVulkan13Features; |
| nextPtr = &physicalDeviceVulkan13Features.pNext; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| vk::VkPhysicalDeviceVulkanMemoryModelFeatures physicalDeviceVulkanMemoryModelFeatures; |
| deMemset(&physicalDeviceVulkanMemoryModelFeatures, 0, sizeof(physicalDeviceVulkanMemoryModelFeatures)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_vulkan_memory_model") ) |
| { |
| physicalDeviceVulkanMemoryModelFeatures.sType = getStructureType<VkPhysicalDeviceVulkanMemoryModelFeatures>(); |
| *nextPtr = &physicalDeviceVulkanMemoryModelFeatures; |
| nextPtr = &physicalDeviceVulkanMemoryModelFeatures.pNext; |
| } |
| |
| vk::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; |
| deMemset(&physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, 0, sizeof(physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_workgroup_memory_explicit_layout") ) |
| { |
| physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.sType = getStructureType<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>(); |
| *nextPtr = &physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; |
| nextPtr = &physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.pNext; |
| } |
| |
| vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT physicalDeviceYcbcr2Plane444FormatsFeaturesEXT; |
| deMemset(&physicalDeviceYcbcr2Plane444FormatsFeaturesEXT, 0, sizeof(physicalDeviceYcbcr2Plane444FormatsFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_ycbcr_2plane_444_formats") ) |
| { |
| physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(); |
| *nextPtr = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT; |
| nextPtr = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT physicalDeviceYcbcrImageArraysFeaturesEXT; |
| deMemset(&physicalDeviceYcbcrImageArraysFeaturesEXT, 0, sizeof(physicalDeviceYcbcrImageArraysFeaturesEXT)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_ycbcr_image_arrays") ) |
| { |
| physicalDeviceYcbcrImageArraysFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(); |
| *nextPtr = &physicalDeviceYcbcrImageArraysFeaturesEXT; |
| nextPtr = &physicalDeviceYcbcrImageArraysFeaturesEXT.pNext; |
| } |
| |
| vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; |
| deMemset(&physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR, 0, sizeof(physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)); |
| |
| if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_zero_initialize_workgroup_memory") ) |
| { |
| physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>(); |
| *nextPtr = &physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; |
| nextPtr = &physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.pNext; |
| } |
| |
| context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &coreFeatures); |
| bool result = true; |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_AMD_shader_early_and_late_fragment_tests")) ) |
| { |
| if ( physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.shaderEarlyAndLateFragmentTests == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderEarlyAndLateFragmentTests not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_ANDROID_external_format_resolve")) ) |
| { |
| if ( physicalDeviceExternalFormatResolveFeaturesANDROID.externalFormatResolve == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature externalFormatResolve not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) ) |
| { |
| if ( physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature formatA4R4G4B4 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_attachment_feedback_loop_dynamic_state")) ) |
| { |
| if ( physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.attachmentFeedbackLoopDynamicState == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature attachmentFeedbackLoopDynamicState not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_attachment_feedback_loop_layout")) ) |
| { |
| if ( physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.attachmentFeedbackLoopLayout == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature attachmentFeedbackLoopLayout not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_border_color_swizzle")) ) |
| { |
| if ( physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzle == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature borderColorSwizzle not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_color_write_enable")) ) |
| { |
| if ( physicalDeviceColorWriteEnableFeaturesEXT.colorWriteEnable == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature colorWriteEnable not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_conditional_rendering")) ) |
| { |
| if ( physicalDeviceConditionalRenderingFeaturesEXT.conditionalRendering == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature conditionalRendering not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_bias_control")) ) |
| { |
| if ( physicalDeviceDepthBiasControlFeaturesEXT.depthBiasControl == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature depthBiasControl not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clamp_zero_one")) ) |
| { |
| if ( physicalDeviceDepthClampZeroOneFeaturesEXT.depthClampZeroOne == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature depthClampZeroOne not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_control")) ) |
| { |
| if ( physicalDeviceDepthClipControlFeaturesEXT.depthClipControl == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature depthClipControl not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_enable")) ) |
| { |
| if ( physicalDeviceDepthClipEnableFeaturesEXT.depthClipEnable == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature depthClipEnable not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_buffer")) ) |
| { |
| if ( physicalDeviceDescriptorBufferFeaturesEXT.descriptorBuffer == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBuffer not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_device_address_binding_report")) ) |
| { |
| if ( physicalDeviceAddressBindingReportFeaturesEXT.reportAddressBinding == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature reportAddressBinding not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_device_fault")) ) |
| { |
| if ( physicalDeviceFaultFeaturesEXT.deviceFault == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature deviceFault not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_dynamic_rendering_unused_attachments")) ) |
| { |
| if ( physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.dynamicRenderingUnusedAttachments == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature dynamicRenderingUnusedAttachments not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_extended_dynamic_state2")) ) |
| { |
| if ( physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature extendedDynamicState2 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageReductionMode ) |
| { |
| if ( physicalDeviceCoverageReductionModeFeaturesNV.coverageReductionMode == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature coverageReductionMode not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3DepthClipNegativeOneToOne ) |
| { |
| if ( physicalDeviceDepthClipControlFeaturesEXT.depthClipControl == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature depthClipControl not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3TessellationDomainOrigin ) |
| { |
| if ( coreFeatures.features.tessellationShader == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature tessellationShader not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3DepthClampEnable ) |
| { |
| if ( coreFeatures.features.depthClamp == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature depthClamp not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3PolygonMode ) |
| { |
| if ( coreFeatures.features.fillModeNonSolid == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature fillModeNonSolid not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3AlphaToOneEnable ) |
| { |
| if ( coreFeatures.features.alphaToOne == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature alphaToOne not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LogicOpEnable ) |
| { |
| if ( coreFeatures.features.logicOp == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature logicOp not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ProvokingVertexMode ) |
| { |
| if ( physicalDeviceProvokingVertexFeaturesEXT.provokingVertexLast == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature provokingVertexLast not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3RepresentativeFragmentTestEnable ) |
| { |
| if ( physicalDeviceRepresentativeFragmentTestFeaturesNV.representativeFragmentTest == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature representativeFragmentTest not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ShadingRateImageEnable ) |
| { |
| if ( physicalDeviceShadingRateImageFeaturesNV.shadingRateImage == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shadingRateImage not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3RasterizationStream ) |
| { |
| if ( physicalDeviceTransformFeedbackFeaturesEXT.geometryStreams == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature geometryStreams not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_density_map")) ) |
| { |
| if ( physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMap == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature fragmentDensityMap not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_shader_interlock")) ) |
| { |
| if ( ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderSampleInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderPixelInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderShadingRateInterlock == VK_FALSE ) ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature fragmentShaderSampleInterlock or fragmentShaderPixelInterlock or fragmentShaderShadingRateInterlock not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_frame_boundary")) ) |
| { |
| if ( physicalDeviceFrameBoundaryFeaturesEXT.frameBoundary == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature frameBoundary not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_host_query_reset")) ) |
| { |
| if ( physicalDeviceHostQueryResetFeatures.hostQueryReset == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_2d_view_of_3d")) ) |
| { |
| if ( physicalDeviceImage2DViewOf3DFeaturesEXT.image2DViewOf3D == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature image2DViewOf3D not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_compression_control")) ) |
| { |
| if ( physicalDeviceImageCompressionControlFeaturesEXT.imageCompressionControl == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature imageCompressionControl not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_compression_control")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_compression_control_swapchain")) ) |
| { |
| if ( physicalDeviceImageCompressionControlSwapchainFeaturesEXT.imageCompressionControlSwapchain == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature imageCompressionControlSwapchain not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_sliced_view_of_3d")) ) |
| { |
| if ( physicalDeviceImageSlicedViewOf3DFeaturesEXT.imageSlicedViewOf3D == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature imageSlicedViewOf3D not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) ) |
| { |
| if ( physicalDeviceInlineUniformBlockFeaturesEXT.inlineUniformBlock == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) |
| { |
| if ( physicalDeviceInlineUniformBlockFeaturesEXT.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_legacy_dithering")) ) |
| { |
| if ( physicalDeviceLegacyDitheringFeaturesEXT.legacyDithering == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature legacyDithering not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_memory_priority")) ) |
| { |
| if ( physicalDeviceMemoryPriorityFeaturesEXT.memoryPriority == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature memoryPriority not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceMeshShaderFeaturesEXT.primitiveFragmentShadingRateMeshShader ) |
| { |
| if ( physicalDeviceFragmentShadingRateFeaturesKHR.primitiveFragmentShadingRate == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature primitiveFragmentShadingRate not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_mesh_shader")) ) |
| { |
| if ( ( physicalDeviceMeshShaderFeaturesEXT.meshShader == VK_FALSE ) && ( physicalDeviceMeshShaderFeaturesEXT.taskShader == VK_FALSE ) ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature meshShader or taskShader not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_multi_draw")) ) |
| { |
| if ( physicalDeviceMultiDrawFeaturesEXT.multiDraw == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature multiDraw not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_multisampled_render_to_single_sampled")) ) |
| { |
| if ( physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.multisampledRenderToSingleSampled == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature multisampledRenderToSingleSampled not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_mutable_descriptor_type")) ) |
| { |
| if ( physicalDeviceMutableDescriptorTypeFeaturesEXT.mutableDescriptorType == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_non_seamless_cube_map")) ) |
| { |
| if ( physicalDeviceNonSeamlessCubeMapFeaturesEXT.nonSeamlessCubeMap == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature nonSeamlessCubeMap not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_opacity_micromap")) ) |
| { |
| if ( physicalDeviceOpacityMicromapFeaturesEXT.micromap == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature micromap not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_pageable_device_local_memory")) ) |
| { |
| if ( physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pageableDeviceLocalMemory == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature pageableDeviceLocalMemory not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_library_group_handles")) ) |
| { |
| if ( physicalDevicePipelineLibraryGroupHandlesFeaturesEXT.pipelineLibraryGroupHandles == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature pipelineLibraryGroupHandles not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_protected_access")) ) |
| { |
| if ( physicalDevicePipelineProtectedAccessFeaturesEXT.pipelineProtectedAccess == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature pipelineProtectedAccess not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_primitive_topology_list_restart")) ) |
| { |
| if ( physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyListRestart == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature primitiveTopologyListRestart not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) ) |
| { |
| if ( physicalDeviceScalarBlockLayoutFeatures.scalarBlockLayout == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature scalarBlockLayout not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics ) |
| { |
| if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32Atomics not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd ) |
| { |
| if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicAdd not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) && physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax ) |
| { |
| if ( physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicMinMax not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_demote_to_helper_invocation")) ) |
| { |
| if ( physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.shaderDemoteToHelperInvocation == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) |
| { |
| if ( coreFeatures.features.shaderInt64 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) |
| { |
| if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) && physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics ) |
| { |
| if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_module_identifier")) ) |
| { |
| if ( physicalDeviceShaderModuleIdentifierFeaturesEXT.shaderModuleIdentifier == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderModuleIdentifier not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_object")) ) |
| { |
| if ( physicalDeviceShaderObjectFeaturesEXT.shaderObject == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderObject not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) |
| { |
| if ( physicalDeviceSubgroupSizeControlFeaturesEXT.subgroupSizeControl == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) |
| { |
| if ( physicalDeviceSubgroupSizeControlFeaturesEXT.computeFullSubgroups == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subpass_merge_feedback")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_create_renderpass2")) ) |
| { |
| if ( physicalDeviceSubpassMergeFeedbackFeaturesEXT.subpassMergeFeedback == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature subpassMergeFeedback not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_texel_buffer_alignment")) ) |
| { |
| if ( physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature texelBufferAlignment not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_texture_compression_astc_hdr")) ) |
| { |
| if ( physicalDeviceTextureCompressionASTCHDRFeaturesEXT.textureCompressionASTC_HDR == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature textureCompressionASTC_HDR not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_transform_feedback")) ) |
| { |
| #if defined(CTS_USES_VULKAN) |
| if ( physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature transformFeedback not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_input_dynamic_state")) ) |
| { |
| if ( physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature vertexInputDynamicState not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) ) |
| { |
| if ( physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature ycbcr2plane444Formats not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) ) |
| { |
| if ( physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature ycbcrImageArrays not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) ) |
| { |
| if ( physicalDevice16BitStorageFeatures.storageBuffer16BitAccess == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature storageBuffer16BitAccess not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) ) |
| { |
| if ( physicalDevice8BitStorageFeatures.storageBuffer8BitAccess == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature storageBuffer8BitAccess not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature accelerationStructure not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature descriptorBindingAccelerationStructureUpdateAfterBind not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) ) |
| { |
| if ( physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) |
| { |
| if ( physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_dynamic_rendering_local_read")) ) |
| { |
| if ( physicalDeviceDynamicRenderingLocalReadFeaturesKHR.dynamicRenderingLocalRead == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature dynamicRenderingLocalRead not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_global_priority_query")) ) |
| { |
| if ( physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_global_priority")) ) |
| { |
| if ( physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) ) |
| { |
| if ( physicalDeviceImagelessFramebufferFeatures.imagelessFramebuffer == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_index_type_uint8")) ) |
| { |
| if ( physicalDeviceIndexTypeUint8FeaturesKHR.indexTypeUint8 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_index_type_uint8")) ) |
| { |
| if ( physicalDeviceIndexTypeUint8FeaturesKHR.indexTypeUint8 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) ) |
| { |
| if ( ( physicalDeviceLineRasterizationFeaturesKHR.rectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.bresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.smoothLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledRectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledBresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledSmoothLines == VK_FALSE ) ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_line_rasterization")) ) |
| { |
| if ( ( physicalDeviceLineRasterizationFeaturesKHR.rectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.bresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.smoothLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledRectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledBresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledSmoothLines == VK_FALSE ) ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_maintenance5")) ) |
| { |
| if ( physicalDeviceMaintenance5FeaturesKHR.maintenance5 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature maintenance5 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_maintenance6")) ) |
| { |
| if ( physicalDeviceMaintenance6FeaturesKHR.maintenance6 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature maintenance6 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) ) |
| { |
| if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) ) |
| { |
| if ( physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature performanceCounterQueryPools not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_pipeline_executable_properties")) ) |
| { |
| if ( physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature pipelineExecutableInfo not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_present_id")) ) |
| { |
| if ( physicalDevicePresentIdFeaturesKHR.presentId == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature presentId not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_present_wait")) ) |
| { |
| if ( physicalDevicePresentWaitFeaturesKHR.presentWait == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature presentWait not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) |
| { |
| if ( physicalDeviceRayQueryFeaturesKHR.rayQuery == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature rayQuery not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_maintenance1")) ) |
| { |
| if ( physicalDeviceRayTracingMaintenance1FeaturesKHR.rayTracingMaintenance1 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature rayTracingMaintenance1 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) ) |
| { |
| if ( ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline == VK_FALSE ) && ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect == VK_FALSE ) ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature rayTracingPipeline or rayTracingPipelineTraceRaysIndirect not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) |
| { |
| if ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature rayTraversalPrimitiveCulling not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_position_fetch")) ) |
| { |
| if ( physicalDeviceRayTracingPositionFetchFeaturesKHR.rayTracingPositionFetch == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature rayTracingPositionFetch not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) ) |
| { |
| if ( physicalDeviceSamplerYcbcrConversionFeaturesKHR.samplerYcbcrConversion == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature samplerYcbcrConversion not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) ) |
| { |
| if ( physicalDeviceSeparateDepthStencilLayoutsFeatures.separateDepthStencilLayouts == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) ) |
| { |
| if ( physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_clock")) ) |
| { |
| if ( physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupClock not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_expect_assume")) ) |
| { |
| if ( physicalDeviceShaderExpectAssumeFeaturesKHR.shaderExpectAssume == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderExpectAssume not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) ) |
| { |
| if ( ( physicalDeviceShaderFloat16Int8Features.shaderFloat16 == VK_FALSE ) && ( physicalDeviceShaderFloat16Int8Features.shaderInt8 == VK_FALSE ) ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderFloat16 or shaderInt8 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float_controls2")) ) |
| { |
| if ( physicalDeviceShaderFloatControls2FeaturesKHR.shaderFloatControls2 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderFloatControls2 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_integer_dot_product")) ) |
| { |
| if ( physicalDeviceShaderIntegerDotProductFeaturesKHR.shaderIntegerDotProduct == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_maximal_reconvergence")) ) |
| { |
| if ( physicalDeviceShaderMaximalReconvergenceFeaturesKHR.shaderMaximalReconvergence == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderMaximalReconvergence not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_quad_control")) ) |
| { |
| if ( physicalDeviceShaderQuadControlFeaturesKHR.shaderQuadControl == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderQuadControl not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) ) |
| { |
| if ( physicalDeviceShaderSubgroupExtendedTypesFeatures.shaderSubgroupExtendedTypes == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_rotate")) ) |
| { |
| if ( physicalDeviceShaderSubgroupRotateFeaturesKHR.shaderSubgroupRotate == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupRotate not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_uniform_control_flow")) ) |
| { |
| if ( physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupUniformControlFlow not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_terminate_invocation")) ) |
| { |
| if ( physicalDeviceShaderTerminateInvocationFeaturesKHR.shaderTerminateInvocation == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) ) |
| { |
| if ( physicalDeviceSynchronization2FeaturesKHR.synchronization2 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) ) |
| { |
| if ( physicalDeviceTimelineSemaphoreFeatures.timelineSemaphore == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) ) |
| { |
| if ( physicalDeviceUniformBufferStandardLayoutFeatures.uniformBufferStandardLayout == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_variable_pointers")) ) |
| { |
| if ( physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature variablePointersStorageBuffer not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_attribute_divisor")) ) |
| { |
| if ( physicalDeviceVertexAttributeDivisorFeaturesKHR.vertexAttributeInstanceRateDivisor == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_vertex_attribute_divisor")) ) |
| { |
| if ( physicalDeviceVertexAttributeDivisorFeaturesKHR.vertexAttributeInstanceRateDivisor == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) ) |
| { |
| if ( physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModel == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_workgroup_memory_explicit_layout")) ) |
| { |
| if ( ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess == VK_FALSE ) ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature workgroupMemoryExplicitLayout or workgroupMemoryExplicitLayoutScalarBlockLayout or workgroupMemoryExplicitLayout8BitAccess or workgroupMemoryExplicitLayout16BitAccess not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_zero_initialize_workgroup_memory")) ) |
| { |
| if ( physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.shaderZeroInitializeWorkgroupMemory == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_VALVE_mutable_descriptor_type")) ) |
| { |
| if ( physicalDeviceMutableDescriptorTypeFeaturesVALVE.mutableDescriptorType == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| { |
| if ( coreFeatures.features.robustBufferAccess == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature robustBufferAccess not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics ) |
| { |
| if ( coreFeatures.features.shaderInt64 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics ) |
| { |
| if ( coreFeatures.features.shaderInt64 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( physicalDeviceShaderAtomicInt64Features.shaderSharedInt64Atomics ) |
| { |
| if ( coreFeatures.features.shaderInt64 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics ) |
| { |
| if ( coreFeatures.features.shaderInt64 == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) ) |
| { |
| if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) |
| { |
| if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) |
| { |
| if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| #if defined(CTS_USES_VULKAN) |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) |
| { |
| if ( physicalDeviceVulkan11Features.multiview == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| #endif // defined(CTS_USES_VULKAN) |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) |
| { |
| if ( physicalDeviceVulkan12Features.subgroupBroadcastDynamicId == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature subgroupBroadcastDynamicId not supported" << tcu::TestLog::EndMessage; |
| result = false; |
| } |
| } |
| |
| if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) |
| { |
| if ( physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes == VK_FALSE ) |
| { |
| log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not s
|