]> glassweightruler.freedombox.rocks Git - waydroid.git/commitdiff
Add mainline vulkan support
authorAlessandro Astone <ales.astone@gmail.com>
Thu, 18 Aug 2022 13:10:44 +0000 (15:10 +0200)
committerAlessandro Astone <ales.astone@gmail.com>
Sun, 28 Aug 2022 08:54:29 +0000 (10:54 +0200)
Attempts to set the correct ro.hardware.vulkan value based on the
loaded drm driver name

tools/helpers/gpu.py
tools/helpers/lxc.py

index 5f346566546fc28ad901ecdfe9ad4060a609a5b3..88135d98f01398ae5f4d18fb2b441770f71aff76 100644 (file)
@@ -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 ""
index 9a3a77a968eefecea04c0e52c9bd73cf15ac9d8f..8cacfe25ccee0b9497814c9d8b790516a7e6ab70 100644 (file)
@@ -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")