Index: ui/ozone/platform/drm/gpu/drm_console_buffer.h |
diff --git a/ui/ozone/platform/drm/gpu/drm_console_buffer.h b/ui/ozone/platform/drm/gpu/drm_console_buffer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..27dc03855c218a28efe1cd9d874674f6de147ce3 |
--- /dev/null |
+++ b/ui/ozone/platform/drm/gpu/drm_console_buffer.h |
@@ -0,0 +1,62 @@ |
+// 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_CONSOLE_BUFFER_H_ |
+#define UI_OZONE_PLATFORM_DRM_GPU_DRM_CONSOLE_BUFFER_H_ |
+ |
+#include "base/macros.h" |
+#include "base/memory/ref_counted.h" |
+#include "skia/ext/refptr.h" |
+#include "third_party/skia/include/core/SkSurface.h" |
+ |
+class SkCanvas; |
+ |
+namespace ui { |
+ |
+class DrmDevice; |
+ |
+// Wrapper for the console buffer. This is the buffer that is allocated by |
+// default by the system and is used when no application is controlling the |
+// CRTC. Keeps track of the native properties of the buffer and wraps the pixel |
+// memory into a SkSurface which can be used to draw into using Skia. |
+class DrmConsoleBuffer { |
+ public: |
+ DrmConsoleBuffer(const scoped_refptr<DrmDevice>& drm, uint32_t framebuffer); |
+ ~DrmConsoleBuffer(); |
+ |
+ SkCanvas* canvas() { return surface_->getCanvas(); } |
+ skia::RefPtr<SkImage> image() { |
+ return skia::AdoptRef(surface_->newImageSnapshot()); |
+ } |
+ |
+ // Memory map the backing pixels and wrap them in |surface_|. |
+ bool Initialize(); |
+ |
+ protected: |
+ scoped_refptr<DrmDevice> drm_; |
+ |
+ // Wrapper around the native pixel memory. |
+ skia::RefPtr<SkSurface> surface_; |
+ |
+ // Length of a row of pixels. |
+ uint32_t stride_ = 0; |
+ |
+ // Buffer handle used by the DRM allocator. |
+ uint32_t handle_ = 0; |
+ |
+ // Buffer ID used by the DRM modesettings API. |
+ uint32_t framebuffer_ = 0; |
+ |
+ // Memory map base address. |
+ void* mmap_base_ = nullptr; |
+ |
+ // Memory map size. |
+ size_t mmap_size_ = 0; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DrmConsoleBuffer); |
+}; |
+ |
+} // namespace ui |
+ |
+#endif // UI_OZONE_PLATFORM_DRM_GPU_DRM_CONSOLE_BUFFER_H_ |