基于客户端软件渲染优化Wine图形性能的方法

时间:2022-07-26 07:00:52

基于客户端软件渲染优化Wine图形性能的方法

0引言

X窗口系统是一种基于网络的GUI系统,是当前大多数UNIX和Linux操作系统上的图形用户界面[1]。在实现上X窗口系统采用了C/S架构模型,由一个X服务器与多个X客户端程序进行通信,服务器反馈用户输入(键盘、鼠标、触摸屏),并接受客户端对图形输出(窗口)的请求。而Wine作为一种支持Windows程序运行于Linux上的进程虚拟机[2],其图形处理能力必然受制于X窗口系统,因此相对Windows操作系统而言总体性能不高[3];而且Windows图形系统与X窗口系统的异构将导致Wine在模拟Windows图形API时存在性能瓶颈。当Wine遭遇此类性能瓶颈时,其图形性能将急剧恶化,严重影响用户的使用体验。

Wine存在多个相关的图形性能瓶颈,如应用程序频繁地编译Direct3D着色器将导致很低帧率(Frame Per Second,FPS),应用程序严重依赖内核事件将运行缓慢等。此类瓶颈是由Wine模拟Windows功能时的不合理设计导致的。通过改善或优化Wine中对应功能模块的设计,可消除此类图形性能瓶颈[4]。

本文在分析Windows操作系统的窗口系统与X窗口系统差异的基础上,给出了Wine在X窗口系统基础上模拟Windows图形API所产生的一个性能瓶颈,并提出了相应的解决方案。

1Wine图形性能瓶颈分析

在桌面操作系统中,当前存在两种主要的窗口系统。一种是基于C/S架构,将窗口系统核心作为操作系统的服务器用户进程,同时将窗口系统的应用程序作为客户端用户进程,通过进程间通信方式,由窗口服务器进程实现窗口核心功能;X窗口系统即为此类窗口系统的典型[5]。另一种则是基于核心的窗口系统,即把窗口系统的核心放入操作系统的内核中。用户以系统调用的方式使用窗口功能;微软Windows即为此类窗口系统的典型。基于C/S架构的窗口系统具有较高的稳定性,即该窗口系统的崩溃不会引起底层操作系统的崩溃,通过重启服务器进程可自动恢复,但由于使用过程涉及多次进线程切换,因此此类窗口系统效率较低[6]。而基于核心的窗口系统不需要进线程切换,因此效率较高,但该窗口系统的崩溃将导致整个操作系统的崩溃,因此稳定性较差。

上一篇:试论康德形而上学中的人文主义情怀 下一篇:随程序规模动态调整的通道优化布线算法