| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_OZONE_PLATFORM_DRM_GPU_DRM_OVERLAY_PLANE_H_ |
| #define UI_OZONE_PLATFORM_DRM_GPU_DRM_OVERLAY_PLANE_H_ |
| |
| #include <vector> |
| |
| #include "base/bind.h" |
| #include "base/memory/ref_counted.h" |
| #include "ui/gfx/geometry/rect.h" |
| #include "ui/gfx/geometry/rect_f.h" |
| #include "ui/gfx/overlay_transform.h" |
| |
| namespace gfx { |
| class GpuFence; |
| } |
| |
| namespace ui { |
| |
| class ScanoutBuffer; |
| |
| struct DrmOverlayPlane; |
| typedef std::vector<DrmOverlayPlane> DrmOverlayPlaneList; |
| |
| struct DrmOverlayPlane { |
| // Simpler constructor for the primary plane. |
| explicit DrmOverlayPlane(const scoped_refptr<ScanoutBuffer>& buffer, |
| std::unique_ptr<gfx::GpuFence> gpu_fence); |
| |
| DrmOverlayPlane(const scoped_refptr<ScanoutBuffer>& buffer, |
| int z_order, |
| gfx::OverlayTransform plane_transform, |
| const gfx::Rect& display_bounds, |
| const gfx::RectF& crop_rect, |
| bool enable_blend, |
| std::unique_ptr<gfx::GpuFence> gpu_fence); |
| DrmOverlayPlane(DrmOverlayPlane&& other); |
| DrmOverlayPlane& operator=(DrmOverlayPlane&& other); |
| |
| bool operator<(const DrmOverlayPlane& plane) const; |
| |
| ~DrmOverlayPlane(); |
| |
| // Returns the primary plane in |overlays|. |
| static const DrmOverlayPlane* GetPrimaryPlane( |
| const DrmOverlayPlaneList& overlays); |
| |
| DrmOverlayPlane Clone() const; |
| |
| static std::vector<DrmOverlayPlane> Clone( |
| const std::vector<DrmOverlayPlane>& planes); |
| |
| scoped_refptr<ScanoutBuffer> buffer; |
| int z_order = 0; |
| gfx::OverlayTransform plane_transform; |
| gfx::Rect display_bounds; |
| gfx::RectF crop_rect; |
| bool enable_blend; |
| std::unique_ptr<gfx::GpuFence> gpu_fence; |
| }; |
| |
| } // namespace ui |
| |
| #endif // UI_OZONE_PLATFORM_DRM_GPU_DRM_OVERLAY_PLANE_H_ |