summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2019-05-28 11:00:10 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-09-04 14:31:28 +0200
commitfe905623dfb7f9e2f4a3e353ea0baa20e0dd16bf (patch)
treefd1a04b22d31ce55cf4f694b47000342db1b009e
parentfedc10e472e26933c7cc257b4c0afa154dfc416d (diff)
downloadqtwebengine-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>
-rw-r--r--chromium/components/viz/common/features.cc7
-rw-r--r--chromium/components/viz/service/display/display.h4
-rw-r--r--chromium/components/viz/service/display/overlay_candidate_validator.cc4
-rw-r--r--chromium/components/viz/service/display_embedder/output_surface_provider_impl.cc8
-rw-r--r--chromium/components/viz/service/display_embedder/output_surface_provider_impl.h11
-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
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;