CN116737306B - 一种wayland环境下远程桌面获取显示数据后的优化方法 - Google Patents
一种wayland环境下远程桌面获取显示数据后的优化方法 Download PDFInfo
- Publication number
- CN116737306B CN116737306B CN202311021932.XA CN202311021932A CN116737306B CN 116737306 B CN116737306 B CN 116737306B CN 202311021932 A CN202311021932 A CN 202311021932A CN 116737306 B CN116737306 B CN 116737306B
- Authority
- CN
- China
- Prior art keywords
- display data
- remote desktop
- handle
- data
- dmabuf
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 18
- 238000005457 optimization Methods 0.000 title claims abstract description 14
- 239000003607 modifier Substances 0.000 claims abstract description 54
- 230000002194 synthesizing effect Effects 0.000 claims abstract description 4
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 238000009877 rendering Methods 0.000 claims description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 16
- 239000000872 buffer Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Digital Computer Display Output (AREA)
Abstract
一种wayland环境下远程桌面获取显示数据后的优化方法,包括:在特定wayland协议中增加事件;wayland合成器合成一帧显示数据后把代表该帧显示数据的dmabuf句柄、包含该帧显示数据尺寸和格式信息的描述数据,包含modifier描述信息的事件发送至远程桌面服务端;远程桌面服务端基于接收到的帧显示数据dmabuf句柄、描述数据和modifier描述信息,通过OpenGL API将dmabuf句柄所指向的帧显示数据转换成EGLImage;远程桌面服务端通过glEGLImageTargetTexture2DOES将EGLImage转换成纹理,通过OpenGL API将纹理渲染到预先创建好的FBO中;远程桌面服务端通过OpenGL API glReadPixels将FBO中的内容读到内存中并发送至远程桌面客户端。
Description
技术领域
本发明涉及一种显示数据优化方法,尤其涉及一种wayland环境下远程桌面获取显示数据后的优化方法。
背景技术
Wayland是一个协议(Protocol),它定义了Wayland客户端如何与Wayland合成器通信。鉴于wayland相对X11的优势,特别是在高分辨率高刷新率方面提供的更好支持,开源社区已经全面转向wayland进行开发,各大系统发行版本也开始使用wayland作为默认的图形显示协议。但与X11原生支持网络显示不同,wayland本身不支持远程显示,需要通过各种远程桌面协议来实现远程显示功能。目前广泛使用的远程桌面协议为VNC和RDP。
如图1所示,为wayland合成器远程桌面获取显示数据后的常规转发流程,在wayland环境下,远程桌面服务端是wayland合成器的客户端,不能直接获取屏幕数据,屏幕数据的传递都是通过dmabuf方式实现,大致有两种方案可以获取到屏幕数据dmabuf句柄:一个是基于pipewire的数据分享方案,另一个是通过特定的wayland协议获取;一般采用wayland协议获取,比如kwin的remote-access协议、wlroots的wlr-screencopy协议等,远程桌面服务端向wayland合成器发送输入事件,可通过特定的wayland协议支持,远程桌面服务端通过相关协议向wayland合成器发送输入事件,wayland合成器将这些事件放到输入处理;远程桌面服务端通过remote-access或者wlr-screencopy协议获取显示数据:每当屏幕显示数据更新时,wayland合成器向远程桌面服务端发送显示数据对应的buffer句柄及描述数据,描述数据中包含了该buffer的尺寸和格式信息,远程桌面服务端直接使用mmap方式读取dmabuf句柄指向的显示数据到内存中,根据描述数据处理显示格式信息,发送显示数据到远程桌面客户端,但是直接使用mmap从dmabuf中读取数据,导致cpu占用率高且只支持线性buffer,不能正确处理非线性的显示数据、更加不能处理屏幕分辨率改变或旋转。
发明内容
针对上述问题,本发明提供一种wayland环境下远程桌面获取显示数据后的优化方法,在特定wayland协议(remote-access/ wlr-screencopy) 中增加gbm_handle_modifiers事件,该事件包含帧显示数据是否为非线性的压缩格式数据的标志,当wayland合成器合成一帧显示数据后,把代表该帧显示数据的dmabuf句柄、包含该帧显示数据尺寸和格式信息描述数据,包含modifier描述信息的事件发送至远程桌面服务端:描述数据中包含了该屏幕显示数据的尺寸和格式信息、modifier描述信息包含是否为非线性的压缩格式数据标志;远程桌面服务端根据接收到的帧显示数据尺寸和格式信息、dmabuf句柄,modifier描述信息,使用EGL和OpenGL API的方法将dmabuf句柄所指向的帧显示数据转换成纹理并进行操作。
为实现上述目的,本发明公开了一种wayland环境下远程桌面获取显示数据后的优化方法,包括以下步骤:
步骤S1、在特定wayland协议中增加gbm_handle_modifiers事件,该事件用于发送modifier描述信息;
步骤S2、wayland合成器合成一帧显示数据后把代表该帧显示数据的dmabuf句柄、包含该帧显示数据尺寸和格式信息的描述数据,以及gbm_handle_modifiers事件通过步骤S1中的特定wayland协议发送至远程桌面服务端;
步骤S3、远程桌面服务端接收帧显示数据的dmabuf句柄、描述数据,以及gbm_handle_modifiers事件发送的modifier描述信息;
步骤S4、远程桌面服务端基于接收到的帧显示数据的dmabuf句柄、描述数据、modifier描述信息,通过OpenGL API将dmabuf句柄所指向的帧显示数据转换成EGLImage;
步骤S5、远程桌面服务端通过glEGLImageTargetTexture2DOES将EGLImage转换成纹理,通过OpenGL API将纹理渲染到预先创建好的FBO中;
步骤S6、远程桌面服务端通过OpenGL API glReadPixels将FBO中的内容读到内存中并发送至远程桌面客户端。
其中,所述特定wayland协议为remote-access或wlr-screencopy。
其中,所述gbm_handle_modifiers事件所发送的modifier描述信息用于描述帧显示数据是否为非线性的压缩格式数据。
其中,所述步骤S4具体包括:
步骤S41、若帧显示数据是非线性数据,则使用EGL_EXT_image_dma_buf_import_modifiers处理dmabuf句柄所指向的帧显示数据,将其转换成EGLImage;
步骤S42、若帧显示数据是线性数据则使用EGL_EXT_image_dma_buf_import处理dmabuf句柄所指向的帧显示数据,使用eglCreateImageKHR将dmabuf句柄所指向的帧显示数据直接转化成EGLImage。
本发明的一种wayland环境下远程桌面获取显示数据后的优化方法的有益效果为:通过在特定wayland协议(remote-access/wlr-screencopy)中增加gbm_handle_modifiers事件解决了在wayland环境下启用远程桌面wayland合成器使用非线性数据的问题;在通过OpenGL API将纹理渲染到预先创建好的FBO过程中使用不同的shader实现对显示数据进行缩放、旋转等操作,达到运行时在远程桌面客户端界面中动态设置显示分辨率、旋转等特性;通过OpenGL API glReadPixels函数将FBO中的内容读到内存而非使用传统的mmap的方案,极大降低了cpu占用率、优化了用户体验。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1是本发明的wayland合成器远程桌面获取显示数据后的常规转发流程。
图2是本发明实施例提供的wayland合成器远程桌面获取显示数据后的优化流程。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
本发明公开了一种wayland环境下远程桌面获取显示数据后的优化方法,包括以下步骤:
步骤S1、在特定wayland协议中增加gbm_handle_modifiers事件,该事件用于发送modifier描述信息;
步骤S2、wayland合成器合成一帧显示数据后把代表该帧显示数据的dmabuf句柄、包含该帧显示数据尺寸和格式信息的描述数据,以及gbm_handle_modifiers事件通过步骤S1中的特定wayland协议发送至远程桌面服务端;
步骤S3、远程桌面服务端接收帧显示数据的dmabuf句柄、描述数据,以及gbm_handle_modifiers事件发送的modifier描述信息;
步骤S4、远程桌面服务端基于接收到的帧显示数据的dmabuf句柄、描述数据、modifier描述信息,通过OpenGL API将dmabuf句柄所指向的帧显示数据转换成EGLImage;
步骤S5、远程桌面服务端通过glEGLImageTargetTexture2DOES将EGLImage转换成纹理,通过OpenGL API将纹理渲染到预先创建好的FBO中;
步骤S6、远程桌面服务端通过OpenGL API glReadPixels将FBO中的内容读到内存中并发送至远程桌面客户端。
为进一步优化上述技术方案,特定wayland协议为remote-access或wlr-screencopy。
为进一步优化上述技术方案,所述gbm_handle_modifiers事件所发送的modifier描述信息用于描述帧显示数据是否为非线性的压缩格式数据。
为进一步优化上述技术方案,步骤S4具体包括:
步骤S41、若帧显示数据是非线性数据,则使用EGL_EXT_image_dma_buf_import_modifiers处理dmabuf句柄所指向的帧显示数据,将其转换成EGLImage;
步骤S42、若帧显示数据是线性数据则使用EGL_EXT_image_dma_buf_import处理dmabuf句柄所指向的帧显示数据,使用eglCreateImageKHR将dmabuf句柄所指向的帧显示数据直接转化成EGLImage。
本发明涉及到的术语解释及约束如下:
Wayland:Wayland是一个协议(Protocol),它定义了wayland客户端如何与wayland合成器通信。
Wayland合成器:实现wayland协议的显示服务器,支持多种显示后端、具有窗口管理器功能。
X11:位图显示的视窗系统,也叫做X Window系统。X Window系统(X11或X)是一种位图显示的视窗系统。它是在Unix和类Unix操作系统上建立图形用户界面的标准工具包和协议,并可用于几乎所有已有的现代操作系统。
gbm_handle_modifiers:在获取显示数据特定wayland协议(remote-access/wlr-screencopy)中添加的事件,包含帧显示数据是否是非线性的压缩格式数据标志。
非线性显示数据:wayland合成器针对某些硬件平台进行优化,可能会使用非线性的压缩格式数据作为显示数据。在这种情况下,远程桌面服务端必须要知道格式修饰符modifier,才能正确地解析出线性数据。
EGLImage:代表一种由EGL客户API(如OpenGL,OpenVG)创建的共享资源类型。它的本意是共享2D图像数据,但是并没有明确限定共享数据的格式以及共享的目的,所以理论上来讲,应用程序以及相关的客户API可以基于任意的目的创建任意类型的共享数据。
具体的,如图2所示,为wayland合成器远程桌面获取显示数据后的优化流程,包括:
S1)在特定wayland协议(remote-access/wlr-screencopy)中增加gbm_handle_modifiers事件:该事件包含帧显示数据是否为非线性的压缩格式数据标志;
wayland合成器针对某些硬件平台进行优化,可能会使用非线性的压缩格式数据作为显示数据。在这种情况下,远程桌面服务端必须要知道格式修饰符modifier,才能正确地解析出线性数据,wayland合成器中通过gbm_bo_get_modifier函数获取屏幕显示数据的modifier描述信息,需要将modifier描述信息传递至远程桌面服务端中,为了支持非线性格式的显示数据的传递,在从wayland合成器中获取到显示数据的协议中添加带有modifiers数据的事件接口,本申请实施例以remote-access协议为例,在remote-access协议中增加了带有modifiers描述信息的gbm_handle_modifiers事件接口;
gbm_handle_modifiers事件接口如下:
<event name="gbm_handle_modifiers" since="2">
<description summary="This is sent after binding toremote access manager with modifiers" />
<arg name="fd" type="fd"/>
<arg name="width" type="uint"/>
<arg name="height" type="uint"/>
<arg name="stride" type="uint"/>
<arg name="format" type="uint"/>
<arg name="handle" type="uint"/>
<arg name="modifier_lo" type="uint"/>
<arg name="modifier_hi" type="uint"/>
</event>
S2)wayland合成器完成一帧屏幕显示数据合成;在远程桌面服务端绑定remote-acesss协议的情况下,当wayland合成器完成图像的合成并在设置显示之前会发送buffer_ready事件给远程桌面服务端,远程桌面服务端接收到buffer_ready事件后,根据自身需要通过get_buffer请求获取显示数据;
S3)远程桌面服务端接收wayland合成器发送的显示数据以及对应的dmabuf句柄,以及gbm_handle_modifiers事件发送的modifier描述信息,判断modifier描述信息是否有效,进行S4;
S4)远程桌面服务端基于接收到的帧显示数据dmabuf句柄、显示数据,modifier描述信息,通过OpenGL API将dmabuf句柄所指向的帧显示数据转换成EGLImage;
具体的:
S41)、若帧显示数据是非线性数据,则使用EGL_EXT_image_dma_buf_import_modifiers处理dmabuf句柄所指向的帧显示数据,将其转换成EGLImage;
S42)、若帧显示数据是线性数据则使用EGL_EXT_image_dma_buf_import处理dmabuf句柄所指向的帧显示数据,使用eglCreateImageKHR将dmabuf句柄所指向的帧显示数据直接转化成EGLImage。
S5)通过glEGLImageTargetTexture2DOES将EGLImage转换成纹理;使用OpenGLAPI将上述纹理渲染到预先创建好的FBO中:在此过程中可通过编写不同的shader实现缩放、旋转等操作以实现运行时在远程桌面客户端界面中设置远程桌面服务端的显示分辨率、旋转等特性。
S6)通过OpenGL API glReadPixels将FBO中的内容读到内存并发送至远程桌面客户端。
综上所述,本发明通过在特定wayland协议(remote-access/ wlr-screencopy)中增加gbm_handle_modifiers事件,该事件包含帧显示数据是否为非线性的压缩格式数据的标志,当wayland合成器合成一帧显示数据后,把代表该帧显示数据的dmabuf句柄、包含该帧显示数据尺寸和格式信息描述数据,包含modifier描述信息的事件发送至远程桌面服务端:描述数据中包含了该屏幕显示数据的尺寸和格式信息、modifier描述信息包含是否为非线性的压缩格式数据标志;远程桌面服务端根据接收到的帧显示数据尺寸和格式信息、dmabuf句柄,modifier描述信息,使用EGL和OpenGL API的方法将dmabuf句柄所指向的帧显示数据转换成纹理并进行操作,达到运行时在远程桌面客户端界面中动态设置显示分辨率、旋转等特性;在远程桌面服务端代码中,通过OpenGL API glReadPixels将FBO中的内容读到内存而非使用传统的mmap的方案,极大降低了cpu占用率、优化了用户体验。
显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
Claims (3)
1.一种wayland环境下远程桌面获取显示数据后的优化方法,其特征在于,包括以下步骤:
步骤S1、在特定wayland协议中增加gbm_handle_modifiers事件,该事件用于发送modifier描述信息,所述modifier描述信息用于描述帧显示数据是否为非线性的压缩格式数据;
步骤S2、wayland合成器合成一帧显示数据后把代表该帧显示数据的dmabuf句柄、包含该帧显示数据尺寸和格式信息的描述数据,以及gbm_handle_modifiers事件通过步骤S1中的特定wayland协议发送至远程桌面服务端;
步骤S3、远程桌面服务端接收帧显示数据的dmabuf句柄、描述数据,以及gbm_handle_modifiers事件发送的modifier描述信息;
步骤S4、远程桌面服务端基于接收到的帧显示数据的dmabuf句柄、描述数据、modifier描述信息,通过OpenGL API将dmabuf句柄所指向的帧显示数据转换成eglImage;
步骤S5、远程桌面服务端通过glEGLImageTargetTexture2DOES将eglImage转换成纹理,通过OpenGL API将纹理渲染到预先创建好的FBO中;
步骤S6、远程桌面服务端通过OpenGL API glReadPixels将FBO中的内容读到内存中并发送至远程桌面客户端。
2.基于权利要求1所述的一种wayland环境下远程桌面获取显示数据后的优化方法,其特征在于,所述特定wayland协议为remote-access或wlr-screencopy。
3.基于权利要求1所述的一种wayland环境下远程桌面获取显示数据后的优化方法,其特征在于,所述步骤S4具体包括:
步骤S41、若帧显示数据是非线性数据,则使用EGL_EXT_image_dma_buf_import_modifiers处理dmabuf句柄所指向的帧显示数据,将其转换成eglImage;
步骤S42、若帧显示数据是线性数据则使用EGL_EXT_image_dma_buf_import处理dmabuf句柄所指向的帧显示数据,使用eglCreateImageKHR将dmabuf句柄所指向的帧显示数据直接转化成eglImage。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311021932.XA CN116737306B (zh) | 2023-08-15 | 2023-08-15 | 一种wayland环境下远程桌面获取显示数据后的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311021932.XA CN116737306B (zh) | 2023-08-15 | 2023-08-15 | 一种wayland环境下远程桌面获取显示数据后的优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116737306A CN116737306A (zh) | 2023-09-12 |
CN116737306B true CN116737306B (zh) | 2023-11-24 |
Family
ID=87919037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311021932.XA Active CN116737306B (zh) | 2023-08-15 | 2023-08-15 | 一种wayland环境下远程桌面获取显示数据后的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116737306B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005064638A (ja) * | 2003-08-08 | 2005-03-10 | Dainippon Printing Co Ltd | 映像信号の圧縮方法 |
CN112988103A (zh) * | 2021-05-13 | 2021-06-18 | 统信软件技术有限公司 | 一种数据显示方法及计算设备 |
CN115934383A (zh) * | 2023-02-01 | 2023-04-07 | 麒麟软件有限公司 | Wayland合成器下多显卡渲染方法 |
CN116192923A (zh) * | 2021-11-29 | 2023-05-30 | 国家广播电视总局广播电视科学研究院 | 一种远程桌面控制方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150193904A1 (en) * | 2012-10-24 | 2015-07-09 | OpenMobile World Wide, Inc. | Graphics acceleration for applications executing on mobile devices with multi-operating system environment |
-
2023
- 2023-08-15 CN CN202311021932.XA patent/CN116737306B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005064638A (ja) * | 2003-08-08 | 2005-03-10 | Dainippon Printing Co Ltd | 映像信号の圧縮方法 |
CN112988103A (zh) * | 2021-05-13 | 2021-06-18 | 统信软件技术有限公司 | 一种数据显示方法及计算设备 |
CN116192923A (zh) * | 2021-11-29 | 2023-05-30 | 国家广播电视总局广播电视科学研究院 | 一种远程桌面控制方法及系统 |
CN115934383A (zh) * | 2023-02-01 | 2023-04-07 | 麒麟软件有限公司 | Wayland合成器下多显卡渲染方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116737306A (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7765483B2 (en) | Filtering obscured data from a remote client display | |
Baratto et al. | Thinc: A virtual display architecture for thin-client computing | |
KR100262432B1 (ko) | 인터액티브어플리케이션실행방법,클라이언트-서버다이얼로그시스템 | |
AU2004287140B2 (en) | System and method for a unified composition engine in a graphics processing system | |
AU2003220302B2 (en) | Methods and apparatus for generating graphical and media displays at a client | |
JP5373135B2 (ja) | 代替的グラフィック・セットの効率的な符号化 | |
JP4827923B2 (ja) | 高レベルグラフィックスシステム | |
CN110166792B (zh) | 图像显示方法、装置、系统和存储介质 | |
CN114741081B (zh) | 一种基于异构缓存访问的跨运行环境显示输出共享方法 | |
JP2004220260A (ja) | ウェブページ閲覧システム及び画像配信サーバ | |
US20100299626A1 (en) | Systems and Methods of Providing Rich User Interface and Animation to Auxiliary Display Devices | |
AU2004279201B2 (en) | Protocol for remote visual composition | |
CN116737306B (zh) | 一种wayland环境下远程桌面获取显示数据后的优化方法 | |
US8671213B2 (en) | Methods and apparatus for generating graphical and media displays at a client | |
CN116560532B (zh) | 一种wayland环境下远程桌面获取硬件光标的实现方法 | |
Walker et al. | A SOAP-enabled system for an online library service | |
KR20220158448A (ko) | 이미지 프로세싱 및 데이터 변환을 이용한 의료용 3d 데이터 라이브러리 제공 방법 및 그 시스템 | |
KR20150121493A (ko) | 이미지 프로세싱을 통한 범용적 데이터 변환 방법 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |