diff options
author | Sven Gothel <[email protected]> | 2012-02-20 18:03:36 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-02-20 18:03:36 +0100 |
commit | a4c7bf0420e369e71561d2847f2fc444ce5abafa (patch) | |
tree | eaf13946a0ef653fc9de163a911484be10f33379 /src/jogl/native/JoglCommon.c | |
parent | 505525c857bc4d62815a69463e263d0c2c847ac1 (diff) |
API Change [GLProfile/GLContext]: Add notion of hardware acceleration in GLProfile.get<Profile>() methods.
We need to distinguish between software and hardware accelerated OpenGL profiles
to allow choosing the proper profiles [default, GL2ES1, GL2ES2, ..]
on platforms where both, software and hardware implementations exist (GL, GLES2, ..).
Where no preference is being requested, hardware acceleration is favored:
GLProfile.getDefault()
GLProfile.getGL2ES1()
GLProfile.getGL2ES2()
Some method signatures needed to change
GLProfile:
getMaxProgrammable(AbstractGraphicsDevice device) ->
getMaxProgrammable(AbstractGraphicsDevice device, boolean favorHardwareRasterizer)
GLProfile adds: isHardwareRasterizer()
Determination whether a hardware acceleration is being used or not
is extended in GLContextImpl by querying the current context's
GL_RENDERER string. If the latter contains 'software' (case insensitive)
it is not hardware accelerated. At least this works w/ newer Mesa3D impl,
where GLX_SLOW_CONFIG is not set!
Diffstat (limited to 'src/jogl/native/JoglCommon.c')
-rw-r--r-- | src/jogl/native/JoglCommon.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/jogl/native/JoglCommon.c b/src/jogl/native/JoglCommon.c index 16f60e4e7..c1d6ad181 100644 --- a/src/jogl/native/JoglCommon.c +++ b/src/jogl/native/JoglCommon.c @@ -1,6 +1,10 @@ +#include "jogamp_opengl_GLContextImpl.h" #include "JoglCommon.h" +#include <assert.h> +#include <KHR/khrplatform.h> + static const char * const ClazzNameRuntimeException = "java/lang/RuntimeException"; static jclass runtimeExceptionClz=NULL; @@ -53,3 +57,20 @@ jchar* JoglCommon_GetNullTerminatedStringChars(JNIEnv* env, jstring str) return strChars; } +/* + * Class: jogamp_opengl_GLContextImpl + * Method: glGetStringInt + * Signature: (IJ)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL +Java_jogamp_opengl_GLContextImpl_glGetStringInt(JNIEnv *env, jclass _unused, jint name, jlong procAddress) { + typedef const khronos_uint8_t * (KHRONOS_APIENTRY*_local_PFNGLGETSTRINGPROC)(unsigned int name); + _local_PFNGLGETSTRINGPROC ptr_glGetString; + const khronos_uint8_t * _res; + ptr_glGetString = (_local_PFNGLGETSTRINGPROC) (intptr_t) procAddress; + assert(ptr_glGetString != NULL); + _res = (* ptr_glGetString) ((unsigned int) name); + if (NULL == _res) return NULL; + return (*env)->NewStringUTF(env, _res); +} + |