aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/CMakeLists.txt
Commit message (Collapse)AuthorAgeFilesLines
* CMake: Change Quick.Window into a pure Qml moduleAlexandru Croitor2020-11-121-7/+0
| | | | | | | | | | | This fixes apps using Qt.Window with static Qt builds when deployed to a machine that doesn't have Qt installed. This will need a counterpart fix in qmake land. Change-Id: Ife11f9d1f1826e1188ef3dc3933af2f243860b6f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* CMake: Regenerate projects to use new qt_internal_ APIAlexandru Croitor2020-10-061-32/+32
| | | | | | | | Modify special case locations to use the new API as well. Task-number: QTBUG-86815 Change-Id: I3b964e3baf0cc7040830156dac30358ea1152801 Reviewed-by: Cristian Adam <cristian.adam@qt.io>
* Quick: Make sure the module initialization runs in static buildsUlf Hermann2020-08-101-1/+0
| | | | | | | | | | | | We need to keep a reference to the module initialization function somewhere in order to prevent the linker from removing it. In order to avoid further littering of the namespace, the QQuick_initializeProviders function is transformed to cover all of the initialization. Task-number: QTBUG-85693 Change-Id: Ie93e5abd1dfb5a425b87c70d8ec6327bb68880cb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Add type safe native texture accessorsLaszlo Agocs2020-08-031-0/+6
| | | | | | | | Following the pattern from QtGui. Task-number: QTBUG-85239 Change-Id: I07b4456028d0f45223ad10e55ce65f423bab6a9b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* CMake: Regenerate projectsAlexandru Croitor2020-07-091-6/+6
| | | | | | | | | We need the qt_add_tool changes to successfully configure qemu builds. The rest of the changes are just to be in sync with the .pro files. Change-Id: I7bcc08ac58f57a5761aedef09761428c55235289 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Make the qtquick and qtqml plugins optionalUlf Hermann2020-07-021-1/+1
| | | | | | | | | We can do the initialization and de-initialization as constructor and destructor functions. Then we don't need to load the plugins. Task-number: QTBUG-84639 Change-Id: I2aeeee7e8d028555e3af91e93518c2c2afd70dbb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Move resetOpenGLState out of QQFBOGiuseppe D'Angelo2020-06-231-0/+1
| | | | | | | | | | | | | QQFBO is not the only client of resetOpenGLState. Although in theory third-party GL code that integrates with QtQuick should reset its state, in practice it doesn't. By making resetOpenGLState only available into QQFBO, now we're blocking a Qt5->6 upgrade path. There's also no compelling reason for this function to be in QQFBO at all, so move it out to as a free function in a ad-hoc new namespace. Change-Id: Ic8e5c7e244db37a5b6257d516e6aea3a9db44898 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Make it possible to specify device extensions in a future proof mannerLaszlo Agocs2020-06-191-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Clean up QT_CONFIG(opengl)Paul Olav Tvete2020-06-171-58/+34
| | | | | | | | | | 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>
* Remove QtQuick.Window pluginUlf Hermann2020-06-151-0/+16
| | | | | | | | | | | | | | | | | We move all the types into QtQuick itself and retain QtQuick.Window only as alias to QtQuick. This requires support for qmldirs that consist of only an import statement. [ChangeLog][QtQuick][Important Behavior Changes] The contents of the QtQuick.Window QML module have been moved into the QtQuick module. QtQuick.Window is merely and alias for QtQuick now. An explicit import of QtQuick will override this alias. Therefore, if you import QtQuick with a different version than QtQuick.Window, you will get the QtQuick.Window types of the version given in the QtQuick import now. Task-number: QTBUG-84639 Change-Id: Ia82afab0ac2faba70cfdaf53dc8dfe4261e1113f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Remove the unused shadersourcebuilderLaszlo Agocs2020-06-101-1/+0
| | | | | | Task-number: QTBUG-84623 Change-Id: I994f1078399788566108e8605213f18e0ba722f5 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Remove QSGDepthStencilBufferPaul Olav Tvete2020-06-101-1/+0
| | | | | | Task-number: QTBUG-84623 Change-Id: Ia08376a8547110993bd39bcff17a49e059d40fde Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Remove QQuickGenericShaderEffectPaul Olav Tvete2020-06-101-1/+0
| | | | | | | | | | | | Keep it as an internal class for now, with the name QQuickShaderEffectImpl, and move it to qquickshadereffect.cpp. In the long term, we want to get rid of the extra QObject, but that requires careful untangling of the connections and the timing of cleanup at destruction. Task-number: QTBUG-83977 Change-Id: I6513bd0d8fc8522a15049b70ab43fc222088e7d0 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Remove OpenGL dependency from QSGTextureLaszlo Agocs2020-06-081-1/+0
| | | | | | | | | | | | | | | | | The QSGTexture API is now clean, the OpenGL-specific functions are removed. Docs are to be updated in a separate patch. QSGPlainTexture, and a number of texture related places have to follow suit. The OpenGL atlas texture implementation is now removed. Task-number: QTBUG-84717 Task-number: QTBUG-84623 Change-Id: I1aab3b8b9145bb74ad39ef836ce540fc851292c5 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Remove QQuickOpenGLShaderEffectPaul Olav Tvete2020-06-041-6/+0
| | | | | | | | | This also removes QQuickUniformAnimator, which is not yet ported to RHI (QTBUG-83976) Task-number: QTBUG-83977 Change-Id: I3e656e6817ac991371b7f6557f050e122635d279 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Remove unused leftover GLSL source filesLaszlo Agocs2020-06-041-6/+0
| | | | | | Task-number: QTBUG-84623 Change-Id: I8af2cbac253c45b31bb847f312d6cf559dba8a90 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Remove shader rewriter from the Quick source treeLaszlo Agocs2020-06-041-1/+0
| | | | | | | | | | | Lives in Shader Tools now. Also removes an unused include. The shader source builder cannot be removed just yet, but will follow soon. Task-number: QTBUG-84623 Change-Id: I95c61583c35b4da1d39c35a3573d747287270d93 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Remove winrtOliver Wolff2020-06-041-1/+1
| | | | | | | | | Task-number: QTBUG-84434 Change-Id: If8f57f00726868a3540c877d07fca761618e4f08 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Remove layer and dist.field glyph cache OpenGL versionsLaszlo Agocs2020-06-021-2/+0
| | | | | | Task-number: QTBUG-79268 Change-Id: I16123a8a49d17e3ffdd5cbcfbebcd8bfa46e648c Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Remove the direct OpenGL code from the batch rendererLaszlo Agocs2020-06-021-1/+0
| | | | | | | Task-number: QTBUG-84026 Task-number: QTBUG-79268 Change-Id: Ie2e738891843d8d4e368fbf5e4aa07cc03236724 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Make QSGMaterialRhiShader become QSGMaterialShaderLaszlo Agocs2020-06-021-67/+0
| | | | | | | | | | | | | | | | After a symbiotic relationship in Qt 5.14 and 5.15, it is time for QSGMaterialRhiShader to devour its older sibling and take its place. This makes the direct OpenGL rendering path disfunctional. All QSGMaterial Qt 6 TODOs are solved, the API is clean and straightforward again: a QSGMaterial creates a QSGMaterialShader, no special flags and options needed. (it's just that QSGMaterialShader now has a slightly different API) Task-number: QTBUG-79268 Task-number: QTBUG-82997 Change-Id: I545ca8d796c5535e81957c706e7832133be15b7d Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* CMake: Regenerate qtdeclarative/srcAlexandru Croitor2020-05-291-1/+1
| | | | | | | | | | Includes - renaming of internal plugin api call - generation of QT_QMLTYPES_FILENAME - addition of a few TARGET_DESCRIPTION Change-Id: I72b5647b8c16af9945795ead62a075322b6bb2f6 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Remove OpenGLInfoLaszlo Agocs2020-05-201-1/+0
| | | | | | | Deprecated since 5.8. Replaced by GraphicsInfo. Change-Id: Ia8133b3c14fb57ed8ba2c40488f485f3c00ee036 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Fix qmltypes file names for qmltypes built from librariesUlf Hermann2020-05-191-0/+1
| | | | | | | We still expect those to be called "plugins.qmltypes" in a few places. Change-Id: I751b2bb9ca264fb7998d11c2f969ee46b32fb2cb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Remove the 'windows' render loopLaszlo Agocs2020-05-041-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | For compatibility, QSG_RENDER_LOOP=windows shows a warning and uses basic. For OpenGL proper, threaded is the default on Windows since Qt 5.5, so this will not affect there in any way. By default the windows loop was only used with ANGLE, or a non-standard opengl32 implementation like the Mesa llvmpipe shipped with the pre-built Qt packages. (and only on Windows, as the name suggests, even though the implementation of this loop is not tied to Windows in any way) For these we default to basic now. This will make no difference in practice: The windows render loop's value is that it takes the custom animation driver (advanced per frame, assuming that vsync-based throttling is active) approach from the threaded loop, while behaving like basic otherwise, thus providing smoother animations compared to basic, in theory. But due to its relatively little use (not the default since 5.5), ANGLE being removed in the near future, and not making much sense for the software rasterizer cases (those will have bigger problems than smoothly advancing animations, often providing no vsync, so they are better off with basic anyways), it makes no sense to invest into adding QRhi support for this loop too. Task-number: QTBUG-78578 Task-number: QTBUG-82997 Change-Id: I8ccd2e5e375799df5bb5018df247aa5b8197032a Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Allow redirecting QRhi-based rendering via QQuickRenderControlLaszlo Agocs2020-04-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement the Qt 6 TODO for using an externally-provided render target when rendering the scene via QRhi. And say hello to QQuickRenderTarget. This class exists to allow potentially extending later what a "render target" consists of. Instead of hard-coding taking a single void * in the setRenderTarget() function, it takes a (implicitly shared, d-pointered) QQuickRenderTarget, which in turn can be created via static factory functions - of which new ones can be added later on. The new version of QQuickWindow::setRenderTarget() takes a QQuickRenderTarget. QQuickRenderControl gets a new initialize() variant, and a few extra functions (beginFrame(), endFrame()). This allows it to, by using QSGRhiSupport internally, create a QRhi under the hood. As a bonus, this also fixes an existing scenegraph resource leak when destroying the QQuickRenderControl. The qquickrendercontrol autotest is extended, with a QRhi-based test case that is executed for all of the QRhi backends that succeed to initialize. This is the internal verification. In addition, there is a Vulkan-based one that creates its own VkDevice, VkImage, and friends, and then uses Qt Quick with the same Vulkan device, targeting the VkImage. This test verifies the typical application use case. (sadly, life is too short to waste it on writing Vulkan boilerplate for an on-screen version of this, but we have the D3D11 example instead) What QQuickRenderControl loses, when used in combination with QRhi, is the grab() function. This never made much sense as a public API: QQuickWindow::grabWindow() call this when the window is associated with a rendercontrol, so as a public API QQuickRenderControl::grab() is redundant, because one gets the same result via the standard QQuickWindow API. It is now made private. More importantly, reading back the content is no longer supported, unless the 'software' backend is in use. The reasoning here is that, if the client of the API manages and provides the render target (as abstracted by QQuickRenderTarget), it is then expected to be capable of reading back the content in whatever way it sees fit, because it owns and manages the resource (e.g. the texture) in the first place. Providing fragile convenience functions for this is not reasonable anymore, and was questionable even with OpenGL, given that it is not future proof - what if the target is suddenly a floating point texture, for instance? The software backend case makes sense because that relies on private APIs - and has no render target concept either - so there the same cannot be achieved by applications by relying on public APIs only. Another new class is QQuickGraphicsDevice. This is very similar to QQuickRenderTarget, it is a simple container capable of holding a set of of native objects, mostly in the form of void*s, with future extensibility thanks to the static factory functions. (examples of native object sets would be a ID3D11Device + ID3D11DeviceContext, or a QOpenGLContext, or a MTLDevice + MTLCommandQueue, or a number of Vulkan device-related objects, etc.) This allows one to specify that the QRhi created under the hood (either by QQuickRenderControl or by the render loop) should use an existing graphics device (i.e. it is basically a public wrapper for values that go into a QRhi*InitParams under the hood). QQuickRenderTarget and QQuickGraphicsDevice are both demonstrated in a new example: rendercontrol_d3d11. We choose D3D11 because it is reasonably simple to set up a renderer with a window, and, because there is known user demand for Qt Quick - external D3D engine interop. Passing in the custom engine's own ID3D11Device and ID3D11DeviceContext is essential: the texture (ID3D11Texture2D) Qt Quick is targeting would not be usable if Qt Quick's QRhi was using a different ID3D11Device. Task-number: QTBUG-78595 Change-Id: I5dfe7f6cf1540daffc2f11136be114a08e87202b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Remove QSGSimpleMaterialLaszlo Agocs2020-04-071-1/+0
| | | | | | | | | | And port the graph example to QSGMaterial and the RHI. We will not anymore add a direct OpenGL path (that would mean using QSGMaterialShader) for the example because the upcoming purge renders that useless anyway. Task-number: QTBUG-82988 Change-Id: I137575ed5df45b6bfc34a11d73dc5100945081c5 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Regenerate CMake project file after QSGEngine removalLaszlo Agocs2020-04-071-6/+7
| | | | | Change-Id: Id7a29a989757e211b3d4ba3779a3e52510fba1ff Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Introduce new mechanism to manage palette functionality in QMLVitaly Fanaskov2020-03-161-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Main goals of these changes: 1) Add an ability to work with disabled and inactive palettes from QML 2) Eliminate massive code duplication in qtquickcontrols2 module 3) Provide easily extensible architecture for this piece of functionality Architectural part. Palette It was decided to not change existing QPalette, but add thin wrappers around it to provide all required functionality. These wrappers are highly coupled with QPalette class because of using some enum values from it. There are two new classes QQuickPalette and QQuickColorGroup. QQuickPalette class inherits QQuickColorGroup class and represents Active/All color group. QQuickPalette also provides an access to three color groups: Active, Inactive, and Disabled. In order to access colors the special class QQuickPaletteColorProvider is used. This is a wrapper around QPalette that provides some convenience functions. Interface The private property "palette" should be exposed. Implementation All private parts of classes that implement QQuickAbstractPaletteProvider have to inherit QQuickPaletteProviderPrivateBase class. This template class implement all functionality: create palette, resolve dependencies, connect objects etc. This is important to mention that related data is lazily allocatable on demand only. Hence, there is no memory overhead for regular items. Change-Id: I911424b730451b1ad47f68fd8007953b66eddb28 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* CMake: Regenerate and adapt to merge from devwip/cmakeAlexandru Croitor2020-03-121-6/+4
| | | | | | Change-Id: If8daa6152a563d4309d7342414780ef75b9f5589 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
* Regenerate qtdeclarativeAlexandru Croitor2020-02-121-1/+1
| | | | | | | Change-Id: I48d7fd306f3d1b161a8e73029282ee591b1ef612 Reviewed-by: Leander Beernaert <leander.beernaert@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Liang Qi <liang.qi@qt.io>
* Regenerate projects to handle private deps correctlyAlexandru Croitor2020-02-051-0/+9
| | | | | | Change-Id: Ifcbab0407e93dfc35d0459d7d29dee2cd3508a86 Reviewed-by: Leander Beernaert <leander.beernaert@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Post-merge fixesAlexandru Croitor2020-01-301-4/+9
| | | | | Change-Id: I2350df5368ee34d6c7072d456806e518ce533839 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QML Type Registrar changesLeander Beernaert2020-01-241-0/+10
| | | | | Change-Id: I36254a688f575e6c7f717ee4019e4d49f73a60f7 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Post merge fixesLeander Beernaert2020-01-241-2/+9
| | | | | Change-Id: Ie8aca222809f35174fb6c6488832ec3ff5432272 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Regenerate all projects with new CMake API versionAlexandru Croitor2019-11-151-33/+33
| | | | | | Change-Id: Ie0db35f674137c229eaf049616f38f8e818f7092 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Regenerate projectsAlexandru Croitor2019-11-141-3/+0
| | | | | | Change-Id: I38044c382e4d84b5865a19cdd04cc8922bd72a77 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Regenerate required projects after dev -> wip/cmake mergeAlexandru Croitor2019-10-141-2/+2
| | | | | Change-Id: Ic5f1909731ec11b4fb6bc8823506d272c529ecfb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Regenerate the necessary bits of qtdeclarative after wip/qt6 mergeAlexandru Croitor2019-10-141-0/+1
| | | | | Change-Id: If58c29baf7fa3c3591968fca6d11f7649308dbf9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Regenerate qtdeclarative before mergeAlexandru Croitor2019-10-111-2/+1
| | | | | | Change-Id: I5710110679220c4e22bc7f8b540f18a51b735ddf Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Qt CMake Build Bot
* Merge remote-tracking branch 'origin/wip/qt6' into wip/cmakeAlexandru Croitor2019-08-151-129/+155
| | | | Change-Id: I6f2152aeecaeb8e63fdbc1cdf1444132a054b6f5
* Merge remote-tracking branch 'origin/wip/qt6' into wip/cmakeAlexandru Croitor2019-07-111-8/+70
| | | | Change-Id: I2963c1209316fb6755f572969f368970450d7991
* More porting of declarative modulesAlexandru Croitor2019-06-081-0/+2
| | | | | Change-Id: Ibe6d87998af1209518af87117b79778136110786 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Initial CMake portAlexandru Croitor2019-06-031-0/+500
Crude port of QtQml, QtQmlModels, QtQuick and a few tests and a few examples. Task-number: QTBUG-74136 Change-Id: I5de4d8215b33d1a4a72c2c0e7951e4b384f27e3e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>