summaryrefslogtreecommitdiffstats
path: root/src/core/delegated_frame_node.h
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2017-09-18 17:39:47 +0200
committerJüri Valdmann <juri.valdmann@qt.io>2017-09-19 12:54:27 +0000
commit686e0c37d13a39935c5296b5c36151926fec072f (patch)
tree51c48350e218fd3185f577303bc3fe2c49d3cbec /src/core/delegated_frame_node.h
parent8c7ef46d84179024b499bb9654932f2432966279 (diff)
Fix rendering of intersecting quads
Split intersecting quads using a BSP tree in the same manner as Chromium's rendering algorithm. Note that these split quads still will not be correctly rendered in software mode as Qt Quick's software renderer is not at all aware of non-rectangular QSGClipNodes. Task-number: QTBUG-62112 Change-Id: Ibfb72b9220817baebf828bc6183af7bd9c25d050 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/delegated_frame_node.h')
-rw-r--r--src/core/delegated_frame_node.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/core/delegated_frame_node.h b/src/core/delegated_frame_node.h
index 40aca23b1..cc682988d 100644
--- a/src/core/delegated_frame_node.h
+++ b/src/core/delegated_frame_node.h
@@ -61,6 +61,11 @@ QT_END_NAMESPACE
namespace cc {
class DelegatedFrameData;
class DrawQuad;
+class DrawPolygon;
+}
+
+namespace gfx {
+class QuadF;
}
namespace QtWebEngineCore {
@@ -88,6 +93,25 @@ public:
void commit(ChromiumCompositorData *chromiumCompositorData, cc::ReturnedResourceArray *resourcesToRelease, RenderWidgetHostViewQtDelegate *apiDelegate);
private:
+ void flushPolygons(
+ std::deque<std::unique_ptr<cc::DrawPolygon>> *polygonQueue,
+ QSGNode *renderPassChain,
+ DelegatedNodeTreeHandler *nodeHandler,
+ QHash<unsigned, QSharedPointer<ResourceHolder> > &resourceCandidates,
+ RenderWidgetHostViewQtDelegate *apiDelegate);
+ void handlePolygon(
+ const cc::DrawPolygon *polygon,
+ QSGNode *currentLayerChain,
+ DelegatedNodeTreeHandler *nodeHandler,
+ QHash<unsigned, QSharedPointer<ResourceHolder> > &resourceCandidates,
+ RenderWidgetHostViewQtDelegate *apiDelegate);
+ void handleClippedQuad(
+ const cc::DrawQuad *quad,
+ const gfx::QuadF &clipRegion,
+ QSGNode *currentLayerChain,
+ DelegatedNodeTreeHandler *nodeHandler,
+ QHash<unsigned, QSharedPointer<ResourceHolder> > &resourceCandidates,
+ RenderWidgetHostViewQtDelegate *apiDelegate);
void handleQuad(
const cc::DrawQuad *quad,
QSGNode *currentLayerChain,