sdm: rotator: Port min downscale and downscale compression
Port min downscale and downscale compression capabilities support
to DRM path
Change-Id: I4842d1598195aef09159801a7efcd0a61ee9840e
CRs-fixed: 1114808
diff --git a/sdm/libs/core/drm/hw_info_drm.cpp b/sdm/libs/core/drm/hw_info_drm.cpp
index 2fdef4e..14a6e47 100644
--- a/sdm/libs/core/drm/hw_info_drm.cpp
+++ b/sdm/libs/core/drm/hw_info_drm.cpp
@@ -430,10 +430,11 @@
}
DisplayError HWInfoDRM::GetHWRotatorInfo(HWResourceInfo *hw_resource) {
+ string v4l2_path = "/sys/class/video4linux/video";
const uint32_t kMaxV4L2Nodes = 64;
for (uint32_t i = 0; i < kMaxV4L2Nodes; i++) {
- string path = "/sys/class/video4linux/video" + to_string(i) + "/name";
+ string path = v4l2_path + to_string(i) + "/name";
Sys::fstream fs(path, fstream::in);
if (!fs.is_open()) {
continue;
@@ -446,13 +447,33 @@
hw_resource->hw_rot_info.type = HWRotatorInfo::ROT_TYPE_V4L2;
hw_resource->hw_rot_info.has_downscale = true;
GetRotatorSupportedFormats(i, hw_resource);
+
+ string caps_path = v4l2_path + to_string(i) + "/device/caps";
+ Sys::fstream caps_fs(caps_path, fstream::in);
+
+ if (caps_fs.is_open()) {
+ string caps;
+ while (Sys::getline_(caps_fs, caps)) {
+ const string downscale_compression = "downscale_compression=";
+ const string min_downscale = "min_downscale=";
+ if (caps.find(downscale_compression) != string::npos) {
+ hw_resource->hw_rot_info.downscale_compression =
+ std::stoi(string(caps, downscale_compression.length()));
+ } else if (caps.find(min_downscale) != string::npos) {
+ hw_resource->hw_rot_info.min_downscale =
+ std::stof(string(caps, min_downscale.length()));
+ }
+ }
+ }
+
// We support only 1 rotator
break;
}
}
- DLOGI("V4L2 Rotator: Count = %d, Downscale = %d", hw_resource->hw_rot_info.num_rotator,
- hw_resource->hw_rot_info.has_downscale);
+ DLOGI("V4L2 Rotator: Count = %d, Downscale = %d, Min_downscale = %f, Downscale_compression = %d",
+ hw_resource->hw_rot_info.num_rotator, hw_resource->hw_rot_info.has_downscale,
+ hw_resource->hw_rot_info.min_downscale, hw_resource->hw_rot_info.downscale_compression);
return kErrorNone;
}