We have encountered a couple of issues while trying to run our iOS application under MetalGL:
1. MetalGL does not support our texture format:
[***MetalGL ERROR***] GL_INVALID_OPERATION. glCompressedTexImage2D(): Vertically flipping PVRTC compressed texture format GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG is not supported.
2. MetalGL crashes whenever a uniform location of -1 is passed to glUniform() with EXC_BAD_ACCESS (code=1, address=0x18). Directly before the crash the following message is written:
[***MetalGL ERROR***] GL_INVALID_OPERATION. glUniformMatrix4fv(): Shader program 1 does not contain a uniform at location -1.
The OpenGL documentation says that glUniform() should be fed with a value returned by glGetUniformLocation() and
the latter officially returns -1 if some conditions are met. Therefore MetalGL should not only not crash but also support -1 as valid input.
3. The extension ‘APPLE_texture_max_level’ is not supported. This is a minor issue and could easily be circumvented in our application.
I hope this helps to improve MetalGL. If you happen to solve the first two issues I will take another look at MetalGL to check whether it is compatible enough for our application.
Thanks very much for taking the time to provide your feedback. It’s very useful, and much appreciated.
1. At present, only 4bpp versions of PVRTC compressions is supported, due to the need to auto-invert textures between OpenGL ES & Metal texture orientations (the flipping algorithm currently only works for 4bpp compression). We will be moving to a different PVRTC handler in the future, which will correct this.
2. Thanks. You are of course correct. We’ll fix the location = -1 issue in the next release.