summaryrefslogtreecommitdiffstats
path: root/src/core/compositor
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-08-21 14:28:27 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-10-11 10:15:17 +0200
commit5f9e2f01e4eae22d9d40bb6b7767cde4cb94766e (patch)
tree58ade0563aef01b2fdba98c237d634559a1c1889 /src/core/compositor
parent687671d249613bb2b00570f93df35fcaa0eacdd3 (diff)
Adaptations for Chromium 77
Fixes: QTBUG-77267 Change-Id: I181e24cf80ebee6991b95dde6c636f0d169b40a4 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Diffstat (limited to 'src/core/compositor')
-rw-r--r--src/core/compositor/compositor.cpp5
-rw-r--r--src/core/compositor/compositor.h4
-rw-r--r--src/core/compositor/display_gl_output_surface.cpp32
-rw-r--r--src/core/compositor/display_gl_output_surface.h9
-rw-r--r--src/core/compositor/display_overrides.cpp15
-rw-r--r--src/core/compositor/display_software_output_surface.cpp14
-rw-r--r--src/core/compositor/display_software_output_surface.h2
7 files changed, 44 insertions, 37 deletions
diff --git a/src/core/compositor/compositor.cpp b/src/core/compositor/compositor.cpp
index 56693961c..1578e431e 100644
--- a/src/core/compositor/compositor.cpp
+++ b/src/core/compositor/compositor.cpp
@@ -128,7 +128,7 @@ QSGNode *Compositor::updatePaintNode(QSGNode *oldNode, RenderWidgetHostViewQtDel
m_updatePaintNodeShouldCommit = false;
gfx::PresentationFeedback dummyFeedback(base::TimeTicks::Now(), base::TimeDelta(), gfx::PresentationFeedback::Flags::kVSync);
- m_presentations.insert({m_committedFrame.metadata.frame_token, dummyFeedback});
+ m_presentations.emplace(m_committedFrame.metadata.frame_token, viz::FrameTimingDetails{dummyFeedback});
m_resourceTracker->commitResources();
frameNode->commit(m_pendingFrame, m_committedFrame, m_resourceTracker.get(), viewDelegate);
@@ -161,7 +161,8 @@ void Compositor::notifyFrameCommitted()
void Compositor::sendPresentationFeedback(uint frame_token)
{
gfx::PresentationFeedback dummyFeedback(base::TimeTicks::Now(), base::TimeDelta(), gfx::PresentationFeedback::Flags::kVSync);
- m_presentations.insert({frame_token, dummyFeedback});
+ viz::FrameTimingDetails dummyDetails = {dummyFeedback};
+ m_presentations.emplace(frame_token, dummyDetails);
}
bool Compositor::OnBeginFrameDerivedImpl(const viz::BeginFrameArgs &args)
diff --git a/src/core/compositor/compositor.h b/src/core/compositor/compositor.h
index 6d88dc054..36e62c17a 100644
--- a/src/core/compositor/compositor.h
+++ b/src/core/compositor/compositor.h
@@ -41,9 +41,9 @@
#define COMPOSITOR_H
#include "base/memory/weak_ptr.h"
+#include "components/viz/common/frame_timing_details.h"
#include "components/viz/common/frame_sinks/begin_frame_source.h"
#include "components/viz/common/quads/compositor_frame.h"
-#include "ui/gfx/presentation_feedback.h"
#include <QtCore/qglobal.h>
#include <QtCore/qshareddata.h>
@@ -115,7 +115,7 @@ private:
std::unique_ptr<CompositorResourceTracker> m_resourceTracker;
content::RenderWidgetHost *m_host;
std::unique_ptr<viz::SyntheticBeginFrameSource> m_beginFrameSource;
- base::flat_map<uint32_t, gfx::PresentationFeedback> m_presentations;
+ base::flat_map<uint32_t, viz::FrameTimingDetails> m_presentations;
viz::mojom::CompositorFrameSinkClient *m_frameSinkClient = nullptr;
bool m_updatePaintNodeShouldCommit = false;
bool m_needsBeginFrames = false;
diff --git a/src/core/compositor/display_gl_output_surface.cpp b/src/core/compositor/display_gl_output_surface.cpp
index 5a78b8322..0077af112 100644
--- a/src/core/compositor/display_gl_output_surface.cpp
+++ b/src/core/compositor/display_gl_output_surface.cpp
@@ -53,20 +53,19 @@
namespace QtWebEngineCore {
-DisplayGLOutputSurface::DisplayGLOutputSurface(
- scoped_refptr<viz::VizProcessContextProvider> contextProvider,
- viz::UpdateVSyncParametersCallback callback)
+DisplayGLOutputSurface::DisplayGLOutputSurface(scoped_refptr<viz::VizProcessContextProvider> contextProvider)
: OutputSurface(contextProvider)
, m_commandBuffer(contextProvider->command_buffer())
, m_gl(contextProvider->ContextGL())
+ , m_vizContextProvider(contextProvider)
{
capabilities_.uses_default_gl_framebuffer = false;
m_gl->GenFramebuffers(1, &m_fboId);
- contextProvider->SetUpdateVSyncParametersCallback(std::move(callback));
}
DisplayGLOutputSurface::~DisplayGLOutputSurface()
{
+ m_vizContextProvider->SetUpdateVSyncParametersCallback(viz::UpdateVSyncParametersCallback());
m_gl->DeleteFramebuffers(1, &m_fboId);
if (m_sink)
m_sink->disconnect(this);
@@ -224,9 +223,10 @@ void DisplayGLOutputSurface::swapBuffersOnVizThread()
m_backBuffer = std::move(m_middleBuffer);
}
- m_display->DidReceiveSwapBuffersAck();
+ const auto now = base::TimeTicks::Now();
+ m_display->DidReceiveSwapBuffersAck(gfx::SwapTimings{now, now});
m_display->DidReceivePresentationFeedback(
- gfx::PresentationFeedback(base::TimeTicks::Now(), base::TimeDelta(),
+ gfx::PresentationFeedback(now, base::TimeDelta(),
gfx::PresentationFeedback::Flags::kVSync));
}
@@ -234,12 +234,6 @@ void DisplayGLOutputSurface::SetDrawRectangle(const gfx::Rect &)
{
}
-// Returning nullptr here effectively disables viz::OverlayProcessor.
-viz::OverlayCandidateValidator *DisplayGLOutputSurface::GetOverlayCandidateValidator() const
-{
- return nullptr;
-}
-
// Returning true here will cause viz::GLRenderer to try to render the output
// surface as an overlay plane (see viz::DirectRenderer::DrawFrame and
// viz::GLRenderer::ScheduleOverlays).
@@ -289,4 +283,18 @@ unsigned DisplayGLOutputSurface::UpdateGpuFence()
return 0;
}
+void DisplayGLOutputSurface::SetUpdateVSyncParametersCallback(viz::UpdateVSyncParametersCallback callback)
+{
+ m_vizContextProvider->SetUpdateVSyncParametersCallback(std::move(callback));
+}
+
+void DisplayGLOutputSurface::SetDisplayTransformHint(gfx::OverlayTransform)
+{
+}
+
+gfx::OverlayTransform DisplayGLOutputSurface::GetDisplayTransform()
+{
+ return gfx::OVERLAY_TRANSFORM_NONE;
+}
+
} // namespace QtWebEngineCore
diff --git a/src/core/compositor/display_gl_output_surface.h b/src/core/compositor/display_gl_output_surface.h
index c42a6630a..67d987263 100644
--- a/src/core/compositor/display_gl_output_surface.h
+++ b/src/core/compositor/display_gl_output_surface.h
@@ -61,9 +61,7 @@ namespace QtWebEngineCore {
class DisplayGLOutputSurface final : public viz::OutputSurface, public DisplayProducer
{
public:
- DisplayGLOutputSurface(
- scoped_refptr<viz::VizProcessContextProvider> contextProvider,
- viz::UpdateVSyncParametersCallback callback);
+ DisplayGLOutputSurface(scoped_refptr<viz::VizProcessContextProvider> contextProvider);
~DisplayGLOutputSurface() override;
// Overridden from viz::OutputSurface.
@@ -72,7 +70,6 @@ public:
void DiscardBackbuffer() override;
void BindFramebuffer() override;
void SetDrawRectangle(const gfx::Rect &drawRect) override;
- viz::OverlayCandidateValidator *GetOverlayCandidateValidator() const override;
bool IsDisplayedAsOverlayPlane() const override;
unsigned GetOverlayTextureId() const override;
gfx::BufferFormat GetOverlayBufferFormat() const override;
@@ -86,6 +83,9 @@ public:
uint32_t GetFramebufferCopyTextureFormat() override;
void SwapBuffers(viz::OutputSurfaceFrame frame) override;
unsigned UpdateGpuFence() override;
+ void SetUpdateVSyncParametersCallback(viz::UpdateVSyncParametersCallback callback) override;
+ void SetDisplayTransformHint(gfx::OverlayTransform transform) override;
+ gfx::OverlayTransform GetDisplayTransform() override;
// Overridden from DisplayProducer.
QSGNode *updatePaintNode(QSGNode *oldNode, RenderWidgetHostViewQtDelegate *delegate) override;
@@ -141,6 +141,7 @@ private:
std::unique_ptr<Buffer> m_middleBuffer;
std::unique_ptr<Buffer> m_frontBuffer;
scoped_refptr<base::SingleThreadTaskRunner> m_taskRunner;
+ scoped_refptr<viz::VizProcessContextProvider> m_vizContextProvider;
};
} // namespace QtWebEngineCore
diff --git a/src/core/compositor/display_overrides.cpp b/src/core/compositor/display_overrides.cpp
index 4547bb04b..5d999ab92 100644
--- a/src/core/compositor/display_overrides.cpp
+++ b/src/core/compositor/display_overrides.cpp
@@ -40,23 +40,20 @@
#include "display_gl_output_surface.h"
#include "display_software_output_surface.h"
-#include "components/viz/service/display_embedder/gpu_display_provider.h"
+#include "components/viz/service/display_embedder/output_surface_provider_impl.h"
#include "gpu/ipc/in_process_command_buffer.h"
std::unique_ptr<viz::OutputSurface>
-viz::GpuDisplayProvider::CreateGLOutputSurface(
- scoped_refptr<VizProcessContextProvider> context_provider,
- UpdateVSyncParametersCallback update_vsync_callback)
+viz::OutputSurfaceProviderImpl::CreateGLOutputSurface(
+ scoped_refptr<VizProcessContextProvider> context_provider)
{
- return std::make_unique<QtWebEngineCore::DisplayGLOutputSurface>(
- std::move(context_provider), std::move(update_vsync_callback));
+ return std::make_unique<QtWebEngineCore::DisplayGLOutputSurface>(std::move(context_provider));
}
std::unique_ptr<viz::OutputSurface>
-viz::GpuDisplayProvider::CreateSoftwareOutputSurface(
- UpdateVSyncParametersCallback update_vsync_callback)
+viz::OutputSurfaceProviderImpl::CreateSoftwareOutputSurface()
{
- return std::make_unique<QtWebEngineCore::DisplaySoftwareOutputSurface>(std::move(update_vsync_callback));
+ return std::make_unique<QtWebEngineCore::DisplaySoftwareOutputSurface>();
}
void gpu::InProcessCommandBuffer::GetTextureQt(
diff --git a/src/core/compositor/display_software_output_surface.cpp b/src/core/compositor/display_software_output_surface.cpp
index 13f8e8f38..5d3c7a6f6 100644
--- a/src/core/compositor/display_software_output_surface.cpp
+++ b/src/core/compositor/display_software_output_surface.cpp
@@ -63,7 +63,7 @@ public:
// Overridden from viz::SoftwareOutputDevice.
void Resize(const gfx::Size &sizeInPixels, float devicePixelRatio) override;
- void OnSwapBuffers(base::OnceClosure swapCompletionCallback) override;
+ void OnSwapBuffers(SwapBuffersCallback swap_ack_callback) override;
// Overridden from DisplayProducer.
QSGNode *updatePaintNode(QSGNode *oldNode, RenderWidgetHostViewQtDelegate *delegate) override;
@@ -73,7 +73,7 @@ private:
scoped_refptr<DisplayFrameSink> m_sink;
float m_devicePixelRatio = 1.0;
scoped_refptr<base::SingleThreadTaskRunner> m_taskRunner;
- base::OnceClosure m_swapCompletionCallback;
+ SwapBuffersCallback m_swapCompletionCallback;
QImage m_image;
float m_imageDevicePixelRatio = 1.0;
};
@@ -99,11 +99,11 @@ void DisplaySoftwareOutputSurface::Device::Resize(const gfx::Size &sizeInPixels,
surface_ = SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(sizeInPixels.width(), sizeInPixels.height()));
}
-void DisplaySoftwareOutputSurface::Device::OnSwapBuffers(base::OnceClosure swapCompletionCallback)
+void DisplaySoftwareOutputSurface::Device::OnSwapBuffers(SwapBuffersCallback swap_ack_callback)
{
QMutexLocker locker(&m_mutex);
m_taskRunner = base::ThreadTaskRunnerHandle::Get();
- m_swapCompletionCallback = std::move(swapCompletionCallback);
+ m_swapCompletionCallback = std::move(swap_ack_callback);
m_sink->scheduleUpdate();
}
@@ -143,7 +143,7 @@ QSGNode *DisplaySoftwareOutputSurface::Device::updatePaintNode(
m_image.detach();
}
m_imageDevicePixelRatio = m_devicePixelRatio;
- m_taskRunner->PostTask(FROM_HERE, std::move(m_swapCompletionCallback));
+ m_taskRunner->PostTask(FROM_HERE, base::BindOnce(std::move(m_swapCompletionCallback), toGfx(m_image.size())));
m_taskRunner.reset();
}
@@ -155,8 +155,8 @@ QSGNode *DisplaySoftwareOutputSurface::Device::updatePaintNode(
return node;
}
-DisplaySoftwareOutputSurface::DisplaySoftwareOutputSurface(viz::UpdateVSyncParametersCallback callback)
- : SoftwareOutputSurface(std::make_unique<Device>(), std::move(callback))
+DisplaySoftwareOutputSurface::DisplaySoftwareOutputSurface()
+ : SoftwareOutputSurface(std::make_unique<Device>())
{}
DisplaySoftwareOutputSurface::~DisplaySoftwareOutputSurface() {}
diff --git a/src/core/compositor/display_software_output_surface.h b/src/core/compositor/display_software_output_surface.h
index 6707c74dc..ae4b277dd 100644
--- a/src/core/compositor/display_software_output_surface.h
+++ b/src/core/compositor/display_software_output_surface.h
@@ -47,7 +47,7 @@ namespace QtWebEngineCore {
class DisplaySoftwareOutputSurface final : public viz::SoftwareOutputSurface
{
public:
- DisplaySoftwareOutputSurface(viz::UpdateVSyncParametersCallback callback);
+ DisplaySoftwareOutputSurface();
~DisplaySoftwareOutputSurface() override;
// Overridden from viz::SoftwareOutputSurface.