From: Alessandro Astone Date: Thu, 18 Aug 2022 13:10:44 +0000 (+0200) Subject: Add mainline vulkan support X-Git-Tag: 1.3.1~3 X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/commitdiff_plain/43ab2b48853796f20715b1c883c3b4a7e6e95de2?ds=inline Add mainline vulkan support Attempts to set the correct ro.hardware.vulkan value based on the loaded drm driver name --- diff --git a/tools/helpers/gpu.py b/tools/helpers/gpu.py index 5f34656..88135d9 100644 --- a/tools/helpers/gpu.py +++ b/tools/helpers/gpu.py @@ -4,10 +4,26 @@ import tools.helpers.props unsupported = ["nvidia"] +def getKernelDriver(args, dev): + return tools.helpers.props.file_get(args, "/sys/class/drm/{}/device/uevent".format(dev), "DRIVER") + 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: + if getKernelDriver(args, dev) not in unsupported: return node return "" + +def getVulkanDriver(args, dev): + mapping = { + "i915": "intel", + "amdgpu": "radeon", + "radeon": "radeon", + "panfrost": "panfrost", + "msm": "freedreno", + "vc4": "broadcom", + } + kernel_driver = getKernelDriver(args, dev) + if kernel_driver in mapping: + return mapping[kernel_driver] + return "" diff --git a/tools/helpers/lxc.py b/tools/helpers/lxc.py index 9a3a77a..8cacfe2 100644 --- a/tools/helpers/lxc.py +++ b/tools/helpers/lxc.py @@ -177,10 +177,11 @@ def make_base_props(args): props.append("sys.use_memfd=true") egl = tools.helpers.props.host_get(args, "ro.hardware.egl") + dri = tools.helpers.gpu.getDriNode(args) gralloc = find_hal("gralloc") if gralloc == "": - if tools.helpers.gpu.getDriNode(args): + if dri: gralloc = "gbm" egl = "mesa" else: @@ -209,7 +210,9 @@ def make_base_props(args): props.append("ro.vendor.extension_library=" + ext_library) vulkan = find_hal("vulkan") - if vulkan != "": + if not vulkan and dri: + vulkan = tools.helpers.gpu.getVulkanDriver(args, os.path.basename(dri)) + if vulkan: props.append("ro.hardware.vulkan=" + vulkan) treble = tools.helpers.props.host_get(args, "ro.treble.enabled")