#ifndef UI_GFX_LINUX_GBM_BUFFER_H_
#define UI_GFX_LINUX_GBM_BUFFER_H_
#include <inttypes.h>
#include "components/viz/common/resources/shared_image_format.h"
#include "components/viz/common/resources/shared_image_format_utils.h"
#include "third_party/skia/include/core/SkRefCnt.h"
#include "ui/gfx/buffer_types.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/native_pixmap_handle.h"
class SkSurface;
namespace ui {
class GbmBuffer {
public:
virtual ~GbmBuffer() {}
virtual uint32_t GetFormat() const = 0;
virtual uint64_t GetFormatModifier() const = 0;
virtual uint32_t GetFlags() const = 0;
virtual gfx::Size GetSize() const = 0;
virtual viz::SharedImageFormat GetSharedImageFormat() const = 0;
virtual bool AreFdsValid() const = 0;
virtual size_t GetNumPlanes() const = 0;
virtual bool SupportsZeroCopyWebGPUImport() const = 0;
virtual int GetPlaneFd(size_t plane) const = 0;
virtual uint32_t GetPlaneHandle(size_t plane) const = 0;
virtual uint32_t GetPlaneStride(size_t plane) const = 0;
virtual size_t GetPlaneOffset(size_t plane) const = 0;
virtual size_t GetPlaneSize(size_t plane) const = 0;
virtual uint32_t GetHandle() const = 0;
virtual gfx::NativePixmapHandle ExportHandle() const = 0;
virtual sk_sp<SkSurface> GetSurface() = 0;
};
}
#endif