aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph
Commit message (Collapse)AuthorAgeFilesLines
...
* layer: Check for <1 not ==0 when bailing out due to no sizeLaszlo Agocs2020-07-061-1/+1
| | | | | Change-Id: I87798db04e0bca6c2ea173b1b946549a747b2124 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Fix before/after frame signal emissionsLaszlo Agocs2020-07-012-4/+6
| | | | | | | | | Make the before signal closer to the actual QRhi::beginFrame() call. This fixes emitting a beforeFrameBegin unnecessarily when unexposing and then exposing a window again. Change-Id: Icc562a57798986c8d04c6800eabc41981c5da85b Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Make it possible to specify an adapter or physical device onlyLaszlo Agocs2020-06-291-2/+16
| | | | | | | | | As required by OpenXR. While we are at it, make the API a bit more type safe. Change-Id: I3c6152feeb71359056830ab02d35f8cb258722c0 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Add ; to Q_UNUSED and UNUSED_PARAMLars Schmertmann2020-06-266-8/+8
| | | | | | | | | This is required to remove the ; from the macro with Qt 6. Task-number: QTBUG-82978 Change-Id: Iead53d18fd790fb2d870d80ef2db79666f0d2392 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Add what-would-my-graphics-api-be getterLaszlo Agocs2020-06-261-0/+2
| | | | | Change-Id: I2bf50a46ea18fe06068192ad695652830c3a3861 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Add links to examples in scenegraph docsLaszlo Agocs2020-06-242-0/+8
| | | | | Change-Id: I00192314cdb954acdd4f933eec912cffab3584c6 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Defer setting a QVulkanInstance on the windowLaszlo Agocs2020-06-221-0/+9
| | | | | | | | ...to createRhi(). There is no need for the VkInstance before that point. Change-Id: I87f4e8154e96409bccd7844f1bf80b957bb54d69 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Rename setSceneGraphBackend to setGraphicsApiLaszlo Agocs2020-06-221-1/+1
| | | | | | | | | | | | | | | | ...and fix up the docs. The string-based setSceneGraphBackend() stays of course (the docs have been enhanced, however). The GraphicsApi enum-based overload is now renamed to setGraphicsApi(). Using the same name for both functions is a historical artifact, reflecting the evolution (5.0 - 5.8 - 5.14). In 6.0 we can give it a more appropriate name, since it does not have much to do with "backends" from the user's perspective. Change-Id: Id75dbf81f50a148797e5b5de9be4000153737473 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Add test for rendercontrol + rendererinterfaceLaszlo Agocs2020-06-221-5/+12
| | | | | | | | | | Also add support for doing QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Unknown). This becomes relevant especially in tests, where we may request a specific graphics API, but then want to switch back to the default behavior. Change-Id: Ib09c411432fc37bd4d36ce55d54d20af3f83860a Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Emit new frame signals from the software backendLaszlo Agocs2020-06-222-0/+8
| | | | | | | Introduce an autotest case too. Change-Id: I658b09b6e4e5b30cdc2174fdf21f60adf93e44ff Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Make it possible to specify device extensions in a future proof mannerLaszlo Agocs2020-06-198-20/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow the pattern of QQuickRenderTarget and QQuickGraphicsDevice. This makes it possible to integrate with real world frameworks, such as OpenXR, that, especially with Vulkan, expect this level of configurability. (i.e. one pulls the list of extensions to be enabled on the device, that then needs to be taken into account by Quick, otherwise it will end up with a VkDevice that is not usable by OpenXR) Same goes when integrating native Vulkan rendering into an application: if certain extensions need to be enabled on the VkDevice, today that can only be done with an environment variable which is not entirely ideal. These issues are now solved by a new simple (and extensible) container QQuickGraphicsConfiguration, which is associated with the QQuickWindow. When applicable, the scene graph will then pick up the relevant settings. Expand the related docs everywhere. Also rename the vulkanInstance() to defaultVulkanInstance() to emphasize that it is the instance that is used for normal QQuickWindows, and is not provided when redirecting via QQuickRenderControl. While we are at it, include another obvious candidate: the use-depth-buffer flag. It turns out that Quick3D's Overlay render mode can be pretty problematic if Quick writes to the depth buffer. In order to avoid relying on environment variables (QSG_NO_DEPTH_BUFFER), we now provide a proper API for controlling that as well. Change-Id: Iefdb62c1f53de8bd34e3f0d393b00c5020d6188a Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Fix up exposing the swapchain to Quick3DLaszlo Agocs2020-06-193-4/+30
| | | | | | | | | | Quick3D is broken in combination with QQuickRenderControl. This is because just exposing the swapchain is not enough - there is no swapchain with QQuickRenderControl. Rather, one needs access to the command buffer and render target then. Change-Id: I6c06ad3d83ab0018b9f985073757a3378dbce24b Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Remove comment that is no longer validEskil Abrahamsen Blomfeldt2020-06-191-2/+0
| | | | | | | | | In a8d357761dbf74cbdc72348be6c655cafb745ff2, we added the removed bit to the batch and implemented the suggested optimization, so this comment is no longer valid. Change-Id: I2a5c82f0ace206a989ef8c6d0c2c2b87dc83ad6f Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix SceneGraphRendererFrame event for the Quick ProfilerLaszlo Agocs2020-06-181-0/+7
| | | | | | | | | | The Creator view only works correctly when each event has the pre-defined number of data points. So record the Binding timestamp, which went missing in the RHI port at some point, to get correct results. Change-Id: Iac2f458ac0264a6afd4bb91e56b19e7ac7343816 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Fix outline shader with transparent fillEskil Abrahamsen Blomfeldt2020-06-182-2/+2
| | | | | | | | | | | | | | | | A bug snuck in via e8d9bc1bcada7d94af5a33d64a9afc860ede5b84 in one of the outline shaders where we would actually fill the entire glyph with the style color instead of just drawing the border. Since we were drawing the fill on top afterwards, this wasn't visible in a normal test, but when the fill color is set to transparent it showed. This changes the alpha channel-based outline shader to match the old code as well as the code in the red-channel based one. Task-number: QTBUG-69301 Change-Id: I2f9d4b9426577c331866172fc6f7240f379efef2 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Remove broken profiler/trace points in the scenegraphLaszlo Agocs2020-06-182-55/+1
| | | | | | | | | | | | | | | As the todo note says: this profiling is all wrong Not reporting something is better than reporting something bogus. The other profiling points, f.ex. in the render loops, seem to work as expected and give reasonable results in the QML Profiler view in Creator. The autotest needs fixing because there is no SGContextFrame events left with the rhi code path either atm, just like with the software backend. Change-Id: Iee2d3feb586108db50c83c6c03ea415384561ede Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* ShaderEffect: vertexShader and fragmentShader are now URLsLaszlo Agocs2020-06-183-7/+7
| | | | | | | | | | | | | | | | ..and so fully compatible in behavior with properties like Image.source. The main improvement here is that unlike with the old code, which incorrectly handled local file URLs, one can now write fragmentShader: "myshader.frag.qsb" which leads to picking up the file relative to the component (the .qml file), as expected. Existing code (that uses file: or qrc: URLs) will continue to work as-is. Change-Id: I89dd84b998b59ae6d5b6cb3d8a6353961ee8bb4a Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Only enable opting in to rhi profiling when qml debugging is enabledLaszlo Agocs2020-06-182-2/+12
| | | | | | | | | For security reasons, QML debugging (e.g. QML Profiler) is only usable when the application had CONFIG+=qml_debug set. Follow the same approach in the QRhi profiling infrastructure and do nothing if this was not set. Change-Id: I46ea78a118d79e166a40722befbfc9263aac6680 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Fix outline for connected textEskil Abrahamsen Blomfeldt2020-06-1815-13/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | For any font where glyphs are connected (any font could have this, but specifically Arabic and Indic fonts will typically always connect glyphs, as it is required to express the language correctly), we would draw the outline on a per-glyph basis, thus getting outlines that disconnect the glyphs. In order to fix this, we have to draw the fill of the glyphs in a separate pass after the outline has been drawn. Note that in order for this to look correct, we have to disable subpixel antialiasing on the fill, which required some plumbing in the native rendering glyph node. The outline shaders have also been changed to only draw the outline and not the fill. [ChangeLog][QtQuick][Text] Fixed Outline style on connected glyphs, especially visible in e.g. Arabic and Indic writing systems. Pick-to: 5.15 Fixes: QTBUG-69301 Fixes: QTBUG-83358 Change-Id: If52a940bfb0267384ea002120655aed1310458a1 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Revert accidentally changed outline shadersEskil Abrahamsen Blomfeldt2020-06-184-8/+6
| | | | | | | | | | | | | The standard outline shaders were accidentally changed to use fwidth() as part of 90bf30376c94b2fcf99e2d8382b40e8881be47be. The same change adds specialized outline shaders when fwidth is enabled, so the change to the default ones can simply be reverted. Task-number: QTBUG-84695 Change-Id: I45c3e234d1ddb39f968967cce28906f352b237ea Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Hide QSGTexture APIs with non-public types from the public docsLaszlo Agocs2020-06-172-8/+9
| | | | | | | | | | | | | | | | Our aim is to provide a clean and lean QSGTexture interface and this involves having certain QRhi types in some of the functions. Putting these functions into some private class leads to unnecessary ugliness all over the place, and would infect other modules, such as Quick 3D as well. At the same time, fully documenting functions like rhiTexture() is probably weird in 6.0 since QRhiTexture is not a public class and is forward declared at best. So until the QRhi API story crystalizes long term, mark these functions as internal. Change-Id: I8248fc5ba40f0ca94b3542b13d12f24cc9bd76f6 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Simplify the software backend selection logicLaszlo Agocs2020-06-171-7/+8
| | | | | | | | | | | | Avoid relying on the (somewhat obsolete) capability flag. Instead, have a clean and straightforward check based on QT_CONFIG. In the CI, in particular for the QEMU configs that are both OpenGL and Vulkan capable (build-wise, yuck), the software backend will be requested explicitly in the future so this won't need to cater for that anymore. Change-Id: Ifa100efdae208b789f6ed2a7b57330262c13284f Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Add "rhi" as an accepted scenegraph backend nameLaszlo Agocs2020-06-171-2/+9
| | | | | Change-Id: Ic0f1a1ffe18aa12cdf6643e52644053f4d191380 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Clean up QT_CONFIG(opengl)Paul Olav Tvete2020-06-1712-215/+75
| | | | | | | | | | Accelerated graphics is now possible without OpenGL support. With this change, a Qt build with -no-opengl can still run Qt Quick with a Vulkan, Metal, or Direct3D backend. Fixes: QTBUG-84027 Change-Id: Ib63c733d28cfdf7de16b138df136fa7628e1747b Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* SceneGraph: Check for existing offscreen surface before creating oneUlf Hermann2020-06-171-1/+2
| | | | | | | Otherwise the old one leaks as shown in the QQuickWindow test. Change-Id: I50a8c1b5e7ebc52a2bf9a901d9fae94559d2bcea Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Remove the GL/ANGLE-ish QQuickWindowPrivate::contextCreationFailureMessageLaszlo Agocs2020-06-161-9/+3
| | | | | | | | Not called in practice anymore, remove the corresponding condition in the basic render loop as well. Change-Id: I22d6091c900ce36665b9e7f6dc91cc9276528ff6 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Clean up QSGGeometry docs to not refer to OpenGLLaszlo Agocs2020-06-151-46/+38
| | | | | | | | Most of this is just updating based on the changes done back in Qt 5.8, e.g. referring to our own enum values instead talking about OpenGL and GL_*. Change-Id: Id4dd823acbb004d61a1b54cc4c92d1490d7f42a1 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Anisotropic antialiasing for distance field textEskil Abrahamsen Blomfeldt2020-06-1540-65/+355
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For perspective transforms, we need to find the sample range in the glyph cache per pixel. We can do this by getting the gradient of the distance field at the specific pixel. This will ensure proper antialiasing with any projection, but has the limitation that when glyph contours become thinner than a pixel, they may disappear or become too emphasized, because the hardware-gradient - based on neighbouring fragments - is not reliable at that scale. So we should only default to this when we detect that the text is child of a 3D scene. To make this smooth, we need to know the mode of the renderer when creating the shader. So QSGMaterial::createShader() now takes a render mode that we can use to customize behavior based on whether it is rendering into a 2D or 3D scene. [ChangeLog][QtQuick] The QSGMaterial::createShader() virtual function has been extended to take a render mode argument, which can be used for any customizations needed in the case where the shader will be used in combination with 3D perspective transformations. Fixes: QTBUG-84695 Change-Id: I5a18a4edbdfa07e8f9d506c42bb20e8eb580927d Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Speed up rendering huge static scenesEskil Abrahamsen Blomfeldt2020-06-152-0/+11
| | | | | | | | | | | | | | | | With really big, static scenes, traversal of the geometry list is expensive enough that it becomes a limitation on the frame rate if we do it in the inner loop of every frame. And going through the whole list of geometry every frame just to verify that nothing has been removed is a waste of time. In a test with two million opaque items in a single draw call, I can hit 144 fps with this small optimization versus 50 fps on the same machine without the patch. Pick-to: 5.15 Change-Id: Id11c1d96456e79a62c33b89e5f115bdaacceeacd Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Get rid of preprocess in QQuickTextEskil Abrahamsen Blomfeldt2020-06-156-6/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Preprocessing in the scene graph is actually pretty expensive, so we want to avoid using it for something like text, where you can often have a lot of nodes in a UI. For text it was previously used for two purposes: 1. To make sure the distance field glyph cache was updated with potential new glyphs before the frame was rendered, but *after* all new glyph nodes had been created (this is an optimization to avoid having to resize the cache multiple times in one frame, but rather wait until we know the exact amount of new glyphs that need to be added) 2. Update the coordinates of the glyph based on their position in the glyph cache if the glyph cache says they have moved (or if they have just been added for the first time). Point #1 can actually be handled a lot simpler, by having a separate loop for the existing glyph caches where we ask them to preprocess. There is typically only a few glyph caches, but can be hundreds of glyph nodes in a scene, so in the previous code we would be calling the update() functions on the same glyph cache over and over again every frame. Point #2 does not need preprocessing every frame, but can be reduced to only preprocess when the geometry is marked as dirty. We then do a pass on the glyph node in question to update its geometry and turn the flag off again so that we don't pay the cost every frame. Pick-to: 5.15 Fixes: QTBUG-84351 Change-Id: If8c492acaef9c512c2db61b64bcab2103db2d997 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Port distancefield debugging code from OpenGL to RHIEirik Aavitsland2020-06-124-159/+42
| | | | | | Task-number: QTBUG-84623 Change-Id: I26941eacf5ad97ed3c7c6e7d7ad3beec7f0c6fa3 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Move QSGRenderContext::RenderMode to QSGRendererInterfaceEskil Abrahamsen Blomfeldt2020-06-1110-25/+35
| | | | | | | | | We want to be able to use this enum from the public API, so we move it out to a suitable public class. Task-number: QTBUG-84695 Change-Id: I8a3860ecfd0da7990941540bcf39fb0c2bf0ff83 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Remove FBO path from painternode/context2dPaul Olav Tvete2020-06-112-167/+17
| | | | | | Task-number: QTBUG-84623 Change-Id: Icef7ab7460799b989f4e122be3f8d5cab98382e4 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Modernize QSGMaterialShader class docsLaszlo Agocs2020-06-111-81/+121
| | | | | | Task-number: QTBUG-84623 Change-Id: I7577c2da02936295793bac23f7cb66107a65c462 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Remove remaining OpenGL dependency in QSGDefaultInternalImageNodeEirik Aavitsland2020-06-112-19/+2
| | | | | | | | | As a driveby, remove an unused opengl #include from qsgdefaultspritenode.cpp Task-number: QTBUG-84623 Change-Id: I6e901a0ac0a23a2d21029b5337c204835e29026a Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Rename setPersistentOpenGLContext and revise related docsLaszlo Agocs2020-06-111-1/+1
| | | | | | | | | | | | | | | | | | These persistent hints are still taken into account by the threaded render loop, so keep them, but get rid of "OpenGL Context" from the function names. The qquickwindow autotest has been updated accordingly, and with a few OpenGL-related cleanups it now runs without any warnings or skips with OpenGL-on-RHI, while it skips only 1 case when running with some other API, and 2 with the software backend. [ChangeLog][Qt Quick][QQuickWindow] The setPersistentOpenGLContext() and isPersistentOpenGLContext() functions are renamed to setPersistentGraphics() and isPersistentGraphics(). Change-Id: Ifc4cc7c4b94fe9f7e402b39ca4f28952dcafd588 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Remove the unused shadersourcebuilderLaszlo Agocs2020-06-103-496/+0
| | | | | | Task-number: QTBUG-84623 Change-Id: I994f1078399788566108e8605213f18e0ba722f5 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Skip all clipping when render mode is 3DLaszlo Agocs2020-06-101-10/+13
| | | | | | | | The current assumption is that setting clip: true will have no effect in a scene rendered with RenderMode3D. (2D item tree under a 3D node) Change-Id: I81ca1fcc04c7f4af37a03fd48dc95ea307989e98 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Fix shifted text styles on RHIEskil Abrahamsen Blomfeldt2020-06-101-2/+2
| | | | | | | | | QPointF is only 8 bytes if qreal is a float. Use QVector2D instead, which always contains floats. Change-Id: I342a88bd5f1cd8b0aa54308291852418cfbd0009 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Remove OpenGL dependency from QSGTextMaskMaterial & friendsEirik Aavitsland2020-06-102-43/+7
| | | | | | Task-number: QTBUG-84623 Change-Id: Ia665b789bbc875c26672abd7e0f8b0d9fe45d22b Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Remove compat. leftover in QSGTexturePrivateLaszlo Agocs2020-06-102-9/+0
| | | | | Change-Id: Ic23a944ec273ddf7834a6add128c9c0413d865ff Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Remove QSGDepthStencilBufferPaul Olav Tvete2020-06-103-365/+0
| | | | | | Task-number: QTBUG-84623 Change-Id: Ia08376a8547110993bd39bcff17a49e059d40fde Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Remove OpenGL dependency from QSGGeometryPaul Olav Tvete2020-06-101-14/+0
| | | | | | Task-number: QTBUG-84623 Change-Id: I150867f256a1e9f30d66e8b6d8cde047d7b6dbdf Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Remove QOpenGL dependency from QSGCompressedTexturePaul Olav Tvete2020-06-101-56/+216
| | | | | | Task-number: QTBUG-84623 Change-Id: I89e0154447b6b82b22c90faa60cfc5262cf3d658 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Do not depend on removed openglContext getterLaszlo Agocs2020-06-092-13/+7
| | | | | | | | ...and remove Angle special case. Task-number: QTBUG-84623 Change-Id: Icf3eb4ef4508519aa2144b667220d33155569b7f Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Make rendercontext OpenGL cleanLaszlo Agocs2020-06-096-116/+6
| | | | | | Task-number: QTBUG-84623 Change-Id: I5cf3c0db01b0c519f803fd49be820a910881dcff Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Remove unused leftovers in batch renderer headerLaszlo Agocs2020-06-091-9/+0
| | | | | | | | Also remove a misleading comment. Task-number: QTBUG-84623 Change-Id: Ia3f88e3af80f0d5de95f951cb637550c0b14381f Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Prevent Vulkan validation warning in 3D mode with textLaszlo Agocs2020-06-091-1/+1
| | | | | | | | | | | | | Setting a dynamic state on the command buffer is an error if the pipeline was not created with the appropriate flag. In the depth post pass the pipeline's flags do not reflect the modifications from the materials' updateGraphicsPipeline(). So we should not set the appropriate dynamic state either. (blending has no relevance for the depth output anyway) Change-Id: Ifedae1f5175ac4f1905dec4b7a5c305417234808 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Add perspective 3D plane render modeLaszlo Agocs2020-06-099-52/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | One can now do rc->createRenderer(QSGRenderContext::RenderMode3D) in Quick3D. By default nothing changes, both QQuickWindow and QSGRhiLayer default to either RenderMode2D or RenderMode2DNoDepthBuffer, depending on QSG_NO_DEPTH_BUFFER. (the environment variable handling is moved out of qsgbatchrenderer.cpp however, leaving it up to whoever is creating the renderer to passing the appropriate flag) The RenderMode3D mode is a modified version of the QSG_NO_DEPTH_BUFFER case: only alpha batches are used, which are then rendered back to front. The difference is that this is done with depth test on (no write), so the 2D content gets depth tested against whatever is already in the depth buffer. Then, there's an additional depth "post pass" to fill the depth buffer with the 2D content. This must be separate from the color-write enabled stage because otherwise unavoidable Z fighting would occur. By filling the depth buffer, other 3D or 2D content, that is rendered afterwards, can depth test correctly against the 2D elements rendered here. customRenderMode and related functions are renamed to visualization (because that's what it is about), in order to prevent confusing name clashes. Change-Id: I0d43b273e0a8020af05a652a236c0ad5fb150685 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Remove QMatrix4x4_Accessor hackLaszlo Agocs2020-06-081-18/+12
| | | | | | | | | | Relies on QMatrix4x4 exposing the flags via a \internal public function. The m[a][b] access can be replaced with constData()[4*a+b]. Fixes: QTBUG-82670 Change-Id: I39145b202cf133ad5a712cab2796ac97feddb6a6 Reviewed-by: Andy Nichols <andy.nichols@qt.io>