summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2019-05-28 11:00:10 +0200
committerJüri Valdmann <juri.valdmann@qt.io>2019-08-22 07:59:11 +0000
commitfeccbb4ea7fa685dcd013f5a3f6c14ea768636c9 (patch)
treeccca65606386a9353dad4515c2e7f2a1433bfd5c
parent4f564acc2b45f95b7c83899701245e533a6efabc (diff)
downloadqtwebengine-chromium-feccbb4ea7fa685dcd013f5a3f6c14ea768636c9.tar.gz
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>
-rw-r--r--chromium/components/viz/service/display/display.h4
-rw-r--r--chromium/components/viz/service/display_embedder/gpu_display_provider.cc8
-rw-r--r--chromium/components/viz/service/display_embedder/gpu_display_provider.h13
-rw-r--r--chromium/components/viz/service/display_embedder/viz_process_context_provider.h4
-rw-r--r--chromium/gpu/ipc/in_process_command_buffer.h11
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;