VKPHYSICALDEVICEFEAT(3)

NAME
VkPhysicalDeviceFeatures - Structure describing the fine-grained features that can be supported by an implementation.

C SPECIFICATION

    typedef struct VkPhysicalDeviceFeatures {
        VkBool32    robustBufferAccess;
        VkBool32    fullDrawIndexUint32;
        VkBool32    imageCubeArray;
        VkBool32    independentBlend;
        VkBool32    geometryShader;
        VkBool32    tessellationShader;
        VkBool32    sampleRateShading;
        VkBool32    dualSrcBlend;
        VkBool32    logicOp;
        VkBool32    multiDrawIndirect;
        VkBool32    drawIndirectFirstInstance;
        VkBool32    depthClamp;
        VkBool32    depthBiasClamp;
        VkBool32    fillModeNonSolid;
        VkBool32    depthBounds;
        VkBool32    wideLines;
        VkBool32    largePoints;
        VkBool32    alphaToOne;
        VkBool32    multiViewport;
        VkBool32    samplerAnisotropy;
        VkBool32    textureCompressionETC2;
        VkBool32    textureCompressionASTC_LDR;
        VkBool32    textureCompressionBC;
        VkBool32    occlusionQueryPrecise;
        VkBool32    pipelineStatisticsQuery;
        VkBool32    vertexPipelineStoresAndAtomics;
        VkBool32    fragmentStoresAndAtomics;
        VkBool32    shaderTessellationAndGeometryPointSize;
        VkBool32    shaderImageGatherExtended;
        VkBool32    shaderStorageImageExtendedFormats;
        VkBool32    shaderStorageImageMultisample;
        VkBool32    shaderStorageImageReadWithoutFormat;
        VkBool32    shaderStorageImageWriteWithoutFormat;
        VkBool32    shaderUniformBufferArrayDynamicIndexing;
        VkBool32    shaderSampledImageArrayDynamicIndexing;
        VkBool32    shaderStorageBufferArrayDynamicIndexing;
        VkBool32    shaderStorageImageArrayDynamicIndexing;
        VkBool32    shaderClipDistance;
        VkBool32    shaderCullDistance;
        VkBool32    shaderFloat64;
        VkBool32    shaderInt64;
        VkBool32    shaderInt16;
        VkBool32    shaderResourceResidency;
        VkBool32    shaderResourceMinLod;
        VkBool32    sparseBinding;
        VkBool32    sparseResidencyBuffer;
        VkBool32    sparseResidencyImage2D;
        VkBool32    sparseResidencyImage3D;
        VkBool32    sparseResidency2Samples;
        VkBool32    sparseResidency4Samples;
        VkBool32    sparseResidency8Samples;
        VkBool32    sparseResidency16Samples;
        VkBool32    sparseResidencyAliased;
        VkBool32    variableMultisampleRate;
        VkBool32    inheritedQueries;
    } VkPhysicalDeviceFeatures;

FIELDS

robustBufferAccess
    out of bounds buffer accesses are well defined

fullDrawIndexUint32
    full 32-bit range of indices are supported for indexed draw calls using VK_INDEX_TYPE_UINT32.

imageCubeArray
    image views which are arrays of cube maps are supported (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY)

independentBlend
    blending operations are controlled independently per-attachment

geometryShader
    geometry shader stage is supported

tessellationShader
    tessellation control and evaluation shader stages are supported

sampleRateShading
    per-sample shading and multisample interpolation are supported

dualSrcBlend
    blend operations which take two sources are supported

logicOp
    logic operations are supported

multiDrawIndirect
    multi draw indirect is supported

depthClamp
    depth clamping is supported

depthBiasClamp
    depth bias clamping is supported

fillModeNonSolid
    point and wireframe fill modes are supported

depthBounds
    depth bounds test is supported

wideLines
    lines with width greater than 1 are supported

largePoints
    points with size greater than 1 are supported

alphaToOne
    the implementation can replace the alpha value of the color fragment output to the maximum representable alpha value for fixed-point colors or 1.0 for floating-point colors.

