Structures

VkPhysicalDeviceVulkan14Features

Structure describing the Vulkan 1.4 features that can be supported by an implementation

The VkPhysicalDeviceVulkan14Features structure is defined as:

typedef struct VkPhysicalDeviceVulkan14Features {
    VkStructureType sType;
    void* pNext;
    VkBool32 globalPriorityQuery;
    VkBool32 shaderSubgroupRotate;
    VkBool32 shaderSubgroupRotateClustered;
    VkBool32 shaderFloatControls2;
    VkBool32 shaderExpectAssume;
    VkBool32 rectangularLines;
    VkBool32 bresenhamLines;
    VkBool32 smoothLines;
    VkBool32 stippledRectangularLines;
    VkBool32 stippledBresenhamLines;
    VkBool32 stippledSmoothLines;
    VkBool32 vertexAttributeInstanceRateDivisor;
    VkBool32 vertexAttributeInstanceRateZeroDivisor;
    VkBool32 indexTypeUint8;
    VkBool32 dynamicRenderingLocalRead;
    VkBool32 maintenance5;
    VkBool32 maintenance6;
    VkBool32 pipelineProtectedAccess;
    VkBool32 pipelineRobustness;
    VkBool32 hostImageCopy;
    VkBool32 pushDescriptor;
} VkPhysicalDeviceVulkan14Features;

This structure describes the following features:

  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • globalPriorityQuery indicates whether the implementation supports the ability to query global queue priorities.
  • shaderSubgroupRotate specifies whether shader modules can declare the GroupNonUniformRotateKHR capability.
  • shaderSubgroupRotateClustered specifies whether shader modules can use the ClusterSize operand to OpGroupNonUniformRotateKHR.
  • shaderFloatControls2 specifies whether shader modules can declare the FloatControls2 capability.
  • shaderExpectAssume specifies whether shader modules can declare the ExpectAssumeKHR capability.
  • rectangularLines indicates whether the implementation supports rectangular line rasterization.
  • bresenhamLines indicates whether the implementation supports Bresenham-style line rasterization.
  • smoothLines indicates whether the implementation supports smooth line rasterization.
  • stippledRectangularLines indicates whether the implementation supports stippled line rasterization with VK_LINE_RASTERIZATION_MODE_RECTANGULAR lines.
  • stippledBresenhamLines indicates whether the implementation supports stippled line rasterization with VK_LINE_RASTERIZATION_MODE_BRESENHAM lines.
  • stippledSmoothLines indicates whether the implementation supports stippled line rasterization with VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH lines.
  • vertexAttributeInstanceRateDivisor specifies whether vertex attribute fetching may be repeated in the case of instanced rendering.
  • vertexAttributeInstanceRateZeroDivisor specifies whether a zero value for VkVertexInputBindingDivisorDescriptionEXT::divisor is supported.
  • indexTypeUint8 indicates that VK_INDEX_TYPE_UINT8 can be used with vkCmdBindIndexBuffer2 and vkCmdBindIndexBuffer.
  • dynamicRenderingLocalRead specifies that the implementation supports local reads inside dynamic render pass instances using the vkCmdBeginRendering command.
  • maintenance5 indicates that the implementation supports the following:
    • The ability to expose support for the optional format VK_FORMAT_A1B5G5R5_UNORM_PACK16.
    • The ability to expose support for the optional format VK_FORMAT_A8_UNORM.
    • A property to indicate that multisample coverage operations are performed after sample counting in EarlyFragmentTests mode.
    • Creating a VkBufferView with a subset of the associated VkBuffer usage using VkBufferUsageFlags2CreateInfo.
    • A new function vkCmdBindIndexBuffer2, allowing a range of memory to be bound as an index buffer.
    • vkGetDeviceProcAddr will return NULL for function pointers of core functions for versions higher than the version requested by the application.
    • vkCmdBindVertexBuffers2 supports using VK_WHOLE_SIZE in the pSizes parameter.
    • If PointSize is not written, a default value of 1.0 is used for the size of points.
    • VkShaderModuleCreateInfo can be added as a chained structure to pipeline creation via VkPipelineShaderStageCreateInfo, rather than having to create a shader module.
    • A function vkGetRenderingAreaGranularity to query the optimal render area for a dynamic rendering instance.
    • A property to indicate that depth/stencil texturing operations with VK_COMPONENT_SWIZZLE_ONE have defined behavior.
    • vkGetDeviceImageSubresourceLayout allows an application to perform a vkGetImageSubresourceLayout query without having to create an image.
    • VK_REMAINING_ARRAY_LAYERS as the layerCount member of VkImageSubresourceLayers.
    • A property to indicate whether PointSize controls the final rasterization of polygons if polygon mode is VK_POLYGON_MODE_POINT.
    • Two properties to indicate the non-strict line rasterization algorithm used.
    • Two new flags words VkPipelineCreateFlagBits2 and VkBufferUsageFlagBits2.
    • Physical-device-level functions can now be called with any value in the valid range for a type beyond the defined enumerants, such that applications can avoid checking individual features, extensions, or versions before querying supported properties of a particular enumerant.
    • Copies between images of any type are allowed, with 1D images treated as 2D images with a height of 1.
  • maintenance6 indicates that the implementation supports the following:
  • pipelineProtectedAccess indicates whether the implementation supports specifying protected access on individual pipelines.
  • pipelineRobustness indicates that robustness can be requested on a per-pipeline-stage granularity.
  • hostImageCopy indicates that the implementation supports copying from host memory to images using the vkCopyMemoryToImage command, copying from images to host memory using the vkCopyImageToMemory command, and copying between images using the vkCopyImageToImage command.
  • pushDescriptor indicates that the implementation supports push descriptors.

If the VkPhysicalDeviceVulkan14Features structure is included in the pNext chain of the VkPhysicalDeviceFeatures2 structure passed to vkGetPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. If the application wishes to use a VkDevice with any features described by VkPhysicalDeviceVulkan14Features, it must add an instance of the structure, with the desired feature members set to VK_TRUE, to the pNext chain of VkDeviceCreateInfo when creating the VkDevice.

Valid Usage (Implicit)

VUID-VkPhysicalDeviceVulkan14Features-sType-sType

sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES