From 7fb329705494f0cd2448ab1b9d72223e6dbc20b0 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen <allan.jensen@qt.io> Date: Tue, 2 Oct 2018 10:14:57 +0200 Subject: [PATCH] Cleanup scenegraph integration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Get rid of old QSG type names, and also remove redundant setupTiledNode call. Change-Id: Ifbd83f6bdc0e029eb52899b20562ef6606f5562b Reviewed-by: Michael Brüning <michael.bruning@qt.io> --- src/core/delegated_frame_node.cpp | 55 +++++-------------- .../render_widget_host_view_qt_delegate.h | 5 +- ...der_widget_host_view_qt_delegate_quick.cpp | 4 +- ...ender_widget_host_view_qt_delegate_quick.h | 4 +- ...dget_host_view_qt_delegate_quickwindow.cpp | 8 +-- ...widget_host_view_qt_delegate_quickwindow.h | 4 +- ...er_widget_host_view_qt_delegate_widget.cpp | 4 +- ...nder_widget_host_view_qt_delegate_widget.h | 4 +- 8 files changed, 29 insertions(+), 59 deletions(-) diff --git a/src/core/delegated_frame_node.cpp b/src/core/delegated_frame_node.cpp index e1ff2f56c..9805e3333 100644 --- a/src/core/delegated_frame_node.cpp +++ b/src/core/delegated_frame_node.cpp @@ -185,10 +185,8 @@ public: virtual void setupRenderPassNode(QSGTexture *, const QRect &, QSGNode *) = 0; virtual void setupTextureContentNode(QSGTexture *, const QRect &, const QRectF &, - QSGTextureNode::TextureCoordinatesTransformMode, + QSGImageNode::TextureCoordinatesTransformMode, QSGNode *) = 0; - virtual void setupTiledContentNode(QSGTexture *, const QRect &, const QRectF &, - QSGNode *) = 0; virtual void setupSolidColorNode(const QRect &, const QColor &, QSGNode *) = 0; #ifndef QT_NO_OPENGL @@ -227,15 +225,18 @@ public: } void setupTextureContentNode(QSGTexture *texture, const QRect &rect, const QRectF &sourceRect, - QSGTextureNode::TextureCoordinatesTransformMode texCoordTransForm, + QSGImageNode::TextureCoordinatesTransformMode texCoordTransForm, QSGNode *) override { Q_ASSERT(m_nodeIterator != m_sceneGraphNodes->end()); - QSGTextureNode *textureNode = static_cast<QSGTextureNode*>(*m_nodeIterator++); + QSGImageNode *textureNode = static_cast<QSGImageNode*>(*m_nodeIterator++); if (textureNode->texture() != texture) { + // Chromium sometimes uses textures that doesn't completely fit + // in which case the geometry needs to be recalculated even if + // rect and src-rect matches. + if (textureNode->texture()->textureSize() != texture->textureSize()) + textureNode->markDirty(QSGImageNode::DirtyGeometry); textureNode->setTexture(texture); - // @TODO: This is a workaround for funky rendering, figure out why this is needed. - textureNode->markDirty(QSGTextureNode::DirtyGeometry); } if (textureNode->textureCoordinatesTransform() != texCoordTransForm) textureNode->setTextureCoordinatesTransform(texCoordTransForm); @@ -246,23 +247,6 @@ public: if (textureNode->filtering() != texture->filtering()) textureNode->setFiltering(texture->filtering()); } - void setupTiledContentNode(QSGTexture *texture, const QRect &rect, const QRectF &sourceRect, - QSGNode *) override - { - Q_ASSERT(m_nodeIterator != m_sceneGraphNodes->end()); - QSGTextureNode *textureNode = static_cast<QSGTextureNode*>(*m_nodeIterator++); - if (textureNode->texture() != texture) { - textureNode->setTexture(texture); - // @TODO: This is a workaround for funky rendering, figure out why this is needed. - textureNode->markDirty(QSGTextureNode::DirtyGeometry); - } - if (textureNode->rect() != rect) - textureNode->setRect(rect); - if (textureNode->sourceRect() != sourceRect) - textureNode->setSourceRect(sourceRect); - if (textureNode->filtering() != texture->filtering()) - textureNode->setFiltering(texture->filtering()); - } void setupSolidColorNode(const QRect &rect, const QColor &color, QSGNode *) override { Q_ASSERT(m_nodeIterator != m_sceneGraphNodes->end()); @@ -330,10 +314,10 @@ public: } void setupTextureContentNode(QSGTexture *texture, const QRect &rect, const QRectF &sourceRect, - QSGTextureNode::TextureCoordinatesTransformMode texCoordTransForm, + QSGImageNode::TextureCoordinatesTransformMode texCoordTransForm, QSGNode *layerChain) override { - QSGTextureNode *textureNode = m_apiDelegate->createTextureNode(); + QSGImageNode *textureNode = m_apiDelegate->createImageNode(); textureNode->setTextureCoordinatesTransform(texCoordTransForm); textureNode->setRect(rect); textureNode->setSourceRect(sourceRect); @@ -344,19 +328,6 @@ public: m_sceneGraphNodes->append(textureNode); } - void setupTiledContentNode(QSGTexture *texture, const QRect &rect, const QRectF &sourceRect, - QSGNode *layerChain) override - { - QSGTextureNode *textureNode = m_apiDelegate->createTextureNode(); - textureNode->setRect(rect); - textureNode->setSourceRect(sourceRect); - textureNode->setFiltering(texture->filtering()); - textureNode->setTexture(texture); - - layerChain->appendChildNode(textureNode); - m_sceneGraphNodes->append(textureNode); - } - void setupSolidColorNode(const QRect &rect, const QColor &color, QSGNode *layerChain) override { @@ -1124,7 +1095,7 @@ void DelegatedFrameNode::handleQuad( nodeHandler->setupTextureContentNode( texture, toQt(quad->rect), toQt(uv_rect), - tquad->y_flipped ? QSGTextureNode::MirrorVertically : QSGTextureNode::NoTransform, + tquad->y_flipped ? QSGImageNode::MirrorVertically : QSGImageNode::NoTransform, currentLayerChain); break; } @@ -1164,10 +1135,10 @@ void DelegatedFrameNode::handleQuad( case viz::DrawQuad::TILED_CONTENT: { const viz::TileDrawQuad *tquad = viz::TileDrawQuad::MaterialCast(quad); ResourceHolder *resource = findAndHoldResource(tquad->resource_id(), resourceCandidates); - nodeHandler->setupTiledContentNode( + nodeHandler->setupTextureContentNode( initAndHoldTexture(resource, quad->ShouldDrawWithBlending(), apiDelegate), toQt(quad->rect), toQt(tquad->tex_coord_rect), - currentLayerChain); + QSGImageNode::NoTransform, currentLayerChain); break; #ifndef QT_NO_OPENGL } diff --git a/src/core/render_widget_host_view_qt_delegate.h b/src/core/render_widget_host_view_qt_delegate.h index 72f54dcb6..8936ce63e 100644 --- a/src/core/render_widget_host_view_qt_delegate.h +++ b/src/core/render_widget_host_view_qt_delegate.h @@ -67,7 +67,6 @@ class QInputMethodEvent; class QSGInternalImageNode; class QSGImageNode; -typedef QSGImageNode QSGTextureNode; QT_END_NAMESPACE @@ -106,8 +105,8 @@ public: virtual QWindow* window() const = 0; virtual QSGTexture *createTextureFromImage(const QImage &) = 0; virtual QSGLayer *createLayer() = 0; - virtual QSGInternalImageNode *createImageNode() = 0; - virtual QSGTextureNode *createTextureNode() = 0; + virtual QSGInternalImageNode *createInternalImageNode() = 0; + virtual QSGImageNode *createImageNode() = 0; virtual QSGRectangleNode *createRectangleNode() = 0; virtual void update() = 0; virtual void updateCursor(const QCursor &) = 0; diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp index 3d539f8b2..baece82f3 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp @@ -177,13 +177,13 @@ QSGLayer *RenderWidgetHostViewQtDelegateQuick::createLayer() return renderContext->sceneGraphContext()->createLayer(renderContext); } -QSGInternalImageNode *RenderWidgetHostViewQtDelegateQuick::createImageNode() +QSGInternalImageNode *RenderWidgetHostViewQtDelegateQuick::createInternalImageNode() { QSGRenderContext *renderContext = QQuickWindowPrivate::get(QQuickItem::window())->context; return renderContext->sceneGraphContext()->createInternalImageNode(); } -QSGTextureNode *RenderWidgetHostViewQtDelegateQuick::createTextureNode() +QSGImageNode *RenderWidgetHostViewQtDelegateQuick::createImageNode() { return QQuickItem::window()->createImageNode(); } diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.h b/src/webengine/render_widget_host_view_qt_delegate_quick.h index a5101d070..74cddf476 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.h +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.h @@ -66,8 +66,8 @@ public: QWindow* window() const override; QSGTexture *createTextureFromImage(const QImage &) override; QSGLayer *createLayer() override; - QSGInternalImageNode *createImageNode() override; - QSGTextureNode *createTextureNode() override; + QSGInternalImageNode *createInternalImageNode() override; + QSGImageNode *createImageNode() override; QSGRectangleNode *createRectangleNode() override; void update() override; void updateCursor(const QCursor &) override; diff --git a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp index 7b7d32d67..dd37ff6fa 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp +++ b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp @@ -111,14 +111,14 @@ QSGLayer *RenderWidgetHostViewQtDelegateQuickWindow::createLayer() return m_realDelegate->createLayer(); } -QSGInternalImageNode *RenderWidgetHostViewQtDelegateQuickWindow::createImageNode() +QSGInternalImageNode *RenderWidgetHostViewQtDelegateQuickWindow::createInternalImageNode() { - return m_realDelegate->createImageNode(); + return m_realDelegate->createInternalImageNode(); } -QSGTextureNode *RenderWidgetHostViewQtDelegateQuickWindow::createTextureNode() +QSGImageNode *RenderWidgetHostViewQtDelegateQuickWindow::createImageNode() { - return m_realDelegate->createTextureNode(); + return m_realDelegate->createImageNode(); } QSGRectangleNode *RenderWidgetHostViewQtDelegateQuickWindow::createRectangleNode() diff --git a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h index be4033728..6a1be8b7f 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h +++ b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h @@ -69,8 +69,8 @@ public: QWindow* window() const override; QSGTexture *createTextureFromImage(const QImage &) override; QSGLayer *createLayer() override; - QSGInternalImageNode *createImageNode() override; - QSGTextureNode *createTextureNode() override; + QSGInternalImageNode *createInternalImageNode() override; + QSGImageNode *createImageNode() override; QSGRectangleNode *createRectangleNode() override; void update() override; void updateCursor(const QCursor &) override; diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp index d7bcd0ae3..13c65f1ec 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -310,13 +310,13 @@ QSGLayer *RenderWidgetHostViewQtDelegateWidget::createLayer() return renderContext->sceneGraphContext()->createLayer(renderContext); } -QSGInternalImageNode *RenderWidgetHostViewQtDelegateWidget::createImageNode() +QSGInternalImageNode *RenderWidgetHostViewQtDelegateWidget::createInternalImageNode() { QSGRenderContext *renderContext = QQuickWindowPrivate::get(quickWindow())->context; return renderContext->sceneGraphContext()->createInternalImageNode(); } -QSGTextureNode *RenderWidgetHostViewQtDelegateWidget::createTextureNode() +QSGImageNode *RenderWidgetHostViewQtDelegateWidget::createImageNode() { return quickWindow()->createImageNode(); } diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h index 42b454bc5..4dc47dfdd 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h @@ -73,8 +73,8 @@ public: QWindow* window() const override; QSGTexture *createTextureFromImage(const QImage &) override; QSGLayer *createLayer() override; - QSGInternalImageNode *createImageNode() override; - QSGTextureNode *createTextureNode() override; + QSGInternalImageNode *createInternalImageNode() override; + QSGImageNode *createImageNode() override; QSGRectangleNode *createRectangleNode() override; void update() override; void updateCursor(const QCursor &) override; -- GitLab