Skip to content

Instantly share code, notes, and snippets.

@erwinchang
Last active February 21, 2017 03:48
Show Gist options
  • Save erwinchang/348b3213f8e0d231fd61060ba8a78438 to your computer and use it in GitHub Desktop.
Save erwinchang/348b3213f8e0d231fd61060ba8a78438 to your computer and use it in GitHub Desktop.
hi3535 hifb

記錄hi3535 hifb

  • cmd
cmd note cmddata
FBIOGET_VSCREENINFO 获取屏幕可变信息 struct fb_var_screeninfo
FBIOPUT_VSCREENINFO 设置屏幕可变信息
FBIOGET_FSCREENINFO 获取屏幕固定信息 struct fb_fix_screeninfo
FBIOPAN_DISPLAY 设置 PAN显示 struct fb_var_screeninfo
FBIOGET_CAPABILITY_HIFB 获取叠加层的支持能力 HIFB_CAPABILITY_S
FBIOGET_SCREEN_ORIGIN_HIFB 获取叠加层坐标原点 HIFB_POINT_S
FBIOPUT_SCREEN_ORIGIN_HIFB 设置叠加层坐标原点
FBIOGET_SHOW_HIFB 获取叠加层显示状态
FBIOPUT_SHOW_HIFB 设置叠加层显示状态
FBIOGET_ALPHA_HIFB 获取叠加层 Alpha HIFB_ALPHA_S
FBIOPUT_ALPHA_HIFB 设置叠加层 Alpha
FBIOGET_COLORKEY_HIFB 获取叠加层的 Colorkey属性
FBIOPUT_COLORKEY_HIFB 设置叠加层的 Colorkey属性
FBIOGET_MDDRDETECT_HIFB 获取内存侦测属性
FBIOPUT_MDDRDETECT_HIFB 设置内存侦测属性
  • FBIOGET_VSCREENINFO     * 获取屏幕可变信息 struct fb_var_screeninfo
    • 高清设备的图形层默认分辨率为 1280x720
    • 标清设备的图形层的默认分辨率为 720x576
    • 素格式默认为 ARGB1555     * Hi3535 支持像素格式 ARGB1555、ARGB4444 和 ARGB8888
    • ex1: 设置 Framebuffer的屏幕分辨率和像素格式等
    • 设置实际分辨率为 720x576,虚拟分辨率为 720x576, 偏移为(0,0) ,像素格式为 ARGB1555
struct fb_bitfield r32 = {10, 5, 0}; 
struct fb_bitfield g32 = {5, 5, 0}; 
struct fb_bitfield b32 = {0, 5, 0};  
struct fb_bitfield a32 = {15, 1, 0}; 
  • FBIOGET_SHOW_HIFB     * 获取当前叠加层的显示状态
    • bShow = HI_TRUE:当前叠加层处于显示状态
    • bShow = HI_FALSE:当前叠加层处于藏状态
    • 为正常显示,在显示之前,应将 bShow的值设为HI_TRUE, 即使能对应图形层

Graphics Development User Guide.pdf

  • HiSilicon digital media processing platform (HiMPP)
    • Two-dimensional engine (TDE) 硬件加速对图形图像进行处理
    • HiSilicon frame buffer (HiFB) 在 Linux Framebuffer 的基础上增加层间 colorkey、层间 Alpha

proc

可通过命令 cat /proc/graphics/hifbn(n为图形层号)查看各个图形层的状态

  • 查看layer bind
    • cat /proc/umap/vo
-----GRAPHICS LAYER------------------------------------------------------------
 Layer BindDev
   HC0       0
  • 使用ARGB1555且設定Alpha0為0,即可以顯示vo layout
/proc/graphics # cat hifb0
layer name                       :layer_0 
Open count                       :1
Show state                       :ON
Start position                   :(0, 0)
xres, yres                       :(1280, 720)
xres_virtual, yres_virtual       :(1280, 1440)
xoffset, yoffset                 :(0, 0)
fix.line_length                  :2560
Mem size:                        :8100 KB
Layer Scale (hw):                :NO 
ColorFormat:                     :ARGB1555
Alpha Enable                     :ON
AlphaChannel Enable              :ON
Alpha0, Alpha1                   :0, 255
Alpha Global                     :255
Colorkey Enable                  :OFF
Colorkey value                   :0x0
Deflicker Mode:                  :NONE
Deflicker Level:                 :AUTO
Display Buffer mode              :unkown
Displaying addr (register)       :0xa4e10000
display buffer[0] addr           :0xa4e10000
display buffer[1] addr           :0xa4fd2000
displayrect                      :(1280, 720)
screenrect                       :(1280, 720)
device max resolution            :1280, 720
IsNeedFlip(2buf)                 :NO
BufferIndexDisplaying(2buf)      :0
refresh request num(2buf)        :0
switch buf num(2buf)             :0
union rect (2buf)                :(0,0,0,0)
canavas updated addr             :0xa4e10000
canavas updated (w, h)           :1280,720 
canvas width                     :1280
canvas height                    :720
canvas pitch                     :2560
canvas format                    :ARGB1555
IsCompress                       :NO
Is DDR Dettect                   :NO
DDR Detect Zones                 :0
  • 使用ARGB888可以顯示vo layout
    • AlphaChannel Enable(off)
    • Alpha0, Alpha1 (0, 255) , 0表示全透明
