I'm using textures to pre-compute some position values using shaders and am getting an error that the textures are not powers of two. In fact, I did make sure to extend them to make them square (7,043,716 texels, which is the square of 2654) however I am beginning to suspect that a texture must be a particular power of two - perhaps divisible by 8? e.g. 8x8, 16x16, 32x32, 64x64, as these numbers keep coming up. Is this so, and if so, is there an upper limit?
I don't think you need to be a particular power of two but gl.getParameter(gl.MAX_TEXTURE_SIZE)
should tell you the upper limit that is available on the browser and hardware that you're on, and must be at least 64. (caveat: per the docs it's merely "a rough estimate"; but it's as good as you can get without trying to upload and I think that undersells it)
I'm ordinarily an iOS guy so I can tell you off the top of my head that the iPhone 4 and below top out at 2048 but that the 4s and above can support at least 4096. Draw such inferences as you are willing to from that, supposing your code can't cope with a lower limit than 2654.