diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index e7d1db4..baa170b 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -40,6 +40,7 @@
 import android.graphics.PointF;
 import android.graphics.Rect;
 import android.util.DisplayMetrics;
+import android.util.Log;
 import android.util.SparseArray;
 import android.view.Surface;
 
@@ -363,6 +364,12 @@
                 mTypeIndex = INDEX_DEFAULT;
             }
         }
+        if (InvariantDeviceProfile.sDebug) {
+            Log.d("b/298077774",
+                    "DeviceProfile - mTypeIndex: " + mTypeIndex + ": " + dpPointFToString(
+                            "minCellSize",
+                            inv.minCellSize[mTypeIndex]));
+        }
 
         isTransientTaskbar = DisplayController.isTransientTaskbar(context);
         if (isTransientTaskbar) {
diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java
index e3de79e..3332f0e 100644
--- a/src/com/android/launcher3/InvariantDeviceProfile.java
+++ b/src/com/android/launcher3/InvariantDeviceProfile.java
@@ -72,6 +72,7 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.Locale;
 import java.util.stream.Collectors;
 
 public class InvariantDeviceProfile {
@@ -81,6 +82,9 @@
     public static final MainThreadInitializedObject<InvariantDeviceProfile> INSTANCE =
             new MainThreadInitializedObject<>(InvariantDeviceProfile::new);
 
+    @VisibleForTesting
+    public static boolean sDebug = false;
+
     @Retention(RetentionPolicy.SOURCE)
     @IntDef({TYPE_PHONE, TYPE_MULTI_DISPLAY, TYPE_TABLET})
     public @interface DeviceType {}
@@ -683,10 +687,29 @@
         for (int i = 0; i < points.size() && i < KNEARESTNEIGHBOR; ++i) {
             DisplayOption p = points.get(i);
             float w = weight(width, height, p.minWidthDps, p.minHeightDps, WEIGHT_POWER);
+            if (sDebug) {
+                for (int j = INDEX_DEFAULT; j < COUNT_SIZES; j++) {
+                    Log.d("b/298077774",
+                            "invDistWeightedInterpolate - points[" + i + "]: " + String.format(
+                                    Locale.ENGLISH, "\t%s: PointF(%.1f, %.1f)dp",
+                                    "minCellSize[" + j + "]",
+                                    p.minCellSize[j].x, p.minCellSize[j].y));
+                }
+                Log.d("b/298077774", "invDistWeightedInterpolate - w[" + i + "]: " + w);
+            }
             weights += w;
             out.add(new DisplayOption().add(p).multiply(w));
         }
         out.multiply(1.0f / weights);
+        if (sDebug) {
+            Log.d("b/298077774", "invDistWeightedInterpolate - weights: " + weights);
+            for (int j = INDEX_DEFAULT; j < COUNT_SIZES; j++) {
+                Log.d("b/298077774",
+                        "invDistWeightedInterpolate - out: " + String.format(Locale.ENGLISH,
+                                "\t%s: PointF(%.1f, %.1f)dp", "minCellSize[" + j + "]",
+                                out.minCellSize[j].x, out.minCellSize[j].y));
+            }
+        }
 
         // Since the bitmaps are persisted, ensure that all bitmap sizes are not larger than
         // predefined size to avoid cache invalidation
