diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2019-05-28 11:00:10 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-09-04 14:31:28 +0200 |
commit | fe905623dfb7f9e2f4a3e353ea0baa20e0dd16bf (patch) | |
tree | fd1a04b22d31ce55cf4f694b47000342db1b009e | |
parent | fedc10e472e26933c7cc257b4c0afa154dfc416d (diff) | |
download | qtwebengine-chromium-fe905623dfb7f9e2f4a3e353ea0baa20e0dd16bf.tar.gz |
Use ui::Compositor (3rdparty)
Task-number: QTBUG-71885
Change-Id: I441bd742f3ba6d16bfe58d88574b628d3561ecda
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
7 files changed, 41 insertions, 8 deletions
diff --git a/chromium/components/viz/common/features.cc b/chromium/components/viz/common/features.cc index abab71621e5..f28270c923d 100644 --- a/chromium/components/viz/common/features.cc +++ b/chromium/components/viz/common/features.cc @@ -51,18 +51,11 @@ bool IsSurfaceSynchronizationEnabled() { } bool IsVizDisplayCompositorEnabled() { -#if defined(OS_MACOSX) || defined(OS_WIN) - // We can't remove the feature switch yet because OOP-D isn't enabled on all - // platforms but turning it off on Mac and Windows isn't supported. Don't - // check the feature switch for these platforms anymore. - return true; -#else #if defined(OS_ANDROID) if (features::IsAndroidSurfaceControlEnabled()) return true; #endif return base::FeatureList::IsEnabled(kVizDisplayCompositor); -#endif } bool IsVizHitTestingDebugEnabled() { diff --git a/chromium/components/viz/service/display/display.h b/chromium/components/viz/service/display/display.h index f50f05a7a07..68cef259d1f 100644 --- a/chromium/components/viz/service/display/display.h +++ b/chromium/components/viz/service/display/display.h @@ -171,6 +171,10 @@ class VIZ_SERVICE_EXPORT Display : public DisplaySchedulerClient, base::ScopedClosureRunner GetCacheBackBufferCb(); +#if defined(TOOLKIT_QT) + FrameSinkId frame_sink_id() const { return frame_sink_id_; } +#endif + private: // TODO(cblume, crbug.com/900973): |enable_shared_images| is a temporary // solution that unblocks us until SharedImages are threadsafe in WebView. diff --git a/chromium/components/viz/service/display/overlay_candidate_validator.cc b/chromium/components/viz/service/display/overlay_candidate_validator.cc index 95aa337a1aa..7615daef8db 100644 --- a/chromium/components/viz/service/display/overlay_candidate_validator.cc +++ b/chromium/components/viz/service/display/overlay_candidate_validator.cc @@ -112,7 +112,9 @@ std::unique_ptr<OverlayCandidateValidator> OverlayCandidateValidator::Create( return nullptr; if (context_provider->ContextCapabilities().surfaceless) { -#if defined(USE_OZONE) +#if defined(TOOLKIT_QT) + return nullptr; +#elif defined(USE_OZONE) return CreateOverlayCandidateValidatorOzone(surface_handle, renderer_settings); #elif defined(OS_MACOSX) diff --git a/chromium/components/viz/service/display_embedder/output_surface_provider_impl.cc b/chromium/components/viz/service/display_embedder/output_surface_provider_impl.cc index adaefbbedef..409370d7b96 100644 --- a/chromium/components/viz/service/display_embedder/output_surface_provider_impl.cc +++ b/chromium/components/viz/service/display_embedder/output_surface_provider_impl.cc @@ -113,8 +113,12 @@ std::unique_ptr<OutputSurface> OutputSurfaceProviderImpl::CreateOutputSurface( std::unique_ptr<OutputSurface> output_surface; if (!gpu_compositing) { +#if defined(TOOLKIT_QT) + output_surface = CreateSoftwareOutputSurface(); +#else output_surface = std::make_unique<SoftwareOutputSurface>( CreateSoftwareOutputDeviceForPlatform(surface_handle, display_client)); +#endif } else if (renderer_settings.use_skia_renderer) { #if defined(OS_MACOSX) // TODO(penghuang): Support SkiaRenderer for all platforms. @@ -176,6 +180,9 @@ std::unique_ptr<OutputSurface> OutputSurfaceProviderImpl::CreateOutputSurface( } } +#if defined(TOOLKIT_QT) + output_surface = CreateGLOutputSurface(std::move(context_provider)); +#else if (surface_handle == gpu::kNullSurfaceHandle) { output_surface = std::make_unique<GLOutputSurfaceOffscreen>( std::move(context_provider)); @@ -211,6 +218,7 @@ std::unique_ptr<OutputSurface> OutputSurfaceProviderImpl::CreateOutputSurface( std::move(context_provider), surface_handle); #endif } +#endif } return output_surface; diff --git a/chromium/components/viz/service/display_embedder/output_surface_provider_impl.h b/chromium/components/viz/service/display_embedder/output_surface_provider_impl.h index 4ccd7892483..c6c3e833602 100644 --- a/chromium/components/viz/service/display_embedder/output_surface_provider_impl.h +++ b/chromium/components/viz/service/display_embedder/output_surface_provider_impl.h @@ -34,6 +34,11 @@ namespace viz { class GpuServiceImpl; class SoftwareOutputDevice; +#if defined(TOOLKIT_QT) +class OutputSurface; +class VizProcessContextProvider; +#endif + // In-process implementation of OutputSurfaceProvider. class VIZ_SERVICE_EXPORT OutputSurfaceProviderImpl : public OutputSurfaceProvider { @@ -57,6 +62,12 @@ class VIZ_SERVICE_EXPORT OutputSurfaceProviderImpl const RendererSettings& renderer_settings) override; private: +#if defined(TOOLKIT_QT) + std::unique_ptr<OutputSurface> CreateSoftwareOutputSurface(); + std::unique_ptr<OutputSurface> CreateGLOutputSurface( + scoped_refptr<VizProcessContextProvider> context_provider); +#endif + std::unique_ptr<SoftwareOutputDevice> CreateSoftwareOutputDeviceForPlatform( gpu::SurfaceHandle surface_handle, mojom::DisplayClient* display_client); diff --git a/chromium/components/viz/service/display_embedder/viz_process_context_provider.h b/chromium/components/viz/service/display_embedder/viz_process_context_provider.h index 5b9c723236e..8537aa7c99e 100644 --- a/chromium/components/viz/service/display_embedder/viz_process_context_provider.h +++ b/chromium/components/viz/service/display_embedder/viz_process_context_provider.h @@ -81,6 +81,10 @@ class VIZ_SERVICE_EXPORT VizProcessContextProvider base::ScopedClosureRunner GetCacheBackBufferCb(); +#ifdef TOOLKIT_QT + gpu::InProcessCommandBuffer *command_buffer() { return command_buffer_.get(); } +#endif + private: friend class base::RefCountedThreadSafe<VizProcessContextProvider>; ~VizProcessContextProvider() override; diff --git a/chromium/gpu/ipc/in_process_command_buffer.h b/chromium/gpu/ipc/in_process_command_buffer.h index 6c842b835da..ffc93a39780 100644 --- a/chromium/gpu/ipc/in_process_command_buffer.h +++ b/chromium/gpu/ipc/in_process_command_buffer.h @@ -53,6 +53,9 @@ namespace gl { class GLContext; class GLShareGroup; +#ifdef TOOLKIT_QT +class GLFence; +#endif } namespace gfx { @@ -208,6 +211,14 @@ class GL_IN_PROCESS_CONTEXT_EXPORT InProcessCommandBuffer // and |surface_handle| provided in Initialize outlive this callback. base::ScopedClosureRunner GetCacheBackBufferCb(); +#ifdef TOOLKIT_QT + using GetTextureCallback = base::OnceCallback<void(unsigned int, std::unique_ptr<gl::GLFence>)>; + void GetTextureQt(unsigned int client_id, + GetTextureCallback callback, + const std::vector<SyncToken>& sync_token_fences); + void GetTextureQtOnGpuThread(unsigned int client_id, GetTextureCallback callback); +#endif + private: class SharedImageInterface; |