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 VkImageAspectFlags, 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 components. The ordered partition is encoded in the name of each VkFormat. For example, FORMAT_G8_B8R8_2PLANE_420_UNORM contains two format planes; the first plane contains the green component and the second plane contains the blue component and red component. 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 components 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 VkFormatProperties2::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 components 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.
VkDrmFormatModifierPropertiesListEXT
struct VkDrmFormatModifierPropertiesEXT {
uint64_t drmFormatModifier;
uint32_t drmFormatModifierPlaneCount;
VkFormatFeatureFlags drmFormatModifierTilingFeatures;
}
| Modifier and Type | Class and Description |
|---|---|
| public static class | VkDrmFormatModifierPropertiesEXT.
An array of |
| Modifier and Type | Field and Description |
|---|---|
| public static final int | ALIGNOF
The struct alignment in bytes. |
| public static final int | DRMFORMATMODIFIER
The struct member offsets. |
| public static final int | DRMFORMATMODIFIERPLANECOUNT
The struct member offsets. |
| public static final int | DRMFORMATMODIFIERTILINGFEATURES
The struct member offsets. |
| public static final int | SIZEOF
The struct size in bytes. |
| Access | Constructor and Description |
|---|---|
| protected | |
| public | VkDrmFormatModifierPropertiesEXT(ByteBuffer container)
Creates a |
| Modifier and Type | Method and Description |
|---|---|
| protected VkDrmFormatModifierPropertiesEXT | create(long
the struct memory address address, ByteBuffer an optional container buffer, to be referenced strongly by the struct instance. container)Implements abstract org. the constructor, but returns the exact type of the Struct subclass.
|
| public static VkDrmFormatModifierPropertiesEXT | create(long address)
Returns a new |
| public static VkDrmFormatModifierPropertiesEXT. | create(long
the memory address address, int the buffer capacity capacity)Create a |
| public static VkDrmFormatModifierPropertiesEXT | |
| public static VkDrmFormatModifierPropertiesEXT. | |
| public long | |
| public int | drmFormatModifierPlaneCount()
the number of memory planes in any image created with |
| public int | drmFormatModifierTilingFeatures()
a bitmask of |
| public static long | |
| public static int | |
| public static int | |
| public int |
| ALIGNOF | back to summary |
|---|---|
| public static final int ALIGNOF The struct alignment in bytes. | |
| DRMFORMATMODIFIER | back to summary |
|---|---|
| public static final int DRMFORMATMODIFIER The struct member offsets. | |
| DRMFORMATMODIFIERPLANECOUNT | back to summary |
|---|---|
| public static final int DRMFORMATMODIFIERPLANECOUNT The struct member offsets. | |
| DRMFORMATMODIFIERTILINGFEATURES | back to summary |
|---|---|
| public static final int DRMFORMATMODIFIERTILINGFEATURES The struct member offsets. | |
| SIZEOF | back to summary |
|---|---|
| public static final int SIZEOF The struct size in bytes. | |
| VkDrmFormatModifierPropertiesEXT | back to summary |
|---|---|
| protected VkDrmFormatModifierPropertiesEXT(long address, ByteBuffer container) | |
| VkDrmFormatModifierPropertiesEXT | back to summary |
|---|---|
| public VkDrmFormatModifierPropertiesEXT(ByteBuffer container) Creates a The created instance holds a strong reference to the container object. | |
| create | back to summary |
|---|---|
| protected VkDrmFormatModifierPropertiesEXT create(long address, ByteBuffer container) Implements abstract org. Doc from org. Similar to Effectively, every
| |
| create | back to summary |
|---|---|
| public static VkDrmFormatModifierPropertiesEXT create(long address) Returns a new | |
| create | back to summary |
|---|---|
| public static VkDrmFormatModifierPropertiesEXT. Create a
| |
| createSafe | back to summary |
|---|---|
| public static VkDrmFormatModifierPropertiesEXT createSafe(long address) Like
| |
| createSafe | back to summary |
|---|---|
| public static VkDrmFormatModifierPropertiesEXT. Like
| |
| drmFormatModifier | back to summary |
|---|---|
| public long drmFormatModifier() a Linux DRM format modifier.
| |
| drmFormatModifierPlaneCount | back to summary |
|---|---|
| public int drmFormatModifierPlaneCount() the number of memory planes in any image created with
| |
| drmFormatModifierTilingFeatures | back to summary |
|---|---|
| public int drmFormatModifierTilingFeatures() a bitmask of
| |
| ndrmFormatModifier | back to summary |
|---|---|
| public static long ndrmFormatModifier(long struct) Unsafe version of | |
| ndrmFormatModifierPlaneCount | back to summary |
|---|---|
| public static int ndrmFormatModifierPlaneCount(long struct) Unsafe version of | |
| ndrmFormatModifierTilingFeatures | back to summary |
|---|---|
| public static int ndrmFormatModifierTilingFeatures(long struct) Unsafe version of | |
| sizeof | back to summary |
|---|---|
| public int sizeof() Implements abstract org. Doc from org. Returns
| |
VkDrmFormatModifierPropertiesEXT structs.
| Modifier and Type | Field and Description |
|---|---|
| private static final VkDrmFormatModifierPropertiesEXT |
| Access | Constructor and Description |
|---|---|
| public | Buffer(ByteBuffer container)
Creates a new |
| public | |
| pack-priv |
| Modifier and Type | Method and Description |
|---|---|
| public long | Returns: the value of theVkDrmFormatModifierPropertiesEXT#drmFormatModifier field.
|
| public int | Returns: the value of theVkDrmFormatModifierPropertiesEXT#drmFormatModifierPlaneCount field.
|
| public int | Returns: the value of theVkDrmFormatModifierPropertiesEXT#drmFormatModifierTilingFeatures field.
|
| protected VkDrmFormatModifierPropertiesEXT | |
| protected VkDrmFormatModifierPropertiesEXT. |
| ELEMENT_FACTORY | back to summary |
|---|---|
| private static final VkDrmFormatModifierPropertiesEXT ELEMENT_FACTORY | |
| Buffer | back to summary |
|---|---|
| public Buffer(ByteBuffer container) Creates a new Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
by The created buffer instance holds a strong reference to the container object. | |
| Buffer | back to summary |
|---|---|
| public Buffer(long address, int cap) | |
| Buffer | back to summary |
|---|---|
| pack-priv Buffer(long address, ByteBuffer container, int mark, int pos, int lim, int cap) | |
| drmFormatModifier | back to summary |
|---|---|
public long drmFormatModifier()
| |
| drmFormatModifierPlaneCount | back to summary |
|---|---|
public int drmFormatModifierPlaneCount()
| |
| drmFormatModifierTilingFeatures | back to summary |
|---|---|
public int drmFormatModifierTilingFeatures()
| |
| getElementFactory | back to summary |
|---|---|
| protected VkDrmFormatModifierPropertiesEXT getElementFactory() Implements abstract org.
| |
| self | back to summary |
|---|---|
| protected VkDrmFormatModifierPropertiesEXT. Implements abstract org.
| |