25 public std::enable_shared_from_this<ContextGLES> {
27 static std::shared_ptr<ContextGLES>
Create(
29 std::unique_ptr<ProcTableGLES> gl,
30 const std::vector<std::shared_ptr<fml::Mapping>>& shader_libraries,
31 bool enable_gpu_tracing,
32 std::shared_ptr<fml::BasicTaskRunner> io_task_runner =
nullptr);
40 const std::shared_ptr<ReactorGLES>&
GetReactor()
const;
43 const std::shared_ptr<ReactorGLES::Worker>& worker);
47 std::shared_ptr<GPUTracerGLES>
GetGPUTracer()
const {
return gpu_tracer_; }
54 std::shared_ptr<ReactorGLES> reactor_;
55 std::shared_ptr<GpuSubmissionTracker> submission_tracker_ =
56 std::make_shared<GpuSubmissionTracker>();
57 std::shared_ptr<ShaderLibraryGLES> shader_library_;
58 std::shared_ptr<PipelineLibraryGLES> pipeline_library_;
59 std::shared_ptr<SamplerLibraryGLES> sampler_library_;
60 std::shared_ptr<AllocatorGLES> resource_allocator_;
61 std::shared_ptr<CommandQueue> command_queue_;
62 std::shared_ptr<GPUTracerGLES> gpu_tracer_;
67 std::shared_ptr<const Capabilities> device_capabilities_;
68 bool is_valid_ =
false;
72 std::unique_ptr<ProcTableGLES> gl,
73 const std::vector<std::shared_ptr<fml::Mapping>>& shader_libraries,
74 bool enable_gpu_tracing,
75 std::shared_ptr<fml::BasicTaskRunner> io_task_runner =
nullptr);
78 std::string DescribeGpuModel()
const override;
81 bool IsValid()
const override;
84 std::shared_ptr<Allocator> GetResourceAllocator()
const override;
87 std::shared_ptr<const GpuSubmissionTracker> GetSubmissionTracker()
91 std::shared_ptr<ShaderLibrary> GetShaderLibrary()
const override;
94 std::shared_ptr<SamplerLibrary> GetSamplerLibrary()
const override;
97 std::shared_ptr<PipelineLibrary> GetPipelineLibrary()
const override;
100 std::shared_ptr<CommandBuffer> CreateCommandBuffer()
const override;
103 const std::shared_ptr<const Capabilities>& GetCapabilities()
const override;
106 std::shared_ptr<CommandQueue> GetCommandQueue()
const override;
109 void Shutdown()
override;
112 bool AddTrackingFence(
const std::shared_ptr<Texture>&
texture)
const override;
115 void ResetThreadLocalState()
const override;
118 [[nodiscard]]
bool EnqueueCommandBuffer(
122 [[nodiscard]]
bool FlushCommandBuffers()
override;
125 [[nodiscard]]
bool FinishQueue()
override;
std::shared_ptr< GPUTracerGLES > GetGPUTracer() const
const std::shared_ptr< GpuSubmissionTracker > & GetMutableSubmissionTracker() const
BackendType GetBackendType() const override
Get the graphics backend of an Impeller context.
bool RemoveReactorWorker(ReactorGLES::WorkerID id)
static std::shared_ptr< ContextGLES > Create(const Flags &flags, std::unique_ptr< ProcTableGLES > gl, const std::vector< std::shared_ptr< fml::Mapping > > &shader_libraries, bool enable_gpu_tracing, std::shared_ptr< fml::BasicTaskRunner > io_task_runner=nullptr)
const std::shared_ptr< ReactorGLES > & GetReactor() const
std::optional< ReactorGLES::WorkerID > AddReactorWorker(const std::shared_ptr< ReactorGLES::Worker > &worker)
To do anything rendering related with Impeller, you need a context.