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) | |
~QMemoryBarrier() | |
Operations | waitOperations() const |
- 1 public function inherited from Qt3DRender::QFrameGraphNode
- 11 public functions inherited from Qt3DCore::QNode
- 32 public functions inherited from QObject
Public Slots
void | setWaitOperations(QMemoryBarrier::Operations operations) |
- 3 public slots inherited from Qt3DCore::QNode
- 1 public slot inherited from QObject
Signals
void | waitOperationsChanged(QMemoryBarrier::Operations barrierTypes) |
- 4 signals inherited from Qt3DCore::QNode
- 2 signals inherited from QObject
Protected Functions
QMemoryBarrier(QMemoryBarrierPrivate &dd, Qt3DCore::QNode *parent = nullptr) |
- 1 protected function inherited from Qt3DRender::QFrameGraphNode
- 2 protected functions inherited from Qt3DCore::QNode
- 9 protected functions inherited from QObject
Additional Inherited Members
- 3 properties inherited from Qt3DCore::QNode
- 1 property inherited from QObject
- 11 static public members inherited from QObject
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::Operationflags QMemoryBarrier::Operations
This enum type describes types of buffer to be cleared.
Constant | Value |
---|---|
Qt3DRender::QMemoryBarrier::None |
0 |
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::All |
0xFFFFFFFF |
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(QMemoryBarrierPrivate &dd, Qt3DCore::QNode *parent = nullptr)
Copy constructor.
QMemoryBarrier::~QMemoryBarrier()
Destroys the instance of QMemoryBarrier.
[slot]
void QMemoryBarrier::setWaitOperations(QMemoryBarrier::Operations operations)
See also waitOperations().
Operations QMemoryBarrier::waitOperations() const
See also setWaitOperations().
[signal]
void QMemoryBarrier::waitOperationsChanged(QMemoryBarrier::Operations barrierTypes)
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qt3drender-qmemorybarrier.html