diff options
author | dnicoara <dnicoara@chromium.org> | 2015-03-05 12:46:18 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-05 20:47:08 +0000 |
commit | 171d8c892da1b2e38f90c17b62896ba82f0719e3 (patch) | |
tree | 9fe2810948b2d8dfd73cd7a5afa002dcf79c0547 /ui/ozone/platform/drm/gpu/drm_buffer.h | |
parent | f36607f2398cb4aa9b50449b1221bbc72e3f3453 (diff) | |
download | chromium_src-171d8c892da1b2e38f90c17b62896ba82f0719e3.zip chromium_src-171d8c892da1b2e38f90c17b62896ba82f0719e3.tar.gz chromium_src-171d8c892da1b2e38f90c17b62896ba82f0719e3.tar.bz2 |
[Ozone] Rename and split the DRI platform for clarity
This CL does the following:
- Moves the files in ui/ozone/platform/dri to ui/ozone/platform/drm
since the platform name should really be DRM rather than DRI. Note,
that the platform is still refered to as "dri" in GYP/GN since CrOS
builds are still using the 'dri' name.
- Rename all files with a "_dri*" suffix to a "drm_" prefix. Also
rename all files with a "dri_" prefix to a "drm_" prefix.
- Rename NativeDisplayDelegateDri to DrmDisplayDelegateManager since it
is no longer dependent on the NativeDisplayDelegate interface and the
new name better describes its intent.
- Split the files in the platform into 2 sub-folders ("host" and
"gpu"). Depending on the intended use place of the objects (Browser
(host) process or GPU process) the files in the platform are split
accordingly in the 2 sub-folders.
BUG=none
TBR=jam@chromium.org
Review URL: https://codereview.chromium.org/975063002
Cr-Commit-Position: refs/heads/master@{#319320}
Diffstat (limited to 'ui/ozone/platform/drm/gpu/drm_buffer.h')
-rw-r--r-- | ui/ozone/platform/drm/gpu/drm_buffer.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/ui/ozone/platform/drm/gpu/drm_buffer.h b/ui/ozone/platform/drm/gpu/drm_buffer.h new file mode 100644 index 0000000..18ad9af --- /dev/null +++ b/ui/ozone/platform/drm/gpu/drm_buffer.h @@ -0,0 +1,74 @@ +// 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_BUFFER_H_ +#define UI_OZONE_PLATFORM_DRM_GPU_DRM_BUFFER_H_ + +#include "base/macros.h" +#include "skia/ext/refptr.h" +#include "third_party/skia/include/core/SkSurface.h" +#include "ui/ozone/ozone_export.h" +#include "ui/ozone/platform/drm/gpu/scanout_buffer.h" + +namespace ui { + +class DrmDevice; + +// Wrapper for a DRM allocated buffer. 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 OZONE_EXPORT DrmBuffer : public ScanoutBuffer { + public: + DrmBuffer(const scoped_refptr<DrmDevice>& drm); + + // Allocates the backing pixels and wraps them in |surface_|. |info| is used + // to describe the buffer characteristics (size, color format). + // |should_register_framebuffer| is used to distinguish the buffers that are + // used for modesetting. + bool Initialize(const SkImageInfo& info, bool should_register_framebuffer); + + SkCanvas* GetCanvas() const; + + // ScanoutBuffer: + uint32_t GetFramebufferId() const override; + uint32_t GetHandle() const override; + gfx::Size GetSize() const override; + + protected: + ~DrmBuffer() override; + + scoped_refptr<DrmDevice> drm_; + + // Wrapper around the native pixel memory. + skia::RefPtr<SkSurface> surface_; + + // Length of a row of pixels. + uint32_t stride_; + + // Buffer handle used by the DRM allocator. + uint32_t handle_; + + // Buffer ID used by the DRM modesettings API. This is set when the buffer is + // registered with the CRTC. + uint32_t framebuffer_; + + DISALLOW_COPY_AND_ASSIGN(DrmBuffer); +}; + +class OZONE_EXPORT DrmBufferGenerator : public ScanoutBufferGenerator { + public: + DrmBufferGenerator(); + ~DrmBufferGenerator() override; + + // ScanoutBufferGenerator: + scoped_refptr<ScanoutBuffer> Create(const scoped_refptr<DrmDevice>& drm, + const gfx::Size& size) override; + + private: + DISALLOW_COPY_AND_ASSIGN(DrmBufferGenerator); +}; + +} // namespace ui + +#endif // UI_OZONE_PLATFORM_DRM_GPU_DRM_BUFFER_H_ |