From patchwork Tue Aug 25 12:34:10 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= X-Patchwork-Id: 28082 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 54AEAC3308 for ; Tue, 25 Aug 2026 12:34:19 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 0A06D68405; Tue, 25 Aug 2026 14:34:18 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="cbllG4RJ"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 15BF56834C for ; Tue, 25 Aug 2026 14:34:16 +0200 (CEST) Received: from pb-laptop.local (185.221.143.32.nat.pool.zt.hu [185.221.143.32]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id BCB8B2EC for ; Tue, 25 Aug 2026 14:32:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1787661170; bh=YF3Il160a1uCL3jdbdbl3I52Pk5e+fY38lrmAQr54Yg=; h=From:To:Subject:Date:From; b=cbllG4RJvNGR7BhbTmKwAqGU0/tbcGQpEu5TMCPoslCV1l+uceLEDBmutcq2FbG5T WEYSbR+c0qE5HWj4UMrZqXUbKsC189WLq5+ZR42wd65YV4QLvK3WEzEopxynjPmnRk K5gjJGxU91OF9/YEXLi90NCGH0UaRHvDC3JGSECM= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Subject: [PATCH v1 0/2] treewide: Use `std::span` Date: Tue, 25 Aug 2026 14:34:10 +0200 Message-ID: <20260825123412.837696-1-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.55.0 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" These two changes mostly finish the C++20 migration by switching to `std::span`. This has so far been postponed because gcc 9 does not support `std::span`, but gcc 9 has just been dropped from CI. Some points: 0. patchwork did not pick up the "Use `std::span`" commit when it was sent the last time: https://patchwork.libcamera.org/cover/26313/ 1. should the minimum compiler versions be raised? 2. notably, this also affects the public interfaces (e.g. Camera::generateConfiguration(), Control<>) Barnabás Pőcze (2): treewide: Use `std::span` libcamera: base: span: Deprecate it Documentation/guides/pipeline-handler.rst | 4 +- include/libcamera/base/file.h | 10 ++-- include/libcamera/base/span.h | 16 +++---- include/libcamera/base/thread.h | 4 +- include/libcamera/camera.h | 6 +-- include/libcamera/controls.h | 22 ++++++--- include/libcamera/framebuffer.h | 10 ++-- .../libcamera/internal/byte_stream_buffer.h | 6 +-- include/libcamera/internal/camera_sensor.h | 6 +-- .../converter/converter_dw100_vertexmap.h | 5 +- include/libcamera/internal/egl.h | 14 +++--- include/libcamera/internal/framebuffer.h | 4 +- .../libcamera/internal/mapped_framebuffer.h | 4 +- include/libcamera/internal/matrix.h | 26 +++++------ include/libcamera/internal/pipeline_handler.h | 2 +- include/libcamera/internal/process.h | 6 +-- include/libcamera/internal/pub_key.h | 7 ++- .../libcamera/internal/shared_mem_object.h | 6 +-- include/libcamera/internal/v4l2_device.h | 6 +-- include/libcamera/internal/vector.h | 4 +- src/android/camera_buffer.h | 11 +++-- src/android/camera_capabilities.cpp | 3 +- src/android/camera_request.cpp | 4 +- src/android/jpeg/encoder.h | 4 +- src/android/jpeg/encoder_jea.cpp | 2 +- src/android/jpeg/encoder_jea.h | 2 +- src/android/jpeg/encoder_libjpeg.cpp | 10 ++-- src/android/jpeg/encoder_libjpeg.h | 12 ++--- src/android/jpeg/exif.cpp | 2 +- src/android/jpeg/exif.h | 7 ++- src/android/jpeg/post_processor_jpeg.cpp | 2 +- src/android/mm/cros_camera_buffer.cpp | 4 +- .../mm/cros_frame_buffer_allocator.cpp | 2 +- src/android/mm/generic_camera_buffer.cpp | 4 +- .../mm/generic_frame_buffer_allocator.cpp | 2 +- src/apps/cam/capture_script.cpp | 12 ++--- src/apps/cam/drm.cpp | 6 +-- src/apps/cam/drm.h | 4 +- src/apps/cam/file_sink.cpp | 2 +- src/apps/cam/sdl_sink.cpp | 4 +- src/apps/cam/sdl_texture.h | 4 +- src/apps/cam/sdl_texture_1plane.cpp | 2 +- src/apps/cam/sdl_texture_1plane.h | 2 +- src/apps/cam/sdl_texture_mjpg.cpp | 4 +- src/apps/cam/sdl_texture_mjpg.h | 4 +- src/apps/cam/sdl_texture_yuv.cpp | 2 +- src/apps/cam/sdl_texture_yuv.h | 2 +- src/apps/common/dng_writer.cpp | 4 +- src/apps/common/image.cpp | 6 +-- src/apps/common/image.h | 10 ++-- src/apps/common/ppm_writer.cpp | 2 +- src/apps/common/ppm_writer.h | 4 +- src/apps/ipa-verify/main.cpp | 4 +- src/apps/lc-compliance/helpers/capture.cpp | 2 +- src/apps/lc-compliance/helpers/capture.h | 3 +- src/gstreamer/gstlibcamera-controls.cpp.in | 4 +- src/gstreamer/gstlibcamera-utils.cpp | 20 ++++---- src/ipa/ipu3/algorithms/af.cpp | 6 +-- src/ipa/ipu3/algorithms/af.h | 2 +- src/ipa/ipu3/algorithms/agc.cpp | 2 +- src/ipa/ipu3/ipu3.cpp | 8 ++-- src/ipa/libipa/awb.h | 2 +- src/ipa/libipa/awb_bayes.cpp | 2 +- src/ipa/libipa/awb_bayes.h | 4 +- src/ipa/libipa/exposure_mode_helper.cpp | 2 +- src/ipa/libipa/exposure_mode_helper.h | 4 +- src/ipa/libipa/histogram.cpp | 4 +- src/ipa/libipa/histogram.h | 8 ++-- src/ipa/libipa/lsc_base.h | 2 - src/ipa/libipa/lsc_polynomial.cpp | 4 +- src/ipa/libipa/lsc_polynomial.h | 7 ++- src/ipa/libipa/lsc_table.h | 1 - src/ipa/libipa/v4l2_params.cpp | 12 ++--- src/ipa/libipa/v4l2_params.h | 18 ++++---- src/ipa/libipa/v4l2_stats.cpp | 8 ++-- src/ipa/libipa/v4l2_stats.h | 13 +++--- src/ipa/mali-c55/algorithms/agc.cpp | 10 ++-- src/ipa/mali-c55/mali-c55.cpp | 4 +- src/ipa/mali-c55/params.h | 2 +- src/ipa/rkisp1/algorithms/agc.cpp | 2 +- src/ipa/rkisp1/algorithms/agc.h | 7 +-- src/ipa/rkisp1/algorithms/lsc.cpp | 3 +- src/ipa/rkisp1/params.cpp | 2 +- src/ipa/rkisp1/params.h | 8 ++-- src/ipa/rkisp1/rkisp1.cpp | 2 +- src/ipa/rpi/cam_helper/cam_helper.cpp | 4 +- src/ipa/rpi/cam_helper/cam_helper.h | 6 +-- src/ipa/rpi/cam_helper/cam_helper_imx296.cpp | 4 +- src/ipa/rpi/cam_helper/cam_helper_imx477.cpp | 4 +- src/ipa/rpi/cam_helper/cam_helper_imx519.cpp | 4 +- src/ipa/rpi/cam_helper/cam_helper_imx708.cpp | 4 +- src/ipa/rpi/cam_helper/md_parser.h | 9 ++-- src/ipa/rpi/cam_helper/md_parser_smia.cpp | 4 +- src/ipa/rpi/common/ipa_base.cpp | 20 ++++---- src/ipa/rpi/common/ipa_base.h | 2 +- src/ipa/rpi/controller/af_algorithm.h | 5 +- src/ipa/rpi/controller/rpi/af.cpp | 2 +- src/ipa/rpi/controller/rpi/af.h | 2 +- src/ipa/rpi/controller/rpi/alsc.cpp | 2 +- src/ipa/rpi/controller/rpi/awb_nn.cpp | 3 +- src/ipa/rpi/pisp/pisp.cpp | 10 ++-- src/ipa/rpi/vc4/vc4.cpp | 46 +++++++++---------- src/libcamera/base/backtrace.cpp | 8 ++-- src/libcamera/base/file.cpp | 6 +-- src/libcamera/base/thread.cpp | 2 +- src/libcamera/byte_stream_buffer.cpp | 8 ++-- src/libcamera/camera.cpp | 2 +- src/libcamera/control_ids_rpi.yaml | 4 +- src/libcamera/control_serializer.cpp | 2 +- src/libcamera/controls.cpp | 22 ++++----- src/libcamera/converter/converter_dw100.cpp | 2 +- .../converter/converter_dw100_vertexmap.cpp | 4 +- src/libcamera/egl.cpp | 12 ++--- src/libcamera/framebuffer.cpp | 6 +-- src/libcamera/ipa_data_serializer.cpp | 2 +- src/libcamera/ipa_manager.cpp | 2 +- src/libcamera/ipa_module.cpp | 16 +++---- src/libcamera/mapped_framebuffer.cpp | 4 +- src/libcamera/matrix.cpp | 36 +++++++-------- src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 4 +- src/libcamera/pipeline/ipu3/ipu3.cpp | 6 +-- src/libcamera/pipeline/mali-c55/mali-c55.cpp | 6 +-- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 6 +-- src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 2 +- src/libcamera/pipeline/rkisp1/rkisp1_path.h | 6 +-- .../pipeline/rpi/common/pipeline_base.cpp | 12 ++--- .../pipeline/rpi/common/pipeline_base.h | 2 +- src/libcamera/pipeline/rpi/pisp/pisp.cpp | 4 +- src/libcamera/pipeline/rpi/vc4/vc4.cpp | 2 +- src/libcamera/pipeline/simple/simple.cpp | 4 +- src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 6 +-- src/libcamera/pipeline/vimc/vimc.cpp | 6 +-- src/libcamera/pipeline/virtual/virtual.cpp | 6 +-- src/libcamera/process.cpp | 4 +- src/libcamera/pub_key.cpp | 6 +-- src/libcamera/sensor/camera_sensor_legacy.cpp | 8 ++-- src/libcamera/sensor/camera_sensor_raw.cpp | 8 ++-- src/libcamera/shared_mem_object.cpp | 6 +-- src/libcamera/software_isp/debayer_egl.cpp | 6 +-- src/libcamera/v4l2_device.cpp | 14 +++--- src/libcamera/v4l2_videodevice.cpp | 6 +-- src/libcamera/value_node.cpp | 4 +- src/libcamera/vector.cpp | 2 +- src/libcamera/yaml_parser.cpp | 2 +- src/py/libcamera/py_helpers.cpp | 2 +- src/py/libcamera/py_main.cpp | 4 +- src/v4l2/v4l2_camera_proxy.cpp | 2 +- src/v4l2/v4l2_compat_manager.cpp | 2 +- test/controls/control_value.cpp | 28 +++++------ test/file.cpp | 2 +- test/span.cpp | 1 + test/utils.cpp | 4 +- test/v4l2_videodevice/controls.cpp | 4 +- utils/codegen/controls.py | 4 +- utils/gen-debug-controls.py | 6 +-- 155 files changed, 484 insertions(+), 477 deletions(-) --- 2.55.0