aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Readd renderableNodes API to softwarerendererAnton Kreuzkamp2019-12-031-0/+6
| | | | | | | | | | 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 devQt Forward Merge Bot2019-06-201-3/+4
|\ | | | | | | Change-Id: I71b1212085da85f03f4ff0e3ee5cb56a401998ae
| * Software Adaptation: Invalidate on dpr changeMorten Johan Sørvig2019-06-171-3/+4
| | | | | | | | | | | | | | | | | | 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-061-5/+0
|/ | | | | | | | | | | | | | | | | | | | 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>
* Export QSoftwareRenderableNodeAnton Kreuzkamp2018-03-071-0/+5
| | | | | | | | + add some (private) API to make some more data about the rendering available to GammaRay. Change-Id: I059f09e663fa9541ec2b0f002b1a0253dd5ea7df Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* ScenGraph: Prefer printf style loggingKai Koehne2018-02-131-6/+6
| | | | | | | | This generates more compact code, saving 20480 bytes on disk (Linux 64 bit, release build). Change-Id: I73d6d88b7b61b87a5d714e131fcf86ee80c83f38 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QSGSoftwarePixmapRenderer: Fix incorrect background coordinatesJüri Valdmann2018-01-121-5/+5
| | | | | | | | | | | | | The pixmap renderer sets up QPainter's window coordinates system but still positions the background node in device coordinates. If the window rectangle is QRect(x, y, w, h) then the background rectangle will be set to QRect(0, 0, w, h). As the rendering output is clipped to the background rectangle, this means that the image will be left with transparent bands of x pixels on the right and y pixels on the bottom. Task-number: QTBUG-62867 Change-Id: I3b2c18dafda4381b0daa64f849330f51bcc743b2 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Mark layers in the SW rasterizer as opaque if possibleLars Knoll2017-11-031-0/+6
| | | | | | | | | | If the content of a layer completely covers every pixel of it, mark that layer as opaque so that we can avoid alpha blending where possible. Change-Id: Ia0be4e7a96ecddd31a26f353509de976bcc9e397 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Volker Krause <volker.krause@kdab.com>
* Improve dirty region calculation in software rendererJüri Valdmann2017-05-231-4/+4
| | | | | | | | | | | | | | | | | | | | | The software renderers dirty region calculation is done in integral logical coordinates, which leads to quite some trouble when handling scene graph elements with fractional coordinates (used by WebEngine for example). The optimal solution would probably be to either use integral physical coordinates or floating point logical coordinates, however this would seem to require substantial changes to QPainter and QBackingStore and so on. So, this patch instead changes the calculation to use something like interval arithmetic: instead of just rounding each logical coordinate to the nearest integer the renderer now uses (very carefully) both the upper and lower boundaries to make sure that the dirty regions always err on the side of caution. I expect this change to make rendering slower but only in situations where previously there would be rendering errors. Task-number: QTBUG-60393 Change-Id: I7f8e7d2739c810328c841130df9c1c7332439447 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Quick: fix incorrect usage of 'range for' with Qt containersAnton Kudryavtsev2016-08-201-3/+1
| | | | | | | Also port remaining foreach to 'range for'. Change-Id: I20296bb3bb6d63f144ebddaba02cabeb16b7d734 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix rendercontrol grabs with the software backendLaszlo Agocs2016-07-151-1/+6
| | | | | | | | | | | | Calling grabWindow recurses (since that is implemented via QQuickRenderControl::grab...) so it's not an option. Instead, call directly in the software renderer implementation. Fix also the size of the offscreen QQuickWindow when using QQuickWidget in combination with the software backend. Change-Id: I857a2cc0aebbbaa5d52d809aeaec37c15b0787b9 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Software Renderer: Call QBackingStore::beginPaint with correct QRegionAndy Nichols2016-06-201-1/+5
| | | | | | | | | | | | | | | | | When rendering into QBackingStores, it is important to let the backingstore know what region you intended to paint into before you start rendering. Previously we were calling QBackingStore::beginPaint on the whole window area, but then only rendering and flushing for a subset of that area. This causes issues on platforms that depend on QBackingStore::beginPaint to be all area that will be repainted before the next flush, so that they can for example clear those areas. This change required a bit of extra plumbing in the Software Renderer, but now it is possible to calculate the area that will be repainted before painting it, and pass that region to QBackingStore::beginPaint(). Change-Id: I90be1916ebbe8fc182cd13246bb6690cc7e16d27 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* 2DRenderer: Mark all regions of deleted node as dirtyAndy Nichols2016-04-131-1/+1
| | | | | | | | | | | | Previous behavior was to always subtract the current bounding rect of items when calculating the previous dirty region. When you remove a node though, there is no current bounding rect because the item no longer exists. The last valid boundingRect was use instead, which led to the previous bounding rect to not get marked as dirty when the node was removed. Change-Id: Ic1a4f872d4d46125b06e2588aae695b8ff67d0fd Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Turn the SoftwareContext plugin into the Scenegraph Software AdaptationAndy Nichols2016-03-101-0/+321
The 2D renderer will now become a built-in adaptation of scenegraph that should always be available to fallback to when there are no other renders available. So rather than be an external plugin, now it is a built in adaptation. Change-Id: Ifa02fd50f3085ad1e6f1a73c3ce1e1825b677cc7 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>