diff --git a/src/libcamera/software_isp/gpu_pipeline_shader_pass.h b/src/libcamera/software_isp/gpu_pipeline_shader_pass.h
index d4d4cf34d..d55b27a85 100644
--- a/src/libcamera/software_isp/gpu_pipeline_shader_pass.h
+++ b/src/libcamera/software_isp/gpu_pipeline_shader_pass.h
@@ -78,6 +78,19 @@ protected:
 
 	struct PassConfig passInputCfg_;
 	struct PassConfig passOutputCfg_;
+
+	/* Common shader attributes */
+	GLint attributeVertex_;
+	GLint attributeTexture_;
+	GLint textureUniformProjMatrix_;
+	GLint textureUniformBayerDataIn_;
+	GLint textureUniformStrideFactor_;
+	uint32_t shaderStridePixels_;
+
+	/* Bayer shader parameters - useful to potentially more than one shader */
+	GLint textureUniformBayerFirstRed_;
+	float firstRed_x_;
+	float firstRed_y_;
 };
 
 } /* namespace libcamera */
diff --git a/src/libcamera/software_isp/gpu_pipeline_shader_pass_demosiac.h b/src/libcamera/software_isp/gpu_pipeline_shader_pass_demosiac.h
index 11bb04c30..60f175ad3 100644
--- a/src/libcamera/software_isp/gpu_pipeline_shader_pass_demosiac.h
+++ b/src/libcamera/software_isp/gpu_pipeline_shader_pass_demosiac.h
@@ -43,18 +43,8 @@ public:
 	const char *name() const override { return "GpuIspShaderPassDemosiac"; }
 private:
 	/* Shader parameters */
-	float firstRed_x_;
-	float firstRed_y_;
-	GLint attributeVertex_;
-	GLint attributeTexture_;
 	GLint textureUniformStep_;
 	GLint textureUniformSize_;
-	GLint textureUniformStrideFactor_;
-	GLint textureUniformBayerFirstRed_;
-	GLint textureUniformProjMatrix_;
-	GLint textureUniformBayerDataIn_;
-
-	uint32_t shaderStridePixels_;
 
 	/* Represent per-frame CCM as a uniform vector of floats 3 x 3 */
 	GLint ccmUniformDataIn_;
