![]() |
Qt 6.x
The Qt SDK
|
#include <qrhimetal_p.h>
Public Types | |
enum | PassType { NoPass , RenderPass , ComputePass } |
![]() | |
enum | IndexFormat { IndexUInt16 , IndexUInt32 } |
Specifies the index data type. More... | |
enum | BeginPassFlag { ExternalContent = 0x01 , DoNotTrackResourcesForCompute = 0x02 } |
Flag values for QRhi::beginPass() More... | |
using | DynamicOffset = QPair< int, quint32 > |
Synonym for QPair<int, quint32>. | |
using | VertexInput = QPair< QRhiBuffer *, quint32 > |
Synonym for QPair<QRhiBuffer *, quint32>. | |
![]() | |
enum | Type { Buffer , Texture , Sampler , RenderBuffer , RenderPassDescriptor , SwapChainRenderTarget , TextureRenderTarget , ShaderResourceBindings , GraphicsPipeline , SwapChain , ComputePipeline , CommandBuffer } |
Specifies type of the resource. More... | |
Public Member Functions | |
QMetalCommandBuffer (QRhiImplementation *rhi) | |
~QMetalCommandBuffer () | |
void | destroy () override |
Releases (or requests deferred releasing of) the underlying native graphics resources. | |
const QRhiNativeHandles * | nativeHandles () |
void | resetState (double lastGpuTime=0) |
void | resetPerPassState () |
void | resetPerPassCachedState () |
![]() | |
QRhiResource::Type | resourceType () const override |
void | resourceUpdate (QRhiResourceUpdateBatch *resourceUpdates) |
Sometimes committing resource updates is necessary or just more convenient without starting a render pass. | |
void | beginPass (QRhiRenderTarget *rt, const QColor &colorClearValue, const QRhiDepthStencilClearValue &depthStencilClearValue, QRhiResourceUpdateBatch *resourceUpdates=nullptr, BeginPassFlags flags={}) |
Records starting a new render pass targeting the render target rt. | |
void | endPass (QRhiResourceUpdateBatch *resourceUpdates=nullptr) |
Records ending the current render pass. | |
void | setGraphicsPipeline (QRhiGraphicsPipeline *ps) |
Records setting a new graphics pipeline ps. | |
void | setShaderResources (QRhiShaderResourceBindings *srb=nullptr, int dynamicOffsetCount=0, const DynamicOffset *dynamicOffsets=nullptr) |
Records binding a set of shader resources, such as, uniform buffers or textures, that are made visible to one or more shader stages. | |
void | setVertexInput (int startBinding, int bindingCount, const VertexInput *bindings, QRhiBuffer *indexBuf=nullptr, quint32 indexOffset=0, IndexFormat indexFormat=IndexUInt16) |
Records vertex input bindings. | |
void | setViewport (const QRhiViewport &viewport) |
Records setting the active viewport rectangle specified in viewport. | |
void | setScissor (const QRhiScissor &scissor) |
Records setting the active scissor rectangle specified in scissor. | |
void | setBlendConstants (const QColor &c) |
Records setting the active blend constants to c. | |
void | setStencilRef (quint32 refValue) |
Records setting the active stencil reference value to refValue. | |
void | draw (quint32 vertexCount, quint32 instanceCount=1, quint32 firstVertex=0, quint32 firstInstance=0) |
Records a non-indexed draw. | |
void | drawIndexed (quint32 indexCount, quint32 instanceCount=1, quint32 firstIndex=0, qint32 vertexOffset=0, quint32 firstInstance=0) |
Records an indexed draw. | |
void | debugMarkBegin (const QByteArray &name) |
Records a named debug group on the command buffer with the specified name. | |
void | debugMarkEnd () |
Records the end of a debug group. | |
void | debugMarkMsg (const QByteArray &msg) |
Inserts a debug message msg into the command stream. | |
void | beginComputePass (QRhiResourceUpdateBatch *resourceUpdates=nullptr, BeginPassFlags flags={}) |
Records starting a new compute pass. | |
void | endComputePass (QRhiResourceUpdateBatch *resourceUpdates=nullptr) |
Records ending the current compute pass. | |
void | setComputePipeline (QRhiComputePipeline *ps) |
Records setting a new compute pipeline ps. | |
void | dispatch (int x, int y, int z) |
Records dispatching compute work items, with x, y, and z specifying the number of local workgroups in the corresponding dimension. | |
const QRhiNativeHandles * | nativeHandles () |
void | beginExternal () |
To be called when the application before the application is about to enqueue commands to the current pass' command buffer by calling graphics API functions directly. | |
void | endExternal () |
To be called once the externally added commands are recorded to the command buffer or context. | |
double | lastCompletedGpuTime () |
![]() | |
virtual | ~QRhiResource () |
Destructor. | |
virtual Type | resourceType () const =0 |
virtual void | destroy ()=0 |
Releases (or requests deferred releasing of) the underlying native graphics resources. | |
void | deleteLater () |
When called without a frame being recorded, this function is equivalent to deleting the object. | |
QByteArray | name () const |
void | setName (const QByteArray &name) |
Sets a name for the object. | |
quint64 | globalResourceId () const |
QRhi * | rhi () const |
Additional Inherited Members | |
![]() | |
QRhiCommandBuffer (QRhiImplementation *rhi) | |
![]() | |
QRhiResource (QRhiImplementation *rhi) | |
![]() | |
QRhiImplementation * | m_rhi = nullptr |
quint64 | m_id |
QByteArray | m_objectName |
Definition at line 249 of file qrhimetal_p.h.
Enumerator | |
---|---|
NoPass | |
RenderPass | |
ComputePass |
Definition at line 258 of file qrhimetal_p.h.
QMetalCommandBuffer::QMetalCommandBuffer | ( | QRhiImplementation * | rhi | ) |
Definition at line 6009 of file qrhimetal.mm.
References resetState().
QMetalCommandBuffer::~QMetalCommandBuffer | ( | ) |
|
overridevirtual |
Releases (or requests deferred releasing of) the underlying native graphics resources.
Safe to call multiple times, subsequent invocations will be a no-op then.
Once destroy() is called, the QRhiResource instance can be reused, by calling create()
again. That will then result in creating new native graphics resources underneath.
The QRhiResource destructor also performs the same task, so calling this function is not necessary before deleting a QRhiResource.
Implements QRhiResource.
Definition at line 6022 of file qrhimetal.mm.
Referenced by ~QMetalCommandBuffer().
const QRhiNativeHandles * QMetalCommandBuffer::nativeHandles | ( | ) |
Definition at line 6027 of file qrhimetal.mm.
References QMetalCommandBufferData::cb, QMetalCommandBufferData::currentRenderPassEncoder, d, and nativeHandlesStruct.
void QMetalCommandBuffer::resetPerPassCachedState | ( | ) |
Definition at line 6051 of file qrhimetal.mm.
References QRhiBatchedBindings< T >::clear(), currentComputePipeline, currentComputeSrb, currentCullMode, currentDepthBiasValues, QMetalCommandBufferData::currentDepthStencilState, QMetalCommandBufferData::currentFirstVertexBinding, currentFrontFaceWinding, currentGraphicsPipeline, currentGraphicsSrb, currentIndexBuffer, currentIndexFormat, currentIndexOffset, currentPipelineGeneration, currentResSlot, QMetalCommandBufferData::currentShaderResourceBindingState, currentSrbGeneration, currentTriangleFillMode, QMetalCommandBufferData::currentVertexInputOffsets, QMetalCommandBufferData::currentVertexInputsBuffers, d, and QRhiCommandBuffer::IndexUInt16.
Referenced by QRhiMetal::endExternal(), endTessellationComputeEncoding(), and resetPerPassState().
void QMetalCommandBuffer::resetPerPassState | ( | ) |
Definition at line 6044 of file qrhimetal.mm.
References currentTarget, NoPass, recordingPass, and resetPerPassCachedState().
Referenced by QRhiMetal::beginComputePass(), QRhiMetal::beginPass(), and resetState().
void QMetalCommandBuffer::resetState | ( | double | lastGpuTime = 0 | ) |
Definition at line 6034 of file qrhimetal.mm.
References QMetalCommandBufferData::currentComputePassEncoder, QMetalCommandBufferData::currentPassRpDesc, QMetalCommandBufferData::currentRenderPassEncoder, d, QMetalCommandBufferData::lastGpuTime, resetPerPassState(), and QMetalCommandBufferData::tessellationComputeEncoder.
Referenced by QMetalCommandBuffer(), QRhiMetal::beginFrame(), and QRhiMetal::beginOffscreenFrame().
QMetalComputePipeline* QMetalCommandBuffer::currentComputePipeline |
Definition at line 270 of file qrhimetal_p.h.
Referenced by QRhiMetal::dispatch(), resetPerPassCachedState(), QRhiMetal::setComputePipeline(), QRhiMetal::setGraphicsPipeline(), and QRhiMetal::setShaderResources().
QMetalShaderResourceBindings* QMetalCommandBuffer::currentComputeSrb |
Definition at line 273 of file qrhimetal_p.h.
Referenced by resetPerPassCachedState(), and QRhiMetal::setShaderResources().
int QMetalCommandBuffer::currentCullMode |
Definition at line 279 of file qrhimetal_p.h.
Referenced by QMetalGraphicsPipeline::makeActiveForCurrentRenderPassEncoder(), and resetPerPassCachedState().
QPair<float, float> QMetalCommandBuffer::currentDepthBiasValues |
Definition at line 282 of file qrhimetal_p.h.
Referenced by QMetalGraphicsPipeline::makeActiveForCurrentRenderPassEncoder(), and resetPerPassCachedState().
int QMetalCommandBuffer::currentFrontFaceWinding |
Definition at line 281 of file qrhimetal_p.h.
Referenced by QMetalGraphicsPipeline::makeActiveForCurrentRenderPassEncoder(), and resetPerPassCachedState().
QMetalGraphicsPipeline* QMetalCommandBuffer::currentGraphicsPipeline |
Definition at line 269 of file qrhimetal_p.h.
Referenced by QRhiMetal::adjustForMultiViewDraw(), QRhiMetal::draw(), QRhiMetal::drawIndexed(), resetPerPassCachedState(), QRhiMetal::setComputePipeline(), QRhiMetal::setGraphicsPipeline(), QRhiMetal::setScissor(), QRhiMetal::setShaderResources(), QRhiMetal::setVertexInput(), QRhiMetal::setViewport(), and QRhiMetal::tessellatedDraw().
QMetalShaderResourceBindings* QMetalCommandBuffer::currentGraphicsSrb |
Definition at line 272 of file qrhimetal_p.h.
Referenced by resetPerPassCachedState(), QRhiMetal::setShaderResources(), and QRhiMetal::setVertexInput().
QMetalBuffer* QMetalCommandBuffer::currentIndexBuffer |
Definition at line 276 of file qrhimetal_p.h.
Referenced by QRhiMetal::drawIndexed(), resetPerPassCachedState(), and QRhiMetal::setVertexInput().
QRhiCommandBuffer::IndexFormat QMetalCommandBuffer::currentIndexFormat |
Definition at line 278 of file qrhimetal_p.h.
Referenced by QRhiMetal::drawIndexed(), resetPerPassCachedState(), and QRhiMetal::setVertexInput().
quint32 QMetalCommandBuffer::currentIndexOffset |
Definition at line 277 of file qrhimetal_p.h.
Referenced by QRhiMetal::drawIndexed(), resetPerPassCachedState(), and QRhiMetal::setVertexInput().
uint QMetalCommandBuffer::currentPipelineGeneration |
Definition at line 271 of file qrhimetal_p.h.
Referenced by resetPerPassCachedState(), QRhiMetal::setComputePipeline(), and QRhiMetal::setGraphicsPipeline().
int QMetalCommandBuffer::currentResSlot |
Definition at line 275 of file qrhimetal_p.h.
Referenced by resetPerPassCachedState(), and QRhiMetal::setShaderResources().
uint QMetalCommandBuffer::currentSrbGeneration |
Definition at line 274 of file qrhimetal_p.h.
Referenced by resetPerPassCachedState(), and QRhiMetal::setShaderResources().
QRhiRenderTarget* QMetalCommandBuffer::currentTarget |
Definition at line 266 of file qrhimetal_p.h.
Referenced by QRhiMetal::beginPass(), QRhiMetal::endPass(), endTessellationComputeEncoding(), resetPerPassState(), QRhiMetal::setScissor(), and QRhiMetal::setViewport().
int QMetalCommandBuffer::currentTriangleFillMode |
Definition at line 280 of file qrhimetal_p.h.
Referenced by QMetalGraphicsPipeline::makeActiveForCurrentRenderPassEncoder(), and resetPerPassCachedState().
QMetalCommandBufferData* QMetalCommandBuffer::d = nullptr |
Definition at line 255 of file qrhimetal_p.h.
Referenced by ~QMetalCommandBuffer(), QRhiMetal::adjustForMultiViewDraw(), QRhiMetal::beginComputePass(), QRhiMetal::beginFrame(), QRhiMetal::beginOffscreenFrame(), QRhiMetal::beginPass(), bindStageBuffers(), bindStageSamplers(), bindStageTextures(), QRhiMetal::debugMarkBegin(), QRhiMetal::debugMarkEnd(), QRhiMetal::debugMarkMsg(), QRhiMetal::dispatch(), QRhiMetal::draw(), QRhiMetal::drawIndexed(), QRhiMetal::endComputePass(), QRhiMetal::endFrame(), QRhiMetal::endOffscreenFrame(), QRhiMetal::endPass(), endTessellationComputeEncoding(), QRhiMetal::enqueueShaderResourceBindings(), QRhiMetal::finish(), QRhiMetal::lastCompletedGpuTime(), QMetalGraphicsPipeline::makeActiveForCurrentRenderPassEncoder(), nativeHandles(), rebindShaderResources(), resetPerPassCachedState(), resetState(), QRhiMetal::setBlendConstants(), QRhiMetal::setComputePipeline(), QRhiMetal::setScissor(), QRhiMetal::setStencilRef(), QRhiMetal::setVertexInput(), QRhiMetal::setViewport(), QRhiMetal::tessellatedDraw(), and tessellationComputeEncoder().
QRhiMetalCommandBufferNativeHandles QMetalCommandBuffer::nativeHandlesStruct |
Definition at line 256 of file qrhimetal_p.h.
Referenced by nativeHandles().
PassType QMetalCommandBuffer::recordingPass |
Definition at line 265 of file qrhimetal_p.h.
Referenced by QRhiMetal::beginComputePass(), QRhiMetal::beginPass(), QRhiMetal::debugMarkBegin(), QRhiMetal::debugMarkEnd(), QRhiMetal::debugMarkMsg(), QRhiMetal::dispatch(), QRhiMetal::draw(), QRhiMetal::drawIndexed(), QRhiMetal::endComputePass(), QRhiMetal::endPass(), QRhiMetal::enqueueShaderResourceBindings(), QRhiMetal::finish(), resetPerPassState(), QRhiMetal::setBlendConstants(), QRhiMetal::setComputePipeline(), QRhiMetal::setGraphicsPipeline(), QRhiMetal::setScissor(), QRhiMetal::setShaderResources(), QRhiMetal::setStencilRef(), QRhiMetal::setVertexInput(), and QRhiMetal::setViewport().