summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/direct2d
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge "Merge remote-tracking branch 'origin/release' into stable" into ↵Frederik Gladhorn2014-05-021-0/+1
|\ | | | | | | refs/staging/stable
| * Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2014-05-011-0/+1
| |\ | | | | | | | | | | | | | | | This merge adds the opengl rename. Change-Id: I84ea0b6abee9780ebb2cf3f64ab9e3fdf2acab3e
| | * deprecate import_qpa_plugin and qpa_minimal_pluginOswald Buddenhagen2014-04-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | they have been fully superseded by 4255ba40ab073afcf2a095b135883612859af4c2. Change-Id: If7ac14c8b7d3cf00fb0cb916036b62eb86c9cee0 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | | Direct2D QPA: Add handlers for individual primitivesLouai Al-Khanji2014-05-012-21/+269
|/ / | | | | | | | | | | | | | | | | | | | | Directly handling primitives is faster than using the catch-all fill function which converts arbitrary paths into a direct2d geometry. So do so. Change-Id: I71ce73dbe75aa9b61e741c358d8787d0ea48ee46 Reviewed-by: Risto Avila <risto.avila@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com>
* | Direct2D QPA: Pixel-align aliased drawingLouai Al-Khanji2014-04-301-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | Aliased drawing has so far not been perfectly pixel aligned, resulting in less than stellar output in some instances. Although a little hacky, adding 0.5 to all coordinates when in aliased mode fixes things up nicely. There doesn't appear to be a better way to get d2d to cooperate as we would like it to. Change-Id: I10ee494d2f576bfd0eca6d4429095a3726c0bf14 Reviewed-by: Risto Avila <risto.avila@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com>
* | Direct2D QPA: Correctly set active state in paint engineLouai Al-Khanji2014-04-291-0/+1
| | | | | | | | | | | | Change-Id: I4eea073ad11ba8684212258b344c1f237598a9c5 Reviewed-by: Risto Avila <risto.avila@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Direct2D QPA: Speed up widget paintingLouai Al-Khanji2014-04-292-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | By only starting/ending drawing once in the backing store, we can avoid multiple start/ends and thus flushes of the direct2d device context. This can potentially be much faster with some drivers when many widgets that draw to the same backing store need to redraw. Because starts/ends of QWindowsDirect2DDeviceContext are already refcounted this works out of the box. Change-Id: Ib48edceef6a1041ae0509587c77ac0caa8b29fc6 Reviewed-by: Risto Avila <risto.avila@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Direct2D QPA: Improve software fallback mechanismLouai Al-Khanji2014-04-253-45/+80
| | | | | | | | | | | | | | | | | | | | | | Improve the way we fall back to the raster engine by forwarding painting state. Amongst other things this makes perspective transforms appear correct. Change-Id: I729de56ef3112bbc01516fc11c295f33a2aada0d Reviewed-by: Risto Avila <risto.avila@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com>
* | Direct2D QPA: Fix paint engine state handlingLouai Al-Khanji2014-04-252-13/+57
| | | | | | | | | | | | | | | | | | | | | | Fix the paint handling to support QPaintEngineEx style state updates. This fixes most of the outstanding issues, as QPainter save and restore were essentially broken before Change-Id: I477d8acfd71bba32dfac4c491bc5bbaad1804ec5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Risto Avila <risto.avila@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com>
* | Direct2D QPA: Optimize ClippingLouai Al-Khanji2014-04-252-62/+64
| | | | | | | | | | | | | | | | | | | | Use axis aligned clips when possible instead of layer-clipping. This can be much faster when a lot of clipping operations take place. Change-Id: I6865d69fc917a7da858033b4c362b307724d9006 Reviewed-by: Risto Avila <risto.avila@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com>
* | Direct2D QPA: Disable vsyncLouai Al-Khanji2014-04-251-1/+1
| | | | | | | | | | | | | | | | | | We shouldn't block the whole gui thread for vsyncing. This can slow things down a lot if a lot of drawing happens. Change-Id: Ie459f9dee2271e7908e2b7f56873393c67f82836 Reviewed-by: Risto Avila <risto.avila@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com>
* | Direct2D QPA: Do not attempt to create swap chain for desktop widgetLouai Al-Khanji2014-04-241-0/+3
| | | | | | | | | | | | | | | | | | We can't and don't need to create a swap chain for the desktop widget. Change-Id: I84cd5c753710af09bab5c7afc27e202e661343db Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Risto Avila <risto.avila@digia.com>
* | Direct2D QPA: Fix text drawing with brush but no penLouai Al-Khanji2014-04-161-2/+2
| | | | | | | | | | | | | | | | | | We were incorrectly bailing out early in the text drawing code when there was no pen. This is incorrect as drawing with only a brush should be possible. Change-Id: I94eaadd3cf6c4d82033b5d74d7ca47a05601083f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Direct2D QPA: Refactor code to reduce code duplicationLouai Al-Khanji2014-04-161-102/+120
| | | | | | | | | | | | | | | | | | Refactor duplicate logic in painterPathToPathGeometry and vectorPathToID2D1PathGeometry into one utility class. At the same time make the naming of the two functions consistent with each other. Change-Id: I03c8fc183863473b7337223e51835cf080914a41 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Direct2D QPA: Optimize rectangle fills.Louai Al-Khanji2014-04-161-6/+18
| | | | | | | | | | | | | | Detect rectangle hints in the QVectorPath and react accordingly. Change-Id: Ic72ce0c46d10e995c0824972854e2d88162eae45 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Direct2D QPA: Improve gradient supportLouai Al-Khanji2014-04-161-10/+87
|/ | | | | | | | | This change adds support for those gradients which can be expressed using Direct2D. At the moment this means linear and radial gradient with pad spread only. Change-Id: Ib1b1bc38a793dd826a259bbf8a7b31c25906dd59 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Fix Direct2D clipping when Qt::WA_OpaquePaintEvent is trueRisto Avila2014-03-141-11/+40
| | | | | | | | | | | | Changed clip rectangle handling from bounding rect to region. Now also sub region rectangles are taken in to account. Task-number: QTBUG-37199 Change-Id: I9e09376e2c6d3fee8f85db753295a6138a03096f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Janne Koskinen <janne.p.koskinen@digia.com> Reviewed-by: Louai Al-Khanji <louai.al-khanji@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com>
* Move Direct2D paint engine on top of QPaintEngineExLouai Al-Khanji2014-01-313-468/+531
| | | | | | | | | | | | | | | | | Make QWindowsDirect2DPaintEngine a subclass of QPaintEngineEx instead of QPaintEngine like the other paint engines inside Qt. This should both be faster and better supported, as the code paths handling QPaintEngineEx in QPainter are tested more. Additionally the visual output is closer to the raster engine, as all primitives are drawn using the same mechanism, resulting in fewer off-by-one-pixel errors. This change also makes designer work mostly correctly, apart from some remaining clipping bugs. Change-Id: I53d36c08e73883ff35e389d57f9d30b482fc6721 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Improve direct2d backing store implementationLouai Al-Khanji2014-01-277-166/+288
| | | | | | | | | | | | | | | | | | | | | | Add a per-window swap chain to a QPlatformWindow subclass instead of tying it to the backing store. This is needed to support native widgets (as opposed to alien widgets). Change the backing store to draw to an intermediate pixmap and flush to the requested window by using the per-window swap chain. This also opens the door for faster window presentation later on by using the swap chain more intelligently. Also add a changelog entry for the direct2d plugin, which was omitted earlier. [ChangeLog][QtGui][Windows] Introduce experimental direct2d platform plugin for Windows. This plugin shares most code with the current windows plugin, but substitutes a direct2d-based paint engine for window backing stores and pixmaps. Change-Id: I5f54e7e4c1fb15b1639bd26b712fb40ac141e4ac Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Fix Q_ASSERT in direct2d qpa pluginLouai Al-Khanji2014-01-241-1/+1
| | | | | | | | When calling end the refcount should be greater than zero, as calls to begin/end should match. Change-Id: I49adbf6f9f1c21cb60985ba4e02574e6c0841b74 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Add new direct2d platform pluginLouai Al-Khanji2014-01-1022-0/+3328
This is an alternative plugin for the windows platform. It shares most code with the current windows plugin, but substitutes a direct2d-based paint engine for window backing stores and pixmaps. Change-Id: I78fafd9c5871fa090b49436f5b40ec80f8789f8b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>