QWaitFence Class

class Qt3DRender::QWaitFence

FrameGraphNode used to wait for a fence in the graphics command stream to become signaled. More...

Header: #include <QWaitFence>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
Since: Qt 5.13
Inherits: Qt3DRender::QFrameGraphNode

Public Types

enum HandleType { NoHandle, OpenGLFenceId }

Properties

Public Functions

QWaitFence(Qt3DCore::QNode *parent = nullptr)
virtual ~QWaitFence()
QVariant handle() const
Qt3DRender::QWaitFence::HandleType handleType() const
void setHandle(QVariant handle)
void setHandleType(Qt3DRender::QWaitFence::HandleType type)
void setTimeout(quint64 timeout)
void setWaitOnCPU(bool waitOnCPU)
quint64 timeout() const
bool waitOnCPU() const

Signals

void handleChanged(QVariant handle)
void handleTypeChanged(Qt3DRender::QWaitFence::HandleType handleType)
void timeoutChanged(quint64 timeoutChanged)
void waitOnCPUChanged(bool waitOnCPU)

Protected Functions

QWaitFence(Qt3DRender::QWaitFencePrivate &dd, Qt3DCore::QNode *parent = nullptr)

Detailed Description

Fence allow to synchronosize GPU and CPU workloads. GPU commands usually are non-blocking. When issued, commands are inserted in command buffers which will be read at a later time by the GPU. In some cases, you want to continue processing or issue specific command only when you are sure a command has been executed by the hardware. Fences are a way to do so. This is especially important when using 3rd party engines with Qt3D, Qt3D should only access shared resources when we know the other engine command are done modifying the resource.

QWaitFence is a FrameGraph node that will force to wait for it to become signaled before subsequent commands are inserted into the command stream. It can then be used in conjunction with QSetFence and contains properties to configure how long it should wait and whether it should block on the CPU side.

Note: Qt 3D uploads GPU resources (Texture, Shaders, Buffers) before issuing draw calls.

Member Type Documentation

enum QWaitFence::HandleType

Property Documentation

handle : QVariant

Holds the underlying fence handle wrapped in a QVariant.

Access functions:

QVariant handle() const
void setHandle(QVariant handle)

Notifier signal:

void handleChanged(QVariant handle)

handleType : HandleType

Specifies the type of handle being used. Currently only OpenGL Fence ids are supported.

Access functions:

Qt3DRender::QWaitFence::HandleType handleType() const
void setHandleType(Qt3DRender::QWaitFence::HandleType type)

Notifier signal:

void handleTypeChanged(Qt3DRender::QWaitFence::HandleType handleType)

timeout : quint64

Specifies the maximum amount of time in nanoseconds to wait for the fence to become signaled.

Access functions:

quint64 timeout() const
void setTimeout(quint64 timeout)

Notifier signal:

void timeoutChanged(quint64 timeoutChanged)

waitOnCPU : bool

Specifies whether the CPU should be block while waiting for the fence to become signaled. This is false by default.

Access functions:

bool waitOnCPU() const
void setWaitOnCPU(bool waitOnCPU)

Notifier signal:

void waitOnCPUChanged(bool waitOnCPU)

Member Function Documentation

[protected] QWaitFence::QWaitFence(Qt3DRender::QWaitFencePrivate &dd, Qt3DCore::QNode *parent = nullptr)

Default constructs an instance of QWaitFence.

QWaitFence::QWaitFence(Qt3DCore::QNode *parent = nullptr)

Default constructs an instance of QWaitFence.

[virtual] QWaitFence::~QWaitFence()

Destroys the instance of QWaitFence. The destructor is virtual.

© 2022 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.