feat: GPU shared texture offscreen rendering (#42953)

* feat: GPU shared texture offscreen rendering

* docs: clarify texture infos that passed by the paint event.

* feat: make gpu osr spec test optional

* fix: osr image compare

* fix: remove duplicate test

* fix: update patch file

* fix: code review

* feat: expose more metadata

* feat: use better switch design

* feat: add warning when user forget to release the texture.

* fix: typo

* chore: update patch

* fix: update patch

* fix: update patch description

* fix: update docs

* fix: apply suggestions from code review

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* fix: apply suggested fixes

---------

Co-authored-by: Charles Kerr <charles@charleskerr.com>
This commit is contained in:
reito 2024-08-23 08:23:13 +08:00 committed by GitHub
parent b481966f02
commit 1aeca6fd0e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 1009 additions and 102 deletions

View file

@ -14,14 +14,12 @@
#include "components/viz/host/client_frame_sink_video_capturer.h"
#include "media/capture/mojom/video_capture_buffer.mojom-forward.h"
#include "media/capture/mojom/video_capture_types.mojom.h"
#include "shell/browser/osr/osr_paint_event.h"
namespace electron {
class OffScreenRenderWidgetHostView;
typedef base::RepeatingCallback<void(const gfx::Rect&, const SkBitmap&)>
OnPaintCallback;
class OffScreenVideoConsumer : public viz::mojom::FrameSinkVideoConsumer {
public:
OffScreenVideoConsumer(OffScreenRenderWidgetHostView* view,
@ -34,7 +32,6 @@ class OffScreenVideoConsumer : public viz::mojom::FrameSinkVideoConsumer {
void SetActive(bool active);
void SetFrameRate(int frame_rate);
void SizeChanged(const gfx::Size& size_in_pixels);
private:
// viz::mojom::FrameSinkVideoConsumer implementation.
@ -49,8 +46,6 @@ class OffScreenVideoConsumer : public viz::mojom::FrameSinkVideoConsumer {
void OnStopped() override {}
void OnLog(const std::string& message) override {}
bool CheckContentRect(const gfx::Rect& content_rect);
OnPaintCallback callback_;
raw_ptr<OffScreenRenderWidgetHostView> view_;