QNX-Screen常用指令

869 阅读7分钟

一、sw_vsync 命令

用于创建一个全屏的背景以及一个运动的蓝色bar,用于检测screen的显示状态和帧率

sw_vsync 参数配置:

sw-vsync   [-bg_rbga=background_color]   
           [-display=display_id]  
           [-double-buffer]  
           [-format=pixel_format]  
           [-frame-limit=frames]  
           [-grid]  
           [-interval=swap_interval]  
           [-pipeline=pipeline]  
           [-pos=x,y]  
           [-single-buffer]  
           [-size=widthxheight]  
           [-transparency=transparency]  
           [-zorder=zorder]  

-bg_rgba=r,g,b,a, 设置背景颜色和alpha值,例如-bg_rgba=0xff,0xff,0,0xff,黄色不透明背景  
-display=[int]or[str], 设置使用的display  
-double-buffer,使用两个缓冲区  
-format=[str], 设置窗口显示格式  
-frame_limit=[int], 设置最大的渲染帧数   
-gird,显示网格  
-interval=[int],设置刷新间隔数  
-pipeline,指定pipeline id  
-pos=[x],[y], 设置显示偏移位置  
-single-buffer,使用一个渲染缓冲区  
-size=[width]x[height],设置窗口尺寸  
-transparency=[str],设置窗口的透明模式  
-zorder=[int],设置窗口的z-order

运行示例如下:

sw-vsync

捕获.PNG

二、gles2-gears 命令

使用OpenGL ES 2.x测试GLES渲染功能是否正常

gles2-gears命令参数:

gles2-gears [-bg-alpha=background_alpha_value]
            [-brightness=brightness]
            [-config=egl_configuration]
            [-contrast=contrast]
            [-display=display_id]
            [-double-buffer]
            [-fg-alpha=foreground_alpha_value]
            [-frame-limit=frame_limit]
            [-hue=hue]
            [-interval=swap_interval]
            [-pipeline=pipeline_id]
            [-pos=x,y]
            [-saturation=saturation]
            [-single-buffer]
            [-size=widthxheight]
            [-transparency=transparency_mode]
            [-verbose]
            [-zorder=zorder]
            
-bg-alpha=background_alpha_value, 设置背景alpha值,范围为[0.0f..1.0f],默认值为0.0f
-brightness=brightness, 设置窗口亮度,范围为[-255..255], 默认是显示硬件的亮度
-config = egl_configuration,设置可选的EGL的配置说明符,说明符包括像素格式,多重采样或EGL配置符
-contrast=contrast, 设置窗口对比度,范围为[128..127]
-display= display_id,设置使用的display
-double-buffer,使用EGL_BACK_BUFFER(默认)作为EGL surface的EGL_RENDER_BUFFER属性
-fg-alpha=foreground_alpha_value, 设置前景的alpha值,范围为[0.0f..1.0f],默认为1.0f
-frame-limit=frame_limit, 设置渲染的帧数
-hue=hue, 设置窗口的色调,范围为[-128..127]
-interval=swap_interval, 设置刷新间隔数
-pipeline=pipeline_id. 设置pipeline
-pos=x,y, 设置窗口偏移位置
-saturation=saturation. 设置饱和度,范围为[-128..127]
-single-buffer, 使用EGL_SINGLE_BUFFER 作为EGL surface的EGL_RENDER_BUFFER属性
-size=widthxheight, 设置窗口的宽度和高度
-transparency=transparency_mode, 设置窗口透明度模式
-verbose, 打印级别
-zorder=zorder, 设置z-order

运行示例如下:

gles2-gears

捕获.PNG

三、screencmd 命令

修改screen对象的属性

一个程序在创建screen组件完成后,screen进程会将程序设置的一些信息输出在/dev/screen/process name/win-id文件中,cat /dev/screen/process name/win-id 后会看到screen的相关信息。

win-6/ctx-6/409680(kanzi_hmi)
=================================================
id = __scrn-win-6-00000017-661fc9b9b03199b3c2f4d46167aea81b
id string = myScreen
permissions = rwxrwx--x--x--x--x--x---
acl = (empty)
locks = (none)
display = dpy-1
status = VISIBLE
type = SCREEN_APPLICATION_WINDOW
autonomous = 0
references = 1
window manager = (none)
window manager string =
pipeline id = 9
pipeline bound = false
parent = (none)
children = (none)
window above = win-8/ctx-12/1126447(qvm)
window below = (none)
alternate window = (none)
root window = (none)
reclip = 0
updates = 0
valid = WINDOW_SIZE
class =
flags = WIN_FLAG_VISIBLE WIN_FLAG_FLOATING
buffer size = 1920x720
format = SCREEN_FORMAT_RGBA8888
color space = SCREEN_COLOR_SPACE_UNCORRECTED
usage = SCREEN_USAGE_OPENGL_ES2
order = 1
swap interval = 1
default = ssn-4
sessions = *ssn-4
streams = str-4
holes = (none)
regions = (0,0;1920,720)
flip = 0
mirror = 0
scale mode = (default)
source viewport = (0,0 1920x720)
source clip rectangle = (0,0;1920,720)
clipped source viewport = (0,0;1920,720 1920x720)
destination rectangle = (0,0 1920x720)
clipped destination rectangle = (0,0;1920,720 1920x720)
rotation = 0
clipped rotation = 0
transform = [[1 0 0],[0 1 0],[0 0 1]]
transparency = SCREEN_TRANSPARENCY_SOURCE_OVER
color = 0xffcfcfcf
global alpha = 255 -> 255
brightness = 0 -> 0
contrast = 1 -> 1
hue = 0 -> 0
saturation = 0 -> 0
scale quality = 0
idle mode = normal
protection requested = (none)
protection enabled = (none)
cbabc mode = SCREEN_CBABC_MODE_NONE
metrics.dropped = 0
metrics.visible.partial = 103218989417
metrics.visible.full = 0
metrics.updates.count = 3645
metrics.updates.pixels = 5038 Mpixels
metrics.updates.reads = 20155 Mbytes