layer name                       :layer_0 
Open count                       :1
Show state                       :ON
Start position                   :(0, 0)
xres, yres                       :(1280, 720)
xres_virtual, yres_virtual       :(1280, 720)
xoffset, yoffset                 :(0, 0)
fix.line_length                  :5120
Mem size:                        :8100 KB
Layer Scale (hw):                :NO 
ColorFormat:                     :ARGB8888
Alpha Enable                     :ON
AlphaChannel Enable              :OFF
Alpha0, Alpha1                   :0, 255
Alpha Global                     :255
Colorkey Enable                  :OFF
Colorkey value                   :0x0
Deflicker Mode:                  :NONE
Deflicker Level:                 :AUTO
Display Buffer mode              :unkown
Displaying addr (register)       :0xa4e10000
display buffer[0] addr           :0xa4e10000
display buffer[1] addr           :0xa5194000
displayrect                      :(1280, 720)
screenrect                       :(1280, 720)
device max resolution            :1280, 720
IsNeedFlip(2buf)                 :NO
BufferIndexDisplaying(2buf)      :0
refresh request num(2buf)        :0
switch buf num(2buf)             :0
union rect (2buf)                :(0,0,0,0)
canavas updated addr             :0xa4e10000
canavas updated (w, h)           :1280,720 
canvas width                     :1280
canvas height                    :720
canvas pitch                     :5120
canvas format                    :ARGB8888
IsCompress                       :NO
Is DDR Dettect                   :NO
DDR Detect Zones                 :0

HiFB

  • EX1_DVR_FBStart
    • 開啟/dev/fb0之後不可以離開程式,若離開則會自動關閉,如下 Open count :0 Show state :OFF
/proc/graphics # cat hifb0
layer name                       :layer_0 
Open count                       :0
Show state                       :OFF
Start position                   :(0, 0)
xres, yres                       :(1280, 720)
xres_virtual, yres_virtual       :(1280, 720)
xoffset, yoffset                 :(0, 0)
fix.line_length                  :2560
Mem size:                        :8100 KB
Layer Scale (hw):                :NO 
ColorFormat:                     :ARGB1555
Alpha Enable                     :OFF
AlphaChannel Enable              :OFF
Alpha0, Alpha1                   :0, 255
Alpha Global                     :0
Colorkey Enable                  :ON
Colorkey value                   :0x7c1f
Deflicker Mode:                  :NONE
Deflicker Level:                 :AUTO
Display Buffer mode              :unkown
Displaying addr (register)       :0xa4e10000
display buffer[0] addr           :0xa4e10000
display buffer[1] addr           :0xa4fd2000
displayrect                      :(1280, 720)
screenrect                       :(1280, 720)
device max resolution            :1280, 720
IsNeedFlip(2buf)                 :NO
BufferIndexDisplaying(2buf)      :0
refresh request num(2buf)        :0
switch buf num(2buf)             :0
union rect (2buf)                :(0,0,0,0)
canavas updated addr             :0x0
canavas updated (w, h)           :0,0 
canvas width                     :0
canvas height                    :0
canvas pitch                     :0
canvas format                    :RGB565
IsCompress                       :NO
Is DDR Dettect                   :NO
DDR Detect Zones                 :0
  • EX1_DVR_FBStart
    • 開啟/dev/fb0,無離開程式,但此時無vo layer輸出畫面(?) Open count :1 Show state :ON
/proc/graphics # cat hifb0
layer name                       :layer_0 
Open count                       :1
Show state                       :ON
Start position                   :(0, 0)
xres, yres                       :(1280, 720)
xres_virtual, yres_virtual       :(1280, 720)
xoffset, yoffset                 :(0, 0)
fix.line_length                  :2560
Mem size:                        :8100 KB
Layer Scale (hw):                :NO 
ColorFormat:                     :ARGB1555
Alpha Enable                     :OFF
AlphaChannel Enable              :OFF
Alpha0, Alpha1                   :0, 255
Alpha Global                     :0
Colorkey Enable                  :ON
Colorkey value                   :0x7c1f
Deflicker Mode:                  :NONE
Deflicker Level:                 :AUTO
Display Buffer mode              :unkown
Displaying addr (register)       :0xa4e10000
display buffer[0] addr           :0xa4e10000
display buffer[1] addr           :0xa4fd2000
displayrect                      :(1280, 720)
screenrect                       :(1280, 720)
device max resolution            :1280, 720
IsNeedFlip(2buf)                 :NO
BufferIndexDisplaying(2buf)      :0
refresh request num(2buf)        :0
switch buf num(2buf)             :0
union rect (2buf)                :(0,0,0,0)
canavas updated addr             :0x0
canavas updated (w, h)           :0,0 
canvas width                     :0
canvas height                    :0
canvas pitch                     :0
canvas format                    :RGB565
IsCompress                       :NO
Is DDR Dettect                   :NO
DDR Detect Zones                 :0
  • EX1_DVR_FBStart
    • 開啟/dev/fb0無離開程式
    • 開啟Alpha Enable並且設定Alpha0為0x0(即全透明)
    • 關閉Color Key
/proc/graphics # cat hifb0
layer name                       :layer_0 
Open count                       :1
Show state                       :ON
Start position                   :(0, 0)
xres, yres                       :(1280, 720)
xres_virtual, yres_virtual       :(1280, 720)
xoffset, yoffset                 :(0, 0)
fix.line_length                  :2560
Mem size:                        :8100 KB
Layer Scale (hw):                :NO 
ColorFormat:                     :ARGB1555
Alpha Enable                     :OFF
AlphaChannel Enable              :ON
Alpha0, Alpha1                   :0, 255
Alpha Global                     :0
Colorkey Enable                  :OFF
Colorkey value                   :0x0
Deflicker Mode:                  :NONE
Deflicker Level:                 :AUTO
Display Buffer mode              :unkown
Displaying addr (register)       :0xa4e10000
display buffer[0] addr           :0xa4e10000
display buffer[1] addr           :0xa4fd2000
displayrect                      :(1280, 720)
screenrect                       :(1280, 720)
device max resolution            :1280, 720
IsNeedFlip(2buf)                 :NO
BufferIndexDisplaying(2buf)      :0
refresh request num(2buf)        :0
switch buf num(2buf)             :0
union rect (2buf)                :(0,0,0,0)
canavas updated addr             :0x0
canavas updated (w, h)           :0,0 
canvas width                     :0
canvas height                    :0
canvas pitch                     :0
canvas format                    :RGB565
IsCompress                       :NO
Is DDR Dettect                   :NO
DDR Detect Zones                 :0
/proc/graphics # 
  • ex2_hifb_colorkey
    • 使用colorkey RED(0xfc00)
/proc/graphics # cat hifb0
layer name                       :layer_0 
Open count                       :2
Show state                       :ON
Start position                   :(0, 0)
xres, yres                       :(1280, 720)
xres_virtual, yres_virtual       :(1280, 1440)
xoffset, yoffset                 :(0, 0)
fix.line_length                  :2560
Mem size:                        :8100 KB
Layer Scale (hw):                :NO 
ColorFormat:                     :ARGB1555
Alpha Enable                     :OFF
AlphaChannel Enable              :OFF
Alpha0, Alpha1                   :0, 255
Alpha Global                     :255
Colorkey Enable                  :ON
Colorkey value                   :0xfc00
Deflicker Mode:                  :NONE
Deflicker Level:                 :AUTO
Display Buffer mode              :unkown
Displaying addr (register)       :0xa4e10000
display buffer[0] addr           :0xa4e10000
display buffer[1] addr           :0xa4fd2000
displayrect                      :(1280, 720)
screenrect                       :(1280, 720)
device max resolution            :1280, 720
IsNeedFlip(2buf)                 :NO
BufferIndexDisplaying(2buf)      :0
refresh request num(2buf)        :0
switch buf num(2buf)             :0
union rect (2buf)                :(0,0,0,0)
canavas updated addr             :0xa4e10000
canavas updated (w, h)           :1280,720 
canvas width                     :1280
canvas height                    :720
canvas pitch                     :2560
canvas format                    :ARGB1555
IsCompress                       :NO
Is DDR Dettect                   :NO
DDR Detect Zones                 :0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment