Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- cmdBindTransformFeedbackBuffersEXT :: forall io. MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> ("sizes" ::: Vector DeviceSize) -> io ()
- cmdBeginTransformFeedbackEXT :: forall io. MonadIO io => CommandBuffer -> ("firstCounterBuffer" ::: Word32) -> ("counterBuffers" ::: Vector Buffer) -> ("counterBufferOffsets" ::: Vector DeviceSize) -> io ()
- cmdWithTransformFeedbackEXT :: forall io r. MonadIO io => (io () -> io () -> r) -> CommandBuffer -> Word32 -> Vector Buffer -> Vector DeviceSize -> r
- cmdEndTransformFeedbackEXT :: forall io. MonadIO io => CommandBuffer -> ("firstCounterBuffer" ::: Word32) -> ("counterBuffers" ::: Vector Buffer) -> ("counterBufferOffsets" ::: Vector DeviceSize) -> io ()
- cmdBeginQueryIndexedEXT :: forall io. MonadIO io => CommandBuffer -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> ("index" ::: Word32) -> io ()
- cmdWithQueryIndexedEXT :: forall io r. MonadIO io => (io () -> io () -> r) -> CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> r
- cmdEndQueryIndexedEXT :: forall io. MonadIO io => CommandBuffer -> QueryPool -> ("query" ::: Word32) -> ("index" ::: Word32) -> io ()
- cmdDrawIndirectByteCountEXT :: forall io. MonadIO io => CommandBuffer -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("counterBuffer" ::: Buffer) -> ("counterBufferOffset" ::: DeviceSize) -> ("counterOffset" ::: Word32) -> ("vertexStride" ::: Word32) -> io ()
- data PhysicalDeviceTransformFeedbackFeaturesEXT = PhysicalDeviceTransformFeedbackFeaturesEXT {}
- data PhysicalDeviceTransformFeedbackPropertiesEXT = PhysicalDeviceTransformFeedbackPropertiesEXT {
- maxTransformFeedbackStreams :: Word32
- maxTransformFeedbackBuffers :: Word32
- maxTransformFeedbackBufferSize :: DeviceSize
- maxTransformFeedbackStreamDataSize :: Word32
- maxTransformFeedbackBufferDataSize :: Word32
- maxTransformFeedbackBufferDataStride :: Word32
- transformFeedbackQueries :: Bool
- transformFeedbackStreamsLinesTriangles :: Bool
- transformFeedbackRasterizationStreamSelect :: Bool
- transformFeedbackDraw :: Bool
- data PipelineRasterizationStateStreamCreateInfoEXT = PipelineRasterizationStateStreamCreateInfoEXT {}
- newtype PipelineRasterizationStateStreamCreateFlagsEXT = PipelineRasterizationStateStreamCreateFlagsEXT Flags
- type EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1
- pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: forall a. Integral a => a
- type EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback"
- pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
cmdBindTransformFeedbackBuffersEXT :: forall io. MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> ("sizes" ::: Vector DeviceSize) -> io () Source #
vkCmdBindTransformFeedbackBuffersEXT - Bind transform feedback buffers to a command buffer
Parameters
commandBuffer
is the command buffer into which the command is recorded.
firstBinding
is the index of the first transform feedback binding whose state is updated by the command.bindingCount
is the number of transform feedback bindings whose state is updated by the command.pBuffers
is a pointer to an array of buffer handles.pOffsets
is a pointer to an array of buffer offsets.pSizes
is an optional array of buffer sizes, specifying the maximum number of bytes to capture to the corresponding transform feedback buffer. IfpSizes
isNULL
, or the value of thepSizes
array element isWHOLE_SIZE
, then the maximum bytes captured will be the size of the corresponding buffer minus the buffer offset.
Description
The values taken from elements i of pBuffers
, pOffsets
and pSizes
replace the current state for the transform feedback binding
firstBinding
+ i, for i in [0, bindingCount
). The transform feedback
binding is updated to start at the offset indicated by pOffsets
[i]
from the start of the buffer pBuffers
[i].
Valid Usage
PhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled
firstBinding
must be less thanPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
- The sum of
firstBinding
andbindingCount
must be less than or equal toPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
- All elements of
pOffsets
must be less than the size of the corresponding element inpBuffers
- All elements of
pOffsets
must be a multiple of 4 - All elements of
pBuffers
must have been created with theBUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
flag - If the optional
pSize
array is specified, each element ofpSizes
must either beWHOLE_SIZE
, or be less than or equal toPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBufferSize
- All elements of
pSizes
must be less than or equal to the size of the corresponding buffer inpBuffers
- All elements of
pOffsets
pluspSizes
, where thepSizes
, element is notWHOLE_SIZE
, must be less than or equal to the size of the corresponding element inpBuffers
- Each element of
pBuffers
that is non-sparse must be bound completely and contiguously to a singleDeviceMemory
object - Transform feedback must not be active when the
cmdBindTransformFeedbackBuffersEXT
command is recorded
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
pBuffers
must be a valid pointer to an array ofbindingCount
validBuffer
handlespOffsets
must be a valid pointer to an array ofbindingCount
DeviceSize
values- If
pSizes
is notNULL
,pSizes
must be a valid pointer to an array ofbindingCount
DeviceSize
values commandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - If
pSizes
is notNULL
,bindingCount
must be greater than0
- Both of
commandBuffer
, and the elements ofpBuffers
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Both | Graphics |
See Also
cmdBeginTransformFeedbackEXT :: forall io. MonadIO io => CommandBuffer -> ("firstCounterBuffer" ::: Word32) -> ("counterBuffers" ::: Vector Buffer) -> ("counterBufferOffsets" ::: Vector DeviceSize) -> io () Source #
vkCmdBeginTransformFeedbackEXT - Make transform feedback active in the command buffer
Parameters
commandBuffer
is the command buffer into which the command is recorded.
firstCounterBuffer
is the index of the first transform feedback buffer corresponding topCounterBuffers
[0] andpCounterBufferOffsets
[0].counterBufferCount
is the size of thepCounterBuffers
andpCounterBufferOffsets
arrays.pCounterBuffers
is an optional array of buffer handles to the counter buffers which contain a 4 byte integer value representing the byte offset from the start of the corresponding transform feedback buffer from where to start capturing vertex data. If the byte offset stored to the counter buffer location was done usingcmdEndTransformFeedbackEXT
it can be used to resume transform feedback from the previous location. IfpCounterBuffers
isNULL
, then transform feedback will start capturing vertex data to byte offset zero in all bound transform feedback buffers. For each element ofpCounterBuffers
that isNULL_HANDLE
, transform feedback will start capturing vertex data to byte zero in the corresponding bound transform feedback buffer.pCounterBufferOffsets
is an optional array of offsets within each of thepCounterBuffers
where the counter values were previously written. The location in each counter buffer at these offsets must be large enough to contain 4 bytes of data. This data is the number of bytes captured by the previous transform feedback to this buffer. IfpCounterBufferOffsets
isNULL
, then it is assumed the offsets are zero.
Description
The active transform feedback buffers will capture primitives emitted
from the corresponding XfbBuffer
in the bound graphics pipeline. Any
XfbBuffer
emitted that does not output to an active transform feedback
buffer will not be captured.
Valid Usage
PhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled
- Transform feedback must not be active
firstCounterBuffer
must be less thanPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
- The sum of
firstCounterBuffer
andcounterBufferCount
must be less than or equal toPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
- If
counterBufferCount
is not0
, andpCounterBuffers
is notNULL
,pCounterBuffers
must be a valid pointer to an array ofcounterBufferCount
Buffer
handles that are either valid orNULL_HANDLE
- For each buffer handle in the array, if it is not
NULL_HANDLE
it must reference a buffer large enough to hold 4 bytes at the corresponding offset from thepCounterBufferOffsets
array - If
pCounterBuffer
isNULL
, thenpCounterBufferOffsets
must also beNULL
- For each buffer handle in the
pCounterBuffers
array that is notNULL_HANDLE
it must have been created with ausage
value containingBUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
- Transform feedback must not be made active in a render pass instance with multiview enabled
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
- If
counterBufferCount
is not0
, andpCounterBufferOffsets
is notNULL
,pCounterBufferOffsets
must be a valid pointer to an array ofcounterBufferCount
DeviceSize
values commandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called inside of a render pass instance
- Both of
commandBuffer
, and the elements ofpCounterBuffers
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Inside | Graphics |
See Also
cmdWithTransformFeedbackEXT :: forall io r. MonadIO io => (io () -> io () -> r) -> CommandBuffer -> Word32 -> Vector Buffer -> Vector DeviceSize -> r Source #
A convenience wrapper to make a compatible pair of calls to
cmdBeginTransformFeedbackEXT
and cmdEndTransformFeedbackEXT
To ensure that cmdEndTransformFeedbackEXT
is always called: pass
bracket_
(or the allocate function from your
favourite resource management library) as the first argument.
To just extract the pair pass '(,)' as the first argument.
Note that there is no inner resource
cmdEndTransformFeedbackEXT :: forall io. MonadIO io => CommandBuffer -> ("firstCounterBuffer" ::: Word32) -> ("counterBuffers" ::: Vector Buffer) -> ("counterBufferOffsets" ::: Vector DeviceSize) -> io () Source #
vkCmdEndTransformFeedbackEXT - Make transform feedback inactive in the command buffer
Parameters
commandBuffer
is the command buffer into which the command is recorded.
firstCounterBuffer
is the index of the first transform feedback buffer corresponding topCounterBuffers
[0] andpCounterBufferOffsets
[0].counterBufferCount
is the size of thepCounterBuffers
andpCounterBufferOffsets
arrays.pCounterBuffers
is an optional array of buffer handles to the counter buffers used to record the current byte positions of each transform feedback buffer where the next vertex output data would be captured. This can be used by a subsequentcmdBeginTransformFeedbackEXT
call to resume transform feedback capture from this position. It can also be used bycmdDrawIndirectByteCountEXT
to determine the vertex count of the draw call.pCounterBufferOffsets
is an optional array of offsets within each of thepCounterBuffers
where the counter values can be written. The location in each counter buffer at these offsets must be large enough to contain 4 bytes of data. The data stored at this location is the byte offset from the start of the transform feedback buffer binding where the next vertex data would be written. IfpCounterBufferOffsets
isNULL
, then it is assumed the offsets are zero.
Valid Usage
PhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled
- Transform feedback must be active
firstCounterBuffer
must be less thanPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
- The sum of
firstCounterBuffer
andcounterBufferCount
must be less than or equal toPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
- If
counterBufferCount
is not0
, andpCounterBuffers
is notNULL
,pCounterBuffers
must be a valid pointer to an array ofcounterBufferCount
Buffer
handles that are either valid orNULL_HANDLE
- For each buffer handle in the array, if it is not
NULL_HANDLE
it must reference a buffer large enough to hold 4 bytes at the corresponding offset from thepCounterBufferOffsets
array - If
pCounterBuffer
isNULL
, thenpCounterBufferOffsets
must also beNULL
- For each buffer handle in the
pCounterBuffers
array that is notNULL_HANDLE
it must have been created with ausage
value containingBUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
- If
counterBufferCount
is not0
, andpCounterBufferOffsets
is notNULL
,pCounterBufferOffsets
must be a valid pointer to an array ofcounterBufferCount
DeviceSize
values commandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called inside of a render pass instance
- Both of
commandBuffer
, and the elements ofpCounterBuffers
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Inside | Graphics |
See Also
cmdBeginQueryIndexedEXT :: forall io. MonadIO io => CommandBuffer -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> ("index" ::: Word32) -> io () Source #
vkCmdBeginQueryIndexedEXT - Begin an indexed query
Parameters
commandBuffer
is the command buffer into which this command will be recorded.
queryPool
is the query pool that will manage the results of the query.query
is the query index within the query pool that will contain the results.flags
is a bitmask ofQueryControlFlagBits
specifying constraints on the types of queries that can be performed.index
is the query type specific index. When the query type isQUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the index represents the vertex stream.
Description
The cmdBeginQueryIndexedEXT
command operates the same as the
cmdBeginQuery
command,
except that it also accepts a query type specific index
parameter.
Valid Usage
queryPool
must have been created with aqueryType
that differs from that of any queries that are active withincommandBuffer
- All queries used by the command must be unavailable
- The
queryType
used to createqueryPool
must not beQUERY_TYPE_TIMESTAMP
- If the
precise occlusion queries
feature is not enabled, or the
queryType
used to createqueryPool
was notQUERY_TYPE_OCCLUSION
,flags
must not containQUERY_CONTROL_PRECISE_BIT
query
must be less than the number of queries inqueryPool
- If the
queryType
used to createqueryPool
wasQUERY_TYPE_OCCLUSION
, theCommandPool
thatcommandBuffer
was allocated from must support graphics operations - If the
queryType
used to createqueryPool
wasQUERY_TYPE_PIPELINE_STATISTICS
and any of thepipelineStatistics
indicate graphics operations, theCommandPool
thatcommandBuffer
was allocated from must support graphics operations - If the
queryType
used to createqueryPool
wasQUERY_TYPE_PIPELINE_STATISTICS
and any of thepipelineStatistics
indicate compute operations, theCommandPool
thatcommandBuffer
was allocated from must support compute operations commandBuffer
must not be a protected command buffer- If called within a render pass instance, the sum of
query
and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries inqueryPool
- If the
queryType
used to createqueryPool
wasQUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
theCommandPool
thatcommandBuffer
was allocated from must support graphics operations - If the
queryType
used to createqueryPool
wasQUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
theindex
parameter must be less thanPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
- If the
queryType
used to createqueryPool
was notQUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
theindex
must be zero - If the
queryType
used to createqueryPool
wasQUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
thenPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackQueries
must be supported - If
queryPool
was created with aqueryType
ofQUERY_TYPE_PERFORMANCE_QUERY_KHR
, the profiling lock must have been held beforebeginCommandBuffer
was called oncommandBuffer
- If
queryPool
was created with aqueryType
ofQUERY_TYPE_PERFORMANCE_QUERY_KHR
and one of the counters used to createqueryPool
wasPERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR
, the query begin must be the first recorded command incommandBuffer
- If
queryPool
was created with aqueryType
ofQUERY_TYPE_PERFORMANCE_QUERY_KHR
and one of the counters used to createqueryPool
wasPERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR
, the begin command must not be recorded within a render pass instance - If
queryPool
was created with aqueryType
ofQUERY_TYPE_PERFORMANCE_QUERY_KHR
and another query pool with aqueryType
QUERY_TYPE_PERFORMANCE_QUERY_KHR
has been used withincommandBuffer
, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer ascommandBuffer
, the performanceCounterMultipleQueryPools feature must be enabled - If
queryPool
was created with aqueryType
ofQUERY_TYPE_PERFORMANCE_QUERY_KHR
, this command must not be recorded in a command buffer that, either directly or through secondary command buffers, also contains acmdResetQueryPool
command affecting the same query
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
queryPool
must be a validQueryPool
handleflags
must be a valid combination ofQueryControlFlagBits
valuescommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support graphics, or compute operations - Both of
commandBuffer
, andqueryPool
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Both | Graphics Compute |
See Also
cmdWithQueryIndexedEXT :: forall io r. MonadIO io => (io () -> io () -> r) -> CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> r Source #
A convenience wrapper to make a compatible pair of calls to
cmdBeginQueryIndexedEXT
and cmdEndQueryIndexedEXT
To ensure that cmdEndQueryIndexedEXT
is always called: pass
bracket_
(or the allocate function from your
favourite resource management library) as the first argument.
To just extract the pair pass '(,)' as the first argument.
Note that there is no inner resource
cmdEndQueryIndexedEXT :: forall io. MonadIO io => CommandBuffer -> QueryPool -> ("query" ::: Word32) -> ("index" ::: Word32) -> io () Source #
vkCmdEndQueryIndexedEXT - Ends a query
Parameters
commandBuffer
is the command buffer into which this command will be recorded.
queryPool
is the query pool that is managing the results of the query.query
is the query index within the query pool where the result is stored.index
is the query type specific index.
Description
The cmdEndQueryIndexedEXT
command operates the same as the
cmdEndQuery
command,
except that it also accepts a query type specific index
parameter.
Valid Usage
- All queries used by the command must be active
query
must be less than the number of queries inqueryPool
commandBuffer
must not be a protected command buffer- If
cmdEndQueryIndexedEXT
is called within a render pass instance, the sum ofquery
and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries inqueryPool
- If the
queryType
used to createqueryPool
wasQUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
theindex
parameter must be less thanPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
- If the
queryType
used to createqueryPool
was notQUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
theindex
must be zero - If the
queryType
used to createqueryPool
wasQUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
index
must equal theindex
used to begin the query
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
queryPool
must be a validQueryPool
handlecommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support graphics, or compute operations - Both of
commandBuffer
, andqueryPool
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Both | Graphics Compute |
See Also
cmdDrawIndirectByteCountEXT :: forall io. MonadIO io => CommandBuffer -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("counterBuffer" ::: Buffer) -> ("counterBufferOffset" ::: DeviceSize) -> ("counterOffset" ::: Word32) -> ("vertexStride" ::: Word32) -> io () Source #
vkCmdDrawIndirectByteCountEXT - Draw primitives where the vertex count is derived from the counter byte value in the counter buffer
Parameters
commandBuffer
is the command buffer into which the command is recorded.
instanceCount
is the number of instances to draw.firstInstance
is the instance ID of the first instance to draw.counterBuffer
is the buffer handle from where the byte count is read.counterBufferOffset
is the offset into the buffer used to read the byte count, which is used to calculate the vertex count for this draw call.counterOffset
is subtracted from the byte count read from thecounterBuffer
at thecounterBufferOffset
vertexStride
is the stride in bytes between each element of the vertex data that is used to calculate the vertex count from the counter value. This value is typically the same value that was used in the graphics pipeline state when the transform feedback was captured as theXfbStride
.
Description
When the command is executed, primitives are assembled in the same way
as done with cmdDraw
except the vertexCount
is calculated based on the byte count read from
counterBuffer
at offset counterBufferOffset
. The assembled
primitives execute the bound graphics pipeline.
The effective vertexCount
is calculated as follows:
const uint32_t * counterBufferPtr = (const uint8_t *)counterBuffer.address + counterBufferOffset; vertexCount = floor(max(0, (*counterBufferPtr - counterOffset)) / vertexStride);
The effective firstVertex
is zero.
Valid Usage
- If a
ImageView
is sampled withFILTER_LINEAR
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
ImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
- If a
ImageView
is sampled withFILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
- Any
ImageView
being sampled withFILTER_CUBIC_EXT
as a result of this command must have aImageViewType
and format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned bygetPhysicalDeviceImageFormatProperties2
- Any
ImageView
being sampled withFILTER_CUBIC_EXT
with a reduction mode of eitherSAMPLER_REDUCTION_MODE_MIN
orSAMPLER_REDUCTION_MODE_MAX
as a result of this command must have aImageViewType
and format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned bygetPhysicalDeviceImageFormatProperties2
- Any
Image
created with aImageCreateInfo
::flags
containingIMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using aSamplerAddressMode
ofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
- For each set n that is statically used by the
Pipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with aPipelineLayout
that is compatible for set n, with thePipelineLayout
used to create the currentPipeline
, as described in ??? - For each push constant that is statically used by the
Pipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with aPipelineLayout
that is compatible for push constants, with thePipelineLayout
used to create the currentPipeline
, as described in ??? - Descriptors in each bound descriptor set, specified via
cmdBindDescriptorSets
, must be valid if they are statically used by thePipeline
bound to the pipeline bind point used by this command - A valid pipeline must be bound to the pipeline bind point used by this command
- If the
Pipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set forcommandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic - There must not have been any calls to dynamic state setting
commands for any state not specified as dynamic in the
Pipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound - If the
Pipeline
object bound to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from anyImage
with aImageView
of the typeIMAGE_VIEW_TYPE_3D
,IMAGE_VIEW_TYPE_CUBE
,IMAGE_VIEW_TYPE_1D_ARRAY
,IMAGE_VIEW_TYPE_2D_ARRAY
orIMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage - If the
Pipeline
object bound to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*
orOpImageSparseSample*
instructions withImplicitLod
,Dref
orProj
in their name, in any shader stage - If the
Pipeline
object bound to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*
orOpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage - If the
robust buffer access
feature is not enabled, and if the
Pipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robust buffer access
feature is not enabled, and if the
Pipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If
commandBuffer
is an unprotected command buffer, any resource accessed by thePipeline
object bound to the pipeline bind point used by this command must not be a protected resource - The current render pass must be
compatible
with the
renderPass
member of theGraphicsPipelineCreateInfo
structure specified when creating thePipeline
bound toPIPELINE_BIND_POINT_GRAPHICS
- The subpass index of the current render pass must be equal to the
subpass
member of theGraphicsPipelineCreateInfo
structure specified when creating thePipeline
bound toPIPELINE_BIND_POINT_GRAPHICS
- Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set
- Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command
- If the draw is recorded in a render pass instance with multiview
enabled, the maximum instance index must be less than or equal to
PhysicalDeviceMultiviewProperties
::maxMultiviewInstanceIndex
- If the bound graphics pipeline was created with
PipelineSampleLocationsStateCreateInfoEXT
::sampleLocationsEnable
set toTRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with theIMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set - All vertex input bindings accessed via vertex input variables
declared in the vertex shader entry point’s interface must have
either valid or
NULL_HANDLE
buffers bound - If the
nullDescriptor
feature is not enabled, all vertex input bindings accessed via
vertex input variables declared in the vertex shader entry point’s
interface must not be
NULL_HANDLE
- For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in ???
PhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled- The implementation must support
PhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackDraw
vertexStride
must be greater than 0 and less than or equal toPhysicalDeviceLimits
::maxTransformFeedbackBufferDataStride
counterBuffer
must have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BIT
bit setcommandBuffer
must not be a protected command buffer
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
counterBuffer
must be a validBuffer
handlecommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called inside of a render pass instance
- Both of
commandBuffer
, andcounterBuffer
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Inside | Graphics | Graphics |
See Also
data PhysicalDeviceTransformFeedbackFeaturesEXT Source #
VkPhysicalDeviceTransformFeedbackFeaturesEXT - Structure describing transform feedback features that can be supported by an implementation
Members
The members of the PhysicalDeviceTransformFeedbackFeaturesEXT
structure describe the following features:
Description
If the PhysicalDeviceTransformFeedbackFeaturesEXT
structure is
included in the pNext
chain of
PhysicalDeviceFeatures2
,
it is filled with values indicating whether each feature is supported.
PhysicalDeviceTransformFeedbackFeaturesEXT
can also be included in
the pNext
chain of DeviceCreateInfo
to
enable features.
Valid Usage (Implicit)
See Also
PhysicalDeviceTransformFeedbackFeaturesEXT | |
|
Instances
data PhysicalDeviceTransformFeedbackPropertiesEXT Source #
VkPhysicalDeviceTransformFeedbackPropertiesEXT - Structure describing transform feedback properties that can be supported by an implementation
Members
The members of the PhysicalDeviceTransformFeedbackPropertiesEXT
structure describe the following implementation-dependent limits:
Description
If the PhysicalDeviceTransformFeedbackPropertiesEXT
structure is
included in the pNext
chain of
PhysicalDeviceProperties2
,
it is filled with the implementation-dependent limits and properties.
Valid Usage (Implicit)
See Also
PhysicalDeviceTransformFeedbackPropertiesEXT | |
|
Instances
data PipelineRasterizationStateStreamCreateInfoEXT Source #
VkPipelineRasterizationStateStreamCreateInfoEXT - Structure defining the geometry stream used for rasterization
Description
If this structure is not present, rasterizationStream
is assumed to be
zero.
Valid Usage (Implicit)
See Also
PipelineRasterizationStateStreamCreateFlagsEXT
,
StructureType
PipelineRasterizationStateStreamCreateInfoEXT | |
|
Instances
newtype PipelineRasterizationStateStreamCreateFlagsEXT Source #
VkPipelineRasterizationStateStreamCreateFlagsEXT - Reserved for future use
Description
PipelineRasterizationStateStreamCreateFlagsEXT
is a bitmask type for
setting a mask, but is currently reserved for future use.
See Also
Instances
type EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 Source #
pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: forall a. Integral a => a Source #
type EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" Source #
pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #