60查找nanopim1plus的HDMI為720p輸出的問題
60查找nanopim1plus的HDMI為720p輸出的問題
大文實驗室/大文哥
壹捌陸捌零陸捌捌陸捌貳
21504965 AT qq.com
完成時間:2017/12/5 17:51
版本:V1.0
開發板:NanoPi M1 Plus/zh
SDK:Android4.4.2
1、顯示器老是顯示這個提示畫面:
屏幕畫面沒有被設置成建議分辨率.
設定電腦的分辨率為1080p/60Hz.
輸入分辨率:720p/50Hz
建議分辨率:1080p/60Hz
於是在Android中使用dumpsys SurfaceFlinger查看分辨率:
127|root@nanopi-h3:/ #
127|root@nanopi-h3:/ #
127|root@nanopi-h3:/ # dumpsys SurfaceFlinger
Build configuration: [sf] [libui] [libgui]
Sync configuration: [using: EGL_ANDROID_native_fence_sync]
Visible layers (count = 6)
+ LayerDim 0xb8d6ee80 (DimLayer)
Region transparentRegion (this=0xb8d6efe4, count=1)
[ 0, 0, 0, 0]
Region visibleRegion (this=0xb8d6ee88, count=1)
[ 0, 0, 0, 0]
layerStack= 0, z= 0, pos=(0,0), size=( 16, 16), crop=( 0, 0, -1, -1), isOpaque=0, invalidate=0, alpha=0xff, flags=0x00000001, tr=[1.00, 0.00][0.00, 1.00]
client=0xb8d817d0
format= 0, activeBuffer=[ 0x 0: 0, 0], queued-frames=0, mRefreshPending=0
mTexName=3 mCurrentTexture=-1
mCurrentCrop=[18,0,46,0] mCurrentTransform=0
mAbandoned=0
-BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[1x1], default-format=1, transform-hint=00, FIFO(0)={}
+ LayerDim 0xb8d70128 (DimLayer)
Region transparentRegion (this=0xb8d7028c, count=1)
[ 0, 0, 0, 0]
Region visibleRegion (this=0xb8d70130, count=1)
[ 0, 0, 0, 0]
layerStack= 0, z= 0, pos=(0,0), size=( 16, 16), crop=( 0, 0, -1, -1), isOpaque=0, invalidate=0, alpha=0xff, flags=0x00000001, tr=[1.00, 0.00][0.00, 1.00]
client=0xb8d817d0
format= 0, activeBuffer=[ 0x 0: 0, 0], queued-frames=0, mRefreshPending=0
mTexName=4 mCurrentTexture=-1
mCurrentCrop=[0,0,0,0] mCurrentTransform=0
mAbandoned=0
-BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[1x1], default-format=1, transform-hint=00, FIFO(0)={}
+ Layer 0xb8d76cb8 (com.android.systemui.ImageWallpaper)
Region transparentRegion (this=0xb8d76e1c, count=1)
[ 0, 0, 0, 0]
Region visibleRegion (this=0xb8d76cc0, count=1)
[-368, -280, 1647, 1000]
layerStack= 0, z= 21000, pos=(-368,-280), size=(2015,1280), crop=( 0, 0,2015,1280), isOpaque=1, invalidate=0, alpha=0xff, flags=0x00000000, tr=[1.00, 0.00][0.00, 1.00]
client=0xb8d5c808
format= 4, activeBuffer=[2015x1280:2016, 1], queued-frames=0, mRefreshPending=0
mTexName=6 mCurrentTexture=-1
mCurrentCrop=[0,0,0,0] mCurrentTransform=0
mAbandoned=0
-BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[2015x1280], default-format=4, transform-hint=00, FIFO(0)={}
+ Layer 0xb8d79d70 (com.android.launcher/com.android.launcher2.Launcher)
Region transparentRegion (this=0xb8d79ed4, count=1)
[ 0, 0, 0, 0]
Region visibleRegion (this=0xb8d79d78, count=1)
[ 0, 0, 1280, 720]
layerStack= 0, z= 21005, pos=(0,0), size=(1280, 720), crop=( 0, 0,1280, 720), isOpaque=0, invalidate=0, alpha=0xff, flags=0x00000000, tr=[1.00, 0.00][0.00, 1.00]
client=0xb8d79c70
format= 1, activeBuffer=[1280x 720:1280, 1], queued-frames=0, mRefreshPending=0
mTexName=7 mCurrentTexture=2
mCurrentCrop=[0,0,0,0] mCurrentTransform=0
mAbandoned=0
-BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[1280x720], default-format=1, transform-hint=00, FIFO(0)={}
[00:0xb8d78080] state=FREE , 0xb8d73cc8 [1280x 720:1280, 1]
[01:0xb8d75d58] state=FREE , 0xb8d76090 [1280x 720:1280, 1]
>[02:0xb8d5fba0] state=ACQUIRED, 0xb8d5c198 [1280x 720:1280, 1]
+ Layer 0xb8d728e0 (FocusedStackFrame)
Region transparentRegion (this=0xb8d72a44, count=1)
[ 0, 0, 0, 0]
Region visibleRegion (this=0xb8d728e8, count=1)
[ 0, 0, 0, 0]
layerStack= 0, z= 21006, pos=(0,0), size=( 1, 1), crop=( 0, 0, -1, -1), isOpaque=0, invalidate=0, alpha=0x4d, flags=0x00000001, tr=[1.00, 0.00][0.00, 1.00]
client=0xb8d817d0
format= 1, activeBuffer=[ 0x 0: 0, 0], queued-frames=0, mRefreshPending=0
mTexName=5 mCurrentTexture=-1
mCurrentCrop=[0,0,0,0] mCurrentTransform=0
mAbandoned=0
-BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[1x1], default-format=1, transform-hint=00, FIFO(0)={}
+ Layer 0xb8d65d10 (Sprite)
Region transparentRegion (this=0xb8d65e74, count=1)
[ 0, 0, 0, 0]
Region visibleRegion (this=0xb8d65d18, count=1)
[ 0, 0, 0, 0]
layerStack= 0, z= 281000, pos=(982.652,329.302), size=( 22, 28), crop=( 0, 0, -1, -1), isOpaque=0, invalidate=0, alpha=0x05, flags=0x00000001, tr=[1.00, 0.00][0.00, 1.00]
client=0xb8d68010
format= 1, activeBuffer=[ 22x 28: 32, 1], queued-frames=0, mRefreshPending=0
mTexName=8 mCurrentTexture=0
mCurrentCrop=[0,0,0,0] mCurrentTransform=0
mAbandoned=0
-BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[22x28], default-format=1, transform-hint=00, FIFO(0)={}
>[00:0xb8d632e8] state=ACQUIRED, 0xb8d55728 [ 22x 28: 32, 1]
Displays (1 entries)
+ DisplayDevice: Built-in Screen
type=0, hwcId=0, layerStack=0, (1280x 720), ANativeWindow=0xb8d59828, orient= 0 (type=00000000), flips=244, isSecure=1, secureVis=0, acquired=1, numLayers=2
v:[0,0,1280,720], f:[0,0,1280,720], s:[0,0,1280,720],transform:[[1.000,0.000,0.000][0.000,1.000,0.000][0.000,0.000,1.000]]
mAbandoned=0
-BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[1280x720], default-format=1, transform-hint=00, FIFO(0)={}
>[00:0xb8d5a9e8] state=ACQUIRED, 0xb8d5b600 [1280x 720:1280, 1]
[01:0xb8d84130] state=DEQUEUED, 0xb8d841e8 [1280x 720:1280, 1]
[02:0xb8d636b8] state=FREE , 0xb8d76170 [1280x 720:1280, 1]
SurfaceFlinger global state:
EGL implementation : 1.4 Linux-r4p0-00rel0
EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL_ANDROID_image_native_buffer EGL_ANDROID_recordable EGL_ANDROID_native_fence_sync EGL_ANDROID_framebuffer_target EGL_EXT_create_context_robustness EGL_ANDROID_blob_cache
GLES: ARM, Mali-400 MP, OpenGL ES 2.0
GL_EXT_debug_marker GL_OES_texture_npot GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_depth24 GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth_texture GL_OES_packed_depth_stencil GL_EXT_texture_format_BGRA8888 GL_OES_vertex_half_float GL_EXT_blend_minmax GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_rgb8_rgba8 GL_EXT_multisampled_render_to_texture GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_ARM_mali_program_binary GL_EXT_shader_texture_lod GL_EXT_robustness GL_OES_depth_texture_cube_map GL_KHR_debug
Region undefinedRegion (this=0xb8d560f4, count=1)
[ 0, 0, 0, 0]
orientation=0, canDraw=1
last eglSwapBuffers() time: 740.625000 us
last transaction time : 26.917000 us
transaction-flags : 00000000
refresh-rate : 50.000000 fps
x-dpi : 213.000000
y-dpi : 213.000000
EGL_NATIVE_VISUAL_ID : 5
gpu_to_cpu_unsupported : 0
eglSwapBuffers time: 0.000000 us
transaction time: 0.000000 us
VSYNC state: disabled
soft-vsync: disabled
numListeners=6,
events-delivered: 107
0xb8d5c7d0: count=-1
0xb8d71bd8: count=-1
0xb8d74948: count=-1
0xb8d762e8: count=-1
0xb8d7d440: count=-1
0xb8d84590: count=-1
h/w composer state:
h/w composer present and enabled
Hardware Composer state (version 1010000):
mDebugForceFakeVSync=0
Display[0] : 1280x720, xdpi=213.000000, ydpi=213.000000, refresh=20000000
numHwLayers=3, flags=00000000
type | handle | hints | flags | tr | blend | format | video_format | interlace | topFieldFirst | source crop | frame name
------------+----------+----------+----------+----+-------+----------+--------------+-----------+---------------+--------------------------+---------------------------------
HWC | b8d7b010 | 00000000 | 00000000 | 00 | 00100 | 00000001 | 00000000 | 00000000 | 00000000 | [ 368, 280, 1648, 1000] | [ 0, 0, 1280, 720] com.android.systemui.ImageWallpaper
HWC | b8d5c198 | 00000000 | 00000000 | 00 | 00105 | 00000001 | 00000000 | 00000000 | 00000000 | [ 0, 0, 1280, 720] | [ 0, 0, 1280, 720] com.android.launcher/com.android.launcher2.Launcher
FB TARGET | b8d5b600 | 00000000 | 00000000 | 00 | 00105 | 00000001 | 00000000 | 00000000 | 00000000 | [ 0, 0, 1280, 720] | [ 0, 0, 1280, 720] HWC_FRAMEBUFFER_TARGET
Allocated buffers:
0xb8d55728: 3.50 KiB | 22 ( 32) x 28 | 1 | 0x00000933
0xb8d5b600: 3600.00 KiB | 1280 (1280) x 720 | 1 | 0x00001e02
0xb8d5c198: 3600.00 KiB | 1280 (1280) x 720 | 1 | 0x00000f02
0xb8d73cc8: 3600.00 KiB | 1280 (1280) x 720 | 1 | 0x00000f02
0xb8d76090: 3600.00 KiB | 1280 (1280) x 720 | 1 | 0x00000f02
0xb8d76170: 3600.00 KiB | 1280 (1280) x 720 | 1 | 0x00001e02
0xb8d7b010: 10080.00 KiB | 2015 (2016) x 1280 | 1 | 0x00000f02
0xb8d841e8: 3600.00 KiB | 1280 (1280) x 720 | 1 | 0x00001e02
Total allocated (estimate): 31683.50 KB
root@nanopi-h3:/ #
root@nanopi-h3:/ #
root@nanopi-h3:/ #
最終確認分辨率為720p。(也可以使用360手機助手連接之後截圖看屏幕分辨率!Total Control竟然無法使用!)
2、拷貝當前開發板的sys_config.fex(嘗試1080p60Hz失敗)
兼容版本
W:\nanopi_h3_bsp\lichee\tools\pack\chips\sun8iw7p1\configs\nanopi-h3\board\sys_config_nanopi-air.fex
W:\nanopi_h3_bsp\lichee\tools\pack\chips\sun8iw7p1\configs\nanopi-h3\board\sys_config_nanopi-m1.fex
W:\nanopi_h3_bsp\lichee\tools\pack\chips\sun8iw7p1\configs\nanopi-h3\board\sys_config_nanopi-m1-plus.fex
W:\nanopi_h3_bsp\lichee\tools\pack\chips\sun8iw7p1\configs\nanopi-h3\board\sys_config_nanopi-neo.fex
W:\nanopi_h3_bsp\lichee\tools\pack\chips\sun8iw7p1\configs\nanopi-h3\sys_config.fex
[boot_disp]
advert_disp = 0
auto_hpd = 1
output_type = 4
hdmi_channel = 0
hdmi_mode = 4
cvbs_channel = 1
cvbs_mode = 11
output_full = 1
hdmi_mode_check = 1
[disp_init]
disp_init_enable = 1
disp_mode = 0
screen0_output_type = 3
screen0_output_mode = 5
screen1_output_type = 2
screen1_output_mode = 14
fb0_format = 0
fb0_width = 0
fb0_height = 0
fb1_format = 0
fb1_width = 0
fb1_height = 0
[hdmi_para]
hdmi_used = 1
hdmi_power = "vcc-hdmi-18"
修改為:
;全誌A20的屏幕參數:
;-------------------------------------------------------------------------------
;disp init configuration
;
;disp_mode (0:screen0<screen0,fb0> 1:screen1<screen1,fb0> 2:two_diff_screen_diff_contents<screen0,screen1,fb0,fb1>
; 3:two_same_screen_diff_contets<screen0,screen1,fb0> 4:two_diff_screen_same_contents<screen0,screen1,fb0>)
;screenx_output_type (0:none; 1:lcd; 2:tv; 3:hdmi; 4:vga)
;screenx_output_mode (used for tv/hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50 5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60 11:pal 14:ntsc)
;screenx_output_mode (used for vga output, 0:1680*1050 1:1440*900 2:1360*768 3:1280*1024 4:1024*768 5:800*600 6:640*480 10:1920*1080 11:1280*720)
;fbx format (4:RGB655 5:RGB565 6:RGB556 7:ARGB1555 8:RGBA5551 9:RGB888 10:ARGB8888 12:ARGB4444)
;fbx pixel sequence (0:ARGB 1:BGRA 2:ABGR 3:RGBA) --- 0 for linux, 2 for android
;lcd0_bright (lcd0 init bright,the range:[0,256],default:197
;lcd1_bright (lcd1 init bright,the range:[0,256],default:197
;-------------------------------------------------------------------------------
[boot_disp]
advert_disp = 0
auto_hpd = 1
output_type = 4
hdmi_channel = 0
;hdmi_mode = 4
hdmi_mode = 10
cvbs_channel = 1
cvbs_mode = 11
output_full = 1
hdmi_mode_check = 1
[disp_init]
disp_init_enable = 1
disp_mode = 0
screen0_output_type = 3
;screen0_output_mode = 5
screen0_output_mode = 10
screen1_output_type = 3
screen1_output_mode = 10
fb0_format = 0
fb0_width = 0
fb0_height = 0
fb1_format = 0
fb1_width = 0
fb1_height = 0
[hdmi_para]
hdmi_used = 1
hdmi_power = "vcc-hdmi-18"
通過360手機助手截屏,確認只有720p:
60查找nanopim1plus的HDMI為720p輸出的問題