Class VkAndroidHardwareBufferFormatPropertiesANDROID
- All Implemented Interfaces:
AutoCloseable,org.lwjgl.system.NativeResource,org.lwjgl.system.Pointer
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 rendering directly to the external format will not be supported even if the non-external format does support this.
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 VkSamplerYcbcrConversion 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 VkSamplerYcbcrConversionCreateInfo 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 VkAndroidHardwareBufferFormatPropertiesANDROID 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
Layout
struct VkAndroidHardwareBufferFormatPropertiesANDROID {
VkStructureType sType();
void * pNext();
VkFormat format();
uint64_t externalFormat();
VkFormatFeatureFlags formatFeatures();
VkComponentMapping samplerYcbcrConversionComponents();
VkSamplerYcbcrModelConversion suggestedYcbcrModel();
VkSamplerYcbcrRange suggestedYcbcrRange();
VkChromaLocation suggestedXChromaOffset();
VkChromaLocation suggestedYChromaOffset();
}-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAn array ofVkAndroidHardwareBufferFormatPropertiesANDROIDstructs.Nested classes/interfaces inherited from class org.lwjgl.system.Struct
org.lwjgl.system.Struct.StructValidationNested classes/interfaces inherited from interface org.lwjgl.system.Pointer
org.lwjgl.system.Pointer.Default -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThe struct alignment in bytes.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct size in bytes.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.Fields inherited from interface org.lwjgl.system.Pointer
BITS32, BITS64, CLONG_SHIFT, CLONG_SIZE, POINTER_SHIFT, POINTER_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionCreates aVkAndroidHardwareBufferFormatPropertiesANDROIDinstance at the current position of the specifiedByteBuffercontainer. -
Method Summary
Modifier and TypeMethodDescriptioncalloc()Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance allocated withmemCalloc.calloc(int capacity) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance allocated withmemCalloc.calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.calloc(org.lwjgl.system.MemoryStack stack) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.create()Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance allocated withBufferUtils.create(int capacity) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance allocated withBufferUtils.create(long address) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance for the specified memory address.create(long address, int capacity) Create aVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance at the specified memory.static @Nullable VkAndroidHardwareBufferFormatPropertiesANDROIDcreateSafe(long address) static @Nullable VkAndroidHardwareBufferFormatPropertiesANDROID.BuffercreateSafe(long address, int capacity) longan implementation-defined external format identifier for use withVkExternalFormatANDROID.intformat()the Vulkan format corresponding to the Android hardware buffer’s format, orFORMAT_UNDEFINEDif there is not an equivalent Vulkan format.intdescribes the capabilities of this external format when used with an image bound to memory imported frombuffer.malloc()Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance allocated withmemAlloc.malloc(int capacity) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance allocated withmemAlloc.malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance allocated on the specifiedMemoryStack.malloc(org.lwjgl.system.MemoryStack stack) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance allocated on the specifiedMemoryStack.static longnexternalFormat(long struct) Unsafe version ofexternalFormat().static intnformat(long struct) Unsafe version offormat().static intnformatFeatures(long struct) Unsafe version offormatFeatures().static longnpNext(long struct) Unsafe version ofpNext().static voidnpNext(long struct, long value) Unsafe version ofpNext.static VkComponentMappingnsamplerYcbcrConversionComponents(long struct) Unsafe version ofsamplerYcbcrConversionComponents().static intnsType(long struct) Unsafe version ofsType().static voidnsType(long struct, int value) Unsafe version ofsType.static intnsuggestedXChromaOffset(long struct) Unsafe version ofsuggestedXChromaOffset().static intnsuggestedYcbcrModel(long struct) Unsafe version ofsuggestedYcbcrModel().static intnsuggestedYcbcrRange(long struct) Unsafe version ofsuggestedYcbcrRange().static intnsuggestedYChromaOffset(long struct) Unsafe version ofsuggestedYChromaOffset().longpNext()NULLor a pointer to a structure extending this structure.pNext(long value) Sets the specified value to thepNext()field.the component swizzle that should be used inVkSamplerYcbcrConversionCreateInfo.set(int sType, long pNext) Initializes this struct with the specified values.Copies the specified struct data to this struct.intsizeof()intsType()aVkStructureTypevalue identifying this structure.sType(int value) Sets the specified value to thesType()field.Sets theSTRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROIDvalue to thesType()field.inta suggested X chroma offset to use inVkSamplerYcbcrConversionCreateInfo.inta suggested color model to use in theVkSamplerYcbcrConversionCreateInfo.inta suggested numerical value range to use inVkSamplerYcbcrConversionCreateInfo.inta suggested Y chroma offset to use inVkSamplerYcbcrConversionCreateInfo.Methods inherited from class org.lwjgl.system.Struct
clear, free, isNull, validate, validateMethods inherited from class org.lwjgl.system.Pointer.Default
address, equals, hashCode, toStringMethods inherited from interface org.lwjgl.system.NativeResource
close, free
-
Field Details
-
SIZEOF
public static final int SIZEOFThe struct size in bytes. -
ALIGNOF
public static final int ALIGNOFThe struct alignment in bytes. -
STYPE
public static final int STYPEThe struct member offsets. -
PNEXT
public static final int PNEXTThe struct member offsets. -
FORMAT
public static final int FORMATThe struct member offsets. -
EXTERNALFORMAT
public static final int EXTERNALFORMATThe struct member offsets. -
FORMATFEATURES
public static final int FORMATFEATURESThe struct member offsets. -
SAMPLERYCBCRCONVERSIONCOMPONENTS
public static final int SAMPLERYCBCRCONVERSIONCOMPONENTSThe struct member offsets. -
SUGGESTEDYCBCRMODEL
public static final int SUGGESTEDYCBCRMODELThe struct member offsets. -
SUGGESTEDYCBCRRANGE
public static final int SUGGESTEDYCBCRRANGEThe struct member offsets. -
SUGGESTEDXCHROMAOFFSET
public static final int SUGGESTEDXCHROMAOFFSETThe struct member offsets. -
SUGGESTEDYCHROMAOFFSET
public static final int SUGGESTEDYCHROMAOFFSETThe struct member offsets.
-
-
Constructor Details
-
VkAndroidHardwareBufferFormatPropertiesANDROID
Creates aVkAndroidHardwareBufferFormatPropertiesANDROIDinstance at the current position of the specifiedByteBuffercontainer. Changes to the buffer's content will be visible to the struct instance and vice versa.The created instance holds a strong reference to the container object.
-
-
Method Details
-
sizeof
public int sizeof()- Specified by:
sizeofin classorg.lwjgl.system.Struct<VkAndroidHardwareBufferFormatPropertiesANDROID>
-
sType
public int sType()aVkStructureTypevalue identifying this structure. -
pNext
public long pNext()NULLor a pointer to a structure extending this structure. -
format
public int format()the Vulkan format corresponding to the Android hardware buffer’s format, orFORMAT_UNDEFINEDif there is not an equivalent Vulkan format. -
externalFormat
public long externalFormat()an implementation-defined external format identifier for use withVkExternalFormatANDROID. It must not be zero. -
formatFeatures
public int formatFeatures()describes the capabilities of this external format when used with an image bound to memory imported frombuffer. -
samplerYcbcrConversionComponents
the component swizzle that should be used inVkSamplerYcbcrConversionCreateInfo. -
suggestedYcbcrModel
public int suggestedYcbcrModel()a suggested color model to use in theVkSamplerYcbcrConversionCreateInfo. -
suggestedYcbcrRange
public int suggestedYcbcrRange()a suggested numerical value range to use inVkSamplerYcbcrConversionCreateInfo. -
suggestedXChromaOffset
public int suggestedXChromaOffset()a suggested X chroma offset to use inVkSamplerYcbcrConversionCreateInfo. -
suggestedYChromaOffset
public int suggestedYChromaOffset()a suggested Y chroma offset to use inVkSamplerYcbcrConversionCreateInfo. -
sType
Sets the specified value to thesType()field. -
sType$Default
Sets theSTRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROIDvalue to thesType()field. -
pNext
Sets the specified value to thepNext()field. -
set
Initializes this struct with the specified values. -
set
public VkAndroidHardwareBufferFormatPropertiesANDROID set(VkAndroidHardwareBufferFormatPropertiesANDROID src) Copies the specified struct data to this struct.- Parameters:
src- the source struct- Returns:
- this struct
-
malloc
Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance allocated withmemAlloc. The instance must be explicitly freed. -
calloc
Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance allocated withmemCalloc. The instance must be explicitly freed. -
create
Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance allocated withBufferUtils. -
create
Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance for the specified memory address. -
createSafe
-
malloc
Returns a newVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance allocated withmemAlloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
calloc
Returns a newVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance allocated withmemCalloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
create
Returns a newVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance allocated withBufferUtils.- Parameters:
capacity- the buffer capacity
-
create
public static VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer create(long address, int capacity) Create aVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance at the specified memory.- Parameters:
address- the memory addresscapacity- the buffer capacity
-
createSafe
public static @Nullable VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer createSafe(long address, int capacity) -
malloc
public static VkAndroidHardwareBufferFormatPropertiesANDROID malloc(org.lwjgl.system.MemoryStack stack) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance allocated on the specifiedMemoryStack.- Parameters:
stack- the stack from which to allocate
-
calloc
public static VkAndroidHardwareBufferFormatPropertiesANDROID calloc(org.lwjgl.system.MemoryStack stack) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROIDinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
stack- the stack from which to allocate
-
malloc
public static VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance allocated on the specifiedMemoryStack.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
calloc
public static VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkAndroidHardwareBufferFormatPropertiesANDROID.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
nsType
public static int nsType(long struct) Unsafe version ofsType(). -
npNext
public static long npNext(long struct) Unsafe version ofpNext(). -
nformat
public static int nformat(long struct) Unsafe version offormat(). -
nexternalFormat
public static long nexternalFormat(long struct) Unsafe version ofexternalFormat(). -
nformatFeatures
public static int nformatFeatures(long struct) Unsafe version offormatFeatures(). -
nsamplerYcbcrConversionComponents
Unsafe version ofsamplerYcbcrConversionComponents(). -
nsuggestedYcbcrModel
public static int nsuggestedYcbcrModel(long struct) Unsafe version ofsuggestedYcbcrModel(). -
nsuggestedYcbcrRange
public static int nsuggestedYcbcrRange(long struct) Unsafe version ofsuggestedYcbcrRange(). -
nsuggestedXChromaOffset
public static int nsuggestedXChromaOffset(long struct) Unsafe version ofsuggestedXChromaOffset(). -
nsuggestedYChromaOffset
public static int nsuggestedYChromaOffset(long struct) Unsafe version ofsuggestedYChromaOffset(). -
nsType
public static void nsType(long struct, int value) Unsafe version ofsType. -
npNext
public static void npNext(long struct, long value) Unsafe version ofpNext.
-