CN113822962A - 窗口信息处理方法、装置、电子设备及存储介质 - Google Patents
窗口信息处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113822962A CN113822962A CN202111372860.4A CN202111372860A CN113822962A CN 113822962 A CN113822962 A CN 113822962A CN 202111372860 A CN202111372860 A CN 202111372860A CN 113822962 A CN113822962 A CN 113822962A
- Authority
- CN
- China
- Prior art keywords
- information
- window
- buffer area
- application interface
- android
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- User Interface Of Digital Computer (AREA)
- Image Generation (AREA)
Abstract
本公开提出一种窗口信息处理方法、装置、电子设备及存储介质。所述方法包括:获取Linux应用的待显示信息;将根据所述待显示信息生成的图像帧纹理信息填充在安卓绘图应用接口驱动器的目标缓冲区;所述图像帧纹理信息用于在基于Linux系统的通信协议进行通信的原生窗口中生成显示画面;将所述目标缓冲区对应的提交信息提交至安卓绘图应用接口驱动器的画布窗口;利用所述画布窗口,将所述提交信息转发至所述原生窗口,使得所述原生窗口能够根据提交信息获取所述图像帧纹理信息。本公开实施例能够提高窗口画面渲染、生成效率。
Description
技术领域
本公开涉及计算机技术,尤其涉及一种窗口信息处理方法、装置、电子设备及存储介质。
背景技术
Linux,全称GNU/Linux,是一种目标广泛使用和自由传播的类UNIX操作系统。OpenGL(Open Graphics Library,开放图形库)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API),可存在于诸如Linux之类的UNIX平台。Vulkan是一个跨平台的2D和3D绘图应用程序接口(Application Programming Interface,API),Vulkan API被称为“下一代OpenGL行动”。
在Linux系统中,OpenGL渲染指令可以通过Vulkan驱动实现硬件图形加速。但是图形窗口的创建需要Vulkan与Linux系统底层窗口系统通信实现。从而如何提高窗口创建和渲染的效率,是需要改进的重点之一。
发明内容
本公开实施例提供一种口信息处理方法、装置、电子设备及存储介质,以解决相关技术存在的问题,技术方案如下:
第一方面,本公开实施例提供了一种窗口信息处理方法,包括:
获取Linux应用的待显示信息;
将根据待显示信息生成的图像帧纹理信息填充在安卓绘图应用接口驱动器的目标缓冲区;图像帧纹理信息用于在基于Linux系统的通信协议进行通信的原生窗口中生成显示画面;
将目标缓冲区对应的提交信息提交至安卓绘图应用接口驱动器的画布窗口,所述提交信息根据所述图像帧纹理信息的填充操作生成;
利用画布窗口,将提交信息转发至原生窗口,使得原生窗口能够根据提交信息获取图像帧纹理信息。
在一种实施方式中,将根据待显示信息生成的图像帧纹理信息填充在安卓绘图应用接口驱动器的目标缓冲区,包括:
根据待显示的信息,获取安卓绘图应用接口驱动器对应的缓冲区队列中的目标缓冲区,目标缓冲区处于未占用状态;
将待显示的信息对应的图像帧纹理信息填充在目标缓冲区。
在一种实施方式中,根据待显示的信息,获取安卓绘图应用接口驱动器对应的缓冲区队列中的目标缓冲区,包括:
根据待显示的信息,获取安卓绘图应用接口驱动器的交换链数组中的目标索引;
确定目标索引在缓冲区队列中对应的缓冲区为目标缓冲区。
在一种实施方式中,将目标缓冲区对应的提交信息提交至安卓绘图应用接口驱动器的画布窗口,包括:
将目标索引作为提交信息,提交至安卓绘图应用接口驱动器的画布窗口。
在一种实施方式中,窗口信息处理方法还包括:
根据Linux应用的运行信息,生成安卓绘图应用接口实例;
通过安卓绘图应用接口实例,创建安卓绘图应用接口的画布窗口。
在一种实施方式中,窗口信息处理方法还包括:
基于安卓绘图应用接口实例,创建Linux系统实例;
在Linux系统实例中运行原生窗口。
在一种实施方式中,利用画布窗口,将提交信息转发至原生窗口,包括:
利用画布窗口的获取地址函数指针,确定Linux系统实例的地址;获取地址函数指针为对画布窗口的实例进程地址获取函数指针进行基于Linux系统的通信协议的扩展后得到的;
根据地址,将提交信息转发至原生窗口。
第二方面,本公开实施例提供了一种窗口信息处理装置,其特征在于,包括:
待显示信息获取模块,应用获取Linux应用的待显示信息;
填充模块,用于将根据待显示信息生成的图像帧纹理信息填充在安卓绘图应用接口驱动器的目标缓冲区;图像帧纹理信息用于在基于Linux系统的通信协议进行通信的原生窗口中生成显示画面;
提交模块,用于将目标缓冲区对应的提交信息提交至安卓绘图应用接口驱动器的画布窗口,所述提交信息根据所述图像帧纹理信息的填充操作生成;
转发模块,用于利用画布窗口,将提交信息转发至原生窗口,使得原生窗口能够根据提交信息获取图像帧纹理信息。
在一种实施方式中,填充模块包括:
目标缓冲区获取单元,用于根据待显示的信息,获取安卓绘图应用接口驱动器对应的缓冲区队列中的目标缓冲区,目标缓冲区处于未占用状态;
目标缓冲区处理单元,用于将待显示的信息对应的图像帧纹理信息填充在目标缓冲区。
在一种实施方式中,目标缓冲区获取单元还用于:
根据待显示的信息,获取安卓绘图应用接口驱动器的交换链数组中的目标索引;
确定目标索引在缓冲区队列中对应的缓冲区为目标缓冲区。
在一种实施方式中,提交模块包括:
第一提交单元,用于将目标索引作为提交信息,提交至安卓绘图应用接口驱动器的画布窗口。
在一种实施方式中,窗口信息处理装置还包括:
第一实例生成模块,用于根据Linux应用的运行信息,生成安卓绘图应用接口实例;
画布窗口创建模块,用于通过安卓绘图应用接口实例,创建安卓绘图应用接口的画布窗口。
在一种实施方式中,窗口信息处理装置还包括:
第二示例生成模块,用于基于安卓绘图应用接口实例,创建Linux系统实例;
运行模块,用于在Linux系统实例中运行原生窗口。
在一种实施方式中,转发模块包括:
地址确定单元,用于利用画布窗口的获取地址函数指针,确定Linux系统实例的地址;获取地址函数指针为对画布窗口的实例进程地址获取函数指针进行基于Linux系统的通信协议的扩展后得到的;
提交信息转发单元,用于根据地址,将提交信息转发至原生窗口。
第三方面,本公开实施例提供了一种窗口信息处理电子设备,该电子设备包括:存储器和处理器。其中,该该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,使得该处理器执行上述各方面任一种实施方式中的方法。
第四方面,本公开实施例提供了一种计算机可读存储介质,计算机可读存储介质存储计算机程序,当计算机程序在计算机上运行时,上述各方面任一种实施方式中的方法被执行。
上述技术方案中的优点或有益效果至少包括:通过Android Vulkan驱动和基于Linux系统的Wayland协议,可通过缓冲区队列存放需要显示的信息,实现Vulkan图形窗口的建立以及与窗口系统的渲染显示同步,从而提高窗口的建立以及渲染的速度和效率。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本公开进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本公开公开的一些实施方式,而不应将其视为是对本公开范围的限制。
图1为本公开一实施例窗口信息处理方法示意图;
图2为本公开另一实施例窗口信息处理方法示意图;
图3为本公开一示例的窗口信息处理方法示意图;
图4为本公开一实施例窗口信息处理装置示意图;
图5为本公开另一实施例窗口信息处理装置示意图;
图6为本公开又一实施例窗口信息处理装置示意图;
图7为本公开又一实施例窗口信息处理装置示意图;
图8为本公开又一实施例窗口信息处理装置示意图;
图9为本公开又一实施例窗口信息处理装置示意图;
图10为本公开一实施例窗口信息处理电子设备示意图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本公开的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
图1示出根据本公开一实施例的窗口信息处理方法的流程图。如图1所示,该窗口信息处理方法可以包括:
步骤S11:获取Linux应用的待显示信息;
步骤S12:将根据待显示信息生成的图像帧纹理信息填充在安卓绘图应用接口驱动器的目标缓冲区;图像帧纹理信息用于在基于Linux系统的通信协议进行通信的原生窗口中生成显示画面;
步骤S13:将目标缓冲区对应的提交信息提交至安卓绘图应用接口(Vulkan)驱动器的画布窗口,所述提交信息根据所述图像帧纹理信息的填充操作生成;
步骤S14:利用画布窗口,将提交信息转发至原生窗口,使得原生窗口能够根据提交信息获取图像帧纹理信息。
本实施例中,Linux应用的待显示信息,可以是Linux应用生成的用于显示的应用界面数据、应用界面的显示方式等。
在具体实现方式中,可以通过监听或者主动获取的方式,获取应用的待显示信息。在每次获取待显示信息之后,可以基于待显示的信息,申请基于Linux的安卓系统的缓冲区,并将待显示的信息进行渲染,生成用于在显示界面显示的图像帧纹理信息。
目标缓冲区可以是从安卓系统的Vulkan接口对应的缓冲区队列中,按照处于未占用状态的缓冲区的顺序获取的。将目标缓冲区对应的提交信息提交至安卓绘图应用接口驱动器的画布窗口,可以是将目标缓冲区对应的句柄作为提交信息,提交至画布窗口,使得画布窗口的相关组件能够利用句柄对应控制目标缓冲区。
基于Linux系统的通信协议,可以是Wayland协议。Wayland可以看作是一个简单的“显示服务器”,定义了如何与内核通讯、如何与Client通讯。
提交信息可以根据图像帧纹理信息的填充操作的完成而生成。即,在图像帧纹理信息的填充操作的完成后生成。
本实施例中的Vulkan 基于安卓系统创建。Android Vulkan可以包括Runtime(运行时态模块)和Driver(驱动器)两部分。在安卓系统中,Vulkan Runtime构建BufferQueue(缓冲队列),通过缓冲队列机制实现与Android 系统的通信。本实施例中,可以通过驱动器部分申请、填充和提交目标缓冲区,同样通过驱动器部分创建和维护画布。
通过在Linux系统下实现安卓Vulkan构建BufferQueue,并对Wayland协议进行功能扩展,使其能够与安卓Vulkan的驱动器部分进行缓冲区信息的传递和目标缓冲区的使用,实现Vulkan图形窗口的建立以及与窗口系统的渲染显示同步。
本实施例中,通过Android Vulkan驱动和基于Linux系统的Wayland协议,可通过缓冲区队列存放需要显示的信息,实现Vulkan图形窗口的建立以及与窗口系统的渲染显示同步,从而提高窗口的建立以及渲染的速度和效率。
在一种实施方式中,将根据待显示信息生成的图像帧纹理信息填充在安卓绘图应用接口驱动器的目标缓冲区,如图2所示,包括:
步骤S21:根据待显示的信息,获取安卓绘图应用接口驱动器对应的缓冲区队列中的目标缓冲区,目标缓冲区处于未占用状态;
步骤S22:将待显示的信息对应的图像帧纹理信息填充在目标缓冲区。
本实施例中,处于未占用状态的缓冲区,可以用一定的标记进行表示。比如,每当窗口将缓冲区的图像帧纹理信息取出,生成显示画面后,缓冲区被清空。可采用标记表示缓冲区处于占用或未占用状态。
在窗口将缓冲区的图像帧纹理信息取出、生成显示画面,并将缓冲区的状态修改为未占用的情况下,才能够将缓冲区用于填充新的图像帧纹理信息。
本实施例中,通过获取目标缓冲区、将图像帧纹理信息填充于目标缓冲区中,从而能够利用处于未使用状态的目标缓冲区进行显示画面的生成。
在一种实施方式中,根据待显示的信息,获取安卓绘图应用接口驱动器对应的缓冲区队列中的目标缓冲区,包括:
根据待显示的信息,获取安卓绘图应用接口驱动器的交换链数组(Swapchain)中的目标索引(Index);
确定目标索引在缓冲区队列中对应的缓冲区为目标缓冲区。
本实施例中,安卓绘图应用接口驱动器的交换链数组中,包括一系列索引,每个索引对应一个缓冲区。每次获取缓冲区时,可按照交换链数组中的索引的顺序,进行顺序获取。
在具体实现方式中,同一缓冲区所对应的索引可以相同或不同。
在一种实施方式中,将目标缓冲区对应的提交信息提交至安卓绘图应用接口驱动器的画布窗口,包括:
将目标索引作为提交信息,提交至安卓绘图应用接口驱动器的画布窗口。
本实施例中,提交信息可以用于获取目标缓冲区的句柄。画布窗口可以根据提交信息,获取句柄,控制目标缓冲区,并获取目标缓冲区中的图像帧纹理信息。
在一种实施方式中,窗口信息处理方法还包括:
根据Linux应用的运行信息,生成安卓绘图应用接口实例;
通过安卓绘图应用接口实例,创建安卓绘图应用接口的画布窗口。
本实施例中,可在Linux应用初始化阶段,生成安卓绘图应用接口实例。
在一种实施方式中,窗口信息处理方法还包括:
基于安卓绘图应用接口实例,创建Linux系统实例;
在Linux系统实例中运行原生窗口。
本实施例中,Linux系统实例可在安卓系统实例的基础上进行创建。比如,在安卓系统实例的基础上,创建基于Wayland协议进行通信信息传输的Linux系统实例。通过Linux系统实例,运行原生窗口的进程。
在一种实施方式中,利用画布窗口,将提交信息转发至原生窗口,包括:
利用画布窗口的获取地址函数指针,确定Linux系统实例的地址;获取地址函数指针为对画布窗口的实例进程地址获取函数指针进行基于Linux系统的通信协议的扩展后得到的;
根据地址,将提交信息转发至原生窗口。
在具体实施例中,提交信息可以是缓冲区本身、缓冲区句柄的信息、缓冲区句柄对应的索引等。通过提交信息,原生窗口可获得目标缓冲区内的图像帧纹理信息。
在本公开一种示例中,基于安卓的Vulkan的所有App(Application,应用)的相关的状态均存在VkInstance(Vulkan实例)中。在应用的启动阶段,App会先通过vkCreateInstance()接口函数创建Instance(实例),然后通过vkEnumeratePhysicalDevices()接口函数查询系统中的物理设备,接着用vkCreateDevice()接口函数根据指定物理设备创建逻辑设备。其中,vkEnumeratePhysicalDevices()接口函数用于枚举物理设备。
另外,根据Vulkan spec(Vulkan标准明细),Vulkan接口在使用时不需要静态暴露接口,接口函数的指针可以通过vkGetInstanceProcAddr()接口函数来获得。其中,vkGetInstanceProcAddr()接口函数可用于获得实例进程地址。从而本示例中,在Android实例的基础上构建Linux下基于Wayland通信协议进行信息传输的Linux系统实例,并对vkGetInstanceProcAddr接口函数所包含的函数指针进行基于Linux系统的Wayland通信协议的扩展,使其能够在Linux系统应用和Linux系统的窗口之间传输缓冲区以及相关的句柄等信息。
参照图3所示,通过对实例Instance接口vkCreateSurface进行扩展,得到扩展后的接口vkCreateWaylandSurfaceKHR,通过扩展后的接口vkCreateWaylandSurfaceKHR,得到Vulkan图形缓冲区VkSurfaceKHR31,该图形缓冲区由两部分组成。
仍然参照图3,图形缓冲区VkSurfaceKHR31的第一部分由BufferQueue派生的WaylandNativeWindow(基于Wayland协议进行通信的Linux原生窗口)构建初始化。初始化过程主要包含创建Wayland窗口系统代理侧对象Wayland_window32(Wayland窗口或前述实施例中的Wayland原生窗口)和Window_surface33(画布窗口),画布窗口可共用Vulkan的驱动器的画布部分(Driver::Surface),通过Window_surface33,建立Vulkan图形缓冲区与Linux系统底层的窗口系统的连接,在连接建立之后,Window_surface33可通过Vulkan的地址获取函数,获取缓冲区对应的索引,进一步获取能够控制缓冲区的句柄(记录为swapchain_handle37)。同时通过显示存储驱动Gralloc(Graphics Alloc,图形分配)模块,为画布窗口申请长度为3(或其它数量)个Buffer的缓冲区队列34。
图形缓冲区VkSurfaceKHR31的第二部分通过vkCreateSwapchainKHR()接口函数创建记录为VkSwapchainKHR35d的Vulkan交换链)。VkSwapchainKHR35会通过BufferQueue机制接口中获取WaylandNativeWindow(Wayland原生窗口)构建缓冲区数量为3的缓冲区队列34,并将获取的缓冲区队列34中的图形缓冲区内的图像帧纹理转换成vkImage(Vulkan画面), 这些vkImage由驱动器层的driver::Swapchain::Image数组来维护,即图3中所示的num_image 36数组。数组中元素的最多个数可以与WaylandNativeWindow中构建的缓冲区队列数量相同。num_image 36数组包含多个索引,每个索引对应一个原生窗口的缓冲区(ANative Window Buffer),缓冲区进一步对应用于生成画面(Image)的图像帧纹理。
每当根据Linux应用,需要绘制新的一帧时,先调用swapchain(交换链)部分的vkAcquireNextImageKHR()接口函数获得一个App可用的缓冲区,即前述实施例中的目标缓冲区。该缓冲区由Swapchain中的driver::Swapchain::Image数组的索引表示,在driver::Swapchain::Image数组中,包含多个索引,每个索引对应一个缓冲区。缓冲区的获取过程中,通过回调进入WaylandNativeWindow中的dequeueBuffer(出队缓冲区),从出队的缓冲队列中取得。在从出队缓冲区中获得一个缓冲区之后,可能存在GPU(GraphicsProcessing Unit,图像处理单元)仍然在操作该缓冲区的情况,因此拿到缓冲区后,还需等返回的semaphore signal(信号标信号)后才能确认该缓冲区真正可用,即处于未占用或未使用状态。基于缓冲区的未占用状态的确认,可以根据Linux应用的待显示信息进行渲染。
渲染完一帧后,将渲染得到的图像帧纹理信息填充在获取的缓冲区中,调用swapchain部分的vkQueuePresentKHR()接口函数,提交缓冲区。在提交时,缓冲区采用索引表示。缓冲区提交过程中,通过回调进入WaylandNativeWindow中的queueBuffer(缓冲区队列),将缓冲区放入缓冲区队列中,等待画布窗口的使用。同时,WaylandNativeWindow会将该缓冲区通过Wayalnd窗口系统代理对象Wayland_window和Window_surface进行提交显示,即,将渲染完成的缓冲区提交给Linux底层的窗口管理系统,完成最终的合成显示。
本公开示例中,实现了Linux系统下结合Wayland协议和Android Vulkan驱动,建立图形窗口缓冲区的机制。同时,本示例通过扩展BufferQueue机制,实现Vulkan渲染Linux应用的待显示信息与Linux窗口系统的渲染显示同步。
需要说明的是,尽管以Vulkan、Wayland作为示例介绍了窗口信息处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定用于传输缓冲区信息的接口或模块,或者用于传输信息的协议,只要能够实现渲染和窗口展示的同步即可。
这样,通过本公开实施例的窗口信息处理方法能够提高窗口信息处理效率,根据本公开上述实施例的缓冲区队列、画布窗口等,能够实现Linux应用的窗口信息渲染和窗口信息展示的同步,提高窗口信息处理效率。
图4示出根据本发明一实施例的窗口信息处理装置的结构框图。如图4所示,该装置可以包括:
待显示信息获取模块41,应用获取Linux应用的待显示信息;
填充模块42,用于将根据待显示信息生成的图像帧纹理信息填充在安卓绘图应用接口驱动器的目标缓冲区;图像帧纹理信息用于在基于Linux系统的通信协议进行通信的原生窗口中生成显示画面;
提交模块43,用于将目标缓冲区对应的提交信息提交至安卓绘图应用接口驱动器的画布窗口,提交信息根据图像帧纹理信息的填充操作生成;
转发模块44,用于利用画布窗口,将提交信息转发至原生窗口,使得原生窗口能够根据提交信息获取图像帧纹理信息。
在一种实施方式中,如图5所示,填充模块包括:
目标缓冲区获取单元51,用于根据待显示的信息,获取安卓绘图应用接口驱动器对应的缓冲区队列中的目标缓冲区,目标缓冲区处于未占用状态;
目标缓冲区处理单元52,用于将待显示的信息对应的图像帧纹理信息填充在目标缓冲区。
在一种实施方式中,目标缓冲区获取单元还用于:
根据待显示的信息,获取安卓绘图应用接口驱动器的交换链数组中的目标索引;
确定目标索引在缓冲区队列中对应的缓冲区为目标缓冲区。
在一种实施方式中,如图6所示,提交模块包括:
第一提交单元61,用于将目标索引作为提交信息,提交至安卓绘图应用接口驱动器的画布窗口。
在一种实施方式中,如图7所示,窗口信息处理装置还包括:
第一实例生成模块71,用于根据Linux应用的运行信息,生成安卓绘图应用接口实例;
画布窗口创建模块72,用于通过安卓绘图应用接口实例,创建安卓绘图应用接口的画布窗口。
在一种实施方式中,如图8所示,窗口信息处理装置还包括:
第二示例生成模块81,用于基于安卓绘图应用接口实例,创建Linux系统实例;
运行模块82,用于在Linux系统实例中运行原生窗口。
在一种实施方式中,如图9所示,转发模块包括:
地址确定单元91,用于利用画布窗口的获取地址函数指针,确定Linux系统实例的地址;获取地址函数指针为对画布窗口的实例进程地址获取函数指针进行基于Linux系统的通信协议的扩展后得到的;
提交信息转发单元92,用于根据地址,将提交信息转发至原生窗口。
本发明实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
图10示出根据本发明一实施例的窗口信息处理电子设备的结构框图。如图10所示,该窗口信息处理电子设备包括:存储器910和处理器920,存储器910内存储有可在处理器920上运行的计算机程序。处理器920执行该计算机程序时实现上述实施例中的窗口信息处理方法。存储器910和处理器920的数量可以为一个或多个。
该窗口信息处理电子设备还包括:
通信接口930,用于与外界设备进行通信,进行数据交互传输。
如果存储器910、处理器920和通信接口930独立实现,则存储器910、处理器920和通信接口930可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect ,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture ,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器910、处理器920及通信接口930集成在一块芯片上,则存储器910、处理器920及通信接口930可以通过内部接口完成相互间的通信。
本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现本公开实施例中提供的方法。
本公开实施例还提供了一种芯片,该芯片包括,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本公开实施例提供的方法。
本公开实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请实施例提供的方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammablegate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advanced RISC machines,ARM)架构的处理器。
进一步地,可选的,上述存储器可以包括只读存储器和随机存取存储器,还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(read-onlymemory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic random access memory ,DRAM) 、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本公开的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本公开的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种窗口信息处理方法,其特征在于,包括:
获取Linux应用的待显示信息;
将根据所述待显示信息生成的图像帧纹理信息填充在安卓绘图应用接口驱动器的目标缓冲区;所述图像帧纹理信息用于在基于Linux系统的通信协议进行通信的原生窗口中生成显示画面;
将所述目标缓冲区的提交信息提交至安卓绘图应用接口驱动器的画布窗口,所述提交信息根据所述图像帧纹理信息的填充操作生成;
利用所述画布窗口,将所述提交信息转发至所述原生窗口,使得所述原生窗口能够根据所述提交信息获取所述图像帧纹理信息。
2.根据权利要求1所述的方法,其特征在于,所述将根据所述待显示信息生成的图像帧纹理信息填充在安卓绘图应用接口驱动器的目标缓冲区,包括:
根据所述待显示信息,获取安卓绘图应用接口驱动器对应的缓冲区队列中的目标缓冲区,所述目标缓冲区包括处于未占用状态的缓冲区;
将所述待显示信息对应的图像帧纹理信息填充在所述目标缓冲区。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待显示信息,获取安卓绘图应用接口驱动器对应的缓冲区队列中的目标缓冲区,包括:
根据所述待显示信息,获取安卓绘图应用接口驱动器的交换链数组中的目标索引;
将所述目标索引在所述缓冲区队列中对应的缓冲区确定为目标缓冲区。
4.根据权利要求3所述的方法,其特征在于,所述将所述目标缓冲区对应的提交信息提交至安卓绘图应用接口驱动器的画布窗口,包括:
将所述目标索引作为所述提交信息,提交至所述安卓绘图应用接口驱动器的画布窗口。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据Linux应用的运行信息,生成安卓绘图应用接口实例;
通过所述安卓绘图应用接口实例,创建安卓绘图应用接口的画布窗口。
6.根据权利要求5所述的方法,其中,所述方法还包括:
基于所述安卓绘图应用接口实例,创建Linux系统实例;
在所述Linux系统实例中运行所述原生窗口。
7.根据权利要求6所述的方法,其中,所述利用所述画布窗口,将所述提交信息转发至所述原生窗口,包括:
利用所述画布窗口的获取地址函数指针,确定所述Linux系统实例的地址;所述获取地址函数指针为对所述画布窗口的实例进程地址获取函数指针进行基于Linux系统的通信协议的扩展后得到的;
根据所述地址,将所述提交信息转发至所述原生窗口。
8.一种窗口信息处理装置,其特征在于,包括:
待显示信息获取模块,应用获取Linux应用的待显示信息;
填充模块,用于将根据所述待显示信息生成的图像帧纹理信息填充在安卓绘图应用接口驱动器的目标缓冲区;所述图像帧纹理信息用于在基于Linux系统的通信协议进行通信的原生窗口中生成显示画面;
提交模块,用于将所述目标缓冲区对应的提交信息提交至安卓绘图应用接口驱动器的画布窗口,所述提交信息根据所述图像帧纹理信息的填充操作生成;
转发模块,用于利用所述画布窗口,将所述提交信息转发至所述原生窗口,使得所述原生窗口能够根据提交信息获取所述图像帧纹理信息。
9.根据权利要求8所述的装置,其特征在于,所述填充模块包括:
目标缓冲区获取单元,用于根据所述待显示信息,获取安卓绘图应用接口驱动器对应的缓冲区队列中的目标缓冲区,所述目标缓冲区处于未占用状态;
目标缓冲区处理单元,用于将所述待显示信息对应的图像帧纹理信息填充在所述目标缓冲区。
10.根据权利要求9所述的装置,其特征在于,所述目标缓冲区获取单元还用于:
根据所述待显示信息,获取安卓绘图应用接口驱动器的交换链数组中的目标索引;
确定目标索引在缓冲区队列中对应的缓冲区为目标缓冲区。
11.根据权利要求10所述的装置,其特征在于,所述提交模块包括:
第一提交单元,用于将所述目标索引作为所述提交信息,提交至所述安卓绘图应用接口驱动器的画布窗口。
12.根据权利要求8或9所述的装置,其特征在于,所述装置还包括:
第一实例生成模块,用于根据Linux应用的运行信息,生成安卓绘图应用接口实例;
画布窗口创建模块,用于通过所述安卓绘图应用接口实例,创建安卓绘图应用接口的画布窗口。
13.根据权利要求12所述的装置,其中,所述装置还包括:
第二示例生成模块,用于基于所述安卓绘图应用接口实例,创建Linux系统实例;
运行模块,用于在所述Linux系统实例中运行所述原生窗口。
14.根据权利要求13所述的装置,其中,所述转发模块包括:
地址确定单元,用于利用所述画布窗口的获取地址函数指针,确定所述Linux系统实例的地址;所述获取地址函数指针为对所述画布窗口的实例进程地址获取函数指针进行基于Linux系统的通信协议的扩展后得到的;
提交信息转发单元,用于根据所述地址,将所述提交信息转发至所述原生窗口。
15.一种窗口信息处理电子设备,其特征在于,包括:处理器和存储器,所述存储器中存储指令,所述指令由处理器加载并执行,以实现如权利要求1至7任一项所述的方法。
16.一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111372860.4A CN113822962B (zh) | 2021-11-19 | 2021-11-19 | 窗口信息处理方法、装置、电子设备及存储介质 |
PCT/CN2022/108722 WO2023087778A1 (zh) | 2021-11-19 | 2022-07-28 | 窗口信息处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111372860.4A CN113822962B (zh) | 2021-11-19 | 2021-11-19 | 窗口信息处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113822962A true CN113822962A (zh) | 2021-12-21 |
CN113822962B CN113822962B (zh) | 2022-03-18 |
Family
ID=78919290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111372860.4A Active CN113822962B (zh) | 2021-11-19 | 2021-11-19 | 窗口信息处理方法、装置、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113822962B (zh) |
WO (1) | WO2023087778A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023087778A1 (zh) * | 2021-11-19 | 2023-05-25 | 北京字节跳动网络技术有限公司 | 窗口信息处理方法、装置、电子设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116339900B (zh) * | 2023-05-30 | 2023-07-18 | 北京麟卓信息科技有限公司 | 一种跨运行环境的多窗口融合显示方法 |
CN117149341B (zh) * | 2023-10-31 | 2024-01-05 | 成都阿加犀智能科技有限公司 | 一种显示Linux GUI程序的方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103268620A (zh) * | 2013-04-28 | 2013-08-28 | 华为技术有限公司 | 图形处理方法、图形处理装置及终端设备 |
CN107450897A (zh) * | 2016-06-01 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 图形引擎的跨平台移植方法和装置 |
US20200251067A1 (en) * | 2019-02-01 | 2020-08-06 | Forcepoint, LLC | System for Capturing Images from Applications Rendering Video to a Native Platform with a Graphics Rendering Library |
CN113110910A (zh) * | 2021-04-20 | 2021-07-13 | 上海卓易科技股份有限公司 | 一种安卓容器实现的方法、系统及设备 |
CN113256481A (zh) * | 2021-06-21 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 图形处理器中的任务处理方法、装置、电子设备及存储介质 |
CN113448662A (zh) * | 2020-03-27 | 2021-09-28 | 海信电子科技(武汉)有限公司 | 窗口图像显示方法、设备及存储介质 |
CN113515396A (zh) * | 2021-07-09 | 2021-10-19 | 北京鲸鲮信息系统技术有限公司 | 图形渲染方法、装置、电子设备与存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902789B (zh) * | 2012-09-29 | 2016-01-06 | 北京奇虎科技有限公司 | 改变浏览器窗口显示的内容的显示控制设备及方法 |
CA2946074C (en) * | 2015-10-21 | 2024-02-13 | Stephen Viggers | Systems and methods for using an opengl api with a vulkan graphics driver |
EP3441877A3 (en) * | 2017-08-09 | 2019-03-20 | Daniel Herring | Systems and methods for using egl with an opengl api and a vulkan graphics driver |
CN111724293B (zh) * | 2019-03-22 | 2023-07-28 | 华为技术有限公司 | 图像渲染方法及装置、电子设备 |
CN113822962B (zh) * | 2021-11-19 | 2022-03-18 | 北京鲸鲮信息系统技术有限公司 | 窗口信息处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-11-19 CN CN202111372860.4A patent/CN113822962B/zh active Active
-
2022
- 2022-07-28 WO PCT/CN2022/108722 patent/WO2023087778A1/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103268620A (zh) * | 2013-04-28 | 2013-08-28 | 华为技术有限公司 | 图形处理方法、图形处理装置及终端设备 |
CN107450897A (zh) * | 2016-06-01 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 图形引擎的跨平台移植方法和装置 |
US20200251067A1 (en) * | 2019-02-01 | 2020-08-06 | Forcepoint, LLC | System for Capturing Images from Applications Rendering Video to a Native Platform with a Graphics Rendering Library |
CN113448662A (zh) * | 2020-03-27 | 2021-09-28 | 海信电子科技(武汉)有限公司 | 窗口图像显示方法、设备及存储介质 |
CN113110910A (zh) * | 2021-04-20 | 2021-07-13 | 上海卓易科技股份有限公司 | 一种安卓容器实现的方法、系统及设备 |
CN113256481A (zh) * | 2021-06-21 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 图形处理器中的任务处理方法、装置、电子设备及存储介质 |
CN113515396A (zh) * | 2021-07-09 | 2021-10-19 | 北京鲸鲮信息系统技术有限公司 | 图形渲染方法、装置、电子设备与存储介质 |
Non-Patent Citations (3)
Title |
---|
TOBIAS HOLSTEIN .ETC: ""Towards a HTML-UI-Compositor by Introducing the Wayland -Protocol into a Broswer Engine"", 《2016 13TH WORKING IEEE/IFIP CONFERENCE ON SOFTWARE ARCHITECTURE》 * |
杨雄等: ""基于Android与Linux的云终端实现方案"", 《延边大学学报(自然科学版)》 * |
高珑等: ""并行帧缓存设备:基于多核CPU的Xorg并行显示优化"", 《软件学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023087778A1 (zh) * | 2021-11-19 | 2023-05-25 | 北京字节跳动网络技术有限公司 | 窗口信息处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023087778A1 (zh) | 2023-05-25 |
CN113822962B (zh) | 2022-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113822962B (zh) | 窗口信息处理方法、装置、电子设备及存储介质 | |
JP5166552B2 (ja) | グラフィックス処理システムにおけるオフスクリーンサーフェスのためのマルチバッファサポート | |
ES2617303T3 (es) | Técnicas de comunicación entre procesadores en una plataforma informática de múltiples procesadores | |
KR101558831B1 (ko) | 서브버퍼 오브젝트 | |
US7383412B1 (en) | On-demand memory synchronization for peripheral systems with multiple parallel processors | |
CN113918366B (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN110262907B (zh) | 用于统一应用编程接口和模型的系统和方法 | |
KR101952983B1 (ko) | 콘텐트의 타일-기반 렌더링을 위한 방법 및 콘텐트를 렌더링하기 위한 시스템 | |
WO2017167127A1 (zh) | 一种图形合成方法、窗口设置方法及系统 | |
WO2010000126A1 (zh) | 交互信息生成方法及系统 | |
EP1301906A2 (en) | Method and system for displaying a composited image | |
CN112269603A (zh) | 一种在Linux上兼容运行Android应用的图形显示方法与装置 | |
WO2021013019A1 (zh) | 一种图片处理方法及装置 | |
US7821521B2 (en) | Methods and systems for legacy graphics emulation | |
US20150348224A1 (en) | Graphics Pipeline State Object And Model | |
CN104025185A (zh) | 用于使用gpu控制器来预加载缓存的机制 | |
CN111400024A (zh) | 渲染过程中的资源调用方法、装置和渲染引擎 | |
US20190080017A1 (en) | Method, system, and device that invokes a web engine | |
US10121220B2 (en) | System and method for creating aliased mappings to minimize impact of cache invalidation | |
CN116821040A (zh) | 基于gpu直接存储器访问的显示加速方法、装置及介质 | |
CN112423111A (zh) | 图形引擎和适用于播放器的图形处理方法 | |
WO2023221822A1 (zh) | 数据处理方法、电子设备和可读存储介质 | |
US10157440B2 (en) | Static data sharing mechanism for a heterogeneous processing environment | |
WO2023207563A1 (zh) | 一种图像渲染方法及装置、存储介质 | |
CN116503529A (zh) | 渲染、3d画面控制方法、电子设备和计算机可读存储介质 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220330 Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing. Patentee after: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd. Address before: 2005, floor 2, No. 39, West Street, Haidian District, Beijing 100080 Patentee before: Beijing jingling Information System Technology Co.,Ltd. |
|
TR01 | Transfer of patent right |