Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QSGContext Class Referenceabstract

The QSGContext holds the scene graph entry points for one QML engine. More...

#include <qsgcontext_p.h>

+ Inheritance diagram for QSGContext:
+ Collaboration diagram for QSGContext:

Public Types

enum  AntialiasingMethod { UndecidedAntialiasing , VertexAntialiasing , MsaaAntialiasing }
 

Public Member Functions

 QSGContext (QObject *parent=nullptr)
 
 ~QSGContext () override
 
virtual void renderContextInitialized (QSGRenderContext *renderContext)
 
virtual void renderContextInvalidated (QSGRenderContext *renderContext)
 
virtual QSGRenderContextcreateRenderContext ()=0
 
QSGInternalRectangleNodecreateInternalRectangleNode (const QRectF &rect, const QColor &c)
 Convenience factory function for creating a colored rectangle with the given geometry.
 
virtual QSGInternalRectangleNodecreateInternalRectangleNode ()=0
 
virtual QSGInternalImageNodecreateInternalImageNode (QSGRenderContext *renderContext)=0
 
virtual QSGInternalTextNodecreateInternalTextNode (QSGRenderContext *renderContext)
 
virtual QSGPainterNodecreatePainterNode (QQuickPaintedItem *item)=0
 
virtual QSGGlyphNodecreateGlyphNode (QSGRenderContext *rc, QSGTextNode::RenderType renderType, int renderTypeQuality)=0
 
virtual QSGLayercreateLayer (QSGRenderContext *renderContext)=0
 
virtual QSGGuiThreadShaderEffectManagercreateGuiThreadShaderEffectManager ()
 Creates a new shader effect helper instance.
 
virtual QSGShaderEffectNodecreateShaderEffectNode (QSGRenderContext *renderContext)
 Creates a new shader effect node.
 
virtual QAnimationDrivercreateAnimationDriver (QObject *parent)
 Creates a new animation driver.
 
virtual float vsyncIntervalForAnimationDriver (QAnimationDriver *driver)
 
virtual bool isVSyncDependent (QAnimationDriver *driver)
 
virtual QSize minimumFBOSize () const
 
virtual QSurfaceFormat defaultSurfaceFormat () const =0
 
virtual QSGRendererInterfacerendererInterface (QSGRenderContext *renderContext)
 Returns a pointer to the (presumably) global renderer interface.
 
virtual QSGTextNodecreateTextNode (QSGRenderContext *renderContext)
 
virtual QSGRectangleNodecreateRectangleNode ()=0
 
virtual QSGImageNodecreateImageNode ()=0
 
virtual QSGNinePatchNodecreateNinePatchNode ()=0
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
 
template<typename T >
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.
 

Static Public Member Functions

static QSGContextcreateDefaultContext ()
 Creates a default scene graph context for the current hardware.
 
static QQuickTextureFactorycreateTextureFactoryFromImage (const QImage &image)
 Calls into the scene graph adaptation if available and creates a texture factory.
 
static QSGRenderLoopcreateWindowManager ()
 Calls into the scene graph adaptation if available and creates a hardware specific window manager.
 
static void setBackend (const QString &backend)
 
static QString backend ()
 
- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Detailed Description

The QSGContext holds the scene graph entry points for one QML engine.

The context is not ready for use until it has a QRhi. Once that happens, the scene graph population can start.

Definition at line 81 of file qsgcontext_p.h.

Member Enumeration Documentation

◆ AntialiasingMethod

Enumerator
UndecidedAntialiasing 
VertexAntialiasing 
MsaaAntialiasing 

Definition at line 86 of file qsgcontext_p.h.

Constructor & Destructor Documentation

◆ QSGContext()

QSGContext::QSGContext ( QObject * parent = nullptr)
explicit

Definition at line 320 of file qsgcontext.cpp.

◆ ~QSGContext()

QSGContext::~QSGContext ( )
override

Definition at line 325 of file qsgcontext.cpp.

Member Function Documentation

◆ backend()

QString QSGContext::backend ( )
static

Definition at line 221 of file qsgcontextplugin.cpp.

Referenced by QGeoMapMapboxGLPrivate::updateSceneGraph().

+ Here is the caller graph for this function:

◆ createAnimationDriver()

QAnimationDriver * QSGContext::createAnimationDriver ( QObject * parent)
virtual

Creates a new animation driver.

Definition at line 383 of file qsgcontext.cpp.

References QObject::parent().

Referenced by QSGSoftwareThreadedRenderLoop::QSGSoftwareThreadedRenderLoop(), QSGThreadedRenderLoop::QSGThreadedRenderLoop(), QSGSoftwareRenderThread::run(), and QSGRenderThread::run().

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

