32 enum class Private { Initialize };
35 using UserPassSet = QList<QSSGRenderUserPass *>;
37 explicit QSSGUserRenderPassManager(Private);
38 ~QSSGUserRenderPassManager();
40 [[nodiscard]]
static std::shared_ptr<QSSGUserRenderPassManager> create()
42 return std::make_shared<QSSGUserRenderPassManager>(Private::Initialize);
45 void scheduleUserPass(QSSGRenderUserPass *userPasses);
46 void unscheduleUserPass(
const QSSGRenderUserPass *userPasses);
48 QSSGRhiRenderableTextureV2Ptr getOrCreateRenderableTexture(
const QSSGRenderUserPass &userPass);
49 QSSGRhiRenderableTextureV2Ptr getUserPassTexureResult(
const QSSGRenderUserPass &userPass)
const;
52 void updateUserPassOrder(
bool forceUpdate =
false);
54 const UserPassSet &scheduledUserPasses()
const {
return m_scheduledUserPasses; }
58 void unregisterManagedTexture(QSSGManagedRhiTexture *textureWrapper);
59 void registerManagedTexture(QSSGManagedRhiTexture *textureWrapper);
64 Q_DISABLE_COPY_MOVE(QSSGUserRenderPassManager)
66 friend class QSSGBufferManager;
68 using TextureWrappers = std::vector<QSSGManagedRhiTexture *>;
69 using DeferredReleaseTextures = QSet<QRhiTexture *>;
72 [[nodiscard]]
bool derefTexture(QRhiTexture *texture);
73 void refTexture(QRhiTexture *texture);
75 [[nodiscard]]
bool derefTexture(
const std::unique_ptr<QRhiTexture> &texture);
76 void refTexture(
const std::unique_ptr<QRhiTexture> &texture);
78 QHash<
const QSSGRenderUserPass *, QSSGRhiRenderableTextureV2Ptr> m_renderPassRenderTargets;
79 UserPassSet m_scheduledUserPasses;
81 QHash<QRhiTexture *, size_t> m_trackedTextures;
85 TextureWrappers m_trackedTextureWrappers;
87 DeferredReleaseTextures m_deferredReleaseTextures;
89 bool m_passlistDirty =
false;