diff --git a/src/libcamera/software_isp/software_isp_pipeline_gpu.cpp b/src/libcamera/software_isp/software_isp_pipeline_gpu.cpp
index 18a8ae17a..3c9b48154 100644
--- a/src/libcamera/software_isp/software_isp_pipeline_gpu.cpp
+++ b/src/libcamera/software_isp/software_isp_pipeline_gpu.cpp
@@ -41,7 +41,7 @@ namespace libcamera {
  * \param[in] cm The camera manager
  */
 SoftwareIspPipelineGpu::SoftwareIspPipelineGpu(std::unique_ptr<SwStatsCpu> stats, const CameraManager &cm)
-	: SoftwareIspPipeline(cm), stats_(std::move(stats)), gpuIspShaderPassDemosiac_(egl_)
+	: SoftwareIspPipeline(cm), stats_(std::move(stats)), gpuIspShaderPassBlcNormalise_(egl_), gpuIspShaderPassDemosiac_(egl_)
 {
 }
 
@@ -113,6 +113,10 @@ int SoftwareIspPipelineGpu::initBayerShaders(PixelFormat inputFormat, PixelForma
 {
 	int ret;
 
+	ret = gpuIspShaderPassBlcNormalise_.initShaders(inputFormat, outputFormat);
+	if (ret)
+		return ret;
+
 	ret = gpuIspShaderPassDemosiac_.initShaders(inputFormat, outputFormat);
 
 	return ret;
diff --git a/src/libcamera/software_isp/software_isp_pipeline_gpu.h b/src/libcamera/software_isp/software_isp_pipeline_gpu.h
index fcd622492..8a922f658 100644
--- a/src/libcamera/software_isp/software_isp_pipeline_gpu.h
+++ b/src/libcamera/software_isp/software_isp_pipeline_gpu.h
@@ -24,6 +24,7 @@
 #include "libcamera/internal/software_isp/swstats_cpu.h"
 
 #include "software_isp_pipeline.h"
+#include "gpu_pipeline_shader_pass_blc_normalise.h"
 #include "gpu_pipeline_shader_pass_demosiac.h"
 
 namespace libcamera {
@@ -73,6 +74,7 @@ private:
 	uint32_t width_;
 	uint32_t height_;
 
+	GpuIspShaderPassBlcNormalise gpuIspShaderPassBlcNormalise_;
 	GpuIspShaderPassDemosiac gpuIspShaderPassDemosiac_;
 };
 
