aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/adaptations/software
Commit message (Collapse)AuthorAgeFilesLines
* Avoid stale QSGTexture pointer accessesRomain Pokrzywka2021-05-041-1/+3
| | | | | | | | | | | | | | On rare occasions, it seems to be possible for the texture to be used after deletion, which results in crashes in pixmap() after casting. Rather than storing a raw pointer, wrap the texture in QPointer to avoid the stale pointer accesses. Task-number: QTBUG-80415 Change-Id: Ia0ee556f4a3a4eee777ca14065635f4bc5f90da2 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 1c010b202506bb7eb0f0e24ab37ad50e319abada) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* 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>
* Add renderTypeQuality property to Text elementEskil Abrahamsen Blomfeldt2020-08-172-2/+3
| | | | | | | | | | | | | | | | | | | | | 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>
* Add type safe native texture accessorsLaszlo Agocs2020-08-031-1/+1
| | | | | | | | Following the pattern from QtGui. Task-number: QTBUG-85239 Change-Id: I07b4456028d0f45223ad10e55ce65f423bab6a9b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Add ; to Q_UNUSED and UNUSED_PARAMLars Schmertmann2020-06-261-1/+1
| | | | | | | | | 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>
* 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>
* Move QSGRenderContext::RenderMode to QSGRendererInterfaceEskil Abrahamsen Blomfeldt2020-06-112-2/+2
| | | | | | | | | 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>
* Add perspective 3D plane render modeLaszlo Agocs2020-06-092-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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 customRenderStage from QQuickWindowPrivateLaszlo Agocs2020-06-081-2/+2
| | | | | | | | | | | | This is not maintained and probably not compatible with QRhi-based rendering anyways. Remove it for now. Task-number: QTBUG-84718 Task-number: QTBUG-84623 Change-Id: I423b45e247c751c94f1407cfb53f056d6ea7a10c Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Remove OpenGL dependency from QSGTextureLaszlo Agocs2020-06-084-23/+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 OpenGL FBO references in QQuickWindow and the renderer APILaszlo Agocs2020-06-026-19/+9
| | | | | | | | | | | | | | setRenderTarget(GLuint), setRenderTarget(QQuickFramebufferObject*), renderScene(uint fboId), QSGBindable, etc. are now removed. This leads to a simpler and cleaner interface in QSGAbstractRenderer and QSGRenderer because the somewhat weird renderScene() overloading (where one version is virtual, while the other isn't) is now avoided, with just a single renderScene() virtual now. Task-number: QTBUG-84040 Change-Id: I0ce5a159a557688bdfcb7cacf8a9d12d6fd970d1 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Fix a clipping bug in software-rendered textEskil Abrahamsen Blomfeldt2020-05-271-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | ac179e235ba0c01fff6dd5f4ad2cc9696fe78822 fixed a clipping issue with software rendering and text by using the actual bounding rect of the alpha map (which may be extended to allow for margins around the glyph). But it did not account for the margins on the top and left sides of the glyph, causing QTBUG-84042. By a coincidence, this issue was not reproducible with the DirectWrite engine in Qt 5.15 at the time because of 318a991907b6c08f52786160bafea1e30d3ad9bd in Qt Base, which baked the margins into the top and left positions of the returned bounding rect. But this is not what the other font engines are doing, and caused issues where the margin would be accounted for twice in the output. So 318a991907b6c08f52786160bafea1e30d3ad9bd was reverted. This change shifts the bounding rect by the margins (if any), avoiding clipping on the left and top sides. Task-number: QTBUG-80180 Fixes: QTBUG-84042 Pick-to: 5.15 Change-Id: I942f05f0e8c8eb8c5b3071a73406e3e744b7d5a0 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Adjust QSGTexture comparisonKey typeLaszlo Agocs2020-05-274-4/+4
| | | | | | | | | | | | | | | | | | | | | The original choice was int, simply following textureId(). This was later deemed insufficient: instead of a GLuint, the value is now often a 64-bit value (on 64 bit systems), based on a pointer, since the identity of a texture in the RHI world is the QRhiTexture* itself. In a custom texture implementation it is likely that the value here is the value of a native object handle, either a pointer or some 32 or 64 bit integer. Inspired by the recent QSGTexture::NativeTexture struct change (void* -> quint64), switch to a qint64 which is big enough to hold all these without truncation. We choose a signed value here, in order to allow for the following pattern that is widespread in material compare() implementations: if (qint64 diff = m_texture->comparisonKey() - other->texture()->comparisonKey()) return diff; Fixes: QTBUG-83769 Change-Id: I8bdae8cd835282358ded53b3703142b8f26e4400 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-04-171-16/+27
|\ | | | | | | | | | | | | | | Conflicts: src/qmltyperegistrar/qmltypesclassdescription.cpp src/quick/items/qquickrendertarget.h Change-Id: I9e24d2252a35b8e74af89ad72af796df658167ca
| * Fix clipping of text with software backendEskil Abrahamsen Blomfeldt2020-04-161-16/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QRawFont::boundingRect() returns the bounding rect of the glyph as reported by the system. On Windows, this unfortunately does not always include the antialiasing on the edges when the ClearType renderer is used (probably for compatibility reasons, since it matches the rendered size of the 8-bit alphamap.) Therefore, we have traditionally been applying a margin around rendering for 32-bit alpha maps, since there is no way to know for certain the exact rendered size with ClearType. It is tempting to expose the alphaMapBoundingBox through QRawFont (either replace the implementation of boundingRect() or add a new function) to avoid using private APIs here, but since it is a work-around and we hope the need for it will go away when we start using DirectWrite instead, it is better to keep it locked away for now. It is also too late to do such a change in Qt 5.15, so we can revisit the idea for Qt 6.x. [ChangeLog][Software Renderer] Fixed a bug where the last column of pixels in text would sometimes be clipped away. Fixes: QTBUG-80180 Change-Id: Ic611a80aef3e0e9b9cee0f3a22c9e24f717d5dfe Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | Make comparisonKey() a pure virtual in QSGTextureLaszlo Agocs2020-04-164-25/+7
| | | | | | | | | | | | | | | | | | | | In Qt 5.14 this was a virtual in QSGTexturePrivate due to having had to maintain binary compatibility. In 6.0 it becomes a pure virtual in QSGTexture. Task-number: QTBUG-82997 Change-Id: I26a42169b071fe8d413f5c89ef45850fa7222006 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | Implement the todo for adding anisotropy virtuals to QSGImageNodeLaszlo Agocs2020-04-141-0/+3
| | | | | | | | | | | | Task-number: QTBUG-82997 Change-Id: I236f5dadd8214ed1008ef4a7c9955c6f4c6b43cf Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | Introduce new mechanism to manage palette functionality in QMLVitaly Fanaskov2020-03-163-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Remove D3D12 scenegraph backendLaszlo Agocs2020-01-061-1/+1
| | | | | | | | | | | | Task-number: QTBUG-79925 Change-Id: Id3f0a688f47efaf1653c85d23ef49618ed09c931 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2019-12-142-0/+33
|\| | | | | | | Change-Id: Id41f415227f07bb9da8fafc676f4d22ce75544e3
| * Add trace points for Qt Quick Scene GraphMilian Wolff2019-12-132-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | This adds Q_TRACE tracepoints for all places that are covered by the QML profiler's QSG integration. The big advantage over the existing framework is that these trace points can be visualized next to other system tracepoints to correlate the data better with load and resource consumption induced by other processes on the system. Change-Id: I0c5b70a0870f0b89e4533c351c099e13fd18a55f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2019-12-123-4/+4
|\| | | | | | | | | | | | | Conflicts: src/qml/types/qqmlbind.cpp Change-Id: Ib992d1a7ac6c1a96d39819be6f23955dc31b44b2
| * Avoid initializing QFlags with 0 or nullptr in further casesFriedemann Kleint2019-11-253-4/+4
| | | | | | | | | | | | | | Amends 744e77b841878fb017c0f2d60607090008f28180. Change-Id: I16e37aaf503eb62f67fca0e48be4c92c4a72ae46 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Readd renderableNodes API to softwarerendererAnton Kreuzkamp2019-12-032-0/+7
|/ | | | | | | | | | Commit 7d983077 removed the getter for the renderableNodes that was added with commit ce831a4b, as it "appears unused". It is though used by GammaRay. This commit readds the API, this time including a short comment about the usage by GammaRay. Change-Id: I06d107a959c587f49389ac356a60ab7ffd79d00d Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Merge remote-tracking branch 'origin/5.13' into 5.14Liang Qi2019-10-102-1/+7
|\ | | | | | | | | | | | | | | Conflicts: src/plugins/scenegraph/openvg/qsgopenvgcontext.cpp tests/auto/quick/qquickpathview/tst_qquickpathview.cpp Change-Id: I117c8d62b21800329d1035021d312d9924f83a1b
| * Fix sprites leaking textures in SW and OpenVG backendsEirik Aavitsland2019-10-072-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a QSGSpriteNode is initialized with a texture, it is supposed to take ownership of the texture and delete it when the node gets deleted. In the default backend, this happens automatically: The texture gets assigned to the node's QSGMaterial object, and the node has set the OwnsMaterial flag, and so the inherited QSGGeometry destructor takes care of deleting the material, which deletes the texture. However, the Software and OpenVG backends do not have material objects, so the above mechanism does not apply, and so the texture objects are leaked. Fix by deleting the texture object directly from the SoftwareSpriteNode and OpenVGSpriteNode destructors. Fixes: QTBUG-77019 Change-Id: I503d704f66593ba6a36c969db80f74f715382b6b Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | QQuickWindow: Don't leak the animation controllerUlf Hermann2019-10-022-3/+4
| | | | | | | | | | | | | | | | | | There are ways to close the window without hitting the code paths in the render loops that delete the animation controller. Probably if no frame was ever rendered. Change-Id: If3e9d2051525c4ff50eda19084c967578fe4f4b0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Remove an unused event type in the threaded render loopLaszlo Agocs2019-08-221-11/+0
| | | | | | | | | | Change-Id: I505ba09d6a0144f18bf29cda2f549c8b69ada1a5 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* | Add the graphics api independent scenegraph portLaszlo Agocs2019-07-048-6/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Opt in via environment variables: QSG_RHI=1 -> enable using QRhi instead of GL QSG_RHI_BACKEND -> set to vulkan, metal, d3d11, gl to override the default (the default is d3d11 on Windows, metal on Mac, gl elsewhere) Or force a given rhi backend via the existing QQuickWindow::setSceneGraphBackend(). Otherwise the default behavior is the same as before, the rhi code path is never active by default. -no-opengl builds are supported in the sense that they work and default to the software backend. However, the rhi code path cannot currently be used in such builds, even though QRhi from qtbase is fully functional with Vulkan, D3D, or Metal even when qtbase was configured with -no-opengl. This cannot be utilized by Quick atm due to OpenGL usage being all over the place in the sources corresponding to the default backend, and those host the rhi code path as well. This will be cleaned up hopefully in Qt 6, with the removal all direct OpenGL usage. Other env.vars.: QSG_RHI_DEBUG_LAYER=1 -> enable D3D debug or Vulkan validation layer (assuming the system is set up for this) QSG_RHI_SHADEREFFECT_DEBUG=1 -> print stuff from ShaderEffect QSG_SAMPLES=1,2,4,... -> MSAA sample count (but QSurfaceFormat works too) QT_D3D_ADAPTER_INDEX=0,1,... -> D3D adapter index QT_VK_PHYSICAL_DEVICE_INDEX=0,1,... -> Vulkan physical device index QSG_RHI_UINT32_INDEX=1 -> always use uint index data (both merged/unmerged, convert when needed - with some rhi backends this is implicit) QSG_RENDER_LOOP -> to override the render loop as usual. The default with RHI is threaded for Metal, threaded for Vulkan on Windows, basic for Vulkan on Linux and Android (to be checked later), while the existing rules apply for OpenGL. Not supported when running with QRhi: - particles - compressed atlases (though this is transparent to the apps) - QSGRenderNode - QQuickRenderControl - QQuickFramebufferObject - certain QQuickWindow functionality that depends directly on OpenGL - anisotropic filtering for textures - native text may lack some gamma correction - QSGEngine applicability unclear - some QML profiler logs may be incorrect or irrelevant Change-Id: I7822e99ad79e342e4166275da6e9e66498d76521 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-06-204-6/+9
|\| | | | | | | Change-Id: I71b1212085da85f03f4ff0e3ee5cb56a401998ae
| * Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-06-194-6/+9
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/imports/sharedimage/qsharedimageloader.cpp src/quick/items/qquickitemviewfxitem_p_p.h Change-Id: I12ce7c32788f4a394188a934e689b4ebac78138b
| | * Software Adaptation: Invalidate on dpr changeMorten Johan Sørvig2019-06-174-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | We need to repaint everything on devicePixelRatio change, like we do on size change. Task-number: QTBUG-66810 Change-Id: I6b2c2ae92335a0aca731a4b0e7621cf7d08881e3 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | Replace remaining QLinkedLists with QVectorMarc Mutz2019-06-062-8/+1
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In both cases, the container holds pointers, so stability of references can be ruled out as a cause for using linked lists. Both containers are also only ever appended to and then consumed, so there are no insertions in the middle that a linked list may speed up. Last, it also cannot be the sheer size of the container, as QLinkedList has 3x the memory consumption of a vector. We conclude that none of the things that make QLinkedList a container of choice apply here, so we can use a QVector instead. In QSGAbstractSoftwareRenderer, there was an accessor for the linked list member, but it appears unused, so was removed. Change-Id: I273f89c0d1267444019088371a5eb0b3b32a763c Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* / Fix warning about deprecated QPainter::setMatrix in QSGSoftwareInternalImageNodeFriedemann Kleint2019-02-051-2/+1
|/ | | | | | | | | | | Replace by QTransform, fixing: scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp: In member function ‘void QSGSoftwareInternalImageNode::paint(QPainter*)’: scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp:477:43: warning: ‘void QPainter::setMatrix(const QMatrix&, bool)’ is deprecated: Use setTransform() instead [-Wdeprecated-declarations] painter->setMatrix(transform, true); Change-Id: I6e4047ee9c1a49ea6e0a445c8de281e049823902 Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* Merge remote-tracking branch 'origin/5.11' into 5.12Qt Forward Merge Bot2018-12-112-3/+7
|\ | | | | | | Change-Id: If18e582a7210dae046426d97af530ab7ef47ddf4
| * Fix leaking textures and animation resources by software backendKirill Burtsev2018-11-142-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | QQuickStyleItem1::updatePaintNode assumes every instance of QSGNinePathNode (QSGSoftwareNinePatchNode for software backend) to own new texture object on setTexture. Instance of QQuickAnimationController is also assumed to be deleted by render loop on window destroy. Fixes: QTBUG-69290 Change-Id: Ibd22229108c986c1c115600280482cea01bf4160 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | Disable antialiased clipping when painting imagesAllan Sandfeld Jensen2018-11-282-10/+8
| | | | | | | | | | | | | | | | It shouldn't be needed and produces tiling gaps Change-Id: I3c7bbc91e5e618bdb111ddf18412acac253f2c6e Task-number: QTBUG-71322 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | QSGSoftwareInternalRectangleNode: Remove unnecessary loop iterationsMikhail Svetkin2018-11-271-1/+1
| | | | | | | | | | Change-Id: I95ae475cfbab432e3ac4d49384d4861185d3cb1b Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | QSGSoftwareInternalRectangleNode: Reduce memory allocationsMikhail Svetkin2018-11-271-1/+4
| | | | | | | | | | | | | | | | QSGSoftwareInternalRectangleNode does not check size of the border QPixmap and always generates the new one. Change-Id: I24d5917252ae310238417cc01935b9471992e1c8 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | Fix QSGImageNode with QSGLayer in software modeAllan Sandfeld Jensen2018-10-031-1/+11
| | | | | | | | | | | | | | | | This worked in OpenGL but not in software mode as the combination is not recognized. Change-Id: Ic44d1506d7cb2281f268325207a03ea1254b43a0 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | Software Adaptation: Improve bounding rect claculation for glyph nodesAndy Nichols2018-09-261-1/+29
| | | | | | | | | | | | | | | | | | | | | | | | It is not enough to call QGlyphRun::boundingRect() to determine the true bounding rect of a series of glyphs. This issue would manifest itself when rendering italic text. Now we calculate the bounding rect for a QGlyphRun when they are changed in the node so that that the clip rect for glyphnodes reflect what is set on the node. Task-number: QTBUG-68085 Change-Id: I834a7312052c8c5a4ad62f28333108c051d7f7b8 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | Re-enable the software rendered when Qt is built without threadsSimon Hausmann2018-09-102-4/+11
| | | | | | | | | | | | | | | | | | This partially reverts commit a7472867f407f1226d82aa7bce4cd4d6f9bd652f and merely excludes the threaded render loop of the software renderer. Task-number: QTBUG-70422 Change-Id: Id56a3fc12a3601cb3bce8be35e201d772988ae23 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* | Quick: Use devicePixelRatioF rather than devicePixelRatioUlf Hermann2018-07-122-4/+4
| | | | | | | | | | | | | | | | | | | | The integer version of devicePixelRatio cannot handle fractional ratios and will lead to arithmetic exceptions for ratios between 0 and 1. Change-Id: I4a06a12742fa85e6d2f0e24193ae796dec7e2f15 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-05-041-4/+7
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/qml/qml/qqmltypeloader.cpp src/qml/qml/qqmltypeloader_p.h Done-with: Simon Hausmann <simon.hausmann@qt.io> Task-number: QTBUG-68091 Change-Id: I7c0ab3c9446ac50da07b58f54e24eb4587f7f28c
| * Fix Hidpi BorderImage in software rendererAllan Sandfeld Jensen2018-05-021-4/+7
| | | | | | | | | | | | | | | | | | | | We have to correct for the fact that sub-rects of images in QPainter are in source coordinates. Change-Id: I457527b4ff7c1df5f6b662c3ed4d690e05efb4fb Task-number: QTBUG-40366 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | Add support for horizontal gradients in RectangleMichael Brasser2018-05-032-1/+13
| | | | | | | | | | | | | | | | | | [ChangeLog][QtQuick] Added support for horizontal gradients in Rectangle. Change-Id: I4feee8ec93d9fe75a9f91a7afbe33c8d4756cedb Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-04-271-1/+1
|\| | | | | | | Change-Id: I280d42b8926c0cada1f35d322b80aaf2b0ef0a73
| * Add handling of device pixel ratio to animated spritesAllan Sandfeld Jensen2018-04-261-1/+1
| | | | | | | | | | | | | | Change-Id: I472f61241d1875daf0de0a597bf27c019314f48f Task-number: QTBUG-50119 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-04-124-6/+15
|\| | | | | | | Change-Id: I50759e6601b02f87e07083a64fca23e0f4e23ca7
| * Make QSGLayer::grab work correctly in software rendererJan Marker2018-04-114-6/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix three separate issues: 1. It was possible that the QSGSoftwarePixmapRenderer's background image's rectangle was set to a non-normalized rectangle. That would have led to the damage area detection creating an empty QRegion for the damage area and QQuickItem::grabToImage would grab an empty image. 2. The QSGSoftwarePixmapRenderer was rendering the image vertically mirrored compared to what its equivalent in the OpenGL backend was doing. Therefore QSGLayer::grab was vertically mirrored, too, so QQuickItem::grabToImage would grab a mirrored image, too. Additionally QSGSoftwareInternalImageNode (used by QQuickShaderEffectSource) now has to mirror its internal texture if that one is a QSGSoftwareLayer. 3. QSGSoftwareInternalImageNode (used by QQuickShaderEffectSource) was not updating correctly when mirroring (with the fix for 2 also in case of a QSGSoftwareLayer as texture). Related to QTBUG-63185 and QTBUG-65975. Change-Id: I0d0ead7fb1c839a8ff427ff7881d8a881e538409 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io>