Merge "sdm: Fix dumpsys alignment"
diff --git a/common.mk b/common.mk
index 6476dfd..c18046d 100644
--- a/common.mk
+++ b/common.mk
@@ -5,7 +5,7 @@
common_flags := -DDEBUG_CALC_FPS -Wno-missing-field-initializers
common_flags += -Wconversion -Wall -Werror -std=c++11
-ifeq ($(call is-board-platform-in-list, msmcobalt msm8998), true)
+ifeq ($(TARGET_USES_COLOR_METADATA), true)
common_flags += -DUSE_COLOR_METADATA
endif
diff --git a/include/color_metadata.h b/include/color_metadata.h
index 328cb0e..aff6fc9 100644
--- a/include/color_metadata.h
+++ b/include/color_metadata.h
@@ -51,6 +51,7 @@
ColorPrimaries_SMPTE_ST428 = 10, // SMPTE_240M
ColorPrimaries_AdobeRGB = 11,
ColorPrimaries_DCIP3 = 12,
+ ColorPrimaries_EBU3213 = 22,
ColorPrimaries_Max = 0xff,
} ColorPrimaries;
@@ -63,12 +64,17 @@
Transfer_SMPTE_170M = 6, // BT.601-6 525 or 625
Transfer_SMPTE_240M = 7, // SMPTE_240M
Transfer_Linear = 8,
- Transfer_HLG = 9,
+ Transfer_Log = 9,
+ Transfer_Log_Sqrt = 10,
Transfer_XvYCC = 11, // IEC 61966-2-4
Transfer_BT1361 = 12, // Rec.ITU-R BT.1361 extended gamut
+ Transfer_sYCC = 13, // IEC 61966-2-1 sRGB or sYCC
+ Transfer_BT2020_2_1 = 14, // Rec. ITU-R BT.2020-2 (same as the values 1, 6, and 15)
+ Transfer_BT2020_2_2 = 15, // Rec. ITU-R BT.2020-2 (same as the values 1, 6, and 14)
Transfer_SMPTE_ST2084 = 16, // 2084
// transfers unlikely to be required by Android
Transfer_ST_428 = 17, // SMPTE ST 428-1
+ Transfer_HLG = 18, // ARIB STD-B67
Transfer_Max = 0xff,
} GammaTransfer;
@@ -76,13 +82,16 @@
MatrixCoEff_Identity = 0,
MatrixCoEff_BT709_5 = 1,
/* Unspecified = 2, Reserved = 3 */
+ MatrixCoeff_FCC_73_682 = 4,
MatrixCoEff_BT601_6_625 = 5,
MatrixCoEff_BT601_6_525 = 6,
MatrixCoEff_SMPTE240M = 7, // used with 601_525_Unadjusted
+ MatrixCoEff_YCgCo = 8,
MatrixCoEff_BT2020 = 9,
MatrixCoEff_BT2020Constant = 10,
MatrixCoEff_BT601_6_Unadjusted = 11, // Used with BT601_625(KR=0.222, KB=0.071)
MatrixCoEff_DCIP3 = 12,
+ MatrixCoEff_Chroma_NonConstant = 13,
MatrixCoEff_Max = 0xff,
} MatrixCoEfficients;
diff --git a/libqdutils/display_config.cpp b/libqdutils/display_config.cpp
index 4880cdc..83d912e 100644
--- a/libqdutils/display_config.cpp
+++ b/libqdutils/display_config.cpp
@@ -198,12 +198,12 @@
return numConfigs;
}
-int getActiveConfig(int /*dpy*/) {
+int getActiveConfig(int dpy) {
int configIndex = -1;
sp<IQService> binder = getBinder();
if(binder != NULL) {
Parcel inParcel, outParcel;
- inParcel.writeInt32(DISPLAY_PRIMARY);
+ inParcel.writeInt32(dpy);
status_t err = binder->dispatch(IQService::GET_ACTIVE_CONFIG,
&inParcel, &outParcel);
if(!err) {
@@ -236,13 +236,13 @@
return err;
}
-DisplayAttributes getDisplayAttributes(int configIndex, int /*dpy*/) {
+DisplayAttributes getDisplayAttributes(int configIndex, int dpy) {
DisplayAttributes dpyattr = {};
sp<IQService> binder = getBinder();
if(binder != NULL) {
Parcel inParcel, outParcel;
inParcel.writeInt32(configIndex);
- inParcel.writeInt32(DISPLAY_PRIMARY);
+ inParcel.writeInt32(dpy);
status_t err = binder->dispatch(
IQService::GET_DISPLAY_ATTRIBUTES_FOR_CONFIG, &inParcel,
&outParcel);
diff --git a/libqservice/IQService.cpp b/libqservice/IQService.cpp
index e1c5219..2d0cbfb 100644
--- a/libqservice/IQService.cpp
+++ b/libqservice/IQService.cpp
@@ -93,7 +93,8 @@
callerUid == AID_ROOT ||
callerUid == AID_CAMERASERVER ||
callerUid == AID_AUDIO ||
- callerUid == AID_SYSTEM);
+ callerUid == AID_SYSTEM ||
+ callerUid == AID_MEDIA_CODEC);
if (code == CONNECT_HWC_CLIENT) {
CHECK_INTERFACE(IQService, data, reply);
diff --git a/sdm/include/private/hw_info_types.h b/sdm/include/private/hw_info_types.h
index 3f5aa2b..cd57f32 100644
--- a/sdm/include/private/hw_info_types.h
+++ b/sdm/include/private/hw_info_types.h
@@ -129,6 +129,7 @@
bool has_downscale = false;
std::string device_path = "";
float min_downscale = 2.0f;
+ bool downscale_compression = false;
void Reset() { *this = HWRotatorInfo(); }
};
diff --git a/sdm/libs/core/fb/hw_info.cpp b/sdm/libs/core/fb/hw_info.cpp
index 9f9cae4..08a7188 100644
--- a/sdm/libs/core/fb/hw_info.cpp
+++ b/sdm/libs/core/fb/hw_info.cpp
@@ -423,7 +423,9 @@
string caps;
while (Sys::getline_(caps_fs, caps)) {
if (!ParseString(caps.c_str(), tokens, max_count, ":, =\n", &token_count)) {
- if (!strncmp(tokens[0], "min_downscale", strlen("min_downscale"))) {
+ if (!strncmp(tokens[0], "downscale_compression", strlen("downscale_compression"))) {
+ hw_resource->hw_rot_info.downscale_compression = UINT8(atoi(tokens[1]));
+ } else if (!strncmp(tokens[0], "min_downscale", strlen("min_downscale"))) {
hw_resource->hw_rot_info.min_downscale = FLOAT(atof(tokens[1]));
}
}
@@ -435,9 +437,9 @@
}
}
- DLOGI("V4L2 Rotator: Count = %d, Downscale = %d, Min_downscale = %f",
+ 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.min_downscale, hw_resource->hw_rot_info.downscale_compression);
return kErrorNone;
}
diff --git a/sdm/libs/core/fb/hw_primary.cpp b/sdm/libs/core/fb/hw_primary.cpp
index 2193920..a381d7f 100644
--- a/sdm/libs/core/fb/hw_primary.cpp
+++ b/sdm/libs/core/fb/hw_primary.cpp
@@ -105,6 +105,8 @@
EnableHotPlugDetection(1);
InitializeConfigs();
+ avr_prop_disabled_ = Debug::IsAVRDisabled();
+
return error;
}
@@ -296,6 +298,10 @@
DisplayError HWPrimary::SetRefreshRate(uint32_t refresh_rate) {
char node_path[kMaxStringLength] = {0};
+ if (hw_resource_.has_avr && !avr_prop_disabled_) {
+ return kErrorNotSupported;
+ }
+
if (refresh_rate == display_attributes_.fps) {
return kErrorNone;
}
@@ -398,8 +404,8 @@
if (stack->output_buffer && hw_resource_.has_concurrent_writeback) {
LayerBuffer *output_buffer = stack->output_buffer;
mdp_out_layer_.writeback_ndx = hw_resource_.writeback_index;
- mdp_out_layer_.buffer.width = output_buffer->width;
- mdp_out_layer_.buffer.height = output_buffer->height;
+ mdp_out_layer_.buffer.width = output_buffer->unaligned_width;
+ mdp_out_layer_.buffer.height = output_buffer->unaligned_height;
mdp_out_layer_.buffer.comp_ratio.denom = 1000;
mdp_out_layer_.buffer.comp_ratio.numer = UINT32(hw_layers->output_compression * 1000);
mdp_out_layer_.buffer.fence = -1;
diff --git a/sdm/libs/core/fb/hw_primary.h b/sdm/libs/core/fb/hw_primary.h
index ae45318..bd6ea2f 100644
--- a/sdm/libs/core/fb/hw_primary.h
+++ b/sdm/libs/core/fb/hw_primary.h
@@ -85,6 +85,7 @@
const char *kBrightnessNode = "/sys/class/leds/lcd-backlight/brightness";
const char *kAutoRefreshNode = "/sys/devices/virtual/graphics/fb0/msm_cmd_autorefresh_en";
bool auto_refresh_ = false;
+ bool avr_prop_disabled_ = false;
};
} // namespace sdm
diff --git a/sdm/libs/core/fb/hw_scale.cpp b/sdm/libs/core/fb/hw_scale.cpp
index 4933412..0997d1a 100644
--- a/sdm/libs/core/fb/hw_scale.cpp
+++ b/sdm/libs/core/fb/hw_scale.cpp
@@ -133,7 +133,7 @@
mdp_layer->flags |= MDP_LAYER_ENABLE_QSEED3_SCALE;
mdp_scale = &scale_data_v2_.at(index);
} else {
- mdp_scale_data_v2 mdp_dest_scale;
+ mdp_scale_data_v2 mdp_dest_scale = {0};
dest_scale_data_v2_.insert(std::make_pair(index, mdp_dest_scale));
mdp_scale = &dest_scale_data_v2_[index];
diff --git a/sdm/libs/hwc/hwc_color_manager.cpp b/sdm/libs/hwc/hwc_color_manager.cpp
index 7bf49ff..bfa827e 100644
--- a/sdm/libs/hwc/hwc_color_manager.cpp
+++ b/sdm/libs/hwc/hwc_color_manager.cpp
@@ -385,7 +385,7 @@
return -EFAULT;
} else {
frame_capture_data->buffer = reinterpret_cast<uint8_t *>(buffer);
- frame_capture_data->buffer_stride = buffer_info.buffer_config.width;
+ frame_capture_data->buffer_stride = buffer_info.alloc_buffer_info.aligned_width;
frame_capture_data->buffer_size = buffer_info.alloc_buffer_info.size;
}
ret = hwc_display->FrameCaptureAsync(buffer_info, 1);
diff --git a/sdm/libs/hwc/hwc_display.cpp b/sdm/libs/hwc/hwc_display.cpp
index 305ed66..233698c 100644
--- a/sdm/libs/hwc/hwc_display.cpp
+++ b/sdm/libs/hwc/hwc_display.cpp
@@ -1034,7 +1034,8 @@
}
snprintf(dump_file_name, sizeof(dump_file_name), "%s/output_layer_%dx%d_%s_frame%d.raw",
- dir_path, buffer_info.buffer_config.width, buffer_info.buffer_config.height,
+ dir_path, buffer_info.alloc_buffer_info.aligned_width,
+ buffer_info.alloc_buffer_info.aligned_height,
GetFormatString(buffer_info.buffer_config.format), dump_frame_index_);
FILE* fp = fopen(dump_file_name, "w+");