package ch.ethz.karto.swa.atlas;
import ch.ethz.karto.map3d.Map3DGLCapabilities;
import ika.utils.PropertiesLoader;
import java.awt.Frame;
import java.awt.GraphicsEnvironment;
import java.util.Properties;
import javax.media.opengl.glu.GLU;
public class SystemInfoGPU extends SystemInfo {
private static final String GPUINFO_FILE = "ch.ethz.karto.swa.atlas.gpuinfo";
private Properties properties;
public SystemInfoGPU(Frame parent) {
super (parent);
}
@Override
protected void addInfo() {
super.addInfo();
properties = PropertiesLoader.loadProperties(GPUINFO_FILE, true);
addTitle2(res("gpuTitle"));
if (!Map3DGLCapabilities.hasOpenGL()) {
addParagraph(res("notAvailable"));
} else {
String str = Map3DGLCapabilities.getGLRenderer();
String str2 = Map3DGLCapabilities.getGLVendor();
addParagraph(String.format(res("gpuInfo"), str, str2));
addParagraph(String.format(res("gpuVRAM"), getAvailableAcceleratedMemory() / MB));
str = Map3DGLCapabilities.getGLVersion();
addParagraph(String.format(res("glVersion"), str));
addParagraph(String.format(res("gluVersion"), GLU.versionString));
// GL_SHADING_LANGUAGE_VERSION is available in OpenGL 2.0 and higher
if (Map3DGLCapabilities.hasOpenGLVersion(2, 0)) {
str = Map3DGLCapabilities.getGLShadingLanguageVersion();
addParagraph(String.format(res("glslInfo"), str));
}
int bufs = Map3DGLCapabilities.getMaxDrawBuffers();
addParagraph(String.format(res("gpuBuffers"), bufs));
int texSize = Map3DGLCapabilities.getMaxTextureSize();
addParagraph(String.format(res("gpuTexture"), texSize, texSize));
}
doc.setParagraphAttributes(0, doc.getLength(), docStyle, true);
systemInfo.setCaretPosition(0);
}
private String res(String id) {
return properties.getProperty(id);
}
private static int getAvailableAcceleratedMemory() {
return GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getAvailableAcceleratedMemory();
}
}