From b33856abbce8ba940c24d2a7a07a3c6e4e4c96d4 Mon Sep 17 00:00:00 2001 From: oxmc <67136658+oxmc@users.noreply.github.com> Date: Sun, 2 Nov 2025 21:27:23 -0800 Subject: [PATCH] Switch camera and minigbm gralloc to apex, same as upstream --- camera/external/Android.bp | 34 +++++++++++++++++++ ...are.camera.provider-V1-external-service.rc‎ | 8 +++++ ...re.camera.provider-V1-external-service.xml | 10 ++++++ camera/external/apex_file_contexts | 3 ++ camera/external/apex_manifest.json | 4 +++ .../{ => external}/external_camera_config.xml | 0 camera/{ => libcamera}/camera_hal.yaml | 0 device.mk | 19 ++++------- manifest.xml | 9 ----- sepolicy/file_contexts | 28 +++++++-------- suspend_blocker/suspend_blocker_rpi.rc | 2 +- 11 files changed, 80 insertions(+), 37 deletions(-) create mode 100644 camera/external/Android.bp create mode 100644 camera/external/android.hardware.camera.provider-V1-external-service.rc‎ create mode 100644 camera/external/android.hardware.camera.provider-V1-external-service.xml create mode 100644 camera/external/apex_file_contexts create mode 100644 camera/external/apex_manifest.json rename camera/{ => external}/external_camera_config.xml (100%) rename camera/{ => libcamera}/camera_hal.yaml (100%) diff --git a/camera/external/Android.bp b/camera/external/Android.bp new file mode 100644 index 0000000..bb45262 --- /dev/null +++ b/camera/external/Android.bp @@ -0,0 +1,34 @@ +// Copyright (C) 2025 KonstaKANG +// +// SPDX-License-Identifier: Apache-2.0 + +prebuilt_etc { + name: "android.hardware.camera.provider-V1-external-service.rc", + src: "android.hardware.camera.provider-V1-external-service.rc", + installable: false, +} + +prebuilt_etc { + name: "android.hardware.camera.provider-V1-external-service.xml", + src: "android.hardware.camera.provider-V1-external-service.xml", + sub_dir: "vintf", + installable: false, +} + +apex { + name: "com.android.hardware.camera.external.rpi5", + manifest: "apex_manifest.json", + file_contexts: "apex_file_contexts", + key: "com.android.hardware.key", + certificate: ":com.android.hardware.certificate", + updatable: false, + vendor: true, + + binaries: [ + "android.hardware.camera.provider-V1-external-service", + ], + prebuilts: [ + "android.hardware.camera.provider-V1-external-service.rc", + "android.hardware.camera.provider-V1-external-service.xml", + ], +} \ No newline at end of file diff --git a/camera/external/android.hardware.camera.provider-V1-external-service.rc‎ b/camera/external/android.hardware.camera.provider-V1-external-service.rc‎ new file mode 100644 index 0000000..c0ef1e0 --- /dev/null +++ b/camera/external/android.hardware.camera.provider-V1-external-service.rc‎ @@ -0,0 +1,8 @@ +service vendor.camera.provider-ext /apex/com.android.hardware.camera.external.rpi5/bin/hw/android.hardware.camera.provider-V1-external-service + interface aidl android.hardware.camera.provider.ICameraProvider/external/0 + class hal + user cameraserver + group audio camera input drmrpc usb + ioprio rt 4 + capabilities SYS_NICE + task_profiles CameraServiceCapacity MaxPerformance \ No newline at end of file diff --git a/camera/external/android.hardware.camera.provider-V1-external-service.xml b/camera/external/android.hardware.camera.provider-V1-external-service.xml new file mode 100644 index 0000000..7ada72a --- /dev/null +++ b/camera/external/android.hardware.camera.provider-V1-external-service.xml @@ -0,0 +1,10 @@ + + + android.hardware.camera.provider + 1 + + ICameraProvider + external/0 + + + \ No newline at end of file diff --git a/camera/external/apex_file_contexts b/camera/external/apex_file_contexts new file mode 100644 index 0000000..0b85201 --- /dev/null +++ b/camera/external/apex_file_contexts @@ -0,0 +1,3 @@ +(/.*)? u:object_r:vendor_file:s0 +/etc(/.*)? u:object_r:vendor_configs_file:s0 +/bin/hw/android\.hardware\.camera\.provider-V1-external-service u:object_r:hal_camera_default_exec:s0 \ No newline at end of file diff --git a/camera/external/apex_manifest.json b/camera/external/apex_manifest.json new file mode 100644 index 0000000..3fb75c0 --- /dev/null +++ b/camera/external/apex_manifest.json @@ -0,0 +1,4 @@ +{ + "name": "com.android.hardware.camera.external.rpi5", + "version": 1 +} \ No newline at end of file diff --git a/camera/external_camera_config.xml b/camera/external/external_camera_config.xml similarity index 100% rename from camera/external_camera_config.xml rename to camera/external/external_camera_config.xml diff --git a/camera/camera_hal.yaml b/camera/libcamera/camera_hal.yaml similarity index 100% rename from camera/camera_hal.yaml rename to camera/libcamera/camera_hal.yaml diff --git a/device.mk b/device.mk index 782014c..f8c0c9e 100644 --- a/device.mk +++ b/device.mk @@ -52,21 +52,21 @@ PRODUCT_COPY_FILES += \ # Camera PRODUCT_PACKAGES += \ - android.hardware.camera.provider-V1-external-service + com.android.hardware.camera.external.rpi5 PRODUCT_COPY_FILES += \ - $(DEVICE_PATH)/camera/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xml + $(DEVICE_PATH)/camera/external/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xml PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.camera.external.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.external.xml PRODUCT_PACKAGES += \ - android.hardware.camera.provider-V1-libcamera-service \ - camera.libcamera \ - ipa_rpi_pisp + acom.android.hardware.camera.libcamera + +$(call soong_config_set,libcamera,ipa,pisp) PRODUCT_COPY_FILES += \ - $(DEVICE_PATH)/camera/camera_hal.yaml:$(TARGET_COPY_OUT_VENDOR)/etc/libcamera/camera_hal.yaml + $(DEVICE_PATH)/camera/libcamera/camera_hal.yaml:$(TARGET_COPY_OUT_VENDOR)/etc/libcamera/camera_hal.yaml PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.camera.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.xml \ @@ -116,8 +116,7 @@ PRODUCT_PACKAGES += \ # Graphics PRODUCT_PACKAGES += \ - android.hardware.graphics.allocator-service.minigbm_gbm_mesa \ - mapper.minigbm_gbm_mesa + com.android.hardware.graphics.allocator.minigbm_gbm_mesa PRODUCT_PACKAGES += \ com.android.hardware.graphics.composer.drm_hwcomposer @@ -128,10 +127,6 @@ PRODUCT_PACKAGES += \ libGLESv2_mesa \ libgallium_dri -PRODUCT_PACKAGES += \ - dri_gbm \ - libgbm_mesa - PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.opengles.deqp.level-2024-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml diff --git a/manifest.xml b/manifest.xml index f71c1a8..3d01ce9 100644 --- a/manifest.xml +++ b/manifest.xml @@ -17,13 +17,4 @@ default - - android.hardware.camera.provider - 1 - - ICameraProvider - external/0 - libcamera/0 - - diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index 81ee882..854ce97 100644 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -1,6 +1,3 @@ -# Camera -/vendor/bin/hw/android\.hardware\.camera\.provider-V1-libcamera-service u:object_r:hal_camera_default_exec:s0 - # CEC /dev/cec0 u:object_r:cec_device:s0 /dev/cec1 u:object_r:cec_device:s0 @@ -9,21 +6,22 @@ /data/vendor/mediadrm(/.*)? u:object_r:mediadrm_vendor_data_file:s0 # Graphics -/dev/dri(/.*)? u:object_r:gpu_device:s0 -/vendor/bin/hw/android\.hardware\.graphics\.allocator-service\.minigbm_gbm_mesa u:object_r:hal_graphics_allocator_default_exec:s0 -/vendor/lib64/hw/mapper\.minigbm_gbm_mesa\.so u:object_r:same_process_hal_file:s0 -/vendor/lib64/hw/vulkan\.broadcom\.so u:object_r:same_process_hal_file:s0 -/vendor/lib64/dri_gbm\.so u:object_r:same_process_hal_file:s0 -/vendor/lib64/libdrm\.so u:object_r:same_process_hal_file:s0 -/vendor/lib64/libgallium_dri\.so u:object_r:same_process_hal_file:s0 -/vendor/lib64/libgbm_mesa\.so u:object_r:same_process_hal_file:s0 -/vendor/lib64/libgbm_mesa_wrapper\.so u:object_r:same_process_hal_file:s0 -/vendor/lib64/libminigbm_gralloc_gbm_mesa\.so u:object_r:same_process_hal_file:s0 -/vendor/lib64/libminigbm_gralloc4_utils_gbm_mesa\.so u:object_r:same_process_hal_file:s0 -/vendor/lib64/libui\.so u:object_r:same_process_hal_file:s0 +/dev/dri(/.*)? u:object_r:gpu_device:s0 +/vendor/lib64/hw/vulkan\.broadcom\.so u:object_r:same_process_hal_file:s0 +/vendor/lib64/libdrm\.so u:object_r:same_process_hal_file:s0 +/vendor/lib64/libgallium_dri\.so u:object_r:same_process_hal_file:s0 +/vendor/lib64/libui\.so u:object_r:same_process_hal_file:s0 # Partitions /dev/block/mmcblk0p1 u:object_r:boot_block_device:s0 /dev/block/mmcblk0p2 u:object_r:system_block_device:s0 /dev/block/mmcblk0p3 u:object_r:system_block_device:s0 /dev/block/mmcblk0p4 u:object_r:userdata_block_device:s0 +/dev/block/nvme0n1p1 u:object_r:boot_block_device:s0 +/dev/block/nvme0n1p2 u:object_r:system_block_device:s0 +/dev/block/nvme0n1p3 u:object_r:system_block_device:s0 +/dev/block/nvme0n1p4 u:object_r:userdata_block_device:s0 +/dev/block/sda1 u:object_r:boot_block_device:s0 +/dev/block/sda2 u:object_r:system_block_device:s0 +/dev/block/sda3 u:object_r:system_block_device:s0 +/dev/block/sda4 u:object_r:userdata_block_device:s0 \ No newline at end of file diff --git a/suspend_blocker/suspend_blocker_rpi.rc b/suspend_blocker/suspend_blocker_rpi.rc index a0969d5..2e34ad8 100644 --- a/suspend_blocker/suspend_blocker_rpi.rc +++ b/suspend_blocker/suspend_blocker_rpi.rc @@ -1,4 +1,4 @@ -service suspend_blocker_rpi /apex/com.android.hardware.suspend_blocker.rpi5/bin/suspend_blocker_rpi +service vendor.suspend_blocker-rpi /apex/com.android.hardware.suspend_blocker.rpi5/bin/suspend_blocker_rpi class hal group system user root