X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/blobdiff_plain/27b99dd5c8cc79f792bf3c7f71d0088600c56546..d8c700bbb8b7bd992b9fe9b43de8a2f3d8e8587f:/tools/helpers/gpu.py diff --git a/tools/helpers/gpu.py b/tools/helpers/gpu.py index eac3184..0f621bb 100644 --- a/tools/helpers/gpu.py +++ b/tools/helpers/gpu.py @@ -2,19 +2,32 @@ import glob import os import tools.helpers.props -unsupported = ["nvidia", "nouveau"] +unsupported = ["nvidia"] + +def getMinor(args, dev): + return tools.helpers.props.file_get(args, "/sys/class/drm/{}/uevent".format(dev), "MINOR") def getKernelDriver(args, dev): return tools.helpers.props.file_get(args, "/sys/class/drm/{}/device/uevent".format(dev), "DRIVER") def getCardFromRender(args, dev): try: - return "/dev/dri/" + os.path.basename(glob.glob("/sys/class/drm/{}/device/drm/card*".format(dev))[0]) + return "/dev/dri/" + os.path.basename(sorted(glob.glob("/sys/class/drm/{}/device/drm/card*".format(dev)))[0]) except IndexError: return "" def getDriNode(args): - for node in glob.glob("/dev/dri/renderD*"): + cfg = tools.config.load(args) + node = cfg["waydroid"].get("drm_device") + if node: + if not os.path.exists(node): + raise OSError("The specified drm_device {} does not exist".format(node)) + renderDev = os.path.basename(node) + if getKernelDriver(args, renderDev) not in unsupported: + return node, getCardFromRender(args, renderDev) + return "", "" + + for node in sorted(glob.glob("/dev/dri/renderD*")): renderDev = os.path.basename(node) if getKernelDriver(args, renderDev) not in unsupported: return node, getCardFromRender(args, renderDev) @@ -27,9 +40,22 @@ def getVulkanDriver(args, dev): "radeon": "radeon", "panfrost": "panfrost", "msm": "freedreno", + "msm_dpu": "freedreno", "vc4": "broadcom", + "nouveau": "nouveau", } kernel_driver = getKernelDriver(args, dev) + + if kernel_driver == "i915": + try: + dev = os.path.basename(getCardFromRender(args, dev)) + gen = tools.helpers.run.user(args,["awk", "/^graphics version:|^gen:/ {print $NF}", + "/sys/kernel/debug/dri/{}/i915_capabilities".format(getMinor(args, dev))], output_return=True, check=False) + if int(gen) < 9: + return "intel_hasvk" + except: + pass + if kernel_driver in mapping: return mapping[kernel_driver] return ""