SF: Fix dumpVisibleLayersProtoInfo

dumpVisibleLayersProtoInfo was indexing into mDisplays using the HWC
display ID, which is incorrect if the primary display does not map to
the first element of the KeyedVector.

Bug: 74619554
Test: dumpsys SurfaceFlinger --dump-layer-stats
Change-Id: I5255822bb088967a64c646899fc9569a20848641
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index d19694f..6561822 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1613,19 +1613,15 @@
 void SurfaceFlinger::logLayerStats() {
     ATRACE_CALL();
     if (CC_UNLIKELY(mLayerStats.isEnabled())) {
-        int32_t hwcId = -1;
         for (size_t dpy = 0; dpy < mDisplays.size(); ++dpy) {
             const sp<const DisplayDevice>& displayDevice(mDisplays[dpy]);
             if (displayDevice->isPrimary()) {
-                hwcId = displayDevice->getHwcDisplayId();
-                break;
+                mLayerStats.logLayerStats(dumpVisibleLayersProtoInfo(*displayDevice));
+                return;
             }
         }
-        if (hwcId < 0) {
-            ALOGE("LayerStats: Hmmm, no primary display?");
-            return;
-        }
-        mLayerStats.logLayerStats(dumpVisibleLayersProtoInfo(hwcId));
+
+        ALOGE("logLayerStats: no primary display");
     }
 }
 
@@ -4185,19 +4181,18 @@
     return layersProto;
 }
 
-LayersProto SurfaceFlinger::dumpVisibleLayersProtoInfo(int32_t hwcId) const {
+LayersProto SurfaceFlinger::dumpVisibleLayersProtoInfo(const DisplayDevice& displayDevice) const {
     LayersProto layersProto;
-    const sp<DisplayDevice>& displayDevice(mDisplays[hwcId]);
 
     SizeProto* resolution = layersProto.mutable_resolution();
-    resolution->set_w(displayDevice->getWidth());
-    resolution->set_h(displayDevice->getHeight());
+    resolution->set_w(displayDevice.getWidth());
+    resolution->set_h(displayDevice.getHeight());
 
-    layersProto.set_color_mode(decodeColorMode(displayDevice->getActiveColorMode()));
-    layersProto.set_color_transform(decodeColorTransform(displayDevice->getColorTransform()));
-    layersProto.set_global_transform(
-            static_cast<int32_t>(displayDevice->getOrientationTransform()));
+    layersProto.set_color_mode(decodeColorMode(displayDevice.getActiveColorMode()));
+    layersProto.set_color_transform(decodeColorTransform(displayDevice.getColorTransform()));
+    layersProto.set_global_transform(static_cast<int32_t>(displayDevice.getOrientationTransform()));
 
+    const int32_t hwcId = displayDevice.getHwcDisplayId();
     mDrawingState.traverseInZOrder([&](Layer* layer) {
         if (!layer->visibleRegion.isEmpty() && layer->getBE().mHwcLayers.count(hwcId)) {
             LayerProto* layerProto = layersProto.add_layers();