| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer
Synopsis
- getAndroidHardwareBufferPropertiesANDROID :: forall a io. (Extendss AndroidHardwareBufferPropertiesANDROID a, PokeChain a, PeekChain a, MonadIO io) => Device -> Ptr AHardwareBuffer -> io (AndroidHardwareBufferPropertiesANDROID a)
- getMemoryAndroidHardwareBufferANDROID :: forall io. MonadIO io => Device -> MemoryGetAndroidHardwareBufferInfoANDROID -> io (Ptr AHardwareBuffer)
- data ImportAndroidHardwareBufferInfoANDROID = ImportAndroidHardwareBufferInfoANDROID {}
- data AndroidHardwareBufferUsageANDROID = AndroidHardwareBufferUsageANDROID {}
- data AndroidHardwareBufferPropertiesANDROID (es :: [Type]) = AndroidHardwareBufferPropertiesANDROID {
- next :: Chain es
- allocationSize :: DeviceSize
- memoryTypeBits :: Word32
- data MemoryGetAndroidHardwareBufferInfoANDROID = MemoryGetAndroidHardwareBufferInfoANDROID {}
- data AndroidHardwareBufferFormatPropertiesANDROID = AndroidHardwareBufferFormatPropertiesANDROID {}
- data ExternalFormatANDROID = ExternalFormatANDROID {}
- type ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 3
- pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION :: forall a. Integral a => a
- type ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer"
- pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- data AHardwareBuffer
Documentation
getAndroidHardwareBufferPropertiesANDROID Source #
Arguments
| :: forall a io. (Extendss AndroidHardwareBufferPropertiesANDROID a, PokeChain a, PeekChain a, MonadIO io) | |
| => Device |
|
| -> Ptr AHardwareBuffer |
|
| -> io (AndroidHardwareBufferPropertiesANDROID a) |
vkGetAndroidHardwareBufferPropertiesANDROID - Get Properties of External Memory Android Hardware Buffers
Return Codes
See Also
getMemoryAndroidHardwareBufferANDROID Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> MemoryGetAndroidHardwareBufferInfoANDROID |
|
| -> io (Ptr AHardwareBuffer) |
vkGetMemoryAndroidHardwareBufferANDROID - Get an Android hardware buffer for a memory object
Description
Each call to getMemoryAndroidHardwareBufferANDROID must return an
Android hardware buffer with a new reference acquired in addition to the
reference held by the DeviceMemory. To avoid
leaking resources, the application must release the reference by
calling AHardwareBuffer_release when it is no longer needed. When
called with the same handle in
MemoryGetAndroidHardwareBufferInfoANDROID::memory,
getMemoryAndroidHardwareBufferANDROID must return the same Android
hardware buffer object. If the device memory was created by importing an
Android hardware buffer, getMemoryAndroidHardwareBufferANDROID must
return that same Android hardware buffer object.
Return Codes
See Also
data ImportAndroidHardwareBufferInfoANDROID Source #
VkImportAndroidHardwareBufferInfoANDROID - Import memory from an Android hardware buffer
Description
If the allocateMemory command succeeds, the
implementation must acquire a reference to the imported hardware
buffer, which it must release when the device memory object is freed.
If the command fails, the implementation must not retain a reference.
Valid Usage
- If
bufferis notNULL, Android hardware buffers must be supported for import, as reported byExternalImageFormatPropertiesorExternalBufferProperties
- If
bufferis notNULL, it must be a valid Android hardware buffer object withAHardwareBuffer_Desc::usagecompatible with Vulkan as described in Android Hardware Buffers
Valid Usage (Implicit)
buffermust be a valid pointer to anAHardwareBuffervalue
See Also
Constructors
| ImportAndroidHardwareBufferInfoANDROID | |
Fields
| |
Instances
data AndroidHardwareBufferUsageANDROID Source #
VkAndroidHardwareBufferUsageANDROID - Struct containing Android hardware buffer usage flags
Description
The androidHardwareBufferUsage field must include Android hardware
buffer usage flags listed in the
AHardwareBuffer Usage Equivalence
table when the corresponding Vulkan image usage or image creation flags
are included in the usage or flags fields of
PhysicalDeviceImageFormatInfo2.
It must include at least one GPU usage flag
(AHARDWAREBUFFER_USAGE_GPU_*), even if none of the corresponding
Vulkan usages or flags are requested.
Note
Requiring at least one GPU usage flag ensures that Android hardware
buffer memory will be allocated in a memory pool accessible to the
Vulkan implementation, and that specializing the memory layout based on
usage flags does not prevent it from being compatible with Vulkan.
Implementations may avoid unnecessary restrictions caused by this
requirement by using vendor usage flags to indicate that only the Vulkan
uses indicated in
ImageFormatProperties2
are required.
Valid Usage (Implicit)
See Also
Constructors
| AndroidHardwareBufferUsageANDROID | |
Fields
| |
Instances
data AndroidHardwareBufferPropertiesANDROID (es :: [Type]) Source #
VkAndroidHardwareBufferPropertiesANDROID - Properties of External Memory Android Hardware Buffers
Valid Usage (Implicit)
pNextmust beNULLor a pointer to a valid instance ofAndroidHardwareBufferFormatPropertiesANDROID- The
sTypevalue of each struct in thepNextchain must be unique
See Also
DeviceSize,
StructureType,
getAndroidHardwareBufferPropertiesANDROID
Constructors
| AndroidHardwareBufferPropertiesANDROID | |
Fields
| |
Instances
data MemoryGetAndroidHardwareBufferInfoANDROID Source #
VkMemoryGetAndroidHardwareBufferInfoANDROID - Structure describing an Android hardware buffer memory export operation
Valid Usage
EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROIDmust have been included inExportMemoryAllocateInfo::handleTypeswhenmemorywas created
- If the
pNextchain of theMemoryAllocateInfoused to allocatememoryincluded aMemoryDedicatedAllocateInfowith non-NULLimagemember, then thatimagemust already be bound tomemory
Valid Usage (Implicit)
pNextmust beNULLmemorymust be a validDeviceMemoryhandle
See Also
DeviceMemory,
StructureType,
getMemoryAndroidHardwareBufferANDROID
Constructors
| MemoryGetAndroidHardwareBufferInfoANDROID | |
Fields
| |
Instances
data AndroidHardwareBufferFormatPropertiesANDROID Source #
VkAndroidHardwareBufferFormatPropertiesANDROID - Structure describing the image format properties of an Android hardware buffer
Description
If the Android hardware buffer has one of the formats listed in the
Format Equivalence table,
then format must have the equivalent Vulkan format listed in the
table. Otherwise, format may be
FORMAT_UNDEFINED, indicating the Android
hardware buffer can only be used with an external format.
The formatFeatures member must include
FORMAT_FEATURE_SAMPLED_IMAGE_BIT
and at least one of
FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
or
FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
and should include
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
and
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT.
Note
The formatFeatures member only indicates the features available when
using an
external-format image
created from the Android hardware buffer. Images from Android hardware
buffers with a format other than
FORMAT_UNDEFINED are subject to the format
capabilities obtained from
getPhysicalDeviceFormatProperties2,
and
getPhysicalDeviceImageFormatProperties2
with appropriate parameters. These sets of features are independent of
each other, e.g. the external format will support sampler Y′CBCR
conversion even if the non-external format does not, and writing to
non-external format images is possible but writing to external format
images is not.
Android hardware buffers with the same external format must have the
same support for
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
and
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT.
in formatFeatures. Other format features may differ between Android
hardware buffers that have the same external format. This allows
applications to use the same
SamplerYcbcrConversion object (and samplers and
pipelines created from them) for any Android hardware buffers that have
the same external format.
If format is not FORMAT_UNDEFINED, then
the value of samplerYcbcrConversionComponents must be valid when
used as the components member of
SamplerYcbcrConversionCreateInfo
with that format. If format is
FORMAT_UNDEFINED, all members of
samplerYcbcrConversionComponents must be the
identity swizzle.
Implementations may not always be able to determine the color model,
numerical range, or chroma offsets of the image contents, so the values
in AndroidHardwareBufferFormatPropertiesANDROID are only suggestions.
Applications should treat these values as sensible defaults to use in
the absence of more reliable information obtained through some other
means. If the underlying physical device is also usable via OpenGL ES
with the
GL_OES_EGL_image_external
extension, the implementation should suggest values that will produce
similar sampled values as would be obtained by sampling the same
external image via samplerExternalOES in OpenGL ES using equivalent
sampler parameters.
Note
Since GL_OES_EGL_image_external does not require the same sampling and conversion calculations as Vulkan does, achieving identical results between APIs may not be possible on some implementations.
Valid Usage (Implicit)
See Also
ChromaLocation,
ComponentMapping,
Format,
FormatFeatureFlags,
SamplerYcbcrModelConversion,
SamplerYcbcrRange,
StructureType
Constructors
| AndroidHardwareBufferFormatPropertiesANDROID | |
Fields
| |
Instances
data ExternalFormatANDROID Source #
VkExternalFormatANDROID - Structure containing an Android hardware buffer external format
Description
If externalFormat is zero, the effect is as if the
ExternalFormatANDROID structure was not present. Otherwise, the
image will have the specified external format.
Valid Usage (Implicit)
See Also
Constructors
| ExternalFormatANDROID | |
Fields
| |
Instances
pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION :: forall a. Integral a => a Source #
type ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer" Source #
pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
data AHardwareBuffer Source #