Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- createImageView :: PokeChain a => Device -> ImageViewCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ImageView
- withImageView :: PokeChain a => Device -> ImageViewCreateInfo a -> Maybe AllocationCallbacks -> (ImageView -> IO r) -> IO r
- destroyImageView :: Device -> ImageView -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()
- data ComponentMapping = ComponentMapping {}
- data ImageViewCreateInfo (es :: [Type]) = ImageViewCreateInfo {}
Documentation
createImageView :: PokeChain a => Device -> ImageViewCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ImageView Source #
vkCreateImageView - Create an image view from an existing image
Parameters
Device
is the logical device that creates the image view.
pCreateInfo
is a pointer to aImageViewCreateInfo
structure containing parameters to be used to create the image view.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.pView
is a pointer to aImageView
handle in which the resulting image view object is returned.
Valid Usage (Implicit)
pCreateInfo
must be a valid pointer to a validImageViewCreateInfo
structure- If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure pView
must be a valid pointer to aImageView
handle
Return Codes
See Also
withImageView :: PokeChain a => Device -> ImageViewCreateInfo a -> Maybe AllocationCallbacks -> (ImageView -> IO r) -> IO r Source #
A safe wrapper for createImageView
and destroyImageView
using
bracket
The allocated value must not be returned from the provided computation
destroyImageView :: Device -> ImageView -> ("allocator" ::: Maybe AllocationCallbacks) -> IO () Source #
vkDestroyImageView - Destroy an image view object
Parameters
Device
is the logical device that destroys the image view.
ImageView
is the image view to destroy.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.
Valid Usage
- All submitted commands that refer to
ImageView
must have completed execution
- If
AllocationCallbacks
were provided whenImageView
was created, a compatible set of callbacks must be provided here - If no
AllocationCallbacks
were provided whenImageView
was created,pAllocator
must beNULL
Valid Usage (Implicit)
- If
ImageView
is notNULL_HANDLE
,ImageView
must be a validImageView
handle - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure - If
ImageView
is a valid handle, it must have been created, allocated, or retrieved fromDevice
Host Synchronization
- Host access to
ImageView
must be externally synchronized
See Also
data ComponentMapping Source #
VkComponentMapping - Structure specifying a color component mapping
Valid Usage (Implicit)
See Also
AndroidHardwareBufferFormatPropertiesANDROID
,
ComponentSwizzle
,
ImageViewCreateInfo
,
SamplerYcbcrConversionCreateInfo
ComponentMapping | |
|
Instances
data ImageViewCreateInfo (es :: [Type]) Source #
VkImageViewCreateInfo - Structure specifying parameters of a newly created image view
Description
Some of the Image
creation parameters
are inherited by the view. In particular, image view creation inherits
the implicit parameter usage
specifying the allowed usages of the
image view that, by default, takes the value of the corresponding
usage
parameter specified in
ImageCreateInfo
at image creation time.
If the image was has a depth-stencil format and was created with a
ImageStencilUsageCreateInfo
structure included in the pNext
chain of
ImageCreateInfo
, the usage is calculated
based on the subresource.aspectMask
provided:
- If
aspectMask
includes onlyIMAGE_ASPECT_STENCIL_BIT
, the implicitusage
is equal toImageStencilUsageCreateInfo
::stencilUsage
. - If
aspectMask
includes onlyIMAGE_ASPECT_DEPTH_BIT
, the implicitusage
is equal toImageCreateInfo
::usage
. - If both aspects are included in
aspectMask
, the implicitusage
is equal to the intersection ofImageCreateInfo
::usage
andImageStencilUsageCreateInfo
::stencilUsage
. The implicitusage
can be overriden by adding aImageViewUsageCreateInfo
structure to thepNext
chain.
If Image
was created with the
IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, and if the Format
of the
image is not
multi-planar,
Format
can be different from the
image’s format, but if Image
was
created without the
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag and they are not equal they must be compatible. Image format
compatibility is defined in the
Format Compatibility Classes
section. Views of compatible formats will have the same mapping between
texel coordinates and memory locations irrespective of the
Format
, with only the
interpretation of the bit pattern changing.
Note
Values intended to be used with one view format may not be exactly preserved when written or read through a different format. For example, an integer value that happens to have the bit pattern of a floating point denorm or NaN may be flushed or canonicalized when written or read through a view with a floating point format. Similarly, a value written through a signed normalized format that has a bit pattern exactly equal to -2b may be changed to -2b + 1 as described in Conversion from Normalized Fixed-Point to Floating-Point.
If Image
was created with the
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag, Format
must be
compatible with the image’s format as described above, or must be an
uncompressed format in which case it must be size-compatible with
the image’s format, as defined for
copying data between images
In this case the resulting image view’s texel dimensions equal the
dimensions of the selected mip level divided by the compressed texel
block size and rounded up.
If the image view is to be used with a sampler which supports
sampler Y′CBCR conversion,
an identically defined object of type
SamplerYcbcrConversion
to that used to
create the sampler must be passed to createImageView
in a
SamplerYcbcrConversionInfo
included in the pNext
chain of ImageViewCreateInfo
. Conversely, if a
SamplerYcbcrConversion
object is passed
to createImageView
, an identically defined
SamplerYcbcrConversion
object must be
used when sampling the image.
If the image has a
multi-planar
Format
and
subresourceRange.aspectMask
is
IMAGE_ASPECT_COLOR_BIT
,
Format
must be identical to the
image Format
, and the sampler to
be used with the image view must enable
sampler Y′CBCR conversion.
If Image
was created with the
IMAGE_CREATE_MUTABLE_FORMAT_BIT
and the image has a
multi-planar
Format
, and if
subresourceRange.aspectMask
is
IMAGE_ASPECT_PLANE_0_BIT
,
IMAGE_ASPECT_PLANE_1_BIT
,
or
IMAGE_ASPECT_PLANE_2_BIT
,
Format
must be
compatible
with the corresponding plane of the image, and the sampler to be used
with the image view must not enable
sampler Y′CBCR conversion.
The width
and height
of the single-plane image view must be
derived from the multi-planar image’s dimensions in the manner listed
for
plane compatibility
for the plane.
Any view of an image plane will have the same mapping between texel coordinates and memory locations as used by the channels of the color aspect, subject to the formulae relating texel coordinates to lower-resolution planes as described in Chroma Reconstruction. That is, if an R or B plane has a reduced resolution relative to the G plane of the multi-planar image, the image view operates using the (uplane, vplane) unnormalized coordinates of the reduced-resolution plane, and these coordinates access the same memory locations as the (ucolor, vcolor) unnormalized coordinates of the color aspect for which chroma reconstruction operations operate on the same (uplane, vplane) or (iplane, jplane) coordinates.
Dim, Arrayed, MS | Image parameters | View parameters |
---|---|---|
ImageType =
ci.ImageType
width = ci.extent.width
height = ci.extent.height
depth = ci.extent.depth
arrayLayers = ci.arrayLayers
samples = ci.samples
Flags = ci.Flags
where ci is the ImageCreateInfo used to create
Image . | baseArrayLayer , layerCount , and levelCount are members of the
subresourceRange member.
| |
__1D, 0, 0__ | ImageType =
IMAGE_TYPE_1D
width ≥ 1
height = 1
depth = 1
arrayLayers ≥ 1
samples = 1 | viewType =
IMAGE_VIEW_TYPE_1D
baseArrayLayer ≥ 0
layerCount = 1
|
__1D, 1, 0__ | ImageType =
IMAGE_TYPE_1D
width ≥ 1
height = 1
depth = 1
arrayLayers ≥ 1
samples = 1 | viewType =
IMAGE_VIEW_TYPE_1D_ARRAY
baseArrayLayer ≥ 0
layerCount ≥ 1
|
__2D, 0, 0__ | ImageType =
IMAGE_TYPE_2D
width ≥ 1
height ≥ 1
depth = 1
arrayLayers ≥ 1
samples = 1 | viewType =
IMAGE_VIEW_TYPE_2D
baseArrayLayer ≥ 0
layerCount = 1
|
__2D, 1, 0__ | ImageType =
IMAGE_TYPE_2D
width ≥ 1
height ≥ 1
depth = 1
arrayLayers ≥ 1
samples = 1 | viewType =
IMAGE_VIEW_TYPE_2D_ARRAY
baseArrayLayer ≥ 0
layerCount ≥ 1
|
__2D, 0, 1__ | ImageType =
IMAGE_TYPE_2D
width ≥ 1
height ≥ 1
depth = 1
arrayLayers ≥ 1
samples > 1 | viewType =
IMAGE_VIEW_TYPE_2D
baseArrayLayer ≥ 0
layerCount = 1
|
__2D, 1, 1__ | ImageType =
IMAGE_TYPE_2D
width ≥ 1
height ≥ 1
depth = 1
arrayLayers ≥ 1
samples > 1 | viewType =
IMAGE_VIEW_TYPE_2D_ARRAY
baseArrayLayer ≥ 0
layerCount ≥ 1
|
__CUBE, 0, 0__ | ImageType =
IMAGE_TYPE_2D
width ≥ 1
height = width
depth = 1
arrayLayers ≥ 6
samples = 1
Flags includes
IMAGE_CREATE_CUBE_COMPATIBLE_BIT | viewType =
IMAGE_VIEW_TYPE_CUBE
baseArrayLayer ≥ 0
layerCount = 6
|
__CUBE, 1, 0__ | ImageType =
IMAGE_TYPE_2D
width ≥ 1
height = width
depth = 1
N ≥ 1
arrayLayers ≥ 6 × N
samples = 1
Flags includes
IMAGE_CREATE_CUBE_COMPATIBLE_BIT | viewType =
IMAGE_VIEW_TYPE_CUBE_ARRAY
baseArrayLayer ≥ 0
layerCount = 6 × N, N ≥ 1
|
__3D, 0, 0__ | ImageType =
IMAGE_TYPE_3D
width ≥ 1
height ≥ 1
depth ≥ 1
arrayLayers = 1
samples = 1 | viewType =
IMAGE_VIEW_TYPE_3D
baseArrayLayer = 0
layerCount = 1
|
__3D, 0, 0__ | ImageType =
IMAGE_TYPE_3D
width ≥ 1
height ≥ 1
depth ≥ 1
arrayLayers = 1
samples = 1
Flags includes
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
Flags does not include
IMAGE_CREATE_SPARSE_BINDING_BIT ,
IMAGE_CREATE_SPARSE_RESIDENCY_BIT ,
and IMAGE_CREATE_SPARSE_ALIASED_BIT | viewType =
IMAGE_VIEW_TYPE_2D
levelCount = 1
baseArrayLayer ≥ 0
layerCount = 1
|
__3D, 0, 0__ | ImageType =
IMAGE_TYPE_3D
width ≥ 1
height ≥ 1
depth ≥ 1
arrayLayers = 1
samples = 1
Flags includes
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
Flags does not include
IMAGE_CREATE_SPARSE_BINDING_BIT ,
IMAGE_CREATE_SPARSE_RESIDENCY_BIT ,
and IMAGE_CREATE_SPARSE_ALIASED_BIT | viewType =
IMAGE_VIEW_TYPE_2D_ARRAY
levelCount = 1
baseArrayLayer ≥ 0
layerCount ≥ 1
|
Image and image view parameter compatibility requirements
Valid Usage
- If
Image
was not created withIMAGE_CREATE_CUBE_COMPATIBLE_BIT
thenviewType
must not beIMAGE_VIEW_TYPE_CUBE
orIMAGE_VIEW_TYPE_CUBE_ARRAY
- If the
image cubemap arrays
feature is not enabled,
viewType
must not beIMAGE_VIEW_TYPE_CUBE_ARRAY
- If
Image
was created withIMAGE_TYPE_3D
but withoutIMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set thenviewType
must not beIMAGE_VIEW_TYPE_2D
orIMAGE_VIEW_TYPE_2D_ARRAY
Image
must have been created with ausage
value containing at least one ofIMAGE_USAGE_SAMPLED_BIT
,IMAGE_USAGE_STORAGE_BIT
,IMAGE_USAGE_COLOR_ATTACHMENT_BIT
,IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
,IMAGE_USAGE_INPUT_ATTACHMENT_BIT
,IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
, orIMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
- The format features of the resultant image view must contain at least one bit.
- If
usage
containsIMAGE_USAGE_SAMPLED_BIT
, then the format features of the resultant image view must containFORMAT_FEATURE_SAMPLED_IMAGE_BIT
. - If
usage
containsIMAGE_USAGE_STORAGE_BIT
, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_BIT
. - If
usage
containsIMAGE_USAGE_COLOR_ATTACHMENT_BIT
, then the image view’s format features must containFORMAT_FEATURE_COLOR_ATTACHMENT_BIT
. - If
usage
containsIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, then the image view’s format features must containFORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
. - If
usage
containsIMAGE_USAGE_INPUT_ATTACHMENT_BIT
, then the image view’s format features must contain at least one ofFORMAT_FEATURE_COLOR_ATTACHMENT_BIT
orFORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
. subresourceRange.baseMipLevel
must be less than themipLevels
specified inImageCreateInfo
whenImage
was created- If
subresourceRange.levelCount
is notREMAINING_MIP_LEVELS
,subresourceRange.baseMipLevel
+subresourceRange.levelCount
must be less than or equal to themipLevels
specified inImageCreateInfo
whenImage
was created - If
Image
was created withusage
containingIMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
,subresourceRange.levelCount
must be1
- If
Image
is not a 3D image created withIMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set, orviewType
is notIMAGE_VIEW_TYPE_2D
orIMAGE_VIEW_TYPE_2D_ARRAY
,subresourceRange.baseArrayLayer
must be less than thearrayLayers
specified inImageCreateInfo
whenImage
was created - If
subresourceRange.layerCount
is notREMAINING_ARRAY_LAYERS
,Image
is not a 3D image created withIMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set, orviewType
is notIMAGE_VIEW_TYPE_2D
orIMAGE_VIEW_TYPE_2D_ARRAY
,subresourceRange.layerCount
must be non-zero andsubresourceRange.baseArrayLayer
+subresourceRange.layerCount
must be less than or equal to thearrayLayers
specified inImageCreateInfo
whenImage
was created - If
Image
is a 3D image created withIMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set, andviewType
isIMAGE_VIEW_TYPE_2D
orIMAGE_VIEW_TYPE_2D_ARRAY
,subresourceRange.baseArrayLayer
must be less than the depth computed frombaseMipLevel
andextent.depth
specified inImageCreateInfo
whenImage
was created, according to the formula defined in Image Miplevel Sizing. - If
subresourceRange.layerCount
is notREMAINING_ARRAY_LAYERS
,Image
is a 3D image created withIMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set, andviewType
isIMAGE_VIEW_TYPE_2D
orIMAGE_VIEW_TYPE_2D_ARRAY
,subresourceRange.layerCount
must be non-zero andsubresourceRange.baseArrayLayer
+subresourceRange.layerCount
must be less than or equal to the depth computed frombaseMipLevel
andextent.depth
specified inImageCreateInfo
whenImage
was created, according to the formula defined in Image Miplevel Sizing. - If
Image
was created with theIMAGE_CREATE_MUTABLE_FORMAT_BIT
flag,Format
must be compatible with theFormat
used to createImage
, as defined in Format Compatibility Classes - If
Image
was created with theIMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, but without theIMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag, and if theFormat
of theImage
is not a multi-planar format,Format
must be compatible with theFormat
used to createImage
, as defined in Format Compatibility Classes - If
Image
was created with theIMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag,Format
must be compatible with, or must be an uncompressed format that is size-compatible with, theFormat
used to createImage
. - If
Image
was created with theIMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag, thelevelCount
andlayerCount
members ofsubresourceRange
must both be1
. - If a
ImageFormatListCreateInfo
structure was included in thepNext
chain of theImageCreateInfo
structure used when creatingImage
and theviewFormatCount
field ofImageFormatListCreateInfo
is not zero thenFormat
must be one of the formats inImageFormatListCreateInfo
::pViewFormats
. - If
Image
was created with theIMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, if theFormat
of theImage
is a multi-planar format, and ifsubresourceRange.aspectMask
is one ofIMAGE_ASPECT_PLANE_0_BIT
,IMAGE_ASPECT_PLANE_1_BIT
, orIMAGE_ASPECT_PLANE_2_BIT
, thenFormat
must be compatible with theFormat
for the plane of theImage
Format
indicated bysubresourceRange.aspectMask
, as defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes - If
Image
was not created with theIMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, or if theFormat
of theImage
is a multi-planar format and ifsubresourceRange.aspectMask
isIMAGE_ASPECT_COLOR_BIT
,Format
must be identical to theFormat
used to createImage
- If the
pNext
chain includes aSamplerYcbcrConversionInfo
structure with aconversion
value other thanNULL_HANDLE
, all members ofcomponents
must have the valueCOMPONENT_SWIZZLE_IDENTITY
. - If
Image
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object subresourceRange
andviewType
must be compatible with the image, as described in the compatibility table- If
Image
has an external format,Format
must beFORMAT_UNDEFINED
. - If
Image
has an external format, thepNext
chain must include aSamplerYcbcrConversionInfo
structure with aconversion
object created with the same external format asImage
. - If
Image
has an external format, all members ofcomponents
must beCOMPONENT_SWIZZLE_IDENTITY
. - If
Image
was created withusage
containingIMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
,viewType
must beIMAGE_VIEW_TYPE_2D
orIMAGE_VIEW_TYPE_2D_ARRAY
- If
Image
was created withusage
containingIMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
,Format
must beFORMAT_R8_UINT
- If
dynamic fragment density map
feature is not enabled,
Flags
must not containIMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT
- If
dynamic fragment density map
feature is not enabled and
Image
was created withusage
containingIMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
,Flags
must not contain any ofIMAGE_CREATE_PROTECTED_BIT
,IMAGE_CREATE_SPARSE_BINDING_BIT
,IMAGE_CREATE_SPARSE_RESIDENCY_BIT
, orIMAGE_CREATE_SPARSE_ALIASED_BIT
- If the
pNext
chain includes aImageViewUsageCreateInfo
structure, andImage
was not created with aImageStencilUsageCreateInfo
structure included in thepNext
chain ofImageCreateInfo
, itsusage
member must not include any bits that were not set in theusage
member of theImageCreateInfo
structure used to createImage
- If the
pNext
chain includes aImageViewUsageCreateInfo
structure,Image
was created with aImageStencilUsageCreateInfo
structure included in thepNext
chain ofImageCreateInfo
, andsubResourceRange.aspectMask
includesIMAGE_ASPECT_STENCIL_BIT
, theusage
member of theImageViewUsageCreateInfo
instance must not include any bits that were not set in theusage
member of theImageStencilUsageCreateInfo
structure used to createImage
- If the
pNext
chain includes aImageViewUsageCreateInfo
structure,Image
was created with aImageStencilUsageCreateInfo
structure included in thepNext
chain ofImageCreateInfo
, andsubResourceRange.aspectMask
includes bits other thanIMAGE_ASPECT_STENCIL_BIT
, theusage
member of theImageViewUsageCreateInfo
structure must not include any bits that were not set in theusage
member of theImageCreateInfo
structure used to createImage
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
- Each
pNext
member of any structure (including this one) in thepNext
chain must be eitherNULL
or a pointer to a valid instance ofImageViewASTCDecodeModeEXT
,ImageViewUsageCreateInfo
, orSamplerYcbcrConversionInfo
- The
sType
value of each struct in thepNext
chain must be unique Flags
must be a valid combination ofImageViewCreateFlagBits
valuesImage
must be a validImage
handleviewType
must be a validImageViewType
valueFormat
must be a validFormat
valuecomponents
must be a validComponentMapping
structuresubresourceRange
must be a validImageSubresourceRange
structure
See Also
ComponentMapping
, Format
,
Image
,
ImageSubresourceRange
,
ImageViewCreateFlags
,
ImageViewType
,
StructureType
,
createImageView
ImageViewCreateInfo | |
|