fix rendering

This commit is contained in:
Ziyang Zhou
2021-07-31 08:41:55 +00:00
parent 36acd842c7
commit 3d11465001
5 changed files with 115 additions and 18 deletions

96
gpu_config.sh Executable file
View File

@@ -0,0 +1,96 @@
#!/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.egl mesa
setprop ro.hardware.gralloc gbm
}
gpu_setup_guest() {
echo "use GPU guest mode"
setprop qemu.gles.vendor angle
setprop ro.hardware.egl angle
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

View File

@@ -31,13 +31,15 @@ PRODUCT_HOST_PACKAGES += \
PRODUCT_PACKAGES += \
hwcomposer.redroid \
gralloc.gbm \
gralloc.gbm \
gralloc.redroid \
libEGL_swiftshader \
libGLESv1_CM_swiftshader \
libGLESv2_swiftshader \
libGLES_mesa \
ipconfigstore \
libEGL_angle \
libGLESv1_CM_angle \
libGLESv2_angle \
libGLES_mesa \
vulkan.radv \
vulkan.pastel \
ipconfigstore \
PRODUCT_PROPERTY_OVERRIDES += \
ro.kernel.qemu=1 \
@@ -90,8 +92,9 @@ PRODUCT_COPY_FILES += \
frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
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 \
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 \
$(LOCAL_PATH)/gpu_config.sh:$(TARGET_COPY_OUT_VENDOR)/bin/gpu_config.sh \
# Extend heap size we use for dalvik/art runtime
$(call inherit-product, frameworks/native/build/tablet-7in-hdpi-1024-dalvik-heap.mk)

View File

@@ -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 := redroid12_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

View File

@@ -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 := redroid12_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

3
redroid_x86_64/device.mk Normal file
View File

@@ -0,0 +1,3 @@
PRODUCT_PACKAGES += \
vulkan.intel \