Merge "sdm: hwc2 : Correcting the display Index handling"
diff --git a/libdrmutils/drm_interface.h b/libdrmutils/drm_interface.h
index 62db78e..03c8e0e 100644
--- a/libdrmutils/drm_interface.h
+++ b/libdrmutils/drm_interface.h
@@ -508,8 +508,8 @@
uint32_t min_prefill_lines = 0;
int secure_disp_blend_stage = -1;
bool concurrent_writeback = false;
- uint32_t num_mnocports;
- uint32_t mnoc_bus_width;
+ uint32_t num_mnocports = 0;
+ uint32_t mnoc_bus_width = 0;
bool use_baselayer_for_stage = false;
uint32_t vig_limit_index = 0;
uint32_t dma_limit_index = 0;
@@ -517,6 +517,7 @@
uint32_t rotation_limit_index = 0;
uint32_t line_width_constraints_count = 0;
std::vector< std::pair <uint32_t, uint32_t> > line_width_limits;
+ float vbif_cmd_ff = 0.0f;
};
enum struct DRMPlaneType {
diff --git a/sdm/include/private/hw_info_types.h b/sdm/include/private/hw_info_types.h
index 6474ea0..1192875 100644
--- a/sdm/include/private/hw_info_types.h
+++ b/sdm/include/private/hw_info_types.h
@@ -337,6 +337,7 @@
uint32_t line_width_constraints_count = 0;
vector< pair <uint32_t, uint32_t> > line_width_limits;
vector< pair <uint32_t, uint32_t> > line_width_constraints;
+ float vbif_cmd_ff = 0.0f;
};
struct HWSplitInfo {
diff --git a/sdm/libs/core/drm/hw_info_drm.cpp b/sdm/libs/core/drm/hw_info_drm.cpp
index 978d3b6..3cbb6de 100644
--- a/sdm/libs/core/drm/hw_info_drm.cpp
+++ b/sdm/libs/core/drm/hw_info_drm.cpp
@@ -350,6 +350,8 @@
width_constraints.push_back(std::make_pair(kPipeScalingLimit, info.scaling_limit_index));
width_constraints.push_back(std::make_pair(kPipeRotationLimit, info.rotation_limit_index));
}
+ // Use fudge factor as 1.5 if not reported
+ hw_resource->vbif_cmd_ff = (info.vbif_cmd_ff > 0.0f) ? info.vbif_cmd_ff : 1.5f;
}
void HWInfoDRM::GetHWPlanesInfo(HWResourceInfo *hw_resource) {
diff --git a/sdm/libs/hwc2/hwc_session.cpp b/sdm/libs/hwc2/hwc_session.cpp
index 798c840..790e7eb 100644
--- a/sdm/libs/hwc2/hwc_session.cpp
+++ b/sdm/libs/hwc2/hwc_session.cpp
@@ -321,10 +321,10 @@
return;
}
- if (kPluggable == hw_disp_info.type) {
+ if (kPluggable == hw_disp_info.type && max_pluggable != 0) {
// If primary is a pluggable display, we have already used one pluggable display interface.
max_pluggable--;
- } else {
+ } else if (max_builtin != 0) {
max_builtin--;
}