]>
glassweightruler.freedombox.rocks Git - waydroid.git/blob - tools/helpers/gpu.py
3 import tools
.helpers
.props
5 unsupported
= ["nvidia"]
7 def getMinor(args
, dev
):
8 return tools
.helpers
.props
.file_get(args
, "/sys/class/drm/{}/uevent".format(dev
), "MINOR")
10 def getKernelDriver(args
, dev
):
11 return tools
.helpers
.props
.file_get(args
, "/sys/class/drm/{}/device/uevent".format(dev
), "DRIVER")
13 def getCardFromRender(args
, dev
):
15 return "/dev/dri/" + os
.path
.basename(sorted(glob
.glob("/sys/class/drm/{}/device/drm/card*".format(dev
)))[0])
20 cfg
= tools
.config
.load(args
)
21 node
= cfg
["waydroid"].get("drm_device")
23 if not os
.path
.exists(node
):
24 raise OSError("The specified drm_device {} does not exist".format(node
))
25 renderDev
= os
.path
.basename(node
)
26 if getKernelDriver(args
, renderDev
) not in unsupported
:
27 return node
, getCardFromRender(args
, renderDev
)
30 for node
in sorted(glob
.glob("/dev/dri/renderD*")):
31 renderDev
= os
.path
.basename(node
)
32 if getKernelDriver(args
, renderDev
) not in unsupported
:
33 return node
, getCardFromRender(args
, renderDev
)
36 def getVulkanDriver(args
, dev
):
41 "panfrost": "panfrost",
43 "msm_dpu": "freedreno",
47 kernel_driver
= getKernelDriver(args
, dev
)
49 if kernel_driver
== "i915":
51 dev
= os
.path
.basename(getCardFromRender(args
, dev
))
52 gen
= tools
.helpers
.run
.user(args
,["awk", "/^graphics version:|^gen:/ {print $NF}",
53 "/sys/kernel/debug/dri/{}/i915_capabilities".format(getMinor(args
, dev
))], output_return
=True, check
=False)
59 if kernel_driver
in mapping
:
60 return mapping
[kernel_driver
]