Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QNullGraphicsPipeline Struct Reference

#include <qrhinull_p.h>

+ Inheritance diagram for QNullGraphicsPipeline:
+ Collaboration diagram for QNullGraphicsPipeline:

Public Member Functions

 QNullGraphicsPipeline (QRhiImplementation *rhi)
 
 ~QNullGraphicsPipeline ()
 
void destroy () override
 Releases (or requests deferred releasing of) the underlying native graphics resources.
 
bool create () override
 Creates the corresponding native graphics resources.
 
- 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 TargetBlendcbeginTargetBlends () const
 
const TargetBlendcendTargetBlends () const
 
const TargetBlendtargetBlendAt (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 QRhiShaderStagecbeginShaderStages () const
 
const QRhiShaderStagecendShaderStages () const
 
const QRhiShaderStageshaderStageAt (qsizetype index) const
 
qsizetype shaderStageCount () const
 
QRhiVertexInputLayout vertexInputLayout () const
 
void setVertexInputLayout (const QRhiVertexInputLayout &layout)
 Specifies the vertex input layout.
 
QRhiShaderResourceBindingsshaderResourceBindings () const
 
void setShaderResourceBindings (QRhiShaderResourceBindings *srb)
 Associates with srb describing the resource binding layout and the resources (QRhiBuffer, QRhiTexture) themselves.
 
QRhiRenderPassDescriptorrenderPassDescriptor () 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
 
QRhirhi () const
 

Additional Inherited Members

- Public Types inherited from QRhiGraphicsPipeline
enum  Flag { UsesBlendConstants = 1 << 0 , UsesStencilRef = 1 << 1 , UsesScissor = 1 << 2 , CompileShadersWithDebugInfo = 1 << 3 }
 Flag values for describing the dynamic state of the pipeline, and other options. More...
 
enum  Topology {
  Triangles , TriangleStrip , TriangleFan , Lines ,
  LineStrip , Points , Patches
}
 Specifies the primitive topology. More...
 
enum  CullMode { None , Front , Back }
 Specifies the culling mode. More...
 
enum  FrontFace { CCW , CW }
 Specifies the front face winding order. More...
 
enum  ColorMaskComponent { R = 1 << 0 , G = 1 << 1 , B = 1 << 2 , A = 1 << 3 }
 Flag values for specifying the color write mask. More...
 
enum  BlendFactor {
  Zero , One , SrcColor , OneMinusSrcColor ,
  DstColor , OneMinusDstColor , SrcAlpha , OneMinusSrcAlpha ,
  DstAlpha , OneMinusDstAlpha , ConstantColor , OneMinusConstantColor ,
  ConstantAlpha , OneMinusConstantAlpha , SrcAlphaSaturate , Src1Color ,
  OneMinusSrc1Color , Src1Alpha , OneMinusSrc1Alpha
}
 Specifies the blend factor. More...
 
enum  BlendOp {
  Add , Subtract , ReverseSubtract , Min ,
  Max
}
 Specifies the blend operation. More...
 
enum  CompareOp {
  Never , Less , Equal , LessOrEqual ,
  Greater , NotEqual , GreaterOrEqual , Always
}
 Specifies the depth or stencil comparison function. More...
 
enum  StencilOp {
  StencilZero , Keep , Replace , IncrementAndClamp ,
  DecrementAndClamp , Invert , IncrementAndWrap , DecrementAndWrap
}
 Specifies the stencil operation. More...
 
enum  PolygonMode { Fill , Line }
 Specifies the polygon rasterization mode. More...
 
- Public Types inherited from QRhiResource
enum  Type {
  Buffer , Texture , Sampler , RenderBuffer ,
  RenderPassDescriptor , SwapChainRenderTarget , TextureRenderTarget , ShaderResourceBindings ,
  GraphicsPipeline , SwapChain , ComputePipeline , CommandBuffer
}
 Specifies type of the resource. More...
 
- Protected Member Functions inherited from QRhiGraphicsPipeline
 QRhiGraphicsPipeline (QRhiImplementation *rhi)
 \variable QRhiGraphicsPipeline::StencilOpState::failOp
 
- Protected Member Functions inherited from QRhiResource
 QRhiResource (QRhiImplementation *rhi)
 
- Protected Attributes inherited from QRhiGraphicsPipeline
Flags m_flags
 
Topology m_topology = Triangles
 
CullMode m_cullMode = None
 
FrontFace m_frontFace = CCW
 
QVarLengthArray< TargetBlend, 8 > m_targetBlends
 
bool m_depthTest = false
 
bool m_depthWrite = false
 
CompareOp m_depthOp = Less
 
bool m_stencilTest = false
 
StencilOpState m_stencilFront
 
StencilOpState m_stencilBack
 
quint32 m_stencilReadMask = 0xFF
 
quint32 m_stencilWriteMask = 0xFF
 
int m_sampleCount = 1
 
float m_lineWidth = 1.0f
 
int m_depthBias = 0
 
float m_slopeScaledDepthBias = 0.0f
 
int m_patchControlPointCount = 3
 
PolygonMode m_polygonMode = Fill
 
int m_multiViewCount = 0
 
QVarLengthArray< QRhiShaderStage, 4 > m_shaderStages
 
QRhiVertexInputLayout m_vertexInputLayout
 
QRhiShaderResourceBindingsm_shaderResourceBindings = nullptr
 
QRhiRenderPassDescriptorm_renderPassDesc = nullptr
 
- Protected Attributes inherited from QRhiResource
QRhiImplementationm_rhi = nullptr
 
quint64 m_id
 
QByteArray m_objectName
 

Detailed Description

Definition at line 128 of file qrhinull_p.h.

Constructor & Destructor Documentation

◆ QNullGraphicsPipeline()

QNullGraphicsPipeline::QNullGraphicsPipeline ( QRhiImplementation * rhi)

Definition at line 909 of file qrhinull.cpp.

◆ ~QNullGraphicsPipeline()

QNullGraphicsPipeline::~QNullGraphicsPipeline ( )

Definition at line 914 of file qrhinull.cpp.

References destroy().

+ Here is the call graph for this function:

Member Function Documentation

◆ create()

bool QNullGraphicsPipeline::create ( )
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.

Returns
true when successful, false when a graphics operation failed. Regardless of the return value, calling destroy() is always safe.
Note
This may be, depending on the underlying graphics API, an expensive operation, especially when shaders get compiled/optimized from source or from an intermediate bytecode format to the GPU's own instruction set. Where applicable, the QRhi backend automatically sets up the relevant non-persistent facilities to accelerate this, for example the Vulkan backend automatically creates a VkPipelineCache to improve data reuse during the lifetime of the application.
Drivers may also employ various persistent (disk-based) caching strategies for shader and pipeline data, which is hidden to and is outside of Qt's control. In some cases, depending on the graphics API and the QRhi backend, there are facilities within QRhi for manually managing such a cache, allowing the retrieval of a serializable blob that can then be reloaded in the future runs of the application to ensure faster pipeline creation times. See QRhi::pipelineCacheData() and QRhi::setPipelineCacheData() for details. Note also that when working with a QRhi instance managed by a higher level Qt framework, such as Qt Quick, it is possible that such disk-based caching is taken care of automatically, for example QQuickWindow uses a disk-based pipeline cache by default (which comes in addition to any driver-level caching).

Implements QRhiGraphicsPipeline.

Definition at line 926 of file qrhinull.cpp.

References QRHI_RES_RHI.

◆ destroy()

void QNullGraphicsPipeline::destroy ( )
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.

Note
Resources referenced by commands for the current frame should not be released until the frame is submitted by QRhi::endFrame().

The QRhiResource destructor also performs the same task, so calling this function is not necessary before deleting a QRhiResource.

See also
deleteLater()

Implements QRhiResource.

Definition at line 919 of file qrhinull.cpp.

References QRHI_RES_RHI.

Referenced by ~QNullGraphicsPipeline().

+ Here is the caller graph for this function:

The documentation for this struct was generated from the following files: