[35/35] libcamera: software_isp: Add a gpuisp todo list
diff mbox series

Message ID 20250611013245.133785-36-bryan.odonoghue@linaro.org
State New
Headers show
Series
  • Add GLES 2.0 GPUISP to libcamera
Related show

Commit Message

Bryan O'Donoghue June 11, 2025, 1:32 a.m. UTC
List the series of things to do in GPU ISP in perceived order of
difficulty.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 src/libcamera/software_isp/gpuisp-todo.txt | 42 ++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 src/libcamera/software_isp/gpuisp-todo.txt

Comments

Milan Zamazal June 18, 2025, 12:51 p.m. UTC | #1
Bryan O'Donoghue <bryan.odonoghue@linaro.org> writes:

> List the series of things to do in GPU ISP in perceived order of
> difficulty.
>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  src/libcamera/software_isp/gpuisp-todo.txt | 42 ++++++++++++++++++++++
>  1 file changed, 42 insertions(+)
>  create mode 100644 src/libcamera/software_isp/gpuisp-todo.txt

Could it be added to the current `TODO' file or named a bit more
consistently with the already present `TODO'?

Other than that, the list looks fine to me.

>
> diff --git a/src/libcamera/software_isp/gpuisp-todo.txt b/src/libcamera/software_isp/gpuisp-todo.txt
> new file mode 100644
> index 00000000..0ff82f81
> --- /dev/null
> +++ b/src/libcamera/software_isp/gpuisp-todo.txt
> @@ -0,0 +1,42 @@
> +List the TODOs in perceived order of ease.
> +
> +24 bit output support:
> +	- Take the BPP we already capture and get a 24 bit GBM surface
> +	- Pass a compile-time parameter to the shaders to tell them to do
> +	  gl_FragColor = rgb not gl_FragColor = rgba
> +
> +Make GPUISP default:
> +	- Right now the environment variable allows over-riding to swtich
> +	  from CPU to GPU.
> +	- Once we support 24 BPP output on GPUISP we will have the same
> +	  pixel format support as CPU and can set the default to GPU without
> +	  regressing functionality
> +
> +glTexture1D:
> +	- Initial code was developed for < GLES 2.O but since we have fixed
> +	  on GLES >= 2.0 this means we can use glTexture1D
> +	- Provided this is so amend the shaders to do val = texture(x, y, 0);
> +	  not texture(x, y, 0.5) the 0.5 is because of using glTexture2D
> +
> +Surfaceless GBM:
> +	- We get a GBM surface and then have to swap buffers
> +	  If we rework for surfaceless GBM and EGL then the swap buffer can
> +	  be dropped.
> +
> +dma-buf texture upload:
> +	- Currently we pass the input buffer to glCreateTexture2D.
> +	  We should be able to make the upload of the input buffer go faster
> +	  by using eglCreateImageKHR and enumerated the dma-buf contents.
> +
> +Render-to-texture:
> +	- Right now we render to the GBM provided surface framebuffer
> +	  and then memcpy from that buffer to the target output buffer.
> +	  This necessitates flushing the cache on the target buffer in
> +	  addition to the memcpy().
> +	- Render-to-texture where we generate the target framebuffer
> +	  directly from a dma-buf handle will mitigate the memcpy() phase.
> +	- It should be the case then that the consumer of the output buffer
> +	  i.e. the thing that's not libcamera is responsible to flush the cache
> +	  if-and-only-if that user writes to the buffer.
> +	- We need to flush the cache on the buffer because we are memcpying() to it.
> +

Patch
diff mbox series

diff --git a/src/libcamera/software_isp/gpuisp-todo.txt b/src/libcamera/software_isp/gpuisp-todo.txt
new file mode 100644
index 00000000..0ff82f81
--- /dev/null
+++ b/src/libcamera/software_isp/gpuisp-todo.txt
@@ -0,0 +1,42 @@ 
+List the TODOs in perceived order of ease.
+
+24 bit output support:
+	- Take the BPP we already capture and get a 24 bit GBM surface
+	- Pass a compile-time parameter to the shaders to tell them to do
+	  gl_FragColor = rgb not gl_FragColor = rgba
+
+Make GPUISP default:
+	- Right now the environment variable allows over-riding to swtich
+	  from CPU to GPU.
+	- Once we support 24 BPP output on GPUISP we will have the same
+	  pixel format support as CPU and can set the default to GPU without
+	  regressing functionality
+
+glTexture1D:
+	- Initial code was developed for < GLES 2.O but since we have fixed
+	  on GLES >= 2.0 this means we can use glTexture1D
+	- Provided this is so amend the shaders to do val = texture(x, y, 0);
+	  not texture(x, y, 0.5) the 0.5 is because of using glTexture2D
+
+Surfaceless GBM:
+	- We get a GBM surface and then have to swap buffers
+	  If we rework for surfaceless GBM and EGL then the swap buffer can
+	  be dropped.
+
+dma-buf texture upload:
+	- Currently we pass the input buffer to glCreateTexture2D.
+	  We should be able to make the upload of the input buffer go faster
+	  by using eglCreateImageKHR and enumerated the dma-buf contents.
+
+Render-to-texture:
+	- Right now we render to the GBM provided surface framebuffer
+	  and then memcpy from that buffer to the target output buffer.
+	  This necessitates flushing the cache on the target buffer in
+	  addition to the memcpy().
+	- Render-to-texture where we generate the target framebuffer
+	  directly from a dma-buf handle will mitigate the memcpy() phase.
+	- It should be the case then that the consumer of the output buffer
+	  i.e. the thing that's not libcamera is responsible to flush the cache
+	  if-and-only-if that user writes to the buffer.
+	- We need to flush the cache on the buffer because we are memcpying() to it.
+