![]() |
Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
|
#include <qrhimetal_p.h>
Public Member Functions | |
QMetalGraphicsPipeline (QRhiImplementation *rhi) | |
~QMetalGraphicsPipeline () | |
void | destroy () override |
Releases (or requests deferred releasing of) the underlying native graphics resources. | |
bool | create () override |
Creates the corresponding native graphics resources. | |
void | makeActiveForCurrentRenderPassEncoder (QMetalCommandBuffer *cbD) |
void | setupAttachmentsInMetalRenderPassDescriptor (void *metalRpDesc, QMetalRenderPassDescriptor *rpD) |
void | setupMetalDepthStencilDescriptor (void *metalDsDesc) |
void | mapStates () |
bool | createVertexFragmentPipeline () |
bool | createTessellationPipelines (const QShader &tessVert, const QShader &tesc, const QShader &tese, const QShader &tessFrag) |
Public Member Functions inherited from QRhiGraphicsPipeline | |
QRhiResource::Type | resourceType () const override |
Flags | flags () const |
void | setFlags (Flags f) |
Sets the flags f. | |
Topology | topology () const |
void | setTopology (Topology t) |
Sets the primitive topology t. | |
CullMode | cullMode () const |
void | setCullMode (CullMode mode) |
Sets the specified face culling mode. | |
FrontFace | frontFace () const |
void | setFrontFace (FrontFace f) |
Sets the front face mode f. | |
void | setTargetBlends (std::initializer_list< TargetBlend > list) |
Sets the list of render target blend settings. | |
template<typename InputIterator> | |
void | setTargetBlends (InputIterator first, InputIterator last) |
Sets the list of render target blend settings from the iterators first and last. | |
const TargetBlend * | cbeginTargetBlends () const |
const TargetBlend * | cendTargetBlends () const |
const TargetBlend * | targetBlendAt (qsizetype index) const |
qsizetype | targetBlendCount () const |
bool | hasDepthTest () const |
void | setDepthTest (bool enable) |
Enables or disables depth testing based on enable. | |
bool | hasDepthWrite () const |
void | setDepthWrite (bool enable) |
Controls the writing out of depth data into the depth buffer based on enable. | |
CompareOp | depthOp () const |
void | setDepthOp (CompareOp op) |
Sets the depth comparison function op. | |
bool | hasStencilTest () const |
void | setStencilTest (bool enable) |
Enables or disables stencil tests based on enable. | |
StencilOpState | stencilFront () const |
void | setStencilFront (const StencilOpState &state) |
Sets the stencil test state for front faces. | |
StencilOpState | stencilBack () const |
void | setStencilBack (const StencilOpState &state) |
Sets the stencil test state for back faces. | |
quint32 | stencilReadMask () const |
void | setStencilReadMask (quint32 mask) |
Sets the stencil read mask. | |
quint32 | stencilWriteMask () const |
void | setStencilWriteMask (quint32 mask) |
Sets the stencil write mask. | |
int | sampleCount () const |
void | setSampleCount (int s) |
Sets the sample count. | |
float | lineWidth () const |
void | setLineWidth (float width) |
Sets the line width. | |
int | depthBias () const |
void | setDepthBias (int bias) |
Sets the depth bias. | |
float | slopeScaledDepthBias () const |
void | setSlopeScaledDepthBias (float bias) |
Sets the slope scaled depth bias. | |
void | setShaderStages (std::initializer_list< QRhiShaderStage > list) |
Sets the list of shader stages. | |
template<typename InputIterator> | |
void | setShaderStages (InputIterator first, InputIterator last) |
Sets the list of shader stages from the iterators first and last. | |
const QRhiShaderStage * | cbeginShaderStages () const |
const QRhiShaderStage * | cendShaderStages () const |
const QRhiShaderStage * | shaderStageAt (qsizetype index) const |
qsizetype | shaderStageCount () const |
QRhiVertexInputLayout | vertexInputLayout () const |
void | setVertexInputLayout (const QRhiVertexInputLayout &layout) |
Specifies the vertex input layout. | |
QRhiShaderResourceBindings * | shaderResourceBindings () const |
void | setShaderResourceBindings (QRhiShaderResourceBindings *srb) |
Associates with srb describing the resource binding layout and the resources (QRhiBuffer, QRhiTexture) themselves. | |
QRhiRenderPassDescriptor * | renderPassDescriptor () const |
void | setRenderPassDescriptor (QRhiRenderPassDescriptor *desc) |
Associates with the specified QRhiRenderPassDescriptor desc. | |
int | patchControlPointCount () const |
void | setPatchControlPointCount (int count) |
Sets the number of patch control points to count. | |
PolygonMode | polygonMode () const |
void | setPolygonMode (PolygonMode mode) |
Sets the polygon mode. | |
int | multiViewCount () const |
void | setMultiViewCount (int count) |
Sets the view count for multiview rendering. | |
Public Member Functions inherited from QRhiResource | |
virtual | ~QRhiResource () |
Destructor. | |
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 |
Public Attributes | |
QMetalGraphicsPipelineData * | d |
uint | generation = 0 |
int | lastActiveFrameSlot = -1 |
Friends | |
class | QRhiMetal |
Definition at line 232 of file qrhimetal_p.h.
QMetalGraphicsPipeline::QMetalGraphicsPipeline | ( | QRhiImplementation * | rhi | ) |
Definition at line 4534 of file qrhimetal.mm.
References QMetalGraphicsPipeline(), d, and QMetalGraphicsPipelineData::q.
Referenced by QMetalGraphicsPipeline().
QMetalGraphicsPipeline::~QMetalGraphicsPipeline | ( | ) |
|
overridevirtual |
Creates the corresponding native graphics resources.
If there are already resources present due to an earlier create() with no corresponding destroy(), then destroy() is called implicitly first.
true
when successful, false
when a graphics operation failed. Regardless of the return value, calling destroy() is always safe.VkPipelineCache
to improve data reuse during the lifetime of the application.Implements QRhiGraphicsPipeline.
Definition at line 5972 of file qrhimetal.mm.
References QMetalGraphicsPipelineData::bufferSizeBuffer, QMetalBuffer::create(), d, destroy(), and lastActiveFrameSlot.
bool QMetalGraphicsPipeline::createTessellationPipelines | ( | const QShader & | tessVert, |
const QShader & | tesc, | ||
const QShader & | tese, | ||
const QShader & | tessFrag ) |
Definition at line 5788 of file qrhimetal.mm.
References d, QRhiMetal::d, mapStates(), and setupMetalDepthStencilDescriptor().
bool QMetalGraphicsPipeline::createVertexFragmentPipeline | ( | ) |
Definition at line 5126 of file qrhimetal.mm.
References d, QRhiMetal::d, mapStates(), setupAttachmentsInMetalRenderPassDescriptor(), and setupMetalDepthStencilDescriptor().
|
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 4548 of file qrhimetal.mm.
References QMetalGraphicsPipelineData::bufferSizeBuffer, d, QRhiMetal::d, QRhiMetalData::DeferredReleaseEntry::GraphicsPipeline, lastActiveFrameSlot, QRhiMetalData::DeferredReleaseEntry::lastActiveFrameSlot, and QRhiMetalData::DeferredReleaseEntry::type.
Referenced by ~QMetalGraphicsPipeline(), and create().
void QMetalGraphicsPipeline::makeActiveForCurrentRenderPassEncoder | ( | QMetalCommandBuffer * | cbD | ) |
Definition at line 1472 of file qrhimetal.mm.
References QMetalCommandBuffer::currentCullMode, QMetalCommandBuffer::currentFrontFaceWinding, QMetalCommandBuffer::currentTriangleFillMode, QMetalCommandBuffer::d, d, QMetalGraphicsPipelineData::depthBias, and QMetalGraphicsPipelineData::slopeScaledDepthBias.
Referenced by QRhiMetal::setGraphicsPipeline(), and QRhiMetal::tessellatedDraw().
void QMetalGraphicsPipeline::mapStates | ( | ) |
Definition at line 5033 of file qrhimetal.mm.
Referenced by createTessellationPipelines(), and createVertexFragmentPipeline().
void QMetalGraphicsPipeline::setupAttachmentsInMetalRenderPassDescriptor | ( | void * | metalRpDesc, |
QMetalRenderPassDescriptor * | rpD ) |
Definition at line 4964 of file qrhimetal.mm.
References QMetalRenderPassDescriptor::colorAttachmentCount, QMetalRenderPassDescriptor::colorFormat, QMetalRenderPassDescriptor::dsFormat, and QMetalRenderPassDescriptor::hasDepthStencil.
Referenced by createVertexFragmentPipeline(), and QMetalGraphicsPipelineData::Tessellation::teseFragRenderPipeline().
Definition at line 5008 of file qrhimetal.mm.
Referenced by createTessellationPipelines(), and createVertexFragmentPipeline().
|
friend |
Definition at line 249 of file qrhimetal_p.h.
QMetalGraphicsPipelineData* QMetalGraphicsPipeline::d |
Definition at line 246 of file qrhimetal_p.h.
Referenced by QMetalGraphicsPipeline(), ~QMetalGraphicsPipeline(), QRhiMetal::adjustForMultiViewDraw(), create(), createTessellationPipelines(), createVertexFragmentPipeline(), destroy(), QRhiMetal::draw(), QRhiMetal::drawIndexed(), makeActiveForCurrentRenderPassEncoder(), QRhiMetal::setGraphicsPipeline(), QRhiMetal::setShaderResources(), QMetalGraphicsPipelineData::Tessellation::teseFragRenderPipeline(), and QRhiMetal::tessellatedDraw().
uint QMetalGraphicsPipeline::generation = 0 |
Definition at line 247 of file qrhimetal_p.h.
int QMetalGraphicsPipeline::lastActiveFrameSlot = -1 |
Definition at line 248 of file qrhimetal_p.h.