aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph
Commit message (Collapse)AuthorAgeFilesLines
* SoftwareImageNodes: Initialize member variableDavid Edmundson2021-02-111-1/+1
| | | | | | | | | | | m_pixelRatio is not set in the constructor It seems the method setDevicePixelRatio is always called, so there are no ill effects, but without setting it we still read uninitialized data creating warnings when used with a memory checker. Change-Id: Iadfe07600d027dddb98fdd755b4022b2b81547a8 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* QSGBatchRender: avoid crash if buffer shrinksFabian Kosmale2021-02-081-2/+2
| | | | | | | | | | | | The QRhiBuffer does not shrink; thus we can end up with buffer->buf->size > buffer->size. This would subsequently lead to an out-of-bounds memory access, and a crash. Fix this by using the uploadStaticBuffer overload which takes the size. As a drive-by, remove pointless QByteArray::fromRawData call. Pick-to: 6.0 6.1 Change-Id: I40058ada6a6a5eb745ae559e8c9ed474fd41f75c Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Invalidate external renderpass descriptors from Quick3DLaszlo Agocs2021-02-053-0/+19
| | | | | | Pick-to: 6.1 6.0 Change-Id: I362b35b3d038d4fb24fab0e73cb120027f2308ea Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* fix a commentJiDe Zhang2021-02-051-1/+1
| | | | | | | | | | There is no the QQuickWindow::setBackend() function, only QQuickWindow::setSceneGraphBackend() and QSGContext::setBackend() are available, assume it is the public one. Change-Id: If5c4650d96919715abce92aec30f474518139ce6 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Fix compilation after subpixel handling changes in qtbaseFabian Kosmale2021-01-274-5/+6
| | | | | | | Change-Id: Ife394e660274dd9dbe17207e18c5024f90628a00 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add env.vars. to toggle pipeline cache load/saveLaszlo Agocs2021-01-254-7/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QRhi has APIs (but private ones) that allow retrieving and restoring the contents of the "pipeline cache". (which may map directly to VkPipelineCache, or may be a simulated, OpenGL program binary based solution) In many cases it is convenient if the saving of the cache blob to a file, and then, during subsequent runs of the application, the loading of cache contents, can be enabled via environment variables: QSG_RHI_PIPELINE_CACHE_SAVE=filename maps to setting the EnablePipelineCacheDataSave flag on the QRhi, and writing the collected data to file upon application exit. (more correctly, when the QRhi is about to be destroyed by the render loop) QSG_RHI_PIPELINE_CACHE_LOAD=filename maps to attempting to read the contents of the specified file, and, if successful, passing it to QRhi right after initialization. When supported and the data is not corrupt or incomplete, the result is likely improved pipeline creation times (the exact details depend on the driver with Vulkan, while with OpenGL it all maps to glProgramBinary instead of compiling from source) Setting QSG_INFO=1 can be useful to see what is happening when the above 2 env.vars. are set. With OpenGL the simulated "pipeline cache" is orthogonal to the Qt 5 era shader program disk cache: loading from both is supported transparently to the application. When QSG_RHI_PIPELINE_CACHE_SAVE is enabled, the disk cache will not be written to. Task-number: QTBUG-90398 Change-Id: I82d9a81e9dab39d3513a6aa7c6e1ff748a4ec6e5 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Query QRhi's desired Vulkan instance extensions instead of hardcodingLaszlo Agocs2021-01-211-2/+1
| | | | | Change-Id: I9859e1b2f786f1e578f3536bb3299c38a3a9a8b6 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Remove the qmake project filesFabian Kosmale2021-01-153-224/+0
| | | | | | | | | Remove all qmake project files, except for examples which are used to test that qmake continues to work. Change-Id: Ic4abb72dc2dcd75df7a797c56056b6b3c5fe62ac Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Fix broken compressed texturesJonas Karlsson2021-01-141-0/+2
| | | | | Change-Id: I1c81f1190386a9f7260a6e64862946f648cb6981 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Enable importing OpenGL textures for the GL_TEXTURE_EXTERNAL_OES targetLaszlo Agocs2021-01-144-9/+59
| | | | | | | | | Introduce a QSGOpenGLTexture::fromNativeExternalOES() function which internally passes in the flag QRhiTexture::ExternalOES when creating the wrapping QRhiTexture. Change-Id: I919e2539304d3aeaa6bc8e5953d96adc810abb12 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Fix accidentally removed initialization of m_sizeJonas Karlsson2021-01-081-1/+2
| | | | | | | Removed in dfb36c91b401308f74a5bc635f9a77ba2f9872a0 Change-Id: I56bd239f068e51950cbe8b5d3df6fea92156d7fe Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Use new QTextureFileData::getDataView methodJonas Karlsson2021-01-074-22/+16
| | | | | Change-Id: Ib675bfaa3fd818ef3e372bc2affd87e0d9d8f480 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Make software backend fallback automatic with vnc and similarLaszlo Agocs2021-01-051-0/+12
| | | | | | Change-Id: I3ce4494e9dddc9bf933793b354dc43494b3c84ef Fixes: QTBUG-89561 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Use the new, dedicated D3D surface type for QQuickWindowLaszlo Agocs2021-01-051-1/+1
| | | | | | | | | | This way any potential logic in the platform plugin that branches based on the surface type can now distinguish between OpenGL and D3D based windows. Fixes: QTBUG-89715 Change-Id: I01e9f8a525280982a9d4a18defb970e8a2fcc362 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Replace discouraged Q_MOVABLE_TYPE by Q_RELOCATABLE_TYPEAndreas Buhr2020-12-163-5/+5
| | | | | | | | | | | | | Q_MOVABLE_TYPE was conceived before C++ had move semantics. Now, with move semantics, its name is misleading. Q_RELOCATABLE_TYPE was introduced as a synonym to Q_MOVABLE_TYPE. Usage of Q_MOVABLE_TYPE is discouraged now. This patch replaces all usages of Q_MOVABLE_TYPE by Q_RELOCATABLE_TYPE in QtDeclarative. As the two are synonymous, this patch should have no impact on users. Task-number: QTBUG-86829 Change-Id: I5bb418483a3b06619abb4ff62cf0290a7b3bcd4f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QSGTexture: fix unused warningFabian Kosmale2020-12-071-0/+3
| | | | | | | | If the opengl feature is disabled, t is not used. This caused build failures due to -Werror=unused-parameter Change-Id: Ic39703dfb540d15295811484ad3793b639dc6b9c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Avoid unused parameter in QSGRhiSupport in certain configsLaszlo Agocs2020-12-071-0/+4
| | | | | | | Pick-to: 6.0 Fixes: QTBUG-88604 Change-Id: Id84faf648656993777f780e147917151ce05d3e0 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Use a single code path to load a QShader in QSGRhiShaderEffectNodeLaszlo Agocs2020-11-231-13/+4
| | | | | | Pick-to: 6.0 Change-Id: I8fec25df83768883896d195c09489aeb23abdafd Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Remove unused 'blob' member in ShaderEffect internalsLaszlo Agocs2020-11-231-1/+0
| | | | | | Pick-to: 6.0 Change-Id: I804f019f40dddce43646bf1cf91da26d4c3a4b5c Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Fix potentially missing endFrame() in threaded render loopLaszlo Agocs2020-11-171-0/+5
| | | | | | | | | | | | | | | | | Upon a QWindow destroy() and show() we can get to syncAndRenderer with sync not requested. It will be followed by a full sync+render request afterwards, but first we need to gracefully survive that somewhat obscure initial round (obscure because the window is fully usable, so we get a swapchain, but then we do not sync, so there is no QSGRenderer created) Exhibited by tst_qquickwindow::headless. It correctly showed a warning on all platforms and rhi backends, but was only fatal on macOS and Metal for some reason. Fixes: QTBUG-88513 Change-Id: I0396b648af0fd2bef2964b79a28359a7f806530d Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Silence unused warning in QSGRhiSupport in uncommon build configsLaszlo Agocs2020-11-091-4/+8
| | | | | | Fixes: QTBUG-88235 Change-Id: I47c20f46c77630c47a8bda7dfe6b080eafa8f4d7 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Doc: Fix documentation warnings for Qt QuickTopi Reinio2020-11-052-5/+12
| | | | | | | | | | | - Remove links to modules and examples that are not part of Qt 6. - Remove links to entities marked as \internal - Add missing enum value and QML property docs where it's trivial to do so. Task-number: QTBUG-88156 Change-Id: I10a1c7bcc5fe0e2354ea69eaf24930362edb7415 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Replace old Q_DECL statements with modern C++Allan Sandfeld Jensen2020-10-314-18/+18
| | | | | | | Since we depend on C++17 now, all of these can go. Change-Id: I0484fd4bb99e4367ec211c29146c316453729959 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Do grabs out of orderLaszlo Agocs2020-10-192-77/+79
| | | | | | | | | | | | | ...while extending the autotest to cover more complicated cases, such as grabbing again after show-hide and doing show-grab-hide-grab-show-grab. In fact some of these cases have not been working in Qt 5. Now the basic render loop is fixed up to support the all the combinations threaded does. Task-number: QTBUG-87399 Change-Id: Id01995bc3a2660b16cfb2f8bedc84becea0be1bb Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Promote suffixless names in GraphicsApiLaszlo Agocs2020-10-162-12/+21
| | | | | | | From API review. Change-Id: I3cda6f4b4e5a2e33356e7af4f7720e0b019b546d Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Have a depth buffer when doing the heavy offscreen readbackLaszlo Agocs2020-10-161-1/+8
| | | | | | | | | | | | | | The opaque pass will rely on it (by default at least). Not having a depth buffer will almost certainly lead to rendering errors, albeit silently since technically it's not an error not to have one. Just make sure there is one. The assumption is that the Z order problem mentioned in the comments in the referenced bug is caused by this. Task-number: QTBUG-87399 Change-Id: Ifbf5564848f17e7ce3498190d663c1ec693e86c9 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* doc: Group QSGTexture native interfacesTor Arne Vestbø2020-10-151-2/+13
| | | | | Change-Id: I1b305bf1b74e7e7a078d7bd4b1358d773f5d2580 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* doc: Don't overwrite native interface docsTor Arne Vestbø2020-10-151-16/+0
| | | | | | | | It doesn't look like qdoc can document the Quick specific namespace docs. Change-Id: Ic3eca2d0834c0a461f696762070e9f099e3e2641 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Declare native interfaces using helpersTor Arne Vestbø2020-10-153-36/+12
| | | | | Change-Id: I24c792fea1c5317466a155dcb3b050fac0f765b6 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* doc: Update native interface accessor wordingTor Arne Vestbø2020-10-151-2/+2
| | | | | Change-Id: I1c6e9a6f949fa44265f05ce3d461d151d7e3763f Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Add setFlags to QSGMaterialShader for symmetryLaszlo Agocs2020-10-142-0/+10
| | | | | | | From API review. Change-Id: Ib1b3280b83222bb1b370640c4f733554f60d8104 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Adapt to platform API renameTor Arne Vestbø2020-10-095-46/+46
| | | | | Change-Id: I1f2171e18ec3df71f7eaec1be0e0e0d1442a3860 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Follow rhi per-frame to per-pass flag changeLaszlo Agocs2020-10-053-7/+10
| | | | | Change-Id: I728cecd85807eb835703a0bb8bb4acdb1f2068ae Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Make sure beforeFrameBegin-afterFrameEnd always come in pairsLaszlo Agocs2020-10-021-1/+4
| | | | | | | | | | | | | | | With some platforms there is no valid window size yet when the render thread hits syncAndRender (of course, it does not actually render then). In this case we emitted an afterFrameEnd without a corresponding beforeFrameBegin. Just make sure both signal emissions are under the same condition. This is tested by the frameSignals case in tst_qquickwindow but since that's not exercised with the threaded render loop by the CI atm, the fail was not noticed. Change-Id: I300ffcc117daa4c6163ce15dd60ceffba659bd69 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Port from devicePixelRatioF() to devicePixelRatio()Morten Johan Sørvig2020-09-285-9/+9
| | | | | | | This ports all of QtDeclarative. Change-Id: Ie6eb4d96b4d49fbed1e8be514d03e331549cd712 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Map swap interval 0 to NoVSync with all the APIsLaszlo Agocs2020-09-232-2/+16
| | | | | | | | | What exactly this will cause is another question. But at least now the traditional OpenGL way of setting the QSurfaceFormat's swapInterval 0 will have an effect with the other APIs as well. Change-Id: I6d50952502a70e84828ed87347e2a948299f6f42 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Match new qHash() signatureEskil Abrahamsen Blomfeldt2020-09-175-7/+7
| | | | | | | | As documented in Qt 6 porting guide, qHash() should now also accept a size_t as seed in addition to returning it. Change-Id: I2b3ea26f631203468c071fa6ff65f95d82566132 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix additional warnings from usage of deprecated APIsVolker Hilsheimer2020-09-161-1/+1
| | | | | | | | | | Replace more QLibaryInfo::location with QLibraryInfo::path Replace old event accessors APIs, including relevant comments. Change-Id: Ie205fc93b6e1c0dfb3dca9100fbde417ab68fc9f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Output the thread and window in the render loop timing printsLaszlo Agocs2020-09-093-24/+55
| | | | | | | | Also fixes a plain bug in the basic render loop: using static to measure elapsed time is broken in a multi-window setup. Change-Id: Ie81fd9f4ec274f8ef095a8be7f280173f143de04 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* threaded renderloop: Remove unused variableUlf Hermann2020-09-081-1/+0
| | | | | Change-Id: Ib68ddb664cee1ef1530d8d0bfb59e8d97a7d2f27 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* threaded renderloop: Do not abort with sleep when no changes after syncLaszlo Agocs2020-09-071-17/+10
| | | | | | Task-number: QTBUG-86089 Change-Id: If1b3369d49b5088b78f683d7512b156af3765bce Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Render loops: ignore update reqs during the main polish stepLaszlo Agocs2020-09-073-0/+20
| | | | | | | | | | | | The classic example is Shape, which needs to dirty the QQuickItem in updatePolish() in order to get it picked up in the synchronize step. That part is fine, but we do not want maybeUpdate() to issue a requestUpdate() then since we are effectively in progress of doing an update, so having another full round of polish/sync/render is a waste. Task-number: QTBUG-86089 Change-Id: Ie41563b34da17e7134631791ed024b31e87e21e3 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Document internally the animation handling in the threaded loopLaszlo Agocs2020-09-072-13/+44
| | | | | | | | | | Also rename the incomprehensibly named maybePostPolishRequest(), because it is just a call to QWindow::requestUpdate() nowadays. postUpdateRequest() makes it clear what it is. Task-number: QTBUG-86089 Change-Id: I4c9ca1336c26d163772368067eda0f1ef84b9d97 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Fix qt.scenegraph.time.renderloop time logjiu2020-08-312-11/+5
| | | | | | Fixes: QTBUG-86209 Change-Id: Iea09d22f09df3b50ebdf55d1c72affb5603bdcda Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Fix format specifier error after sizetype changeFabian Kosmale2020-08-311-2/+2
| | | | | Change-Id: I8cf053270a7d2c17cb3c4313ff129610aeded59a Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Doc: Capitalize "GUI" correctlySze Howe Koh2020-08-301-3/+3
| | | | | | Pick-to: 5.15 Change-Id: I2230e2dcb7bc2497b5dbe71a22c21d84176b5e57 Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
* Do not incorrectly leave srcAlpha and dstAlpha set to the defaultsLaszlo Agocs2020-08-281-2/+2
| | | | | | | | | | | | TargetBlend defaults to One, OneMinusSrcAlpha, One, OneMinusSrcAlpha when it comes to srcColor, dstColor, srcAlpha, dstAlpha. When setting a blending different than our standard premultiplied alpha, srcAlpha and dstAlpha must be set too. Otherwise what we get is something that is not equivalent to Qt 5's glBlendFunc() call. Change-Id: Ied03669edae9dcf3ec4c9c5b560195511db8d00b Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Fix a bunch of compiler warningsLars Knoll2020-08-283-2/+3
| | | | | | Taks-number: QTBUG-86234 Change-Id: I4c945edecdbe55bc5587c18599d49dfb82ade1eb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add renderTypeQuality property to Text elementEskil Abrahamsen Blomfeldt2020-08-1714-30/+60
| | | | | | | | | | | | | | | | | | | | | For large scale text, the default distance field size gives artifacts on certain font features. We already have an environment variable which overrides this on an application level, but this will cause all distance fields to be rendered at the high resolution, whereas you may just want it for one particular text field. Since this becomes an especially important use case now that we can embed the text fields in a 3D scene, we add a property which can be used to tweak the base font size used for generating the distance fields. [ChangeLog][QtQuick][Text] Added "renderTypeQuality" property, which can be used in cases of very large fonts, where Qt's font rasterization may show some rendering artifacts when using the default quality. Fixes: QTBUG-84696 Change-Id: Ie4205e82cf441562dcc65a8e432a941a3baeddf3 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Do not create depth/stencil buffer when the env var says soLaszlo Agocs2020-08-165-22/+53
| | | | | | | | | | | | | | | | | | | | | | | Both for the swapchain and more importantly, layers. The latter was never implemented, not in Qt 5 with OpenGL either, and it becomes a problem for resource-limited use cases because QSG_NO_DEPTH_BUFFER still creates depth/stencil attachments for layers even though the 2D rendering has no use for those then. Clarify the QQuickGraphicsConfiguration docs as well. The story is fairly convoluted, because the useDepthFor2D flag one can set from C++ is not 100% the same as the env.var. (and it really should not be) The flag is about relying on depth testing in 2D (and so enabling the potentially more efficient opaque batches), but it does not prevent adding a View3D or other stuff that requires a depth buffer. The env.var on the other hand does both: it (depending on the platform) disables depth (and often stencil) buffers, thus using fewer resources, and also triggers the depth-less 2D rendering path (alpha batches only). But that is not always compatible with 3D then (like an offscren View3D will work, other modes may not) Change-Id: I5ac1ce154fe78a3ec8bd1a698c1c0b944ce8077e Reviewed-by: Andy Nichols <andy.nichols@qt.io>