1 // Copyright 2020 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_OZONE_PLATFORM_DRM_GPU_CRTC_COMMIT_REQUEST_H_ 6 #define UI_OZONE_PLATFORM_DRM_GPU_CRTC_COMMIT_REQUEST_H_ 7 8 #include <stddef.h> 9 #include <stdint.h> 10 #include <xf86drmMode.h> 11 12 #include "ui/ozone/platform/drm/gpu/drm_device.h" 13 #include "ui/ozone/platform/drm/gpu/drm_overlay_plane.h" 14 15 namespace ui { 16 17 struct HardwareDisplayPlaneList; 18 19 class CrtcCommitRequest; 20 using CommitRequest = std::vector<CrtcCommitRequest>; 21 22 // Container holding information for a single CRTC that need to be modeset. 23 // TODO(markyacoub): PAGE_FLIP could re-use the same CrtcCommitRequest. The 24 // difference between MODESET and PAGE_FLIP are minimal. 25 class CrtcCommitRequest { 26 public: 27 CrtcCommitRequest(const CrtcCommitRequest& other); 28 ~CrtcCommitRequest(); 29 30 static CrtcCommitRequest EnableCrtcRequest( 31 uint32_t crtc_id, 32 uint32_t connector_id, 33 drmModeModeInfo mode, 34 HardwareDisplayPlaneList* plane_list, 35 DrmOverlayPlaneList overlays); 36 37 static CrtcCommitRequest DisableCrtcRequest( 38 uint32_t crtc_id, 39 uint32_t connector_id, 40 HardwareDisplayPlaneList* plane_list = nullptr); 41 should_enable()42 bool should_enable() const { return should_enable_; } crtc_id()43 uint32_t crtc_id() const { return crtc_id_; } connector_id()44 uint32_t connector_id() const { return connector_id_; } mode()45 const drmModeModeInfo& mode() const { return mode_; } plane_list()46 HardwareDisplayPlaneList* plane_list() const { return plane_list_; } overlays()47 const DrmOverlayPlaneList& overlays() const { return overlays_; } 48 49 private: 50 CrtcCommitRequest(uint32_t crtc_id, 51 uint32_t connector_id, 52 drmModeModeInfo mode, 53 HardwareDisplayPlaneList* plane_list, 54 DrmOverlayPlaneList overlays, 55 bool should_enable); 56 57 const bool should_enable_ = false; 58 const uint32_t crtc_id_ = 0; 59 const uint32_t connector_id_ = 0; 60 const drmModeModeInfo mode_ = {}; 61 HardwareDisplayPlaneList* plane_list_ = nullptr; 62 const DrmOverlayPlaneList overlays_; 63 }; 64 65 } // namespace ui 66 67 #endif // UI_OZONE_PLATFORM_DRM_GPU_CRTC_COMMIT_REQUEST_H_ 68