◆ createDefaultContext()

QSGContext * QSGContext::createDefaultContext ( )
static

Creates a default scene graph context for the current hardware.

This may load a device-specific plugin.

Definition at line 173 of file qsgcontextplugin.cpp.

References contextFactory().

Referenced by QQuickRenderControlPrivate::QQuickRenderControlPrivate(), QSGGuiThreadRenderLoop::QSGGuiThreadRenderLoop(), and QSGOpenVGRenderLoop::QSGOpenVGRenderLoop().

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

◆ createGlyphNode()

virtual QSGGlyphNode * QSGContext::createGlyphNode ( QSGRenderContext * rc,
QSGTextNode::RenderType renderType,
int renderTypeQuality )
pure virtual

Implemented in QSGSoftwareContext, and QSGDefaultContext.

Referenced by QSGInternalTextNode::addGlyphs().

+ Here is the caller graph for this function:

◆ createGuiThreadShaderEffectManager()

QSGGuiThreadShaderEffectManager * QSGContext::createGuiThreadShaderEffectManager ( )
virtual

Creates a new shader effect helper instance.

This function is called on the GUI thread, unlike the others. This is necessary in order to provide adaptable, backend-specific shader effect functionality to the GUI thread too.

Reimplemented in QSGDefaultContext.

Definition at line 365 of file qsgcontext.cpp.

◆ createImageNode()

virtual QSGImageNode * QSGContext::createImageNode ( )
pure virtual

◆ createInternalImageNode()

virtual QSGInternalImageNode * QSGContext::createInternalImageNode ( QSGRenderContext * renderContext)
pure virtual

Implemented in QSGOpenVGContext, QSGSoftwareContext, and QSGDefaultContext.

Referenced by QSGInternalTextNode::addImage(), and QQuickCanvasItem::updatePaintNode().

+ Here is the caller graph for this function:

◆ createInternalRectangleNode() [1/2]

virtual QSGInternalRectangleNode * QSGContext::createInternalRectangleNode ( )
pure virtual

Implemented in QSGOpenVGContext, QSGSoftwareContext, and QSGDefaultContext.

Referenced by createInternalRectangleNode().

+ Here is the caller graph for this function:

◆ createInternalRectangleNode() [2/2]

QSGInternalRectangleNode * QSGContext::createInternalRectangleNode ( const QRectF & rect,
const QColor & c )

Convenience factory function for creating a colored rectangle with the given geometry.

Definition at line 341 of file qsgcontext.cpp.

References createInternalRectangleNode(), rect, QSGInternalRectangleNode::setColor(), QSGInternalRectangleNode::setRect(), and QSGInternalRectangleNode::update().

Referenced by QSGInternalTextNode::addRectangleNode(), and QSGInternalTextNode::setCursor().

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

◆ createInternalTextNode()

QSGInternalTextNode * QSGContext::createInternalTextNode ( QSGRenderContext * renderContext)
virtual

Reimplemented in QSGDefaultContext.

Definition at line 350 of file qsgcontext.cpp.

Referenced by QQuickTextEditPrivate::createTextNode(), and createTextNode().

+ Here is the caller graph for this function:

◆ createLayer()

virtual QSGLayer * QSGContext::createLayer ( QSGRenderContext * renderContext)
pure virtual

Implemented in QSGOpenVGContext, QSGSoftwareContext, and QSGDefaultContext.

Referenced by QQuickDesignerSupport::refFromEffectItem(), and QQuick3DTexture::updateSpatialNode().

+ Here is the caller graph for this function:

◆ createNinePatchNode()

virtual QSGNinePatchNode * QSGContext::createNinePatchNode ( )
pure virtual

◆ createPainterNode()

virtual QSGPainterNode * QSGContext::createPainterNode ( QQuickPaintedItem * item)
pure virtual

◆ createRectangleNode()

virtual QSGRectangleNode * QSGContext::createRectangleNode ( )
pure virtual

◆ createRenderContext()

virtual QSGRenderContext * QSGContext::createRenderContext ( )
pure virtual

Implemented in QSGOpenVGContext, QSGSoftwareContext, and QSGDefaultContext.

Referenced by QSGOpenVGRenderLoop::QSGOpenVGRenderLoop(), QSGSoftwareRenderLoop::QSGSoftwareRenderLoop(), QSGGuiThreadRenderLoop::createRenderContext(), and QSGThreadedRenderLoop::createRenderContext().

+ Here is the caller graph for this function:

◆ createShaderEffectNode()

QSGShaderEffectNode * QSGContext::createShaderEffectNode ( QSGRenderContext * renderContext)
virtual

