4k 是假的吗?
测试发现,即使android 选择4k 输出, android 系统运行状态还是1080p, 所谓的4k是不是把 1080p 的framebuffer scale输出到 4k 显示器(新下载的11月版本)?请问如何修改 kernel 分辨率,让 android 运行在 4k分辨率下? 一般FB 是FHD,HDMI 会scale到4k。播放ideo的是时候video输出video buffer直接 4K。无 scale 。
FB直接4K 没试过。内存会紧张吧。楼主有啥需求要FB 4K? 那一張4k2k的bmp檔,顯示出來不就失真了? 好吧 ,FB改4K的地方在kernel/arch/arm/boot/dts/lcd-box.dtsi
disp_timings: display-timings {
native-mode = <&timing1>;
改成 native-mode = <&timing2>;
4K是一个分辨率标准,4K还包括解码能力,可以播放4K高清的视频,至于Android和HDMI的buffer也可以改大 把 kernel/arch/arm/boot/dts/lcd-box.dtsi修改为 改成 native-mode = <&timing2>; 编译出 resource.img, 更新后不是4k, 变成1280x720,4k 失败自动回到720p ? 把 cat /sys/class/graphics/fb0/disp_info 信息贴上来。
电视是4K吗? 烧写4k resource.img 后显示 /sys/class/graphics/fb0/disp_info
z-order:
layer3_sel_win
layer2_sel_win
layer1_sel_win
layer0_sel_win
win0:
state:0, fmt:ARGB888, y_vir:320, uv_vir:320
xact: 320, yact: 240, dsp_x: 320, dsp_y: 240, x_st: 0, y_st: 0
y_h_fac: 4096, y_v_fac: 4096, uv_h_fac: 4096, uv_v_fac: 4096
y_addr: 0x00000000, uv_addr:0x00000000
win1:
state:1, fmt:ARGB888, y_vir:3840, uv_vir:0
xact:1280, yact: 720, dsp_x:3840, dsp_y:2160, x_st: 0, y_st: 0
y_h_fac: 21825, y_v_fac: 21809, uv_h_fac: 4096, uv_v_fac: 4096
y_addr: 0x10000000, uv_addr:0x00000000
win2:
state:0
fmt:ARGB888
area0:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
area1:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
area2:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
area3:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
win3:
state:0
fmt:ARGB888
area0:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
area1:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0 addr:0x00000000
area2:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
area3:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
马上 reboot 后变成
z-order:
layer3_sel_win
layer2_sel_win
layer1_sel_win
layer0_sel_win
win0:
state:0, fmt:ARGB888, y_vir:320, uv_vir:320
xact: 320, yact: 240, dsp_x: 320, dsp_y: 240, x_st: 0, y_st: 0
y_h_fac: 4096, y_v_fac: 4096, uv_h_fac: 4096, uv_v_fac: 4096
y_addr: 0x00000000, uv_addr:0x00000000
win1:
state:1, fmt:ARGB888, y_vir:3840, uv_vir:0
xact:1920, yact:1080, dsp_x:3840, dsp_y:2160, x_st: 0, y_st: 0
y_h_fac: 32750, y_v_fac: 32737, uv_h_fac: 4096, uv_v_fac: 4096
y_addr: 0x13f48000, uv_addr:0x00000000
win2:
state:0
fmt:ARGB888
area0:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
area1:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
area2:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
area3:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
win3:
state:0
fmt:ARGB888
area0:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
area1:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0 addr:0x00000000
area2:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
area3:state:0,y_vir: 320,dsp_x: 320,dsp_y: 240,x_st: 0,y_st: 0,addr:0x00000000
重启过程可以看到 屏幕中央的 android 图标 明显变小很多, 似乎4k 有效了, 但是进入android 后,第一次是720p 分辨率, 之后重启都是1080p,貌似android 系统拒绝了4k模式? 依照你的描述 应该是kernel已经生效了。android做了限制。
我在ubuntu上试过了。FB 4K是没问题。
这个需要android上层修改。可能比较麻烦点。
我先找找有没有解决方案吧。