public class VkImageMemoryBarrier
extends org.lwjgl.system.Struct
implements org.lwjgl.system.NativeResource
The first access scope is limited to access to memory through the specified image subresource range, via access types in the source access mask specified by srcAccessMask. If srcAccessMask includes ACCESS_HOST_WRITE_BIT, memory writes performed by that access type are also made visible, as that access type is not performed through a resource.
The second access scope is limited to access to memory through the specified image subresource range, via access types in the destination access mask specified by dstAccessMask. If dstAccessMask includes ACCESS_HOST_WRITE_BIT or ACCESS_HOST_READ_BIT, available memory writes are also made visible to accesses of those types, as those access types are not performed through a resource.
If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, and srcQueueFamilyIndex is equal to the current queue family, then the memory barrier defines a queue family release operation for the specified image subresource range, and the second access scope includes no access, as if dstAccessMask was 0.
If dstQueueFamilyIndex is not equal to srcQueueFamilyIndex, and dstQueueFamilyIndex is equal to the current queue family, then the memory barrier defines a queue family acquire operation for the specified image subresource range, and the first access scope includes no access, as if srcAccessMask was 0.
If oldLayout is not equal to newLayout, then the memory barrier defines an image layout transition for the specified image subresource range.
Layout transitions that are performed via image memory barriers execute in their entirety in submission order, relative to other image layout transitions submitted to the same queue, including those performed by render passes. In effect there is an implicit execution dependency from each such layout transition to all layout transitions previously submitted to the same queue.
The image layout of each image subresource of a depth/stencil image created with IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT is dependent on the last sample locations used to render to the image subresource as a depth/stencil attachment, thus when the image member of a VkImageMemoryBarrier is an image created with this flag the application can include a VkSampleLocationsInfoEXT structure in the pNext chain of VkImageMemoryBarrier to specify the sample locations to use during the image layout transition.
If the VkSampleLocationsInfoEXT structure included in the pNext chain of VkImageMemoryBarrier does not match the sample location state last used to render to the image subresource range specified by subresourceRange or if no VkSampleLocationsInfoEXT structure is included in the pNext chain of VkImageMemoryBarrier, then the contents of the given image subresource range becomes undefined as if oldLayout would equal IMAGE_LAYOUT_UNDEFINED.
If image has a multi-planar format and the image is disjoint, then including IMAGE_ASPECT_COLOR_BIT in the aspectMask member of subresourceRange is equivalent to including IMAGE_ASPECT_PLANE_0_BIT, IMAGE_ASPECT_PLANE_1_BIT, and (for three-plane formats only) IMAGE_ASPECT_PLANE_2_BIT.
oldLayout must be IMAGE_LAYOUT_UNDEFINED or the current layout of the image subresources affected by the barriernewLayout must not be IMAGE_LAYOUT_UNDEFINED or IMAGE_LAYOUT_PREINITIALIZEDimage was created with a sharing mode of SHARING_MODE_CONCURRENT, at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be QUEUE_FAMILY_IGNOREDimage was created with a sharing mode of SHARING_MODE_CONCURRENT, and one of srcQueueFamilyIndex and dstQueueFamilyIndex is QUEUE_FAMILY_IGNORED, the other must be QUEUE_FAMILY_IGNORED or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer.image was created with a sharing mode of SHARING_MODE_EXCLUSIVE and srcQueueFamilyIndex is QUEUE_FAMILY_IGNORED, dstQueueFamilyIndex must also be QUEUE_FAMILY_IGNORED.image was created with a sharing mode of SHARING_MODE_EXCLUSIVE and srcQueueFamilyIndex is not QUEUE_FAMILY_IGNORED, it must be a valid queue family or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer.image was created with a sharing mode of SHARING_MODE_EXCLUSIVE and dstQueueFamilyIndex is not QUEUE_FAMILY_IGNORED, it must be a valid queue family or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer.image was created with a sharing mode of SHARING_MODE_EXCLUSIVE, and srcQueueFamilyIndex and dstQueueFamilyIndex are not QUEUE_FAMILY_IGNORED, at least one of them must be the same as the family of the queue that will execute this barriersubresourceRange.baseMipLevel must be less than the mipLevels specified in VkImageCreateInfo when image was createdsubresourceRange.levelCount is not REMAINING_MIP_LEVELS, subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the mipLevels specified in VkImageCreateInfo when image was createdsubresourceRange.baseArrayLayer must be less than the arrayLayers specified in VkImageCreateInfo when image was createdsubresourceRange.layerCount is not REMAINING_ARRAY_LAYERS, subresourceRange.baseArrayLayer subresourceRange.layerCount must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was createdimage has a depth/stencil format with both depth and stencil and the separateDepthStencilLayouts feature is enabled, then the aspectMask member of subresourceRange must include either or both IMAGE_ASPECT_DEPTH_BIT and IMAGE_ASPECT_STENCIL_BITimage has a depth/stencil format with both depth and stencil and the separateDepthStencilLayouts feature is not enabled, then the aspectMask member of subresourceRange must include both IMAGE_ASPECT_DEPTH_BIT and IMAGE_ASPECT_STENCIL_BITimage has a single-plane color format or is not disjoint, then the aspectMask member of subresourceRange must be IMAGE_ASPECT_COLOR_BITimage has a multi-planar format and the image is disjoint, then the aspectMask member of subresourceRange must include either at least one of IMAGE_ASPECT_PLANE_0_BIT, IMAGE_ASPECT_PLANE_1_BIT, and IMAGE_ASPECT_PLANE_2_BIT; or must include IMAGE_ASPECT_COLOR_BITimage has a multi-planar format with only two planes, then the aspectMask member of subresourceRange must not include IMAGE_ASPECT_PLANE_2_BIToldLayout or newLayout is IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then image must have been created with IMAGE_USAGE_COLOR_ATTACHMENT_BIT setoldLayout or newLayout is IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL then image must have been created with IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT setoldLayout or newLayout is IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then image must have been created with IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT setoldLayout or newLayout is IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL then image must have been created with IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT setoldLayout or newLayout is IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL then image must have been created with IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT setoldLayout or newLayout is IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL then image must have been created with IMAGE_USAGE_SAMPLED_BIT or IMAGE_USAGE_INPUT_ATTACHMENT_BIT setoldLayout or newLayout is IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL then image must have been created with IMAGE_USAGE_TRANSFER_SRC_BIT setoldLayout or newLayout is IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL then image must have been created with IMAGE_USAGE_TRANSFER_DST_BIT setimage is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory objectoldLayout or newLayout is IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV then image must have been created with IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV setsType must be STRUCTURE_TYPE_IMAGE_MEMORY_BARRIERpNext must be NULL or a pointer to a valid instance of VkSampleLocationsInfoEXToldLayout must be a valid VkImageLayout valuenewLayout must be a valid VkImageLayout valueimage must be a valid VkImage handlesubresourceRange must be a valid VkImageSubresourceRange structureVkImageSubresourceRange, CmdPipelineBarrier, CmdWaitEvents
sType – the type of this structure.pNext – NULL or a pointer to an extension-specific structure.srcAccessMask – a bitmask of VkAccessFlagBits specifying a source access mask.dstAccessMask – a bitmask of VkAccessFlagBits specifying a destination access mask.oldLayout – the old layout in an image layout transition.newLayout – the new layout in an image layout transition.srcQueueFamilyIndex – the source queue family for a queue family ownership transfer.dstQueueFamilyIndex – the destination queue family for a queue family ownership transfer.image – a handle to the image affected by this barrier.subresourceRange – describes the image subresource range within image that is affected by this barrier.
struct VkImageMemoryBarrier {
VkStructureType sType;
void const * pNext;
VkAccessFlags srcAccessMask;
VkAccessFlags dstAccessMask;
VkImageLayout oldLayout;
VkImageLayout newLayout;
uint32_t srcQueueFamilyIndex;
uint32_t dstQueueFamilyIndex;
VkImage image;
VkImageSubresourceRange subresourceRange;
}| Modifier and Type | Class and Description |
|---|---|
static class |
VkImageMemoryBarrier.Buffer
An array of
VkImageMemoryBarrier structs. |
| Modifier and Type | Field and Description |
|---|---|
static int |
ALIGNOF
The struct alignment in bytes.
|
static int |
DSTACCESSMASK
The struct member offsets.
|
static int |
DSTQUEUEFAMILYINDEX
The struct member offsets.
|
static int |
IMAGE
The struct member offsets.
|
static int |
NEWLAYOUT
The struct member offsets.
|
static int |
OLDLAYOUT
The struct member offsets.
|
static int |
PNEXT
The struct member offsets.
|
static int |
SIZEOF
The struct size in bytes.
|
static int |
SRCACCESSMASK
The struct member offsets.
|
static int |
SRCQUEUEFAMILYINDEX
The struct member offsets.
|
static int |
STYPE
The struct member offsets.
|
static int |
SUBRESOURCERANGE
The struct member offsets.
|
| Constructor and Description |
|---|
VkImageMemoryBarrier(java.nio.ByteBuffer container)
Creates a
VkImageMemoryBarrier instance at the current position of the specified ByteBuffer container. |
| Modifier and Type | Method and Description |
|---|---|
static VkImageMemoryBarrier |
calloc()
Returns a new
VkImageMemoryBarrier instance allocated with memCalloc. |
static VkImageMemoryBarrier.Buffer |
calloc(int capacity)
Returns a new
VkImageMemoryBarrier.Buffer instance allocated with memCalloc. |
static VkImageMemoryBarrier |
callocStack()
Returns a new
VkImageMemoryBarrier instance allocated on the thread-local MemoryStack and initializes all its bits to zero. |
static VkImageMemoryBarrier.Buffer |
callocStack(int capacity)
Returns a new
VkImageMemoryBarrier.Buffer instance allocated on the thread-local MemoryStack and initializes all its bits to zero. |
static VkImageMemoryBarrier.Buffer |
callocStack(int capacity,
org.lwjgl.system.MemoryStack stack)
Returns a new
VkImageMemoryBarrier.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero. |
static VkImageMemoryBarrier |
callocStack(org.lwjgl.system.MemoryStack stack)
Returns a new
VkImageMemoryBarrier instance allocated on the specified MemoryStack and initializes all its bits to zero. |
static VkImageMemoryBarrier |
create()
Returns a new
VkImageMemoryBarrier instance allocated with BufferUtils. |
static VkImageMemoryBarrier.Buffer |
create(int capacity)
Returns a new
VkImageMemoryBarrier.Buffer instance allocated with BufferUtils. |
static VkImageMemoryBarrier |
create(long address)
Returns a new
VkImageMemoryBarrier instance for the specified memory address. |
static VkImageMemoryBarrier.Buffer |
create(long address,
int capacity)
Create a
VkImageMemoryBarrier.Buffer instance at the specified memory. |
static VkImageMemoryBarrier |
createSafe(long address)
|
static VkImageMemoryBarrier.Buffer |
createSafe(long address,
int capacity)
|
int |
dstAccessMask()
Returns the value of the
dstAccessMask field. |
VkImageMemoryBarrier |
dstAccessMask(int value)
Sets the specified value to the
dstAccessMask field. |
int |
dstQueueFamilyIndex()
Returns the value of the
dstQueueFamilyIndex field. |
VkImageMemoryBarrier |
dstQueueFamilyIndex(int value)
Sets the specified value to the
dstQueueFamilyIndex field. |
long |
image()
Returns the value of the
image field. |
VkImageMemoryBarrier |
image(long value)
Sets the specified value to the
image field. |
static VkImageMemoryBarrier |
malloc()
Returns a new
VkImageMemoryBarrier instance allocated with memAlloc. |
static VkImageMemoryBarrier.Buffer |
malloc(int capacity)
Returns a new
VkImageMemoryBarrier.Buffer instance allocated with memAlloc. |
static VkImageMemoryBarrier |
mallocStack()
Returns a new
VkImageMemoryBarrier instance allocated on the thread-local MemoryStack. |
static VkImageMemoryBarrier.Buffer |
mallocStack(int capacity)
Returns a new
VkImageMemoryBarrier.Buffer instance allocated on the thread-local MemoryStack. |
static VkImageMemoryBarrier.Buffer |
mallocStack(int capacity,
org.lwjgl.system.MemoryStack stack)
Returns a new
VkImageMemoryBarrier.Buffer instance allocated on the specified MemoryStack. |
static VkImageMemoryBarrier |
mallocStack(org.lwjgl.system.MemoryStack stack)
Returns a new
VkImageMemoryBarrier instance allocated on the specified MemoryStack. |
static int |
ndstAccessMask(long struct)
Unsafe version of
dstAccessMask(). |
static void |
ndstAccessMask(long struct,
int value)
Unsafe version of
dstAccessMask. |
static int |
ndstQueueFamilyIndex(long struct)
Unsafe version of
dstQueueFamilyIndex(). |
static void |
ndstQueueFamilyIndex(long struct,
int value)
Unsafe version of
dstQueueFamilyIndex. |
int |
newLayout()
Returns the value of the
newLayout field. |
VkImageMemoryBarrier |
newLayout(int value)
Sets the specified value to the
newLayout field. |
static long |
nimage(long struct)
Unsafe version of
image(). |
static void |
nimage(long struct,
long value)
Unsafe version of
image. |
static int |
nnewLayout(long struct)
Unsafe version of
newLayout(). |
static void |
nnewLayout(long struct,
int value)
Unsafe version of
newLayout. |
static int |
noldLayout(long struct)
Unsafe version of
oldLayout(). |
static void |
noldLayout(long struct,
int value)
Unsafe version of
oldLayout. |
static long |
npNext(long struct)
Unsafe version of
pNext(). |
static void |
npNext(long struct,
long value)
Unsafe version of
pNext. |
static int |
nsrcAccessMask(long struct)
Unsafe version of
srcAccessMask(). |
static void |
nsrcAccessMask(long struct,
int value)
Unsafe version of
srcAccessMask. |
static int |
nsrcQueueFamilyIndex(long struct)
Unsafe version of
srcQueueFamilyIndex(). |
static void |
nsrcQueueFamilyIndex(long struct,
int value)
Unsafe version of
srcQueueFamilyIndex. |
static int |
nsType(long struct)
Unsafe version of
sType(). |
static void |
nsType(long struct,
int value)
Unsafe version of
sType. |
static VkImageSubresourceRange |
nsubresourceRange(long struct)
Unsafe version of
subresourceRange(). |
static void |
nsubresourceRange(long struct,
VkImageSubresourceRange value)
Unsafe version of
subresourceRange. |
int |
oldLayout()
Returns the value of the
oldLayout field. |
VkImageMemoryBarrier |
oldLayout(int value)
Sets the specified value to the
oldLayout field. |
long |
pNext()
Returns the value of the
pNext field. |
VkImageMemoryBarrier |
pNext(long value)
Sets the specified value to the
pNext field. |
VkImageMemoryBarrier |
set(int sType,
long pNext,
int srcAccessMask,
int dstAccessMask,
int oldLayout,
int newLayout,
int srcQueueFamilyIndex,
int dstQueueFamilyIndex,
long image,
VkImageSubresourceRange subresourceRange)
Initializes this struct with the specified values.
|
VkImageMemoryBarrier |
set(VkImageMemoryBarrier src)
Copies the specified struct data to this struct.
|
int |
sizeof() |
int |
srcAccessMask()
Returns the value of the
srcAccessMask field. |
VkImageMemoryBarrier |
srcAccessMask(int value)
Sets the specified value to the
srcAccessMask field. |
int |
srcQueueFamilyIndex()
Returns the value of the
srcQueueFamilyIndex field. |
VkImageMemoryBarrier |
srcQueueFamilyIndex(int value)
Sets the specified value to the
srcQueueFamilyIndex field. |
int |
sType()
Returns the value of the
sType field. |
VkImageMemoryBarrier |
sType(int value)
Sets the specified value to the
sType field. |
VkImageSubresourceRange |
subresourceRange()
Returns a
VkImageSubresourceRange view of the subresourceRange field. |
VkImageMemoryBarrier |
subresourceRange(java.util.function.Consumer<VkImageSubresourceRange> consumer)
Passes the
subresourceRange field to the specified Consumer. |
VkImageMemoryBarrier |
subresourceRange(VkImageSubresourceRange value)
Copies the specified
VkImageSubresourceRange to the subresourceRange field. |
public static final int SIZEOF
public static final int ALIGNOF
public static final int STYPE
public static final int PNEXT
public static final int SRCACCESSMASK
public static final int DSTACCESSMASK
public static final int OLDLAYOUT
public static final int NEWLAYOUT
public static final int SRCQUEUEFAMILYINDEX
public static final int DSTQUEUEFAMILYINDEX
public static final int IMAGE
public static final int SUBRESOURCERANGE
public VkImageMemoryBarrier(java.nio.ByteBuffer container)
VkImageMemoryBarrier instance at the current position of the specified ByteBuffer container. 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.
public int sizeof()
sizeof in class org.lwjgl.system.Structpublic int sType()
sType field.public long pNext()
pNext field.public int srcAccessMask()
srcAccessMask field.public int dstAccessMask()
dstAccessMask field.public int oldLayout()
oldLayout field.public int newLayout()
newLayout field.public int srcQueueFamilyIndex()
srcQueueFamilyIndex field.public int dstQueueFamilyIndex()
dstQueueFamilyIndex field.public long image()
image field.public VkImageSubresourceRange subresourceRange()
VkImageSubresourceRange view of the subresourceRange field.public VkImageMemoryBarrier sType(int value)
sType field.public VkImageMemoryBarrier pNext(long value)
pNext field.public VkImageMemoryBarrier srcAccessMask(int value)
srcAccessMask field.public VkImageMemoryBarrier dstAccessMask(int value)
dstAccessMask field.public VkImageMemoryBarrier oldLayout(int value)
oldLayout field.public VkImageMemoryBarrier newLayout(int value)
newLayout field.public VkImageMemoryBarrier srcQueueFamilyIndex(int value)
srcQueueFamilyIndex field.public VkImageMemoryBarrier dstQueueFamilyIndex(int value)
dstQueueFamilyIndex field.public VkImageMemoryBarrier image(long value)
image field.public VkImageMemoryBarrier subresourceRange(VkImageSubresourceRange value)
VkImageSubresourceRange to the subresourceRange field.public VkImageMemoryBarrier subresourceRange(java.util.function.Consumer<VkImageSubresourceRange> consumer)
subresourceRange field to the specified Consumer.public VkImageMemoryBarrier set(int sType, long pNext, int srcAccessMask, int dstAccessMask, int oldLayout, int newLayout, int srcQueueFamilyIndex, int dstQueueFamilyIndex, long image, VkImageSubresourceRange subresourceRange)
public VkImageMemoryBarrier set(VkImageMemoryBarrier src)
src - the source structpublic static VkImageMemoryBarrier malloc()
VkImageMemoryBarrier instance allocated with memAlloc. The instance must be explicitly freed.public static VkImageMemoryBarrier calloc()
VkImageMemoryBarrier instance allocated with memCalloc. The instance must be explicitly freed.public static VkImageMemoryBarrier create()
VkImageMemoryBarrier instance allocated with BufferUtils.public static VkImageMemoryBarrier create(long address)
VkImageMemoryBarrier instance for the specified memory address.@Nullable public static VkImageMemoryBarrier createSafe(long address)
public static VkImageMemoryBarrier.Buffer malloc(int capacity)
VkImageMemoryBarrier.Buffer instance allocated with memAlloc. The instance must be explicitly freed.capacity - the buffer capacitypublic static VkImageMemoryBarrier.Buffer calloc(int capacity)
VkImageMemoryBarrier.Buffer instance allocated with memCalloc. The instance must be explicitly freed.capacity - the buffer capacitypublic static VkImageMemoryBarrier.Buffer create(int capacity)
VkImageMemoryBarrier.Buffer instance allocated with BufferUtils.capacity - the buffer capacitypublic static VkImageMemoryBarrier.Buffer create(long address, int capacity)
VkImageMemoryBarrier.Buffer instance at the specified memory.address - the memory addresscapacity - the buffer capacity@Nullable public static VkImageMemoryBarrier.Buffer createSafe(long address, int capacity)
public static VkImageMemoryBarrier mallocStack()
VkImageMemoryBarrier instance allocated on the thread-local MemoryStack.public static VkImageMemoryBarrier callocStack()
VkImageMemoryBarrier instance allocated on the thread-local MemoryStack and initializes all its bits to zero.public static VkImageMemoryBarrier mallocStack(org.lwjgl.system.MemoryStack stack)
VkImageMemoryBarrier instance allocated on the specified MemoryStack.stack - the stack from which to allocatepublic static VkImageMemoryBarrier callocStack(org.lwjgl.system.MemoryStack stack)
VkImageMemoryBarrier instance allocated on the specified MemoryStack and initializes all its bits to zero.stack - the stack from which to allocatepublic static VkImageMemoryBarrier.Buffer mallocStack(int capacity)
VkImageMemoryBarrier.Buffer instance allocated on the thread-local MemoryStack.capacity - the buffer capacitypublic static VkImageMemoryBarrier.Buffer callocStack(int capacity)
VkImageMemoryBarrier.Buffer instance allocated on the thread-local MemoryStack and initializes all its bits to zero.capacity - the buffer capacitypublic static VkImageMemoryBarrier.Buffer mallocStack(int capacity, org.lwjgl.system.MemoryStack stack)
VkImageMemoryBarrier.Buffer instance allocated on the specified MemoryStack.stack - the stack from which to allocatecapacity - the buffer capacitypublic static VkImageMemoryBarrier.Buffer callocStack(int capacity, org.lwjgl.system.MemoryStack stack)
VkImageMemoryBarrier.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.stack - the stack from which to allocatecapacity - the buffer capacitypublic static int nsType(long struct)
sType().public static long npNext(long struct)
pNext().public static int nsrcAccessMask(long struct)
srcAccessMask().public static int ndstAccessMask(long struct)
dstAccessMask().public static int noldLayout(long struct)
oldLayout().public static int nnewLayout(long struct)
newLayout().public static int nsrcQueueFamilyIndex(long struct)
srcQueueFamilyIndex().public static int ndstQueueFamilyIndex(long struct)
dstQueueFamilyIndex().public static long nimage(long struct)
image().public static VkImageSubresourceRange nsubresourceRange(long struct)
subresourceRange().public static void nsType(long struct,
int value)
sType.public static void npNext(long struct,
long value)
pNext.public static void nsrcAccessMask(long struct,
int value)
srcAccessMask.public static void ndstAccessMask(long struct,
int value)
dstAccessMask.public static void noldLayout(long struct,
int value)
oldLayout.public static void nnewLayout(long struct,
int value)
newLayout.public static void nsrcQueueFamilyIndex(long struct,
int value)
srcQueueFamilyIndex.public static void ndstQueueFamilyIndex(long struct,
int value)
dstQueueFamilyIndex.public static void nimage(long struct,
long value)
image.public static void nsubresourceRange(long struct,
VkImageSubresourceRange value)
subresourceRange.Copyright LWJGL. All Rights Reserved. License terms.