[{"id":26697,"web_url":"https://patchwork.libcamera.org/comment/26697/","msgid":"<87o7omkxq9.fsf@baylibre.com>","date":"2023-03-21T14:03:42","subject":"Re: [libcamera-devel] [PATCH v3] android: mm: generic: use\n\tGRALLOC_HARDWARE_MODULE_ID","submitter":{"id":153,"url":"https://patchwork.libcamera.org/api/people/153/","name":"Mattijs Korpershoek","email":"mkorpershoek@baylibre.com"},"content":"On jeu., mars 02, 2023 at 09:27, Mattijs Korpershoek <mkorpershoek@baylibre.com> wrote:\n\n> PlatformFrameBufferAllocator is an abstraction over gralloc.\n> Right now hardwareModule_ points towards a CAMERA_HARDWARE_MODULE_ID.\n>\n> When gralloc_open() is called we observe:\n> libcamera: DEBUG HAL camera3_hal.cpp:75 Open camera gpu0\n> libcamera: ERROR Camera camera.cpp:524 Camera in Configured state trying acquire() requiring state Available\n> 01-23 14:14:04.742   370   416 E libcamera: FATAL HAL generic_frame_buffer_allocator.cpp:105 gralloc_open() failed: -87\n>\n> Which is wrong, gralloc_open() is attempting to re-open the camera HAL,\n> instead of the gralloc HAL.\n>\n> Point to a GRALLOC_HARDWARE_MODULE_ID instead so that we can request\n> buffers from gralloc in android.\n>\n> Note: this add a new dependency on android's libhardware [1]\n>\n> [1] https://android.googlesource.com/platform/hardware/libhardware\n>\n> Fixes: c58662c5770e (\"android: Introduce PlatformFrameBufferAllocator\")\n> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>\n\nHi, gentle ping on this patch. Is there anything missing besides some\ntime to review?\n\nSorry if I have pinged too soon on this.\n\nRegards\nMattijs\n\n> ---\n> * Tested on an integration branch in Android 12 (Using android.bp)\n> * Build tested with meson setup build -Dandroid=enabled -Dandroid_platform=generic\n> ---\n> Changes in v3:\n> - Add missing meson.build change to define libhardware dependency\n> - Link to v2: https://lists.libcamera.org/pipermail/libcamera-devel/2023-February/036884.html\n>\n> Changes in v2:\n> - Add dlclose() in PlatformFrameBufferAllocator destructor (Laurent)\n> - Removed RFC, as linking against an AOSP lib for android is OK.\n> - Link to v1: https://lists.libcamera.org/pipermail/libcamera-devel/2023-February/036857.html\n> ---\n>  src/android/mm/generic_frame_buffer_allocator.cpp | 7 +++++--\n>  src/android/mm/meson.build                        | 1 +\n>  2 files changed, 6 insertions(+), 2 deletions(-)\n>\n> diff --git a/src/android/mm/generic_frame_buffer_allocator.cpp b/src/android/mm/generic_frame_buffer_allocator.cpp\n> index 3750e1bf52a9..7ecef2c669df 100644\n> --- a/src/android/mm/generic_frame_buffer_allocator.cpp\n> +++ b/src/android/mm/generic_frame_buffer_allocator.cpp\n> @@ -5,6 +5,7 @@\n>   * generic_camera_buffer.cpp - Allocate FrameBuffer using gralloc API\n>   */\n>  \n> +#include <dlfcn.h>\n>  #include <memory>\n>  #include <vector>\n>  \n> @@ -72,9 +73,10 @@ class PlatformFrameBufferAllocator::Private : public Extensible::Private\n>  public:\n>  \tPrivate(CameraDevice *const cameraDevice)\n>  \t\t: cameraDevice_(cameraDevice),\n> -\t\t  hardwareModule_(cameraDevice->camera3Device()->common.module),\n> +\t\t  hardwareModule_(nullptr),\n>  \t\t  allocDevice_(nullptr)\n>  \t{\n> +\t\thw_get_module(GRALLOC_HARDWARE_MODULE_ID, &hardwareModule_);\n>  \t\tASSERT(hardwareModule_);\n>  \t}\n>  \n> @@ -85,7 +87,7 @@ public:\n>  \n>  private:\n>  \tconst CameraDevice *const cameraDevice_;\n> -\tstruct hw_module_t *const hardwareModule_;\n> +\tconst struct hw_module_t *hardwareModule_;\n>  \tstruct alloc_device_t *allocDevice_;\n>  };\n>  \n> @@ -93,6 +95,7 @@ PlatformFrameBufferAllocator::Private::~Private()\n>  {\n>  \tif (allocDevice_)\n>  \t\tgralloc_close(allocDevice_);\n> +\tdlclose(hardwareModule_->dso);\n>  }\n>  \n>  std::unique_ptr<HALFrameBuffer>\n> diff --git a/src/android/mm/meson.build b/src/android/mm/meson.build\n> index d40a3b0ba2eb..42eeab3bcfa9 100644\n> --- a/src/android/mm/meson.build\n> +++ b/src/android/mm/meson.build\n> @@ -4,6 +4,7 @@ platform = get_option('android_platform')\n>  if platform == 'generic'\n>      android_hal_sources += files(['generic_camera_buffer.cpp',\n>                                    'generic_frame_buffer_allocator.cpp'])\n> +    android_deps += [dependency('libhardware')]\n>  elif platform == 'cros'\n>      android_hal_sources += files(['cros_camera_buffer.cpp',\n>                                    'cros_frame_buffer_allocator.cpp'])\n>\n> ---\n> base-commit: 58e0b6e18c425072a47594f42fc0b61801403aca\n> change-id: 20230227-android-gralloc-04e31d5edc68\n>\n> Best regards,\n> -- \n> Mattijs Korpershoek <mkorpershoek@baylibre.com>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id E81E7C0F2A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 21 Mar 2023 14:03:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E9A1E626E3;\n\tTue, 21 Mar 2023 15:03:47 +0100 (CET)","from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com\n\t[IPv6:2a00:1450:4864:20::12b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9925C61ED3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Mar 2023 15:03:45 +0100 (CET)","by mail-lf1-x12b.google.com with SMTP id h25so7596224lfv.6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Mar 2023 07:03:45 -0700 (PDT)","from localhost ([82.66.159.240]) by smtp.gmail.com with ESMTPSA id\n\tx6-20020a05600c21c600b003ede3e54ed7sm7261292wmj.6.2023.03.21.07.03.43\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 21 Mar 2023 07:03:44 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1679407428;\n\tbh=pKNnKs0jHL+0cfEbcuo3zkX1y5zBCdlRJaDGSLv8Cus=;\n\th=To:In-Reply-To:References:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=ZBbYQeTZAIx3wBOJtV5wQfVqFXFCy+sF5Ien0SriAMXABNPZB1gUFsc3rhEUPEbii\n\tJEleAi3meXF57fPKkmgrKiPj21VYFEedt3ckuquM5lIvqI/el/YgANDNPEBFEwoevU\n\tWyTEelokeStMZg/gMLG8r9SQTYXIbH5867yjssch7YloR7DjFt6F9DlFiZmQvGlT12\n\thdbLPKQLe8FNdhbfAKVbmDGEFprmeYxWM8QgNaoHVoQlLCzAEZ99OKh/AaTQsAcALX\n\tsHNLG2GprDojAvHoQ8yBhiqLbaGSKnTkm0+M8rMZ6wOVo6hOCgn+0+TsxsN0SQkuBw\n\tmn/CyR0Iftu2g==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=baylibre-com.20210112.gappssmtp.com; s=20210112; t=1679407424;\n\th=mime-version:message-id:date:references:in-reply-to:subject:cc:to\n\t:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=BrEDyk68yNAEfXVqHTuyfHANwy+akWAKBstkQa5D7bU=;\n\tb=iZD3SVLI5YUCGT3PxM1HoSvEJ9m9OegfrnERME8C5551kPG6KpGfzvo2YUJfGTrCMz\n\tDadunM06JBA7u5ix50J9IU1SEAMMm+dx+MEnS6RpW4hKjLOzPRDfGCi5QuNSjrOh1nPK\n\tCV80yaQgeDXIJ/dSG21weVZVnJO1a3rkkyz3BETuT2m21EtpncLgg2cQcwzBeLkXT8sb\n\tH0CyhspeOQAzAs7ur09BRhQGAJAl9aU1cG8+gh0ujnvd6rQTjKUnxGdC8pabTop/pmP3\n\t/vL1Z/gR8lARAkxOhSndoaTOI/96Z7qKMli+hxmVsX9uJTclKOFmPL2hz1g4gPMiKGUr\n\tbG/w=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected)\n\theader.d=baylibre-com.20210112.gappssmtp.com\n\theader.i=@baylibre-com.20210112.gappssmtp.com header.b=\"iZD3SVLI\"; \n\tdkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112; t=1679407424;\n\th=mime-version:message-id:date:references:in-reply-to:subject:cc:to\n\t:from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; \n\tbh=BrEDyk68yNAEfXVqHTuyfHANwy+akWAKBstkQa5D7bU=;\n\tb=nhWdxFrCeBGPBVJ3qBEi0YtClvhBdzqPd/lExvq4cm6qCXxq5SRqAfwgmiqZ5qUY3/\n\tAVRxflLD/QLX1e8J0a8FS6rw/dUbHap7NKs42uls+PdpeyTSfHhe2qqyBxDIgoLDUZma\n\td3JxIO3F3ReVjlmbHuFKhqwjXSkI2PD72OuYa+ElCZR2LZYVqsz0F77/ylGifVSau0uv\n\tAcGn1/LOxfUVgDMG3cPHKH0AvYjtU8xHkHh8qdgZini3DQugQWfZDqoq95QxA9h4ihzV\n\t7AwomZHJNNjkAA6Ak4mtKbis4TvamtMw/9kHeAtUHiiJNsUIKQbyy8CQkJtblCVOZjuJ\n\thQHQ==","X-Gm-Message-State":"AO0yUKXFx8Wjw/CcOjRrOrDAZe4fD5fFEbMUtsp80KeVozmMRV0nVk28\n\tOQSCfjM7XhiaFdKgx71W9u+UKPx0SUkTfYIuLTY=","X-Google-Smtp-Source":"AK7set9LEzgAuFpH6Ez96eERYmkay5hBMGB5tcYrhWPnYsV6Dt+wnBhDRs4hq7eiXg/83vl2ggXpIA==","X-Received":"by 2002:a05:6512:513:b0:4b6:f51e:b8b6 with SMTP id\n\to19-20020a056512051300b004b6f51eb8b6mr900109lfb.56.1679407424590; \n\tTue, 21 Mar 2023 07:03:44 -0700 (PDT)","To":"libcamera-devel@lists.libcamera.org","In-Reply-To":"<20230227-android-gralloc-v3-1-d3e0a4f4a60f@baylibre.com>","References":"<20230227-android-gralloc-v3-1-d3e0a4f4a60f@baylibre.com>","Date":"Tue, 21 Mar 2023 15:03:42 +0100","Message-ID":"<87o7omkxq9.fsf@baylibre.com>","MIME-Version":"1.0","Content-Type":"text/plain","Subject":"Re: [libcamera-devel] [PATCH v3] android: mm: generic: use\n\tGRALLOC_HARDWARE_MODULE_ID","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Mattijs Korpershoek via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Mattijs Korpershoek <mkorpershoek@baylibre.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]