On Tue, Nov 22, 2011 at 4:05 PM, Jose Fonseca <jfons...@vmware.com> wrote: > Marek, > > I think we should take one of two approaches here: > - aim for a short-term workaround, without gallium interface changes: > - e.g., provide to GLSL compiler infinite/huge limits, while advertising to > the app the pipe driver ones > - or detect the wine process and advertise bigger limits in the r300 driver > - aim for accurately describing the pipe driver compiling abilities > - e.g., allow the state tracker to create shaders that exceed abilities, and > force a trial generation and compilation of the TGSI shaders when the GLSL > shader is first linked > > But the hard limit caps interface change you propose below doesn't quite > align to neither approach: it is an interface change which doesn't truly help > describing the pipe driver compiler abilities any better (the actual maximum > constants/inputs depends on the shader and is not a global constant), so it > merely provides a short term relief.
I would gladly commit this patch: diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index 3527088..4e1e648 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -1813,6 +1813,9 @@ assign_varying_locations(struct gl_context *ctx, } } + /* Enable this once the GLSL compiler can properly count in just + * active array elements, not whole arrays. */ +#if 0 if (ctx->API == API_OPENGLES2 || prog->Version == 100) { if (varying_vectors > ctx->Const.MaxVarying) { linker_error(prog, "shader uses too many varying vectors " @@ -1829,6 +1832,7 @@ assign_varying_locations(struct gl_context *ctx, return false; } } +#endif return true; } @@ -1959,10 +1963,16 @@ check_resources(struct gl_context *ctx, struct gl_shader_program *prog) shader_names[i]); } + /* Enable this once the GLSL compiler can properly count in just + * active array elements, not whole arrays. */ +#if 0 if (sh->num_uniform_components > max_uniform_components[i]) { linker_error(prog, "Too many %s shader uniform components", shader_names[i]); } +#else + (void) max_uniform_components; +#endif } return prog->LinkStatus; BUT I had a very informative discussion with one Intel developer last night and he said we can't change the linker because he's on the ARB. :D Now seriously. I do really care about users. And I'd like to release a product which works best for them. Some people obviously don't want me to release such a product. Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev