{"id":15652,"url":"https://patchwork.libcamera.org/api/patches/15652/?format=json","web_url":"https://patchwork.libcamera.org/patch/15652/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20220407231414.97058-1-kieran.bingham@ideasonboard.com>","date":"2022-04-07T23:14:14","name":"[libcamera-devel,v2] ipa: ipu3: af: enforce grid size restrictions","commit_ref":"b0c2484d6191a6225b301144a9d1781870e03c68","pull_url":null,"state":"accepted","archived":false,"hash":"2fb5925f375f4b4c48e7eea8c33bd543ea72f7f3","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/15652/mbox/","series":[{"id":3044,"url":"https://patchwork.libcamera.org/api/series/3044/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=3044","date":"2022-04-07T23:14:14","name":"[libcamera-devel,v2] ipa: ipu3: af: enforce grid size restrictions","version":2,"mbox":"https://patchwork.libcamera.org/series/3044/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/15652/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/15652/checks/","tags":{},"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 47EBCC3256\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  7 Apr 2022 23:14:17 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7029A65642;\n\tFri,  8 Apr 2022 01:14:16 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 01375604B8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  8 Apr 2022 01:14:14 +0200 (CEST)","from Q.ksquared.org.uk.beta.tailscale.net (unknown\n\t[178.237.134.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 11584880;\n\tFri,  8 Apr 2022 01:14:13 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1649373256;\n\tbh=Yg5PcfuwlKGhos93dHQZyVKmxWN1mAWgFNBAojaKv60=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=0TJyqhZvjicgmXnicduvJT/OgHNNeXyzGimY0GcLn/ZqhUVqDxgOt6kmtPaBNr4JO\n\tlMPAH2s+rlNNAV/UEYyByqlA2Q5Xhz0UQTIB5cs/EQxnwtrJvJnXSxFDJ5V8lVW9D4\n\tE4CymtIflZsJakc0TEyhnPG9Oiu/MnnNUC+GfrErqksvwPmQgp5wv4f8z6EZvPlTBa\n\tWgNo5fJzN0TH6zpE4PB4crxmPYghrzjvueVhWxNPFD7twu8lnGJIgUDTeEPPXzgWmJ\n\tQN/YKJyUjwqjpYail3UhDskjiCVSxib8niRjOX6GL9bwhOGwzwTqubpx8zEzjWvz1y\n\tTmL5ipjuKF3rQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1649373254;\n\tbh=Yg5PcfuwlKGhos93dHQZyVKmxWN1mAWgFNBAojaKv60=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=ZJAndrt3tdlcBovUvSeMc8il8jZrQKxWFHzYpxEBdey7bt+d55MMTojxe70fwjN4M\n\tlJF458msNg9nxHCcvLZKkE09RqKr+3oEWNfNCtuctnOTqJTaieqvfZHixSHD1gYijS\n\tAXM+R9k8CowigiifMcJ3rNxzrYdKojvReiSTVA/4="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"ZJAndrt3\"; dkim-atps=neutral","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Date":"Fri,  8 Apr 2022 01:14:14 +0200","Message-Id":"<20220407231414.97058-1-kieran.bingham@ideasonboard.com>","X-Mailer":"git-send-email 2.25.1","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v2] ipa: ipu3: af: enforce grid size\n\trestrictions","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":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Provide enforcement of the selection of the block_{width,height}_log2\nparameters to the capabilities of the hardware.\n\nWhile this selection is currently hardcoded to the minimum, providing\nthe restriction now allows for further dynamic sizing in the future and\ndocuments the restrictions directly in code, making use of the already\nexisting constants.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n---\nv2:\n - Finally actually fixed the clang compiler by also adding the\n   kAfMaxGrid{Width,Height} constants too.\n\n\n src/ipa/ipu3/algorithms/af.cpp | 19 +++++++++++++++++++\n 1 file changed, 19 insertions(+)","diff":"diff --git a/src/ipa/ipu3/algorithms/af.cpp b/src/ipa/ipu3/algorithms/af.cpp\nindex 0170a3728892..a33c229aabea 100644\n--- a/src/ipa/ipu3/algorithms/af.cpp\n+++ b/src/ipa/ipu3/algorithms/af.cpp\n@@ -168,6 +168,25 @@ int Af::configure(IPAContext &context, const IPAConfigInfo &configInfo)\n \tgrid.height = kAfMinGridHeight;\n \tgrid.block_width_log2 = kAfMinGridBlockWidth;\n \tgrid.block_height_log2 = kAfMinGridBlockHeight;\n+\n+\t/*\n+\t * \\todo - while this clamping code is effectively a no-op, it satisfies\n+\t * the compiler that the constant definitions of the hardware limits\n+\t * are used, and paves the way to support dynamic grid sizing in the\n+\t * future. While the block_{width,height}_log2 remain assigned to the\n+\t * minimum, this code should be optimized out by the compiler.\n+\t */\n+\tgrid.width = std::clamp(grid.width, kAfMinGridWidth, kAfMaxGridWidth);\n+\tgrid.height = std::clamp(grid.height, kAfMinGridHeight, kAfMaxGridHeight);\n+\n+\tgrid.block_width_log2 = std::clamp(grid.block_width_log2,\n+\t\t\t\t\t   kAfMinGridBlockWidth,\n+\t\t\t\t\t   kAfMaxGridBlockWidth);\n+\n+\tgrid.block_height_log2 = std::clamp(grid.block_height_log2,\n+\t\t\t\t\t    kAfMinGridBlockHeight,\n+\t\t\t\t\t    kAfMaxGridBlockHeight);\n+\n \tgrid.height_per_slice = kAfDefaultHeightPerSlice;\n \n \t/* x_start and y start are default to BDS center */\n","prefixes":["libcamera-devel","v2"]}