1. 程式人生 > >60查找nanopim1plus的HDMI為720p輸出的問題

60查找nanopim1plus的HDMI為720p輸出的問題

bug bsp listeners alpha arm QQ ips fps parent

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輸出的問題