![]() |
Qt 6.x
The Qt SDK
|
#include <qrhimetal_p.h>
Public Member Functions | |
QMetalRenderPassDescriptor (QRhiImplementation *rhi) | |
~QMetalRenderPassDescriptor () | |
void | destroy () override |
Releases (or requests deferred releasing of) the underlying native graphics resources. | |
bool | isCompatible (const QRhiRenderPassDescriptor *other) const override |
QRhiRenderPassDescriptor * | newCompatibleRenderPassDescriptor () const override |
QVector< quint32 > | serializedFormat () const override |
void | updateSerializedFormat () |
![]() | |
QRhiResource::Type | resourceType () const override |
virtual bool | isCompatible (const QRhiRenderPassDescriptor *other) const =0 |
virtual const QRhiNativeHandles * | nativeHandles () |
virtual QRhiRenderPassDescriptor * | newCompatibleRenderPassDescriptor () const =0 |
virtual QVector< quint32 > | serializedFormat () const =0 |
![]() | |
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 |
Public Attributes | |
int | colorAttachmentCount = 0 |
bool | hasDepthStencil = false |
int | colorFormat [MAX_COLOR_ATTACHMENTS] |
int | dsFormat |
QVector< quint32 > | serializedFormatData |
Static Public Attributes | |
static const int | MAX_COLOR_ATTACHMENTS = 8 |
Additional Inherited Members | |
![]() | |
enum | Type { Buffer , Texture , Sampler , RenderBuffer , RenderPassDescriptor , SwapChainRenderTarget , TextureRenderTarget , ShaderResourceBindings , GraphicsPipeline , SwapChain , ComputePipeline , CommandBuffer } |
Specifies type of the resource. More... | |
![]() | |
QRhiRenderPassDescriptor (QRhiImplementation *rhi) | |
![]() | |
QRhiResource (QRhiImplementation *rhi) | |
![]() | |
QRhiImplementation * | m_rhi = nullptr |
quint64 | m_id |
QByteArray | m_objectName |
Definition at line 108 of file qrhimetal_p.h.
QMetalRenderPassDescriptor::QMetalRenderPassDescriptor | ( | QRhiImplementation * | rhi | ) |
Definition at line 4010 of file qrhimetal.mm.
References serializedFormatData.
QMetalRenderPassDescriptor::~QMetalRenderPassDescriptor | ( | ) |
Definition at line 4016 of file qrhimetal.mm.
References 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.
The QRhiResource destructor also performs the same task, so calling this function is not necessary before deleting a QRhiResource.
Implements QRhiResource.
Definition at line 4021 of file qrhimetal.mm.
References QRHI_RES_RHI.
Referenced by ~QMetalRenderPassDescriptor().
|
overridevirtual |
this
and other can be used interchangebly in QRhiGraphicsPipeline::setRenderPassDescriptor().The concept of the compatibility of renderpass descriptors is similar to the \l{QRhiShaderResourceBindings::isLayoutCompatible}{layout compatibility} of QRhiShaderResourceBindings instances. They allow better reuse of QRhiGraphicsPipeline instances: for example, a QRhiGraphicsPipeline instance cache is expected to use these functions to look for a matching pipeline, instead of just comparing pointers, thus allowing a different QRhiRenderPassDescriptor and QRhiShaderResourceBindings to be used in combination with the pipeline, as long as they are compatible.
The exact details of compatibility depend on the underlying graphics API. Two renderpass descriptors \l{QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor()}{created} from the same QRhiTextureRenderTarget are always compatible.
Similarly to QRhiShaderResourceBindings, compatibility can also be tested without having two existing objects available. Extracting the opaque blob by calling serializedFormat() allows testing for compatibility by comparing the returned vector to another QRhiRenderPassDescriptor's serializedFormat(). This has benefits in certain situations, because it allows testing the compatibility of a QRhiRenderPassDescriptor with a QRhiGraphicsPipeline even when the QRhiRenderPassDescriptor the pipeline was originally built was is no longer available (but the data returned from its serializedFormat() still is).
Implements QRhiRenderPassDescriptor.
Definition at line 4028 of file qrhimetal.mm.
References colorAttachmentCount, dsFormat, hasDepthStencil, i, o, other(), and QRHI_RES.
|
overridevirtual |
This function allows cloning a QRhiRenderPassDescriptor. The returned object is ready to be used, and the ownership is transferred to the caller. Cloning a QRhiRenderPassDescriptor object can become useful in situations where the object is stored in data structures related to graphics pipelines (in order to allow creating new pipelines which in turn requires a renderpass descriptor object), and the lifetime of the renderpass descriptor created from a render target may be shorter than the pipelines. (for example, because the engine manages and destroys renderpasses together with the textures and render targets it was created from) In such a situation, it can be beneficial to store a cloned version in the data structures, and thus transferring ownership as well.
Implements QRhiRenderPassDescriptor.
Definition at line 4066 of file qrhimetal.mm.
References colorAttachmentCount, colorFormat, dsFormat, hasDepthStencil, QRhiResource::m_rhi, QRHI_RES_RHI, and updateSerializedFormat().
Given two QRhiRenderPassDescriptor objects rp1
and rp2
, if the data returned from this function is identical, then {rp1->isCompatible(rp2)}, and vice versa hold true as well.
Implements QRhiRenderPassDescriptor.
Definition at line 4081 of file qrhimetal.mm.
References serializedFormatData.
void QMetalRenderPassDescriptor::updateSerializedFormat | ( | ) |
Definition at line 4054 of file qrhimetal.mm.
References colorAttachmentCount, dsFormat, hasDepthStencil, i, and serializedFormatData.
Referenced by newCompatibleRenderPassDescriptor(), QMetalTextureRenderTarget::newCompatibleRenderPassDescriptor(), and QMetalSwapChain::newCompatibleRenderPassDescriptor().
int QMetalRenderPassDescriptor::colorAttachmentCount = 0 |
Definition at line 123 of file qrhimetal_p.h.
Referenced by isCompatible(), newCompatibleRenderPassDescriptor(), QMetalTextureRenderTarget::newCompatibleRenderPassDescriptor(), QMetalSwapChain::newCompatibleRenderPassDescriptor(), QMetalGraphicsPipeline::setupAttachmentsInMetalRenderPassDescriptor(), and updateSerializedFormat().
int QMetalRenderPassDescriptor::colorFormat[MAX_COLOR_ATTACHMENTS] |
int QMetalRenderPassDescriptor::dsFormat |
Definition at line 126 of file qrhimetal_p.h.
Referenced by isCompatible(), newCompatibleRenderPassDescriptor(), QMetalTextureRenderTarget::newCompatibleRenderPassDescriptor(), QMetalSwapChain::newCompatibleRenderPassDescriptor(), QMetalGraphicsPipeline::setupAttachmentsInMetalRenderPassDescriptor(), and updateSerializedFormat().
bool QMetalRenderPassDescriptor::hasDepthStencil = false |
Definition at line 124 of file qrhimetal_p.h.
Referenced by isCompatible(), newCompatibleRenderPassDescriptor(), QMetalTextureRenderTarget::newCompatibleRenderPassDescriptor(), QMetalSwapChain::newCompatibleRenderPassDescriptor(), QMetalGraphicsPipeline::setupAttachmentsInMetalRenderPassDescriptor(), and updateSerializedFormat().
|
static |
Definition at line 122 of file qrhimetal_p.h.
Definition at line 127 of file qrhimetal_p.h.
Referenced by QMetalRenderPassDescriptor(), serializedFormat(), and updateSerializedFormat().