aboutsummaryrefslogtreecommitdiff
path: root/hwc2_device/HwcDisplay.h
diff options
context:
space:
mode:
Diffstat (limited to 'hwc2_device/HwcDisplay.h')
-rw-r--r--hwc2_device/HwcDisplay.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/hwc2_device/HwcDisplay.h b/hwc2_device/HwcDisplay.h
index bf95c3e..13d4328 100644
--- a/hwc2_device/HwcDisplay.h
+++ b/hwc2_device/HwcDisplay.h
@@ -37,6 +37,7 @@ class DrmHwcTwo;
inline constexpr uint32_t kPrimaryDisplay = 0;
+// NOLINTNEXTLINE
class HwcDisplay {
public:
HwcDisplay(hwc2_display_t handle, HWC2::DisplayType type, DrmHwcTwo *hwc2);
@@ -44,7 +45,7 @@ class HwcDisplay {
~HwcDisplay();
/* SetPipeline should be carefully used only by DrmHwcTwo hotplug handlers */
- void SetPipeline(DrmDisplayPipeline *pipeline);
+ void SetPipeline(std::shared_ptr<DrmDisplayPipeline> pipeline);
HWC2::Error CreateComposition(AtomicCommitArgs &a_args);
std::vector<HwcLayer *> GetOrderLayersByZPos();
@@ -182,6 +183,15 @@ class HwcDisplay {
return flatcon_;
}
+ auto &GetWritebackLayer() {
+ return writeback_layer_;
+ }
+
+ void SetVirtualDisplayResolution(uint16_t width, uint16_t height) {
+ virtual_disp_width_ = width;
+ virtual_disp_height_ = height;
+ }
+
private:
HwcDisplayConfigs configs_;
@@ -193,7 +203,7 @@ class HwcDisplay {
int64_t staged_mode_change_time_{};
uint32_t staged_mode_config_id_{};
- DrmDisplayPipeline *pipeline_{};
+ std::shared_ptr<DrmDisplayPipeline> pipeline_;
std::unique_ptr<Backend> backend_;
std::shared_ptr<FlatteningController> flatcon_;
@@ -210,6 +220,9 @@ class HwcDisplay {
std::map<hwc2_layer_t, HwcLayer> layers_;
HwcLayer client_layer_;
+ std::unique_ptr<HwcLayer> writeback_layer_;
+ uint16_t virtual_disp_width_{};
+ uint16_t virtual_disp_height_{};
int32_t color_mode_{};
static constexpr int kCtmRows = 3;
static constexpr int kCtmCols = 3;