Creates a new shader effect node.

The default of returning nullptr is valid as long as the backend does not claim SupportsShaderEffectNode or ignoring ShaderEffect elements is acceptable.

Reimplemented in QSGDefaultContext.

Definition at line 375 of file qsgcontext.cpp.

Referenced by QQuickShaderEffectPrivate::handleUpdatePaintNode().

+ Here is the caller graph for this function:

◆ createTextNode()

QSGTextNode * QSGContext::createTextNode ( QSGRenderContext * renderContext)
virtual

Definition at line 355 of file qsgcontext.cpp.

References createInternalTextNode().

+ Here is the call graph for this function:

◆ createTextureFactoryFromImage()

QQuickTextureFactory * QSGContext::createTextureFactoryFromImage ( const QImage & image)
static

Calls into the scene graph adaptation if available and creates a texture factory.

The primary purpose of this function is to reimplement hardware specific asynchronous texture frameskip-less uploads that can happen on the image providers thread.

Definition at line 190 of file qsgcontextplugin.cpp.

References contextFactory().

Referenced by BackendSupport::BackendSupport(), and QQuickTextureFactory::textureFactoryForImage().

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

◆ createWindowManager()

QSGRenderLoop * QSGContext::createWindowManager ( )
static

Calls into the scene graph adaptation if available and creates a hardware specific window manager.

Definition at line 204 of file qsgcontextplugin.cpp.

References contextFactory().

Referenced by QSGRenderLoop::instance().

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

◆ defaultSurfaceFormat()

virtual QSurfaceFormat QSGContext::defaultSurfaceFormat ( ) const
pure virtual

Implemented in QSGOpenVGContext, QSGSoftwareContext, and QSGDefaultContext.

Referenced by QQuickWindowPrivate::init().

+ Here is the caller graph for this function:

◆ isVSyncDependent()

bool QSGContext::isVSyncDependent ( QAnimationDriver * driver)
virtual
Returns
true if driver relies on vsync-based throttling in some form.

Definition at line 403 of file qsgcontext.cpp.

References isVSyncDependent().

Referenced by QSGThreadedRenderLoop::event(), and isVSyncDependent().

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

◆ minimumFBOSize()

QSize QSGContext::minimumFBOSize ( ) const
virtual

Definition at line 408 of file qsgcontext.cpp.

◆ renderContextInitialized()

void QSGContext::renderContextInitialized ( QSGRenderContext * renderContext)
virtual

Reimplemented in QSGDefaultContext.

Definition at line 329 of file qsgcontext.cpp.

Referenced by QSGDefaultRenderContext::initialize().

+ Here is the caller graph for this function:

◆ renderContextInvalidated()

void QSGContext::renderContextInvalidated ( QSGRenderContext * renderContext)
virtual

Reimplemented in QSGDefaultContext.

Definition at line 333 of file qsgcontext.cpp.

Referenced by QSGSoftwareRenderContext::invalidate(), and QSGDefaultRenderContext::invalidate().

+ Here is the caller graph for this function:

◆ rendererInterface()

QSGRendererInterface * QSGContext::rendererInterface ( QSGRenderContext * renderContext)
virtual

Returns a pointer to the (presumably) global renderer interface.

Note
This function may be called on the GUI thread in order to get access to QSGRendererInterface::graphicsApi() and other getters.
it is expected that the simple queries (graphicsApi, shaderType, etc.) are available regardless of the render context validity (i.e. scenegraph status). This does not apply to engine-specific getters like getResource(). In the end this means that this function must always return a valid object in subclasses, even when renderContext->isValid() is false. The typical pattern is to implement the QSGRendererInterface in the QSGContext or QSGRenderContext subclass itself, whichever is more suitable.

Reimplemented in QSGOpenVGContext, QSGSoftwareContext, and QSGDefaultContext.

Definition at line 427 of file qsgcontext.cpp.

References Q_UNUSED, and qWarning.

Referenced by isOpenGL(), QQuickWindowPrivate::openglContext(), and QQuickImageParticle::updatePaintNode().

+ Here is the caller graph for this function:

◆ setBackend()

void QSGContext::setBackend ( const QString & backend)
static

Definition at line 212 of file qsgcontextplugin.cpp.

References qWarning.

◆ vsyncIntervalForAnimationDriver()

float QSGContext::vsyncIntervalForAnimationDriver ( QAnimationDriver * driver)
virtual
Returns
the vsync rate (such as, 16.68 ms or similar), if applicable, for the driver that was created by createAnimationDriver().

Definition at line 395 of file qsgcontext.cpp.


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