vulkan-3.4: Bindings to the Vulkan graphics API.
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Synopsis

Documentation

getImageDrmFormatModifierPropertiesEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the image.

device must be a valid Device handle

-> Image

image is the queried image.

image must have been created with tiling equal to IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT

image must be a valid Image handle

image must have been created, allocated, or retrieved from device

-> io ImageDrmFormatModifierPropertiesEXT 

vkGetImageDrmFormatModifierPropertiesEXT - Returns an image’s DRM format modifier

Return Codes

Success

See Also

Device, Image, ImageDrmFormatModifierPropertiesEXT

data DrmFormatModifierPropertiesListEXT Source #

VkDrmFormatModifierPropertiesListEXT - Structure specifying the list of DRM format modifiers supported for a format

Description

If pDrmFormatModifierProperties is NULL, then the function returns in drmFormatModifierCount the number of modifiers compatible with the queried format. Otherwise, the application must set drmFormatModifierCount to the length of the array pDrmFormatModifierProperties; the function will write at most drmFormatModifierCount elements to the array, and will return in drmFormatModifierCount the number of elements written.

Among the elements in array pDrmFormatModifierProperties, each returned drmFormatModifier must be unique.

Valid Usage (Implicit)

See Also

DrmFormatModifierPropertiesEXT, StructureType

Constructors

DrmFormatModifierPropertiesListEXT 

Fields

Instances

Instances details
Eq DrmFormatModifierPropertiesListEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Show DrmFormatModifierPropertiesListEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Generic DrmFormatModifierPropertiesListEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Associated Types

type Rep DrmFormatModifierPropertiesListEXT :: Type -> Type #

Storable DrmFormatModifierPropertiesListEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

FromCStruct DrmFormatModifierPropertiesListEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

