The config_maxUiWidth=0 override never took effect from /vendor/overlay: static RRO precedence is decided by partition order before priority, so the product-partition TvFrameworkOverlay (1920) always won and silently re-capped the UI to 1920x1080 on 4K displays. Moving our overlay to the product partition lets its priority 10 beat TvFrameworkOverlay's 0, so the cap is disabled and the UI renders at the display's native resolution. Users can select a lower mode in Settings if needed.
38 lines
2 KiB
XML
38 lines
2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
Copyright (C) 2026 Brendan Szymanski <hello@bscubed.dev>
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<resources>
|
|
<!-- Disable TvFrameworkOverlay's config_maxUiWidth cap so the UI renders at
|
|
the display's native resolution (e.g. true 4K UI on a 4K TV); the user
|
|
can drop to a lower mode in Settings -> Display & Sound -> Resolution if
|
|
performance demands it.
|
|
|
|
Why this exact shape is required (all verified on hardware 2026-07-16):
|
|
- PRODUCT_AAPT_PREF_CONFIG strips all other density buckets from every
|
|
overlay APK at build time, so both TvFrameworkOverlay and this overlay
|
|
ship only their values/ and values-xhdpi entries. Adding more buckets
|
|
here is pointless; this bucket (plus values/) is the whole contest.
|
|
- The runtime density (ro.sf.lcd_density=240) always resolves the xhdpi
|
|
bucket, so this entry is the one that wins or loses.
|
|
- Both overlays define the same bucket, so config specificity ties and
|
|
precedence decides — which is partition order FIRST, android:priority
|
|
second. This overlay must therefore be product_specific (see
|
|
Android.bp); from /vendor it always loses to the product-partition
|
|
TvFrameworkOverlay (1920) no matter the priority, which silently
|
|
re-caps the UI to 1920x1080 on 4K displays. -->
|
|
<integer name="config_maxUiWidth">0</integer>
|
|
</resources>
|