[{"id":39189,"web_url":"https://patchwork.libcamera.org/comment/39189/","msgid":"<ajUG2G-Aum5aDSN4@ucw.cz>","date":"2026-06-19T09:07:36","subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","submitter":{"id":49,"url":"https://patchwork.libcamera.org/api/people/49/","name":"Pavel Machek","email":"pavel@ucw.cz"},"content":"Hi!\n\n> - Adding in shaders to \"normalise\" i.e. to take either a packed or unpacked\n>   CSI2 pixel stream - apply BLC to it and output a standard GL16F frame.\n\nFloats, that't outside of GLES2, AFAICT.\n\n> Bryan O'Donoghue (30):\n...\n>   libcamera: software_isp: egl: Move to GLES 3.0\n\nThis is unfortunate. If you want reasonably high-quality camera,\nLibrem 5 is currently best option, and Librem 5 is GLES 2. It is\ncurrently my target for autofocus development.\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 56468BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 19 Jun 2026 09:07:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6082B656BE;\n\tFri, 19 Jun 2026 11:07:40 +0200 (CEST)","from jabberwock.ucw.cz (jabberwock.ucw.cz [46.255.230.98])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4CFF561F3F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 19 Jun 2026 11:07:39 +0200 (CEST)","by jabberwock.ucw.cz (Postfix, from userid 1017)\n\tid DC06F327FBB; Fri, 19 Jun 2026 11:07:36 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ucw.cz header.i=@ucw.cz header.b=\"ORsQH+2b\";\n\tdkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ucw.cz; s=gen1;\n\tt=1781860056;\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=VblHEFgfWUSdOpQHxlh0uenxS1eIPgnXa3qEp6hCYkU=;\n\tb=ORsQH+2bTXERdHq7v4Qeab4WSYInR3/EYxXNyrZj/v3evosUZ0NTcHoP4F5L4P21pEDTk9\n\tVCYbFOLTKJ1bL6h34XBBE4bmSPB3MQmyn+kf3E10TBfsVq3MnjNdCRbvZfRXisB/+KUWic\n\tMuMUaHhnQ4myBu1e6b0+yhsao+2J+0k=","Date":"Fri, 19 Jun 2026 11:07:36 +0200","From":"Pavel Machek <pavel@ucw.cz>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","Message-ID":"<ajUG2G-Aum5aDSN4@ucw.cz>","References":"<20260618122245.946138-1-bryan.odonoghue@linaro.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20260618122245.946138-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":39192,"web_url":"https://patchwork.libcamera.org/comment/39192/","msgid":"<0b3af0c2-2ae2-492d-904d-d7779caefce1@linaro.org>","date":"2026-06-19T11:20:10","subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 19/06/2026 10:07, Pavel Machek wrote:\n> Hi!\n> \n>> - Adding in shaders to \"normalise\" i.e. to take either a packed or unpacked\n>>    CSI2 pixel stream - apply BLC to it and output a standard GL16F frame.\n> Floats, that't outside of GLES2, AFAICT.\n> \n>> Bryan O'Donoghue (30):\n> ...\n>>    libcamera: software_isp: egl: Move to GLES 3.0\n> This is unfortunate. If you want reasonably high-quality camera,\n> Librem 5 is currently best option, and Librem 5 is GLES 2. It is\n> currently my target for autofocus development.\n> \n> Best regards,\n> \t\t\t\t\t\t\tPavel\n\nHmm, you're right, I hadn't factored in that as a regression.\n\nSo lets stick with RGBA as an intermediate format for the moment.\n\nIf we detect GLES >= 3.1 we will compile the first stage as a compute \nshader and output a bayer histogram in an SSBO else we will stick to \nfirst stage as a fragment shader and continue to calculate stats in CPU.\n\nSo GLES 2.0 will continue to be supported but when the hardware can do \nSSBOs its worthwhile to produce the bayer histogram in the first pass \nsince it means you don't have to map and read those pixels again in the CPU.\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 BB43CBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 19 Jun 2026 11:20:16 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A18C5656D0;\n\tFri, 19 Jun 2026 13:20:15 +0200 (CEST)","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 767F962899\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 19 Jun 2026 13:20:13 +0200 (CEST)","by mail-wm1-x32a.google.com with SMTP id\n\t5b1f17b1804b1-49241a577d8so4239675e9.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 19 Jun 2026 04:20:13 -0700 (PDT)","from [192.168.0.101] ([109.76.153.1])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-4923fd0e21csm95540195e9.9.2026.06.19.04.20.11\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tFri, 19 Jun 2026 04:20:11 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"To8j7WEk\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1781868013; x=1782472813;\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=8emE6eUdT2yQtWDZd3hDfcExxf4OQLMCKgBT21HKWTk=;\n\tb=To8j7WEk36MJTbiJwkLKjV2Qm6q62Ug9Jbpg/yocdXK4zjMVOKuwAR2A729X1sbJQc\n\tUA/CerBIStVfwnLd07uXcV0xMyJAIU8QezMCM6vo+UuOUUBeFzbCz+lADozAyPYwH8Ly\n\tfeUV1j89OnuWL8GcpHoMtsLXiQddqsrFyT1kYrhn6VDpFFE7z2Z6kVAU9sHGLJU045UM\n\tIUwQUXy74NtZw5+/MrqqZQ4qGePAEY/pkzMEaXupz5oFr8AV4RpH91oGf3a/gbHat/mm\n\tfZGXGvwCmaQiAiX03GEE9fomtme62oj+l1pbR/eVuh9JLRo/ocTEkr4+Htg3y9R5oClK\n\tlMEQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1781868013; x=1782472813;\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=8emE6eUdT2yQtWDZd3hDfcExxf4OQLMCKgBT21HKWTk=;\n\tb=CI0MoHXqJJi771KsOT7OdbEnKzcpwcBcEGccnxw0RwKbRx+7cGmggcueN2JTITgyEM\n\tTffZoXXC13Lq8ZHNdEVpj5OmvnyYWm6ia5/W5K8NvWXtqTTW1kHdM67Yuou6l49YXz4+\n\tIn4wMxRYQGtXZRIm5F09QqmYH+pLszCHvd6ww2bLYiqKGbDPjVcbwD0k71ypXobYLbXS\n\tkIZUlF8UVflVjq+TgfAARL2a3BfaS+JfOp9N6e/OiZAF3lv261oYt8BFhEC0Pv7wKyCJ\n\t7k3HanuJSz8nQ2HLBkmV+GnDEIc6qzWgCuMbza/hnqIhSaKQHlQQgzTo2TQhXBlB/qnN\n\tthDQ==","X-Gm-Message-State":"AOJu0YyaiUm7+6K2DNklN3gq1XrZxXQGIB7JyWpxV1pT5dV/8l/rtkOS\n\tTGjuw8Fx9m4uINY7EqkYcpf14mX5pvH/EuTFUUL7IprKjMHzAEouE84cva2icAd8izY=","X-Gm-Gg":"AfdE7cmGsrxz11go4cjO4QIaJm/Amnm1zxgOI1SM0W8ZjvRyQmgLgKlPJhKlN4LEh4c\n\tIfaU5spQ9/GaUPOKy1ddAJAQIHtaoqPtiTpuxDip06vD3+kcOjn3yuegLiCKvKM0LQ4ihTXdeP5\n\tqJy8yEn12i1IG4wd7olGa2pNBpg+EGDWm4XkzOXoxKaRpdPT1hfuKhLwF0n6xjMNbfe6PaYhOwe\n\tGSE6AX8UYtRevVRCRjxR0F0kJS/h5CWt6IivX1po00ZrgksOrRAoWqmmCpkAi7d59QI1aZUZAJu\n\tOcFlpvv7BY8I8ENMxV/kfB3vVI7uEbFLESnsEnZEsP3w7nRwT+Mj+LtuXFYH2zq9WVZ3LT7HUb4\n\tFK2FwV4am2XZ2cSYN48OliRlqMpFP8vAG256V7C8eatBv34BZ6TBvafIU3QJPbIxd/rGeqoFSkD\n\tRWKXyFU/tmJQjmbxfkY/iPIVU=","X-Received":"by 2002:a05:600c:5289:b0:490:3d62:f5e1 with SMTP id\n\t5b1f17b1804b1-49240e81ac2mr48701585e9.22.1781868012176; \n\tFri, 19 Jun 2026 04:20:12 -0700 (PDT)","Message-ID":"<0b3af0c2-2ae2-492d-904d-d7779caefce1@linaro.org>","Date":"Fri, 19 Jun 2026 12:20:10 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","To":"Pavel Machek <pavel@ucw.cz>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20260618122245.946138-1-bryan.odonoghue@linaro.org>\n\t<ajUG2G-Aum5aDSN4@ucw.cz>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<ajUG2G-Aum5aDSN4@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":39274,"web_url":"https://patchwork.libcamera.org/comment/39274/","msgid":"<85jyrqa546.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2026-06-22T16:53:45","subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Hi Bryan,\n\nthank you for this work.\n\nBryan O'Donoghue <bryan.odonoghue@linaro.org> writes:\n\n> Greetings.\n>\n> This series implements multli-pass gpuisp as a two phase thing.\n>\n> - Some initial housekeeping to make the naming more logical\n>   ShaderPass et al.\n>\n> - Dragging the existing implementation through a progressive change\n>   set.\n>\n> - Adding in shaders to \"normalise\" i.e. to take either a packed or unpacked\n>   CSI2 pixel stream - apply BLC to it and output a standard GL16F frame.\n>\n> - This allows us to dispense with having two demosiac shaders and to use\n>   the logic from the exisitng unpacked demosiac for all streams.\n>\n>   This is actually a nice change for the packed case as the unpacked\n>   algorithm is slightly better.\n>\n> - Some benchmarking added to the GpuIspShaderPass shows that the\n>   two shaders on a reference from costing 20ms consume about 5.5ms.\n>\n> - In that light some caching is done at the end of the series to improve\n>   the current throughput.\n>\n>   On the slower system I tested the series on the before case averages out\n>   at about 22ms per frame.\n>\n>   Post this series we get between 18ms and 20ms. I'd call that a 10-15%\n>   win.\n>\n>   On the slow system rb5-sm8250 the shaders are about 5.5ms of runtime. On\n>   the fast hamoa-x1e system the whole process is about 6ms\n>\n> - Not tested\n>   Unpacked CSI2 input - I don't have easy access to this input right now\n\nI can test it but, after fixing a few minor compilation errors, I get\nthe following error on start:\n\nERROR eGL egl.cpp:711 cannot find a matched output for input textureOut\nERROR GpuShaderPass gpu_pipeline_shader_pass.cpp:178 Linking program fail\n\n>   DMABUF input caching - none of my hardware supports\n>\n> - The next steps for this series are:\n>\n>   - Converting the BLC normalise phase to a compute shader\n>   - Having the BLC normalise phase produce an additional SSBO which\n>     is the histogram of th bayer input.\n>   - Using that fact to no-longer run CPU side bayer stats including\n>     not having to map the buffer in the CPU.\n>   - Emitting the input buffer after the BLC shader completes.\n>     Possible only when generating stats in GPU.\n>   - The CPU stats on the slow system I'm targetting consume about 4.5ms\n>     of the original 20ms.\n>     Done right the additional time in the shader should be low though\n>     what syncing around the SSBO to subsequently use the buffer may be\n>     a gotcha.\n>   - Since \"we are where we are\" on fencing and glFinish() costs about\n>     8 ms in this reference slow case - reaping 4.5 additional ms seems\n>     like the next most logical thing to try to attack.\n>\n>     Caveated on the fact this series is too large and messy right now :)\n>\n>   - Fencing/Deferred fencing.\n>     Right now libcamera as Nicolas pointed out on IRC, doesn't require\n>     framebuffer recipients to dma-fence.\n>\n>     This means we need to fence in libcamera.\n>\n>     - Would the dma-buf ioctl for the output framebuffer produce\n>       better synchronous wait times than glFinish() and if so\n>       could we really trust the result. Probably no and yes I'd guess.\n>\n>     - Could we use egl fencing to achieve better wait-times.\n>       No almost certainly not glFinish() is doing a real thing here\n>       ensuring the GPU is finished.\n>\n>     - Could we do an asychronous wait - doing a fenceKHR at the top\n>       of processGPU() for the previous frame ?\n>       This would let the CPU do productive work while the GPU completes.\n>\n>     - Finally can we \"just\" require users to dma-fence the framebuffer.\n>\n>     - Other permutations on this theme are possible.\n>\n>   - Adding additional passes\n>     We would like to have shaders and objects that are \"composable\" so that\n>     for example you could run a GPU based noise filter on any frame.\n>\n>     This means having more granular GPUISP support is desirable.\n>\n>     Since the time spent moving from one shader to the other appears quite\n>     low and not where we are burning time - a more granular number of passes\n>     at the moment seems achievable.\n>\n> Bryan O'Donoghue (30):\n>   libcamera: software_isp: Rename Bayer classes to SoftwareIspPipeline\n>   libcamera: software_isp: gpu: Change the name of eglImageBayerOut_ to\n>     eglImageRGBAOut_\n>   libcamera: software_isp: gpu: rename debayerGPU to processGPU\n>   libcamera: software_isp: egl: Add new helper attachTextureToFBO\n>   libcamera: software_isp: gpu_pipeline_shader_pass: Add base class\n>     GpuPipelineShaderPass\n>   libcamera: software_isp: gpu_pipeline_shader_pass: Add\n>     GpuPipelineShaderPassDemosiac\n>   libcamera: software_isp: gpu: Switch to using GpuIspShaderPassDemosiac\n>   libcamera: software_isp: gpu: Drop unused method definitions\n>   libcamera: software_isp: gpu: Make Rectangle window_ a local variable\n>     in configure()\n>   libcamera: software_isp: gpu_pipeline_shader_pass: Move common\n>     attribute and uniform variables to base shader class\n>   libcamera: software_isp: gpu_pipeline_shader_pass: Move common shader\n>     selection logic into base class in new method initShaders()\n>   libcamera: shaders: Split packed and unpacked demosiac up\n>   libcamera: shaders: bayer_glr16_to_rgba.frag: Use bilinear filtering\n>   libcamera: software_isp: gpu: Add GpuIspShaderPassBlcNormalise\n>   libcamera: software_isp: egl: Extend eGL::createTexture2D to\n>     understand floats\n>   libcamera: software_isp: egl: Move to GLES 3.0\n>   libcamera: software_isp: egl: Rename createTexture2D to\n>     createInputTexture2D\n>   libcamera: software_isp: egl: Use Texture Unit 3 for final output\n>     texture\n>   libcamera: software_isp: egl: Add Ping/Pong buffers with start/stop\n>     bindings only\n>   libcamera: software_isp: gpu: Include GpuIspShaderPassBlcNormalise in\n>     init sequence\n>   libcamera: software_isp: egl: Add createOutputTexture2D\n>   libcamera: software_isp: gpu: Swtich to two pass logic\n>   libcamera: software_isp: egl: Add method lookups for GPU benchmark\n>     rountines\n>   libcamera: software_isp: egl: Add eglBenchMark\n>   libcamera: software_isp: gpu_pipeline_shader_pass: Add shader DEBUG\n>     time logging\n>   libcamera: software_isp: gpu: Do a synchronous BenchMark print after\n>     syncOutput\n>   libcamera: software_isp: egl: Add updateInputTexture2D\n>   libcamera: software_isp: gpu: Switch to using glTexSubImage2D on slow\n>     path upload\n>   libcamera: software_isp: gpu: Cache output framebuffers, only recreate\n>     when necessary\n>   libcamera: software_isp: gpu: Cache input framebuffers, only do\n>     texture creation when required\n>\n>  include/libcamera/internal/egl.h              |  65 +-\n>  .../internal/software_isp/software_isp.h      |   4 +-\n>  src/libcamera/egl.cpp                         | 131 +++-\n>  .../bayer_1x_packed_to_blc_glr16f.frag        |  97 +++\n>  .../shaders/bayer_glr16_to_rgba.frag          | 155 ++++\n>  .../shaders/bayer_unpacked_to_blc_glr16f.frag |  46 ++\n>  src/libcamera/shaders/meson.build             |   3 +\n>  src/libcamera/software_isp/debayer_egl.cpp    | 671 ------------------\n>  .../software_isp/gpu_pipeline_shader_pass.cpp | 196 +++++\n>  .../software_isp/gpu_pipeline_shader_pass.h   | 109 +++\n>  ...gpu_pipeline_shader_pass_blc_normalise.cpp | 270 +++++++\n>  .../gpu_pipeline_shader_pass_blc_normalise.h  |  55 ++\n>  .../gpu_pipeline_shader_pass_demosiac.cpp     | 239 +++++++\n>  .../gpu_pipeline_shader_pass_demosiac.h       |  60 ++\n>  src/libcamera/software_isp/meson.build        |   9 +-\n>  src/libcamera/software_isp/software_isp.cpp   |  60 +-\n>  ...{debayer.cpp => software_isp_pipeline.cpp} |  77 +-\n>  .../{debayer.h => software_isp_pipeline.h}    |   8 +-\n>  ..._cpu.cpp => software_isp_pipeline_cpu.cpp} | 160 ++---\n>  ...ayer_cpu.h => software_isp_pipeline_cpu.h} |  10 +-\n>  .../software_isp_pipeline_gpu.cpp             | 433 +++++++++++\n>  ...ayer_egl.h => software_isp_pipeline_gpu.h} |  61 +-\n>  22 files changed, 2023 insertions(+), 896 deletions(-)\n>  create mode 100644 src/libcamera/shaders/bayer_1x_packed_to_blc_glr16f.frag\n>  create mode 100644 src/libcamera/shaders/bayer_glr16_to_rgba.frag\n>  create mode 100644 src/libcamera/shaders/bayer_unpacked_to_blc_glr16f.frag\n>  delete mode 100644 src/libcamera/software_isp/debayer_egl.cpp\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass.cpp\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass.h\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass_blc_normalise.cpp\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass_blc_normalise.h\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass_demosiac.cpp\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass_demosiac.h\n>  rename src/libcamera/software_isp/{debayer.cpp => software_isp_pipeline.cpp} (73%)\n>  rename src/libcamera/software_isp/{debayer.h => software_isp_pipeline.h} (93%)\n>  rename src/libcamera/software_isp/{debayer_cpu.cpp => software_isp_pipeline_cpu.cpp} (84%)\n>  rename src/libcamera/software_isp/{debayer_cpu.h => software_isp_pipeline_cpu.h} (95%)\n>  create mode 100644 src/libcamera/software_isp/software_isp_pipeline_gpu.cpp\n>  rename src/libcamera/software_isp/{debayer_egl.h => software_isp_pipeline_gpu.h} (63%)","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 77FACC3302\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Jun 2026 16:53:54 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5D6A66574A;\n\tMon, 22 Jun 2026 18:53:53 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9C032656D3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jun 2026 18:53:51 +0200 (CEST)","from mail-wr1-f70.google.com (mail-wr1-f70.google.com\n\t[209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-680-jykx_G_pO1Ow2ba9rzTrJQ-1; Mon, 22 Jun 2026 12:53:49 -0400","by mail-wr1-f70.google.com with SMTP id\n\tffacd0b85a97d-460129ef947so3188489f8f.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jun 2026 09:53:48 -0700 (PDT)","from mzamazal-thinkpadp1gen7.tpbc.csb\n\t(ip-77-48-47-4.net.vodafone.cz. [77.48.47.4])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-46667221da1sm27427646f8f.36.2026.06.22.09.53.46\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 22 Jun 2026 09:53:46 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"csFKtVGJ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1782147230;\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=AsbHxvlXqdo8w6LAv85Hv8Tu4mZZOk5dTtX4NhGH8gg=;\n\tb=csFKtVGJ9hm1BBFXDHJlF0zf5BA1HBMTPrk/U4cIgehsoDoo3E1eyD0WQFQtpNrJFwKYT+\n\tL5aGSbcujshg6bn561x4vzTQ6ApRNGGNVXU+ZjRBLcqry5aqM+RhioSWA4isAxKpsxBCPL\n\tmN4Xq9k1oCshCBNIDZ8TCYsBUsY2N8A=","X-MC-Unique":"jykx_G_pO1Ow2ba9rzTrJQ-1","X-Mimecast-MFC-AGG-ID":"jykx_G_pO1Ow2ba9rzTrJQ_1782147228","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1782147228; x=1782752028;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject\n\t:date:message-id:reply-to;\n\tbh=AsbHxvlXqdo8w6LAv85Hv8Tu4mZZOk5dTtX4NhGH8gg=;\n\tb=EIooX2+m8ySJBhac6wccPLeOLjLnKFO2ijuo1a2nC2aGM+6GNRo5FtlnBAiyGabTnc\n\tfbYL46OOOWK5+QZKPxti33mooXqKSIeNdOIVggp2eSiq2RqmwPeTlKW78tNO1282NDkG\n\tRfqJONkLHAHg4a+EgVP7ReXZirAH8P9nJoi4haUKNxUSpSngjadjtOMEQ4sv6y0euOpR\n\tVv47Z+xpyYcU/rtVDIx6YxWQvSIeXFmP5KJw0T5Ccp5Zno5XKOsfFj8X8BsHExJOmWhl\n\t3u+C4FVf4XQSLzTcLQTa2/4CsuA9dEiAW0C9NuOZauYXSUS380uXX9CURebH8rRqStaD\n\tsE2Q==","X-Gm-Message-State":"AOJu0YzgtvFA4204DTDscvLtOLqA6QWel8OP3q7sNlSiygQLKOC1JV4y\n\tcsdUPZ5rwwefQPKZ1lV5945x7Q8HB5be+k7P8pJ9ewKtxs4+iJ/s7R2vVRwg5ibzy88B5/BRFvH\n\tebbYK/15yWFbeBQcLlPlEuXYzuv3B2BL/rjW2efGJJOqQVLbTx/gxNull28dttV7F5POPp3heEo\n\te2yNSngSU=","X-Gm-Gg":"AfdE7clU+Qzm2eYHdf2sexuPoSGwO2CIH38i9rA0IQ4mfyZVeFqGu8uhw2WsoY123vm\n\trOikmRWLLpHsWerXIyjqz1ITkBgXXyDTq/lxTi+ERJHha+DCfsWssitfazDFsWnjAXoat6Lah5P\n\tOz4APM2IfxPucxj/vsOWsbEKUs5om8h+46zDoCLaqTTlZaP4CLcVAUH4/oeJNazUoGHWYNgAFHm\n\trkcvYwDD4T/0xXuUqaTZp+sHukXd24eElNoc3xVZBg8UhBWVtvT84wweohnnYUgvPqELxorF6dd\n\tozV4+tTCGgHhKRvd8NPu7fuZe9obyabw12v69EPLJQ5sMq/KKmyLbNVrUCHI62TG3wovZLX84AB\n\tJeYF1uD/t0s95HJadoKxDboHMtHUUYCXVJrDTC79c9f7VpuVolJRNpsGPBA1Pik+3","X-Received":["by 2002:a5d:51c6:0:b0:460:3234:293f with SMTP id\n\tffacd0b85a97d-465097863f5mr20422330f8f.42.1782147227832; \n\tMon, 22 Jun 2026 09:53:47 -0700 (PDT)","by 2002:a5d:51c6:0:b0:460:3234:293f with SMTP id\n\tffacd0b85a97d-465097863f5mr20422301f8f.42.1782147227344; \n\tMon, 22 Jun 2026 09:53:47 -0700 (PDT)"],"From":"Milan Zamazal <mzamazal@redhat.com>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org,  pavel@ucw.cz","Subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","In-Reply-To":"<20260618122245.946138-1-bryan.odonoghue@linaro.org> (Bryan\n\tO'Donoghue's message of \"Thu, 18 Jun 2026 13:22:13 +0100\")","References":"<20260618122245.946138-1-bryan.odonoghue@linaro.org>","Date":"Mon, 22 Jun 2026 18:53:45 +0200","Message-ID":"<85jyrqa546.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"2te6W4NohDC4at49Zl2FJeVAAWrPnOL76LUdNvffreU_1782147228","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain","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":39326,"web_url":"https://patchwork.libcamera.org/comment/39326/","msgid":"<6b46a053-35e0-4efc-bc71-7cc6a44cce35@collabora.com>","date":"2026-06-23T13:56:41","subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","submitter":{"id":140,"url":"https://patchwork.libcamera.org/api/people/140/","name":"Robert Mader","email":"robert.mader@collabora.com"},"content":"On 19.06.26 11:07, Pavel Machek wrote:\n> Hi!\n>\n>> - Adding in shaders to \"normalise\" i.e. to take either a packed or unpacked\n>>    CSI2 pixel stream - apply BLC to it and output a standard GL16F frame.\n> Floats, that't outside of GLES2, AFAICT.\n>\n>> Bryan O'Donoghue (30):\n> ...\n>>    libcamera: software_isp: egl: Move to GLES 3.0\n> This is unfortunate. If you want reasonably high-quality camera,\n> Librem 5 is currently best option, and Librem 5 is GLES 2. It is\n> currently my target for autofocus development.\n>\n> Best regards,\n> \t\t\t\t\t\t\tPavel\nGLES 3.0 support for the Librem5 is almost there btw. and most likely \nthis should already work on latest Mesa main when running with \n`MESA_GLES_VERSION_OVERRIDE=3.0` (need to confirm that / haven't tested \nit yet).","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 3344CC3306\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 23 Jun 2026 13:56:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D5B156585F;\n\tTue, 23 Jun 2026 15:56:54 +0200 (CEST)","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 976B265788\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 23 Jun 2026 15:56:52 +0200 (CEST)","by mx.zohomail.com with SMTPS id 1782223004657509.80362129468483; \n\tTue, 23 Jun 2026 06:56:44 -0700 (PDT)"],"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=\"SnJdk+K8\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1782223008; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=irAfdcuEJUMjUbbAb8DUPufzGFHN1xmomWkVv6aTOhN/p0WoHo9wu82/VVux/CE+jpaFsUE2R5vvZGoCqaZPetJ+VQSoLm/X1d4f+LXY1uix4FN8iB3z6/hbLnxiIXDjPrRv5nqnNbhXZ6gHv1ZpTAZVCman9wyVzdhDHtJo5os=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1782223008;\n\th=Content-Type:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc;\n\tbh=74gJcJk52q+PVNwTbEwUetmIx7kaTzri63r8oKU7dI8=; \n\tb=Uw8IaucQSVbKNQXMDySggHgj7YwG21Fg0jx7mhg9kGfRplBIU75aqyDNh5wpx/qQWQUeg4Ku18cZ9k8b/dP7R4uL3YVBXD43xrZ9j8XpQNEWR6pLbUyuAva3AlW/MGfurIap8OhWpQsB3R6wXh0zBMVtQ2HbIpEqrx5EcPVq+Ac=","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=1782223008;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Content-Type:Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Message-Id:Reply-To:Cc;\n\tbh=74gJcJk52q+PVNwTbEwUetmIx7kaTzri63r8oKU7dI8=;\n\tb=SnJdk+K8AeVQSdN1VrIMyu9oCoIU3YdC49c6wzaN7TCrt56CwNFJhuqvMJNin2FH\n\tBe6Ez3WndxJelTj0I90FqVwrPdYUKvnTB9DFAnGCgKqGAmJchk81zqhkiWN1qa1bc7d\n\tPlmUVBvt1WHnQdtCuTbruc3ylpAihfhZOaDNYyc8=","Content-Type":"multipart/alternative;\n\tboundary=\"------------003MSdH3dGJthb4BgQh5aIg2\"","Message-ID":"<6b46a053-35e0-4efc-bc71-7cc6a44cce35@collabora.com>","Date":"Tue, 23 Jun 2026 15:56:41 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","To":"libcamera-devel@lists.libcamera.org","References":"<20260618122245.946138-1-bryan.odonoghue@linaro.org>\n\t<ajUG2G-Aum5aDSN4@ucw.cz>","Content-Language":"en-US, de-DE, en-GB","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<ajUG2G-Aum5aDSN4@ucw.cz>","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":39334,"web_url":"https://patchwork.libcamera.org/comment/39334/","msgid":"<d6db62c1-029b-40a9-9466-5d03758b2a12@collabora.com>","date":"2026-06-23T16:29:10","subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","submitter":{"id":140,"url":"https://patchwork.libcamera.org/api/people/140/","name":"Robert Mader","email":"robert.mader@collabora.com"},"content":"On 23.06.26 15:56, Robert Mader wrote:\n> On 19.06.26 11:07, Pavel Machek wrote:\n>> Hi!\n>>\n>>> - Adding in shaders to \"normalise\" i.e. to take either a packed or unpacked\n>>>    CSI2 pixel stream - apply BLC to it and output a standard GL16F frame.\n>> Floats, that't outside of GLES2, AFAICT.\n>>\n>>> Bryan O'Donoghue (30):\n>> ...\n>>>    libcamera: software_isp: egl: Move to GLES 3.0\n>> This is unfortunate. If you want reasonably high-quality camera,\n>> Librem 5 is currently best option, and Librem 5 is GLES 2. It is\n>> currently my target for autofocus development.\n>>\n>> Best regards,\n>> \t\t\t\t\t\t\tPavel\n> GLES 3.0 support for the Librem5 is almost there btw. and most likely \n> this should already work on latest Mesa main when running with \n> `MESA_GLES_VERSION_OVERRIDE=3.0` (need to confirm that / haven't \n> tested it yet). \nP.S.: if I'm not mistaken we just need GL_OES_texture_float and not \nnecessarily GLES 3.0 - and support for the following on the Librem5 \nlanded in \nhttps://gitlab.freedesktop.org/mesa/mesa/-/commit/47a2f9e420c623aaf6d8baad133f7e507b20c6c5","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 971A0C3302\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 23 Jun 2026 16:29:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A5B53657A3;\n\tTue, 23 Jun 2026 18:29:19 +0200 (CEST)","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 F2E2065792\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 23 Jun 2026 18:29:17 +0200 (CEST)","by mx.zohomail.com with SMTPS id 1782232153145508.2195572255516;\n\tTue, 23 Jun 2026 09:29:13 -0700 (PDT)"],"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=\"VNMmkDlB\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1782232155; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=OgPGUDUq66IFOxoeCdpUwVfmhAiZn18ncVHqVbVe63PGR17h3QiCc6SUGamPS792sFAlzbj2fsrHJmwkv2mVDfzscDhqOwnfDmFR4e6Y2FrVYoxACH9BWsHQFZj5cCVX4ya8p8hRbETrOK5gg2QB+EoOh2/y1cCRCI5QPTpxvn8=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1782232155;\n\th=Content-Type:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc;\n\tbh=JrLzUYCilgJDRs0V8mkjHu5XnlvNv0GNf62HRWV6VxU=; \n\tb=C+9JCjhXNr61VJxTFiBqPouAxBUv6vfvp5Z884DLLTIj2jNB3fO7+doT0kUMa91wG1lWdXvGMxA+fA4vfs5gfslKGXg8IwCXT/1izhkceUaN2iO47/n74gD4gXlwitdpUo7vVl36tVqfskZRdgwShWV4UPS3Zd1rzxf1yim3tC0=","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=1782232155;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Content-Type:Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Message-Id:Reply-To:Cc;\n\tbh=JrLzUYCilgJDRs0V8mkjHu5XnlvNv0GNf62HRWV6VxU=;\n\tb=VNMmkDlBAQu9F9uynlvX9fnbe6hR9KmwUjM+hsVNvzWpl2PG2lx+e2eio/mZusyk\n\tDe4V7sAwqhEDKOTs/p2F2wUSYdKDmUh8QFuL1doD1wpovq5nxXd2XqJk3+sLlDGNSnd\n\tfampRSfKF9kxc6r34u2DOeGHufI6/M1mJE0uB25o=","Content-Type":"multipart/alternative;\n\tboundary=\"------------E7MyataaD0akYyHq06AwU0Ob\"","Message-ID":"<d6db62c1-029b-40a9-9466-5d03758b2a12@collabora.com>","Date":"Tue, 23 Jun 2026 18:29:10 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","To":"libcamera-devel@lists.libcamera.org","References":"<20260618122245.946138-1-bryan.odonoghue@linaro.org>\n\t<ajUG2G-Aum5aDSN4@ucw.cz>\n\t<6b46a053-35e0-4efc-bc71-7cc6a44cce35@collabora.com>","Content-Language":"en-US, de-DE, en-GB","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<6b46a053-35e0-4efc-bc71-7cc6a44cce35@collabora.com>","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":39416,"web_url":"https://patchwork.libcamera.org/comment/39416/","msgid":"<85jyrmwgit.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2026-06-25T19:45:30","subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Bryan O'Donoghue <bryan.odonoghue@linaro.org> writes:\n\n> Greetings.\n>\n> This series implements multli-pass gpuisp as a two phase thing.\n>\n> - Some initial housekeeping to make the naming more logical\n>   ShaderPass et al.\n>\n> - Dragging the existing implementation through a progressive change\n>   set.\n>\n> - Adding in shaders to \"normalise\" i.e. to take either a packed or unpacked\n>   CSI2 pixel stream - apply BLC to it and output a standard GL16F frame.\n>\n> - This allows us to dispense with having two demosiac shaders and to use\n>   the logic from the exisitng unpacked demosiac for all streams.\n>\n>   This is actually a nice change for the packed case as the unpacked\n>   algorithm is slightly better.\n>\n> - Some benchmarking added to the GpuIspShaderPass shows that the\n>   two shaders on a reference from costing 20ms consume about 5.5ms.\n>\n> - In that light some caching is done at the end of the series to improve\n>   the current throughput.\n>\n>   On the slower system I tested the series on the before case averages out\n>   at about 22ms per frame.\n>\n>   Post this series we get between 18ms and 20ms. I'd call that a 10-15%\n>   win.\n\nI get a similar speedup in my environment, with unpacked input: from\n~89 ms to ~79 ms per frame.\n\n>   On the slow system rb5-sm8250 the shaders are about 5.5ms of runtime. On\n>   the fast hamoa-x1e system the whole process is about 6ms\n>\n> - Not tested\n>   Unpacked CSI2 input - I don't have easy access to this input right now\n>   DMABUF input caching - none of my hardware supports\n\nAfter applying the fixes I reported on individual patches, it works for\nme.\n\n> - The next steps for this series are:\n>\n>   - Converting the BLC normalise phase to a compute shader\n>   - Having the BLC normalise phase produce an additional SSBO which\n>     is the histogram of th bayer input.\n>   - Using that fact to no-longer run CPU side bayer stats including\n>     not having to map the buffer in the CPU.\n>   - Emitting the input buffer after the BLC shader completes.\n>     Possible only when generating stats in GPU.\n>   - The CPU stats on the slow system I'm targetting consume about 4.5ms\n>     of the original 20ms.\n>     Done right the additional time in the shader should be low though\n>     what syncing around the SSBO to subsequently use the buffer may be\n>     a gotcha.\n>   - Since \"we are where we are\" on fencing and glFinish() costs about\n>     8 ms in this reference slow case - reaping 4.5 additional ms seems\n>     like the next most logical thing to try to attack.\n>\n>     Caveated on the fact this series is too large and messy right now :)\n>\n>   - Fencing/Deferred fencing.\n>     Right now libcamera as Nicolas pointed out on IRC, doesn't require\n>     framebuffer recipients to dma-fence.\n>\n>     This means we need to fence in libcamera.\n>\n>     - Would the dma-buf ioctl for the output framebuffer produce\n>       better synchronous wait times than glFinish() and if so\n>       could we really trust the result. Probably no and yes I'd guess.\n>\n>     - Could we use egl fencing to achieve better wait-times.\n>       No almost certainly not glFinish() is doing a real thing here\n>       ensuring the GPU is finished.\n>\n>     - Could we do an asychronous wait - doing a fenceKHR at the top\n>       of processGPU() for the previous frame ?\n>       This would let the CPU do productive work while the GPU completes.\n>\n>     - Finally can we \"just\" require users to dma-fence the framebuffer.\n>\n>     - Other permutations on this theme are possible.\n>\n>   - Adding additional passes\n>     We would like to have shaders and objects that are \"composable\" so that\n>     for example you could run a GPU based noise filter on any frame.\n>\n>     This means having more granular GPUISP support is desirable.\n>\n>     Since the time spent moving from one shader to the other appears quite\n>     low and not where we are burning time - a more granular number of passes\n>     at the moment seems achievable.\n>\n> Bryan O'Donoghue (30):\n>   libcamera: software_isp: Rename Bayer classes to SoftwareIspPipeline\n>   libcamera: software_isp: gpu: Change the name of eglImageBayerOut_ to\n>     eglImageRGBAOut_\n>   libcamera: software_isp: gpu: rename debayerGPU to processGPU\n>   libcamera: software_isp: egl: Add new helper attachTextureToFBO\n>   libcamera: software_isp: gpu_pipeline_shader_pass: Add base class\n>     GpuPipelineShaderPass\n>   libcamera: software_isp: gpu_pipeline_shader_pass: Add\n>     GpuPipelineShaderPassDemosiac\n>   libcamera: software_isp: gpu: Switch to using GpuIspShaderPassDemosiac\n>   libcamera: software_isp: gpu: Drop unused method definitions\n>   libcamera: software_isp: gpu: Make Rectangle window_ a local variable\n>     in configure()\n>   libcamera: software_isp: gpu_pipeline_shader_pass: Move common\n>     attribute and uniform variables to base shader class\n>   libcamera: software_isp: gpu_pipeline_shader_pass: Move common shader\n>     selection logic into base class in new method initShaders()\n>   libcamera: shaders: Split packed and unpacked demosiac up\n>   libcamera: shaders: bayer_glr16_to_rgba.frag: Use bilinear filtering\n>   libcamera: software_isp: gpu: Add GpuIspShaderPassBlcNormalise\n>   libcamera: software_isp: egl: Extend eGL::createTexture2D to\n>     understand floats\n>   libcamera: software_isp: egl: Move to GLES 3.0\n>   libcamera: software_isp: egl: Rename createTexture2D to\n>     createInputTexture2D\n>   libcamera: software_isp: egl: Use Texture Unit 3 for final output\n>     texture\n>   libcamera: software_isp: egl: Add Ping/Pong buffers with start/stop\n>     bindings only\n>   libcamera: software_isp: gpu: Include GpuIspShaderPassBlcNormalise in\n>     init sequence\n>   libcamera: software_isp: egl: Add createOutputTexture2D\n>   libcamera: software_isp: gpu: Swtich to two pass logic\n>   libcamera: software_isp: egl: Add method lookups for GPU benchmark\n>     rountines\n>   libcamera: software_isp: egl: Add eglBenchMark\n>   libcamera: software_isp: gpu_pipeline_shader_pass: Add shader DEBUG\n>     time logging\n>   libcamera: software_isp: gpu: Do a synchronous BenchMark print after\n>     syncOutput\n>   libcamera: software_isp: egl: Add updateInputTexture2D\n>   libcamera: software_isp: gpu: Switch to using glTexSubImage2D on slow\n>     path upload\n>   libcamera: software_isp: gpu: Cache output framebuffers, only recreate\n>     when necessary\n>   libcamera: software_isp: gpu: Cache input framebuffers, only do\n>     texture creation when required\n>\n>  include/libcamera/internal/egl.h              |  65 +-\n>  .../internal/software_isp/software_isp.h      |   4 +-\n>  src/libcamera/egl.cpp                         | 131 +++-\n>  .../bayer_1x_packed_to_blc_glr16f.frag        |  97 +++\n>  .../shaders/bayer_glr16_to_rgba.frag          | 155 ++++\n>  .../shaders/bayer_unpacked_to_blc_glr16f.frag |  46 ++\n>  src/libcamera/shaders/meson.build             |   3 +\n>  src/libcamera/software_isp/debayer_egl.cpp    | 671 ------------------\n>  .../software_isp/gpu_pipeline_shader_pass.cpp | 196 +++++\n>  .../software_isp/gpu_pipeline_shader_pass.h   | 109 +++\n>  ...gpu_pipeline_shader_pass_blc_normalise.cpp | 270 +++++++\n>  .../gpu_pipeline_shader_pass_blc_normalise.h  |  55 ++\n>  .../gpu_pipeline_shader_pass_demosiac.cpp     | 239 +++++++\n>  .../gpu_pipeline_shader_pass_demosiac.h       |  60 ++\n>  src/libcamera/software_isp/meson.build        |   9 +-\n>  src/libcamera/software_isp/software_isp.cpp   |  60 +-\n>  ...{debayer.cpp => software_isp_pipeline.cpp} |  77 +-\n>  .../{debayer.h => software_isp_pipeline.h}    |   8 +-\n>  ..._cpu.cpp => software_isp_pipeline_cpu.cpp} | 160 ++---\n>  ...ayer_cpu.h => software_isp_pipeline_cpu.h} |  10 +-\n>  .../software_isp_pipeline_gpu.cpp             | 433 +++++++++++\n>  ...ayer_egl.h => software_isp_pipeline_gpu.h} |  61 +-\n>  22 files changed, 2023 insertions(+), 896 deletions(-)\n>  create mode 100644 src/libcamera/shaders/bayer_1x_packed_to_blc_glr16f.frag\n>  create mode 100644 src/libcamera/shaders/bayer_glr16_to_rgba.frag\n>  create mode 100644 src/libcamera/shaders/bayer_unpacked_to_blc_glr16f.frag\n>  delete mode 100644 src/libcamera/software_isp/debayer_egl.cpp\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass.cpp\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass.h\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass_blc_normalise.cpp\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass_blc_normalise.h\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass_demosiac.cpp\n>  create mode 100644 src/libcamera/software_isp/gpu_pipeline_shader_pass_demosiac.h\n>  rename src/libcamera/software_isp/{debayer.cpp => software_isp_pipeline.cpp} (73%)\n>  rename src/libcamera/software_isp/{debayer.h => software_isp_pipeline.h} (93%)\n>  rename src/libcamera/software_isp/{debayer_cpu.cpp => software_isp_pipeline_cpu.cpp} (84%)\n>  rename src/libcamera/software_isp/{debayer_cpu.h => software_isp_pipeline_cpu.h} (95%)\n>  create mode 100644 src/libcamera/software_isp/software_isp_pipeline_gpu.cpp\n>  rename src/libcamera/software_isp/{debayer_egl.h => software_isp_pipeline_gpu.h} (63%)","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 F16DFC3302\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 25 Jun 2026 19:45:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2657A658CD;\n\tThu, 25 Jun 2026 21:45:42 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 079FC623CB\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Jun 2026 21:45:39 +0200 (CEST)","from mail-wm1-f71.google.com (mail-wm1-f71.google.com\n\t[209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-18-gxqw4_knO8iTpy1uoecLCQ-1; Thu, 25 Jun 2026 15:45:35 -0400","by mail-wm1-f71.google.com with SMTP id\n\t5b1f17b1804b1-490a767b782so1550125e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Jun 2026 12:45:34 -0700 (PDT)","from mzamazal-thinkpadp1gen7.tpbc.csb\n\t(ip-77-48-47-4.net.vodafone.cz. [77.48.47.4])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-492690a1a85sm36104625e9.15.2026.06.25.12.45.31\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 25 Jun 2026 12:45:31 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"L9mPA3Ro\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1782416739;\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=+lrnt+LarkaYSCDyEMVizsgPkk77XgKoaNtqJ3r0Vl8=;\n\tb=L9mPA3RoTTNvhpm0vbcEH8IrSsvsaiM+ZFvlNhLoqKBda4SSIQWdM1HNpfzEMAgSwJF70r\n\tAa3W5TJ5XgVZwQzklsqSeU/uinzI4qRO8JTRmLEkwLmP1Sxe97Z7m45JgZ49eJCBkbvYfW\n\tF+M2mifuCb1H7cACAlhkjQrbfH7Y3wk=","X-MC-Unique":"gxqw4_knO8iTpy1uoecLCQ-1","X-Mimecast-MFC-AGG-ID":"gxqw4_knO8iTpy1uoecLCQ_1782416734","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1782416734; x=1783021534;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject\n\t:date:message-id:reply-to;\n\tbh=+lrnt+LarkaYSCDyEMVizsgPkk77XgKoaNtqJ3r0Vl8=;\n\tb=REPMHkwudt0ZifgLVu31FobD/Tt999Tz8UoNjJQXykWTnzCrL6vxiZvw5ud0f3CBIN\n\t/7PJr0r/o1PbRFFx9bCU3nobyUZZyS2DE865jn9l43Zs7MPwdphzc8oD3eoZBn2B2Rj9\n\tNK/sM18BwxeTbR9dm2P5ELnNEuJWFEwVhyWZQrhP1FuGOcBfbzFM8fCO9u2bl1iUjJ/0\n\tl8GvnhjjbApP9ZX+DNtdICLGE6qtJgVOZ6G+lO4W0O4CthzY/BTmXJVGebfilBPKNUXI\n\t0xuhHdEi4DPf4f7etazX+GlZpePEde07z8siGcIbAy9exz9DE1enOpC9nNmQUL63yemL\n\t0vjQ==","X-Gm-Message-State":"AOJu0YxMjvkX0D4kjtQn53R0eRjMifpohLaYFyWWr+GhmNbLwX/1vSyq\n\tb9reA8WkqUs1BWn1psTyFquVOSIJKFv2kzBx/ziU13WOzVsGvd3uj5QMSBPR9hEfTVHIVqXDU0d\n\t/XM1xrMZab+jLb1Xn3f+K/sw6JFZHwUWgAqJSN3/7jsDdwlLpyp/bHy/p8poNQpHg4SvZq/GYYu\n\tyTzkI70lE=","X-Gm-Gg":"AfdE7cm13X+tdzHoeNoZp6tbdZt2YODxRbmtj6njEurjQrear8euNU4UNIHBiKn3bsq\n\tcfSv477g2X0VFrpVo/jECaEEQcavqQfhkgqWjEOge2oQou2X2Pdct6YvgeK9oC8rr+cozgccuqd\n\tRNAv4r/Eed98cpbxuyaY6faxYcrne4BfgXjmKFYiO5q6dVQTuHQGQbs7YgZ+U9hGRpmoSLWByvT\n\tzNf8DMoLiIi4afQiUuSMQIaCRziakLxjSzna+6JKln55dZbjAvyqR59fr9/pz42aaGNlAtZxuHd\n\tw+Y9X06s/zCH48Mwgrv7swYwDzcsZkmJZrU5LQeAymRc1EHBHLAnszICMBiw0h3J/wk3zwoTzfJ\n\tQpZ6lKuBG2UCywQaZXHag0A3r7CKEk/CGyUtboCw8WOka1ZBImHQwBu7J8R4ytfPN","X-Received":["by 2002:a05:600c:4e04:b0:48f:d5b8:5b07 with SMTP id\n\t5b1f17b1804b1-49266880f6cmr55197405e9.20.1782416733869; \n\tThu, 25 Jun 2026 12:45:33 -0700 (PDT)","by 2002:a05:600c:4e04:b0:48f:d5b8:5b07 with SMTP id\n\t5b1f17b1804b1-49266880f6cmr55197045e9.20.1782416733421; \n\tThu, 25 Jun 2026 12:45:33 -0700 (PDT)"],"From":"Milan Zamazal <mzamazal@redhat.com>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org,  pavel@ucw.cz","Subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","In-Reply-To":"<20260618122245.946138-1-bryan.odonoghue@linaro.org> (Bryan\n\tO'Donoghue's message of \"Thu, 18 Jun 2026 13:22:13 +0100\")","References":"<20260618122245.946138-1-bryan.odonoghue@linaro.org>","Date":"Thu, 25 Jun 2026 21:45:30 +0200","Message-ID":"<85jyrmwgit.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"b4S_YuSNt2STvO_Ui_U5gXqv84_eGWEkoLOUvlaCJJ8_1782416734","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain","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":39418,"web_url":"https://patchwork.libcamera.org/comment/39418/","msgid":"<08a27708-6f65-4999-9b17-6c8a92a4341e@linaro.org>","date":"2026-06-25T22:08:32","subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 25/06/2026 20:45, Milan Zamazal wrote:\n>>    Post this series we get between 18ms and 20ms. I'd call that a 10-15%\n>>    win.\n> I get a similar speedup in my environment, with unpacked input: from\n> ~89 ms to ~79 ms per frame.\n\nCool, now all we have to do is divide the number by 10 and we're in \nbusiness.\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 C8B1AC3261\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 25 Jun 2026 22:08:35 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 77AEA658CB;\n\tFri, 26 Jun 2026 00:08:35 +0200 (CEST)","from mail-wm1-x329.google.com (mail-wm1-x329.google.com\n\t[IPv6:2a00:1450:4864:20::329])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DCA3665718\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Jun 2026 00:08:33 +0200 (CEST)","by mail-wm1-x329.google.com with SMTP id\n\t5b1f17b1804b1-4922244f7c7so3079925e9.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Jun 2026 15:08:33 -0700 (PDT)","from [192.168.0.101] ([109.76.33.201])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-492691f60bcsm26428595e9.1.2026.06.25.15.08.32\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tThu, 25 Jun 2026 15:08:32 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"c0+MRqND\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1782425313; x=1783030113;\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=ptxSr1qFCMlNUvy5O9rP5m4gjOgXU8Sk9LWJClysUwk=;\n\tb=c0+MRqND757vIJlyS3e3sXkQYNs1VWdKZBZFbdj+mEVgOZPozr73eggJkabwVVTAOB\n\ta8Fm4y34dhH66r7vikn2Qt1a4zG86rRyuXbDEspgFVrTl5lwqEQul5Ai3qCscOC53iGr\n\th8hxD0IZi5yRIxSgDD4oUuVvUImn18mUdpioZpCP30bRY6rMGoFyMPbqkL+v6taD18X/\n\tXiXsFOjCWT60UtK4QapeiPayxwsVSVpJJG8+ANDi8uFYcgcPmW5EuR03MWg09W+wpHWD\n\tXjQoWWpjEE3RYEVodhLEZ2CmzXnvgrzpcx3LfS5+BZBOBVAmOmLANc4Svh9PiT41Rnm3\n\t+Sig==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1782425313; x=1783030113;\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=ptxSr1qFCMlNUvy5O9rP5m4gjOgXU8Sk9LWJClysUwk=;\n\tb=ZW3r0/EaDb/WhmxwiBDros/TquDOG/ll0WBEgg11qNwTeWdnRPIkfXgaeMfZ3XnY3I\n\tmH0lo8AVcsjuK2/1M5dikAJ9loRxmOP6LpxIPhEJyrUPT4HZaN2/9HmAxmWyaqRnyxRV\n\t/g2VieciftFB6P1wDKUANCoiu+iXbv1g2jYAbKU8RvPqenkjwq33DbRJxP/T9BLZKNi+\n\tJjie8E9FZd1qk26FPIe8n/V7uagHzrmA/PPn2KiK5q6HkzaKABzbQX75ykJd1n3KPW3N\n\t/jU+a7SEFgXOPx22OdYOJZHispRzQnz5eCi1MLwEQYmsOkmrX5h1jMxj2l7BKKQgYrja\n\tcnoQ==","X-Gm-Message-State":"AOJu0YxeLnUC80hedeT3pc3ZrzEwPqTx/Il3YJcpXDkx2QvwOCerjfwM\n\tuVKTk542fu8GQa6jCzNUrMdmk2TBt7OJJoYOWqLMN545+t6pgnkjjAzh5FAe5RAlV1U=","X-Gm-Gg":"AfdE7ckXPkfjeLx+5J5WTwCuwbEEsu5bQB+F/cn9YAAWt/Y41Qb4PtFLwIHKrOzFRJk\n\ttn5jXYAXtH4kuBZGlw7JK9yM3Q4nBBfHYeVNe+zB0T2GBDb5C31zAdeo6SWMMXjneHVdXNUiwwg\n\tINgeD/z8BsQFyywTB4I4oH/qXRn82mZI/FKJwN0iKd7OtZE+jOQIlvA5+iPIkS3ehl1IcNC8Gba\n\tfAo7qD1PDiMMdXRI8Owtjl2Gfd1+VvgyXSTO4/pespVSWWiZMNtosGcgzDht9YltKNJseO7oO5y\n\tP285j8NiQY4mRQI6k4LFcsZwfju8iesUI927fQ3Hstwgsyp8trijB+Xigm01jkzqakAXFvp63c/\n\tXVSQwrgpOIFZMnCNcbeJWX4WYT1jN/WOrQaIZ/+I1kGNSKbFuCK+Rh5SrHJ5bG2bCXJkzGBbAna\n\tJ9hbMzhxtuqK2L2HBRDJ6S6Opc","X-Received":"by 2002:a05:600c:138e:b0:490:d38c:7836 with SMTP id\n\t5b1f17b1804b1-49266832313mr61197015e9.3.1782425313344; \n\tThu, 25 Jun 2026 15:08:33 -0700 (PDT)","Message-ID":"<08a27708-6f65-4999-9b17-6c8a92a4341e@linaro.org>","Date":"Thu, 25 Jun 2026 23:08:32 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","To":"Milan Zamazal <mzamazal@redhat.com>","Cc":"libcamera-devel@lists.libcamera.org, pavel@ucw.cz","References":"<20260618122245.946138-1-bryan.odonoghue@linaro.org>\n\t<85jyrmwgit.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<85jyrmwgit.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","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":39421,"web_url":"https://patchwork.libcamera.org/comment/39421/","msgid":"<854iipn5gj.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2026-06-26T07:09:16","subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Bryan O'Donoghue <bryan.odonoghue@linaro.org> writes:\n\n> On 25/06/2026 20:45, Milan Zamazal wrote:\n>>>    Post this series we get between 18ms and 20ms. I'd call that a 10-15%\n>>>    win.\n>> I get a similar speedup in my environment, with unpacked input: from\n>> ~89 ms to ~79 ms per frame.\n>\n> Cool, now all we have to do is divide the number by 10 and we're in business.\n\nI /guess/ a big portion of the time in my environment is spent on buffer\ncopying.  Not sure about the GPU (IMG BXS 4-64) performance itself.","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 9DB16C3264\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 26 Jun 2026 07:09:25 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9F759658D6;\n\tFri, 26 Jun 2026 09:09:24 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 31A4D61EFB\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Jun 2026 09:09:22 +0200 (CEST)","from mail-wm1-f69.google.com (mail-wm1-f69.google.com\n\t[209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-594-eJVgMPbPP8e4xeb0dcPlsA-1; Fri, 26 Jun 2026 03:09:19 -0400","by mail-wm1-f69.google.com with SMTP id\n\t5b1f17b1804b1-4926d371224so1091565e9.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Jun 2026 00:09:19 -0700 (PDT)","from mzamazal-thinkpadp1gen7.tpbc.csb\n\t(ip-77-48-47-4.net.vodafone.cz. [77.48.47.4])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-492692d5149sm56521815e9.9.2026.06.26.00.09.16\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 26 Jun 2026 00:09:17 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"fZJCXsdo\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1782457760;\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=yoaQBkCWmxzC3BDpYAGXXMTiF0wApihkZfc6CHyrGyE=;\n\tb=fZJCXsdo7HN6JLZ6ppet1IW37eexHhL2OblZiGMNCXRGdqeM3/ZLIYoJFCYvzO1nKQCTLR\n\tjABhjLuQ48puEHbTsELHfSbDGivjdnI5mGz4fofVQMdbDu3N063k/87ihRHNQYey46TxlF\n\tYiNVbkG6NMjXmPy/EDvX46uz5YVgsLk=","X-MC-Unique":"eJVgMPbPP8e4xeb0dcPlsA-1","X-Mimecast-MFC-AGG-ID":"eJVgMPbPP8e4xeb0dcPlsA_1782457758","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1782457758; x=1783062558;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject\n\t:date:message-id:reply-to;\n\tbh=yoaQBkCWmxzC3BDpYAGXXMTiF0wApihkZfc6CHyrGyE=;\n\tb=iMs6sAeLqWHncl3F+Am69sTRi4mHEA6b0tq5WI08+1khQqbFhOYX1Z4lZRw8ck1yjb\n\tnCG+zxOdqvi6OWK31b0M6wbUuFAE7ZNgbkxT4kxEgbtuhxa/x2GwS2w/3yyoGIvZ58Vx\n\ts6WdedNTB1gbB0+tWxa9Nhj67Ze26NLpaWpHdcSpKs9elpl8dF5xCqrhKhZqltkEU8d4\n\t3HBePe/HnL6sN7xQJqSbl1N9pRM0LhffQD+4+RfwWpD9nGnSbj/T25k9ntPq5DG+zkAI\n\tuAH7lyKZkO/pgKmJiC3qzB1tCt5wfborZM4TEhUW9Uzka65zamoiU5NbVj0vFLN05Qzs\n\tF/3Q==","X-Gm-Message-State":"AOJu0YxAw7I/Ux9+cBxb1StJ8N93dGm02JdNA5Aqurp7Aft4VZkJLokx\n\t51JxpegOmuki+DXIjGOBXPx/doQHn6/ARDwyJ4/ym2VcjECrpECzaoXlrlqBIinDg71JhJU+yMH\n\t69E115w3SgEdWMyM0x4VePSiHOesI1VGEIxNMV35rQPCy3L/zj14pgfPfeAZrV5r0tDVG/0DKL3\n\ts=","X-Gm-Gg":"AfdE7cmCRfgYCBB9lKlUqlKiYoJY+ogp+uaFq6xh4axzy89EJIL9RhthyY762es6fEd\n\tQHMIU0ZjtMfirmzbQ3GgakMEOniKhIvNSlHKlnaTZQlC8S/ur6PVlan49LevcRVM7/unOFc7JPe\n\tji2PfZwv0wbsuwRy71HVAghDWELdQO4WooEbUaGCNbXy2lcS/sWcyD9M/WAa1LkzAf1Y3vlO9ee\n\tJRNYCzw5EC+HePxVs32x+fD4i6MGlQ1AcqQT1ZFDz4iDF7DBlb3g8C8fFk3Ua/+CiMbb68rrrEh\n\tDakC23fRMeg3GBh/yJ0WT//pDiHzHCOYFxMh6pkJfk4iRTeZz1IKmbpZCPyP/U8o+KsSpb4AbFq\n\t8sP3FnPDkiR9mW9QLgZ8fX+RMshLOGBD9f02j9uoM6aWVh7SpaAO4ALFFpvBs427b","X-Received":["by 2002:a05:600c:e54a:10b0:490:b8ee:d6a5 with SMTP id\n\t5b1f17b1804b1-4926683b8ebmr54259335e9.6.1782457758240; \n\tFri, 26 Jun 2026 00:09:18 -0700 (PDT)","by 2002:a05:600c:e54a:10b0:490:b8ee:d6a5 with SMTP id\n\t5b1f17b1804b1-4926683b8ebmr54259015e9.6.1782457757685; \n\tFri, 26 Jun 2026 00:09:17 -0700 (PDT)"],"From":"Milan Zamazal <mzamazal@redhat.com>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org,  pavel@ucw.cz","Subject":"Re: [PATCH 00/30] RFC/RFT: gpuisp: Multipass with speed\n\toptimisations on top","In-Reply-To":"<08a27708-6f65-4999-9b17-6c8a92a4341e@linaro.org> (Bryan\n\tO'Donoghue's message of \"Thu, 25 Jun 2026 23:08:32 +0100\")","References":"<20260618122245.946138-1-bryan.odonoghue@linaro.org>\n\t<85jyrmwgit.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>\n\t<08a27708-6f65-4999-9b17-6c8a92a4341e@linaro.org>","Date":"Fri, 26 Jun 2026 09:09:16 +0200","Message-ID":"<854iipn5gj.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"LO2sDz4A9IdoTJqKew6gUaUTwEr0WefSJgGkftoRyr8_1782457758","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain","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>"}}]