PDA

View Full Version : GLIntercept 1.0 Beta



sqrt[-1]
02-09-2010, 07:46 AM
A beta release of GLIntercept 1.0 is now out at:
http://glintercept.googlecode.com/files/GLIntercept1_0Beta00.exe

A few things to note:
- This is more a maintainable release - new function entry points and some minor bug fixes.
- OpenGL3.0 + pure core profiles do not work correctly (will be fixed)
- New resource types like array textures, geometry shaders etc are not currently logged.
- No x64 bit program support.
- Nvidia's multi threadded driver seems to issue an internal wglGetPixelFormat call on the first glGetError() after SwapBuffers. This internal call occurs on a different thread that does not have the main OpenGL conext - so it results in the OpenGL error:
"GL ERROR - Function wglGetPixelFormat generated error GL_INVALID_OPERATION"
for the first 23 times swap buffers is called.
To fix, disable the multi-threadded driver from the Nvidia control panel:
"Manage 3D settings -> Threadded Optimization -> Off"
or you can enable the GLIntercept option "ThreadChecking = True" which will report the extra wglGetPixelFormat call occuring on a different thread. (as well as some other wglDescribePixelFormat calls made by the driver)

I will probably do a few more betas before the final, so hopefully a few of the above features/fixes will make it in.

As there are so many other OpenGL loggers on Windows these days I will probably not do too many more updates. (and OpenGL is a hard API to write a debugger for)

Let me know of any bugs you encounter.

Stephen A
02-09-2010, 10:12 AM
Awesome!

Groovounet
02-09-2010, 10:16 AM
Great! I use to use it few years back, it would be great to have it working for OpenGL 3.2 :D

Maybe this should be in the Toolkits forum instead.

skynet
02-09-2010, 01:15 PM
GLIntercept is one of my favourite GL Tools!

Thank you for working on it again!

Alfonse Reinheart
02-09-2010, 01:58 PM
As there are so many other OpenGL loggers on Windows these days I will probably not do too many more updates.

If you do decide to abandon it, could you at least document the code more thoroughly before you do? I took a cursory glance at the code once (to see what it would take to upgrade it to GL 3.x), and I couldn't figure out what was going on with the inline assembly.

Ilian Dinev
02-09-2010, 08:57 PM
The only asm in the 0.5 src is the "#define WRAPPER_FUNCTION(n)" macro.
Here's what it does:


int WrapperCall777(){ // notice "int" instead of "void"
int idx = wrapperIndex[777];
LogFunctionPre(idx,ALL_MY_ARGS);

PROC extFunction = extFunctions[777]; // pointer to a function

int result = extFunction(ALL_MY_ARGS); // arguments will automatically be correctly presented to it

LogFunctionPost(idx,result);
return result;
}



// At initialization, i.e this was done:
// extFunctions[777] = glUniformMatrix2x4fv;

yooyo
02-10-2010, 04:38 PM
Great work!!! I'll check new version as soon as I can.

Nicolas Lelong
02-13-2010, 02:48 AM
Great news and great work ! I'm using GLintercept 0.5 since it's been out, and I'm fond of it !

Just saw this post, so could not test the v1.0 beta, does it include source code, or do you plan to use the googlecode svn ? It would be great that your great tool continues to live 'after you' :)

Once more, great work and many thanks :)

sqrt[-1]
02-13-2010, 04:03 AM
I'll release source code for the final 1.0 release.

If you are curious, a source version that is almost the same is at
http://glintercept.googlecode.com/files/GLIntercept1.0_WIP00.7z

SVN is a possibility if other people start working on it. (have one other potential contributor)

Nicolas Lelong
02-19-2010, 12:22 PM
I made a quick test on a huge app of ours and it certainly worked fine!

I have two points I'd like to improve :
* shader edit mode can't show shader usage if the framebuffer has sRGB enabled
* shader editor can't always recompile correctly programs that linked fro multiple shaders - as it recombines them in a single source, there may be duplicated uniform definitions or misplaced #version statements

these points could make a first contribution if you think it's not' too ambitious as a starting point :) i did not look at the source code for now, so i'm clueless for now

cheers