multiViewport
    mulitple viewports are supported

samplerAnisotropy
    Anisotropic filtering is supported

textureCompressionETC2
    ETC and EAC texture compression formats are supported

textureCompressionASTC_LDR
    ASTC LDR texture compression formats are supported

textureCompressionBC
    BC1-7 texture compressed formats are supported

pipelineStatisticsQuery
    pipeline statistics queries are supported

vertexPipelineStoresAndAtomics
    storage buffers and images support stores and atomic operationscan in the vertex, tessellation, and geometry shader stages.

fragmentStoresAndAtomics
    storage buffers and images support stores and atomic operationscan in the fragment shader stage.

shaderTessellationAndGeometryPointSize
    the PointSize shader builtin is available in the tessellation control, tessellation evaluation, and geometry shader stages.

shaderImageGatherExtended
    image gather with non-constant offset and image gather with offsets are supported

shaderStorageImageExtendedFormats
    the extended set of image formats can be used for storage images

shaderStorageImageMultisample
    multisample images can be used for storage images

shaderUniformBufferArrayDynamicIndexing
    arrays of uniform buffers can be accessed with dynamically uniform indices

shaderSampledImageArrayDynamicIndexing
    arrays of samplers and sampled images can be accessed with dynamically uniform indices

shaderStorageBufferArrayDynamicIndexing
    arrays of storage buffers can be accessed with dynamically uniform indices

shaderStorageImageArrayDynamicIndexing
    arrays of storage images can be accessed with dynamically uniform indices

shaderClipDistance
    clip distance is supported in shader code

shaderCullDistance
    cull distance is supported in shader code

shaderFloat64
    64-bit floats (doubles) are supported in shader code

shaderInt64
    64-bit integers are supported in shader code

shaderInt16
    16-bit integers are supported in shader code

shaderResourceResidency
    image operations that return resource residency information are supported in shader code

shaderResourceMinLod
    image operations that specify minimum resource Lod are supported in shader code

sparseBinding
    indicates whether resource memory can be managed at opaque page level

shaderResourceResidency
    Sparse resources support: Resource memory can be managed at opaque page level rather than object level

sparseResidencyBuffer
    Sparse resources support: physical device can access partially resident buffers

sparseResidencyImage2D
    Sparse resources support: physical device can access partially resident 2D (non-MSAA non-DepthStencil) images

sparseResidencyImage3D
    Sparse resources support: physical device can access partially resident 3D images

sparseResidency2Samples
    Sparse resources support: physical device can access partially resident MSAA 2D images with 2 samples

sparseResidency4Samples
    Sparse resources support: physical device can access partially resident MSAA 2D images with 4 samples

sparseResidency8Samples
    Sparse resources support: physical device can access partially resident MSAA 2D images with 8 samples

sparseResidency16Samples
    Sparse resources support: physical device can access partially resident MSAA 2D images with 16 samples

sparseResidencyAliased
    Sparse resources support: physical device can correctly access data aliased into multiple locations (opt-in)

DESCRIPTION

The VkPhysicalDeviceFeatures structure contains a feature flag for each of the fine-grained features that may be supported by an implementation.

When passed to vkGetPhysicalDeviceFeatures as the pFeatures parameter, the implementation will fill in each member of the structure with VK_TRUE if the indicated physicalDevice supports the feature, or with VK_FALSE if the physical device does not support the feature.

Fine-grained features must be enabled at VkDevice creation time. This is done by passing a pointer to a VkPhysicalDeviceFeatures structure in the pEnabledFeatures member of the VkDeviceCreateInfo structure that is passed to vkCreateDevice. In this case, setting a member of the structure to VK_TRUE will enable support for the feature on the indictated physical device, and setting a member to VK_FALSE will disable support for the feature.

include::../validity/structs/VkPhysicalDeviceFeatures .txt[]

SEE ALSO

vkGetPhysicalDeviceFeatures, vkGetPhysicalDeviceProperties, vkCreateDevice

COPYRIGHT

Copyright © 2014-2016 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.

AUTHOR

Khronos Group
    Author.