1 // 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 5 #ifndef UI_GFX_LINUX_GBM_DEVICE_H_ 6 #define UI_GFX_LINUX_GBM_DEVICE_H_ 7 8 #include <gbm.h> 9 #include <memory> 10 11 #include "base/files/file.h" 12 #include "base/macros.h" 13 #include "ui/gfx/geometry/size.h" 14 #include "ui/gfx/native_pixmap_handle.h" 15 16 namespace ui { 17 18 class GbmBuffer; 19 20 class GbmDevice { 21 public: ~GbmDevice()22 virtual ~GbmDevice() {} 23 24 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; 32 virtual std::unique_ptr<GbmBuffer> CreateBufferFromHandle( 33 uint32_t format, 34 const gfx::Size& size, 35 gfx::NativePixmapHandle handle) = 0; 36 }; 37 38 } // namespace ui 39 40 #endif // UI_GFX_LINUX_GBM_DEVICE_H_ 41