OpenGL error 1285 (Out of Memory) on Intel HD systems

#1

I have a number of users with Intel HD systems that crash with OpenGL error 1285 (out of memory). The users are all on windows. The same error occurs on a variety of Intel HD systems up to Intel® HD Graphics 630 (supporting OpenGL 4.4). The same code works on hundreds of ATI and NVidia systems on Windows & Linux with no issues. The code is really a not a huge memory hog and according to my logs all the systems have plenty of memory available.
I don’t have access to a faulty machine so I have a difficult time trying to debug this.

How do I prevent my code from getting this error on Intel HD systems?
Have I found an OpenGL call that Intel HD does not support?

I’m currently at a loss and thinking of heavily instrumenting my code with logging in the hopes of narrowing down the issue.

#2

GL_OUT_OF_MEMORY is only generated if a call fails due to insufficient memory. Exceeding implementation-defined limits (texture size, number of texture units, number of attributes, etc) results in GL_INVALID_VALUE. Calling unimplemented functions usually results in an access violation due to a null function pointer.

One possibility is that an earlier operation is failing (not necessarily generating an error), resulting in a value of -1. If this is used to calculate a size (which will be unsigned), it will likely exceed available memory and result in a GL_OUT_OF_MEMORY error.

If you have no idea as to the likely source of the error, it might be simpler to use a debug context. This avoids the need to insert error-checking calls into the existing code. This requires OpenGL 4.3 or the KHR_debug extension. If you’re using a toolkit for context creation, it must provide the ability to set the relevent context flag (FreeGLUT, GLFW and Qt5 support this, the original (MJK) GLUT and Qt4 don’t).