diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-08-21 14:28:27 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-10-11 10:15:17 +0200 |
commit | 5f9e2f01e4eae22d9d40bb6b7767cde4cb94766e (patch) | |
tree | 58ade0563aef01b2fdba98c237d634559a1c1889 /src/core/compositor | |
parent | 687671d249613bb2b00570f93df35fcaa0eacdd3 (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.cpp | 5 | ||||
-rw-r--r-- | src/core/compositor/compositor.h | 4 | ||||
-rw-r--r-- | src/core/compositor/display_gl_output_surface.cpp | 32 | ||||
-rw-r--r-- | src/core/compositor/display_gl_output_surface.h | 9 | ||||
-rw-r--r-- | src/core/compositor/display_overrides.cpp | 15 | ||||
-rw-r--r-- | src/core/compositor/display_software_output_surface.cpp | 14 | ||||
-rw-r--r-- | src/core/compositor/display_software_output_surface.h | 2 |
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. |