[{"id":37397,"web_url":"https://patchwork.libcamera.org/comment/37397/","msgid":"<176582952699.158506.6253872515399036671@ping.linuxembedded.co.uk>","date":"2025-12-15T20:12:06","subject":"Re: [PATCH v8 00/26] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Bryan O'Donoghue (2025-12-12 00:29:11)\n> v8:\n> \n> A small number of updates. I'll copy and paste my change notes directly.\n> \n\nRunning checkpatch:\n\n--------------------------------------------------------------------------------------------------------------------\n5023d90b81f9fe831c775a53a7a2b343ff8acc30 libcamera: software_isp: gbm: Add a GBM helper class for GPU surface access\n--------------------------------------------------------------------------------------------------------------------\n--- src/libcamera/gbm.cpp\n+++ src/libcamera/gbm.cpp\n@@ -112,7 +112,7 @@\n  * \\return Pointer to the gbm_device structure, or nullptr if the device\n  * has not been created\n  */\n-struct gbm_device * GBM::getDevice()\n+struct gbm_device *GBM::getDevice()\n {\n \treturn gbmDevice_;\n }\n---\n1 potential issue detected, please review\n\n--------------------------------------------------------------------------------------------------\n823e8df41243762f23036c8fe7ceb187b503f770 libcamera: software_isp: egl: Add a eGL base helper class\n--------------------------------------------------------------------------------------------------\nHeader include/libcamera/internal/egl.h added without corresponding update to include/libcamera/internal/meson.build\n--- include/libcamera/internal/egl.h\n+++ include/libcamera/internal/egl.h\n@@ -15,8 +15,8 @@\n\n #include <libcamera/base/log.h>\n #include <libcamera/base/span.h>\n+#include <libcamera/base/utils.h>\n\n-#include \"libcamera/base/utils.h\"\n #include \"libcamera/internal/gbm.h\"\n\n #define EGL_EGLEXT_PROTOTYPES\n@@ -92,17 +92,17 @@\n \t\tglDeleteTextures(1, &texture_);\n \t}\n\n-\tuint32_t width_;\t\t\t/**< Image width in pixels */\n-\tuint32_t height_;\t\t\t/**< Image height in pixels */\n-\tuint32_t stride_;\t\t\t/**< Row stride in bytes */\n-\tuint32_t offset_;\t\t\t/**< Buffer offset (reserved for future use) */\n-\tuint32_t framesize_;\t\t\t/**< Total frame size in bytes (stride * height) */\n-\tuint32_t bpp_;\t\t\t\t/**< Bytes per pixel */\n-\tuint32_t texture_unit_uniform_id_;\t/**< Shader uniform id for texture unit */\n-\tGLenum texture_unit_;\t\t\t/**< Texture unit associated with this image eg (GL_TEXTURE0) */\n-\tGLuint texture_;\t\t\t/**< OpenGL texture object ID */\n-\tGLuint fbo_;\t\t\t\t/**< OpenGL frame buffer object ID */\n-\tEGLImageKHR image_;\t\t\t/**< EGL Image handle */\n+\tuint32_t width_; /**< Image width in pixels */\n+\tuint32_t height_; /**< Image height in pixels */\n+\tuint32_t stride_; /**< Row stride in bytes */\n+\tuint32_t offset_; /**< Buffer offset (reserved for future use) */\n+\tuint32_t framesize_; /**< Total frame size in bytes (stride * height) */\n+\tuint32_t bpp_; /**< Bytes per pixel */\n+\tuint32_t texture_unit_uniform_id_; /**< Shader uniform id for texture unit */\n+\tGLenum texture_unit_; /**< Texture unit associated with this image eg (GL_TEXTURE0) */\n+\tGLuint texture_; /**< OpenGL texture object ID */\n+\tGLuint fbo_; /**< OpenGL frame buffer object ID */\n+\tEGLImageKHR image_; /**< EGL Image handle */\n\n private:\n \tLIBCAMERA_DISABLE_COPY_AND_MOVE(eGLImage)\n--- src/libcamera/egl.cpp\n+++ src/libcamera/egl.cpp\n@@ -229,7 +229,6 @@\n \teglDestroyImage(display_, eglImage->image_);\n }\n\n-\n /**\n  * \\brief Create a 2D texture from a memory buffer\n  * \\param[in,out] eglImage EGL image to associate with the texture\n@@ -357,15 +356,15 @@\n \treturn -ENODEV;\n }\n\n-\n /**\n  * \\brief Clean up EGL resources\n  *\n  * Destroys the EGL sync object. Must be called from the same thread\n  * that created the EGL context.\n  */\n-void eGL::cleanUp(void) {}\n-\n+void eGL::cleanUp(void)\n+{\n+}\n\n /**\n  * \\brief Make the EGL context current for the calling thread\n@@ -382,7 +381,6 @@\n \t\tLOG(eGL, Error) << \"eglMakeCurrent fail\";\n \t}\n }\n-\n\n /**\n  * \\brief Activate a shader program for rendering\n@@ -513,7 +511,7 @@\n \t\tGLint sizeLog = 0;\n\n \t\tglGetShaderiv(shaderId, GL_INFO_LOG_LENGTH, &sizeLog);\n-\t\tauto infoLog = std::make_unique<GLchar []>(sizeLog);\n+\t\tauto infoLog = std::make_unique<GLchar[]>(sizeLog);\n\n \t\tglGetShaderInfoLog(shaderId, sizeLog, &sizeLog, infoLog.get());\n \t\tLOG(eGL, Error) << infoLog.get();\n@@ -540,7 +538,7 @@\n \tLOG(eGL, Debug) << \"Shader length is \" << shaderLength;\n\n \tif (shaderLength > 0) {\n-\t\tauto shaderSource = std::make_unique<GLchar []>(shaderLength);\n+\t\tauto shaderSource = std::make_unique<GLchar[]>(shaderLength);\n\n \t\tglGetShaderSource(shaderId, shaderLength, &shaderLength, shaderSource.get());\n \t\tif (shaderLength) {\n@@ -548,7 +546,6 @@\n \t\t}\n \t}\n }\n-\n\n /**\n  * \\brief Link a shader program\n---\n9 potential issues detected, please review\n\n-------------------------------------------------------------------------------------------\n7400459ccda59432c80acfcc2a1dbc7ac8c6619f qcam: viewfinder_gl: Set no-op Bayer shader values\n-------------------------------------------------------------------------------------------\n--- src/apps/qcam/viewfinder_gl.cpp\n+++ src/apps/qcam/viewfinder_gl.cpp\n@@ -547,9 +571,9 @@\n \tunsigned int stridePixels;\n\n \t/* Identity CCM */\n-\tfloat ccm[] = {1.0f, 0.0f, 0.0f,\n-\t\t       0.0f, 1.0f, 0.0f,\n-\t\t       0.0f, 0.0f, 1.0f };\n+\tfloat ccm[] = { 1.0f, 0.0f, 0.0f,\n+\t\t\t0.0f, 1.0f, 0.0f,\n+\t\t\t0.0f, 0.0f, 1.0f };\n \tQMatrix3x3 qCcmMat(ccm);\n\n \t/* Black Level */\n@@ -802,7 +826,7 @@\n \t\t */\n \t\tstridePixels = size_.width();\n\n-\t\t /* Colour Correction Matrix */\n+\t\t/* Colour Correction Matrix */\n \t\tshaderProgram_.setUniformValue(ccmUniformDataIn_, qCcmMat);\n\n \t\t/* Black Level */\n---\n2 potential issues detected, please review\n\n---------------------------------------------------------------------------------------------\nfeb833daef2208ccd7baef94e9d91cbff1dc2dc7 libcamera: shaders: Rename bayer_8 to bayer_unpacked\n---------------------------------------------------------------------------------------------\nNo issue detected\n\n------------------------------------------------------------------------------------------------------\nee1532da2ce67e03d7da34d4930af4d6dffa410d libcamera: shaders: Use highp not mediump for float precision\n------------------------------------------------------------------------------------------------------\nNo issue detected\n\n------------------------------------------------------------------------------------------------------\na843ffbf87ed820d5d0a20c4d89f120c0e8d6703 libcamera: shaders: Extend debayer shaders to apply CCM gains\n------------------------------------------------------------------------------------------------------\nNo issue detected\n\n-----------------------------------------------------------------------------------------------------------------------\ne95b92f52b862b77264e5cc29ac8070ed8ae1562 libcamera: shaders: Extend bayer shaders to support swapping R and B on output\n-----------------------------------------------------------------------------------------------------------------------\nNo issue detected\n\n-----------------------------------------------------------------------------------------------------\n06c96eb42cb1ff0bf67ea47a4bd44f5fc709ab37 libcamera: shaders: Add support for black level compensation\n-----------------------------------------------------------------------------------------------------\nNo issue detected\n\n----------------------------------------------------------------------------------\nf38a15658b37bf8da6b5fb7cf7ec5f27ff39f1df libcamera: shaders: Add support for Gamma\n----------------------------------------------------------------------------------\nNo issue detected\n\n-------------------------------------------------------------------------------------\na9f01d64ef9a039a416ef30f538e157da796a5f2 libcamera: shaders: Add support for contrast\n-------------------------------------------------------------------------------------\nNo issue detected\n\n----------------------------------------------------------------------------------------------------\nf0b9b57aa0d57fb0b46482240aac2871800cde41 libcamera: shaders: Fix input sampling when width != stride\n----------------------------------------------------------------------------------------------------\nNo issue detected\n\n---------------------------------------------------------------------------------------------------------------------------------\n4c3ae9501fb70f1a4d40c6a42ce65b7803f291ce libcamera: software_isp: Add member variables to track selected input/output pixelFormat\n---------------------------------------------------------------------------------------------------------------------------------\nNo issue detected\n\n------------------------------------------------------------------------------------------------------------------\n08ce64403a68ecce3e69c41885131e5c63a81132 libcamera: software_isp: Add a Size_ member variable to pass to eGL later\n------------------------------------------------------------------------------------------------------------------\nNo issue detected\n\n-------------------------------------------------------------------------------------------------------\nfbd546a20988f8833a205e1cfac34c253598db18 libcamera: software_isp: debayer_egl: Add an eGL Debayer class\n-------------------------------------------------------------------------------------------------------\n--- src/libcamera/software_isp/debayer_egl.cpp\n+++ src/libcamera/software_isp/debayer_egl.cpp\n@@ -36,9 +36,13 @@\n  * \\param[in] configuration Global configuration reference\n  */\n DebayerEGL::DebayerEGL(std::unique_ptr<SwStatsCpu> stats, const GlobalConfiguration &configuration)\n-\t: Debayer(configuration), stats_(std::move(stats)) {}\n-\n-DebayerEGL::~DebayerEGL() {}\n+\t: Debayer(configuration), stats_(std::move(stats))\n+{\n+}\n+\n+DebayerEGL::~DebayerEGL()\n+{\n+}\n\n int DebayerEGL::getInputConfig(PixelFormat inputFormat, DebayerInputConfig &config)\n {\n@@ -286,11 +290,10 @@\n \treturn -EINVAL;\n }\n\n-\n /**\n- * \\brief Get the output frame size.\n+ * \\brief Get the output frame size\n  *\n- * \\return The output frame size.\n+ * \\return The output frame size\n  */\n unsigned int DebayerEGL::frameSize()\n {\n@@ -323,7 +326,6 @@\n \tinputPixelFormat_ = inputCfg.pixelFormat;\n \twidth_ = inputCfg.size.width;\n \theight_ = inputCfg.size.height;\n-\n\n \tif (outputCfgs.size() != 1) {\n \t\tLOG(Debayer, Error)\n#13: C++ header <cmath> is preferred\n+#include <math.h>\n           ^~~~~~\n---\n4 potential issues detected, please review\n\n-----------------------------------------------------------------------------------------------------------------------------\n2c2ca4391ceaaeea7c19623cc5027d957868c335 libcamera: software_isp: debayer_cpu: Make getInputConfig and getOutputConfig static\n-----------------------------------------------------------------------------------------------------------------------------\nNo issue detected\n\n------------------------------------------------------------------------------------------------------------\n26c2a55c5612892b03d68ad23e5995ac7f04015b libcamera: software_isp: GPU support for unpacked 10/12-bit formats\n------------------------------------------------------------------------------------------------------------\nNo issue detected\n\n--------------------------------------------------------------------------------------------------------------------\n83c23cbc22b23b3cd82356fba7694721f9c86f50 libcamera: software_isp: debayer_egl: Make DebayerEGL an environment option\n--------------------------------------------------------------------------------------------------------------------\nNo issue detected\n\n---------------------------------------------------------------------------------------------------------------\n6aa05a044fbf05d5eea09ec15e372f89d802bfb7 libcamera: software_isp: debayer_egl: Make gpuisp default softisp mode\n---------------------------------------------------------------------------------------------------------------\nNo issue detected\n\n-----------------------------------------------------------------------------------------------------\n675c629d3188c12c076e7da571e2d092347ccee0 ipa: software_isp: Add a selfInitialising flag to IPAContext\n-----------------------------------------------------------------------------------------------------\nNo issue detected\n\n----------------------------------------------------------------------------------------------------------------------\n068a08cae681c81cc9c0c0cb58edf23d4f3404d4 libcamera: software_isp: ccm: Add self-initialising identity CCM to Ccm::init\n----------------------------------------------------------------------------------------------------------------------\nNo issue detected\n\n------------------------------------------------------------------------------------------------\n1f6e86d8868e6943bb498cb647e3229a1be2d590 ipa: libipa: module: Add createSelfEnumeratingAlgorithm\n------------------------------------------------------------------------------------------------\n--- src/ipa/libipa/module.cpp\n+++ src/ipa/libipa/module.cpp\n@@ -109,7 +109,7 @@\n  * Worker method which allows sharing of common code in the Yaml and self-initialising algorithm case\n  *\n  * \\param[in] context The IPA context to pass to the algorithm's init function\n- * \\param[in] algoData Yaml object.\n+ * \\param[in] algoData Yaml object\n  * \\param[in] name The name of the algorithm to instantiate\n  *\n  * \\return 0 on success, negative errno value on failure:\n--- src/ipa/libipa/module.h\n+++ src/ipa/libipa/module.h\n@@ -87,7 +87,6 @@\n \t}\n\n private:\n-\n \tint createAlgorithmCommon(Context &context, const YamlObject &algoData, const std::string &name)\n \t{\n \t\tstd::unique_ptr<Algorithm<Module>> algo = createAlgorithm(name);\n---\n2 potential issues detected, please review\n\n------------------------------------------------------------------------------------------\ncf381ffd0c32057a380f3251c728754c1d9c4ded ipa: simple: Add a flag to indicate gpuIspEnabled\n------------------------------------------------------------------------------------------\nNo issue detected\n\n------------------------------------------------------------------------------------------------------------------------------------\nad8a0b54d8d560919c00319ad78f7a5bcd4e2e5b ipa: software_isp: Call createSelfEnumeratingAlgorithm() to statically instantiate CCM algo\n------------------------------------------------------------------------------------------------------------------------------------\nNo issue detected\n\n------------------------------------------------------------------------------------------------------------------------------\nb01198a12d3bb98e36ed1ca1df642bf8c374515f libcamera: software_isp: lut: Skip calculation lookup tables if gpuIspEnabled is true\n------------------------------------------------------------------------------------------------------------------------------\nNo issue detected\n\n------------------------------------------------------------------------------------------------------\ndaffa9121715788c1c9ef1fb42613042bfcbe811 libcamera: software_isp: lut: Change default Gamma to 1.0/2.2\n------------------------------------------------------------------------------------------------------\n--- src/ipa/simple/algorithms/lut.cpp\n+++ src/ipa/simple/algorithms/lut.cpp\n@@ -35,7 +35,7 @@\n \t\t   [[maybe_unused]] const IPAConfigInfo &configInfo)\n {\n \t/* Gamma value is fixed */\n-\tcontext.configuration.gamma = 1.0/2.2;\n+\tcontext.configuration.gamma = 1.0 / 2.2;\n \tcontext.activeState.knobs.contrast = std::optional<double>();\n \tupdateGammaTable(context);\n\n---\n1 potential issue detected, please review\n\n----------------------------------------------------------------------------------------\n7bbf8168bc43cccaa2b2b227b2a28ecb1ecaa28c libcamera: software_isp: Add a gpuisp todo list\n----------------------------------------------------------------------------------------\nNo issue detected","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 2618EC3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 15 Dec 2025 20:12:13 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 153E5619EE;\n\tMon, 15 Dec 2025 21:12:12 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id ACC69615B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 15 Dec 2025 21:12:10 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9D59F4F1;\n\tMon, 15 Dec 2025 21:12:04 +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=\"mpqBwnyD\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1765829524;\n\tbh=Hghi4WU/oDi0Ks0gXMbfjph4cAyc9SiKKTr00ZnaLx8=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=mpqBwnyDDg6Tn14+D4Ze60AnHb9afIYID5pwVvNMe6pSMrx4SxWSduejr+gSCqSrW\n\toUTFw9ZUf2gK5GapcbXPtuhhARitSVBZt4tpgmjc8FXOqZow/33h392uIOLZuDzecA\n\tPB40wtSHjF8h+hCdxL2KwJ+KkHO1/Evj1SJ2ELF8=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20251212002937.3118-1-bryan.odonoghue@linaro.org>","References":"<20251212002937.3118-1-bryan.odonoghue@linaro.org>","Subject":"Re: [PATCH v8 00/26] Add GLES 2.0 GPUISP to libcamera","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"pavel@ucw.cz, Bryan O'Donoghue <bryan.odonoghue@linaro.org>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 15 Dec 2025 20:12:06 +0000","Message-ID":"<176582952699.158506.6253872515399036671@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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":37399,"web_url":"https://patchwork.libcamera.org/comment/37399/","msgid":"<176582996968.158506.10919187121229533660@ping.linuxembedded.co.uk>","date":"2025-12-15T20:19:29","subject":"Re: [PATCH v8 00/26] Add GLES 2.0 GPUISP to libcamera","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Kieran Bingham (2025-12-15 20:12:06)\n> Quoting Bryan O'Donoghue (2025-12-12 00:29:11)\n> > v8:\n> > \n> > A small number of updates. I'll copy and paste my change notes directly.\n> > \n> \n> Running checkpatch:\n\n> @@ -92,17 +92,17 @@\n>                 glDeleteTextures(1, &texture_);\n>         }\n> \n> -       uint32_t width_;                        /**< Image width in pixels */\n> -       uint32_t height_;                       /**< Image height in pixels */\n> -       uint32_t stride_;                       /**< Row stride in bytes */\n> -       uint32_t offset_;                       /**< Buffer offset (reserved for future use) */\n> -       uint32_t framesize_;                    /**< Total frame size in bytes (stride * height) */\n> -       uint32_t bpp_;                          /**< Bytes per pixel */\n> -       uint32_t texture_unit_uniform_id_;      /**< Shader uniform id for texture unit */\n> -       GLenum texture_unit_;                   /**< Texture unit associated with this image eg (GL_TEXTURE0) */\n> -       GLuint texture_;                        /**< OpenGL texture object ID */\n> -       GLuint fbo_;                            /**< OpenGL frame buffer object ID */\n> -       EGLImageKHR image_;                     /**< EGL Image handle */\n> +       uint32_t width_; /**< Image width in pixels */\n> +       uint32_t height_; /**< Image height in pixels */\n> +       uint32_t stride_; /**< Row stride in bytes */\n> +       uint32_t offset_; /**< Buffer offset (reserved for future use) */\n> +       uint32_t framesize_; /**< Total frame size in bytes (stride * height) */\n> +       uint32_t bpp_; /**< Bytes per pixel */\n> +       uint32_t texture_unit_uniform_id_; /**< Shader uniform id for texture unit */\n> +       GLenum texture_unit_; /**< Texture unit associated with this image eg (GL_TEXTURE0) */\n> +       GLuint texture_; /**< OpenGL texture object ID */\n> +       GLuint fbo_; /**< OpenGL frame buffer object ID */\n> +       EGLImageKHR image_; /**< EGL Image handle */\n\n\nI wouldn't object to ignoring that hunk though.\n\nThe rest look easy to apply though. Remember you can do things like \n\nkbingham@charm:~/iob/libcamera$ ./utils/checkstyle.py daffa9121715788c1c9ef1fb42613042bfcbe811 | patch -p0\npatching file src/ipa/simple/algorithms/lut.cpp\n\nkbingham@charm:~/iob/libcamera$ git add -p\ndiff --git a/src/ipa/simple/algorithms/lut.cpp b/src/ipa/simple/algorithms/lut.cpp\nindex 618219b17bc5..bd0d308bef3c 100644\n--- a/src/ipa/simple/algorithms/lut.cpp\n+++ b/src/ipa/simple/algorithms/lut.cpp\n@@ -35,7 +35,7 @@ int Lut::configure(IPAContext &context,\n \t\t   [[maybe_unused]] const IPAConfigInfo &configInfo)\n {\n \t/* Gamma value is fixed */\n-\tcontext.configuration.gamma = 1.0/2.2;\n+\tcontext.configuration.gamma = 1.0 / 2.2;\n \tcontext.activeState.knobs.contrast = std::optional<double>();\n \tupdateGammaTable(context);\n\n(1/1) Stage this hunk [y,n,q,a,d,e,p,P,?]? y\n\nkbingham@charm:~/iob/libcamera$ git fixup \n7fab2062d8274065e870de20382720a0cdb11193 [L] libcamera: software_isp: Move color handling to an algorithm module <mzamazal@redhat.com>\n9135aacff1fa8aa6af1a44493c6ec8abfbde31a3 [L] libcamera: software_isp: Add support for contrast control <mzamazal@redhat.com>\ndaffa9121715788c1c9ef1fb42613042bfcbe811 [L] libcamera: software_isp: lut: Change default Gamma to 1.0/2.2 <bryan.odonoghue@linaro.org>\n\nkbingham@charm:~/iob/libcamera$ git commit --fixup=daffa9121715788c1c9ef1fb42613042bfcbe811\n-------------------------------------------------------------------------------------------------------------\n30de50eb9903043a86e8a0c299164f75f55a617e fixup! libcamera: software_isp: lut: Change default Gamma to 1.0/2.2\n-------------------------------------------------------------------------------------------------------------\nNo 'Signed-off-by' trailer matching author 'Kieran Bingham <kieran.bingham@ideasonboard.com>', see Documentation/contributing.rst\n---\n1 potential issue detected, please review\n\n[patchwork/5637 30de50eb9903] fixup! libcamera: software_isp: lut: Change default Gamma to 1.0/2.2\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\nkbingham@charm:~/iob/libcamera$ git rebase -i --autosquash --autostash origin/master\n\n\nAnd now the commit is 'fixed'.\nI use git fixup from # git-fixup https://github.com/keis/git-fixup\n\n--\nKieran","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 62E7EBD7D8\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 15 Dec 2025 20:19:35 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 72C18619F7;\n\tMon, 15 Dec 2025 21:19:34 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9A506615B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 15 Dec 2025 21:19:32 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 2D6BB4F1;\n\tMon, 15 Dec 2025 21:19:27 +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=\"tOd1tjCt\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1765829967;\n\tbh=OKAeI+EnEYCL5zk37wv5JfCIUT9HJhStSCkihlsrNvk=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=tOd1tjCtElQ189qkNYnFFgInPdVqzFB6piG9T06uhR6/7sgBONB1N8qh7FMMfrmc2\n\tc0rYzmtvgTG7yd1KC8vemXbK20dR1M0edn2HajUvOEKvTP4anXAP1+hE8wJSZv3WvL\n\t4e6wpi8tyEmD62yR1n5hE3qb8Uenr1K58ekFRXHQ=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<176582952699.158506.6253872515399036671@ping.linuxembedded.co.uk>","References":"<20251212002937.3118-1-bryan.odonoghue@linaro.org>\n\t<176582952699.158506.6253872515399036671@ping.linuxembedded.co.uk>","Subject":"Re: [PATCH v8 00/26] Add GLES 2.0 GPUISP to libcamera","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"pavel@ucw.cz, Bryan O'Donoghue <bryan.odonoghue@linaro.org>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 15 Dec 2025 20:19:29 +0000","Message-ID":"<176582996968.158506.10919187121229533660@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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>"}}]