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
QD3D11GraphicsPipeline Struct Reference

#include <qrhid3d11_p.h>

Inheritance diagram for QD3D11GraphicsPipeline:
Collaboration diagram for QD3D11GraphicsPipeline:

Public Member Functions

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

ID3D11DepthStencilState * dsState = nullptr
ID3D11BlendState * blendState = nullptr
struct { 
   ID3D11VertexShader *   shader = nullptr 
   QShader::NativeResourceBindingMap   nativeResourceBindingMap 
vs
struct { 
   ID3D11HullShader *   shader = nullptr 
   QShader::NativeResourceBindingMap   nativeResourceBindingMap 
hs
struct { 
   ID3D11DomainShader *   shader = nullptr 
   QShader::NativeResourceBindingMap   nativeResourceBindingMap 
ds
struct { 
   ID3D11GeometryShader *   shader = nullptr 
   QShader::NativeResourceBindingMap   nativeResourceBindingMap 
gs
struct { 
   ID3D11PixelShader *   shader = nullptr 
   QShader::NativeResourceBindingMap   nativeResourceBindingMap 
fs
ID3D11InputLayout * inputLayout = nullptr
D3D11_PRIMITIVE_TOPOLOGY d3dTopology = D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST
ID3D11RasterizerState * rastState = nullptr
uint generation = 0

Friends

class QRhiD3D11

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 329 of file qrhid3d11_p.h.

Constructor & Destructor Documentation

◆ QD3D11GraphicsPipeline()

QD3D11GraphicsPipeline::QD3D11GraphicsPipeline ( QRhiImplementation * rhi)

Definition at line 4262 of file qrhid3d11.cpp.

References QD3D11GraphicsPipeline().

Referenced by QD3D11GraphicsPipeline().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~QD3D11GraphicsPipeline()

QD3D11GraphicsPipeline::~QD3D11GraphicsPipeline ( )

Definition at line 4267 of file qrhid3d11.cpp.

References destroy().

Here is the call graph for this function:

Member Function Documentation

◆ create()

bool QD3D11GraphicsPipeline::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 4660 of file qrhid3d11.cpp.

References destroy().

Here is the call graph for this function:

◆ destroy()

void QD3D11GraphicsPipeline::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 4282 of file qrhid3d11.cpp.

Referenced by ~QD3D11GraphicsPipeline(), and create().

Here is the caller graph for this function:

◆ QRhiD3D11

friend class QRhiD3D11
friend

Definition at line 362 of file qrhid3d11_p.h.

Member Data Documentation

◆ blendState

ID3D11BlendState* QD3D11GraphicsPipeline::blendState = nullptr

Definition at line 337 of file qrhid3d11_p.h.

◆ d3dTopology

D3D11_PRIMITIVE_TOPOLOGY QD3D11GraphicsPipeline::d3dTopology = D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST

Definition at line 359 of file qrhid3d11_p.h.

◆ [struct]

struct { ... } QD3D11GraphicsPipeline::ds

◆ dsState

ID3D11DepthStencilState* QD3D11GraphicsPipeline::dsState = nullptr

Definition at line 336 of file qrhid3d11_p.h.

◆ [struct]

struct { ... } QD3D11GraphicsPipeline::fs

◆ generation

uint QD3D11GraphicsPipeline::generation = 0

Definition at line 361 of file qrhid3d11_p.h.

◆ [struct]

struct { ... } QD3D11GraphicsPipeline::gs

◆ [struct]

struct { ... } QD3D11GraphicsPipeline::hs

◆ inputLayout

ID3D11InputLayout* QD3D11GraphicsPipeline::inputLayout = nullptr

Definition at line 358 of file qrhid3d11_p.h.

◆ nativeResourceBindingMap

QShader::NativeResourceBindingMap QD3D11GraphicsPipeline::nativeResourceBindingMap

Definition at line 340 of file qrhid3d11_p.h.

◆ rastState

ID3D11RasterizerState* QD3D11GraphicsPipeline::rastState = nullptr

Definition at line 360 of file qrhid3d11_p.h.

◆ shader [1/5]

ID3D11VertexShader* QD3D11GraphicsPipeline::shader = nullptr

Definition at line 339 of file qrhid3d11_p.h.

◆ shader [2/5]

ID3D11HullShader* QD3D11GraphicsPipeline::shader = nullptr

Definition at line 343 of file qrhid3d11_p.h.

◆ shader [3/5]

ID3D11DomainShader* QD3D11GraphicsPipeline::shader = nullptr

Definition at line 347 of file qrhid3d11_p.h.

◆ shader [4/5]

ID3D11GeometryShader* QD3D11GraphicsPipeline::shader = nullptr

Definition at line 351 of file qrhid3d11_p.h.

◆ shader [5/5]

ID3D11PixelShader* QD3D11GraphicsPipeline::shader = nullptr

Definition at line 355 of file qrhid3d11_p.h.

◆ [struct]

struct { ... } QD3D11GraphicsPipeline::vs

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