diff --git a/include/libcamera/internal/egl.h b/include/libcamera/internal/egl.h
index 21e2aa9df..f007f448a 100644
--- a/include/libcamera/internal/egl.h
+++ b/include/libcamera/internal/egl.h
@@ -136,5 +136,6 @@ private:
 	PFNGLEGLIMAGETARGETTEXTURE2DOESPROC glEGLImageTargetTexture2DOES;
 	PFNEGLCREATEIMAGEKHRPROC eglCreateImageKHR;
 	PFNEGLDESTROYIMAGEKHRPROC eglDestroyImageKHR;
+	PFNGLGETSTRINGPROC glGetString;
 };
 } //namespace libcamera
diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp
index 0bd9a83be..0ffd008c7 100644
--- a/src/libcamera/egl.cpp
+++ b/src/libcamera/egl.cpp
@@ -288,6 +288,10 @@ int eGL::initEGLContext(GBM *gbmContext)
 	EGLint major;
 	EGLint minor;
 
+	const char *glVersion;
+	EGLint glMajor;
+	EGLint glMinor;
+
 	if (!eglBindAPI(EGL_OPENGL_ES_API)) {
 		LOG(eGL, Error) << "API bind fail";
 		goto fail;
@@ -327,6 +331,12 @@ int eGL::initEGLContext(GBM *gbmContext)
 		goto fail;
 	}
 
+	glGetString = (PFNGLGETSTRINGPROC)eglGetProcAddress("glGetString");
+	if (!glGetString) {
+		LOG(eGL, Error) << "glGetString not found";
+		goto fail;
+	}
+
 	if (eglChooseConfig(display_, configAttribs, &config, 1, &numConfigs) != EGL_TRUE) {
 		LOG(eGL, Error) << "eglChooseConfig fail";
 		goto fail;
@@ -342,6 +352,13 @@ int eGL::initEGLContext(GBM *gbmContext)
 
 	makeCurrent();
 
+	glVersion = (const char *)glGetString(GL_VERSION);
+	if (glVersion &&
+	    sscanf(glVersion, "OpenGL ES %d.%d", &glMajor, &glMinor) == 2 &&
+	    glMajor > 0 && glMinor >= 0) {
+		LOG(eGL, Info) << "GLES: version: " << glMajor << "." << glMinor;
+	}
+
 	return 0;
 fail:
 
