gpu_service_webview.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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_GPU_SERVICE_WEBVIEW_H_
  5. #define ANDROID_WEBVIEW_BROWSER_GFX_GPU_SERVICE_WEBVIEW_H_
  6. #include <stddef.h>
  7. #include <memory>
  8. #include <utility>
  9. #include "gpu/config/gpu_feature_info.h"
  10. #include "gpu/config/gpu_info.h"
  11. #include "gpu/config/gpu_preferences.h"
  12. namespace gpu {
  13. class MailboxManager;
  14. class SyncPointManager;
  15. class SharedImageManager;
  16. } // namespace gpu
  17. namespace android_webview {
  18. // This class acts like GpuServiceImpl for WebView. It owns gpu service objects
  19. // and provides handle to these gpu objects for WebView. There is only one copy
  20. // of this class in WebView.
  21. class GpuServiceWebView {
  22. public:
  23. // This static function makes sure there is a single copy of this class.
  24. static GpuServiceWebView* GetInstance();
  25. ~GpuServiceWebView();
  26. // Disallow copy and assign.
  27. GpuServiceWebView(const GpuServiceWebView&) = delete;
  28. GpuServiceWebView& operator=(const GpuServiceWebView&) = delete;
  29. gpu::SyncPointManager* sync_point_manager() const {
  30. return sync_point_manager_.get();
  31. }
  32. gpu::MailboxManager* mailbox_manager() const {
  33. return mailbox_manager_.get();
  34. }
  35. gpu::SharedImageManager* shared_image_manager() const {
  36. return shared_image_manager_.get();
  37. }
  38. const gpu::GPUInfo& gpu_info() const { return gpu_info_; }
  39. const gpu::GpuPreferences& gpu_preferences() const {
  40. return gpu_preferences_;
  41. }
  42. const gpu::GpuFeatureInfo& gpu_feature_info() const {
  43. return gpu_feature_info_;
  44. }
  45. private:
  46. // This function initialize GL using current command line, and construct gpu
  47. // service objects.
  48. static GpuServiceWebView* CreateGpuServiceWebView();
  49. GpuServiceWebView(
  50. std::unique_ptr<gpu::SyncPointManager> sync_pointer_manager,
  51. std::unique_ptr<gpu::MailboxManager> mailbox_manager,
  52. std::unique_ptr<gpu::SharedImageManager> shared_image_manager,
  53. const gpu::GPUInfo& gpu_info,
  54. const gpu::GpuPreferences& gpu_preferences,
  55. const gpu::GpuFeatureInfo& gpu_feature_info);
  56. std::unique_ptr<gpu::SyncPointManager> sync_point_manager_;
  57. std::unique_ptr<gpu::MailboxManager> mailbox_manager_;
  58. std::unique_ptr<gpu::SharedImageManager> shared_image_manager_;
  59. gpu::GPUInfo gpu_info_;
  60. gpu::GpuPreferences gpu_preferences_;
  61. gpu::GpuFeatureInfo gpu_feature_info_;
  62. };
  63. } // namespace android_webview
  64. #endif // ANDROID_WEBVIEW_BROWSER_GFX_GPU_SERVICE_WEBVIEW_H_