skia_output_surface_dependency_webview.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef ANDROID_WEBVIEW_BROWSER_GFX_SKIA_OUTPUT_SURFACE_DEPENDENCY_WEBVIEW_H_
  5. #define ANDROID_WEBVIEW_BROWSER_GFX_SKIA_OUTPUT_SURFACE_DEPENDENCY_WEBVIEW_H_
  6. #include "base/callback_helpers.h"
  7. #include "base/memory/raw_ptr.h"
  8. #include "components/viz/service/display_embedder/skia_output_surface_dependency.h"
  9. #include "gpu/command_buffer/service/shared_context_state.h"
  10. #include "gpu/config/gpu_driver_bug_workarounds.h"
  11. namespace android_webview {
  12. class AwVulkanContextProvider;
  13. class TaskQueueWebView;
  14. class GpuServiceWebView;
  15. // Implementation for access to gpu objects and task queue for WebView.
  16. class SkiaOutputSurfaceDependencyWebView
  17. : public viz::SkiaOutputSurfaceDependency {
  18. public:
  19. SkiaOutputSurfaceDependencyWebView(
  20. TaskQueueWebView* task_queue,
  21. GpuServiceWebView* gpu_service,
  22. gpu::SharedContextState* shared_context_state,
  23. gl::GLSurface* gl_surface,
  24. AwVulkanContextProvider* vulkan_context_provider);
  25. SkiaOutputSurfaceDependencyWebView(
  26. const SkiaOutputSurfaceDependencyWebView&) = delete;
  27. SkiaOutputSurfaceDependencyWebView& operator=(
  28. const SkiaOutputSurfaceDependencyWebView&) = delete;
  29. ~SkiaOutputSurfaceDependencyWebView() override;
  30. std::unique_ptr<gpu::SingleTaskSequence> CreateSequence() override;
  31. gpu::SharedImageManager* GetSharedImageManager() override;
  32. gpu::SyncPointManager* GetSyncPointManager() override;
  33. const gpu::GpuDriverBugWorkarounds& GetGpuDriverBugWorkarounds() override;
  34. scoped_refptr<gpu::SharedContextState> GetSharedContextState() override;
  35. gpu::raster::GrShaderCache* GetGrShaderCache() override;
  36. viz::VulkanContextProvider* GetVulkanContextProvider() override;
  37. viz::DawnContextProvider* GetDawnContextProvider() override;
  38. const gpu::GpuPreferences& GetGpuPreferences() const override;
  39. const gpu::GpuFeatureInfo& GetGpuFeatureInfo() override;
  40. gpu::MailboxManager* GetMailboxManager() override;
  41. gpu::ImageFactory* GetGpuImageFactory() override;
  42. void ScheduleGrContextCleanup() override;
  43. void ScheduleDelayedGPUTaskFromGPUThread(base::OnceClosure task) override;
  44. scoped_refptr<base::TaskRunner> GetClientTaskRunner() override;
  45. bool IsOffscreen() override;
  46. gpu::SurfaceHandle GetSurfaceHandle() override;
  47. scoped_refptr<gl::GLSurface> CreateGLSurface(
  48. base::WeakPtr<gpu::ImageTransportSurfaceDelegate> stub,
  49. gl::GLSurfaceFormat format) override;
  50. base::ScopedClosureRunner CacheGLSurface(gl::GLSurface* surface) override;
  51. void RegisterDisplayContext(gpu::DisplayContext* display_context) override;
  52. void UnregisterDisplayContext(gpu::DisplayContext* display_context) override;
  53. void DidLoseContext(gpu::error::ContextLostReason reason,
  54. const GURL& active_url) override;
  55. base::TimeDelta GetGpuBlockedTimeSinceLastSwap() override;
  56. bool NeedsSupportForExternalStencil() override;
  57. private:
  58. const raw_ptr<gl::GLSurface> gl_surface_;
  59. raw_ptr<AwVulkanContextProvider> vulkan_context_provider_;
  60. raw_ptr<TaskQueueWebView> task_queue_;
  61. raw_ptr<GpuServiceWebView> gpu_service_;
  62. gpu::GpuDriverBugWorkarounds workarounds_;
  63. const raw_ptr<gpu::SharedContextState> shared_context_state_;
  64. };
  65. } // namespace android_webview
  66. #endif // ANDROID_WEBVIEW_BROWSER_GFX_SKIA_OUTPUT_SURFACE_DEPENDENCY_WEBVIEW_H_