Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- getImageDrmFormatModifierPropertiesEXT :: forall io. MonadIO io => Device -> Image -> io ImageDrmFormatModifierPropertiesEXT
- data DrmFormatModifierPropertiesListEXT = DrmFormatModifierPropertiesListEXT {}
- data DrmFormatModifierPropertiesEXT = DrmFormatModifierPropertiesEXT {}
- data PhysicalDeviceImageDrmFormatModifierInfoEXT = PhysicalDeviceImageDrmFormatModifierInfoEXT {}
- data ImageDrmFormatModifierListCreateInfoEXT = ImageDrmFormatModifierListCreateInfoEXT {}
- data ImageDrmFormatModifierExplicitCreateInfoEXT = ImageDrmFormatModifierExplicitCreateInfoEXT {}
- data ImageDrmFormatModifierPropertiesEXT = ImageDrmFormatModifierPropertiesEXT {}
- type EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1
- pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION :: forall a. Integral a => a
- type EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier"
- pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
getImageDrmFormatModifierPropertiesEXT Source #
:: forall io. MonadIO io | |
=> Device |
|
-> Image |
|
-> io ImageDrmFormatModifierPropertiesEXT |
vkGetImageDrmFormatModifierPropertiesEXT - Returns an image’s DRM format modifier
Return Codes
See Also
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
DrmFormatModifierPropertiesListEXT | |
|
Instances
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
DrmFormatModifierPropertiesEXT | |
|
Instances
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
isSHARING_MODE_CONCURRENT
, thenpQueueFamilyIndices
must be a valid pointer to an array ofqueueFamilyIndexCount
uint32_t
values
- If
sharingMode
isSHARING_MODE_CONCURRENT
, thenqueueFamilyIndexCount
must be greater than1
- If
sharingMode
isSHARING_MODE_CONCURRENT
, each element ofpQueueFamilyIndices
must be unique and must be less than thepQueueFamilyPropertyCount
returned bygetPhysicalDeviceQueueFamilyProperties2
for thephysicalDevice
that was used to createdevice
Valid Usage (Implicit)
sharingMode
must be a validSharingMode
value
See Also
PhysicalDeviceImageDrmFormatModifierInfoEXT | |
|
Instances
data ImageDrmFormatModifierListCreateInfoEXT Source #
VkImageDrmFormatModifierListCreateInfoEXT - Specify that an image must be created with a DRM format modifier from the provided list
Valid Usage
- Each modifier in
pDrmFormatModifiers
must be compatible with the parameters inImageCreateInfo
and itspNext
chain, as determined by queryingPhysicalDeviceImageFormatInfo2
extended withPhysicalDeviceImageDrmFormatModifierInfoEXT
Valid Usage (Implicit)
pDrmFormatModifiers
must be a valid pointer to an array ofdrmFormatModifierCount
uint64_t
valuesdrmFormatModifierCount
must be greater than0
See Also
ImageDrmFormatModifierListCreateInfoEXT | |
|
Instances
data ImageDrmFormatModifierExplicitCreateInfoEXT Source #
VkImageDrmFormatModifierExplicitCreateInfoEXT - Specify that an image be created with the provided DRM format modifier and explicit memory layout
Description
The i
th member of pPlaneLayouts
describes the layout of the image’s
i
th 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
drmFormatModifier
must be compatible with the parameters inImageCreateInfo
and itspNext
chain, as determined by queryingPhysicalDeviceImageFormatInfo2
extended withPhysicalDeviceImageDrmFormatModifierInfoEXT
drmFormatModifierPlaneCount
must be equal to theDrmFormatModifierPropertiesEXT
::drmFormatModifierPlaneCount
associated withImageCreateInfo
::format
anddrmFormatModifier
, as found by queryingDrmFormatModifierPropertiesListEXT
- For each element of
pPlaneLayouts
,size
must be 0 - For each element of
pPlaneLayouts
,arrayPitch
must be 0 ifImageCreateInfo
::arrayLayers
is 1 - For each element of
pPlaneLayouts
,depthPitch
must be 0 ifImageCreateInfo
::extent.depth
is 1
Valid Usage (Implicit)
- If
drmFormatModifierPlaneCount
is not0
,pPlaneLayouts
must be a valid pointer to an array ofdrmFormatModifierPlaneCount
SubresourceLayout
structures
See Also
ImageDrmFormatModifierExplicitCreateInfoEXT | |
|
Instances
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
ImageDrmFormatModifierPropertiesEXT | |
|
Instances
pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION :: forall a. Integral a => a Source #
type EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" Source #
pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #