Skip to content

Commit

Permalink
Add version info tool, to allow more precise bug reports
Browse files Browse the repository at this point in the history
  • Loading branch information
sgothel committed Oct 14, 2010
1 parent fe17e13 commit d7faeb8
Showing 1 changed file with 135 additions and 0 deletions.
135 changes: 135 additions & 0 deletions src/jogl/classes/com/jogamp/opengl/util/VersionInfo.java
@@ -0,0 +1,135 @@
/**
* Copyright 2010 JogAmp Community. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
*/

package com.jogamp.opengl.util;

import javax.media.opengl.*;
import com.jogamp.common.os.Platform;

import java.io.IOException;

public class VersionInfo {

public static StringBuffer getInfo(StringBuffer sb, String prefix, GL gl) {
if(null==sb) {
sb = new StringBuffer();
}

sb.append(Platform.getNewline());
sb.append("-----------------------------------------------------------------------------------------------------");
sb.append(Platform.getNewline());
getPackageInfo(sb, prefix, "javax.media.opengl", "GL");
sb.append(Platform.getNewline());
sb.append(Platform.getNewline());
getPlatformInfo(sb, prefix);
sb.append(Platform.getNewline());
sb.append(Platform.getNewline());
getOpenGLInfo(sb, prefix, gl);
sb.append(Platform.getNewline());
sb.append(Platform.getNewline());
sb.append("-----------------------------------------------------------------------------------------------------");
sb.append(Platform.getNewline());

return sb;
}

public static StringBuffer getPlatformInfo(StringBuffer sb, String prefix) {
if(null==sb) {
sb = new StringBuffer();
}

sb.append(prefix+" Platform: " + Platform.getOS() + " " + Platform.getOSVersion() + " (os), " + Platform.getArch() + " (arch)");
sb.append(Platform.getNewline());
sb.append(prefix+" Platform: littleEndian " + Platform.isLittleEndian() + ", 32Bit "+Platform.is32Bit() + ", a-ptr bit-size "+Platform.getPointerSizeInBits());
sb.append(Platform.getNewline());
sb.append(prefix+" Platform: Java " + Platform.getJavaVersion()+", "
+Platform.getJavaVendor()+", "+Platform.getJavaVendorURL()+", is JavaSE: "+Platform.isJavaSE());

return sb;
}

public static StringBuffer getOpenGLInfo(StringBuffer sb, String prefix, GL gl) {
if(null==sb) {
sb = new StringBuffer();
}

sb.append(prefix+" Swap Interval " + gl.getSwapInterval());
sb.append(Platform.getNewline());
sb.append(prefix+" GL Profile " + gl.getGLProfile());
sb.append(Platform.getNewline());
sb.append(prefix+" CTX VERSION " + gl.getContext().getGLVersion());
sb.append(Platform.getNewline());
sb.append(prefix+" GL " + gl);
sb.append(Platform.getNewline());
sb.append(prefix+" GL_VERSION " + gl.glGetString(gl.GL_VERSION));
sb.append(Platform.getNewline());
sb.append(prefix+" GL_EXTENSIONS ");
sb.append(Platform.getNewline());
sb.append(prefix+" " + gl.glGetString(gl.GL_EXTENSIONS));

return sb;
}

public static StringBuffer getPackageInfo(StringBuffer sb, String prefix,
String pkgName, String className) {
try {
ClassLoader classLoader = VersionInfo.class.getClassLoader();
classLoader.loadClass(pkgName + "." + className);

if(null==sb) {
sb = new StringBuffer();
}

Package p = Package.getPackage(pkgName);
if (p == null) {
sb.append(prefix+" WARNING: Package.getPackage(" + pkgName + ") is null");
sb.append(Platform.getNewline());
}
else {
sb.append(prefix+" "+p);
sb.append(Platform.getNewline());
sb.append(prefix+" Specification Title = " + p.getSpecificationTitle());
sb.append(Platform.getNewline());
sb.append(prefix+" Specification Vendor = " + p.getSpecificationVendor());
sb.append(Platform.getNewline());
sb.append(prefix+" Specification Version = " + p.getSpecificationVersion());
sb.append(Platform.getNewline());

sb.append(prefix+" Implementation Vendor = " + p.getImplementationVendor());
sb.append(Platform.getNewline());
sb.append(prefix+" Implementation Version = " + p.getImplementationVersion());
}
}
catch (ClassNotFoundException e) {
sb.append(Platform.getNewline());
sb.append(prefix+" Unable to load " + pkgName);
}
return sb;
}
}

0 comments on commit d7faeb8

Please sign in to comment.