summaryrefslogtreecommitdiffstats
path: root/sdm/libs/hwc2/hwc_display_primary.h
diff options
context:
space:
mode:
Diffstat (limited to 'sdm/libs/hwc2/hwc_display_primary.h')
-rw-r--r--sdm/libs/hwc2/hwc_display_primary.h36
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