Posting an objective answer to this is probably impossible. Most likely your GL driver might have some forward-compatibility, meaning that even though it's on version 2.1 it supports a few select things from later versions to speed up rendering. Most likely stuff that doesn't really add functionality, but that simplifies existing implementations, so for example (the following are not real functions) if previously you had to use glSetVertexArrayIndex(int index, float data)
like so
glSetVertexArrayIndex(0, data_index0);
glSetVertexArrayIndex(1, data_index1);
but in new GL versions (let's pretend 3.0) they added a function glSetVertexArrayIndexes(int[] indexes, float[] data)
that you could now use like so:
glSetVertexArrayIndexes([0, 1], [data_index0, data_index1]);
That means your GL driver might secretly implement support for the new glSetVertexArrayIndexes(int[], float[])
behind the scenes, since if it recognizes multiple calls of the old glSetVertexArrayIndex
in a row it can just translate it to a single call of glSetVertexArrayIndexes
and save some processing time.
But like I said, this is just a pure guess.
GL30.glGenerateMipmap()
is not very descriptive. If you're getting a particular error message, edit to include that info. Though ultimately it probably doesn't matter - it sounds like you are trying to use a function that isn't supported by your hardware. The fact that it happens to provide some functionality that exceeds its specification is not a guarantee that it will provide the particular functionality that you happen to want. \$\endgroup\$