Merge "Merge ag/3722536 from master to pi-dev." into pi-dev
diff --git a/services/vr/hardware_composer/impl/vr_hwc.cpp b/services/vr/hardware_composer/impl/vr_hwc.cpp
index 180e232..313c022 100644
--- a/services/vr/hardware_composer/impl/vr_hwc.cpp
+++ b/services/vr/hardware_composer/impl/vr_hwc.cpp
@@ -15,6 +15,7 @@
*/
#include "impl/vr_hwc.h"
+#include "android-base/stringprintf.h"
#include <cutils/properties.h>
#include <private/dvr/display_client.h>
#include <ui/Fence.h>
@@ -26,6 +27,7 @@
using namespace android::hardware::graphics::common::V1_0;
using namespace android::hardware::graphics::composer::V2_1;
+using android::base::StringPrintf;
using android::hardware::hidl_handle;
using android::hardware::hidl_string;
using android::hardware::hidl_vec;
@@ -225,6 +227,20 @@
memcpy(color_transform_, matrix, sizeof(color_transform_));
}
+void HwcDisplay::dumpDebugInfo(std::string* result) const {
+ if (!result) {
+ return;
+ }
+ *result += StringPrintf("HwcDisplay: width: %d, height: %d, layers size: %zu, colormode: %d\
+ , config: %d\n", width_, height_, layers_.size(), color_mode_, active_config_);
+ *result += StringPrintf("HwcDisplay buffer metadata: width: %d, height: %d, stride: %d,\
+ layerCount: %d, pixelFormat: %d\n", buffer_metadata_.width, buffer_metadata_.height,
+ buffer_metadata_.stride, buffer_metadata_.layerCount, buffer_metadata_.format);
+ for (const auto& layer : layers_) {
+ layer.dumpDebugInfo(result);
+ }
+}
+
////////////////////////////////////////////////////////////////////////////////
// VrHwcClient
@@ -831,7 +847,19 @@
}
Return<void> VrHwc::dumpDebugInfo(dumpDebugInfo_cb hidl_cb) {
- hidl_cb(hidl_string());
+ std::string result;
+
+ {
+ std::lock_guard<std::mutex> guard(mutex_);
+ result = "\nVrHwc states:\n";
+ for (const auto& pair : displays_) {
+ result += StringPrintf("Display id: %lu\n", (unsigned long)pair.first);
+ pair.second->dumpDebugInfo(&result);
+ }
+ result += "\n";
+ }
+
+ hidl_cb(hidl_string(result));
return Void();
}
@@ -881,5 +909,22 @@
return iter == displays_.end() ? nullptr : iter->second.get();
}
+void HwcLayer::dumpDebugInfo(std::string* result) const {
+ if (!result) {
+ return;
+ }
+ *result += StringPrintf("Layer: composition_type: %d, type: %d, app_id: %d, z_order: %d,\
+ cursor_x: %d, cursor_y: %d, color(rgba): (%d,%d,%d,%d), dataspace: %d, transform: %d,\
+ display_frame(LTRB): (%d,%d,%d,%d), crop(LTRB): (%.1f,%.1f,%.1f,%.1f), blend_mode: %d\n",
+ composition_type, info.type, info.app_id, info.z_order, info.cursor_x, info.cursor_y,
+ info.color.r, info.color.g, info.color.b, info.color.a, info.dataspace, info.transform,
+ info.display_frame.left, info.display_frame.top, info.display_frame.right,
+ info.display_frame.bottom, info.crop.left, info.crop.top, info.crop.right,
+ info.crop.bottom, info.blend_mode);
+ *result += StringPrintf("Layer buffer metadata: width: %d, height: %d, stride: %d, layerCount: %d\
+ , pixelFormat: %d\n", buffer_metadata.width, buffer_metadata.height, buffer_metadata.stride,
+ buffer_metadata.layerCount, buffer_metadata.format);
+}
+
} // namespace dvr
} // namespace android
diff --git a/services/vr/hardware_composer/impl/vr_hwc.h b/services/vr/hardware_composer/impl/vr_hwc.h
index 1c308f2..d5d5f55 100644
--- a/services/vr/hardware_composer/impl/vr_hwc.h
+++ b/services/vr/hardware_composer/impl/vr_hwc.h
@@ -116,6 +116,8 @@
info.id = new_id;
}
+ void dumpDebugInfo(std::string* result) const;
+
Composition composition_type;
ComposerView::ComposerLayer info;
IVrComposerClient::BufferMetadata buffer_metadata;
@@ -163,6 +165,8 @@
int32_t color_transform_hint() const { return color_transform_hint_; }
void SetColorTransform(const float* matrix, int32_t hint);
+ void dumpDebugInfo(std::string* result) const;
+
private:
// The client target buffer and the associated fence.
sp<GraphicBuffer> buffer_;