#ifndef ANDROID_WEBVIEW_BROWSER_GFX_TASK_FORWARDING_SEQUENCE_H_
#define ANDROID_WEBVIEW_BROWSER_GFX_TASK_FORWARDING_SEQUENCE_H_
#include <vector>
#include "base/memory/raw_ptr.h"
#include "gpu/command_buffer/service/single_task_sequence.h"
namespace android_webview {
class TaskQueueWebView;
class TaskForwardingSequence : public gpu::SingleTaskSequence {
public:
explicit TaskForwardingSequence(TaskQueueWebView* task_queue);
TaskForwardingSequence(const TaskForwardingSequence&) = delete;
TaskForwardingSequence& operator=(const TaskForwardingSequence&) = delete;
~TaskForwardingSequence() override;
gpu::SequenceId GetSequenceId() override;
bool ShouldYield() override;
void ScheduleTask(gpu::TaskCallback task,
std::vector<gpu::SyncToken> sync_token_fences,
const gpu::SyncToken& release,
gpu::ReportingCallback report_callback =
gpu::ReportingCallback()) override;
void ScheduleTask(base::OnceClosure task,
std::vector<gpu::SyncToken> sync_token_fences,
const gpu::SyncToken& release,
gpu::ReportingCallback report_callback =
gpu::ReportingCallback()) override;
void ScheduleOrRetainTask(base::OnceClosure task,
std::vector<gpu::SyncToken> sync_token_fences,
const gpu::SyncToken& release,
gpu::ReportingCallback report_callback =
gpu::ReportingCallback()) override;
void ContinueTask(gpu::TaskCallback task) override;
void ContinueTask(base::OnceClosure task) override;
[[nodiscard]] gpu::ScopedSyncPointClientState CreateSyncPointClientState(
gpu::CommandBufferNamespace namespace_id,
gpu::CommandBufferId command_buffer_id) override;
private:
const raw_ptr<TaskQueueWebView> task_queue_;
};
}
#endif