QMemoryBarrier Class

(Qt3DRender::QMemoryBarrier)

Class to emplace a memory barrier. More...

Header: #include <QMemoryBarrier>
qmake: QT += 3drender
Since: Qt 5.9
Instantiated By: MemoryBarrier
Inherits: Qt3DRender::QFrameGraphNode

Public Types

enum Operation { None, ElementArray, Uniform, TextureFetch, ..., All }
flags Operations

Public Functions

QMemoryBarrier(Qt3DCore::QNode *parent = nullptr)
virtual ~QMemoryBarrier()
Qt3DRender::QMemoryBarrier::Operations waitOperations() const

Public Slots

void setWaitOperations(QMemoryBarrier::Operations operations)

Signals

void waitOperationsChanged(QMemoryBarrier::Operations barrierTypes)

Protected Functions

QMemoryBarrier(Qt3DRender::QMemoryBarrierPrivate &dd, Qt3DCore::QNode *parent = nullptr)

Additional Inherited Members

Detailed Description

Class to emplace a memory barrier.

A Qt3DRender::QMemoryBarrier FrameGraph node is used to emplace a specific memory barrier at a specific time of the rendering. This is required to properly synchronize drawing and compute commands on the GPU.

The barrier defines the ordering of memory operations issued by a prior command. This means that if command1 is manipulating a buffer that is to be used as a vertex attribute buffer in a following command2, then the memory barrier should be placed after command1 and setting the appropriate barrier type for vertex attribute buffer.

When a QMemoryBarrier node is found in a FrameGraph branch, the barrier will be enforced prior to any draw or compute command even if these are defined deeper in the branch.

For OpenGL rendering, this page gives more info about the Memory Model

Member Type Documentation

enum QMemoryBarrier::Operation
flags QMemoryBarrier::Operations

This enum type describes types of buffer to be cleared.

ConstantValue
Qt3DRender::QMemoryBarrier::None0
Qt3DRender::QMemoryBarrier::ElementArray(1 << 1)
Qt3DRender::QMemoryBarrier::Uniform(1 << 2)
Qt3DRender::QMemoryBarrier::TextureFetch(1 << 3)
Qt3DRender::QMemoryBarrier::ShaderImageAccess(1 << 4)
Qt3DRender::QMemoryBarrier::Command(1 << 5)
Qt3DRender::QMemoryBarrier::PixelBuffer(1 << 6)
Qt3DRender::QMemoryBarrier::TextureUpdate(1 << 7)
Qt3DRender::QMemoryBarrier::BufferUpdate(1 << 8)
Qt3DRender::QMemoryBarrier::FrameBuffer(1 << 9)
Qt3DRender::QMemoryBarrier::TransformFeedback(1 << 10)
Qt3DRender::QMemoryBarrier::AtomicCounter(1 << 11)
Qt3DRender::QMemoryBarrier::ShaderStorage(1 << 12)
Qt3DRender::QMemoryBarrier::QueryBuffer(1 << 13)
Qt3DRender::QMemoryBarrier::VertexAttributeArray(1 << 0)
Qt3DRender::QMemoryBarrier::All0xFFFFFFFF

The Operations type is a typedef for QFlags<Operation>. It stores an OR combination of Operation values.

Member Function Documentation

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

Default constructs an instance of QMemoryBarrier.

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

Default constructs an instance of QMemoryBarrier.

[virtual] QMemoryBarrier::~QMemoryBarrier()

Destroys the instance of QMemoryBarrier. The destructor is virtual.

[slot] void QMemoryBarrier::setWaitOperations(QMemoryBarrier::Operations operations)

See also waitOperations().

Qt3DRender::QMemoryBarrier::Operations QMemoryBarrier::waitOperations() const

See also setWaitOperations().

[signal] void QMemoryBarrier::waitOperationsChanged(QMemoryBarrier::Operations barrierTypes)

© 2018 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.