#ifndef MEDIA_GPU_COMMAND_BUFFER_HELPER_H_
#define MEDIA_GPU_COMMAND_BUFFER_HELPER_H_
#include "base/functional/callback_forward.h"
#include "base/memory/ref_counted.h"
#include "base/memory/ref_counted_delete_on_sequence.h"
#include "base/memory/scoped_refptr.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/sequenced_task_runner_helpers.h"
#include "build/build_config.h"
#include "gpu/command_buffer/common/sync_token.h"
#include "media/gpu/media_gpu_export.h"
#include "ui/gl/gl_bindings.h"
namespace gpu {
class CommandBufferStub;
class MemoryTypeTracker;
class SharedImageManager;
class SharedImageStub;
}
namespace media {
class MEDIA_GPU_EXPORT CommandBufferHelper
: public base::RefCountedDeleteOnSequence<CommandBufferHelper> {
public:
REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE();
using WillDestroyStubCB = base::OnceCallback<void(bool have_context)>;
static scoped_refptr<CommandBufferHelper> Create(
gpu::CommandBufferStub* stub);
CommandBufferHelper(const CommandBufferHelper&) = delete;
CommandBufferHelper& operator=(const CommandBufferHelper&) = delete;
virtual void WaitForSyncToken(gpu::SyncToken sync_token,
base::OnceClosure done_cb) = 0;
#if !BUILDFLAG(IS_ANDROID)
virtual gpu::SharedImageStub* GetSharedImageStub() = 0;
virtual gpu::MemoryTypeTracker* GetMemoryTypeTracker() = 0;
#endif
virtual gpu::SharedImageManager* GetSharedImageManager() = 0;
protected:
explicit CommandBufferHelper(
scoped_refptr<base::SequencedTaskRunner> task_runner);
virtual ~CommandBufferHelper() = default;
private:
friend class base::DeleteHelper<CommandBufferHelper>;
friend class base::RefCountedDeleteOnSequence<CommandBufferHelper>;
};
}
#endif