diff --git a/include/libcamera/internal/egl.h b/include/libcamera/internal/egl.h
index 4b0757afd..e24a726dc 100644
--- a/include/libcamera/internal/egl.h
+++ b/include/libcamera/internal/egl.h
@@ -108,6 +108,7 @@ public:
 	int createInputDMABufTexture2D(eGLImage &eglImage, int fd);
 	int createOutputDMABufTexture2D(eGLImage &eglImage, int fd);
 	void createTexture2D(eGLImage &eglImage, void *data);
+	void createOutputTexture2D(eGLImage &eglImage);
 
 	int attachTextureToFBO(eGLImage &eglImage);
 
diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp
index e83e24606..8e8d61813 100644
--- a/src/libcamera/egl.cpp
+++ b/src/libcamera/egl.cpp
@@ -329,6 +329,19 @@ bool eGL::isAvailable()
 	return true;
 }
 
+/**
+ * \brief Create a 2D texture attached to an FBO for render-to-texture
+ * \param[in,out] eglImage EGL image to associate with the texture
+ *
+ * Creates a 2D texture in VRAM. Subsequet attach the texture to the
+ * texture unit specified in the eGLImage object.
+ */
+void eGL::createOutputTexture2D(eGLImage &eglImage)
+{
+	createTexture2D(eglImage, NULL);
+	attachTextureToFBO(eglImage);
+}
+
 /**
  * \brief Initialise the EGL context
  *
