aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/qsgdefaultcontext_p.h
Commit message (Collapse)AuthorAgeFilesLines
* use nullptr consistently (clang-tidy)Shawn Rutledge2018-02-261-1/+1
| | | | | | | | | | | | | From now on we prefer nullptr instead of 0 to clarify cases where we are assigning or testing a pointer rather than a numeric zero. Also, replaced cases where 0 was passed as Qt::KeyboardModifiers with Qt::NoModifier (clang-tidy replaced them with nullptr, which waas wrong, so it was just as well to make the tests more readable rather than to revert those lines). Change-Id: I4735d35e4d9f42db5216862ce091429eadc6e65d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* clang-cl: Fix warnings about non-portable #include resolutionFriedemann Kleint2017-10-241-1/+1
| | | | | | | | | | | | | | qtbase\include\QtQml\5.11.0\QtQml\private/../../../../../../qtdeclarative/src/qml/jsruntime/qv4regexpobject_p.h(58,10): warning: #include resolved using non-portable Microsoft search rules as: qtbase\include\QtQml\5.11.0\QtQml\private/qv4isel_p.h [-Wmicrosoft-include] qtbase\include\QtQml\5.11.0\QtQml\private/../../../../../../qtdeclarative/src/qml/jsruntime/qv4regexpobject_p.h(59,10): warning: #include resolved using non-portable Microsoft search rules as: qtbase\include\QtQml\5.11.0\QtQml\private/qv4isel_p.h [-Wmicrosoft-include] qtbase\include\QtQuick\5.11.0\QtQuick/private/../../../../../../qtdeclarative/src/quick/scenegraph/qsgdefaultcontext_p.h(56,10): warning: #include resolved using non-portable Microsoft search rules as: scenegraph\coreapi/qsgrendererinterface.h [-Wmicrosoft-include] qtbase\include\QtQml\5.11.0\QtQml\private/../../../../../../qtdeclarative/src/qml/types/qquickworkerscript_p.h(54,10): warning: #include resolved using non-portable Microsoft search rules as: qml/qqml.h [-Wmicrosoft-include] Task-number: QTBUG-63512 Change-Id: If6df28a4b32b5e4ca0b0367d2cdbfb683d4b06b8 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Make Sprite a configurable featureLars Knoll2016-10-101-0/+2
| | | | | | Change-Id: Iab5c5261cb3cdce3d02fa6cd19ae6f594b6fc649 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Add QSGSpriteNode to the Scenegraph Adaptation LayerAndy Nichols2016-07-141-0/+1
| | | | | | | | | | | | Most core Qt Quick items use one of the nodes provided by the Scenegraph Adaptation Layer, however the two items that provide support for Sprites created their own custom nodes. There was significant redundancy in this, and it made it only possible to use the OpenGL adaptation. The AnimatedSprite and SpriteSequence items have been cleaned up, and now use the new QSGSpriteNode. Change-Id: Idc20b9c5da9dc1c94f6368021785382cdf7cec5a Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Export the OpenGL context and rendercontextLaszlo Agocs2016-07-051-1/+1
| | | | | | | | | Because traditional context plugins (see scenegraph-playground) may want to subclass these instead of the generic base interfaces with no ready-made OpenGL functionality. Change-Id: Idfd66e132f386aecdcd6e980605332abd45411ce Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Add cross-backend simple rect, texture, and ninepatch nodesLaszlo Agocs2016-06-221-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QSGSimpleRectNode is deprecated -> use QSGRectangleNode via QQuickWindow::createRectangleNode() instead. QSGSimpleTextureNode is deprecated -> use QSGImageNode via QQuickWindow::createImageNode() instead. The OpenGL version of the simple rectangle node is switched over to the vertex color material instead of flat, to allow for better batching. Use the same concept for nine patch nodes. The "style" node from Quick Controls 1 is now QSGNinePatchNode in order to provide a proper cross-backend solution which is already necessary due to the software backend, but now generalize it to apply to the accelerated backends with proper materials as well. QC can now simply call createNinePatchNode() without further ado. Also fixes a bug with the D3D12 texture material not enabling blending when needed. When it comes to the internal class names, QSGRectangleNode and QSGImageNode get the Internal prefix in the adaptation layer in order to differentiate from the public API. This involves quite a lot of renaming, but results in a nice and clean public API. Change-Id: Iddf9f9412377843ea6d652bcf25e68d1d74659ea Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* One GraphicsInfo to rule them allLaszlo Agocs2016-06-011-0/+3
| | | | | | | | | Rename RendererInfo to GraphicsInfo. Deprecate OpenGLInfo and move the surface format properties into GraphicsInfo. Move also the shader info properties from ShaderEffect. Change-Id: I3b3f01080e059b3a30a132fd67de19a4bfca54ef Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Change graphicsAPI to graphicsApiLaszlo Agocs2016-06-011-1/+1
| | | | | Change-Id: I065f17abd1cb71cd8d6ead76abf7a544eb7a99c0 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Make rendernode suitable for public consumptionLaszlo Agocs2016-04-201-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For non-OpenGL APIs the primary (and likely the only) way to add custom rendering into the Qt Quick scene is via the render node. Other approaches,like the before/afterRendering signals, QQuickFramebufferObject, remain OpenGL-only. (although QQuickFramebufferObject may get a multi-API replacement based on QSGRenderNode at a later time) Note that this is not a generic 3D content integration enabler. It targets creating 2D and 2.5D Quick items with custom rendering via the graphics API in use. Make QSGRenderNode public, enhance the docs a bit and add a releaseResources(). Add a QSGRendererInterface with a query function in QQuickWindow and QSGEngine. The scenegraph adaptation can then return a custom implementation of the interface. This will be necessary to query API-specific values, f.ex. the ID3D12Device and ID3D12CommandList when running with the d3d12 backend. The interface allows querying the API and void* resources. Resources that we know about in advance are enum-based to prevent the QPlatformNativeInterface-like ugliness of string keys. Support is there in the batch renderer already, fix this up according to the new public API, and implement the corresponding bits for the D3D12 renderer. For D3D12, fix also an issue with QSGNode destruction where graphics resources in use were attempted to be final-released without a proper wait. The semantics of changedStates() in QSGRenderNode is changed so that it can be called at any time, including before render(). This is very useful since we can implement some state restoring in a more efficient manner. Added a new example as well. Documentation for QSGRenderNode is heavily expanded. Change-Id: I4c4a261c55791d0e38743a784bc4c05a53b3462d Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Enable building Qt Quick module with QT_NO_OPENGL definedAndy Nichols2016-03-221-0/+89
Currently the Qt Quick module depends on either the OpenGL or OpenGLES headers being available at build time. Since we are adding support for adaptations that do not depend on OpenGL, it should be possible to build Qt Quick in environments that do not have OpenGL development headers. This does present many challenges though because in some cases GL types, and classes that require OpenGL are part of the public APIs. However since these classes were never available when QT_NO_OPENGL was defined, it should be possible to redefine the function signatures under this scenario, since it's not possible to break binary compatibility if there never were any binaries to break compatibility with. One of the bigger changes that was necessary to facilitate this change is creating interfaces out of QSGContext and QSGRenderContext. Here the default behavior was usage of OpenGL directly, even though subclasses could override all OpenGL usage. Making them interfaces should bring QSGContext and QSGRenderContext more in line with the other classes present in the adaptation layer. Change-Id: Iaa54dc0f6cfd18d2da1d059548abf509bd71f200 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>