I recently added a texture packager to my project that will pack a certain amount of textures into a single one, like this:
So for example this one is 582x1023 pixels in size. The goal of adding these packed textures was obviously to improve performance so I wanted to look up the optimal texture size for OpenGL (using LWJGL) textures. The things I found were that a widely supported maximum texture size seems to be 1024x1024, according to this for example. This strikes me as odd because obviously a lot of textures alone would be larger than that, so what happens with those? I am pretty sure most graphics cards support textures bigger than that. Can I reasonably expect most graphics cards to handle e.g. 4096x4096 textures (or maybe even larger than that)?
To come to my second point (I hope this still counts as one question, but it essentially boils down to the same issue): Should textures be sized to a power of 2 (256x256, 512x512, 1024x1024, 2048x2048, ..) and should I pad packed textures smaller than that to the next power of 2? According to this question from 2011 it is not a requirement but can improve performance and avoid minor bugs and this one from 2012 says that you definitely should pad textures. So I realize that these questions have been asked before but they are reasonably dated for the answers to have changed and further they each only partially answer my question. How do other projects / handle this?
TL;DR: What textures sizes can I expect most graphics cards to handle? What are the optimal texture sizes (or are there)? Should I pad textures width to the next power of 2?