Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / ui / ozone / platform / drm / gpu / gbm_buffer.h
blob4f420e71df4169554dd6e2a3699a975405089bdf
1 // Copyright 2014 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.
5 #ifndef UI_OZONE_PLATFORM_DRM_GPU_GBM_BUFFER_H_
6 #define UI_OZONE_PLATFORM_DRM_GPU_GBM_BUFFER_H_
8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "ui/gfx/geometry/size.h"
11 #include "ui/ozone/platform/drm/gpu/gbm_buffer_base.h"
12 #include "ui/ozone/platform/drm/gpu/screen_manager.h"
13 #include "ui/ozone/public/native_pixmap.h"
14 #include "ui/ozone/public/surface_factory_ozone.h"
16 struct gbm_bo;
18 namespace ui {
20 class GbmDevice;
22 class GbmBuffer : public GbmBufferBase {
23 public:
24 static scoped_refptr<GbmBuffer> CreateBuffer(
25 const scoped_refptr<GbmDevice>& gbm,
26 SurfaceFactoryOzone::BufferFormat format,
27 const gfx::Size& size,
28 bool scanout);
30 private:
31 GbmBuffer(const scoped_refptr<GbmDevice>& gbm, gbm_bo* bo, bool scanout);
32 ~GbmBuffer() override;
34 DISALLOW_COPY_AND_ASSIGN(GbmBuffer);
37 class GbmPixmap : public NativePixmap {
38 public:
39 GbmPixmap(const scoped_refptr<GbmBuffer>& buffer,
40 ScreenManager* screen_manager);
41 bool Initialize();
42 void SetScalingCallback(const ScalingCallback& scaling_callback) override;
43 scoped_refptr<NativePixmap> GetScaledPixmap(gfx::Size new_size) override;
45 // NativePixmap:
46 void* GetEGLClientBuffer() override;
47 int GetDmaBufFd() override;
48 int GetDmaBufPitch() override;
49 bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
50 int plane_z_order,
51 gfx::OverlayTransform plane_transform,
52 const gfx::Rect& display_bounds,
53 const gfx::RectF& crop_rect) override;
55 scoped_refptr<GbmBuffer> buffer() { return buffer_; }
57 private:
58 ~GbmPixmap() override;
59 bool ShouldApplyScaling(const gfx::Rect& display_bounds,
60 const gfx::RectF& crop_rect,
61 gfx::Size* required_size);
63 scoped_refptr<GbmBuffer> buffer_;
64 int dma_buf_ = -1;
66 ScreenManager* screen_manager_; // Not owned.
68 ScalingCallback scaling_callback_;
70 DISALLOW_COPY_AND_ASSIGN(GbmPixmap);
73 } // namespace ui
75 #endif // UI_OZONE_PLATFORM_DRM_GPU_GBM_BUFFER_H_