diff options
Diffstat (limited to 'sdm/libs/hwc2/hwc_display_primary.h')
-rw-r--r-- | sdm/libs/hwc2/hwc_display_primary.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/sdm/libs/hwc2/hwc_display_primary.h b/sdm/libs/hwc2/hwc_display_primary.h index 6737e4db..332a2a3d 100644 --- a/sdm/libs/hwc2/hwc_display_primary.h +++ b/sdm/libs/hwc2/hwc_display_primary.h @@ -33,6 +33,7 @@ #include <hardware/google/light/1.0/ILight.h> #include <limits> #include <string> +#include <mutex> #include "cpuhint.h" #include "hwc_display.h" @@ -55,6 +56,7 @@ class HWCDisplayPrimary : public HWCDisplay { HWCDisplay **hwc_display); static void Destroy(HWCDisplay *hwc_display); virtual int Init(); + virtual int Deinit() override; virtual HWC2::Error Validate(uint32_t *out_num_types, uint32_t *out_num_requests); virtual HWC2::Error Present(int32_t *out_retire_fence); virtual HWC2::Error GetColorModes(uint32_t *out_num_modes, ColorMode *out_modes); @@ -78,6 +80,18 @@ class HWCDisplayPrimary : public HWCDisplay { virtual HWC2::Error SetReadbackBuffer(const native_handle_t *buffer, int32_t acquire_fence, bool post_processed_output); virtual HWC2::Error GetReadbackBufferFence(int32_t *release_fence); + virtual HWC2::Error PostCommitLayerStack(int32_t *out_retire_fence); + virtual HWC2::Error ControlIdlePowerCollapse(bool enable, bool synchronous); + + virtual HWC2::Error SetDisplayedContentSamplingEnabledVndService(bool enabled); + virtual HWC2::Error SetDisplayedContentSamplingEnabled(int32_t enabled, uint8_t component_mask, uint64_t max_frames) override; + virtual HWC2::Error GetDisplayedContentSamplingAttributes(int32_t* format, int32_t* dataspace, + uint8_t* supported_components) override; + virtual HWC2::Error GetDisplayedContentSample(uint64_t max_frames, + uint64_t timestamp, uint64_t* numFrames, + int32_t samples_size[NUM_HISTOGRAM_COLOR_COMPONENTS], + uint64_t* samples[NUM_HISTOGRAM_COLOR_COMPONENTS]) override; + std::string Dump() override; private: HWCDisplayPrimary(CoreInterface *core_intf, BufferAllocator *buffer_allocator, @@ -94,6 +108,18 @@ class HWCDisplayPrimary : public HWCDisplay { void HandleFrameDump(); DisplayError SetMixerResolution(uint32_t width, uint32_t height); DisplayError GetMixerResolution(uint32_t *width, uint32_t *height); + class PMICInterface { + public: + PMICInterface() { } + ~PMICInterface() { } + DisplayError Init(); + void Deinit(); + DisplayError Notify(bool secure_display_start); + + private: + int fd_lcd_bias_ = -1; + int fd_wled_ = -1; + }; BufferAllocator *buffer_allocator_ = nullptr; CPUHint *cpu_hint_ = nullptr; @@ -116,6 +142,16 @@ class HWCDisplayPrimary : public HWCDisplay { android::sp<hardware::google::light::V1_0::ILight> vendor_ILight_ = nullptr; bool has_init_light_server_ = false; bool high_brightness_mode_ = false; + + // Members for Color sampling feature + histogram::HistogramCollector histogram; + std::mutex sampling_mutex; + bool api_sampling_vote = false; + bool vndservice_sampling_vote = false; + + // PMIC interface to notify secure display start/end + PMICInterface *pmic_intf_ = nullptr; + bool pmic_notification_pending_ = false; }; } // namespace sdm |