diff options
author | Saurabh Shah <saurshah@codeaurora.org> | 2017-03-08 17:09:17 -0800 |
---|---|---|
committer | Saurabh Shah <saurshah@codeaurora.org> | 2017-03-08 17:21:36 -0800 |
commit | 14ee4b688bdb572f6b7ccc4d8e0fce861a0f6e39 (patch) | |
tree | 634b88b1b46053d8087e5b5c37b334433ebd751f | |
parent | cd557c1906bcf66e802fd35ad0196b7d9316d874 (diff) | |
download | display-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.cpp | 27 |
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; } |