hardware_renderer_viz.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Copyright 2014 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_HARDWARE_RENDERER_VIZ_H_
  5. #define ANDROID_WEBVIEW_BROWSER_GFX_HARDWARE_RENDERER_VIZ_H_
  6. #include <memory>
  7. #include "android_webview/browser/gfx/hardware_renderer.h"
  8. #include "android_webview/browser/gfx/output_surface_provider_webview.h"
  9. #include "android_webview/browser/gfx/root_frame_sink.h"
  10. #include "base/threading/thread_checker.h"
  11. #include "components/viz/common/surfaces/frame_sink_id.h"
  12. namespace android_webview {
  13. class AwVulkanContextProvider;
  14. class HardwareRendererViz : public HardwareRenderer {
  15. public:
  16. HardwareRendererViz(RenderThreadManager* state,
  17. RootFrameSinkGetter root_frame_sink_getter,
  18. AwVulkanContextProvider* context_provider);
  19. HardwareRendererViz(const HardwareRendererViz&) = delete;
  20. HardwareRendererViz& operator=(const HardwareRendererViz&) = delete;
  21. ~HardwareRendererViz() override;
  22. // HardwareRenderer overrides.
  23. void DrawAndSwap(const HardwareRendererDrawParams& params,
  24. const OverlaysParams& overlays_params) override;
  25. void RemoveOverlays(
  26. OverlaysParams::MergeTransactionFn merge_transaction) override;
  27. void AbandonContext() override;
  28. private:
  29. class OnViz;
  30. void InitializeOnViz(RootFrameSinkGetter root_frame_sink_getter);
  31. bool IsUsingVulkan() const;
  32. void MergeTransactionIfNeeded(
  33. OverlaysParams::MergeTransactionFn merge_transaction);
  34. // Information about last delegated frame.
  35. float device_scale_factor_ = 0;
  36. viz::SurfaceId surface_id_;
  37. // Used to create viz::OutputSurface and gl::GLSurface
  38. OutputSurfaceProviderWebView output_surface_provider_;
  39. // These are accessed on the viz thread.
  40. std::unique_ptr<OnViz> on_viz_;
  41. THREAD_CHECKER(render_thread_checker_);
  42. };
  43. } // namespace android_webview
  44. #endif // ANDROID_WEBVIEW_BROWSER_GFX_HARDWARE_RENDERER_VIZ_H_