From patchwork Mon Aug 23 13:12:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hirokazu Honda X-Patchwork-Id: 13453 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id AA5F1BD87C for ; Mon, 23 Aug 2021 13:12:58 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 626A9688D2; Mon, 23 Aug 2021 15:12:58 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="Zi9OgJrV"; dkim-atps=neutral Received: from mail-pf1-x430.google.com (mail-pf1-x430.google.com [IPv6:2607:f8b0:4864:20::430]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id E4E58688A2 for ; Mon, 23 Aug 2021 15:12:56 +0200 (CEST) Received: by mail-pf1-x430.google.com with SMTP id t42so12751526pfg.12 for ; Mon, 23 Aug 2021 06:12:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zOZ0vNaLjlI91E9tIB7rhvpt4DtZ3fL2NQ9YL4SxK5A=; b=Zi9OgJrVjJKEW2+DKe7MbMdZq3iFSzhL5VZSr7jYkWzoDJhXt2tSMa7Nezzrps2zES VZtYqqSzP5gTvS/6QQ80xVLrYuQ8vhP3ALIjoDSve4aCXbeYD7Nq/oAFUyWanNveyJQ2 h8zXy6tMGDEuiq+QYsngevF5xwHo703emENVA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zOZ0vNaLjlI91E9tIB7rhvpt4DtZ3fL2NQ9YL4SxK5A=; b=O2ts8VHSwRi++M/GnWlghjRrMVq7tc7UFrnZILGXuMfq40LOB9LopXPeTW5dpah7+A SQnIO4+oQL2z5DugVzX2Ki63wuFTfnC2uG/Aq6PAauLnETB64h1zXPw8mVzd/EQZ0F+l ykvzLOSmCoYITC1vwr/5JFtje+YT82AE2XBMM7iaCd/E3h1J/5BCHzel/kZXpU1SBEiM la4KOLA6kiZ2Byc3uTbiR1PypgUfhj9zVNThOygFmTWPlMMXZ7ciV+iLt7XIBR1duQE4 Xc/tw4pr5508exPhRmSBd08bw+mKObbJiyMrxG87pKfhVmfGjY4ZR0t5aqrFjl1lzceT EbDQ== X-Gm-Message-State: AOAM5322qxPzHpCbbxNRD8si9lLjsLa9RMiN6dWTtV+iTpTbenzjCzTl FbHZWSybFHv5SypOrLeOMlW3cSM+b61o7g== X-Google-Smtp-Source: ABdhPJyRkeL5U2J546bEx7XWaSYn81Vn0YBB0FjbBffgJRno8L9Ovas1Hvfh0BlzNViZgd4adR+/7A== X-Received: by 2002:a63:8948:: with SMTP id v69mr32128430pgd.132.1629724375275; Mon, 23 Aug 2021 06:12:55 -0700 (PDT) Received: from hiroh2.tok.corp.google.com ([2401:fa00:8f:203:184e:5d20:8fcb:dfcd]) by smtp.gmail.com with ESMTPSA id j4sm18596891pgi.6.2021.08.23.06.12.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Aug 2021 06:12:53 -0700 (PDT) From: Hirokazu Honda To: libcamera-devel@lists.libcamera.org Date: Mon, 23 Aug 2021 22:12:21 +0900 Message-Id: <20210823131221.1034059-11-hiroh@chromium.org> X-Mailer: git-send-email 2.33.0.rc2.250.ged5fa647cd-goog In-Reply-To: <20210823131221.1034059-1-hiroh@chromium.org> References: <20210823131221.1034059-1-hiroh@chromium.org> MIME-Version: 1.0 Subject: [libcamera-devel] [RFC PATCH v2 10/10] libcamera: framebuffer: Add assertion to detect offset is unfilled X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The offset variable is introduced to FrameBuffer::Plane. In order to detect that the plane is used while the offset is not set, this adds the assertion to FrameBuffer::planes(). It should be removed in the future. Signed-off-by: Hirokazu Honda Reviewed-by: Laurent Pinchart --- include/libcamera/framebuffer.h | 13 +++++++++++-- src/libcamera/framebuffer.cpp | 4 ++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/include/libcamera/framebuffer.h b/include/libcamera/framebuffer.h index 5de3c744..d5aeff00 100644 --- a/include/libcamera/framebuffer.h +++ b/include/libcamera/framebuffer.h @@ -7,6 +7,8 @@ #ifndef __LIBCAMERA_FRAMEBUFFER_H__ #define __LIBCAMERA_FRAMEBUFFER_H__ +#include +#include #include #include @@ -41,14 +43,21 @@ class FrameBuffer final : public Extensible public: struct Plane { + static constexpr unsigned int kInvalidOffset = std::numeric_limits::max(); FileDescriptor fd; - unsigned int offset; + unsigned int offset = kInvalidOffset; unsigned int length; }; FrameBuffer(const std::vector &planes, unsigned int cookie = 0); - const std::vector &planes() const { return planes_; } + const std::vector &planes() const + { + /* \todo Remove the assertions after sufficient testing */ + for (const auto &plane : planes_) + assert(plane.offset != Plane::kInvalidOffset); + return planes_; + } Request *request() const; const FrameMetadata &metadata() const { return metadata_; } diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp index e9467aa0..5f612ecd 100644 --- a/src/libcamera/framebuffer.cpp +++ b/src/libcamera/framebuffer.cpp @@ -165,6 +165,10 @@ FrameBuffer::Private::Private() * multiple dmabufs, based on the camera requirements. */ +/** + * \var FrameBuffer::Plane::kInvalidOffset + * \brief The invalid offset value + */ /** * \var FrameBuffer::Plane::fd * \brief The dmabuf file descriptor