5#ifndef FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_SURFACE_PRODUCER_H_
6#define FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_SURFACE_PRODUCER_H_
8#include <fuchsia/sysmem2/cpp/fidl.h>
9#include <fuchsia/ui/composition/cpp/fidl.h>
10#include <lib/zx/event.h>
16#include "third_party/skia/include/core/SkSize.h"
17#include "third_party/skia/include/core/SkSurface.h"
18#include "third_party/skia/include/gpu/ganesh/GrDirectContext.h"
45 virtual fuchsia::ui::composition::BufferCollectionImportToken
60 const std::function<
void(
void)>& on_writes_committed) = 0;
74 const SkISize& size) = 0;
76 const SkISize& size) = 0;
79 std::vector<std::unique_ptr<SurfaceProducerSurface>> surfaces) = 0;
virtual ~SurfaceProducer()=default
virtual void SubmitSurfaces(std::vector< std::unique_ptr< SurfaceProducerSurface > > surfaces)=0
virtual GrDirectContext * gr_context() const =0
virtual std::unique_ptr< SurfaceProducerSurface > ProduceSurface(const SkISize &size)=0
virtual std::unique_ptr< SurfaceProducerSurface > ProduceOffscreenSurface(const SkISize &size)=0
virtual fuchsia::ui::composition::BufferCollectionImportToken GetBufferCollectionImportToken()=0
virtual sk_sp< SkSurface > GetSkiaSurface() const =0
virtual size_t AdvanceAndGetAge()=0
virtual zx::event GetReleaseFence()=0
virtual zx::event GetAcquireFence()=0
virtual SkISize GetSize() const =0
virtual uint32_t GetImageId()=0
virtual ~SurfaceProducerSurface()=default
virtual bool IsValid() const =0
virtual void SignalWritesFinished(const std::function< void(void)> &on_writes_committed)=0
virtual void SetImageId(uint32_t image_id)=0
virtual bool FlushSessionAcquireAndReleaseEvents()=0
virtual void SetReleaseImageCallback(ReleaseImageCallback release_image_callback)=0
std::function< void()> ReleaseImageCallback