From 925e862ff2ebe4f09e3545d45cc42a2fbe72c1e1 Mon Sep 17 00:00:00 2001 From: Ziyang Zhou Date: Tue, 3 Aug 2021 05:05:16 +0000 Subject: [PATCH] tune graphic settings --- gpu_config.sh | 93 ++++++++++++++++++++++++++++++++++++++++ redroid.mk | 4 +- redroid_x86_64.mk | 1 + redroid_x86_64/device.mk | 3 ++ 4 files changed, 100 insertions(+), 1 deletion(-) 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 12bac4f..1f84959 100644 --- a/redroid.mk +++ b/redroid.mk @@ -38,6 +38,8 @@ PRODUCT_PACKAGES += \ libGLESv1_CM_swiftshader \ libGLESv2_swiftshader \ libGLES_mesa \ + vulkan.radv \ + vulkan.pastel \ ipconfigstore \ PRODUCT_PROPERTY_OVERRIDES += \ @@ -96,7 +98,7 @@ PRODUCT_COPY_FILES += \ frameworks/av/services/audiopolicy/config/surround_sound_configuration_5_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/surround_sound_configuration_5_0.xml \ frameworks/native/data/etc/android.hardware.ethernet.xml:/system/etc/permissions/android.hardware.ethernet.xml \ $(LOCAL_PATH)/init.redroid.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.redroid.rc \ - 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 \ # Extend heap size we use for dalvik/art runtime diff --git a/redroid_x86_64.mk b/redroid_x86_64.mk index 218c807..4e87252 100644 --- a/redroid_x86_64.mk +++ b/redroid_x86_64.mk @@ -16,6 +16,7 @@ $(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 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 \ +