diff options
-rw-r--r-- | configs/default | 1 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | docs/relnotes-7.5.2.html | 2 | ||||
-rw-r--r-- | progs/vp/vp-tris.c | 6 | ||||
-rw-r--r-- | src/mesa/main/texparam.c | 6 | ||||
-rw-r--r-- | src/mesa/shader/shader_api.c | 15 | ||||
-rw-r--r-- | src/mesa/shader/slang/slang_link.c | 28 |
7 files changed, 56 insertions, 4 deletions
diff --git a/configs/default b/configs/default index 127b98e76c..2168b29e3e 100644 --- a/configs/default +++ b/configs/default @@ -23,6 +23,7 @@ HOST_CC = $(CC) CFLAGS = -O CXXFLAGS = -O LDFLAGS = +HOST_CFLAGS = $(CFLAGS) GLU_CFLAGS = # Compiler for building demos/tests/etc diff --git a/configure.ac b/configure.ac index c5ef676e2e..75189761ee 100644 --- a/configure.ac +++ b/configure.ac @@ -1202,7 +1202,7 @@ if test "x$enable_gallium_radeon" = xyes; then fi dnl -dnl Gallium Radeon configuration +dnl Gallium Nouveau configuration dnl AC_ARG_ENABLE([gallium-nouveau], [AS_HELP_STRING([--enable-gallium-nouveau], diff --git a/docs/relnotes-7.5.2.html b/docs/relnotes-7.5.2.html index 32100142c0..ecdab29d5f 100644 --- a/docs/relnotes-7.5.2.html +++ b/docs/relnotes-7.5.2.html @@ -45,6 +45,8 @@ tbd <ul> <li>Assorted bug fixes for i965/i945 drivers <li>Fixed Gallium glDrawPixels(GL_STENCIL_INDEX) failure. +<li>Fixed GLSL linker/preprocessor version directive issue seen in Wine + (such as bug 23946) </ul> diff --git a/progs/vp/vp-tris.c b/progs/vp/vp-tris.c index 97995accdd..1356242d97 100644 --- a/progs/vp/vp-tris.c +++ b/progs/vp/vp-tris.c @@ -119,6 +119,12 @@ static void Init( void ) glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, sz, (const GLubyte *) buf); + if (glGetError()) { + printf("Program failed to compile:\n%s\n", buf); + printf("Error: %s\n", + (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); + exit(1); + } assert(glIsProgramARB(prognum)); } diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 05d144270e..b2fbe2205b 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -70,7 +70,7 @@ validate_texture_wrap_mode(GLcontext * ctx, GLenum target, GLenum wrap) return GL_TRUE; } - _mesa_error( ctx, GL_INVALID_VALUE, "glTexParameter(param=0x%x)", wrap ); + _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(param=0x%x)", wrap ); return GL_FALSE; } @@ -210,7 +210,7 @@ set_tex_parameteri(GLcontext *ctx, } /* fall-through */ default: - _mesa_error( ctx, GL_INVALID_VALUE, "glTexParameter(param=0x%x)", + _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(param=0x%x)", params[0] ); } return GL_FALSE; @@ -225,7 +225,7 @@ set_tex_parameteri(GLcontext *ctx, texObj->MagFilter = params[0]; return GL_TRUE; default: - _mesa_error( ctx, GL_INVALID_VALUE, "glTexParameter(param=0x%x)", + _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(param=0x%x)", params[0]); } return GL_FALSE; diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index 54a25dfaf0..178b7d0dba 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -1474,6 +1474,21 @@ _mesa_link_program(GLcontext *ctx, GLuint program) FLUSH_VERTICES(ctx, _NEW_PROGRAM); _slang_link(ctx, program, shProg); + + /* debug code */ + if (0) { + GLuint i; + + _mesa_printf("Link %u shaders in program %u: %s\n", + shProg->NumShaders, shProg->Name, + shProg->LinkStatus ? "Success" : "Failed"); + + for (i = 0; i < shProg->NumShaders; i++) { + _mesa_printf(" shader %u, type 0x%x\n", + shProg->Shaders[i]->Name, + shProg->Shaders[i]->Type); + } + } } diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c index 169c07f8ce..8f2b40d5df 100644 --- a/src/mesa/shader/slang/slang_link.c +++ b/src/mesa/shader/slang/slang_link.c @@ -546,6 +546,32 @@ _slang_update_inputs_outputs(struct gl_program *prog) +/** + * Remove extra #version directives from the concatenated source string. + * Disable the extra ones by converting first two chars to //, a comment. + * This is a bit of hack to work around a preprocessor bug that only + * allows one #version directive per source. + */ +static void +remove_extra_version_directives(GLchar *source) +{ + GLuint verCount = 0; + while (1) { + char *ver = _mesa_strstr(source, "#version"); + if (ver) { + verCount++; + if (verCount > 1) { + ver[0] = '/'; + ver[1] = '/'; + } + source += 8; + } + else { + break; + } + } +} + /** @@ -593,6 +619,8 @@ concat_shaders(struct gl_shader_program *shProg, GLenum shaderType) _mesa_printf("---NEW CONCATENATED SHADER---:\n%s\n------------\n", source); */ + remove_extra_version_directives(source); + newShader = CALLOC_STRUCT(gl_shader); newShader->Type = shaderType; newShader->Source = source; |