X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/blobdiff_plain/fb349c82684dc57fae0f0828b6a55eddf60dc254..0841a74bf82f59e316d8fbcfdff415bb003bc84e:/tools/helpers/gpu.py diff --git a/tools/helpers/gpu.py b/tools/helpers/gpu.py index 5f34656..458712a 100644 --- a/tools/helpers/gpu.py +++ b/tools/helpers/gpu.py @@ -4,10 +4,47 @@ import tools.helpers.props 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]) + except IndexError: + return "" + def getDriNode(args): for node in glob.glob("/dev/dri/renderD*"): - dev = os.path.basename(node) - driver = tools.helpers.props.file_get(args, "/sys/class/drm/{}/device/uevent".format(dev), "DRIVER") - if driver not in unsupported: - return node + renderDev = os.path.basename(node) + if getKernelDriver(args, renderDev) not in unsupported: + return node, getCardFromRender(args, renderDev) + return "", "" + +def getVulkanDriver(args, dev): + mapping = { + "i915": "intel", + "amdgpu": "radeon", + "radeon": "radeon", + "panfrost": "panfrost", + "msm": "freedreno", + "msm_dpu": "freedreno", + "vc4": "broadcom", + "nouveau": "nouveau", + } + kernel_driver = getKernelDriver(args, dev) + + if kernel_driver == "i915": + try: + 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 ""