Module: wine Branch: refs/heads/master Commit: a67488a26ea3ad4001cf947f12b3779a92ee2631 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=a67488a26ea3ad4001cf947f...
Author: Jason Green jave27@gmail.com Date: Tue May 23 18:22:13 2006 -0400
wined3d: Add function to print the infolog of a GLSL shader on errors.
With assistance from H. Verbeet.
---
dlls/wined3d/baseshader.c | 21 +++++++++++++++++++++ dlls/wined3d/wined3d_private.h | 4 ++++ 2 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index 4cc89ea..360c507 100644 --- a/dlls/wined3d/baseshader.c +++ b/dlls/wined3d/baseshader.c @@ -29,6 +29,7 @@ #include "wined3d_private.h" WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
#define GLNAME_REQUIRE_GLSL ((const char *)1) +#define GLINFO_LOCATION (*gl_info)
typedef struct shader_reg_maps { DWORD texcoord; @@ -675,6 +676,26 @@ void generate_base_shader( } }
+/** Prints the GLSL info log which will contain error messages if they exist */ +void print_glsl_info_log( + WineD3D_GL_Info *gl_info, + GLhandleARB obj) +{ + int infologLength = 0; + char *infoLog; + + GL_EXTCALL(glGetObjectParameterivARB(obj, + GL_OBJECT_INFO_LOG_LENGTH_ARB, + &infologLength)); + + if (infologLength > 0) + { + infoLog = (char *)HeapAlloc(GetProcessHeap(), 0, infologLength); + GL_EXTCALL(glGetInfoLogARB(obj, infologLength, NULL, infoLog)); + FIXME("Error received from GLSL shader #%i: %s", obj, debugstr_a(infoLog)); + HeapFree(GetProcessHeap(), 0, infoLog); + } +}
void shader_dump_ins_modifiers(const DWORD output) {
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index d73fb4f..61892b2 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1388,6 +1388,10 @@ extern int shader_skip_unrecognized( IWineD3DBaseShader* iface, const DWORD* pToken);
+extern void print_glsl_info_log( + WineD3D_GL_Info *gl_info, + GLhandleARB obj); + inline static int shader_get_regtype(const DWORD param) { return (((param & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT) | ((param & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2));