diff options
author | Ian Romanick <[email protected]> | 2011-11-10 12:32:35 -0800 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2011-11-16 08:37:44 -0800 |
commit | 010dc29283cfc7791a29ba8a0570d8f7f9edef05 (patch) | |
tree | a81453c4c296ad3d6f482bf573ed785e63c244a2 /src/glx/glxextensions.c | |
parent | f6a50c0b1ff620d1b721968144a56452c0bd6d85 (diff) |
mesa: Only update sampler uniforms that are used by the shader stage
Previously a vertex shader that used no samplers would get updated (by
calling the driver's ProgramStringNotify) when a sampler in the
fragment shader was updated. This was discovered while investigating
some spurious code generation for shaders in Cogs. The behavior in
Cogs is especially pessimal because it ping-pongs sampler uniform
settings:
glUniform1i(sampler1, 0);
glUniform1i(sampler2, 1);
draw();
glUniform1i(sampler1, 1);
glUniform1i(sampler2, 0);
draw();
glUniform1i(sampler1, 0);
glUniform1i(sampler2, 1);
draw();
// etc.
ProgramStringNotify is still too big of a hammer. Applications like
Cogs will still defeat the shader cache. A lighter-weight mechanism
that can work with the shader cache is needed. However, this patch at
least restores the previous behavior.
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/glx/glxextensions.c')
0 files changed, 0 insertions, 0 deletions