For anyone conquering the same demons as I am: I did actually find a concrete difference between the two functions: I found a library that used eglCreateImageKHR to import DMABUFs using the EXT_image_dma_buf_import EGL extension. It was using OpenGL ES as its rendering API. Replicating this in my OpenGL application would raise an unexplainable EGL_BAD_PARAMETER error. When I replaced it with eglCreateImage instead, it finally worked. As such my best guess is that eglCreateImageKHR might be more an OpenGL ES thing or be related in some way to it that the non khr suffix version isn't.