From bd2bb0f8e99c07d263d287315b40af75d55bde76 Mon Sep 17 00:00:00 2001 From: Ziyang Zhou Date: Tue, 3 Aug 2021 04:31:10 +0000 Subject: [PATCH] refine product makefile --- gpu_config.sh | 93 ++++++++++++++++++++++++++++++++++++++++ redroid.mk | 5 ++- redroid_arm64.mk | 7 +-- redroid_x86_64.mk | 8 ++-- redroid_x86_64/device.mk | 3 ++ 5 files changed, 105 insertions(+), 11 deletions(-) create mode 100755 gpu_config.sh create mode 100644 redroid_x86_64/device.mk diff --git a/gpu_config.sh b/gpu_config.sh new file mode 100755 index 0000000..a227f0f --- /dev/null +++ b/gpu_config.sh @@ -0,0 +1,93 @@ +#!/system/bin/sh + +# args: driver +setup_vulkan() { + echo "setup vulkan for driver: $1" + case "$1" in + i915) + setprop ro.hardware.vulkan intel + ;; + amdgpu) + setprop ro.hardware.vulkan radv + ;; + virtio_gpu) + # google venus + ;; + *) + echo "not supported driver: $1" + ;; + esac +} + +setup_render_node() { + node=`getprop ro.kernel.redroid.gpu.node` + if [ ! -z "$node" ]; then + echo "force render node: $node" + + setprop gralloc.gbm.device $node + + # setup vulkan + cd /sys/kernel/debug/dri + driver="`cat ${node: -3}/name | cut -d' ' -f1`" + setup_vulkan $driver + return 0 + fi + + cd /sys/kernel/debug/dri + for d in * ; do + if [ "$d" -ge "128" ]; then + driver="`cat $d/name | cut -d' ' -f1`" + echo "DRI node exists, driver: $driver" + setup_vulkan $driver + case $driver in + i915|amdgpu|virtio_gpu) + node="/dev/dri/renderD$d" + echo "use render node: $node" + setprop gralloc.gbm.device $node + return 0 + ;; + esac + fi + done + + echo "NO qualified render node found" + return 1 +} + +gpu_setup_host() { + echo "use GPU host mode" + + setprop qemu.gles.vendor mesa + setprop ro.hardware.gralloc gbm +} + +gpu_setup_guest() { + echo "use GPU guest mode" + + setprop ro.hardware.vulkan pastel +} + +gpu_setup() { + ## redroid.gpu.mode=(auto, host, guest) + ## redroid.gpu.node= (/dev/dri/renderDxxx) + + mode=`getprop ro.kernel.redroid.gpu.mode auto` + if [ "$mode" = "host" ]; then + setup_render_node + gpu_setup_host + elif [ "$mode" = "guest" ]; then + gpu_setup_guest + elif [ "$mode" = "auto" ]; then + echo "use GPU auto mode" + if setup_render_node; then + gpu_setup_host + else + gpu_setup_guest + fi + else + echo "unknown mode: $mode" + fi +} + +gpu_setup + diff --git a/redroid.mk b/redroid.mk index 7996d4c..e7ec077 100644 --- a/redroid.mk +++ b/redroid.mk @@ -37,6 +37,8 @@ PRODUCT_PACKAGES += \ libGLESv1_CM_swiftshader \ libGLESv2_swiftshader \ libGLES_mesa \ + vulkan.radv \ + vulkan.pastel \ ipconfigstore \ PRODUCT_PROPERTY_OVERRIDES += \ @@ -91,7 +93,8 @@ PRODUCT_COPY_FILES += \ frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \ frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \ frameworks/native/data/etc/android.hardware.ethernet.xml:/system/etc/permissions/android.hardware.ethernet.xml \ - vendor/redroid/gpu_config.sh:$(TARGET_COPY_OUT_VENDOR)/bin/gpu_config.sh \ + $(LOCAL_PATH)/gpu_config.sh:$(TARGET_COPY_OUT_VENDOR)/bin/gpu_config.sh \ + $(LOCAL_PATH)/init.redroid.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.redroid.rc \ # Extend heap size we use for dalvik/art runtime $(call inherit-product, frameworks/native/build/tablet-7in-hdpi-1024-dalvik-heap.mk) diff --git a/redroid_arm64.mk b/redroid_arm64.mk index cedd888..e41e154 100644 --- a/redroid_arm64.mk +++ b/redroid_arm64.mk @@ -21,10 +21,7 @@ $(call inherit-product, $(LOCAL_PATH)/redroid.mk) PRODUCT_NAME := redroid_arm64 PRODUCT_DEVICE := redroid_arm64 PRODUCT_BRAND := ReDroid -PRODUCT_MODEL := ReDroid +PRODUCT_MODEL := redroid11_arm64 -PRODUCT_PACKAGE_OVERLAYS := $(LOCAL_PATH)/overlay - -PRODUCT_COPY_FILES += \ - $(LOCAL_PATH)/init.redroid.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.redroid.rc \ +DEVICE_PACKAGE_OVERLAYS := $(LOCAL_PATH)/overlay diff --git a/redroid_x86_64.mk b/redroid_x86_64.mk index aca6751..9e9b822 100644 --- a/redroid_x86_64.mk +++ b/redroid_x86_64.mk @@ -16,14 +16,12 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base.mk) $(call inherit-product, $(LOCAL_PATH)/redroid.mk) +$(call inherit-product, $(LOCAL_PATH)/redroid_x86_64/device.mk) PRODUCT_NAME := redroid_x86_64 PRODUCT_DEVICE := redroid_x86_64 PRODUCT_BRAND := ReDroid -PRODUCT_MODEL := ReDroid +PRODUCT_MODEL := redroid11_x86_64 -PRODUCT_PACKAGE_OVERLAYS := $(LOCAL_PATH)/overlay - -PRODUCT_COPY_FILES += \ - $(LOCAL_PATH)/init.redroid.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.redroid.rc \ +DEVICE_PACKAGE_OVERLAYS := $(LOCAL_PATH)/overlay diff --git a/redroid_x86_64/device.mk b/redroid_x86_64/device.mk new file mode 100644 index 0000000..9ce92c0 --- /dev/null +++ b/redroid_x86_64/device.mk @@ -0,0 +1,3 @@ +PRODUCT_PACKAGES += \ + vulkan.intel \ +