diff --git a/overlay/AndroidTvOpiOverlay/Android.bp b/overlay/AndroidTvOpiOverlay/Android.bp
index 3f02f9c..18aaa41 100644
--- a/overlay/AndroidTvOpiOverlay/Android.bp
+++ b/overlay/AndroidTvOpiOverlay/Android.bp
@@ -3,9 +3,15 @@
//
// SPDX-License-Identifier: Apache-2.0
+// This overlay MUST live on the product partition: it overrides resources that
+// TvFrameworkOverlay (a product-partition RRO from device/google/atv) also
+// overrides, and static RRO precedence is decided by partition order first
+// (system < vendor < odm < oem < product < system_ext) and android:priority
+// second. From /vendor/overlay our entries always lose to TvFrameworkOverlay
+// regardless of priority; on /product our priority 10 beats its priority 0.
runtime_resource_overlay {
name: "AndroidTvOpiOverlay",
resource_dirs: ["res"],
sdk_version: "current",
- vendor: true,
+ product_specific: true,
}
diff --git a/overlay/AndroidTvOpiOverlay/res/values-xhdpi/config.xml b/overlay/AndroidTvOpiOverlay/res/values-xhdpi/config.xml
index 73b9322..0989af4 100644
--- a/overlay/AndroidTvOpiOverlay/res/values-xhdpi/config.xml
+++ b/overlay/AndroidTvOpiOverlay/res/values-xhdpi/config.xml
@@ -16,9 +16,23 @@
-->
-
+
0
diff --git a/overlay/AndroidTvOpiOverlay/res/values/config.xml b/overlay/AndroidTvOpiOverlay/res/values/config.xml
index f8ab1ca..280b5af 100644
--- a/overlay/AndroidTvOpiOverlay/res/values/config.xml
+++ b/overlay/AndroidTvOpiOverlay/res/values/config.xml
@@ -51,12 +51,12 @@
+ 1920 (values/ and values-xhdpi buckets survive PRODUCT_AAPT_PREF_CONFIG
+ stripping), which scales a 4K display down to a 1920x1080 logical UI.
+ 0 disables the cap so the UI renders at the display's native resolution.
+ The density-qualified values-xhdpi entry (see values-xhdpi/config.xml) is
+ the one that actually decides the contest at runtime; this unqualified
+ entry is kept as a fallback for density configs with no xhdpi match. -->
0