ToCStruct DrmFormatModifierPropertiesListEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Zero DrmFormatModifierPropertiesListEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep DrmFormatModifierPropertiesListEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep DrmFormatModifierPropertiesListEXT = D1 ('MetaData "DrmFormatModifierPropertiesListEXT" "Vulkan.Extensions.VK_EXT_image_drm_format_modifier" "vulkan-3.4-inplace" 'False) (C1 ('MetaCons "DrmFormatModifierPropertiesListEXT" 'PrefixI 'True) (S1 ('MetaSel ('Just "drmFormatModifierCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Just "drmFormatModifierProperties") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Ptr DrmFormatModifierPropertiesEXT))))

data DrmFormatModifierPropertiesEXT Source #

VkDrmFormatModifierPropertiesEXT - Structure specifying properties of a format when combined with a DRM format modifier

Description

The returned drmFormatModifierTilingFeatures must contain at least one bit.

The implementation must not return DRM_FORMAT_MOD_INVALID in drmFormatModifier.

An image’s memory planecount (as returned by drmFormatModifierPlaneCount) is distinct from its format planecount (in the sense of multi-planar Y′CBCR formats). In ImageAspectFlags, each VK_IMAGE_ASPECT_MEMORY_PLANE/i_BIT_EXT represents a _memory plane/ and each VK_IMAGE_ASPECT_PLANE/i_BIT a _format plane/.

An image’s set of format planes is an ordered partition of the image’s content into separable groups of format channels. The ordered partition is encoded in the name of each Format. For example, FORMAT_G8_B8R8_2PLANE_420_UNORM contains two format planes; the first plane contains the green channel and the second plane contains the blue channel and red channel. If the format name does not contain PLANE, then the format contains a single plane; for example, FORMAT_R8G8B8A8_UNORM. Some commands, such as cmdCopyBufferToImage, do not operate on all format channels in the image, but instead operate only on the format planes explicitly chosen by the application and operate on each format plane independently.

An image’s set of memory planes is an ordered partition of the image’s memory rather than the image’s content. Each memory plane is a contiguous range of memory. The union of an image’s memory planes is not necessarily contiguous.

If an image is linear, then the partition is the same for memory planes and for /format planes/. Therefore, if the returned drmFormatModifier is DRM_FORMAT_MOD_LINEAR, then drmFormatModifierPlaneCount must equal the format planecount, and drmFormatModifierTilingFeatures must be identical to the FormatProperties2::linearTilingFeatures returned in the same pNext chain.

If an image is non-linear, then the partition of the image’s memory into memory planes is implementation-specific and may be unrelated to the partition of the image’s content into format planes. For example, consider an image whose format is FORMAT_G8_B8_R8_3PLANE_420_UNORM, tiling is IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, whose drmFormatModifier is not DRM_FORMAT_MOD_LINEAR, and flags lacks IMAGE_CREATE_DISJOINT_BIT. The image has 3 format planes, and commands such cmdCopyBufferToImage act on each format plane independently as if the data of each format plane were separable from the data of the other planes. In a straightforward implementation, the implementation may store the image’s content in 3 adjacent memory planes where each memory plane corresponds exactly to a format plane. However, the implementation may also store the image’s content in a single memory plane where all format channels are combined using an implementation-private block-compressed format; or the implementation may store the image’s content in a collection of 7 adjacent memory planes using an implementation-private sharding technique. Because the image is non-linear and non-disjoint, the implementation has much freedom when choosing the image’s placement in memory.

The memory planecount applies to function parameters and structures only when the API specifies an explicit requirement on drmFormatModifierPlaneCount. In all other cases, the /memory planecount/ is ignored.

See Also

DrmFormatModifierPropertiesListEXT, FormatFeatureFlags

Constructors

DrmFormatModifierPropertiesEXT 

Fields

Instances

Instances details
Eq DrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Show DrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Generic DrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Associated Types

type Rep DrmFormatModifierPropertiesEXT :: Type -> Type #

Storable DrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

FromCStruct DrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

ToCStruct DrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Zero DrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep DrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep DrmFormatModifierPropertiesEXT = D1 ('MetaData "DrmFormatModifierPropertiesEXT" "Vulkan.Extensions.VK_EXT_image_drm_format_modifier" "vulkan-3.4-inplace" 'False) (C1 ('MetaCons "DrmFormatModifierPropertiesEXT" 'PrefixI 'True) (S1 ('MetaSel ('Just "drmFormatModifier") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Word64) :*: (S1 ('MetaSel ('Just "drmFormatModifierPlaneCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Just "drmFormatModifierTilingFeatures") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 FormatFeatureFlags))))

data PhysicalDeviceImageDrmFormatModifierInfoEXT Source #

VkPhysicalDeviceImageDrmFormatModifierInfoEXT - Structure specifying a DRM format modifier as image creation parameter

Description

If the drmFormatModifier is incompatible with the parameters specified in PhysicalDeviceImageFormatInfo2 and its pNext chain, then getPhysicalDeviceImageFormatProperties2 returns ERROR_FORMAT_NOT_SUPPORTED. The implementation must support the query of any drmFormatModifier, including unknown and invalid modifier values.

Valid Usage

  • If sharingMode is SHARING_MODE_CONCURRENT, then pQueueFamilyIndices must be a valid pointer to an array of queueFamilyIndexCount uint32_t values

Valid Usage (Implicit)

See Also

SharingMode, StructureType

Constructors

PhysicalDeviceImageDrmFormatModifierInfoEXT 

Fields

Instances

Instances details
Show PhysicalDeviceImageDrmFormatModifierInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Generic PhysicalDeviceImageDrmFormatModifierInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

FromCStruct PhysicalDeviceImageDrmFormatModifierInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

ToCStruct PhysicalDeviceImageDrmFormatModifierInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Zero PhysicalDeviceImageDrmFormatModifierInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep PhysicalDeviceImageDrmFormatModifierInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep PhysicalDeviceImageDrmFormatModifierInfoEXT = D1 ('MetaData "PhysicalDeviceImageDrmFormatModifierInfoEXT" "Vulkan.Extensions.VK_EXT_image_drm_format_modifier" "vulkan-3.4-inplace" 'False) (C1 ('MetaCons "PhysicalDeviceImageDrmFormatModifierInfoEXT" 'PrefixI 'True) (S1 ('MetaSel ('Just "drmFormatModifier") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Word64) :*: (S1 ('MetaSel ('Just "sharingMode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 SharingMode) :*: S1 ('MetaSel ('Just "queueFamilyIndices") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Vector Word32)))))

data ImageDrmFormatModifierListCreateInfoEXT Source #

VkImageDrmFormatModifierListCreateInfoEXT - Specify that an image must be created with a DRM format modifier from the provided list

Valid Usage

Valid Usage (Implicit)

  • pDrmFormatModifiers must be a valid pointer to an array of drmFormatModifierCount uint64_t values
  • drmFormatModifierCount must be greater than 0

See Also

StructureType

Constructors

ImageDrmFormatModifierListCreateInfoEXT 

Fields

Instances

Instances details
Show ImageDrmFormatModifierListCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Generic ImageDrmFormatModifierListCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

FromCStruct ImageDrmFormatModifierListCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

ToCStruct ImageDrmFormatModifierListCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Zero ImageDrmFormatModifierListCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep ImageDrmFormatModifierListCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep ImageDrmFormatModifierListCreateInfoEXT = D1 ('MetaData "ImageDrmFormatModifierListCreateInfoEXT" "Vulkan.Extensions.VK_EXT_image_drm_format_modifier" "vulkan-3.4-inplace" 'False) (C1 ('MetaCons "ImageDrmFormatModifierListCreateInfoEXT" 'PrefixI 'True) (S1 ('MetaSel ('Just "drmFormatModifiers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Vector Word64))))

data ImageDrmFormatModifierExplicitCreateInfoEXT Source #

VkImageDrmFormatModifierExplicitCreateInfoEXT - Specify that an image be created with the provided DRM format modifier and explicit memory layout

Description

The ith member of pPlaneLayouts describes the layout of the image’s ith memory plane (that is, VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT). In each element of pPlaneLayouts, the implementation must ignore size. The implementation calculates the size of each plane, which the application can query with getImageSubresourceLayout.

When creating an image with ImageDrmFormatModifierExplicitCreateInfoEXT, it is the application’s responsibility to satisfy all valid usage requirements. However, the implementation must validate that the provided pPlaneLayouts, when combined with the provided drmFormatModifier and other creation parameters in ImageCreateInfo and its pNext chain, produce a valid image. (This validation is necessarily implementation-dependent and outside the scope of Vulkan, and therefore not described by valid usage requirements). If this validation fails, then createImage returns ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT.

Valid Usage

Valid Usage (Implicit)

  • If drmFormatModifierPlaneCount is not 0, pPlaneLayouts must be a valid pointer to an array of drmFormatModifierPlaneCount SubresourceLayout structures

See Also

StructureType, SubresourceLayout

Constructors

ImageDrmFormatModifierExplicitCreateInfoEXT 

Fields

Instances

Instances details
Show ImageDrmFormatModifierExplicitCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Generic ImageDrmFormatModifierExplicitCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

FromCStruct ImageDrmFormatModifierExplicitCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

ToCStruct ImageDrmFormatModifierExplicitCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Zero ImageDrmFormatModifierExplicitCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep ImageDrmFormatModifierExplicitCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep ImageDrmFormatModifierExplicitCreateInfoEXT = D1 ('MetaData "ImageDrmFormatModifierExplicitCreateInfoEXT" "Vulkan.Extensions.VK_EXT_image_drm_format_modifier" "vulkan-3.4-inplace" 'False) (C1 ('MetaCons "ImageDrmFormatModifierExplicitCreateInfoEXT" 'PrefixI 'True) (S1 ('MetaSel ('Just "drmFormatModifier") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Word64) :*: S1 ('MetaSel ('Just "planeLayouts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Vector SubresourceLayout))))

data ImageDrmFormatModifierPropertiesEXT Source #

VkImageDrmFormatModifierPropertiesEXT - Properties of an image’s Linux DRM format modifier

Description

If the image was created with ImageDrmFormatModifierListCreateInfoEXT, then the returned drmFormatModifier must belong to the list of modifiers provided at time of image creation in ImageDrmFormatModifierListCreateInfoEXT::pDrmFormatModifiers. If the image was created with ImageDrmFormatModifierExplicitCreateInfoEXT, then the returned drmFormatModifier must be the modifier provided at time of image creation in ImageDrmFormatModifierExplicitCreateInfoEXT::drmFormatModifier.

Valid Usage (Implicit)

See Also

StructureType, getImageDrmFormatModifierPropertiesEXT

Constructors

ImageDrmFormatModifierPropertiesEXT 

Fields

Instances

Instances details
Eq ImageDrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Show ImageDrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Generic ImageDrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Storable ImageDrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

FromCStruct ImageDrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

ToCStruct ImageDrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

Zero ImageDrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep ImageDrmFormatModifierPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_drm_format_modifier

type Rep ImageDrmFormatModifierPropertiesEXT = D1 ('MetaData "ImageDrmFormatModifierPropertiesEXT" "Vulkan.Extensions.VK_EXT_image_drm_format_modifier" "vulkan-3.4-inplace" 'False) (C1 ('MetaCons "ImageDrmFormatModifierPropertiesEXT" 'PrefixI 'True) (S1 ('MetaSel ('Just "drmFormatModifier") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Word64)))

type EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" Source #