From patchwork Fri Oct 16 20:29:16 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ray Strode X-Patchwork-Id: 28491 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 4B082C3305 for ; Fri, 16 Oct 2026 20:29:38 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id F292E68E57; Fri, 16 Oct 2026 22:29:37 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="nlogBqOx"; dkim-atps=neutral Received: from mail-ua1-x929.google.com (mail-ua1-x929.google.com [IPv6:2607:f8b0:4864:20::929]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 1CC4568E53 for ; Fri, 16 Oct 2026 22:29:34 +0200 (CEST) Received: by mail-ua1-x929.google.com with SMTP id a1e0cc1a2514c-988bb309c2bso165335241.1 for ; Fri, 16 Oct 2026 13:29:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792182573; x=1792787373; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Y06AnfNFiMQrdhH9G5M7N8bawbRNE2yyyj6IOBD6Fac=; b=nlogBqOxDSH1w/3hV91o+RGfcFio8JdIAGTckKdcfS+oybpmG8sCg/3YdYzWPV63ZR s+ThQFd9PN+9cWYyt/tt/sVAoIZciOe3kT3uxAdJub3+1KXMx4eDxYe5oyDU6OCjhZ9+ nlpmxGLlqx9b+UkQgEmP8rterFHtP2pbvc3ZCjEo04mpFuW4RLIVH/Z/ovGU3dME4laC +mQQZ99MFfdI1d+n3RuDT9wfSqEEB4yIi8mr0DYFDOihj7YkAxe5G919Y5QQIwU/9iPe c6YmGAOisL005Iptb4uvIvHt5693/joH/nF4owGkazutmvBRpIWNHuemLzOC1ypLuMkB K84A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792182573; x=1792787373; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Y06AnfNFiMQrdhH9G5M7N8bawbRNE2yyyj6IOBD6Fac=; b=wAfxRU7o5Wc2Lib2jIgK+HWsoAD+9Cur3mtl7j79k4oeBVYplXG95GQJrotmJKG/Sm pSUh5HMx1bqQz7deR1NAbnsKkQRMREUvDx47fQDOkwJDKxyvSTLWgh57mmhGJ/XG9pLO xmYJRsn7uCKaBu1MDQ+JO6e93eO692LOXg9DaACIHzlxwXuNOtiJ5+vgjllMn46Gi2hR vHvGajtGhs9s5uho0aW4LwASU5+vaUIoeExCqLyZulAz597so+DECYy9d26A/CaUs6aB QEwu17XqXsk6Sx9+l/MoUqpeieT4G9QUIGa1aEbxFKNC4gmMt8t1Ah+6UVsx++c2muPJ eOeA== X-Gm-Message-State: AFq9FYIXQ3kho44RC+zPn+/1JjiRb/STqDDkWNI5zYTqYLUufICyctdF OTZsaVqaFFCE+sViFNGrQLb1WLjKHO6PxyyqAqOGgVdff0MK9DQoFnsOWAvXktpyrZY= X-Gm-Gg: AYBFou2SIktyQi+AQGsuZnvgucJw43zpPeAxZffqvbWueBvo4UTARwFNOTwiqlSbFBb nZMfhbzYngfrCHmbP+TJDAzizq5e7K4tER2bJrMhaIstyf+U/2bQKxPC4wh2P8NPuxcEFX25ONW lyP6qjrz/kf6lh9CacT6h+LJNmNYhSPUhVuhLgGFzSfnICv6vuYsCrbaQSE9BlwltkpSkWz1afM LUsAkyzl62/UYmknXhX4db5d0hzo7P6WB14iWb5+9BxkbA/xG7+SeHFWr9rvoXDqirWn+TE8s6P ZKY7fiJSgexzIeOTheS3iUlh0X6HTI7CcigPtpmOHNArOJdorNqR88ZKnPETalQ+E6lGOr32sVm 6bH6psStPz4Ojtz/8vue4t4hegfJZ7Fq0TdJnot7cQtkEVau3XHWVHt/1XZUjPT0LBJ1e+j5Dui KYEwCkyqXnRVZnclQH8rKF0YrHKuGeb60n4MvWAxyes7q4LXuTFYPuYLY5DpLkMQwVlftu1zokk mbQveT7k+13MVU9uV+cYfB/+1wc X-Received: by 2002:a05:6102:955:b0:7cb:fd69:4155 with SMTP id ada2fe7eead31-7cc3672eb71mr301443137.5.1792182572918; Fri, 16 Oct 2026 13:29:32 -0700 (PDT) Received: from localhost ([2601:19c:4a00:897d:3391:ed89:5571:41a8]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-990835c29eesm2271202241.4.2026.10.16.13.29.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Oct 2026 13:29:32 -0700 (PDT) From: Ray Strode To: libcamera-devel@lists.libcamera.org Cc: johannes.goede@oss.qualcomm.com, laurent.pinchart@ideasonboard.com, kieran.bingham@ideasonboard.com Subject: [PATCH 7/7] docs: Describe software ISP integration testing Date: Fri, 16 Oct 2026 16:29:16 -0400 Message-ID: <20261016202916.1405813-8-halfline@gmail.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261016202916.1405813-1-halfline@gmail.com> References: <8fd58439-d19e-4539-962f-a6110be5c971@oss.qualcomm.com> <20261016202916.1405813-1-halfline@gmail.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" From: Ray Strode This commit documents the software ISP integration tests and the llvmpipe setup for running them without camera or GPU hardware. The guide describes the rendered-pixel and configured statistics checks, their build dependencies and runtime skips, and the stricter software-rendering setup. The software_isp component suite selects these checks independently of the existing device integration tests. Buffer import, synchronization, camera capture and completed-request metadata remain outside the software ISP checks described here. Signed-off-by: Ray Strode --- Documentation/testing.rst | 53 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/Documentation/testing.rst b/Documentation/testing.rst index 49c1f085..26c590ff 100644 --- a/Documentation/testing.rst +++ b/Documentation/testing.rst @@ -33,3 +33,56 @@ set ``-Dtest=false`` as well as enabling the desired group. Many integration tests need the kernel's vimc or vivid test devices. Integration builds automatically include the vimc pipeline handler and its IPA. Unit-only selection does not add that pipeline. + +Software ISP integration tests +------------------------------ + +The software ISP integration tests require the simple pipeline handler and +EGL/GLES support. They generate their input in memory and require neither a +camera nor DMA-BUF allocation or import support. + +.. code-block:: shell + + meson setup build-integration -Dpipelines=simple -Dipas=softisp \ + -Dsoftisp-gpu=enabled -Dtest-integration=true + ninja -C build-integration + meson test -C build-integration --suite integration --print-errorlogs + +``software-isp-gpu-crop`` renders synthetic Bayer frames through the software +ISP's shader setup and texture drawing path. It checks centered horizontal +and vertical stripes, then compares resized outputs with a centered crop of +the native render. Cases cover 8-bit and packed RAW10 input with two Bayer +patterns and four output sizes. + +``software-isp-gpu-stats`` configures the EGL backend and processes synthetic +pixels with its CPU statistics engine. It checks sample counts, symmetry, +and inclusion and exclusion of pixels at the configured crop boundaries. +This test does not create a rendering context. + +These checks cover rendering and statistics selection. Buffer import, +synchronization, camera capture and completed-request metadata require +additional integration tests. + +The ``software_isp`` component suite selects these two checks separately +from the other integration tests. + +Software rendering in CI +------------------------ + +Mesa's llvmpipe driver can run these tests without a GPU. The ``llvmpipe`` +Meson test setup selects surfaceless EGL and forces Mesa software rendering: + +.. code-block:: shell + + meson test -C build-integration --suite software_isp --setup llvmpipe \ + --print-errorlogs + +The runner needs Mesa EGL/GLES libraries and the llvmpipe driver. The crop +test prints its GL renderer so CI logs identify the implementation in use. +An unavailable EGL display is a failure with this setup, preventing missing +rendering coverage from being reported as a successful skipped test. + +With the normal setup, an unavailable EGL display produces a test skip. +Shader compilation, rendering, pixel comparisons and statistics mismatches +are failures in either setup. The software ISP integration tests are not +registered when the software ISP or its EGL backend is disabled at build time.