diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2019-05-28 11:00:10 +0200 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2019-08-22 07:59:11 +0000 |
commit | feccbb4ea7fa685dcd013f5a3f6c14ea768636c9 (patch) | |
tree | ccca65606386a9353dad4515c2e7f2a1433bfd5c | |
parent | 4f564acc2b45f95b7c83899701245e533a6efabc (diff) |
Use ui::Compositor (3rdparty)v5.14.0-alpha1
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>
5 files changed, 40 insertions, 0 deletions
diff --git a/chromium/components/viz/service/display/display.h b/chromium/components/viz/service/display/display.h index 12b9d799b47..90f8b3b3adf 100644 --- a/chromium/components/viz/service/display/display.h +++ b/chromium/components/viz/service/display/display.h @@ -147,6 +147,10 @@ class VIZ_SERVICE_EXPORT Display : public DisplaySchedulerClient, void SetSupportedFrameIntervals(std::vector<base::TimeDelta> intervals); +#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_embedder/gpu_display_provider.cc b/chromium/components/viz/service/display_embedder/gpu_display_provider.cc index ca70a38df7a..f422dcc47d0 100644 --- a/chromium/components/viz/service/display_embedder/gpu_display_provider.cc +++ b/chromium/components/viz/service/display_embedder/gpu_display_provider.cc @@ -124,9 +124,13 @@ std::unique_ptr<Display> GpuDisplayProvider::CreateDisplay( SkiaOutputSurface* skia_output_surface = nullptr; if (!gpu_compositing) { +#if defined(TOOLKIT_QT) + output_surface = CreateSoftwareOutputSurface(std::move(update_vsync_callback)); +#else output_surface = std::make_unique<SoftwareOutputSurface>( CreateSoftwareOutputDeviceForPlatform(surface_handle, display_client), std::move(update_vsync_callback)); +#endif } else if (renderer_settings.use_skia_renderer || renderer_settings.use_skia_renderer_non_ddl) { #if defined(OS_MACOSX) || defined(OS_WIN) @@ -204,6 +208,9 @@ std::unique_ptr<Display> GpuDisplayProvider::CreateDisplay( } } +#if defined(TOOLKIT_QT) + output_surface = CreateGLOutputSurface(std::move(context_provider), std::move(update_vsync_callback)); +#else if (surface_handle == gpu::kNullSurfaceHandle) { output_surface = std::make_unique<GLOutputSurfaceOffscreen>( std::move(context_provider), std::move(update_vsync_callback)); @@ -257,6 +264,7 @@ std::unique_ptr<Display> GpuDisplayProvider::CreateDisplay( std::move(context_provider), std::move(update_vsync_callback)); #endif } +#endif } // If we need swap size notifications tell the output surface now. diff --git a/chromium/components/viz/service/display_embedder/gpu_display_provider.h b/chromium/components/viz/service/display_embedder/gpu_display_provider.h index c79c7a29574..5db0c61c191 100644 --- a/chromium/components/viz/service/display_embedder/gpu_display_provider.h +++ b/chromium/components/viz/service/display_embedder/gpu_display_provider.h @@ -36,6 +36,11 @@ class GpuServiceImpl; class ServerSharedBitmapManager; class SoftwareOutputDevice; +#if defined(TOOLKIT_QT) +class OutputSurface; +class VizProcessContextProvider; +#endif + // In-process implementation of DisplayProvider. class VIZ_SERVICE_EXPORT GpuDisplayProvider : public DisplayProvider { public: @@ -69,6 +74,14 @@ class VIZ_SERVICE_EXPORT GpuDisplayProvider : public DisplayProvider { uint32_t GetRestartId() const override; private: +#if defined(TOOLKIT_QT) + std::unique_ptr<OutputSurface> CreateSoftwareOutputSurface( + UpdateVSyncParametersCallback update_vsync_callback); + std::unique_ptr<OutputSurface> CreateGLOutputSurface( + scoped_refptr<VizProcessContextProvider> context_provider, + UpdateVSyncParametersCallback update_vsync_callback); +#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 e0ea6a3813f..a856c90fd23 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 @@ -79,6 +79,10 @@ class VIZ_SERVICE_EXPORT VizProcessContextProvider // glCopyTexImage2D() on the default framebuffer. uint32_t GetCopyTextureInternalFormat(); +#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 869d11c43c7..e77221f8f9e 100644 --- a/chromium/gpu/ipc/in_process_command_buffer.h +++ b/chromium/gpu/ipc/in_process_command_buffer.h @@ -49,6 +49,9 @@ namespace gl { class GLContext; class GLShareGroup; +#ifdef TOOLKIT_QT +class GLFence; +#endif } namespace gfx { @@ -191,6 +194,14 @@ class GL_IN_PROCESS_CONTEXT_EXPORT InProcessCommandBuffer gpu::SharedImageInterface* GetSharedImageInterface() const; +#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; |