// Copyright 2023 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_GRAPHITE_UTILS_H_
#define GPU_COMMAND_BUFFER_SERVICE_GRAPHITE_UTILS_H_

#include <cstddef>

#include "gpu/gpu_gles2_export.h"

class SkImage;
struct SkImageInfo;
class SkSurface;

namespace skgpu::graphite {
class Recorder;
}  // namespace skgpu::graphite

namespace gpu {
class GraphiteSharedContext;

GPU_GLES2_EXPORT
void GraphiteFlush(GraphiteSharedContext* context,
                   skgpu::graphite::Recorder* recorder);

GPU_GLES2_EXPORT
void GraphiteFlushAndSubmit(GraphiteSharedContext* context,
                            skgpu::graphite::Recorder* recorder);

// Synchronously read pixels from a graphite image.
// Note this is for single plane image.
// TODO(crbug.com/40924444): Add a function to read multiplanar image.
GPU_GLES2_EXPORT
bool GraphiteReadPixelsSync(GraphiteSharedContext* context,
                            skgpu::graphite::Recorder* recorder,
                            SkImage* image,
                            const SkImageInfo& dst_info,
                            void* dst_pointer,
                            size_t dst_bytes_per_row,
                            int src_x,
                            int src_y);

GPU_GLES2_EXPORT
bool GraphiteReadPixelsSync(GraphiteSharedContext* context,
                            skgpu::graphite::Recorder* recorder,
                            SkSurface* surface,
                            const SkImageInfo& dst_info,
                            void* dst_pointer,
                            size_t dst_bytes_per_row,
                            int src_x,
                            int src_y);

}  // namespace gpu

#endif  // GPU_COMMAND_BUFFER_SERVICE_GRAPHITE_UTILS_H_
