blob: 50f7fe56b0b5f4773b8178fd3e1db7e4da1529a9 [file] [log] [blame]
Michael Spang6d378be2018-08-01 19:11:141// Copyright 2018 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Tom Anderson374e34512019-12-10 23:27:165#ifndef UI_GFX_LINUX_GBM_DEVICE_H_
6#define UI_GFX_LINUX_GBM_DEVICE_H_
Michael Spang6d378be2018-08-01 19:11:147
Michael Spang2829d0d2019-03-21 21:10:258#include <gbm.h>
9#include <memory>
10
Michael Spang6d378be2018-08-01 19:11:1411#include "base/files/file.h"
12#include "base/macros.h"
Michael Spang20fccf32018-08-03 22:13:1013#include "ui/gfx/geometry/size.h"
14#include "ui/gfx/native_pixmap_handle.h"
Michael Spang6d378be2018-08-01 19:11:1415
Michael Spang6d378be2018-08-01 19:11:1416namespace ui {
17
Michael Spang20fccf32018-08-03 22:13:1018class GbmBuffer;
19
Michael Spang6d378be2018-08-01 19:11:1420class GbmDevice {
21 public:
Michael Spang20fccf32018-08-03 22:13:1022 virtual ~GbmDevice() {}
Michael Spang6d378be2018-08-01 19:11:1423
Michael Spang20fccf32018-08-03 22:13:1024 virtual std::unique_ptr<GbmBuffer> CreateBuffer(uint32_t format,
25 const gfx::Size& size,
26 uint32_t flags) = 0;
27 virtual std::unique_ptr<GbmBuffer> CreateBufferWithModifiers(
28 uint32_t format,
29 const gfx::Size& size,
30 uint32_t flags,
31 const std::vector<uint64_t>& modifiers) = 0;
Sergey Ulanovac89bb92019-03-22 18:46:4932 virtual std::unique_ptr<GbmBuffer> CreateBufferFromHandle(
Michael Spang20fccf32018-08-03 22:13:1033 uint32_t format,
34 const gfx::Size& size,
Sergey Ulanovac89bb92019-03-22 18:46:4935 gfx::NativePixmapHandle handle) = 0;
Michael Spang6d378be2018-08-01 19:11:1436};
37
38} // namespace ui
39
Tom Anderson374e34512019-12-10 23:27:1640#endif // UI_GFX_LINUX_GBM_DEVICE_H_