File: check_egl_platform_ext.py

package info (click to toggle)
pyopengl 3.1.5%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 14,668 kB
  • sloc: python: 108,024; makefile: 4
file content (37 lines) | stat: -rw-r--r-- 1,298 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
"""This checking script from https://github.com/mcfletch/pyopengl/issues/6"""
import OpenGL
import OpenGL.platform.egl
OpenGL.platform.PLATFORM = p = OpenGL.platform.egl.EGLPlatform()
from OpenGL import EGL
from OpenGL.EGL.VERSION import EGL_1_5
from OpenGL.EGL.EXT import platform_base
from OpenGL.EGL.MESA import platform_gbm
import ctypes, glob

def main():
    cards = sorted(glob.glob("/dev/dri/renderD*"))
    if not cards:
        raise RuntimeError("Need a /dev/dri/renderD* device to do rendering")
    if len(cards) > 1:
        print("Note, using first card: %s"%(cards[0]))
    with open(cards[0], "w") as f:
        gbm = ctypes.CDLL("libgbm.so.1") # On Ubuntu, package libgbm1
        dev = gbm.gbm_create_device(f.fileno())
        dpy = platform_base.eglGetPlatformDisplayEXT(
            platform_gbm.EGL_PLATFORM_GBM_MESA, 
            ctypes.c_void_p(dev), 
            ctypes.c_void_p(0)
        )
        print(dpy)
        if EGL_1_5.eglGetPlatformDisplay:
            dpy = platform_base.eglGetPlatformDisplay(
                platform_gbm.EGL_PLATFORM_GBM_MESA, 
                ctypes.c_void_p(dev), 
                ctypes.c_void_p(0)
            )
            print(dpy)
        else:
            print("No EGL_1_5 implementation")

if __name__ == "__main__":
    main()