[{"id":37424,"web_url":"https://patchwork.libcamera.org/comment/37424/","msgid":"<fc6cba46-a5f3-4cfd-b445-89d433d3265c@oss.qualcomm.com>","date":"2025-12-17T10:55:37","subject":"Re: [PATCH v9 16/26] libcamera: software_isp: GPU support for\n\tunpacked 10/12-bit formats","submitter":{"id":242,"url":"https://patchwork.libcamera.org/api/people/242/","name":"Hans de Goede","email":"johannes.goede@oss.qualcomm.com"},"content":"Hi,\n\nOn 17-Dec-25 11:01, Bryan O'Donoghue wrote:\n> From: Milan Zamazal <mzamazal@redhat.com>\n> \n> The GPU processing supports 8-bit sensor formats and 10/12-bit packed\n> formats.  Support for 10/12-bit unpacked formats is missing, let's add\n> it.\n> \n> 10/12-bit unpacked formats use two adjacent bytes to store the value.\n> This means the 8-bit shaders can be used if we can modify them for\n> additional support of 16-bit addressing.  This requires the following\n> modifications:\n> \n> - Using GL_RG (two bytes per pixel) instead of GL_LUMINANCE (one byte\n>   per pixel) as the texture format for the given input formats.\n> \n> - Setting the texture width to the number of pixels rather than the\n>   number of bytes.\n> \n> - Making the definition of `fetch' macro variable, according to the\n>   pixel format.\n> \n> - Using only `fetch' for accessing the texture.\n> \n> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n\nThanks, patch looks good to me:\n\nReviewed-by: Hans de Goede <johannes.goede@oss.qualcomm.com>\n\nRegards,\n\nHans\n\n\n\n> ---\n>  src/libcamera/shaders/bayer_unpacked.frag | 10 +++++++++-\n>  1 file changed, 9 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/shaders/bayer_unpacked.frag b/src/libcamera/shaders/bayer_unpacked.frag\n> index 114e32058..477e8bbf6 100644\n> --- a/src/libcamera/shaders/bayer_unpacked.frag\n> +++ b/src/libcamera/shaders/bayer_unpacked.frag\n> @@ -41,9 +41,17 @@ float apply_contrast(float value, float contrastExp)\n>  void main(void) {\n>      vec3 rgb;\n>  \n> +    #if defined(RAW10P)\n> +    #define pixel(p) p.r / 4.0 + p.g * 64.0\n> +    #define fetch(x, y) pixel(texture2D(tex_y, vec2(x, y)))\n> +    #elif defined(RAW12P)\n> +    #define pixel(p) p.r / 16.0 + p.g * 16.0\n> +    #define fetch(x, y) pixel(texture2D(tex_y, vec2(x, y)))\n> +    #else\n>      #define fetch(x, y) texture2D(tex_y, vec2(x, y)).r\n> +    #endif\n>  \n> -    float C = texture2D(tex_y, center.xy).r; // ( 0, 0)\n> +    float C = fetch(center.x, center.y); // ( 0, 0)\n>      const vec4 kC = vec4( 4.0,  6.0,  5.0,  5.0) / 8.0;\n>  \n>      // Determine which of four types of pixels we are on.","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 7A280C3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 17 Dec 2025 10:55:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7A88F61A5F;\n\tWed, 17 Dec 2025 11:55:43 +0100 (CET)","from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com\n\t[205.220.180.131])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8486D61A2C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 17 Dec 2025 11:55:41 +0100 (CET)","from pps.filterd (m0279870.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n\t5BHADvee1871277 for <libcamera-devel@lists.libcamera.org>;\n\tWed, 17 Dec 2025 10:55:40 GMT","from mail-qt1-f199.google.com (mail-qt1-f199.google.com\n\t[209.85.160.199])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4b3jgq9p2k-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 17 Dec 2025 10:55:39 +0000 (GMT)","by mail-qt1-f199.google.com with SMTP id\n\td75a77b69052e-4ee41b07099so66869571cf.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 17 Dec 2025 02:55:39 -0800 (PST)","from ?IPV6:2001:1c00:c32:7800:5bfa:a036:83f0:f9ec?\n\t(2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl.\n\t[2001:1c00:c32:7800:5bfa:a036:83f0:f9ec])\n\tby smtp.gmail.com with ESMTPSA id\n\ta640c23a62f3a-b7cfa5cf210sm1954887266b.60.2025.12.17.02.55.37\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tWed, 17 Dec 2025 02:55:38 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=qualcomm.com header.i=@qualcomm.com\n\theader.b=\"IyYfsVql\"; dkim=pass (2048-bit key;\n\tunprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n\theader.b=\"V5eCK8tj\"; dkim-atps=neutral","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-transfer-encoding:content-type:date:from:in-reply-to\n\t:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n\tKd63nrviZS64jYZcIoB3FYbYuQhUnhGsJTdyecbFxgs=; b=IyYfsVqld0VRbtH4\n\tgkirEqatF3xmEQWmkQfHUpGANTiHH0ch7sJNhaSVZhn4t2APUDl5MiOHamDNrZDu\n\tlBTO4RjtuZGyLYeNH4KVpaXMh/Ln+woZgr/8efY/Q9FiCBk8pY4LXM+c++9ASKrj\n\tuH1DeRO/R3e573caxhXhhdzEfNqbsTzzgYgXOqVP9e73fSB+xbbu8OFCLHrUVawX\n\txG+05KB6jNyKAn0uS+FRcu5dvS45xoRrenKnCutCit1R16SarvCRonmjEfiK1TDL\n\t1JYRoY+DiXFcZYpkKGju4QPN+XsEh6uk2EmUl/EH9K3NHcUra93z0T6X13kqSD6J\n\t2RB+NQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=oss.qualcomm.com; s=google; t=1765968939; x=1766573739;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:references\n\t:cc:to:subject:from:user-agent:mime-version:date:message-id:from:to\n\t:cc:subject:date:message-id:reply-to;\n\tbh=Kd63nrviZS64jYZcIoB3FYbYuQhUnhGsJTdyecbFxgs=;\n\tb=V5eCK8tjZdHjXcnHFKBLArcLx/Nl4LtopkPQ/prywRTqe+ocscg0sJCH9H8XsOAm/g\n\tbxIl7lBp68TPDT+ToGoDvuOWZfIOuEWyk40pPpUI/+jOxoYf3aZx2/Gs7AZ2yT8TZ7J2\n\tWoVhPhi8MXaDxK2FvzLWJEUP907Jzy2vc0RO68QnbZNNJQDfZ9VLWz1eZbym+zalaNDh\n\t/3COsr/eL6HOkCHRdN98OEKxEaB/HCFDCwQ1j6XLLllMx1VWw4pXD9QfgJ2Ck+4M/GFQ\n\tnizvXKc127402GAv6Jqqe1Sc9dWx8CTU7xdGwrt2snydXp1YQvVBDuLnYZwuzIB6osBx\n\tIUUA=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1765968939; x=1766573739;\n\th=content-transfer-encoding:in-reply-to:content-language:references\n\t:cc:to:subject:from:user-agent:mime-version:date:message-id:x-gm-gg\n\t:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n\tbh=Kd63nrviZS64jYZcIoB3FYbYuQhUnhGsJTdyecbFxgs=;\n\tb=bWAg7Zoa0o0bA6kKYqDj26AeF3WfqMSQnbrUiAz9Wdya1DscQqymgOdXi6t2b0IQcn\n\tcULI18t9/SkksB1krG0MhcfG34tK2pTGqvDlHPmM185SVNCtvX54u9b8fsbJRz1fg4OM\n\tZQI+Z5usRrRM71/qy+IqsYvqVQdFbYbqVy81bdB0cfZ8G1SgpOCsnKxY0LBuC7+Bzxa8\n\ttaqrGZgxlugJZhknd/8mWcTEsNFhFAelPIyBFrWW+wrBkbF7DKlc9xBPDFmXbuzPigE5\n\tvgHZ0LcxuuEJaCf+WXYl0EFXgXXr0bTpdZjrf5/S4yoPvfHW0UudBOR0Al7oLItFGoJd\n\tx0kQ==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCXIpegZOMkjjowkoO+aH6PkEEaih/HucmMD1Uj2h3sg/XqxqkTwgAZH92/3VImPSVnkQzx7k42R6FUQzzxZR28=@lists.libcamera.org","X-Gm-Message-State":"AOJu0YxEfBqoI5LaB0OxlaDHcqaiBy3CayWG/+S6rPy7+HvDOHCr+jwh\n\ttSnFufg2RfWJLlhC27SqQ8YcfP0jCLUaKkdx1AH9O+zqalyutMyJOUmBqpLgiOQnRpa+FKPW2e8\n\t6jcCBUmz1RDzjdGpmJNrlT/urmomP+CroxgTB9ZL22/8Zb9+rXhCU7j8g7BuHqUnkXpXKCF4KQw\n\tp8","X-Gm-Gg":"AY/fxX4Ablfh98AntXVYCNL026GMj4IxCwqx+Fy/LoT1u+HA7P0hKh/iievOtOYHzjG\n\tLHlO9JmcNqODr4Pq2sZCD+uKkxfIKsWzbCejEE8zEJI1o12aCL+B6EPkrMV28u4XJKNd79Yj6FW\n\tLyFDoz3WRjC1I8ItlGcJ9AhNKoWuhAz+J22Rh7gCPctFtGFFUzdeHoB/b3Wkf+k2g8NY/UdDAgy\n\tcZW3dhng3yWmmSzZkaInX4k+nnj40kGM2mgHOXvAQucHWAJG1Iw3jIqohSTZSNq3y2+qBaD9rJG\n\t48ap6YL9SZEUCw9YfGwvKNeC6ZCZZhjSlCjNNpLovZ2FEhgZ9USgXGd5PzpNnBGmANO41JaPsds\n\t/OFAdWMc6s2s/mvltK+mqbhNw5XisIa6nS7TrowWBKc590hQJXQUv7Lx1dxxqnfA0J/n2SD59sH\n\tWDIdNcVRg8e1bwfwdyzJwEATpG2lyK2MV61KhZd22J+6nmGzlOHwZyw1SKsf3hdLrItLG4TFIZz\n\tVMq","X-Received":["by 2002:ac8:5a8f:0:b0:4f1:acb9:a929 with SMTP id\n\td75a77b69052e-4f1d06701b4mr234904701cf.83.1765968939221; \n\tWed, 17 Dec 2025 02:55:39 -0800 (PST)","by 2002:ac8:5a8f:0:b0:4f1:acb9:a929 with SMTP id\n\td75a77b69052e-4f1d06701b4mr234904591cf.83.1765968938751; \n\tWed, 17 Dec 2025 02:55:38 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IFGIGieLR6Y9wmQBWjXfx2VGq14NXlK1AM+mpB7syjrr02i2giAsZZYvUcJaxUmeVnFOxweUw==","Message-ID":"<fc6cba46-a5f3-4cfd-b445-89d433d3265c@oss.qualcomm.com>","Date":"Wed, 17 Dec 2025 11:55:37 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","From":"johannes.goede@oss.qualcomm.com","Subject":"Re: [PATCH v9 16/26] libcamera: software_isp: GPU support for\n\tunpacked 10/12-bit formats","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tlibcamera-devel@lists.libcamera.org","Cc":"pavel@ucw.cz, Milan Zamazal <mzamazal@redhat.com>","References":"<20251217100138.82525-1-bryan.odonoghue@linaro.org>\n\t<20251217100138.82525-17-bryan.odonoghue@linaro.org>","Content-Language":"en-US, nl","In-Reply-To":"<20251217100138.82525-17-bryan.odonoghue@linaro.org>","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"7bit","X-Authority-Analysis":"v=2.4 cv=VLjQXtPX c=1 sm=1 tr=0 ts=69428c2b cx=c_pps\n\ta=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10\n\ta=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n\ta=20KFwNOVAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8\n\ta=TEOejGuAHz9gLB4CkQYA:9\n\ta=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 a=cvBusfyB2V15izCimMoJ:22","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjUxMjE3MDA4NiBTYWx0ZWRfX7TSMyIMo85vc\n\tkgYGQHjFh2fvGRbT+9IcnQFuD7VESVrGZeeHtJokGqm7QzMHFo6VHtLIjiPLjK9qgRMSqkj9/wV\n\tTNh3eEIDDGU9nuxwul4siIQ6ARCevMTCEKFW6gt7HjSnv0mOhVH7uWrprg2GahyZANrCZxfPwx7\n\t/vQ1TZwzLJ8y5wQxe8APcbzLP90Ko49vSQ2z9aeLmW6TxWwc47B3oORwuuo2Pb9C9KzKIAso0Cx\n\tUhSsb42nprMk1HEeTFGkhGvAf5t9WmU9BPFYqERzEauWI/Zb7VEHJrV5ojlihaJPsTQfZFnP+yR\n\t1hKMNMAqTMXbcZQHDQ/w+nJBJ350lk8Cuy1v9585gubxTSZe2D66WxD2FGBf9YyP5INqBrCud6U\n\t4hTgCrklChKK+/2ZPMrn2AIvQHdAPA==","X-Proofpoint-ORIG-GUID":"Ee27XapZKslwrBqOia6kBN-RDYGcp4q-","X-Proofpoint-GUID":"Ee27XapZKslwrBqOia6kBN-RDYGcp4q-","X-Proofpoint-Virus-Version":"vendor=baseguard\n\tengine=ICAP:2.0.293, Aquarius:18.0.1121, Hydra:6.1.9,\n\tFMLib:17.12.100.49\n\tdefinitions=2025-12-17_01,2025-12-16_05,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n\tspamscore=0 adultscore=0 suspectscore=0 bulkscore=0 malwarescore=0\n\tpriorityscore=1501 impostorscore=0 clxscore=1015 lowpriorityscore=0\n\tphishscore=0 classifier=typeunknown authscore=0 authtc= authcc=\n\troute=outbound adjust=0 reason=mlx scancount=1\n\tengine=8.22.0-2510240001\n\tdefinitions=main-2512170086","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>"}}]