Index: ui/gfx/ozone/impl/drm_wrapper_ozone.h |
diff --git a/ui/gfx/ozone/impl/drm_wrapper_ozone.h b/ui/gfx/ozone/impl/drm_wrapper_ozone.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..742b2b7fb4d7d8791875dd4ccccc1113dd3a75f8 |
--- /dev/null |
+++ b/ui/gfx/ozone/impl/drm_wrapper_ozone.h |
@@ -0,0 +1,79 @@ |
+// Copyright (c) 2013 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_GFX_OZONE_IMPL_DRM_WRAPPER_OZONE_H_ |
+#define UI_GFX_OZONE_IMPL_DRM_WRAPPER_OZONE_H_ |
+ |
+#include <stdint.h> |
+ |
+#include "base/basictypes.h" |
+ |
+typedef struct _drmModeCrtc drmModeCrtc; |
+typedef struct _drmModeModeInfo drmModeModeInfo; |
+ |
+namespace gfx { |
+ |
+// Wraps DRM calls into a nice interface. Used to provide different |
+// implementations of the DRM calls. For the actual implementation the DRM API |
+// would be called. In unit tests this interface would be stubbed. |
+class DrmWrapperOzone { |
+ public: |
+ DrmWrapperOzone(const char* device_path); |
+ virtual ~DrmWrapperOzone(); |
+ |
+ // Get the CRTC state. This is generally used to save state before using the |
+ // CRTC. When the user finishes using the CRTC, the user should restore the |
+ // CRTC to it's initial state. Use |SetCrtc| to restore the state. |
+ virtual drmModeCrtc* GetCrtc(uint32_t crtc_id); |
+ |
+ // Frees the CRTC mode object. |
+ virtual void FreeCrtc(drmModeCrtc* crtc); |
+ |
+ // Used to configure CRTC with ID |crtc_id| to use the connector in |
+ // |connectors|. The CRTC will be configured with mode |mode| and will display |
+ // the framebuffer with ID |framebuffer|. Before being able to display the |
+ // framebuffer, it should be registered with the CRTC using |AddFramebuffer|. |
+ virtual bool SetCrtc(uint32_t crtc_id, |
+ uint32_t framebuffer, |
+ uint32_t* connectors, |
+ drmModeModeInfo* mode); |
+ |
+ // Used to set a specific configuration to the CRTC. Normally this function |
+ // would be called with a CRTC saved state (from |GetCrtc|) to restore it to |
+ // its original configuration. |
+ virtual bool SetCrtc(drmModeCrtc* crtc, uint32_t* connectors); |
+ |
+ // Register a buffer with the CRTC. On successful registration, the CRTC will |
+ // assign a framebuffer ID to |framebuffer|. |
+ virtual bool AddFramebuffer(const drmModeModeInfo& mode, |
+ uint8_t depth, |
+ uint8_t bpp, |
+ uint32_t stride, |
+ uint32_t handle, |
+ uint32_t* framebuffer); |
+ |
+ // Deregister the given |framebuffer|. |
+ virtual bool RemoveFramebuffer(uint32_t framebuffer); |
+ |
+ // Schedules a pageflip for CRTC |crtc_id|. This function will return |
+ // immediately. Upon completion of the pageflip event, the CRTC will be |
+ // displaying the buffer with ID |framebuffer| and will have a DRM event |
+ // queued on |fd_|. |data| is a generic pointer to some information the user |
+ // will receive when processing the pageflip event. |
+ virtual bool PageFlip(uint32_t crtc_id, uint32_t framebuffer, void* data); |
+ |
+ int get_fd() const { return fd_; } |
+ |
+ protected: |
+ // The file descriptor associated with this wrapper. All DRM operations will |
+ // be performed using this FD. |
+ int fd_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(DrmWrapperOzone); |
+}; |
+ |
+} // namespace gfx |
+ |
+#endif // UI_GFX_OZONE_IMPL_DRM_WRAPPER_OZONE_H_ |