Show a cover letter.

GET /api/1.1/covers/14396/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 14396,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/14396/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/14396/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20211028111520.256612-1-jacopo@jmondi.org>",
    "date": "2021-10-28T11:15:10",
    "name": "[libcamera-devel,00/10] libcamera: Introduce Fence support",
    "submitter": {
        "id": 3,
        "url": "https://patchwork.libcamera.org/api/1.1/people/3/?format=api",
        "name": "Jacopo Mondi",
        "email": "jacopo@jmondi.org"
    },
    "mbox": "https://patchwork.libcamera.org/cover/14396/mbox/",
    "series": [
        {
            "id": 2674,
            "url": "https://patchwork.libcamera.org/api/1.1/series/2674/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2674",
            "date": "2021-10-28T11:15:10",
            "name": "libcamera: Introduce Fence support",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/2674/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/14396/comments/",
    "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 9D814BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 28 Oct 2021 11:14:39 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9ABCE600C4;\n\tThu, 28 Oct 2021 13:14:38 +0200 (CEST)",
            "from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net\n\t[217.70.183.199])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A8DD7600BA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 28 Oct 2021 13:14:36 +0200 (CEST)",
            "(Authenticated sender: jacopo@jmondi.org)\n\tby relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 2653DFF804;\n\tThu, 28 Oct 2021 11:14:35 +0000 (UTC)"
        ],
        "From": "Jacopo Mondi <jacopo@jmondi.org>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Thu, 28 Oct 2021 13:15:10 +0200",
        "Message-Id": "<20211028111520.256612-1-jacopo@jmondi.org>",
        "X-Mailer": "git-send-email 2.33.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH 00/10] libcamera: Introduce Fence support",
        "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>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Fences are a synchronization mechanism that allows to wait for events\non a file descriptor with an optional timeout.\n\nSo far the only user of synchronization fencs is the Android HAL, for which\na dedicated class performs fences wait before queueing the Request to the\nCamera.\n\nThis series move handling of fences to libcamera core to allow generic\napplication to attach a synchronization fence to a FrameBuffer.\n\nDesign principles in the series are:\n\n- Fences are passed and retrieved to/from FrameBuffer by their file-descriptor\n  values\n- Fences are attacched to a FrameBuffer and their value is valid until the\n  Request is queued to the Camera\n- When a Request completes the fence file descriptor value will read as -1\n  if the core has handled the fence correctly\n- If any error occourred waiting on the fence, the fence file descriptor\n  is not closed and its value is available from the file descritpro\n\nTo realize that an internal Fence class has been introduced and used by the\nFrameBuffer::Private and Request::Private classes.\n\nThe pipeline handler receives a Request and handles valid fence in the\nRequest's framebuffers. Once all Fences have been waited on, the Request is\nfinally queued to the device. If any fence has expired or handling it has\nfailed, the Request is cancelled and not queued to the device.\n\nTested on ChromeOS by using CCA (which does not use fences), OpenCamera (which\nuses fences) and by several runs of CTS whose results are in the order of 2 to 3\nfailed tests\n\nTotal Run time: 20m 17s\n1/1 modules completed\nTotal Tests       : 231\nPASSED            : 228\nFAILED            : 3\n\nWith a few RecordingTest failures (expected) and some flukes in\nandroid.hardware.camera2.cts.SurfaceViewPreviewTest#testSurfaceSet\nand a capture timeout manifestin randomly in other tests\nwhich will be investigated.\n\nThanks\n   j\n\nJacopo Mondi (9):\n  libcamera: event_notifier: Add 'enable' constructor parameter\n  libcamera: Introduce Fence class\n  test: Add test for the Fence class\n  libcamera: request: Add support for fences\n  libcamera: framebuffer: Add synchronization Fence\n  libcamera: pipeline_handler: Split request queueing\n  libcamera: pipeline: Introduce stopDevice()\n  libcamera: pipeline_handler: Handle fences\n  android: Remove CameraWorker\n\nLaurent Pinchart (1):\n  libcamera: request: Make Request class Extensible\n\n include/libcamera/base/event_notifier.h       |   2 +-\n include/libcamera/framebuffer.h               |   5 +-\n include/libcamera/internal/fence.h            |  64 ++++++\n include/libcamera/internal/framebuffer.h      |   7 +-\n include/libcamera/internal/meson.build        |   2 +\n include/libcamera/internal/pipeline_handler.h |  12 +-\n include/libcamera/internal/request.h          |  55 ++++++\n include/libcamera/request.h                   |   6 +-\n src/android/camera_device.cpp                 |  39 ++--\n src/android/camera_device.h                   |   5 +-\n src/android/camera_request.cpp                |   3 +-\n src/android/camera_request.h                  |   3 +-\n src/android/camera_worker.cpp                 | 129 ------------\n src/android/camera_worker.h                   |  72 -------\n src/android/meson.build                       |   1 -\n src/libcamera/base/event_notifier.cpp         |  12 +-\n src/libcamera/fence.cpp                       | 185 ++++++++++++++++++\n src/libcamera/framebuffer.cpp                 |  46 ++++-\n src/libcamera/meson.build                     |   1 +\n src/libcamera/pipeline/ipu3/ipu3.cpp          |   4 +-\n .../pipeline/raspberrypi/raspberrypi.cpp      |   4 +-\n src/libcamera/pipeline/rkisp1/rkisp1.cpp      |   4 +-\n src/libcamera/pipeline/simple/simple.cpp      |   4 +-\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  |   4 +-\n src/libcamera/pipeline/vimc/vimc.cpp          |   4 +-\n src/libcamera/pipeline_handler.cpp            | 141 ++++++++++++-\n src/libcamera/request.cpp                     | 137 ++++++++++++-\n test/fence.cpp                                | 148 ++++++++++++++\n test/meson.build                              |   1 +\n 29 files changed, 824 insertions(+), 276 deletions(-)\n create mode 100644 include/libcamera/internal/fence.h\n create mode 100644 include/libcamera/internal/request.h\n delete mode 100644 src/android/camera_worker.cpp\n delete mode 100644 src/android/camera_worker.h\n create mode 100644 src/libcamera/fence.cpp\n create mode 100644 test/fence.cpp\n\n--\n2.33.1"
}