知识探索实践 2024-12-23 15:15 采纳率: 0%
浏览 14

vglrun VGL_DRAWABLE

问题

  1. 为什么执行 vglrun glxgears 时帧数极低?
  2. VGL_DRAWABLE=pixmap是什么,有什么作用?(没查到什么相关资料)
  3. 为什么执行 VGL_DRAWABLE=pixmap vglrun glxgears 时,CPU的使用率和直接执行 glxgears 的CPU使用率差不多?

现象
执行 glxgears 时,只占用CPU,CPU使用率60-70%。帧数较高
执行 vglrun glxgears 时,占用GPU和CPU,CPU使用率10-20%。帧数很低
执行 VGL_DRAWABLE=pixmap vglrun glxgears 时,占用GPU和CPU,CPU使用率60-70%。帧数更高

# glxgears
4722 frames in 5.0 seconds = 944.321 FPS
4691 frames in 5.0 seconds = 938.149 FPS
5199 frames in 5.0 seconds = 1039.784 FPS
5610 frames in 5.0 seconds = 1121.983 FPS
......

# vglrun glxgears
17 frames in 5.0 seconds =  3.395 FPS
16 frames in 5.3 seconds =  3.000 FPS
15 frames in 5.0 seconds =  3.000 FPS
16 frames in 5.3 seconds =  3.000 FPS
......

# VGL_DRAWABLE=pixmap vglrun glxgears
9053 frames in 5.0 seconds = 1810.432 FPS
7114 frames in 5.0 seconds = 1422.797 FPS
6609 frames in 5.0 seconds = 1321.620 FPS
......
  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-12-23 15:24
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    回答
    1. 执行vglrun glxgears时帧数极低的原因可能是由于VirtualGL的渲染方式导致的。VirtualGL是一个用于将OpenGL应用程序的渲染结果通过网络传输到远程显示设备的工具。在执行vglrun glxgears时,程序的渲染过程需要经过VirtualGL,而VirtualGL会将图形渲染数据传输到远程显示设备,这个传输过程可能会导致性能下降,从而导致帧数较低。
    2. VGL_DRAWABLE=pixmap是VirtualGL中的一个参数,它表示要将渲染结果绘制到一个pixmap(一个内存中的像素图)而不是实际的窗口上。使用VGL_DRAWABLE=pixmap可以在不显示渲染结果的情况下进行渲染,适用于一些无需实时显示的场合。这个功能可能用于在后台进行渲染或者进行离屏渲染,比如生成纹理等。
    3. 执行VGL_DRAWABLE=pixmap vglrun glxgears时,CPU使用率和直接执行glxgears的CPU使用率差不多的原因可能是因为虽然使用了VGL_DRAWABLE=pixmap参数,但仍然会涉及到GPU的渲染操作,需要一定的CPU处理来处理渲染数据的传输和处理。虽然在一定程度上减轻了CPU的负担,但由于GPU渲染的计算量仍然存在,导致CPU使用率并没有显著降低。
    案例: 假设我们使用VGL_DRAWABLE=pixmap参数进行glxgears渲染到pixmap,在后续的一些处理过程中可能会涉及到将结果显示到屏幕上,或者将pixmap用作纹理等。这个时候,虽然减轻了CPU的渲染负担,但由于还需要进行后续的处理,CPU的使用率仍然比较高。
    VGL_DRAWABLE=pixmap vglrun glxgears
    

    在这个案例中,我们使用了VGL_DRAWABLE=pixmap参数执行vglrun glxgears,尝试将渲染结果绘制到pixmap上,但由于后续逻辑仍需要GPU进行渲染,导致CPU使用率并没有明显下降。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月23日