public class VkRenderPassMultiviewCreateInfo
extends org.lwjgl.system.Struct
implements org.lwjgl.system.NativeResource
When a subpass uses a non-zero view mask, multiview functionality is considered to be enabled. Multiview is all-or-nothing for a render pass - that is, either all subpasses must have a non-zero view mask (though some subpasses may have only one view) or all must be zero. Multiview causes all drawing and clear commands in the subpass to behave as if they were broadcast to each view, where a view is represented by one layer of the framebuffer attachments. All draws and clears are broadcast to each view index whose bit is set in the view mask. The view index is provided in the ViewIndex shader input variable, and color, depth/stencil, and input attachments all read/write the layer of the framebuffer corresponding to the view index.
If the view mask is zero for all subpasses, multiview is considered to be disabled and all drawing commands execute normally, without this additional broadcasting.
Some implementations may not support multiview in conjunction with geometry shaders or tessellation shaders.
When multiview is enabled, the DEPENDENCY_VIEW_LOCAL_BIT bit in a dependency can be used to express a view-local dependency, meaning that each view in the destination subpass depends on a single view in the source subpass. Unlike pipeline barriers, a subpass dependency can potentially have a different view mask in the source subpass and the destination subpass. If the dependency is view-local, then each view (dstView) in the destination subpass depends on the view dstView + pViewOffsets[dependency] in the source subpass. If there is not such a view in the source subpass, then this dependency does not affect that view in the destination subpass. If the dependency is not view-local, then all views in the destination subpass depend on all views in the source subpass, and the view offset is ignored. A non-zero view offset is not allowed in a self-dependency.
The elements of pCorrelationMasks are a set of masks of views indicating that views in the same mask may exhibit spatial coherency between the views, making it more efficient to render them concurrently. Correlation masks must not have a functional effect on the results of the multiview rendering.
When multiview is enabled, at the beginning of each subpass all non-render pass state is undefined. In particular, each time CmdBeginRenderPass or CmdNextSubpass is called the graphics pipeline must be bound, any relevant descriptor sets or vertex/index buffers must be bound, and any relevant dynamic state or push constants must be set before they are used.
A multiview subpass can declare that its shaders will write per-view attributes for all views in a single invocation, by setting the SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX bit in the subpass description. The only supported per-view attributes are position and viewport mask, and per-view position and viewport masks are written to output array variables decorated with PositionPerViewNV and ViewportMaskPerViewNV, respectively. If VK_NV_viewport_array2 is not supported and enabled, ViewportMaskPerViewNV must not be used. Values written to elements of PositionPerViewNV and ViewportMaskPerViewNV must not depend on the ViewIndex. The shader must also write to an output variable decorated with Position, and the value written to Position must equal the value written to PositionPerViewNV[ViewIndex]. Similarly, if ViewportMaskPerViewNV is written to then the shader must also write to an output variable decorated with ViewportMaskNV, and the value written to ViewportMaskNV must equal the value written to ViewportMaskPerViewNV[ViewIndex]. Implementations will either use values taken from Position and ViewportMaskNV and invoke the shader once for each view, or will use values taken from PositionPerViewNV and ViewportMaskPerViewNV and invoke the shader fewer times. The values written to Position and ViewportMaskNV must not depend on the values written to PositionPerViewNV and ViewportMaskPerViewNV, or vice versa (to allow compilers to eliminate the unused outputs). All attributes that do not have *PerViewNV counterparts must not depend on ViewIndex.
Per-view attributes are all-or-nothing for a subpass. That is, all pipelines compiled against a subpass that includes the SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX bit must write per-view attributes to the *PerViewNV[] shader outputs, in addition to the non-per-view (e.g. Position) outputs. Pipelines compiled against a subpass that does not include this bit must not include the *PerViewNV[] outputs in their interfaces.
pCorrelationMaskssType must be STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFOsubpassCount is not 0, pViewMasks must be a valid pointer to an array of subpassCount uint32_t valuesdependencyCount is not 0, pViewOffsets must be a valid pointer to an array of dependencyCount int32_t valuescorrelationMaskCount is not 0, pCorrelationMasks must be a valid pointer to an array of correlationMaskCount uint32_t valuessType – the type of this structure.pNext – NULL or a pointer to an extension-specific structure.subpassCount – zero or the number of subpasses in the render pass.pViewMasks – a pointer to an array of subpassCount view masks, where each mask is a bitfield of view indices describing which views rendering is broadcast to in each subpass, when multiview is enabled. If subpassCount is zero, each view mask is treated as zero.dependencyCount – zero or the number of dependencies in the render pass.pViewOffsets – a pointer to an array of dependencyCount view offsets, one for each dependency. If dependencyCount is zero, each dependency’s view offset is treated as zero. Each view offset controls which views in the source subpass the views in the destination subpass depend on.correlationMaskCount – zero or the number of correlation masks.pCorrelationMasks – a pointer to an array of correlationMaskCount view masks indicating sets of views that may be more efficient to render concurrently.
struct VkRenderPassMultiviewCreateInfo {
VkStructureType sType;
void const * pNext;
uint32_t subpassCount;
uint32_t const * pViewMasks;
uint32_t dependencyCount;
int32_t const * pViewOffsets;
uint32_t correlationMaskCount;
uint32_t const * pCorrelationMasks;
}| Modifier and Type | Class and Description |
|---|---|
static class |
VkRenderPassMultiviewCreateInfo.Buffer
An array of
VkRenderPassMultiviewCreateInfo structs. |
| Modifier and Type | Field and Description |
|---|---|
static int |
ALIGNOF
The struct alignment in bytes.
|
static int |
CORRELATIONMASKCOUNT
The struct member offsets.
|
static int |
DEPENDENCYCOUNT
The struct member offsets.
|
static int |
PCORRELATIONMASKS
The struct member offsets.
|
static int |
PNEXT
The struct member offsets.
|
static int |
PVIEWMASKS
The struct member offsets.
|
static int |
PVIEWOFFSETS
The struct member offsets.
|
static int |
SIZEOF
The struct size in bytes.
|
static int |
STYPE
The struct member offsets.
|
static int |
SUBPASSCOUNT
The struct member offsets.
|
| Constructor and Description |
|---|
VkRenderPassMultiviewCreateInfo(java.nio.ByteBuffer container)
Creates a
VkRenderPassMultiviewCreateInfo instance at the current position of the specified ByteBuffer container. |
| Modifier and Type | Method and Description |
|---|---|
static VkRenderPassMultiviewCreateInfo |
calloc()
Returns a new
VkRenderPassMultiviewCreateInfo instance allocated with memCalloc. |
static VkRenderPassMultiviewCreateInfo.Buffer |
calloc(int capacity)
Returns a new
VkRenderPassMultiviewCreateInfo.Buffer instance allocated with memCalloc. |
static VkRenderPassMultiviewCreateInfo |
callocStack()
Returns a new
VkRenderPassMultiviewCreateInfo instance allocated on the thread-local MemoryStack and initializes all its bits to zero. |
static VkRenderPassMultiviewCreateInfo.Buffer |
callocStack(int capacity)
Returns a new
VkRenderPassMultiviewCreateInfo.Buffer instance allocated on the thread-local MemoryStack and initializes all its bits to zero. |
static VkRenderPassMultiviewCreateInfo.Buffer |
callocStack(int capacity,
org.lwjgl.system.MemoryStack stack)
Returns a new
VkRenderPassMultiviewCreateInfo.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero. |
static VkRenderPassMultiviewCreateInfo |
callocStack(org.lwjgl.system.MemoryStack stack)
Returns a new
VkRenderPassMultiviewCreateInfo instance allocated on the specified MemoryStack and initializes all its bits to zero. |
int |
correlationMaskCount()
Returns the value of the
correlationMaskCount field. |
static VkRenderPassMultiviewCreateInfo |
create()
Returns a new
VkRenderPassMultiviewCreateInfo instance allocated with BufferUtils. |
static VkRenderPassMultiviewCreateInfo.Buffer |
create(int capacity)
Returns a new
VkRenderPassMultiviewCreateInfo.Buffer instance allocated with BufferUtils. |
static VkRenderPassMultiviewCreateInfo |
create(long address)
Returns a new
VkRenderPassMultiviewCreateInfo instance for the specified memory address. |
static VkRenderPassMultiviewCreateInfo.Buffer |
create(long address,
int capacity)
Create a
VkRenderPassMultiviewCreateInfo.Buffer instance at the specified memory. |
static VkRenderPassMultiviewCreateInfo |
createSafe(long address)
|
static VkRenderPassMultiviewCreateInfo.Buffer |
createSafe(long address,
int capacity)
|
int |
dependencyCount()
Returns the value of the
dependencyCount field. |
static VkRenderPassMultiviewCreateInfo |
malloc()
Returns a new
VkRenderPassMultiviewCreateInfo instance allocated with memAlloc. |
static VkRenderPassMultiviewCreateInfo.Buffer |
malloc(int capacity)
Returns a new
VkRenderPassMultiviewCreateInfo.Buffer instance allocated with memAlloc. |
static VkRenderPassMultiviewCreateInfo |
mallocStack()
Returns a new
VkRenderPassMultiviewCreateInfo instance allocated on the thread-local MemoryStack. |
static VkRenderPassMultiviewCreateInfo.Buffer |
mallocStack(int capacity)
Returns a new
VkRenderPassMultiviewCreateInfo.Buffer instance allocated on the thread-local MemoryStack. |
static VkRenderPassMultiviewCreateInfo.Buffer |
mallocStack(int capacity,
org.lwjgl.system.MemoryStack stack)
Returns a new
VkRenderPassMultiviewCreateInfo.Buffer instance allocated on the specified MemoryStack. |
static VkRenderPassMultiviewCreateInfo |
mallocStack(org.lwjgl.system.MemoryStack stack)
Returns a new
VkRenderPassMultiviewCreateInfo instance allocated on the specified MemoryStack. |
static int |
ncorrelationMaskCount(long struct)
Unsafe version of
correlationMaskCount(). |
static void |
ncorrelationMaskCount(long struct,
int value)
Sets the specified value to the
correlationMaskCount field of the specified struct. |
static int |
ndependencyCount(long struct)
Unsafe version of
dependencyCount(). |
static void |
ndependencyCount(long struct,
int value)
Sets the specified value to the
dependencyCount field of the specified struct. |
static java.nio.IntBuffer |
npCorrelationMasks(long struct)
Unsafe version of
pCorrelationMasks. |
static void |
npCorrelationMasks(long struct,
java.nio.IntBuffer value)
Unsafe version of
pCorrelationMasks. |
static long |
npNext(long struct)
Unsafe version of
pNext(). |
static void |
npNext(long struct,
long value)
Unsafe version of
pNext. |
static java.nio.IntBuffer |
npViewMasks(long struct)
Unsafe version of
pViewMasks. |
static void |
npViewMasks(long struct,
java.nio.IntBuffer value)
Unsafe version of
pViewMasks. |
static java.nio.IntBuffer |
npViewOffsets(long struct)
Unsafe version of
pViewOffsets. |
static void |
npViewOffsets(long struct,
java.nio.IntBuffer value)
Unsafe version of
pViewOffsets. |
static int |
nsType(long struct)
Unsafe version of
sType(). |
static void |
nsType(long struct,
int value)
Unsafe version of
sType. |
static int |
nsubpassCount(long struct)
Unsafe version of
subpassCount(). |
static void |
nsubpassCount(long struct,
int value)
Sets the specified value to the
subpassCount field of the specified struct. |
java.nio.IntBuffer |
pCorrelationMasks()
Returns a
IntBuffer view of the data pointed to by the pCorrelationMasks field. |
VkRenderPassMultiviewCreateInfo |
pCorrelationMasks(java.nio.IntBuffer value)
Sets the address of the specified
IntBuffer to the pCorrelationMasks field. |
long |
pNext()
Returns the value of the
pNext field. |
VkRenderPassMultiviewCreateInfo |
pNext(long value)
Sets the specified value to the
pNext field. |
java.nio.IntBuffer |
pViewMasks()
Returns a
IntBuffer view of the data pointed to by the pViewMasks field. |
VkRenderPassMultiviewCreateInfo |
pViewMasks(java.nio.IntBuffer value)
Sets the address of the specified
IntBuffer to the pViewMasks field. |
java.nio.IntBuffer |
pViewOffsets()
Returns a
IntBuffer view of the data pointed to by the pViewOffsets field. |
VkRenderPassMultiviewCreateInfo |
pViewOffsets(java.nio.IntBuffer value)
Sets the address of the specified
IntBuffer to the pViewOffsets field. |
VkRenderPassMultiviewCreateInfo |
set(int sType,
long pNext,
java.nio.IntBuffer pViewMasks,
java.nio.IntBuffer pViewOffsets,
java.nio.IntBuffer pCorrelationMasks)
Initializes this struct with the specified values.
|
VkRenderPassMultiviewCreateInfo |
set(VkRenderPassMultiviewCreateInfo src)
Copies the specified struct data to this struct.
|
int |
sizeof() |
int |
sType()
Returns the value of the
sType field. |
VkRenderPassMultiviewCreateInfo |
sType(int value)
Sets the specified value to the
sType field. |
int |
subpassCount()
Returns the value of the
subpassCount field. |
static void |
validate(long struct)
Validates pointer members that should not be
NULL. |
static void |
validate(long array,
int count)
Calls
validate(long) for each struct contained in the specified struct array. |
public static final int SIZEOF
public static final int ALIGNOF
public static final int STYPE
public static final int PNEXT
public static final int SUBPASSCOUNT
public static final int PVIEWMASKS
public static final int DEPENDENCYCOUNT
public static final int PVIEWOFFSETS
public static final int CORRELATIONMASKCOUNT
public static final int PCORRELATIONMASKS
public VkRenderPassMultiviewCreateInfo(java.nio.ByteBuffer container)
VkRenderPassMultiviewCreateInfo 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 subpassCount()
subpassCount field.@Nullable public java.nio.IntBuffer pViewMasks()
IntBuffer view of the data pointed to by the pViewMasks field.public int dependencyCount()
dependencyCount field.@Nullable public java.nio.IntBuffer pViewOffsets()
IntBuffer view of the data pointed to by the pViewOffsets field.public int correlationMaskCount()
correlationMaskCount field.@Nullable public java.nio.IntBuffer pCorrelationMasks()
IntBuffer view of the data pointed to by the pCorrelationMasks field.public VkRenderPassMultiviewCreateInfo sType(int value)
sType field.public VkRenderPassMultiviewCreateInfo pNext(long value)
pNext field.public VkRenderPassMultiviewCreateInfo pViewMasks(@Nullable java.nio.IntBuffer value)
IntBuffer to the pViewMasks field.public VkRenderPassMultiviewCreateInfo pViewOffsets(@Nullable java.nio.IntBuffer value)
IntBuffer to the pViewOffsets field.public VkRenderPassMultiviewCreateInfo pCorrelationMasks(@Nullable java.nio.IntBuffer value)
IntBuffer to the pCorrelationMasks field.public VkRenderPassMultiviewCreateInfo set(int sType, long pNext, @Nullable java.nio.IntBuffer pViewMasks, @Nullable java.nio.IntBuffer pViewOffsets, @Nullable java.nio.IntBuffer pCorrelationMasks)
public VkRenderPassMultiviewCreateInfo set(VkRenderPassMultiviewCreateInfo src)
src - the source structpublic static VkRenderPassMultiviewCreateInfo malloc()
VkRenderPassMultiviewCreateInfo instance allocated with memAlloc. The instance must be explicitly freed.public static VkRenderPassMultiviewCreateInfo calloc()
VkRenderPassMultiviewCreateInfo instance allocated with memCalloc. The instance must be explicitly freed.public static VkRenderPassMultiviewCreateInfo create()
VkRenderPassMultiviewCreateInfo instance allocated with BufferUtils.public static VkRenderPassMultiviewCreateInfo create(long address)
VkRenderPassMultiviewCreateInfo instance for the specified memory address.@Nullable public static VkRenderPassMultiviewCreateInfo createSafe(long address)
public static VkRenderPassMultiviewCreateInfo.Buffer malloc(int capacity)
VkRenderPassMultiviewCreateInfo.Buffer instance allocated with memAlloc. The instance must be explicitly freed.capacity - the buffer capacitypublic static VkRenderPassMultiviewCreateInfo.Buffer calloc(int capacity)
VkRenderPassMultiviewCreateInfo.Buffer instance allocated with memCalloc. The instance must be explicitly freed.capacity - the buffer capacitypublic static VkRenderPassMultiviewCreateInfo.Buffer create(int capacity)
VkRenderPassMultiviewCreateInfo.Buffer instance allocated with BufferUtils.capacity - the buffer capacitypublic static VkRenderPassMultiviewCreateInfo.Buffer create(long address, int capacity)
VkRenderPassMultiviewCreateInfo.Buffer instance at the specified memory.address - the memory addresscapacity - the buffer capacity@Nullable public static VkRenderPassMultiviewCreateInfo.Buffer createSafe(long address, int capacity)
public static VkRenderPassMultiviewCreateInfo mallocStack()
VkRenderPassMultiviewCreateInfo instance allocated on the thread-local MemoryStack.public static VkRenderPassMultiviewCreateInfo callocStack()
VkRenderPassMultiviewCreateInfo instance allocated on the thread-local MemoryStack and initializes all its bits to zero.public static VkRenderPassMultiviewCreateInfo mallocStack(org.lwjgl.system.MemoryStack stack)
VkRenderPassMultiviewCreateInfo instance allocated on the specified MemoryStack.stack - the stack from which to allocatepublic static VkRenderPassMultiviewCreateInfo callocStack(org.lwjgl.system.MemoryStack stack)
VkRenderPassMultiviewCreateInfo instance allocated on the specified MemoryStack and initializes all its bits to zero.stack - the stack from which to allocatepublic static VkRenderPassMultiviewCreateInfo.Buffer mallocStack(int capacity)
VkRenderPassMultiviewCreateInfo.Buffer instance allocated on the thread-local MemoryStack.capacity - the buffer capacitypublic static VkRenderPassMultiviewCreateInfo.Buffer callocStack(int capacity)
VkRenderPassMultiviewCreateInfo.Buffer instance allocated on the thread-local MemoryStack and initializes all its bits to zero.capacity - the buffer capacitypublic static VkRenderPassMultiviewCreateInfo.Buffer mallocStack(int capacity, org.lwjgl.system.MemoryStack stack)
VkRenderPassMultiviewCreateInfo.Buffer instance allocated on the specified MemoryStack.stack - the stack from which to allocatecapacity - the buffer capacitypublic static VkRenderPassMultiviewCreateInfo.Buffer callocStack(int capacity, org.lwjgl.system.MemoryStack stack)
VkRenderPassMultiviewCreateInfo.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 nsubpassCount(long struct)
subpassCount().@Nullable public static java.nio.IntBuffer npViewMasks(long struct)
pViewMasks.public static int ndependencyCount(long struct)
dependencyCount().@Nullable public static java.nio.IntBuffer npViewOffsets(long struct)
pViewOffsets.public static int ncorrelationMaskCount(long struct)
correlationMaskCount().@Nullable public static java.nio.IntBuffer npCorrelationMasks(long struct)
pCorrelationMasks.public static void nsType(long struct,
int value)
sType.public static void npNext(long struct,
long value)
pNext.public static void nsubpassCount(long struct,
int value)
subpassCount field of the specified struct.public static void npViewMasks(long struct,
@Nullable
java.nio.IntBuffer value)
pViewMasks.public static void ndependencyCount(long struct,
int value)
dependencyCount field of the specified struct.public static void npViewOffsets(long struct,
@Nullable
java.nio.IntBuffer value)
pViewOffsets.public static void ncorrelationMaskCount(long struct,
int value)
correlationMaskCount field of the specified struct.public static void npCorrelationMasks(long struct,
@Nullable
java.nio.IntBuffer value)
pCorrelationMasks.public static void validate(long struct)
NULL.struct - the struct to validatepublic static void validate(long array,
int count)
validate(long) for each struct contained in the specified struct array.array - the struct array to validatecount - the number of structs in arrayCopyright LWJGL. All Rights Reserved. License terms.