[{"id":36977,"web_url":"https://patchwork.libcamera.org/comment/36977/","msgid":"<aSBOqCXVsWQx4D46@duo.ucw.cz>","date":"2025-11-21T11:36:08","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":49,"url":"https://patchwork.libcamera.org/api/people/49/","name":"Pavel Machek","email":"pavel@ucw.cz"},"content":"Hi!\n\n> \n> - Drops AWB since the CCM contains it already\n> - Includes Gamma\n> - Includes Contrast - testable via camshark\n> - Includes Saturation - testable via camshark\n> - Includes a scaler from Robert\n> - Includes synch changes from Robert\n> - Includes all feedback incorporated from Pavel\n> - Generates a default 65k CCM if none is supplied\n> - Various Doxygen torments fixed along the way\n> - And is the \"top half\" of the precursor series as the GPUISP\n>   series becomes 44 patches long this is an unreasonable number\n>   to merge in one go.\n> \n> - Full testable branch\n> Link: https://gitlab.freedesktop.org/camera/libcamera-softisp/-/tree/v0.5.2-gpuisp-v4e?ref_type=heads\n>\n\nI did very quick testing on Librem 5 front camera:\n\nDefault configuration is: 1628x1224-ABGR8888/Unset\nAvailable streams: 1\nStream 0 pixel format=ABGR8888 size=1628x1224\nValidated configuration is: 1628x1224-ABGR8888/Unset\n[13:39:51.752299467] [5577]  INFO Camera camera.cpp:1215 configuring streams: (0) 1628x1224-ABGR8888/Unset\n[13:39:51.753785964] [5591]  WARN IPASoft soft_simple.cpp:255 IPASoft: Minimum gain is zero, that can't be linear\n[13:39:51.754911728] [5591]  INFO IPASoft soft_simple.cpp:269 IPASoft: Exposure 6-2524, gain 100-240 (1)\n\n=== Available Controls ===\nContrast (id=15)\n  Type: Float\n\nAllocated 4 buffers for stream\n....\nRequest completed: Request(10:C:0/1:0)\n\tSensorBlackLevels = [ 3072, 3072, 3072, 3072 ]\n\tColourGains = [ 0.000949, 0.000958 ]\n\tExposureTime = 90250\n\tAnalogueGain = 100.000000\n\tSensorTimestamp = 49194147415000\n seq: 000068 timestamp: 49194147415000 bytesused: 7970688\n\nAnd yes, it works :-), and gives me AE.\n\nABGR8888 is really bad format for video encoding. Memory is uncached\nand thus slow, so we spend time copying out that unused alpha\nchannel. BGR888 would be better. (YUY2 would be even better).\n\nI notice AE works, but I don't see a way to run it on/off or to\ncontrol exposure/gain manually. Both would be welcome for photo\ntaking.\n\nThanks for doing this.\n\nTested-by: Pavel Machek <pavel@ucw.cz>\n\nBest regards,\n\t\t\t\t\t\t\tPavel","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 2A928BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 21 Nov 2025 11:36:11 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5C13E60A80;\n\tFri, 21 Nov 2025 12:36:10 +0100 (CET)","from jabberwock.ucw.cz (jabberwock.ucw.cz [46.255.230.98])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 613D060805\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 21 Nov 2025 12:36:09 +0100 (CET)","by jabberwock.ucw.cz (Postfix, from userid 1017)\n\tid EC9611C01B5; Fri, 21 Nov 2025 12:36:08 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ucw.cz header.i=@ucw.cz header.b=\"IDQu3eoO\";\n\tdkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ucw.cz; s=gen1;\n\tt=1763724968;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=p3x/RaCDFRUz5Lediw6vlqaybGrcuCm9UW0y5y22MFQ=;\n\tb=IDQu3eoOLN51CFSXgxuDlFvhWfDlLxeb7GOCze6iiAmhKqFC2P3Fna2os36/IhIGak6ozX\n\tpWWI7atGGIJb2Uqicf23kY9l1IceJ8ag2Jd+obd/sLgxjGibg9barUnGC8DH9IP7ocBV1s\n\tAtzvbfaolWEGBDqN0klq6HfURhyRMJc=","Date":"Fri, 21 Nov 2025 12:36:08 +0100","From":"Pavel Machek <pavel@ucw.cz>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","Message-ID":"<aSBOqCXVsWQx4D46@duo.ucw.cz>","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha1;\n\tprotocol=\"application/pgp-signature\"; boundary=\"UhWImWT1MiFzj3Nk\"","Content-Disposition":"inline","In-Reply-To":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>","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>"}},{"id":36988,"web_url":"https://patchwork.libcamera.org/comment/36988/","msgid":"<aSBq5uNwZ5B1Z1QY@duo.ucw.cz>","date":"2025-11-21T13:36:38","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":49,"url":"https://patchwork.libcamera.org/api/people/49/","name":"Pavel Machek","email":"pavel@ucw.cz"},"content":"Hi1\n\n> This version 4:\n> \n> - Drops AWB since the CCM contains it already\n> - Includes Gamma\n> - Includes Contrast - testable via camshark\n> - Includes Saturation - testable via camshark\n> - Includes a scaler from Robert\n\nDoes it? I tried requesting lower resolution, and it seemed like image\nis cropped, not resized.\n\nBest regards,\n\t\t\t\t\t\t\t\tPavel","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 6D199BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 21 Nov 2025 13:36:40 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2049D60A80;\n\tFri, 21 Nov 2025 14:36:40 +0100 (CET)","from jabberwock.ucw.cz (jabberwock.ucw.cz [46.255.230.98])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9B18F60805\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 21 Nov 2025 14:36:39 +0100 (CET)","by jabberwock.ucw.cz (Postfix, from userid 1017)\n\tid 55E541C01B5; Fri, 21 Nov 2025 14:36:39 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ucw.cz header.i=@ucw.cz header.b=\"LD6V9ZMl\";\n\tdkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ucw.cz; s=gen1;\n\tt=1763732199;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=/to6ZWhk0W/7KCygZdUULmkjPTRql3bbUNHmT2BJ2HM=;\n\tb=LD6V9ZMlMJiw4xVKpE7xTlyLwAxJn3ZmZeV93H//fZNbeEJEu+9D68VoYd+/wMAP3RiN6b\n\teiqF+AqomLZgPRxKXztA4ZJt/pvhBmYCRl/V4XP7E/mnbQvz0Sl+tqpotI30ImGQailHOk\n\tXqsv07A0m5FoavlgALfSr/P0vXWTIio=","Date":"Fri, 21 Nov 2025 14:36:38 +0100","From":"Pavel Machek <pavel@ucw.cz>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","Message-ID":"<aSBq5uNwZ5B1Z1QY@duo.ucw.cz>","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha1;\n\tprotocol=\"application/pgp-signature\"; boundary=\"4+u/jWjJ369c94xr\"","Content-Disposition":"inline","In-Reply-To":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>","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>"}},{"id":37008,"web_url":"https://patchwork.libcamera.org/comment/37008/","msgid":"<fa3b7f5c-a5d1-4ac7-998b-12b18f3f89f0@linaro.org>","date":"2025-11-22T16:13:05","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 21/11/2025 11:36, Pavel Machek wrote:\n> ABGR8888 is really bad format for video encoding. Memory is uncached\n> and thus slow, so we spend time copying out that unused alpha\n> channel. BGR888 would be better. (YUY2 would be even better).\n\nWe talked alot about 32 bit formats and concluded most hardware probably \nworked better with 32 bit.\n\nA fragment shader's view of the world - how the pipeline works in fact \nis gl_FragColor = DWORD.\n\nSo its not possible from a fragment shader to write any other type of \npacking.\n\nWe can and do re-order the bytes to swap blue as an example.\n\nTo do differently packed formats - we need compute shaders and SSBOs, \ni.e. buffers which aren't constrained to a final 32 bit write.\n\n> I notice AE works, but I don't see a way to run it on/off or to\n> control exposure/gain manually. Both would be welcome for photo\n> taking.\n\nI don't know how to do that either. You can certainly play with \nsaturation and contrast in camshark though.\n\n> \n> Thanks for doing this.\n> \n> Tested-by: Pavel Machek<pavel@ucw.cz>","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 0FB73C3330\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 22 Nov 2025 16:13:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 12EB960A80;\n\tSat, 22 Nov 2025 17:13:11 +0100 (CET)","from mail-wr1-x429.google.com (mail-wr1-x429.google.com\n\t[IPv6:2a00:1450:4864:20::429])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6A345606E6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 22 Nov 2025 17:13:09 +0100 (CET)","by mail-wr1-x429.google.com with SMTP id\n\tffacd0b85a97d-42b427cda88so2014910f8f.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 22 Nov 2025 08:13:09 -0800 (PST)","from [192.168.0.27] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-42cb7fb919bsm17504314f8f.34.2025.11.22.08.13.06\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tSat, 22 Nov 2025 08:13:07 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"S4ehuJXJ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1763827989; x=1764432789;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=3rcoNH9uQf/RdTcQwFVAlVymW1l+vNgur+iT5/+Eg30=;\n\tb=S4ehuJXJDEd5fOWMWQ49zdjDU9z3QVhz2VO1kfq6PsZBre6ieKOPy4Fdi/EPfOxSfP\n\tm92ewG1lApI+qZ2a734angje+TVVH4GnPkUCGZgnV8XR9UjcBIrJcq+dbkfmFplkBs+Z\n\tMXsgxWF08Kds4dFnpnt4+h90E+Fm0bp0Ka8x0iB3IkTp/koyTmxzsNvr4QMGLMByOcgB\n\t/p/kcj3OjT+dH5QFgEqwL8dTE5Tg4El0xQQI7Pmu3lYixrCfn/QqHfeibahpJu2SISj7\n\t4BFrJsFtQgZehiwOgBrpZqHIW53Nymnj3CMA2oEv3rzNQzPoyZlhR98ALOiKzsqw9EUS\n\tTVzA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1763827989; x=1764432789;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=3rcoNH9uQf/RdTcQwFVAlVymW1l+vNgur+iT5/+Eg30=;\n\tb=okFVd0TlYK99OY5NSq2ANX6pUh8XyPpVat3nGIn7OaPvtGMQOxbK9bBMsjsDPg7x0/\n\tSyj5HUwtn86+Lh7xSYJ5+pvDavXmOaiOXVit0VNQ9pW7ETUmFFii9e5OyrvxZnd7vTlj\n\t/tjO/v2z0uYujfiheDZZAL8CUyNU/qUeEM/LInohl9uPyIo15FiGpGYgj0LIWRq/nie0\n\tZDHEbiIcjxE5uj9ElwY/eqScm6SJ2w8D7xNwok3oCia8EfG+HBvvOCTcjTLKajgZL9Nt\n\t0IQHCB9oR23HZU+tEadINNxBGU9oTxVIC646NHLsEvXlUIkDvzuojnxdM6xpOEVVllPw\n\tA0pA==","X-Gm-Message-State":"AOJu0Yzvkcl+BZRoObR9ZOn/HqiBFi47/+sZ2K9cnK6C4EYUNtieMijt\n\tTf5iBzzuKLLs4KESJBFkfXkb4Z4q9FmT1CHVugtTiC3cO1tsfz9XwyU7jaLvXH4bxlHZOnGs1B0\n\tIOv5+rcU=","X-Gm-Gg":"ASbGncvaMGoV2qPU6InZXroOf5thyw588oS9PBbhrxRgtqWir1rGsR3GdOXz0vWm6EC\n\tyJp9BGaK99K1Th0aiiKDnujE1Ox7kRMjpCSOFGI2Jb23jnt5AWr8FnfTFKgYWEZ1AzpMy9TwgFI\n\t24zIK43SLeYSosLTdFadGxyzfIErefYaL7ikOypiox5Lg016zyhs0QT6bhcfhAy+l30ypocqbd+\n\ttXPk9cYJUFB1hvGd7Vh3Vg8wIWjVfEnlSfT67kv4ZQ35W/h5ft1CkE/lKy8m8nk1vz7x4raVFEk\n\tl8uxEw0ydJgb5USomnu1uSs69SE2xIePgiDvZNZ7qFOfrOyYUKlLGDi1Chyk81Bu79UWeSZKvAf\n\tsgx74ZEytIF/wD+A6LdJRzQ76TNXzvOc5CGOzN/xGLoVJCTSWpZAdzx2BilDEJSQbCAuvG+ZiUq\n\tuybOUmFuNeBdrKSwKJPi2q62VMEcDao610FtyBw4NMzK40TpDS+uwC","X-Google-Smtp-Source":"AGHT+IFG4xQ7sQUWz7QAHHfIIE3el8Hsv8R+XoHrPF/QHXOCBMfbhnA05oqrPxTFOD1gwtyxU8aWwg==","X-Received":"by 2002:a5d:5850:0:b0:429:c709:7b54 with SMTP id\n\tffacd0b85a97d-42cc1cf3c0bmr6057764f8f.36.1763827988432; \n\tSat, 22 Nov 2025 08:13:08 -0800 (PST)","Message-ID":"<fa3b7f5c-a5d1-4ac7-998b-12b18f3f89f0@linaro.org>","Date":"Sat, 22 Nov 2025 16:13:05 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","To":"Pavel Machek <pavel@ucw.cz>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>\n\t<aSBOqCXVsWQx4D46@duo.ucw.cz>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<aSBOqCXVsWQx4D46@duo.ucw.cz>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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>"}},{"id":37009,"web_url":"https://patchwork.libcamera.org/comment/37009/","msgid":"<64bb24b3-788c-4598-8f8a-69fb43aadf69@linaro.org>","date":"2025-11-22T16:14:16","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 21/11/2025 13:36, Pavel Machek wrote:\n>> This version 4:\n>>\n>> - Drops AWB since the CCM contains it already\n>> - Includes Gamma\n>> - Includes Contrast - testable via camshark\n>> - Includes Saturation - testable via camshark\n>> - Includes a scaler from Robert\n> Does it? I tried requesting lower resolution, and it seemed like image\n> is cropped, not resized.\n> \n> Best regards,\n> \t\t\t\t\t\t\t\tPavel\n\nAh, you'll have to ask Robert what's going on with this, I haven't \nplayed with that bit myself.\n\n---\nbod","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 3AB8AC3333\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 22 Nov 2025 16:14:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E18C160A80;\n\tSat, 22 Nov 2025 17:14:20 +0100 (CET)","from mail-wm1-x334.google.com (mail-wm1-x334.google.com\n\t[IPv6:2a00:1450:4864:20::334])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 250A3606E6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 22 Nov 2025 17:14:20 +0100 (CET)","by mail-wm1-x334.google.com with SMTP id\n\t5b1f17b1804b1-47775fb6cb4so19870515e9.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 22 Nov 2025 08:14:20 -0800 (PST)","from [192.168.0.27] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-477a9deeb96sm111686905e9.4.2025.11.22.08.14.17\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tSat, 22 Nov 2025 08:14:18 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"sfKXQZOt\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1763828060; x=1764432860;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=03T6PaqUHJRARmuz9QgnRONtVI4wY9SZ+AVT2giNs/A=;\n\tb=sfKXQZOtGFXYgYH39ORsoQixwdQGqaIG27jxzEQRlWG+nSKNI5ibFsG05SA2CD552U\n\t11vVZr3aAcOLGkYLtobWkacKJXRaLTO9I+74FOCIkMiDvz3/Oemk12Y0wmd5Tao8XWVt\n\t4OsNaRLGTJeKSy8wH2AH7S7BrnnbuYvkcxBhymw5MeeZHdIPXfT6QTNlrO9RW1TrBca6\n\th3w/UeBcQlyAfCvoyk5sKKjZkBsDkhtDqHowmIoV2ji91vAVq7Q/pSMQCisymnHPoVVh\n\t6KhSAqvtXnSMxK4H1aS+U7xhmBADX9au1rwpCy+0b+RvAZVn43jpETQx/gH3DrXy9oGa\n\tsApA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1763828060; x=1764432860;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=03T6PaqUHJRARmuz9QgnRONtVI4wY9SZ+AVT2giNs/A=;\n\tb=iBb3Dq6wQmMKiiC7JZbypfaIO/rAoLmnv9dVjGzHerSrigc72b7Pm2gkRGS2rVZy3r\n\teZM21u3+4DQMWuoPtYCyY6mjbCZBxLCknb7P5gaVwSKP38jhkLshHHhzrA2b9Cupirzq\n\tAIecCClzqLQQDwL9cax27whXHtI2Gn9Rd+aT/B6cGyPsRykzTLdqJQUIVNdHJb0xMSOM\n\tP1TQns+Htx+0LxIwctXTP4BXANJjEF+H51zPgoNWyWl7kvBfpNNWlIm9yMVCLQZ6FcfZ\n\txQ5hbV7cfCGaUFuTgy57JoLa6f3NLOtHqBRYiaPokLVBjk0tscd6PxoaMPDYA63JFBEb\n\t/XQA==","X-Gm-Message-State":"AOJu0YyW9oyKcKFsI2RWdkfJ3e145nplKPm4IcK53Jc9FFhgrzjvTakq\n\tPmksNC2c4AyQYN0HF5AOurBpwtZnUBAaN99kXo+uwzcpCYMbwaUrYcUyNhf+LWt2/CU=","X-Gm-Gg":"ASbGnctliLYPQ5+eYiNpPX04mIJA6bNibEL+xvhjoU1ek2AlryZ/0s4qKWxLOoYnB9P\n\tPQW6iEPflaDh8pLfvngQy9hr81WH6MlCMXMZo/DsAZOK0umqSwuiw8xdCmJvOKoz7fXNPCtrS7m\n\tv144ZVHiThHQBmyeM+LXSn9yhOOuJRbJyeka24Qp2z++/1O2eublmav/Da3JS1/mmNWpHL3UVsb\n\tqZvTL45jOqt3ySpYKylnOm+ygmDwtj21UuHi9iVaoDeE8AOWgQtJ5W4A5KqYSijxPmP2azHU5HD\n\tq7RZCTwU8l6rtr5EfMmS4ffdQDuU5piMCPrZKKbWgmrf+FFdR3L+TmlhKViZjtXbg+2jJ/lUFaN\n\tGuy9qrSRaGkOPK/Cm8srQCtzOxgSfkyr9EFVYUCN3h+uZXez4/sK3f91sYKKQl51dF7Fk40AfFu\n\tw1shswfPIuMUNSzqgd+u2hIaF5lDoIw3Ckvg368DqnsgFDH4SZG948","X-Google-Smtp-Source":"AGHT+IFRC2KpD/ML4zmUPijdETqiPmrBVrmk5vK0xZP8y9zt/M8CvSH3K1rceReIrtCLjyeJaG+gGw==","X-Received":"by 2002:a05:600c:3588:b0:477:bcb:24cd with SMTP id\n\t5b1f17b1804b1-477c11179ffmr65808155e9.22.1763828059691; \n\tSat, 22 Nov 2025 08:14:19 -0800 (PST)","Message-ID":"<64bb24b3-788c-4598-8f8a-69fb43aadf69@linaro.org>","Date":"Sat, 22 Nov 2025 16:14:16 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","To":"Pavel Machek <pavel@ucw.cz>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>\n\t<aSBq5uNwZ5B1Z1QY@duo.ucw.cz>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<aSBq5uNwZ5B1Z1QY@duo.ucw.cz>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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>"}},{"id":37011,"web_url":"https://patchwork.libcamera.org/comment/37011/","msgid":"<aSI7akum0YFd13RV@duo.ucw.cz>","date":"2025-11-22T22:38:34","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":49,"url":"https://patchwork.libcamera.org/api/people/49/","name":"Pavel Machek","email":"pavel@ucw.cz"},"content":"Hi!\n\n> > ABGR8888 is really bad format for video encoding. Memory is uncached\n> > and thus slow, so we spend time copying out that unused alpha\n> > channel. BGR888 would be better. (YUY2 would be even better).\n> \n> We talked alot about 32 bit formats and concluded most hardware probably\n> worked better with 32 bit.\n> \n> A fragment shader's view of the world - how the pipeline works in fact is\n> gl_FragColor = DWORD.\n> \n> So its not possible from a fragment shader to write any other type of\n> packing.\n\nIt should be possible to write 16bits, too, according to ChatGPT.\n\nWhat I've done in Clicks machine is write YUY2, so 2 pixels into\n32bits. That definitelly works and has additional advantage of being\nmuch faster to compress into movie file.\n\nBest regards,\n\t\t\t\t\t\t\t\tPavel","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 AF7CBC3330\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 22 Nov 2025 22:38:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AE24D60A80;\n\tSat, 22 Nov 2025 23:38:36 +0100 (CET)","from jabberwock.ucw.cz (jabberwock.ucw.cz [46.255.230.98])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B4DCA606E6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 22 Nov 2025 23:38:35 +0100 (CET)","by jabberwock.ucw.cz (Postfix, from userid 1017)\n\tid 2C2C61C01AC; Sat, 22 Nov 2025 23:38:35 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ucw.cz header.i=@ucw.cz header.b=\"VTt6jYPf\";\n\tdkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ucw.cz; s=gen1;\n\tt=1763851115;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=JvSIagiK6B16pk7lhJ+g1VihruNcVd33f9aEgD8a/AA=;\n\tb=VTt6jYPfx9tMqIH1suoGBeR+dG1NnehmYcmLv2VWjoZOtQlCeVlxAjGT68Xl2yPFvMbu5w\n\tFrWAojSjnr0/9MKMJhED2onsAgqoe/gZvCYKizU7GEg1U2vS967UPILsYP6oTw6GPSLO56\n\tGXWscgWdtQtXJPI5hOjPtRQ2KDrhOGM=","Date":"Sat, 22 Nov 2025 23:38:34 +0100","From":"Pavel Machek <pavel@ucw.cz>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","Message-ID":"<aSI7akum0YFd13RV@duo.ucw.cz>","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>\n\t<aSBOqCXVsWQx4D46@duo.ucw.cz>\n\t<fa3b7f5c-a5d1-4ac7-998b-12b18f3f89f0@linaro.org>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha1;\n\tprotocol=\"application/pgp-signature\"; boundary=\"hnmSC90ee1AtahgN\"","Content-Disposition":"inline","In-Reply-To":"<fa3b7f5c-a5d1-4ac7-998b-12b18f3f89f0@linaro.org>","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>"}},{"id":37013,"web_url":"https://patchwork.libcamera.org/comment/37013/","msgid":"<35259eb5-9a8d-4c44-9a7b-edf17ccb356b@linaro.org>","date":"2025-11-23T10:55:24","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 22/11/2025 22:38, Pavel Machek wrote:\n> Hi!\n> \n>>> ABGR8888 is really bad format for video encoding. Memory is uncached\n>>> and thus slow, so we spend time copying out that unused alpha\n>>> channel. BGR888 would be better. (YUY2 would be even better).\n>>\n>> We talked alot about 32 bit formats and concluded most hardware probably\n>> worked better with 32 bit.\n>>\n>> A fragment shader's view of the world - how the pipeline works in fact is\n>> gl_FragColor = DWORD.\n>>\n>> So its not possible from a fragment shader to write any other type of\n>> packing.\n> \n> It should be possible to write 16bits, too, according to ChatGPT.\n\nIts an interesting question.\n\nglTexture2D( format = GL_RG ); would write what to memory @ gl_FragColor \n= vec4();\n\nI'd guess two bytes of data and two bytes of 0 or does it bytemask - or \nmore pertinently is there a way to get it to bytemask if you specify the \nstorage format of the pixels int he right way.\n\nThat's one of the reasons we use eglCreateImageKHR because we can \ncontrol the storage format\n\nhttps://forums.raspberrypi.com/viewtopic.php?t=293312\n\nIt might be possible to specify the surface as YUV2 as above and do so \nportably across platfroms/archs not sure.\n\nWe pretty much have the lowest common denominator with ARGB8888 at the \nmoment.\n\nWe would also I'm reasonably sure have to create the GBM surface with \nthe right number of pixels too and then setup our mesa context\n\nhttps://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/gbm/main/gbm.c?ref_type=heads#L223\n\nBut yeah, perhaps it is possible.\n\n> What I've done in Clicks machine is write YUY2, so 2 pixels into\n> 32bits. That definitelly works and has additional advantage of being\n> much faster to compress into movie file.\n\nSo yeah with GBM and then eglCreateImageKHR can we\n\n1. Make a 16 bit surface\n2. Get the fragment shader to byte mask..\n\nThe second one I'm not so sure about.\n\nThe other alternative is compute shaders and SSBOs\n\nWe might in phase 2 look at say moving common code into some kind of \ninclude file so that core logic could be used in a fragment shader - \na-la qcam in original unmodified mode but then included into a compute \nshader for all of the is more flexible stuff we want to do.\n\nAn SSBO would mean we could write 1, 2, 3, 4 bytes pretty much at will \non the output without having to worry about surfaces, storage formats of \ncajoling the GPU to byte mask.\n\n---\nbod","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 A7E50C3334\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 23 Nov 2025 10:55:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E55FB60856;\n\tSun, 23 Nov 2025 11:55:27 +0100 (CET)","from mail-wm1-x333.google.com (mail-wm1-x333.google.com\n\t[IPv6:2a00:1450:4864:20::333])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 52B4460856\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 23 Nov 2025 11:55:26 +0100 (CET)","by mail-wm1-x333.google.com with SMTP id\n\t5b1f17b1804b1-47789cd2083so19639555e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 23 Nov 2025 02:55:26 -0800 (PST)","from [192.168.0.35] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-477a9e19875sm122902705e9.16.2025.11.23.02.55.24\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tSun, 23 Nov 2025 02:55:25 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"CEhmDIUw\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1763895326; x=1764500126;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=8iWxw+sfVUpFEeC1XUTfiRzaX+PX1vVoVlQe30pMABk=;\n\tb=CEhmDIUwCiNHNHv8hU3+T8DavxWsKmbU1XfjWkDFU3maWrmYw8ocm6nZgdB66QmHQL\n\thDsVY9bfw9CosQmoAPoNFwb4WhYjjDLvtrz9cwd0EdTgBDWqGx0k9IoZ4mXwsA6VnfgV\n\txADOoigX2OdFBssqxZS4jkijTOwNiGJIAvptMx7wGsqvuZ0JNGL0xlxZ2Ho9NMWea9ho\n\t8mkzZwiuVhmzYHllneNahl+gC+Xuypaw9gzB3tDe8dXZXUhI5xO4LyUWvt6vDEXU9dLA\n\tD4FX6+cknGFLZ8KmdDFMhYRI9xkLIBCip1UcFPH5Tf++HhFpHMvV8xVZdh9QM8/EVoe4\n\toiaw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1763895326; x=1764500126;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=8iWxw+sfVUpFEeC1XUTfiRzaX+PX1vVoVlQe30pMABk=;\n\tb=sJ+eu14R1jjdOQfJlzwhVP3U//GWWxRx3tpLbxBumAhFG3dTcUBHjraP5srHn7h+n4\n\t/f/qR+mFJV6E/vIPBSkCPxoeKHH0IMFK+JCfhtSb9Zc6cV/LmwfIS/q8DL2Z533M8vBT\n\toxkWN5kU1p6liBvyWqdWQ8gmyR1piL8AjB7kbELqvrBU5W5i5RgNguEraaDWKI1J2PrF\n\tzksTgr+6eRrYjDwRsQiwz5oSrSO+u+fmfBLczjhmCf2ZRs2MbH9XIXjPyO0Jz2qQkAsO\n\tvx2EGHV6Qz2+inTRb8Ovy/GQycWcU5ZnRkoEdzbxLXHpDfi7jL/+mHDreQDvqEsK1HkR\n\tAhIw==","X-Gm-Message-State":"AOJu0Yzggef4STPEahK78pyHRGlpzgHerUOzDkH8l31oxshKQkOe8jpk\n\tIruNqW4pAEF1z5PouxWln+fQfontR8GCO58mSumZ09TsRzGcEeHknP9hc8KlNnJYg0wpTbGz9MW\n\tYAiZ+SyI=","X-Gm-Gg":"ASbGncutuARUnNm14piVmJNX+Ao/q4baD+dMLAuDDWwru7L3uxmFQ1uFPkI9JSxXLC1\n\t7v8KWpWdr8JdPXc3jnOUk8o4Cwsmch4FFPP1mRu5s/Jg8uYx7+lTs6GI4tDnCU5UeV1PlFaCuF7\n\tlYwaREFYvzhlEnHcHsbPH8lTL7kw8TP4yD+yG5na4YuqoalZBRtFueNIXH9F6IYwSY4cKFDCHZ6\n\tVQOPuVJMIu0imFsJXN5m+Q80DZZfqYp0+jt0xMfQ7osANI27yiCxPFGuKRT6IpjMXCUCHXbrC4L\n\tgtpqzdUVCMpCPp2ioIlUYTF2coCGoFaCtxaTkatt6yu7QyBA7M/rw+sdERv16dLprgB5MerDGZu\n\t9JvaEMnQU7kkaAMPuowQIYaMbaeUjibza836tvtVaJJOEaHaGh9uTipYSFtHFj9UOngKHKK9SPW\n\tyLNeNJw3OvzUtX0mX+w+Q7II3M1OJ246NbjmOdI33VDoMQTvAUbUQ3","X-Google-Smtp-Source":"AGHT+IHWOAlKJecqA7ZdHWPfrhfWUYoBYNHhGFqZosxH67sNO5Tj4JLAf32aK1zgXQvXT8DhCTUU8Q==","X-Received":"by 2002:a05:600c:1382:b0:477:9b35:3e49 with SMTP id\n\t5b1f17b1804b1-477c1103274mr80957555e9.3.1763895325829; \n\tSun, 23 Nov 2025 02:55:25 -0800 (PST)","Message-ID":"<35259eb5-9a8d-4c44-9a7b-edf17ccb356b@linaro.org>","Date":"Sun, 23 Nov 2025 10:55:24 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","To":"Pavel Machek <pavel@ucw.cz>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>\n\t<aSBOqCXVsWQx4D46@duo.ucw.cz>\n\t<fa3b7f5c-a5d1-4ac7-998b-12b18f3f89f0@linaro.org>\n\t<aSI7akum0YFd13RV@duo.ucw.cz>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<aSI7akum0YFd13RV@duo.ucw.cz>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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>"}},{"id":37015,"web_url":"https://patchwork.libcamera.org/comment/37015/","msgid":"<aSNXyDUufh9HJkAS@duo.ucw.cz>","date":"2025-11-23T18:51:52","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":49,"url":"https://patchwork.libcamera.org/api/people/49/","name":"Pavel Machek","email":"pavel@ucw.cz"},"content":"Hi!\n\n> > > > ABGR8888 is really bad format for video encoding. Memory is uncached\n> > > > and thus slow, so we spend time copying out that unused alpha\n> > > > channel. BGR888 would be better. (YUY2 would be even better).\n> > > \n> > > We talked alot about 32 bit formats and concluded most hardware probably\n> > > worked better with 32 bit.\n> > > \n> > > A fragment shader's view of the world - how the pipeline works in fact is\n> > > gl_FragColor = DWORD.\n> > > \n> > > So its not possible from a fragment shader to write any other type of\n> > > packing.\n> > \n> > It should be possible to write 16bits, too, according to ChatGPT.\n> \n> Its an interesting question.\n> \n> glTexture2D( format = GL_RG ); would write what to memory @ gl_FragColor =\n> vec4();\n> \n> I'd guess two bytes of data and two bytes of 0 or does it bytemask - or more\n> pertinently is there a way to get it to bytemask if you specify the storage\n> format of the pixels int he right way.\n> \n> That's one of the reasons we use eglCreateImageKHR because we can control\n> the storage format\n> \n> https://forums.raspberrypi.com/viewtopic.php?t=293312\n> \n> It might be possible to specify the surface as YUV2 as above and do so\n> portably across platfroms/archs not sure.\n> \n> We pretty much have the lowest common denominator with ARGB8888 at the\n> moment.\n\nYes. So what I've done in clicks machine is:\n\n1) Tell hardware we are doing ARGB8888, half width.\n\n2) Compute two pixels in the shader, extract YUV YUV from two\nconsecutive pixels.\n\n3) Store Y U Y V as \"R G B A\" in the shader.\n\nFor Librem 5, it was great win:\n\na) half as many bytes transferred from GPU.\n\nb) YUY2 is way faster to compress into video.\n\nBest regards,\n\t\t\t\t\t\t\t\t\tPavel","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 4CA2FC3336\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 23 Nov 2025 18:51:56 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7C5DD60A80;\n\tSun, 23 Nov 2025 19:51:55 +0100 (CET)","from jabberwock.ucw.cz (jabberwock.ucw.cz [46.255.230.98])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C6060608CF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 23 Nov 2025 19:51:53 +0100 (CET)","by jabberwock.ucw.cz (Postfix, from userid 1017)\n\tid 610711C00AB; Sun, 23 Nov 2025 19:51:53 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ucw.cz header.i=@ucw.cz header.b=\"pxRH3bP2\";\n\tdkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ucw.cz; s=gen1;\n\tt=1763923913;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=kSE2y9W/gF3QqSKeeMq3o73MzpPsz6EHrF/HjNQu/NE=;\n\tb=pxRH3bP2qDTz+7zPN1RtHfVnWnBtosnGSQrWZClmGDZqSBR5CbcaP7S56caMxKoNZUUCkH\n\t0prDgCc6kxvR0hkxw8Cfmo/syOQrV0NXsAPq6o1yAjn07jrmxVBnlMj0bUpeAVwqIX2hFj\n\tcUXWfVJLnrolMa28xi3n1zu0nuA70ig=","Date":"Sun, 23 Nov 2025 19:51:52 +0100","From":"Pavel Machek <pavel@ucw.cz>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","Message-ID":"<aSNXyDUufh9HJkAS@duo.ucw.cz>","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>\n\t<aSBOqCXVsWQx4D46@duo.ucw.cz>\n\t<fa3b7f5c-a5d1-4ac7-998b-12b18f3f89f0@linaro.org>\n\t<aSI7akum0YFd13RV@duo.ucw.cz>\n\t<35259eb5-9a8d-4c44-9a7b-edf17ccb356b@linaro.org>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha1;\n\tprotocol=\"application/pgp-signature\"; boundary=\"pl5C25YCFGEaPFRB\"","Content-Disposition":"inline","In-Reply-To":"<35259eb5-9a8d-4c44-9a7b-edf17ccb356b@linaro.org>","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>"}},{"id":37016,"web_url":"https://patchwork.libcamera.org/comment/37016/","msgid":"<7157e1b8-0dce-4431-9ac8-491875a423b8@linaro.org>","date":"2025-11-23T23:45:01","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 23/11/2025 18:51, Pavel Machek wrote:\n> Hi!\n> \n>>>>> ABGR8888 is really bad format for video encoding. Memory is uncached\n>>>>> and thus slow, so we spend time copying out that unused alpha\n>>>>> channel. BGR888 would be better. (YUY2 would be even better).\n>>>>\n>>>> We talked alot about 32 bit formats and concluded most hardware probably\n>>>> worked better with 32 bit.\n>>>>\n>>>> A fragment shader's view of the world - how the pipeline works in fact is\n>>>> gl_FragColor = DWORD.\n>>>>\n>>>> So its not possible from a fragment shader to write any other type of\n>>>> packing.\n>>>\n>>> It should be possible to write 16bits, too, according to ChatGPT.\n>>\n>> Its an interesting question.\n>>\n>> glTexture2D( format = GL_RG ); would write what to memory @ gl_FragColor =\n>> vec4();\n>>\n>> I'd guess two bytes of data and two bytes of 0 or does it bytemask - or more\n>> pertinently is there a way to get it to bytemask if you specify the storage\n>> format of the pixels int he right way.\n>>\n>> That's one of the reasons we use eglCreateImageKHR because we can control\n>> the storage format\n>>\n>> https://forums.raspberrypi.com/viewtopic.php?t=293312\n>>\n>> It might be possible to specify the surface as YUV2 as above and do so\n>> portably across platfroms/archs not sure.\n>>\n>> We pretty much have the lowest common denominator with ARGB8888 at the\n>> moment.\n> \n> Yes. So what I've done in clicks machine is:\n> \n> 1) Tell hardware we are doing ARGB8888, half width.\n> \n> 2) Compute two pixels in the shader, extract YUV YUV from two\n> consecutive pixels.\n> \n> 3) Store Y U Y V as \"R G B A\" in the shader.\n> \n> For Librem 5, it was great win:\n> \n> a) half as many bytes transferred from GPU.\n> \n> b) YUY2 is way faster to compress into video.\n> \n> Best regards,\n> \t\t\t\t\t\t\t\t\tPavel\n\nPerhaps a discreet compute shader pass would be best/easiest for the \ncodebase we have.\n\n---\nbod","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 21AB8C0F1B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 23 Nov 2025 23:45:08 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AB5D760A8B;\n\tMon, 24 Nov 2025 00:45:06 +0100 (CET)","from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com\n\t[IPv6:2a00:1450:4864:20::32a])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 925DF606E6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 24 Nov 2025 00:45:04 +0100 (CET)","by mail-wm1-x32a.google.com with SMTP id\n\t5b1f17b1804b1-477a2ab455fso40069605e9.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 23 Nov 2025 15:45:04 -0800 (PST)","from [192.168.0.27] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-42cb7fa3a76sm25123849f8f.24.2025.11.23.15.45.02\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tSun, 23 Nov 2025 15:45:02 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"Kw4X+tId\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1763941504; x=1764546304;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=8g4ByF2uMgw7n5px4JTT+nTOiYmV+lqhgEN9p+4HoqI=;\n\tb=Kw4X+tIdGfadMDbZBcN2SzFKceJx28+1at6atoaWinp7mn5VFcmtotGGqvBpXll/YL\n\ttCuyfeJRGz7aewYRakBIQdNIhqdw2oaeliC9w6aJpbznNl92hFfDIKyGmx3Wb/NfBWkS\n\teSRrCeYQxlquSiu2j8EQG1CSsJrpu/qMWS2laIaAXAh5uJucIc2WkXAz5SpdOz1ApIIi\n\tnDucYOQvplhXs7nQ8CUin8l3lXFZp1PGxQVJe08JJMZY6eL24Z62tpBbbSc76cmq1W7I\n\tdFjiNtF909zWFCAeqNGs5xx8Px4YPZG+ZPIDp27R5Sw+xuQ+ShB8fg++gISfnDeK/eHI\n\tSx4Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1763941504; x=1764546304;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=8g4ByF2uMgw7n5px4JTT+nTOiYmV+lqhgEN9p+4HoqI=;\n\tb=TepxFWVLEhpYclylI09VeeaxOufiaSV72fCmsrhxjSn5dMy9YcrtXwJ4kHs4DXOqc5\n\tDX7LDhir4NqVei+zEjs9prTryIaOzpIs3U+sTHSpWmwen1sm0OijRED8oVBZAhTdO7C2\n\t7Fo7whCl0xbl88H3h4RDi5opaWsvUVJGrUyCHTMkL8A3OtCrpC74q+2omDc3JL58Pl3e\n\tMBaQ8tTj4+ay+VuoPbUqdT9t2oBAp9CaBo4kXOCuR25Ohj4LY/m01lDiAR6PrWJPiWJ1\n\trv0MjqQBgHC8PJNc9FsKe+pcBMPHMN1ufqCnT7yb4GZ4QCK6gKBprFyKdMgVOeshvlJ8\n\tqs1w==","X-Gm-Message-State":"AOJu0Yy1/JAvSA9r89srC49/lf4VQvbR8+49ZG6EDdTF5lEHtoXsVmdx\n\tGw9siwjhz5evsVXBWKmogN0ztH2D0dz2gFs6cVzcwlagLf5CpCH35fafdlJ2voAC3dI=","X-Gm-Gg":"ASbGnctNhZ08sZ841WaHQU4ctTg+q8qYQeUS6NSDenbdSp9IOxRBUKvYLkQtMbtZ1XY\n\tSE1CM6QPJjgRejKbr3rPiQHe2gJd68bxoG4YVS0ba6omVxKGy3hrJmvt9qTT2XpKGy77PMHe4Xa\n\tNk5P0CQ4EDa8IqOJcgfLVHCboKTh+SrHyslXYtewRwXCKZqbg6tSSYKC/qXm/xQ/b3XHxY3n/aM\n\toq7Sb4ZyjviVo7sAUJbxOolJnOaQXeX9BVzkJSg3IVmNKHDTWDGfHEPY+MdwTOkvlfRMIXwS845\n\tyc9aDpbRhYRdHk+uSiBbiUv5ZxtAajcaKXIEkPj8IcgjQ0UW5ZZQ2e9+CkFVi6u90oqm6VpufJh\n\tpYIQeeaR0HtwW3IiUX3mRARTELrc84yIChOCIbadulqKFLUDkOuGDGl3oam1eUtjvFZU7o4MCNn\n\tABP+2k+efRA5Z5DD6l8Z3DWkWzjZzA8YD1isqL6Gl//DkC5+hSTUfCZifUBDMx4ZQ=","X-Google-Smtp-Source":"AGHT+IES1E9eoshiPsZu7Gfysq4POz6CsOM3O9vKlXLvidBFxmsJ8dAymv3L+0MShlGOMIIcJiWt7w==","X-Received":"by 2002:a05:600c:3111:b0:477:b734:8c53 with SMTP id\n\t5b1f17b1804b1-477c10deffamr100904345e9.12.1763941504087; \n\tSun, 23 Nov 2025 15:45:04 -0800 (PST)","Message-ID":"<7157e1b8-0dce-4431-9ac8-491875a423b8@linaro.org>","Date":"Sun, 23 Nov 2025 23:45:01 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","To":"Pavel Machek <pavel@ucw.cz>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>\n\t<aSBOqCXVsWQx4D46@duo.ucw.cz>\n\t<fa3b7f5c-a5d1-4ac7-998b-12b18f3f89f0@linaro.org>\n\t<aSI7akum0YFd13RV@duo.ucw.cz>\n\t<35259eb5-9a8d-4c44-9a7b-edf17ccb356b@linaro.org>\n\t<aSNXyDUufh9HJkAS@duo.ucw.cz>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<aSNXyDUufh9HJkAS@duo.ucw.cz>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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>"}},{"id":37105,"web_url":"https://patchwork.libcamera.org/comment/37105/","msgid":"<aSoj/sJq1OlZU5XD@duo.ucw.cz>","date":"2025-11-28T22:36:46","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":49,"url":"https://patchwork.libcamera.org/api/people/49/","name":"Pavel Machek","email":"pavel@ucw.cz"},"content":"Hi!\n\n> This version 4:\n> \n> - Drops AWB since the CCM contains it already\n> - Includes Gamma\n> - Includes Contrast - testable via camshark\n> - Includes Saturation - testable via camshark\n> - Includes a scaler from Robert\n\nNow I'm pretty sure it crops instead of resizes.\n\nI'm also getting assertion failures when trying to it with high\nresolution on Librem 5 with mcam test program. Not sure how to debug\nthat.\n\n[Thread 0xffffe534ee00 (LWP 10180) exited]\nmcam: ../include/libcamera/controls.h:189: T libcamera::ControlValue::get() const [with T = int; typename std::enable_if<((! libcamera::details::is_span<U>::value) && (! std::is_same<std::basic_string_view<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value)), std::nullptr_t>::type <anonymous> = nullptr]: Assertion `type_ == details::control_type<std::remove_cv_t<T>>::value' failed.\n\nThread 23 \"IPAProxySoft\" received signal SIGABRT, Aborted.\n[Switching to Thread 0xffffe5b5ee00 (LWP 10181)]\n__pthread_kill_implementation (threadid=281474535648768, signo=signo@entry=6, \n    no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44\nwarning: 44\t./nptl/pthread_kill.c: No such file or directory\n(gdb) bt\n#0  __pthread_kill_implementation (threadid=281474535648768, signo=signo@entry=6, \n    no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44\n#1  0x0000fffff6f77e64 in __pthread_kill_internal (threadid=<optimized out>, signo=6)\n    at ./nptl/pthread_kill.c:89\n#2  0x0000fffff6f26980 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26\n#3  0x0000fffff6f11ac4 in __GI_abort () at ./stdlib/abort.c:73\n#4  0x0000fffff6f1f9bc in __assert_fail_base (fmt=<optimized out>, assertion=<optimized out>, \n    file=<optimized out>, line=189, function=<optimized out>) at ./assert/assert.c:118\n#5  0x0000aaaaaaabddd4 in libcamera::ControlValue::get<int, decltype(nullptr)> (\n    this=0xffffc8000cc0) at ../include/libcamera/controls.h:189\n#6  0x0000ffffe5c0e1c8 in libcamera::ipa::soft::IPASoftSimple::processStats (this=0xffffd0035aa0, \n    frame=3, bufferId=0, sensorControls=...) at ../src/ipa/simple/soft_simple.cpp:312\n#7  0x0000fffff7c1da4c in libcamera::ipa::soft::IPAProxySoftThreaded::ThreadProxy::processStats (\n    this=0xffffd0012ea8, frame=3, bufferId=0, sensorControls=...)\n    at include/libcamera/ipa/soft_ipa_proxy.h:131\n#8  0x0000fffff7c200c8 in libcamera::BoundMethodMember<libcamera::ipa::soft::IPAProxySoftThreaded::ThreadProxy, void, unsigned int, unsigned int, libcamera::ControlList const&>::invoke (\n    this=0xffffc8002170, args#0=3, args#1=0, args#2=...)\n    at ../include/libcamera/base/bound_method.h:182\n#9  0x0000fffff7c02d78 in libcamera::BoundMethodArgs<void, unsigned int, unsigned int, libcamera::ControlList const&>::invokePack<0ul, 1ul, 2ul> (this=0xffffc8002170, pack=0xffffd0027e50)\n    at ../include/libcamera/base/bound_method.h:102\n#10 0x0000fffff7c021f4 in libcamera::BoundMethodArgs<void, unsigned int, unsigned int, libcamera::ControlList const&>::invokePack (this=0xffffc8002170, pack=0xffffd0027e50)\n    at ../include/libcamera/base/bound_method.h:111\n#11 0x0000fffff76b3d68 in libcamera::InvokeMessage::invoke (this=0xffffc8001ac0)\n    at ../src/libcamera/base/message.cpp:153\n#12 0x0000fffff7699ef0 in libcamera::Object::message (this=0xffffd0012ea8, msg=0xffffc8001ac0)\n    at ../src/libcamera/base/object.cpp:211\n#13 0x0000fffff76b5650 in libcamera::Thread::dispatchMessages (this=0xffffd0012e58, \n    type=libcamera::Message::None, receiver=0x0) at ../src/libcamera/base/thread.cpp:662\n#14 0x0000fffff76a3740 in libcamera::EventDispatcherPoll::processEvents (this=0xffffd4000ba0)\n    at ../src/libcamera/base/event_dispatcher_poll.cpp:146\n#15 0x0000fffff76b46ec in libcamera::Thread::exec (this=0xffffd0012e58)\n    at ../src/libcamera/base/thread.cpp:319\n#16 0x0000fffff76b4778 in libcamera::Thread::run (this=0xffffd0012e58)\n    at ../src/libcamera/base/thread.cpp:346\n#17 0x0000fffff76b4684 in libcamera::Thread::startThread (this=0xffffd0012e58)\n    at ../src/libcamera/base/thread.cpp:297\n#18 0x0000fffff76b9bc4 in std::__invoke_impl<void, void (libcamera::Thread::*)(), libcamera::Thread*> (\n    __f=@0xffffd00055d0: (void (libcamera::Thread::*)(class libcamera::Thread * const)) 0xfffff76b4510 <libcamera::Thread::startThread()>, __t=@0xffffd00055c8: 0xffffd0012e58)\n    at /usr/include/c++/14/bits/invoke.h:74\n--Type <RET> for more, q to quit, c to continue without paging--\n#19 0x0000fffff76b9b10 in std::__invoke<void (libcamera::Thread::*)(), libcamera::Thread*> (\n    __fn=@0xffffd00055d0: (void (libcamera::Thread::*)(class libcamera::Thread * const)) 0xfffff76b4510 <libcamera::Thread::startThread()>) at /usr/include/c++/14/bits/invoke.h:96\n#20 0x0000fffff76b9a74 in std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> >::_M_invoke<0ul, 1ul> (this=0xffffd00055c8)\n    at /usr/include/c++/14/bits/std_thread.h:301\n#21 0x0000fffff76b9a2c in std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> >::operator() (this=0xffffd00055c8) at /usr/include/c++/14/bits/std_thread.h:308\n#22 0x0000fffff76b9a0c in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> > >::_M_run (this=0xffffd00055c0)\n    at /usr/include/c++/14/bits/std_thread.h:253\n#23 0x0000fffff71cb4e0 in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6\n#24 0x0000fffff6f75f78 in start_thread (arg=0xffffe5b5ee00) at ./nptl/pthread_create.c:448\n#25 0x0000fffff6fdde8c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone3.S:76\n(gdb) \n\nThanks and best regards,\n\t\t\t\t\t\t\t\tPavel","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 9B3FEC3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 28 Nov 2025 22:36:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C96EB60A9E;\n\tFri, 28 Nov 2025 23:36:49 +0100 (CET)","from jabberwock.ucw.cz (jabberwock.ucw.cz [46.255.230.98])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7EDF46069A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 28 Nov 2025 23:36:47 +0100 (CET)","by jabberwock.ucw.cz (Postfix, from userid 1017)\n\tid 129411C00AB; Fri, 28 Nov 2025 23:36:47 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ucw.cz header.i=@ucw.cz header.b=\"CqtSj30m\";\n\tdkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ucw.cz; s=gen1;\n\tt=1764369407;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=+z364fqkc/Hc5+FkqE18wlq4Dtl/JlaHQ+UjGQnMlsM=;\n\tb=CqtSj30mkRr2r7m9nwLJh894lTvQK1SpAweqfllb8WI6tQBresXxVfqre8wWuaNVmiljTR\n\tlAOR8yvag5gCncg8fE0JAHEkUux9XM811+Y4Mazks/R22bTDLhmR9iwnkhW2P1210btLSC\n\tsLPqKzO7kDPes+wFFgZA8TPfB+0GpfE=","Date":"Fri, 28 Nov 2025 23:36:46 +0100","From":"Pavel Machek <pavel@ucw.cz>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","Message-ID":"<aSoj/sJq1OlZU5XD@duo.ucw.cz>","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha1;\n\tprotocol=\"application/pgp-signature\"; boundary=\"AOjr1odcQ0h7wTmR\"","Content-Disposition":"inline","In-Reply-To":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>","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>"}},{"id":37108,"web_url":"https://patchwork.libcamera.org/comment/37108/","msgid":"<f741732c-e064-4bcc-b5f5-488289a46be8@linaro.org>","date":"2025-11-29T13:41:06","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 28/11/2025 22:36, Pavel Machek wrote:\n> Hi!\n> \n>> This version 4:\n>>\n>> - Drops AWB since the CCM contains it already\n>> - Includes Gamma\n>> - Includes Contrast - testable via camshark\n>> - Includes Saturation - testable via camshark\n>> - Includes a scaler from Robert\n> \n> Now I'm pretty sure it crops instead of resizes.\n> \n> I'm also getting assertion failures when trying to it with high\n> resolution on Librem 5 with mcam test program. Not sure how to debug\n> that.\n> \n> [Thread 0xffffe534ee00 (LWP 10180) exited]\n> mcam: ../include/libcamera/controls.h:189: T libcamera::ControlValue::get() const [with T = int; typename std::enable_if<((! libcamera::details::is_span<U>::value) && (! std::is_same<std::basic_string_view<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value)), std::nullptr_t>::type <anonymous> = nullptr]: Assertion `type_ == details::control_type<std::remove_cv_t<T>>::value' failed.\n> \n> Thread 23 \"IPAProxySoft\" received signal SIGABRT, Aborted.\n> [Switching to Thread 0xffffe5b5ee00 (LWP 10181)]\n> __pthread_kill_implementation (threadid=281474535648768, signo=signo@entry=6,\n>      no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44\n> warning: 44\t./nptl/pthread_kill.c: No such file or directory\n> (gdb) bt\n> #0  __pthread_kill_implementation (threadid=281474535648768, signo=signo@entry=6,\n>      no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44\n> #1  0x0000fffff6f77e64 in __pthread_kill_internal (threadid=<optimized out>, signo=6)\n>      at ./nptl/pthread_kill.c:89\n> #2  0x0000fffff6f26980 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26\n> #3  0x0000fffff6f11ac4 in __GI_abort () at ./stdlib/abort.c:73\n> #4  0x0000fffff6f1f9bc in __assert_fail_base (fmt=<optimized out>, assertion=<optimized out>,\n>      file=<optimized out>, line=189, function=<optimized out>) at ./assert/assert.c:118\n> #5  0x0000aaaaaaabddd4 in libcamera::ControlValue::get<int, decltype(nullptr)> (\n>      this=0xffffc8000cc0) at ../include/libcamera/controls.h:189\n> #6  0x0000ffffe5c0e1c8 in libcamera::ipa::soft::IPASoftSimple::processStats (this=0xffffd0035aa0,\n>      frame=3, bufferId=0, sensorControls=...) at ../src/ipa/simple/soft_simple.cpp:312\n> #7  0x0000fffff7c1da4c in libcamera::ipa::soft::IPAProxySoftThreaded::ThreadProxy::processStats (\n>      this=0xffffd0012ea8, frame=3, bufferId=0, sensorControls=...)\n>      at include/libcamera/ipa/soft_ipa_proxy.h:131\n> #8  0x0000fffff7c200c8 in libcamera::BoundMethodMember<libcamera::ipa::soft::IPAProxySoftThreaded::ThreadProxy, void, unsigned int, unsigned int, libcamera::ControlList const&>::invoke (\n>      this=0xffffc8002170, args#0=3, args#1=0, args#2=...)\n>      at ../include/libcamera/base/bound_method.h:182\n> #9  0x0000fffff7c02d78 in libcamera::BoundMethodArgs<void, unsigned int, unsigned int, libcamera::ControlList const&>::invokePack<0ul, 1ul, 2ul> (this=0xffffc8002170, pack=0xffffd0027e50)\n>      at ../include/libcamera/base/bound_method.h:102\n> #10 0x0000fffff7c021f4 in libcamera::BoundMethodArgs<void, unsigned int, unsigned int, libcamera::ControlList const&>::invokePack (this=0xffffc8002170, pack=0xffffd0027e50)\n>      at ../include/libcamera/base/bound_method.h:111\n> #11 0x0000fffff76b3d68 in libcamera::InvokeMessage::invoke (this=0xffffc8001ac0)\n>      at ../src/libcamera/base/message.cpp:153\n> #12 0x0000fffff7699ef0 in libcamera::Object::message (this=0xffffd0012ea8, msg=0xffffc8001ac0)\n>      at ../src/libcamera/base/object.cpp:211\n> #13 0x0000fffff76b5650 in libcamera::Thread::dispatchMessages (this=0xffffd0012e58,\n>      type=libcamera::Message::None, receiver=0x0) at ../src/libcamera/base/thread.cpp:662\n> #14 0x0000fffff76a3740 in libcamera::EventDispatcherPoll::processEvents (this=0xffffd4000ba0)\n>      at ../src/libcamera/base/event_dispatcher_poll.cpp:146\n> #15 0x0000fffff76b46ec in libcamera::Thread::exec (this=0xffffd0012e58)\n>      at ../src/libcamera/base/thread.cpp:319\n> #16 0x0000fffff76b4778 in libcamera::Thread::run (this=0xffffd0012e58)\n>      at ../src/libcamera/base/thread.cpp:346\n> #17 0x0000fffff76b4684 in libcamera::Thread::startThread (this=0xffffd0012e58)\n>      at ../src/libcamera/base/thread.cpp:297\n> #18 0x0000fffff76b9bc4 in std::__invoke_impl<void, void (libcamera::Thread::*)(), libcamera::Thread*> (\n>      __f=@0xffffd00055d0: (void (libcamera::Thread::*)(class libcamera::Thread * const)) 0xfffff76b4510 <libcamera::Thread::startThread()>, __t=@0xffffd00055c8: 0xffffd0012e58)\n>      at /usr/include/c++/14/bits/invoke.h:74\n> --Type <RET> for more, q to quit, c to continue without paging--\n> #19 0x0000fffff76b9b10 in std::__invoke<void (libcamera::Thread::*)(), libcamera::Thread*> (\n>      __fn=@0xffffd00055d0: (void (libcamera::Thread::*)(class libcamera::Thread * const)) 0xfffff76b4510 <libcamera::Thread::startThread()>) at /usr/include/c++/14/bits/invoke.h:96\n> #20 0x0000fffff76b9a74 in std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> >::_M_invoke<0ul, 1ul> (this=0xffffd00055c8)\n>      at /usr/include/c++/14/bits/std_thread.h:301\n> #21 0x0000fffff76b9a2c in std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> >::operator() (this=0xffffd00055c8) at /usr/include/c++/14/bits/std_thread.h:308\n> #22 0x0000fffff76b9a0c in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> > >::_M_run (this=0xffffd00055c0)\n>      at /usr/include/c++/14/bits/std_thread.h:253\n> #23 0x0000fffff71cb4e0 in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6\n> #24 0x0000fffff6f75f78 in start_thread (arg=0xffffe5b5ee00) at ./nptl/pthread_create.c:448\n> #25 0x0000fffff6fdde8c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone3.S:76\n> (gdb)\n> \n> Thanks and best regards,\n> \t\t\t\t\t\t\t\tPavel\n\nThis doesn't look specific to the GPU patches to me\n\nCould you try LIBCAMERA_LOG_LEVELS=*:DEBUG LIBCAMERA_SOFTISP_MODE=cpu \n/path/to/mcam <mcam_args> ?\n\n1. Can you bisect ?\n\n2. Where is mcam and how hard is it to build/run ?\n    Perhaps I can figure this out if I can run your test code.\n\n---\nbod","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 54EAFC3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 29 Nov 2025 13:41:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 979CA60A85;\n\tSat, 29 Nov 2025 14:41:11 +0100 (CET)","from mail-wr1-x435.google.com (mail-wr1-x435.google.com\n\t[IPv6:2a00:1450:4864:20::435])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1A1E860805\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 29 Nov 2025 14:41:10 +0100 (CET)","by mail-wr1-x435.google.com with SMTP id\n\tffacd0b85a97d-42b31507ed8so2456038f8f.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 29 Nov 2025 05:41:10 -0800 (PST)","from [192.168.0.35] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-42e1c5c30b8sm15589953f8f.7.2025.11.29.05.41.08\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tSat, 29 Nov 2025 05:41:08 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"XaD78pzf\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1764423669; x=1765028469;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=apqIw7OtM3MaQFsHJPh24rMvEql8xkx9MlpAhYP1tZU=;\n\tb=XaD78pzf/CitP9EwpjdjdLX+5gUwnETUiynlnKr7iuP4eGUCQsAam4VvUcve+4mZFU\n\tvervhpbxY+hdnYLSi/WE8GDi8Q/vkV1qMjhihw3PyT4A+K3DLYS1vTfUECDrN0Dq7Thy\n\tOwkJPtIB+xgCp8kpbytv8llKEL5i6WZdPIjrtujq/IEDHazp3tm5KZWDI+nn8F4c5gnT\n\t9PFALGsROa26XTJo/lpuDcBh0nIutrOk6cdiSHbW/AqIHPdfq1cHjl1Qpkf0bbr6k+te\n\tKrC+vWbzdY1Zx2z7uWEFzUeHbm+Wi/rhFa5GJG5kSSYzlofyw0fekEUqz8CtpMYuVxGX\n\t4lYg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1764423669; x=1765028469;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=apqIw7OtM3MaQFsHJPh24rMvEql8xkx9MlpAhYP1tZU=;\n\tb=gvQD0ptAsfV5JZ1hcgDyWi12XyiLYJqyFvr36SyjD38sUO0a98Q3rKoTCNF9OAqumr\n\tlt4l1xLuSKfF7AYUP85FfOd4N/Mn4dJUx3IJ7wvhVcyWN3KW7q8Yt7ohoT7SllVMCDqf\n\tk2ia2MLJ2c0Y26VFZhA9Fs9gHsd6D7iGqtqe1grt2GjoMaiDvur3EhdiqOMgiFWg6hN1\n\tc5LKc8VTjJ1jCqwGL2XjLlgEYfkUdJBKKtmFPjPF8j9xAMEIDyjoufGQHx2QnYiWqLJ7\n\t0Dpkr8uGVA1iHZ7mlq8G/l+uuLPnVweD2Pd/i9G1vlYcqw3Te5mGMyQjZ2SKDG8eB6pY\n\tNrbA==","X-Gm-Message-State":"AOJu0YzDo5NODY83ggahg6Hn3En1Se+8rDrbLiJvuSJhcSIfRYD3zoax\n\tFUG8rJ4Ej9Gf01v9Q763D9kHKd00ntjnw1uXGFxsU5uwg1JWo2H+eFLYX5DEiYl4eQtWx4mvjqL\n\ti8J26","X-Gm-Gg":"ASbGncuy0EA7JMZfH3m+TehqSvgxQE4QevMk4yAPjwFdbDi0Ht+nPE4Szr1gls6scv/\n\tO73Wrq0IjOec3qM0YEry/YNAdyDrtsca5Do/Bg8ekb3Lp0L5Fe+p/xccbhI/hjsPl86ST8EN4xx\n\thj2rN0cuB0TDZ5LfG1BABqG0KtgW9VtFCpIB7QqsMwDe7ujGPz1izGzMu6WCHWdL0oVRsQVwzUi\n\txSpOy/RP3DAl2Vo9Sdwsp2QpqwvxWowMp2CD5+XqvIEtk9kzAb2iaW9DZZViTxiV88fl4D8dOCO\n\t6hy6NuUE1nBVFXr1dlaPnjoDLXLkqX9WR2QmD8vfntF24H6ACJvgJQtLi9vmEjyGikuPCN03UQX\n\t4kkTZwNS0M+3nlL+gJFjrilLXYcxwSGwQWAgFrGJNrtEjf4np5wYnNxyOQOkh5O3RZZMrnlqE6O\n\t5JPh/ZRJ2gZWAmT5B+kcYDMoE5BKckHk9i+woKgyDTVlLwQtQlZG6F","X-Google-Smtp-Source":"AGHT+IG4KBlVuVJ1OPERmlkMiYr9rpwWpTW3qwQUS9+12PeEJ3AU53TmHOUkGGdrGxX8TVpQSuEZOw==","X-Received":"by 2002:a05:6000:2c0c:b0:42b:2c61:86f1 with SMTP id\n\tffacd0b85a97d-42e0f34a082mr19912085f8f.35.1764423669442; \n\tSat, 29 Nov 2025 05:41:09 -0800 (PST)","Message-ID":"<f741732c-e064-4bcc-b5f5-488289a46be8@linaro.org>","Date":"Sat, 29 Nov 2025 13:41:06 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","To":"Pavel Machek <pavel@ucw.cz>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>\n\t<aSoj/sJq1OlZU5XD@duo.ucw.cz>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<aSoj/sJq1OlZU5XD@duo.ucw.cz>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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>"}},{"id":37109,"web_url":"https://patchwork.libcamera.org/comment/37109/","msgid":"<e6f0ec73-9890-4262-bf00-d3cea9a19560@collabora.com>","date":"2025-11-29T14:01:19","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":140,"url":"https://patchwork.libcamera.org/api/people/140/","name":"Robert Mader","email":"robert.mader@collabora.com"},"content":"Hi - unintentionally send my reply only to Bryan, sorry 😅, so here again\n\nOn 22.11.25 17:14, Bryan O'Donoghue wrote:\n> On 21/11/2025 13:36, Pavel Machek wrote:\n>>> This version 4:\n>>>\n>>> - Drops AWB since the CCM contains it already\n>>> - Includes Gamma\n>>> - Includes Contrast - testable via camshark\n>>> - Includes Saturation - testable via camshark\n>>> - Includes a scaler from Robert\n>> Does it? I tried requesting lower resolution, and it seemed like image\n>> is cropped, not resized.\n>>\n>> Best regards,\n>>                                 Pavel\n>\n> Ah, you'll have to ask Robert what's going on with this, I haven't \n> played with that bit myself.\n\nFor me things still work as expected on v4/v0.5.2-gpuisp-v5a.\n\nPavel: it should be easy to check if the scaler improves the situation \nover the SWISP - just choose a resolution that would need to get scaled, \ntake pictures with and without GPUISP and check if the later looks more \n\"zoomed out\".\n\nNote: if the aspect ratio of the camera mode does not match the \nrequested mode - i.e. one is 4:3 and the other 16:9 - then the image \nwill get cropped on one direction. That should be in line with how most \nhardware ISPs work.\n\nIf you think the scaling isn't correct yet, you can play around with the \nvalues for projMatrix in debayer_egl.cpp\n\nRegards\n>\n> ---\n> bod","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 A0744C0F2A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 29 Nov 2025 14:01:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A775960A9E;\n\tSat, 29 Nov 2025 15:01:33 +0100 (CET)","from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com\n\t[136.143.188.12])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F279760805\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 29 Nov 2025 15:01:31 +0100 (CET)","by mx.zohomail.com with SMTPS id 17644248852521.5009645554827102; \n\tSat, 29 Nov 2025 06:01:25 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=collabora.com\n\theader.i=robert.mader@collabora.com header.b=\"IqZh6wMz\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1764424888; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=ZMSFd72V5DMQCOUybmHOdCZjUmT1xf1QWfxCe2UADe/+1bsFCVoPUZs/xcvpTP/OovGd9aS3YlUMD5dDlZcJHy67a2fmhrzEwN9okLswHEzriKKOMNNPPHuUOiD8qXI6sZw7CstU9+PexUxC1Mv07kYXY3b4lbTz23ldhAmxFcg=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1764424888;\n\th=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc;\n\tbh=YXw3XWKW9XkjBlGSUCFJG51JEA+ynyTQLZpH+qCZTy8=; \n\tb=QsSNMNwLh7BFW2TVHg4dZ04Xww57DRkoXesvHAAQA7S2f8LVl4p8wuigMHvANXPhfraTxKuNVLHAZoiiruDCz/q0M2Dq8BO7bHrEvuqz9GAo+qTAxy09sMCdGN/ftgxosA7xW7BXR2JFmv3NJTGUcHYSzz7kS6OcY+Nu1/2SeK0=","ARC-Authentication-Results":"i=1; mx.zohomail.com;\n\tdkim=pass  header.i=collabora.com;\n\tspf=pass  smtp.mailfrom=robert.mader@collabora.com;\n\tdmarc=pass header.from=<robert.mader@collabora.com>","DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1764424888;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To:Cc;\n\tbh=YXw3XWKW9XkjBlGSUCFJG51JEA+ynyTQLZpH+qCZTy8=;\n\tb=IqZh6wMzOCCwIwnJGoJgRuzA8er3C6OFjWyYM4SoSTFq92jF7BTygWL3dnQj+BaO\n\tIGqLFSc2Jsv5W68/eVNsCGfYDlbcGxy/sogIc+PzxvUUr74iipqwKXvLqreOjnYR1oZ\n\t93qGvCUbI8JxQzGeZezZOv+DbxxecDDZYLXRE+Nk=","Message-ID":"<e6f0ec73-9890-4262-bf00-d3cea9a19560@collabora.com>","Date":"Sat, 29 Nov 2025 15:01:19 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","To":"libcamera-devel@lists.libcamera.org","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>\n\t<aSBq5uNwZ5B1Z1QY@duo.ucw.cz>\n\t<64bb24b3-788c-4598-8f8a-69fb43aadf69@linaro.org>","Content-Language":"en-US, de-DE, en-GB","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<64bb24b3-788c-4598-8f8a-69fb43aadf69@linaro.org>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","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>"}},{"id":37110,"web_url":"https://patchwork.libcamera.org/comment/37110/","msgid":"<aStOxHvqHaGsnmOm@duo.ucw.cz>","date":"2025-11-29T19:51:32","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":49,"url":"https://patchwork.libcamera.org/api/people/49/","name":"Pavel Machek","email":"pavel@ucw.cz"},"content":"Hi!\n\n> > [Thread 0xffffe534ee00 (LWP 10180) exited]\n> > mcam: ../include/libcamera/controls.h:189: T libcamera::ControlValue::get() const [with T = int; typename std::enable_if<((! libcamera::details::is_span<U>::value) && (! std::is_same<std::basic_string_view<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value)), std::nullptr_t>::type <anonymous> = nullptr]: Assertion `type_ == details::control_type<std::remove_cv_t<T>>::value' failed.\n> > \n> > Thread 23 \"IPAProxySoft\" received signal SIGABRT, Aborted.\n> > [Switching to Thread 0xffffe5b5ee00 (LWP 10181)]\n> > __pthread_kill_implementation (threadid=281474535648768, signo=signo@entry=6,\n> >      no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44\n> > warning: 44\t./nptl/pthread_kill.c: No such file or directory\n> > (gdb) bt\n> > #0  __pthread_kill_implementation (threadid=281474535648768, signo=signo@entry=6,\n> >      no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44\n> > #1  0x0000fffff6f77e64 in __pthread_kill_internal (threadid=<optimized out>, signo=6)\n> >      at ./nptl/pthread_kill.c:89\n> > #2  0x0000fffff6f26980 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26\n> > #3  0x0000fffff6f11ac4 in __GI_abort () at ./stdlib/abort.c:73\n> > #4  0x0000fffff6f1f9bc in __assert_fail_base (fmt=<optimized out>, assertion=<optimized out>,\n> >      file=<optimized out>, line=189, function=<optimized out>) at ./assert/assert.c:118\n> > #5  0x0000aaaaaaabddd4 in libcamera::ControlValue::get<int, decltype(nullptr)> (\n> >      this=0xffffc8000cc0) at ../include/libcamera/controls.h:189\n> > #6  0x0000ffffe5c0e1c8 in libcamera::ipa::soft::IPASoftSimple::processStats (this=0xffffd0035aa0,\n> >      frame=3, bufferId=0, sensorControls=...) at ../src/ipa/simple/soft_simple.cpp:312\n> > #7  0x0000fffff7c1da4c in libcamera::ipa::soft::IPAProxySoftThreaded::ThreadProxy::processStats (\n> >      this=0xffffd0012ea8, frame=3, bufferId=0, sensorControls=...)\n> >      at include/libcamera/ipa/soft_ipa_proxy.h:131\n> > #8  0x0000fffff7c200c8 in libcamera::BoundMethodMember<libcamera::ipa::soft::IPAProxySoftThreaded::ThreadProxy, void, unsigned int, unsigned int, libcamera::ControlList const&>::invoke (\n> >      this=0xffffc8002170, args#0=3, args#1=0, args#2=...)\n> >      at ../include/libcamera/base/bound_method.h:182\n> > #9  0x0000fffff7c02d78 in libcamera::BoundMethodArgs<void, unsigned int, unsigned int, libcamera::ControlList const&>::invokePack<0ul, 1ul, 2ul> (this=0xffffc8002170, pack=0xffffd0027e50)\n> >      at ../include/libcamera/base/bound_method.h:102\n> > #10 0x0000fffff7c021f4 in libcamera::BoundMethodArgs<void, unsigned int, unsigned int, libcamera::ControlList const&>::invokePack (this=0xffffc8002170, pack=0xffffd0027e50)\n> >      at ../include/libcamera/base/bound_method.h:111\n> > #11 0x0000fffff76b3d68 in libcamera::InvokeMessage::invoke (this=0xffffc8001ac0)\n> >      at ../src/libcamera/base/message.cpp:153\n> > #12 0x0000fffff7699ef0 in libcamera::Object::message (this=0xffffd0012ea8, msg=0xffffc8001ac0)\n> >      at ../src/libcamera/base/object.cpp:211\n> > #13 0x0000fffff76b5650 in libcamera::Thread::dispatchMessages (this=0xffffd0012e58,\n> >      type=libcamera::Message::None, receiver=0x0) at ../src/libcamera/base/thread.cpp:662\n> > #14 0x0000fffff76a3740 in libcamera::EventDispatcherPoll::processEvents (this=0xffffd4000ba0)\n> >      at ../src/libcamera/base/event_dispatcher_poll.cpp:146\n> > #15 0x0000fffff76b46ec in libcamera::Thread::exec (this=0xffffd0012e58)\n> >      at ../src/libcamera/base/thread.cpp:319\n> > #16 0x0000fffff76b4778 in libcamera::Thread::run (this=0xffffd0012e58)\n> >      at ../src/libcamera/base/thread.cpp:346\n> > #17 0x0000fffff76b4684 in libcamera::Thread::startThread (this=0xffffd0012e58)\n> >      at ../src/libcamera/base/thread.cpp:297\n> > #18 0x0000fffff76b9bc4 in std::__invoke_impl<void, void (libcamera::Thread::*)(), libcamera::Thread*> (\n> >      __f=@0xffffd00055d0: (void (libcamera::Thread::*)(class libcamera::Thread * const)) 0xfffff76b4510 <libcamera::Thread::startThread()>, __t=@0xffffd00055c8: 0xffffd0012e58)\n> >      at /usr/include/c++/14/bits/invoke.h:74\n> > --Type <RET> for more, q to quit, c to continue without paging--\n> > #19 0x0000fffff76b9b10 in std::__invoke<void (libcamera::Thread::*)(), libcamera::Thread*> (\n> >      __fn=@0xffffd00055d0: (void (libcamera::Thread::*)(class libcamera::Thread * const)) 0xfffff76b4510 <libcamera::Thread::startThread()>) at /usr/include/c++/14/bits/invoke.h:96\n> > #20 0x0000fffff76b9a74 in std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> >::_M_invoke<0ul, 1ul> (this=0xffffd00055c8)\n> >      at /usr/include/c++/14/bits/std_thread.h:301\n> > #21 0x0000fffff76b9a2c in std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> >::operator() (this=0xffffd00055c8) at /usr/include/c++/14/bits/std_thread.h:308\n> > #22 0x0000fffff76b9a0c in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> > >::_M_run (this=0xffffd00055c0)\n> >      at /usr/include/c++/14/bits/std_thread.h:253\n> > #23 0x0000fffff71cb4e0 in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6\n> > #24 0x0000fffff6f75f78 in start_thread (arg=0xffffe5b5ee00) at ./nptl/pthread_create.c:448\n> > #25 0x0000fffff6fdde8c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone3.S:76\n> > (gdb)\n> > \n> > Thanks and best regards,\n> > \t\t\t\t\t\t\t\tPavel\n> \n> This doesn't look specific to the GPU patches to me\n> \n> Could you try LIBCAMERA_LOG_LEVELS=*:DEBUG LIBCAMERA_SOFTISP_MODE=cpu\n> /path/to/mcam <mcam_args> ?\n\nLet me try that. I don't get this crash when running w/o cpuisp/gpuisp\n-- I do that by sudo chmod 600/666 /dev/dma_heap/system.\n\nAnd yes, I get it with cpuisp only, too:\n\n[34:53:41.933945338] [15549] DEBUG V4L2 v4l2_videodevice.cpp:1777 /dev/video0[19:cap]: Queueing buffer 1\n[34:53:41.934053942] [15549] DEBUG DelayedControls delayed_controls.cpp:214 Reading Analogue Gain to 240 at index 0\n[34:53:41.934110224] [15549] DEBUG DelayedControls delayed_controls.cpp:214 Reading Exposure to 629 at index 0\n[34:53:41.934234668] [15549] DEBUG V4L2 v4l2_videodevice.cpp:1777 /dev/video0[19:cap]: Queueing buffer 2\n[34:53:41.934316991] [15549] DEBUG DelayedControls delayed_controls.cpp:214 Reading Analogue Gain to <ValueType Error> at index 1\n[34:53:41.934371233] [15549] DEBUG DelayedControls delayed_controls.cpp:214 Reading Exposure to <ValueType Error> at index 1\nmcam: ../include/libcamera/controls.h:189: T libcamera::ControlValue::get() const [with T = int; typename std::enable_if<((! libcamera::details::is_span<U>::value) && (! std::is_same<std::basic_string_view<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value)), std::nullptr_t>::type <anonymous> = nullptr]: Assertion `type_ == details::control_type<std::remove_cv_t<T>>::value' failed.\n[34:53:41.934487037] [15549] DEBUG V4L2 v4l2_videodevice.cpp:1777 /dev/video0[19:cap]: Queueing buffer 3\nAborted (core dumped)\nmobian@mobian:~/g/libcamera/build$ \n\nTriggered by holding \"Snap\" button for a while, then releasing it.\n\n> 1. Can you bisect ?\n\nNot really.\n\n> 2. Where is mcam and how hard is it to build/run ?\n>    Perhaps I can figure this out if I can run your test code.\n\nI just put code at\n\nhttps://gitlab.com/tui/libcamera/-/merge_requests/new?merge_request%5Bsource_branch%5D=millicam_1\n\nIt crashed fairly quickly when holding the \"Snap\" button.\n\nQueueing requests: Request(0:P:1/1:0)187651128454704\n...loop\nToo slow 7422 msec\n...loop\nCapture ran for 1 seconds and stopped with exit status: 0\nmcam: ../include/libcamera/controls.h:189: T libcamera::ControlValue::get() const [with T = int; typename std::enable_if<((! libcamera::details::is_span<U>::value) && (! std::is_same<std::basic_string_view<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value)), std::nullptr_t>::type <anonymous> = nullptr]: Assertion `type_ == details::control_type<std::remove_cv_t<T>>::value' failed.\nAborted (core dumped)\nmobian@mobian:~/g/libcamera/build$ git push\nEnumerating objects: 29, done.\nCounting objects: 100% (29/29), done.\nDelta compression using up to 4 threads\nCompressing objects: 100% (24/24), done.\nWriting objects: 100% (24/24), 3.31 KiB | 261.00 KiB/s, done.\nTotal 24 (delta 16), reused 0 (delta 0), pack-reused 0 (from 0)\nremote: \nremote: To create a merge request for millicam_1, visit:\nremote:   https://gitlab.com/tui/libcamera/-/merge_requests/new?merge_request%5Bsource_branch%5D=millicam_1\n\nSo it looks like this happens with both cpuisp ang gpuisp.\n\nBest regards,\n\t\t\t\t\t\t\tPavel","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 3A31EC3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 29 Nov 2025 19:51:36 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4AF3A60A9E;\n\tSat, 29 Nov 2025 20:51:35 +0100 (CET)","from jabberwock.ucw.cz (jabberwock.ucw.cz [46.255.230.98])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8FDAC60805\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 29 Nov 2025 20:51:33 +0100 (CET)","by jabberwock.ucw.cz (Postfix, from userid 1017)\n\tid 26A0D1C00AB; Sat, 29 Nov 2025 20:51:33 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ucw.cz header.i=@ucw.cz header.b=\"WuAi4ZYD\";\n\tdkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ucw.cz; s=gen1;\n\tt=1764445893;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=oheiJ1mZVPuBphjizWO3h+xYSYo2A/pmU1++arp/PBQ=;\n\tb=WuAi4ZYDKRC/761XJAAaQfPYQQKjOkeOk9zVGe6+jeI4s/MnVzzRshmVS8eO4ZVgJyeMHx\n\tY7/merMeVOC/VZk/g0HSfUeU2to1gWZD2Dznl2pk8r9oWzY+kWiT0/Op4K3j+aEEXZqLye\n\tIdNsuBKizlogN2PPl44xzQDjd05XPng=","Date":"Sat, 29 Nov 2025 20:51:32 +0100","From":"Pavel Machek <pavel@ucw.cz>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","Message-ID":"<aStOxHvqHaGsnmOm@duo.ucw.cz>","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>\n\t<aSoj/sJq1OlZU5XD@duo.ucw.cz>\n\t<f741732c-e064-4bcc-b5f5-488289a46be8@linaro.org>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha1;\n\tprotocol=\"application/pgp-signature\"; boundary=\"FtE0Ut1Uabs6Gqx7\"","Content-Disposition":"inline","In-Reply-To":"<f741732c-e064-4bcc-b5f5-488289a46be8@linaro.org>","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>"}},{"id":37133,"web_url":"https://patchwork.libcamera.org/comment/37133/","msgid":"<8b5e8596-063c-4f17-9925-1c3e76ce19d0@ideasonboard.com>","date":"2025-12-01T11:53:16","subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"Hi\n\n2025. 11. 29. 20:51 keltezéssel, Pavel Machek írta:\n> Hi!\n> \n>>> [Thread 0xffffe534ee00 (LWP 10180) exited]\n>>> mcam: ../include/libcamera/controls.h:189: T libcamera::ControlValue::get() const [with T = int; typename std::enable_if<((! libcamera::details::is_span<U>::value) && (! std::is_same<std::basic_string_view<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value)), std::nullptr_t>::type <anonymous> = nullptr]: Assertion `type_ == details::control_type<std::remove_cv_t<T>>::value' failed.\n\nI think you're running into this one: https://gitlab.freedesktop.org/camera/libcamera/-/issues/241\n\n\nRegards,\nBarnabás Pőcze\n\n\n>>>\n>>> Thread 23 \"IPAProxySoft\" received signal SIGABRT, Aborted.\n>>> [Switching to Thread 0xffffe5b5ee00 (LWP 10181)]\n>>> __pthread_kill_implementation (threadid=281474535648768, signo=signo@entry=6,\n>>>       no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44\n>>> warning: 44\t./nptl/pthread_kill.c: No such file or directory\n>>> (gdb) bt\n>>> #0  __pthread_kill_implementation (threadid=281474535648768, signo=signo@entry=6,\n>>>       no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44\n>>> #1  0x0000fffff6f77e64 in __pthread_kill_internal (threadid=<optimized out>, signo=6)\n>>>       at ./nptl/pthread_kill.c:89\n>>> #2  0x0000fffff6f26980 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26\n>>> #3  0x0000fffff6f11ac4 in __GI_abort () at ./stdlib/abort.c:73\n>>> #4  0x0000fffff6f1f9bc in __assert_fail_base (fmt=<optimized out>, assertion=<optimized out>,\n>>>       file=<optimized out>, line=189, function=<optimized out>) at ./assert/assert.c:118\n>>> #5  0x0000aaaaaaabddd4 in libcamera::ControlValue::get<int, decltype(nullptr)> (\n>>>       this=0xffffc8000cc0) at ../include/libcamera/controls.h:189\n>>> #6  0x0000ffffe5c0e1c8 in libcamera::ipa::soft::IPASoftSimple::processStats (this=0xffffd0035aa0,\n>>>       frame=3, bufferId=0, sensorControls=...) at ../src/ipa/simple/soft_simple.cpp:312\n>>> #7  0x0000fffff7c1da4c in libcamera::ipa::soft::IPAProxySoftThreaded::ThreadProxy::processStats (\n>>>       this=0xffffd0012ea8, frame=3, bufferId=0, sensorControls=...)\n>>>       at include/libcamera/ipa/soft_ipa_proxy.h:131\n>>> #8  0x0000fffff7c200c8 in libcamera::BoundMethodMember<libcamera::ipa::soft::IPAProxySoftThreaded::ThreadProxy, void, unsigned int, unsigned int, libcamera::ControlList const&>::invoke (\n>>>       this=0xffffc8002170, args#0=3, args#1=0, args#2=...)\n>>>       at ../include/libcamera/base/bound_method.h:182\n>>> #9  0x0000fffff7c02d78 in libcamera::BoundMethodArgs<void, unsigned int, unsigned int, libcamera::ControlList const&>::invokePack<0ul, 1ul, 2ul> (this=0xffffc8002170, pack=0xffffd0027e50)\n>>>       at ../include/libcamera/base/bound_method.h:102\n>>> #10 0x0000fffff7c021f4 in libcamera::BoundMethodArgs<void, unsigned int, unsigned int, libcamera::ControlList const&>::invokePack (this=0xffffc8002170, pack=0xffffd0027e50)\n>>>       at ../include/libcamera/base/bound_method.h:111\n>>> #11 0x0000fffff76b3d68 in libcamera::InvokeMessage::invoke (this=0xffffc8001ac0)\n>>>       at ../src/libcamera/base/message.cpp:153\n>>> #12 0x0000fffff7699ef0 in libcamera::Object::message (this=0xffffd0012ea8, msg=0xffffc8001ac0)\n>>>       at ../src/libcamera/base/object.cpp:211\n>>> #13 0x0000fffff76b5650 in libcamera::Thread::dispatchMessages (this=0xffffd0012e58,\n>>>       type=libcamera::Message::None, receiver=0x0) at ../src/libcamera/base/thread.cpp:662\n>>> #14 0x0000fffff76a3740 in libcamera::EventDispatcherPoll::processEvents (this=0xffffd4000ba0)\n>>>       at ../src/libcamera/base/event_dispatcher_poll.cpp:146\n>>> #15 0x0000fffff76b46ec in libcamera::Thread::exec (this=0xffffd0012e58)\n>>>       at ../src/libcamera/base/thread.cpp:319\n>>> #16 0x0000fffff76b4778 in libcamera::Thread::run (this=0xffffd0012e58)\n>>>       at ../src/libcamera/base/thread.cpp:346\n>>> #17 0x0000fffff76b4684 in libcamera::Thread::startThread (this=0xffffd0012e58)\n>>>       at ../src/libcamera/base/thread.cpp:297\n>>> #18 0x0000fffff76b9bc4 in std::__invoke_impl<void, void (libcamera::Thread::*)(), libcamera::Thread*> (\n>>>       __f=@0xffffd00055d0: (void (libcamera::Thread::*)(class libcamera::Thread * const)) 0xfffff76b4510 <libcamera::Thread::startThread()>, __t=@0xffffd00055c8: 0xffffd0012e58)\n>>>       at /usr/include/c++/14/bits/invoke.h:74\n>>> --Type <RET> for more, q to quit, c to continue without paging--\n>>> #19 0x0000fffff76b9b10 in std::__invoke<void (libcamera::Thread::*)(), libcamera::Thread*> (\n>>>       __fn=@0xffffd00055d0: (void (libcamera::Thread::*)(class libcamera::Thread * const)) 0xfffff76b4510 <libcamera::Thread::startThread()>) at /usr/include/c++/14/bits/invoke.h:96\n>>> #20 0x0000fffff76b9a74 in std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> >::_M_invoke<0ul, 1ul> (this=0xffffd00055c8)\n>>>       at /usr/include/c++/14/bits/std_thread.h:301\n>>> #21 0x0000fffff76b9a2c in std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> >::operator() (this=0xffffd00055c8) at /usr/include/c++/14/bits/std_thread.h:308\n>>> #22 0x0000fffff76b9a0c in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> > >::_M_run (this=0xffffd00055c0)\n>>>       at /usr/include/c++/14/bits/std_thread.h:253\n>>> #23 0x0000fffff71cb4e0 in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6\n>>> #24 0x0000fffff6f75f78 in start_thread (arg=0xffffe5b5ee00) at ./nptl/pthread_create.c:448\n>>> #25 0x0000fffff6fdde8c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone3.S:76\n>>> (gdb)\n>>>\n>>> Thanks and best regards,\n>>> \t\t\t\t\t\t\t\tPavel\n>>\n>> This doesn't look specific to the GPU patches to me\n>>\n>> Could you try LIBCAMERA_LOG_LEVELS=*:DEBUG LIBCAMERA_SOFTISP_MODE=cpu\n>> /path/to/mcam <mcam_args> ?\n> \n> Let me try that. I don't get this crash when running w/o cpuisp/gpuisp\n> -- I do that by sudo chmod 600/666 /dev/dma_heap/system.\n> \n> And yes, I get it with cpuisp only, too:\n> \n> [34:53:41.933945338] [15549] DEBUG V4L2 v4l2_videodevice.cpp:1777 /dev/video0[19:cap]: Queueing buffer 1\n> [34:53:41.934053942] [15549] DEBUG DelayedControls delayed_controls.cpp:214 Reading Analogue Gain to 240 at index 0\n> [34:53:41.934110224] [15549] DEBUG DelayedControls delayed_controls.cpp:214 Reading Exposure to 629 at index 0\n> [34:53:41.934234668] [15549] DEBUG V4L2 v4l2_videodevice.cpp:1777 /dev/video0[19:cap]: Queueing buffer 2\n> [34:53:41.934316991] [15549] DEBUG DelayedControls delayed_controls.cpp:214 Reading Analogue Gain to <ValueType Error> at index 1\n> [34:53:41.934371233] [15549] DEBUG DelayedControls delayed_controls.cpp:214 Reading Exposure to <ValueType Error> at index 1\n> mcam: ../include/libcamera/controls.h:189: T libcamera::ControlValue::get() const [with T = int; typename std::enable_if<((! libcamera::details::is_span<U>::value) && (! std::is_same<std::basic_string_view<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value)), std::nullptr_t>::type <anonymous> = nullptr]: Assertion `type_ == details::control_type<std::remove_cv_t<T>>::value' failed.\n> [34:53:41.934487037] [15549] DEBUG V4L2 v4l2_videodevice.cpp:1777 /dev/video0[19:cap]: Queueing buffer 3\n> Aborted (core dumped)\n> mobian@mobian:~/g/libcamera/build$\n> \n> Triggered by holding \"Snap\" button for a while, then releasing it.\n> \n>> 1. Can you bisect ?\n> \n> Not really.\n> \n>> 2. Where is mcam and how hard is it to build/run ?\n>>     Perhaps I can figure this out if I can run your test code.\n> \n> I just put code at\n> \n> https://gitlab.com/tui/libcamera/-/merge_requests/new?merge_request%5Bsource_branch%5D=millicam_1\n> \n> It crashed fairly quickly when holding the \"Snap\" button.\n> \n> Queueing requests: Request(0:P:1/1:0)187651128454704\n> ...loop\n> Too slow 7422 msec\n> ...loop\n> Capture ran for 1 seconds and stopped with exit status: 0\n> mcam: ../include/libcamera/controls.h:189: T libcamera::ControlValue::get() const [with T = int; typename std::enable_if<((! libcamera::details::is_span<U>::value) && (! std::is_same<std::basic_string_view<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value)), std::nullptr_t>::type <anonymous> = nullptr]: Assertion `type_ == details::control_type<std::remove_cv_t<T>>::value' failed.\n> Aborted (core dumped)\n> mobian@mobian:~/g/libcamera/build$ git push\n> Enumerating objects: 29, done.\n> Counting objects: 100% (29/29), done.\n> Delta compression using up to 4 threads\n> Compressing objects: 100% (24/24), done.\n> Writing objects: 100% (24/24), 3.31 KiB | 261.00 KiB/s, done.\n> Total 24 (delta 16), reused 0 (delta 0), pack-reused 0 (from 0)\n> remote:\n> remote: To create a merge request for millicam_1, visit:\n> remote:   https://gitlab.com/tui/libcamera/-/merge_requests/new?merge_request%5Bsource_branch%5D=millicam_1\n> \n> So it looks like this happens with both cpuisp ang gpuisp.\n> \n> Best regards,\n> \t\t\t\t\t\t\tPavel","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 54399BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  1 Dec 2025 11:53:24 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4597460AC8;\n\tMon,  1 Dec 2025 12:53:23 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9DA7360A7B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  1 Dec 2025 12:53:22 +0100 (CET)","from [192.168.33.24] (185.182.214.104.nat.pool.zt.hu\n\t[185.182.214.104])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DC8834F1;\n\tMon,  1 Dec 2025 12:51:08 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"C8ER2LfL\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1764589869;\n\tbh=Gota+E9bP1SiVVzkZ1hr7kEN4P9tIxDHfyHKtF5wt08=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=C8ER2LfLSKcp1Gas0W5VUfEo/h07J89ji0z+lilxHBVWGiNiML0cPPoCRkiyTlT7m\n\tMFa40JdSZGvEQQWAvoMtzUDp3L8V+m3WJRR1q2JlqCpCtAStnRwwHvyeTP36wk5//7\n\toy74ofKEDt0yJQ8HgcLWYDm0MLGWyEH3FuARDKSI=","Message-ID":"<8b5e8596-063c-4f17-9925-1c3e76ce19d0@ideasonboard.com>","Date":"Mon, 1 Dec 2025 12:53:16 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 00/23] Add GLES 2.0 GPUISP to libcamera","To":"Pavel Machek <pavel@ucw.cz>,\n\tBryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20251120233347.5046-1-bryan.odonoghue@linaro.org>\n\t<aSoj/sJq1OlZU5XD@duo.ucw.cz>\n\t<f741732c-e064-4bcc-b5f5-488289a46be8@linaro.org>\n\t<aStOxHvqHaGsnmOm@duo.ucw.cz>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<aStOxHvqHaGsnmOm@duo.ucw.cz>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","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>"}}]