summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaurabh Shah <saurshah@codeaurora.org>2017-03-08 17:09:17 -0800
committerSaurabh Shah <saurshah@codeaurora.org>2017-03-08 17:21:36 -0800
commit14ee4b688bdb572f6b7ccc4d8e0fce861a0f6e39 (patch)
tree634b88b1b46053d8087e5b5c37b334433ebd751f
parentcd557c1906bcf66e802fd35ad0196b7d9316d874 (diff)
downloaddisplay-14ee4b688bdb572f6b7ccc4d8e0fce861a0f6e39.tar.gz
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
-rw-r--r--sdm/libs/core/drm/hw_info_drm.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/sdm/libs/core/drm/hw_info_drm.cpp b/sdm/libs/core/drm/hw_info_drm.cpp
index 2fdef4e6..14a6e47c 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::GetRotatorSupportedFormats(uint32_t v4l2_index,
}
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 @@ DisplayError HWInfoDRM::GetHWRotatorInfo(HWResourceInfo *hw_resource) {
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;
}