| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_GFX_LINUX_GBM_BUFFER_H_ |
| #define UI_GFX_LINUX_GBM_BUFFER_H_ |
| |
| #include <inttypes.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; |
| // TODO(reveman): This should not be needed once crbug.com/597932 is |
| // fixed, as the size would be queried directly from the underlying bo. |
| virtual gfx::Size GetSize() const = 0; |
| virtual gfx::BufferFormat GetBufferFormat() 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; |
| }; |
| |
| } // namespace ui |
| |
| #endif // UI_GFX_LINUX_GBM_BUFFER_H_ |