id, screen窗口的唯一标识符,在创建窗口时生成,可调用SCREEN_PROPERTY_ID标志获取
id string, 窗口名称,可调用SCREEN_PROPERTY_ID_STRING标志设置以及获取
permissions,窗口权限,可调用SCREEN_PROPERTY_PERMISSIONS标志设置以及获取
display, display id,可调用SCREEN_PROPERTY_ID标志获取。dpy-1表示窗口在display id 1上
status, 显示状态,可调用SCREEN_PROPERTY_STATUS标志获取。FULLY表示显示在显示屏上,VISIBLE表示是可见的,FULL表示全屏显示,INVISIBLE表示窗口隐藏
pipeline id, 使用的pipeline, 可调用SCREEN_PROPERTY_PIPELINE标志设置以及获取
pipeline bound,是否主动绑定pipeline。如果代码中主动调用SCREEN_PROPERTY_PIPELINE标志设置使用的pipeline,这里就会显示true。如果pipeline的相关配置有问题,这里也会显示一些错误信息
parent,children, 父,子窗口信息
window above, 显示在当前进程窗口上面的窗口所在的进程名,显示层级由z-order决定
window below,显示在当前进程窗口下面的窗口所在的进程名,显示层级由z-order决定
alternate window, 备用窗口对象,可调用SCREEN_PROPERTY_ALTERNATE标志设置或者获取。它的主要作用是虚拟一个对象,通过它可以将一个display上的鼠标指针移动到另外一个display上。
root window, 根窗口,在创建窗口时指定SCREEN_ROOT_WINDOW标志。根窗口用于管理和控制其子级的层次结构和更新率
valid, 显示程序设置的一些窗口属性,例如设置SCREEN_PROPERTY_SIZESCREEN_PROPERTY_SOURCE_SIZE等
flags, 显示程序当前的一些状态,例如VISIBLE, STATIC, FLOATING等
buffer size, buffer的尺寸, 可调用SCREEN_PROPERTY_BUFFER_SIZE标志设置或者获取
format, 数据格式,可调用SCREEN_PROPERTY_FORMAT标志设置或者获取
color space, 色彩空间类型,可调用SCREEN_PROPERTY_COLOR_SPACE标志设置或者获取
usage, 窗口用法属性,可调用SCREEN_PROPERTY_USAGE标志设置或者获取
order,窗口层级,可调用SCREEN_PROPERTY_ZORDER标志设置或者获取
swap interval, 缓冲区刷新间隔,可调用SCREEN_PROPERTY_SWAP_INTERVAL标志设置或者获取。0表示在更新显示时要更新窗口缓冲区;大于0表示窗口按照显示屏的(刷新率 / swap interval)的刷新率进行刷新
regions, 显示区域,regions = (0,0;1920,720),0,0表示偏移位置,可使用SCREEN_PROPERTY_POSITION标志设置或者获取;1920,720表示显示区域大小,注意这个大小是加上了偏移位置,也就是1920 = 实际显示宽度 + 宽度的偏移
scale mode, scale模式设置,可调用SCREEN_PROPERTY_SCALE_MODE标志设置和获取
source viewport, 缓冲区源区域,source viewport = (0,0 1920x720),00表示偏移位置,可以调用SCREEN_PROPERTY_SOURCE_POSITION  标志设置和获取;1920x720表示源大小,可调用SCREEN_PROPERTY_SOURCE_SIZE标志设置和获取。
source clip rectangle,源裁剪区域。source clip rectangle = (0,0;1920,720),0,0表示裁剪源位置偏移,可调用SCREEN_PROPERTY_SOURCE_CLIP_POSITION标志设置或获取;1920,1080表示源的大小,主要它是相对于偏移位置,但是不能超过源的最大值
clipped source viewport, 源裁剪展示。 clipped source viewport = (0,0;1920,720 1920x720),0,0表示源裁剪偏移位置,1920,720表示源裁剪大小,1920x720表示源的大小
destination rectangle,目标显示大小,可通过SCREEN_PROPERTY_POSITIONSCREEN_PROPERTY_SIZE标志设置或获取显示位置偏移和大小
rotation,图像翻转。 可通过SCREEN_PROPERTY_ROTATION表示设置翻转度数
transparency,透明类型,可通过SCREEN_PROPERTY_TRANSPARENCY标示设置或者获取
color, 设置背景色,可通过SCREEN_PROPERTY_COLOR标志设置或者获取
global alpha, 设置透明度,可通过SCREEN_PROPERTY_GLOBAL_ALPHA标志设置或者获取

调用示例如下:

用法:
   screencmd [cmd]
如:
   screencmd setiv win-1 SCREEN_PROPERTY_ZORDER 1
   screencmd setiv win-1 zorder 1
上述命令是同一个意思,Screen对象这个属性是大小写不敏感的,并且提供这个属性而不加上SCREEN_PROPERTY_前缀是可以接受的
   
[cmd]:
•setcv 设置对象属性为“string”型
•setiv 设置对象属性是"int"或者"int"类类型数组
•setllv 设置对象属性为"long"型
•setpv 设置对象属性为指针类型
•setgp 将对象加入到指定字符串所在的组,如果指定的字符串为空,则移除当前组
•apply 刷新修改