5#ifndef QSSGRENDERGRAPHOBJECT_P_H
6#define QSSGRENDERGRAPHOBJECT_P_H
19#include <ssg/qssgrendergraphobject.h>
21#include <ssg/qssgrenderbasetypes.h>
23#include <QtQuick3DUtils/private/qssgassert_p.h>
28 QSSG_ASSERT(QSSGRenderGraphObject::isResource(o.type),
return QSSGResourceId::Invalid);
29 return QSSGResourceId{ quintptr(&o) };
35 return static_cast<T *>(
reinterpret_cast<QSSGRenderGraphObject *>(resId));
40 QSSG_ASSERT(QSSGRenderGraphObject::isNodeType(o.type),
return QSSGNodeId::Invalid);
41 return QSSGNodeId{ quintptr(&o) };
47 return static_cast<T *>(
reinterpret_cast<QSSGRenderGraphObject *>(nodeId));
52 QSSG_ASSERT(QSSGRenderGraphObject::isCamera(o.type),
return QSSGCameraId::Invalid);
53 return QSSGCameraId{ quintptr(&o) };
59 return static_cast<T *>(
reinterpret_cast<QSSGRenderGraphObject *>(cameraId));
64 QSSG_ASSERT(QSSGRenderGraphObject::isExtension(o.type),
return QSSGExtensionId::Invalid);
65 return QSSGExtensionId{ quintptr(&o) };
71 return static_cast<T *>(
reinterpret_cast<QSSGRenderGraphObject *>(extensionId));
74template <
typename QSSGTypeId>
75constexpr bool isNull(QSSGTypeId id) {
return (id == QSSGTypeId::Invalid); }
79 constexpr auto BaseTypeMask = QSSGRenderGraphObject::TypeT(~0xFFF);
80 return static_cast<QSSGRenderGraphObject::BaseType>(QSSGRenderGraphObject::TypeT(type) & BaseTypeMask);
87 return (QSSGRenderGraphObject::TypeT(type) & QSSGRenderGraphObject::TypeT(QSSGRenderGraphObject::Type::TextureProvider));
constexpr QSSGCameraId getCameraId(const QSSGRenderGraphObject &o)
constexpr QSSGResourceId getResourceId(const QSSGRenderGraphObject &o)
T * getExtension(QSSGExtensionId extensionId)
T * getNode(QSSGNodeId nodeId)
T * getResource(QSSGResourceId resId)
constexpr QSSGExtensionId getExtensionId(const QSSGRenderGraphObject &o)
constexpr bool isNull(QSSGTypeId id)
T * getCamera(QSSGCameraId cameraId)
static constexpr bool isTextureProvider(QSSGRenderGraphObject::Type type) noexcept
constexpr QSSGNodeId getNodeId(const QSSGRenderGraphObject &o)
static constexpr QSSGRenderGraphObject::BaseType getBaseType(QSSGRenderGraphObject::Type type) noexcept
Q_QUICK3DRUNTIMERENDER_EXPORT void setStatusCallback(StatusCallback cb)
void(*)(const QByteArray &descKey, Status status, const QString &err, QShader::Stage stage) StatusCallback
Q_QUICK3DRUNTIMERENDER_EXPORT void setAutomaticDiskCache(bool enable)
Q_QUICK3DRUNTIMERENDER_EXPORT bool isAutomaticDiskCacheEnabled()
Q_GLOBAL_STATIC(QReadWriteLock, g_updateMutex)
static QString persistentQsbcFileName()
static bool isAutoDiskCacheEnabled()
size_t qHash(QSSGShaderFeatures features) noexcept
static bool ensureWritableDir(const QString &name)
static bool s_autoDiskCacheEnabled
static QString dumpFilename(QShader::Stage stage)
static void initBakerForPersistentUse(QShaderBaker *, QRhi *)
static QString persistentQsbcDir()
static void initBakerForNonPersistentUse(QShaderBaker *, QRhi *)
static constexpr DefineEntry DefineTable[]