This source file includes following definitions.
- GetCrtc
 
- FreeCrtc
 
- SetCrtc
 
- SetCrtc
 
- AddFramebuffer
 
- RemoveFramebuffer
 
- PageFlip
 
- ConnectorSetProperty
 
- SetCursor
 
- MoveCursor
 
#include "ui/gfx/ozone/dri/dri_wrapper.h"
#include <fcntl.h>
#include <unistd.h>
#include <xf86drmMode.h>
#include "base/logging.h"
namespace gfx {
DriWrapper::DriWrapper(const char* device_path) {
  fd_ = open(device_path, O_RDWR | O_CLOEXEC);
}
DriWrapper::~DriWrapper() {
  if (fd_ >= 0)
    close(fd_);
}
drmModeCrtc* DriWrapper::GetCrtc(uint32_t crtc_id) {
  CHECK(fd_ >= 0);
  return drmModeGetCrtc(fd_, crtc_id);
}
void DriWrapper::FreeCrtc(drmModeCrtc* crtc) {
  drmModeFreeCrtc(crtc);
}
bool DriWrapper::SetCrtc(uint32_t crtc_id,
                              uint32_t framebuffer,
                              uint32_t* connectors,
                              drmModeModeInfo* mode) {
  CHECK(fd_ >= 0);
  return !drmModeSetCrtc(fd_, crtc_id, framebuffer, 0, 0, connectors, 1, mode);
}
bool DriWrapper::SetCrtc(drmModeCrtc* crtc, uint32_t* connectors) {
  CHECK(fd_ >= 0);
  return !drmModeSetCrtc(fd_,
                         crtc->crtc_id,
                         crtc->buffer_id,
                         crtc->x,
                         crtc->y,
                         connectors,
                         1,
                         &crtc->mode);
}
bool DriWrapper::AddFramebuffer(const drmModeModeInfo& mode,
                                     uint8_t depth,
                                     uint8_t bpp,
                                     uint32_t stride,
                                     uint32_t handle,
                                     uint32_t* framebuffer) {
  CHECK(fd_ >= 0);
  return !drmModeAddFB(fd_,
                       mode.hdisplay,
                       mode.vdisplay,
                       depth,
                       bpp,
                       stride,
                       handle,
                       framebuffer);
}
bool DriWrapper::RemoveFramebuffer(uint32_t framebuffer) {
  CHECK(fd_ >= 0);
  return !drmModeRmFB(fd_, framebuffer);
}
bool DriWrapper::PageFlip(uint32_t crtc_id,
                               uint32_t framebuffer,
                               void* data) {
  CHECK(fd_ >= 0);
  return !drmModePageFlip(fd_,
                          crtc_id,
                          framebuffer,
                          DRM_MODE_PAGE_FLIP_EVENT,
                          data);
}
bool DriWrapper::ConnectorSetProperty(uint32_t connector_id,
                                      uint32_t property_id,
                                      uint64_t value) {
  CHECK(fd_ >= 0);
  return !drmModeConnectorSetProperty(fd_, connector_id, property_id, value);
}
bool DriWrapper::SetCursor(uint32_t crtc_id,
                           uint32_t handle,
                           uint32_t width,
                           uint32_t height) {
  CHECK(fd_ >= 0);
  return !drmModeSetCursor(fd_, crtc_id, handle, width, height);
}
bool DriWrapper::MoveCursor(uint32_t crtc_id, int x, int y) {
  CHECK(fd_ >= 0);
  return !drmModeMoveCursor(fd_, crtc_id, x, y);
}
}