| Message ID | 20260106170059.56193-1-bryan.odonoghue@linaro.org |
|---|---|
| Headers | show |
| Series |
|
| Related | show |
Retested the series on all my mobile devices (Pixel3a, OnePlus6, Fairphone 5, Librem5 (1), PinePhone (1)), looking great, thanks! Tested-by: Robert Mader <robert.mader@collabora.com> 1: with extra patches to enable the swISP On 06.01.26 18:00, Bryan O'Donoghue wrote: > v11: > - Rebases on today's tip of tree > - Applies Tested-by from Hans > - Applies RB from Robert and Milan > - Fixes ~ every issue Barnabas raised in previous cycles with exception of: > a. Header checks for GBM and gles are required in at least one > of the ci checks respectively > b. programId_ removal happens in stop() not in destructor > > Full testable branch > Link: https://gitlab.freedesktop.org/camera/libcamera-softisp/-/tree/0.6.0-gpuisp-v11-a?ref_type=heads > > v10: > - Drop selfEnumerating Ccm object - libcamera-softisp meeting agreement > - Switch on uncalibrated yaml CCM @ 65k by default - softisp meeting agreement > - Pass contrastExp from lut into shaders instead of calculating contrastExp > for each pixel as @ v9 - softisp meeting agreement > - Adds in RB as indicated by Milan and Robert > - Fixes check of unique_ptr - Barnabas @ v8 review > > v9: > > - Rebase on 0.6.0-tip including precursor now merged > > _______ > | YAY! | > |_______| > ||| > /|||\ > / ||| \ > / ||| \ > | > / \ > / \ > > - Number of fixes from the formatter now that I'm aware of its existence/use - Bryan/Milan > - Includes Robert's changes for the projection matrix > - Fixes the case where the uncalibrated.yaml file is enabled. > Iterates through list of loaded algorithms matching Ccm. - Milan/Bryan > > > Bryan O'Donoghue (21): > libcamera: software_isp: debayer: Latch contrastExp not contrast to > debayer parameters > libcamera: software_isp: gbm: Add a GBM helper class for GPU surface > access > libcamera: software_isp: egl: Add a eGL base helper class > qcam: viewfinder_gl: Set no-op Bayer shader values > libcamera: shaders: Use highp not mediump for float precision > libcamera: shaders: Extend debayer shaders to apply CCM gains > libcamera: shaders: Extend bayer shaders to support swapping R and B > on output > libcamera: shaders: Add support for black level compensation > libcamera: shaders: Add support for Gamma > libcamera: shaders: Add support for contrast > libcamera: software_isp: Add member variables to track selected > input/output pixelFormat > libcamera: software_isp: Add a Size_ member variable to pass to eGL > later > libcamera: software_isp: debayer_egl: Add an eGL Debayer class > libcamera: software_isp: debayer_cpu: Make getInputConfig and > getOutputConfig static > libcamera: software_isp: debayer_egl: Make DebayerEGL an environment > option > ipa: simple: Add a flag to indicate gpuIspEnabled > libcamera: software_isp: lut: Skip calculation lookup tables if > gpuIspEnabled is true > libcamera: software_isp: lut: Change default Gamma to 1.0/2.2 > libcamera: software_isp: Switch on default CCM at 65k > libcamera: software_isp: debayer_egl: Make gpuisp default softisp mode > libcamera: software_isp: Add a gpuisp todo list > > Hans de Goede (1): > libcamera: shaders: Fix input sampling when width != stride > > Milan Zamazal (2): > libcamera: shaders: Rename bayer_8 to bayer_unpacked > libcamera: software_isp: GPU support for unpacked 10/12-bit formats > > include/libcamera/internal/egl.h | 152 ++++ > include/libcamera/internal/gbm.h | 55 ++ > include/libcamera/internal/meson.build | 2 + > .../internal/software_isp/debayer_params.h | 2 +- > include/libcamera/ipa/soft.mojom | 3 +- > src/apps/qcam/assets/shader/shaders.qrc | 4 +- > src/apps/qcam/viewfinder_gl.cpp | 42 +- > src/apps/qcam/viewfinder_gl.h | 12 + > src/ipa/simple/algorithms/lut.cpp | 78 ++- > src/ipa/simple/data/uncalibrated.yaml | 12 +- > src/ipa/simple/ipa_context.h | 2 + > src/ipa/simple/soft_simple.cpp | 3 + > src/libcamera/egl.cpp | 608 ++++++++++++++++ > src/libcamera/gbm.cpp | 107 +++ > src/libcamera/meson.build | 33 + > src/libcamera/shaders/RGB.frag | 2 +- > src/libcamera/shaders/YUV_2_planes.frag | 2 +- > src/libcamera/shaders/YUV_3_planes.frag | 2 +- > src/libcamera/shaders/YUV_packed.frag | 2 +- > src/libcamera/shaders/bayer_1x_packed.frag | 77 ++- > .../{bayer_8.frag => bayer_unpacked.frag} | 92 ++- > .../{bayer_8.vert => bayer_unpacked.vert} | 6 +- > src/libcamera/shaders/meson.build | 4 +- > src/libcamera/software_isp/debayer.cpp | 17 +- > src/libcamera/software_isp/debayer.h | 3 + > src/libcamera/software_isp/debayer_cpu.h | 4 +- > src/libcamera/software_isp/debayer_egl.cpp | 651 ++++++++++++++++++ > src/libcamera/software_isp/debayer_egl.h | 124 ++++ > src/libcamera/software_isp/gpuisp-todo.txt | 40 ++ > src/libcamera/software_isp/meson.build | 8 + > src/libcamera/software_isp/software_isp.cpp | 28 +- > 31 files changed, 2106 insertions(+), 71 deletions(-) > create mode 100644 include/libcamera/internal/egl.h > create mode 100644 include/libcamera/internal/gbm.h > create mode 100644 src/libcamera/egl.cpp > create mode 100644 src/libcamera/gbm.cpp > rename src/libcamera/shaders/{bayer_8.frag => bayer_unpacked.frag} (53%) > rename src/libcamera/shaders/{bayer_8.vert => bayer_unpacked.vert} (90%) > create mode 100644 src/libcamera/software_isp/debayer_egl.cpp > create mode 100644 src/libcamera/software_isp/debayer_egl.h > create mode 100644 src/libcamera/software_isp/gpuisp-todo.txt >
Hi, On 6-Jan-26 18:00, Bryan O'Donoghue wrote: > v11: > - Rebases on today's tip of tree > - Applies Tested-by from Hans It looks like I messed up giving my Tested-by. Kieran, can you please do: s/johannes.goede@qualcomm.com/johannes.goede@oss.qualcomm.com/ in the entire patch-set when applying these ? Bryan, same request to you if instead of Kieran applying this a v11 is necessary. Sorry for messing this up. Regards, Hans > - Applies RB from Robert and Milan > - Fixes ~ every issue Barnabas raised in previous cycles with exception of: > a. Header checks for GBM and gles are required in at least one > of the ci checks respectively > b. programId_ removal happens in stop() not in destructor > > Full testable branch > Link: https://gitlab.freedesktop.org/camera/libcamera-softisp/-/tree/0.6.0-gpuisp-v11-a?ref_type=heads > > v10: > - Drop selfEnumerating Ccm object - libcamera-softisp meeting agreement > - Switch on uncalibrated yaml CCM @ 65k by default - softisp meeting agreement > - Pass contrastExp from lut into shaders instead of calculating contrastExp > for each pixel as @ v9 - softisp meeting agreement > - Adds in RB as indicated by Milan and Robert > - Fixes check of unique_ptr - Barnabas @ v8 review > > v9: > > - Rebase on 0.6.0-tip including precursor now merged > > _______ > | YAY! | > |_______| > ||| > /|||\ > / ||| \ > / ||| \ > | > / \ > / \ > > - Number of fixes from the formatter now that I'm aware of its existence/use - Bryan/Milan > - Includes Robert's changes for the projection matrix > - Fixes the case where the uncalibrated.yaml file is enabled. > Iterates through list of loaded algorithms matching Ccm. - Milan/Bryan > > > Bryan O'Donoghue (21): > libcamera: software_isp: debayer: Latch contrastExp not contrast to > debayer parameters > libcamera: software_isp: gbm: Add a GBM helper class for GPU surface > access > libcamera: software_isp: egl: Add a eGL base helper class > qcam: viewfinder_gl: Set no-op Bayer shader values > libcamera: shaders: Use highp not mediump for float precision > libcamera: shaders: Extend debayer shaders to apply CCM gains > libcamera: shaders: Extend bayer shaders to support swapping R and B > on output > libcamera: shaders: Add support for black level compensation > libcamera: shaders: Add support for Gamma > libcamera: shaders: Add support for contrast > libcamera: software_isp: Add member variables to track selected > input/output pixelFormat > libcamera: software_isp: Add a Size_ member variable to pass to eGL > later > libcamera: software_isp: debayer_egl: Add an eGL Debayer class > libcamera: software_isp: debayer_cpu: Make getInputConfig and > getOutputConfig static > libcamera: software_isp: debayer_egl: Make DebayerEGL an environment > option > ipa: simple: Add a flag to indicate gpuIspEnabled > libcamera: software_isp: lut: Skip calculation lookup tables if > gpuIspEnabled is true > libcamera: software_isp: lut: Change default Gamma to 1.0/2.2 > libcamera: software_isp: Switch on default CCM at 65k > libcamera: software_isp: debayer_egl: Make gpuisp default softisp mode > libcamera: software_isp: Add a gpuisp todo list > > Hans de Goede (1): > libcamera: shaders: Fix input sampling when width != stride > > Milan Zamazal (2): > libcamera: shaders: Rename bayer_8 to bayer_unpacked > libcamera: software_isp: GPU support for unpacked 10/12-bit formats > > include/libcamera/internal/egl.h | 152 ++++ > include/libcamera/internal/gbm.h | 55 ++ > include/libcamera/internal/meson.build | 2 + > .../internal/software_isp/debayer_params.h | 2 +- > include/libcamera/ipa/soft.mojom | 3 +- > src/apps/qcam/assets/shader/shaders.qrc | 4 +- > src/apps/qcam/viewfinder_gl.cpp | 42 +- > src/apps/qcam/viewfinder_gl.h | 12 + > src/ipa/simple/algorithms/lut.cpp | 78 ++- > src/ipa/simple/data/uncalibrated.yaml | 12 +- > src/ipa/simple/ipa_context.h | 2 + > src/ipa/simple/soft_simple.cpp | 3 + > src/libcamera/egl.cpp | 608 ++++++++++++++++ > src/libcamera/gbm.cpp | 107 +++ > src/libcamera/meson.build | 33 + > src/libcamera/shaders/RGB.frag | 2 +- > src/libcamera/shaders/YUV_2_planes.frag | 2 +- > src/libcamera/shaders/YUV_3_planes.frag | 2 +- > src/libcamera/shaders/YUV_packed.frag | 2 +- > src/libcamera/shaders/bayer_1x_packed.frag | 77 ++- > .../{bayer_8.frag => bayer_unpacked.frag} | 92 ++- > .../{bayer_8.vert => bayer_unpacked.vert} | 6 +- > src/libcamera/shaders/meson.build | 4 +- > src/libcamera/software_isp/debayer.cpp | 17 +- > src/libcamera/software_isp/debayer.h | 3 + > src/libcamera/software_isp/debayer_cpu.h | 4 +- > src/libcamera/software_isp/debayer_egl.cpp | 651 ++++++++++++++++++ > src/libcamera/software_isp/debayer_egl.h | 124 ++++ > src/libcamera/software_isp/gpuisp-todo.txt | 40 ++ > src/libcamera/software_isp/meson.build | 8 + > src/libcamera/software_isp/software_isp.cpp | 28 +- > 31 files changed, 2106 insertions(+), 71 deletions(-) > create mode 100644 include/libcamera/internal/egl.h > create mode 100644 include/libcamera/internal/gbm.h > create mode 100644 src/libcamera/egl.cpp > create mode 100644 src/libcamera/gbm.cpp > rename src/libcamera/shaders/{bayer_8.frag => bayer_unpacked.frag} (53%) > rename src/libcamera/shaders/{bayer_8.vert => bayer_unpacked.vert} (90%) > create mode 100644 src/libcamera/software_isp/debayer_egl.cpp > create mode 100644 src/libcamera/software_isp/debayer_egl.h > create mode 100644 src/libcamera/software_isp/gpuisp-todo.txt >
On 07/01/2026 14:26, johannes.goede@oss.qualcomm.com wrote: > Hi, > > On 6-Jan-26 18:00, Bryan O'Donoghue wrote: >> v11: >> - Rebases on today's tip of tree >> - Applies Tested-by from Hans > > It looks like I messed up giving my Tested-by. > > Kieran, can you please do: > > s/johannes.goede@qualcomm.com/johannes.goede@oss.qualcomm.com/ > > in the entire patch-set when applying these ? > > Bryan, same request to you if instead of Kieran applying > this a v11 is necessary. > > Sorry for messing this up. > > Regards, > > Hans I feel better about forgetting to cherry-pick the RB/Tested-by now :) --- bod
v11: - Rebases on today's tip of tree - Applies Tested-by from Hans - Applies RB from Robert and Milan - Fixes ~ every issue Barnabas raised in previous cycles with exception of: a. Header checks for GBM and gles are required in at least one of the ci checks respectively b. programId_ removal happens in stop() not in destructor Full testable branch Link: https://gitlab.freedesktop.org/camera/libcamera-softisp/-/tree/0.6.0-gpuisp-v11-a?ref_type=heads v10: - Drop selfEnumerating Ccm object - libcamera-softisp meeting agreement - Switch on uncalibrated yaml CCM @ 65k by default - softisp meeting agreement - Pass contrastExp from lut into shaders instead of calculating contrastExp for each pixel as @ v9 - softisp meeting agreement - Adds in RB as indicated by Milan and Robert - Fixes check of unique_ptr - Barnabas @ v8 review v9: - Rebase on 0.6.0-tip including precursor now merged _______ | YAY! | |_______| ||| /|||\ / ||| \ / ||| \ | / \ / \ - Number of fixes from the formatter now that I'm aware of its existence/use - Bryan/Milan - Includes Robert's changes for the projection matrix - Fixes the case where the uncalibrated.yaml file is enabled. Iterates through list of loaded algorithms matching Ccm. - Milan/Bryan Bryan O'Donoghue (21): libcamera: software_isp: debayer: Latch contrastExp not contrast to debayer parameters libcamera: software_isp: gbm: Add a GBM helper class for GPU surface access libcamera: software_isp: egl: Add a eGL base helper class qcam: viewfinder_gl: Set no-op Bayer shader values libcamera: shaders: Use highp not mediump for float precision libcamera: shaders: Extend debayer shaders to apply CCM gains libcamera: shaders: Extend bayer shaders to support swapping R and B on output libcamera: shaders: Add support for black level compensation libcamera: shaders: Add support for Gamma libcamera: shaders: Add support for contrast libcamera: software_isp: Add member variables to track selected input/output pixelFormat libcamera: software_isp: Add a Size_ member variable to pass to eGL later libcamera: software_isp: debayer_egl: Add an eGL Debayer class libcamera: software_isp: debayer_cpu: Make getInputConfig and getOutputConfig static libcamera: software_isp: debayer_egl: Make DebayerEGL an environment option ipa: simple: Add a flag to indicate gpuIspEnabled libcamera: software_isp: lut: Skip calculation lookup tables if gpuIspEnabled is true libcamera: software_isp: lut: Change default Gamma to 1.0/2.2 libcamera: software_isp: Switch on default CCM at 65k libcamera: software_isp: debayer_egl: Make gpuisp default softisp mode libcamera: software_isp: Add a gpuisp todo list Hans de Goede (1): libcamera: shaders: Fix input sampling when width != stride Milan Zamazal (2): libcamera: shaders: Rename bayer_8 to bayer_unpacked libcamera: software_isp: GPU support for unpacked 10/12-bit formats include/libcamera/internal/egl.h | 152 ++++ include/libcamera/internal/gbm.h | 55 ++ include/libcamera/internal/meson.build | 2 + .../internal/software_isp/debayer_params.h | 2 +- include/libcamera/ipa/soft.mojom | 3 +- src/apps/qcam/assets/shader/shaders.qrc | 4 +- src/apps/qcam/viewfinder_gl.cpp | 42 +- src/apps/qcam/viewfinder_gl.h | 12 + src/ipa/simple/algorithms/lut.cpp | 78 ++- src/ipa/simple/data/uncalibrated.yaml | 12 +- src/ipa/simple/ipa_context.h | 2 + src/ipa/simple/soft_simple.cpp | 3 + src/libcamera/egl.cpp | 608 ++++++++++++++++ src/libcamera/gbm.cpp | 107 +++ src/libcamera/meson.build | 33 + src/libcamera/shaders/RGB.frag | 2 +- src/libcamera/shaders/YUV_2_planes.frag | 2 +- src/libcamera/shaders/YUV_3_planes.frag | 2 +- src/libcamera/shaders/YUV_packed.frag | 2 +- src/libcamera/shaders/bayer_1x_packed.frag | 77 ++- .../{bayer_8.frag => bayer_unpacked.frag} | 92 ++- .../{bayer_8.vert => bayer_unpacked.vert} | 6 +- src/libcamera/shaders/meson.build | 4 +- src/libcamera/software_isp/debayer.cpp | 17 +- src/libcamera/software_isp/debayer.h | 3 + src/libcamera/software_isp/debayer_cpu.h | 4 +- src/libcamera/software_isp/debayer_egl.cpp | 651 ++++++++++++++++++ src/libcamera/software_isp/debayer_egl.h | 124 ++++ src/libcamera/software_isp/gpuisp-todo.txt | 40 ++ src/libcamera/software_isp/meson.build | 8 + src/libcamera/software_isp/software_isp.cpp | 28 +- 31 files changed, 2106 insertions(+), 71 deletions(-) create mode 100644 include/libcamera/internal/egl.h create mode 100644 include/libcamera/internal/gbm.h create mode 100644 src/libcamera/egl.cpp create mode 100644 src/libcamera/gbm.cpp rename src/libcamera/shaders/{bayer_8.frag => bayer_unpacked.frag} (53%) rename src/libcamera/shaders/{bayer_8.vert => bayer_unpacked.vert} (90%) create mode 100644 src/libcamera/software_isp/debayer_egl.cpp create mode 100644 src/libcamera/software_isp/debayer_egl.h create mode 100644 src/libcamera/software_isp/gpuisp-todo.txt