CN116737306B - 一种wayland环境下远程桌面获取显示数据后的优化方法 - Google Patents

一种wayland环境下远程桌面获取显示数据后的优化方法 Download PDF

Info

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
Application number
CN202311021932.XA
Other languages
English (en)
Other versions
CN116737306A (zh
Inventor
王勇军
张铎
周磊
陈霖翔
刘意虎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kirin Software Co Ltd
Original Assignee
Kirin Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN202311021932.XA priority Critical patent/CN116737306B/zh
Publication of CN116737306A publication Critical patent/CN116737306A/zh
Application granted granted Critical
Publication of CN116737306B publication Critical patent/CN116737306B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object 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环境下远程桌面获取显示数据后的优化方法。
背景技术
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。
CN202311021932.XA 2023-08-15 2023-08-15 一种wayland环境下远程桌面获取显示数据后的优化方法 Active CN116737306B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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