OpenGL ES texture buffer issues

As of 4.26, we have feature level OpenGL ES 3.1.

Android Device Compatibility | Unreal Engine Documentation
To use texture buffers:

  • 3.1 with GL_EXT_texture_buffer
  • 3.2

Actually, there is another extension called GL_OES_texture_buffer.


  • With 3.2, there should be a macro called GL_MAX_TEXTURE_BUFFER_SIZE, which is not defined on by debugging on my 3.2 devices.
  • The 2 extensions have different names for this macro: MAX_TEXTURE_BUFFER_SIZE_EXT and MAX_TEXTURE_BUFFER_SIZE_OES, which are not handled in the engine code.

GMaxBufferDimensions = Value_GL_MAX_TEXTURE_BUFFER_SIZE

  • The left-hand side says buffer, the right-hand side says texture buffer, are they the same?
  • GL_MAX_TEXTURE_BUFFER_SIZE is in texels, value must be at least 65536.
  • Mali devices only support buffers of up to 64 kb. This is in bytes.
  • GetMaxBufferDimension() is used to Init GPUScene.PrimitiveUploadBuffer, which contains FByteAddressBuffer, which is backed by StructuredBuffer