[{"id":34548,"web_url":"https://patchwork.libcamera.org/comment/34548/","msgid":"<85ldppxles.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2025-06-18T12:51:39","subject":"Re: [PATCH 35/35] libcamera: software_isp: Add a gpuisp todo list","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> List the series of things to do in GPU ISP in perceived order of\n> difficulty.\n>\n> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> ---\n>  src/libcamera/software_isp/gpuisp-todo.txt | 42 ++++++++++++++++++++++\n>  1 file changed, 42 insertions(+)\n>  create mode 100644 src/libcamera/software_isp/gpuisp-todo.txt\n\nCould it be added to the current `TODO' file or named a bit more\nconsistently with the already present `TODO'?\n\nOther than that, the list looks fine to me.\n\n>\n> diff --git a/src/libcamera/software_isp/gpuisp-todo.txt b/src/libcamera/software_isp/gpuisp-todo.txt\n> new file mode 100644\n> index 00000000..0ff82f81\n> --- /dev/null\n> +++ b/src/libcamera/software_isp/gpuisp-todo.txt\n> @@ -0,0 +1,42 @@\n> +List the TODOs in perceived order of ease.\n> +\n> +24 bit output support:\n> +\t- Take the BPP we already capture and get a 24 bit GBM surface\n> +\t- Pass a compile-time parameter to the shaders to tell them to do\n> +\t  gl_FragColor = rgb not gl_FragColor = rgba\n> +\n> +Make GPUISP default:\n> +\t- Right now the environment variable allows over-riding to swtich\n> +\t  from CPU to GPU.\n> +\t- Once we support 24 BPP output on GPUISP we will have the same\n> +\t  pixel format support as CPU and can set the default to GPU without\n> +\t  regressing functionality\n> +\n> +glTexture1D:\n> +\t- Initial code was developed for < GLES 2.O but since we have fixed\n> +\t  on GLES >= 2.0 this means we can use glTexture1D\n> +\t- Provided this is so amend the shaders to do val = texture(x, y, 0);\n> +\t  not texture(x, y, 0.5) the 0.5 is because of using glTexture2D\n> +\n> +Surfaceless GBM:\n> +\t- We get a GBM surface and then have to swap buffers\n> +\t  If we rework for surfaceless GBM and EGL then the swap buffer can\n> +\t  be dropped.\n> +\n> +dma-buf texture upload:\n> +\t- Currently we pass the input buffer to glCreateTexture2D.\n> +\t  We should be able to make the upload of the input buffer go faster\n> +\t  by using eglCreateImageKHR and enumerated the dma-buf contents.\n> +\n> +Render-to-texture:\n> +\t- Right now we render to the GBM provided surface framebuffer\n> +\t  and then memcpy from that buffer to the target output buffer.\n> +\t  This necessitates flushing the cache on the target buffer in\n> +\t  addition to the memcpy().\n> +\t- Render-to-texture where we generate the target framebuffer\n> +\t  directly from a dma-buf handle will mitigate the memcpy() phase.\n> +\t- It should be the case then that the consumer of the output buffer\n> +\t  i.e. the thing that's not libcamera is responsible to flush the cache\n> +\t  if-and-only-if that user writes to the buffer.\n> +\t- We need to flush the cache on the buffer because we are memcpying() to it.\n> +","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 6D6C9C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 18 Jun 2025 12:51:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A2A0D68DC9;\n\tWed, 18 Jun 2025 14:51:47 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1AD7368DC1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Jun 2025 14:51:45 +0200 (CEST)","from mail-wr1-f72.google.com (mail-wr1-f72.google.com\n\t[209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-479-fDkK75SMOgyT72Q3BPImlg-1; Wed, 18 Jun 2025 08:51:42 -0400","by mail-wr1-f72.google.com with SMTP id\n\tffacd0b85a97d-3a56b3dee17so363169f8f.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Jun 2025 05:51:42 -0700 (PDT)","from mzamazal-thinkpadp1gen7.tpbc.csb\n\t(ip-77-48-47-2.net.vodafone.cz. [77.48.47.2])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-3a568b28240sm16955059f8f.72.2025.06.18.05.51.39\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 18 Jun 2025 05:51:39 -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=\"JDkxEddt\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1750251103;\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=+U05+wMCkP6pX5PSJeFm+gX42a0kAN9M0PGOGhnLnn4=;\n\tb=JDkxEddt4hnpymi96tXwyba76nv8PhTvVbJURHP20OOsBJdjJ2bBJDybwBGi1zGrCHdWVq\n\tAoJVNexpP9I/KFBi+jSvGJ7s4VDazs4P7CGGZ3fyJy6yax7RsK60PKAQpVzJk/tRnjB0fe\n\tO7JMIFGA/l1L+4vNmA76Jx37uDZlBNc=","X-MC-Unique":"fDkK75SMOgyT72Q3BPImlg-1","X-Mimecast-MFC-AGG-ID":"fDkK75SMOgyT72Q3BPImlg_1750251101","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1750251101; x=1750855901;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=+U05+wMCkP6pX5PSJeFm+gX42a0kAN9M0PGOGhnLnn4=;\n\tb=lsi84uc/EzSdgF7Dr6uIVciO/jKmHeimOprmU7lWfbnl57qwsJdjUDNLrAyTKNarYg\n\tFVAFHFaGFizuKaJIgjtR3dVEfXBj028VI/6iVOYHmyq6JA6qk0Fc8bPPl9hNHvEj2G5m\n\tmH3gBcPYM0BJss8QvWLqLZU0dg4/UkCTv80LsJzou5325YdNu8GXWZ3CpfZU/kAVggYa\n\t3aZz/QA/mvkbQ2fvKV9+aZQT/TMtEUuOXDoXyHlJsPqgz0QJdWjghIzhCLa6N6KlYQiw\n\t2YN8kUZz3WhPPNkW+R77PJoyNxthUG2JQQmq1NLMiVlQ801QGozpAF6Q6aaSTmMU7WsD\n\tHhfg==","X-Gm-Message-State":"AOJu0YycArP4ro0gbiA182EhwehD6v5irEUdnC36ETurH6jirwTBBU7C\n\tvUIw9FchUVAudELZ0l+6T4klQqioqzPAhw0C591cHnjfinEEfZ5uyJbl1BRXAfZcDE4GNd2oIH0\n\tU64UrxJU9oiF6Do6olIORUjg9VcTQCcSzxDxCNKSBvbm8JE8Y1b+cJVJy3VRoFz5c/REQKE3PqV\n\tYOoiz+93xTycFDcqVdLAA0H/O3JpvfXJYuRM/HVFrC5zIYKymEABlaS9DapSw=","X-Gm-Gg":"ASbGncvWkqm89D/eT4IU67HhXSf5XkHDvzpqyHlp6iQ0yIfRK089fXG5Y3ZaEpTNifR\n\tADy/Tdsthx+5wABVhu19LNZRmvwlXmeEc6DyQJIqTM8qbPEZL8WCF/4ZEgpbSgFRhPo7ud5HA+u\n\tUSNiY3K8jbQrLQs0mqUqbG9CvSAXc7xVylDZeJMrwVShloLMVoNfn7ZwK6O4uKIeopm2cyeQ9WN\n\tyfS+9w3IW0TymbXZj/Z6lKGwD5btBGiSkrKJJknh6qRrloLSvb8qPfgAgUeMEdkLiu+EU3jtoze\n\tOIusXNcu92ssvyqvtEdJrRpcevIfN0Bgdd4z/4OrGXdgqmcN4VjTS1hHmglO3KYxDBq3fFzCY34\n\t=","X-Received":["by 2002:a5d:5f8d:0:b0:3a4:eee4:f73a with SMTP id\n\tffacd0b85a97d-3a58e26956dmr2240133f8f.22.1750251100847; \n\tWed, 18 Jun 2025 05:51:40 -0700 (PDT)","by 2002:a5d:5f8d:0:b0:3a4:eee4:f73a with SMTP id\n\tffacd0b85a97d-3a58e26956dmr2240102f8f.22.1750251100359; \n\tWed, 18 Jun 2025 05:51:40 -0700 (PDT)"],"X-Google-Smtp-Source":"AGHT+IH++rYXNashxObt0yIrN0iGTHHjSYJQnAwy/JX2xog6c5FxQkADilxrWxyO8U3As67pVH8WWg==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH 35/35] libcamera: software_isp: Add a gpuisp todo list","In-Reply-To":"<20250611013245.133785-36-bryan.odonoghue@linaro.org> (Bryan\n\tO'Donoghue's message of \"Wed, 11 Jun 2025 02:32:45 +0100\")","References":"<20250611013245.133785-1-bryan.odonoghue@linaro.org>\n\t<20250611013245.133785-36-bryan.odonoghue@linaro.org>","Date":"Wed, 18 Jun 2025 14:51:39 +0200","Message-ID":"<85ldppxles.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":"_Icn60YczvBPZTkz0ztZlCwNYQJCd0GIy7vDPfvJBY4_1750251101","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>"}}]