// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef GPU_COMMAND_BUFFER_SERVICE_WEBGPU_DECODER_IMPL_H_
#define GPU_COMMAND_BUFFER_SERVICE_WEBGPU_DECODER_IMPL_H_

#include "gpu/gpu_gles2_export.h"

#include "base/memory/scoped_refptr.h"

namespace gpu {

class CommandBufferServiceBase;
class DecoderClient;
struct GpuPreferences;
class IsolationKeyProvider;
class MemoryTracker;
class SharedContextState;
class SharedImageManager;

namespace gles2 {
class Outputter;
}  // namespace gles2

namespace webgpu {

struct DawnCacheOptions;
class WebGPUDecoder;

GPU_GLES2_EXPORT std::unique_ptr<WebGPUDecoder> CreateWebGPUDecoderImpl(
    DecoderClient* client,
    CommandBufferServiceBase* command_buffer_service,
    SharedImageManager* shared_image_manager,
    scoped_refptr<MemoryTracker> memory_tracker,
    gles2::Outputter* outputter,
    const GpuPreferences& gpu_preferences,
    scoped_refptr<SharedContextState> shared_context_state,
    const DawnCacheOptions& dawn_cache_options,
    IsolationKeyProvider* isolation_key_provider);

}  // namespace webgpu
}  // namespace gpu

#endif  // GPU_COMMAND_BUFFER_SERVICE_WEBGPU_DECODER_IMPL_H_
