Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QGles2GraphicsPipeline Struct Reference

#include <qrhigles2_p.h>

Inheritance diagram for QGles2GraphicsPipeline:
Collaboration diagram for QGles2GraphicsPipeline:

Public Member Functions

 QGles2GraphicsPipeline (QRhiImplementation *rhi)
 ~QGles2GraphicsPipeline ()
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

Public Attributes

GLuint program = 0
GLenum drawMode = GL_TRIANGLES
QGles2UniformDescriptionVector uniforms
QGles2SamplerDescriptionVector samplers
QGles2UniformState uniformState [QGles2UniformState::MAX_TRACKED_LOCATION+1]
QRhiShaderResourceBindingscurrentSrb = nullptr
uint currentSrbGeneration = 0
uint lastUsedInFrameNo = 0
uint generation = 0

Friends

class QRhiGles2

Additional Inherited Members

Public Types inherited from QRhiGraphicsPipeline
enum  Flag {
  UsesBlendConstants = 1 << 0 , UsesStencilRef = 1 << 1 , UsesScissor = 1 << 2 , CompileShadersWithDebugInfo = 1 << 3 ,
  UsesShadingRate = 1 << 4
}
 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 ,
  ShadingRateMap
}
 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 269 of file qrhigles2_p.h.

Constructor & Destructor Documentation

◆ QGles2GraphicsPipeline()

QGles2GraphicsPipeline::QGles2GraphicsPipeline ( QRhiImplementation * rhi)

Definition at line 6492 of file qrhigles2.cpp.

◆ ~QGles2GraphicsPipeline()

QGles2GraphicsPipeline::~QGles2GraphicsPipeline ( )

Definition at line 6497 of file qrhigles2.cpp.

Member Function Documentation

◆ create()

bool QGles2GraphicsPipeline::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 6533 of file qrhigles2.cpp.

◆ destroy()

void QGles2GraphicsPipeline::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 6502 of file qrhigles2.cpp.

◆ QRhiGles2

friend class QRhiGles2
friend

Definition at line 285 of file qrhigles2_p.h.

Member Data Documentation

◆ currentSrb

QRhiShaderResourceBindings* QGles2GraphicsPipeline::currentSrb = nullptr

Definition at line 281 of file qrhigles2_p.h.

◆ currentSrbGeneration

uint QGles2GraphicsPipeline::currentSrbGeneration = 0

Definition at line 282 of file qrhigles2_p.h.

◆ drawMode

GLenum QGles2GraphicsPipeline::drawMode = GL_TRIANGLES

Definition at line 277 of file qrhigles2_p.h.

◆ generation

uint QGles2GraphicsPipeline::generation = 0

Definition at line 284 of file qrhigles2_p.h.

◆ lastUsedInFrameNo

uint QGles2GraphicsPipeline::lastUsedInFrameNo = 0

Definition at line 283 of file qrhigles2_p.h.

◆ program

GLuint QGles2GraphicsPipeline::program = 0

Definition at line 276 of file qrhigles2_p.h.

◆ samplers

QGles2SamplerDescriptionVector QGles2GraphicsPipeline::samplers

Definition at line 279 of file qrhigles2_p.h.

◆ uniforms

QGles2UniformDescriptionVector QGles2GraphicsPipeline::uniforms

Definition at line 278 of file qrhigles2_p.h.

◆ uniformState

QGles2UniformState QGles2GraphicsPipeline::uniformState[QGles2UniformState::MAX_TRACKED_LOCATION+1]

Definition at line 280 of file qrhigles2_p.h.

Referenced by QRhiGles2::bindShaderResources().


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