aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/scenegraph/coreapi/qsgrendererinterface.cpp')
-rw-r--r--src/quick/scenegraph/coreapi/qsgrendererinterface.cpp88
1 files changed, 58 insertions, 30 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp b/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp
index ffde9d8930..fa543aecad 100644
--- a/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp
+++ b/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp
@@ -54,12 +54,21 @@ QT_BEGIN_NAMESPACE
necessary to query certain values, for instance the graphics device (e.g.
the Direct3D or Vulkan device) that is used by the scenegraph.
- \note QSGRendererInterface is only available after the scenegraph is
- initialized. Additionally, there may be backend-specific limitations on
- when the functions can be called. The only way that is guaranteed to
- succeed is calling them when the rendering of a node (i.e. the preparation
- of the command list for the next frame) is active. In practice this
- typically means QSGRenderNode::render().
+ QSGRendererInterface's functions have varying availability. API and
+ language queries, like graphicsApi() or shaderType() are always available,
+ meaning it is sufficient to construct a QQuickWindow or QQuickView, and the
+ graphics API or shading language in use can be queried right after via
+ QQuickWindow::rendererInterface(). This guarantees that utilities like the
+ GraphicsInfo QML type are able to report the correct values as early as
+ possible, without having conditional property values - depending on for
+ instance shaderType() - evaluate to unexpected values.
+
+ Engine-specific accessors, like getResource(), are however available only
+ after the scenegraph is initialized. Additionally, there may be
+ backend-specific limitations on when such functions can be called. The only
+ way that is guaranteed to succeed is calling them when the rendering of a
+ node (i.e. the preparation of the command list for the next frame) is
+ active. In practice this typically means QSGRenderNode::render().
*/
/*!
@@ -68,15 +77,40 @@ QT_BEGIN_NAMESPACE
\value Software The Qt Quick 2D Renderer is in use
\value OpenGL OpenGL ES 2.0 or higher
\value Direct3D12 Direct3D 12
- \value Vulkan Vulkan
- \value Metal Metal
*/
/*!
\enum QSGRendererInterface::Resource
- \value Device The graphics device
- \value CommandQueue The graphics command queue used by the scenergaph
- \value CommandList The command list or buffer used by the scenegraph
+ \value Device The graphics device, when applicable.
+ \value CommandQueue The graphics command queue used by the scenegraph, when applicable.
+ \value CommandList The command list or buffer used by the scenegraph, when applicable.
+ \value Painter The active QPainter used by the scenegraph, when running with the software backend.
+ */
+
+/*!
+ \enum QSGRendererInterface::ShaderType
+ \value UnknownShadingLanguage Not yet known due to no window and scenegraph associated
+ \value GLSL GLSL or GLSL ES
+ \value HLSL HLSL
+ */
+
+/*!
+ \enum QSGRendererInterface::ShaderCompilationType
+ \value RuntimeCompilation Runtime compilation of shader source code is supported
+ \value OfflineCompilation Pre-compiled bytecode supported
+ */
+
+/*!
+ \enum QSGRendererInterface::ShaderSourceType
+
+ \value ShaderSourceString Shader source can be provided as a string in
+ the corresponding properties of ShaderEffect
+
+ \value ShaderSourceFile Local or resource files containing shader source
+ code are supported
+
+ \value ShaderByteCode Local or resource files containing shader bytecode are
+ supported
*/
QSGRendererInterface::~QSGRendererInterface()
@@ -88,10 +122,7 @@ QSGRendererInterface::~QSGRendererInterface()
Returns the graphics API that is in use by the Qt Quick scenegraph.
- \note This function can be called on any thread. However, the renderer
- interface's lifetime may be tied to the render thread and therefore calling
- this function from other threads during the process of application shutdown
- or QQuickWindow closing is likely to become invalid.
+ \note This function can be called on any thread.
*/
/*!
@@ -104,10 +135,13 @@ QSGRendererInterface::~QSGRendererInterface()
example, \c{VkDevice dev = *static_cast<VkDevice *>(result)}). The latter
is necessary since such handles may have sizes different from a pointer.
+ \note The ownership of the returned pointer is never transferred to the caller.
+
\note This function must only be called on the render thread.
*/
-void *QSGRendererInterface::getResource(Resource resource) const
+void *QSGRendererInterface::getResource(QQuickWindow *window, Resource resource) const
{
+ Q_UNUSED(window);
Q_UNUSED(resource);
return nullptr;
}
@@ -117,10 +151,13 @@ void *QSGRendererInterface::getResource(Resource resource) const
allows supporting any future resources that are not listed in the
Resource enum.
+ \note The ownership of the returned pointer is never transferred to the caller.
+
\note This function must only be called on the render thread.
*/
-void *QSGRendererInterface::getResource(const char *resource) const
+void *QSGRendererInterface::getResource(QQuickWindow *window, const char *resource) const
{
+ Q_UNUSED(window);
Q_UNUSED(resource);
return nullptr;
}
@@ -131,10 +168,7 @@ void *QSGRendererInterface::getResource(const char *resource) const
\return the shading language supported by the Qt Quick backend the
application is using.
- \note This function can be called on any thread. However, the renderer
- interface's lifetime may be tied to the render thread and therefore calling
- this function from other threads during the process of application shutdown
- or QQuickWindow closing is likely to become invalid.
+ \note This function can be called on any thread.
\sa QtQuick::GraphicsInfo
*/
@@ -145,10 +179,7 @@ void *QSGRendererInterface::getResource(const char *resource) const
\return a bitmask of the shader compilation approaches supported by the Qt
Quick backend the application is using.
- \note This function can be called on any thread. However, the renderer
- interface's lifetime may be tied to the render thread and therefore calling
- this function from other threads during the process of application shutdown
- or QQuickWindow closing is likely to become invalid.
+ \note This function can be called on any thread.
\sa QtQuick::GraphicsInfo
*/
@@ -156,12 +187,9 @@ void *QSGRendererInterface::getResource(const char *resource) const
/*!
\fn QSGRendererInterface::ShaderSourceTypes QSGRendererInterface::shaderSourceType() const
- \return a bitmask of the supported ways of providing shader sources.
+ \return a bitmask of the supported ways of providing shader sources in ShaderEffect items.
- \note This function can be called on any thread. However, the renderer
- interface's lifetime may be tied to the render thread and therefore calling
- this function from other threads during the process of application shutdown
- or QQuickWindow closing is likely to become invalid.
+ \note This function can be called on any thread.
\sa QtQuick::GraphicsInfo
*/