2016-01-15 09:18:19 -05:00
|
|
|
package eu.kanade.tachiyomi.util;
|
2015-12-21 12:09:09 -05:00
|
|
|
|
|
|
|
import javax.microedition.khronos.egl.EGL10;
|
|
|
|
import javax.microedition.khronos.egl.EGLConfig;
|
|
|
|
import javax.microedition.khronos.egl.EGLContext;
|
|
|
|
import javax.microedition.khronos.egl.EGLDisplay;
|
|
|
|
|
2016-04-28 12:45:39 -04:00
|
|
|
public final class GLUtil {
|
|
|
|
|
|
|
|
private GLUtil() throws InstantiationException {
|
|
|
|
throw new InstantiationException("This class is not for instantiation");
|
|
|
|
}
|
2015-12-21 12:09:09 -05:00
|
|
|
|
|
|
|
public static int getMaxTextureSize() {
|
|
|
|
// Safe minimum default size
|
|
|
|
final int IMAGE_MAX_BITMAP_DIMENSION = 2048;
|
|
|
|
|
|
|
|
// Get EGL Display
|
|
|
|
EGL10 egl = (EGL10) EGLContext.getEGL();
|
|
|
|
EGLDisplay display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
|
|
|
|
|
|
|
|
// Initialise
|
|
|
|
int[] version = new int[2];
|
|
|
|
egl.eglInitialize(display, version);
|
|
|
|
|
|
|
|
// Query total number of configurations
|
|
|
|
int[] totalConfigurations = new int[1];
|
|
|
|
egl.eglGetConfigs(display, null, 0, totalConfigurations);
|
|
|
|
|
|
|
|
// Query actual list configurations
|
|
|
|
EGLConfig[] configurationsList = new EGLConfig[totalConfigurations[0]];
|
|
|
|
egl.eglGetConfigs(display, configurationsList, totalConfigurations[0], totalConfigurations);
|
|
|
|
|
|
|
|
int[] textureSize = new int[1];
|
|
|
|
int maximumTextureSize = 0;
|
|
|
|
|
|
|
|
// Iterate through all the configurations to located the maximum texture size
|
|
|
|
for (int i = 0; i < totalConfigurations[0]; i++) {
|
|
|
|
// Only need to check for width since opengl textures are always squared
|
|
|
|
egl.eglGetConfigAttrib(display, configurationsList[i], EGL10.EGL_MAX_PBUFFER_WIDTH, textureSize);
|
|
|
|
|
|
|
|
// Keep track of the maximum texture size
|
|
|
|
if (maximumTextureSize < textureSize[0])
|
|
|
|
maximumTextureSize = textureSize[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
// Release
|
|
|
|
egl.eglTerminate(display);
|
|
|
|
|
|
|
|
// Return largest texture size found, or default
|
|
|
|
return Math.max(maximumTextureSize, IMAGE_MAX_BITMAP_DIMENSION);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|