Поддержка двух мониторов AOSP в конфликтных форматах - PullRequest
0 голосов
/ 08 февраля 2019

Я создаю систему In-Vehicle Infotainment (IVI) под управлением Android.Плата для разработки, которую я использую, - Rock960 от 96boards.com. Эта плата поддерживает вывод на два дисплея, что идеально, поскольку ей необходимо управлять как головным устройством (HU), так и приборной панелью (IC) перед драйвером.Вот в чем проблема.HU имеет разрешение 1920x1080, а IC имеет разрешение 1280x480.Вывод работает на обоих дисплеях, но он выглядит очень растянутым на IC из-за своего странного разрешения.

SoC - RK3399 от Rockchip.Вот ссылка на страницу AOSP для этой платы: https://www.96boards.org/documentation/consumer/rock/build/aosp.md.html

Я попытался изменить разрешение кадрового буфера: persist.sys.framebuffer.main = 1280x480 в устройстве / rockchip / rk3399 / rk3399_box / system.prop

Когда я это делаю, на IC все отображается правильно, но HU выглядит растянутым.

Вот файл системных свойств:

#
# system.prop
#

#rild.libpath=/system/lib/libreference-ril.so
#rild.libargs=-d /dev/ttyUSB2
# Default ecclist
ro.ril.ecclist=112,911
wifi.interface=wlan0
persist.tegra.nvmmlite = 1
persist.sys.boot.check=false
ro.audio.monitorOrientation=true

#NFC
debug.nfc.fw_download=false
debug.nfc.se=false

#add Rockchip properties here
ro.rk.screenoff_time=2147483647
ro.rk.screenshot_enable=true
ro.rk.def_brightness=200
ro.rk.homepage_base=http://www.google.com/webhp?client= 
{CID}&source=android-home
ro.rk.install_non_market_apps=false
sys.hwc.compose_policy=6
sys.wallpaper.rgb565=0
sf.power.control=8847360
sys.rkadb.root=0
ro.sf.fakerotation=false
ro.sf.hwrotation=0
ro.rk.MassStorage=false
ro.rk.systembar.voiceicon=true
ro.rk.systembar.tabletUI=false
ro.rk.LowBatteryBrightness=true
ro.tether.denied=false
sys.resolution.changed=false
ro.default.size=100
persist.sys.timezone=
ro.product.usbfactory=rockchip_usb
ro.support.lossless.bitstream=true
wifi.supplicant_scan_interval=15
ro.factory.tool=0
#set default lcd density for rk3399 box product
ro.sf.lcd_density=213
ro.adb.secure =0
ro.rk.statusbar=0
# set to false if not use displayd
ro.rk.displayd.enable=false

# default main framebuffer resolution
persist.sys.framebuffer.main=1920x1080

# default primary display
sys.hwc.device.primary=DP
sys.hwc.device.extend=HDMI-A

Кроме того, любая идеяЧто такое ro.rk.displayd.enable?

Я ожидаю, что оба дисплея будут отображать свое содержимое правильно в соответствии с их собственными разрешениями.Вывод не должен быть растянут или искажен ни на одном экране.

1 Ответ

0 голосов
/ 08 февраля 2019

см. HWComposer.cpp ;это должно быть primary & external - вместо primary и extend (где extend может вызвать масштабирование);который может уже ответить на вопрос.они должны быть определены в /kernel/drivers/video/rockchip.добавление дальнейшей регистрации в исходный код может помочь понять, что происходит, когда он настраивает экраны.

displayd может быть OSD демоном отображения, поэтому все, что заканчивается d - это обычно демон.если это можно как-то сделать с Android, когда ядро ​​настроено должным образом, см. https://developer.android.com/reference/android/app/Presentation

, проще всего было бы задать их (по крайней мере, по сравнению с китайскими руководствами),

...