diff options
author | Paul Berry <[email protected]> | 2011-09-17 09:42:02 -0700 |
---|---|---|
committer | Paul Berry <[email protected]> | 2011-09-23 13:28:51 -0700 |
commit | 1ad54ae0b1713e399c5db43d0eba87861075b4c7 (patch) | |
tree | ade022dea53ca82dffd50fde2cfdda3bdc240e68 /src/mesa/program | |
parent | c06e32596735074536b0e613cbddb1c5fd7b367a (diff) |
mesa: Add a flag to indicate whether a program uses gl_ClipDistance.
GLSL 1.30 requires us to use gl_ClipDistance for clipping if the
vertex shader contains a static write to it, and otherwise use
user-defined clipping planes. Since the driver needs to behave
differently in these two cases, we need a flag to record whether the
shader has written to gl_ClipDistance.
The new flag is called UsesClipDistance. We initially store it in
gl_shader_program (since that is the data structure that is available
when we check to see whethe gl_ClipDistance was written to), and we
later copy it to a flag with the same name in gl_vertex_program, since
that is a more convenient place for the driver to access it (in i965,
at least).
Reviewed-by: Eric Anholt <[email protected]>
Tested-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/mesa/program')
-rw-r--r-- | src/mesa/program/ir_to_mesa.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index 5e565e4ed08..7b2c69fdbdb 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -3291,6 +3291,8 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) switch (prog->_LinkedShaders[i]->Type) { case GL_VERTEX_SHADER: + ((struct gl_vertex_program *)linked_prog)->UsesClipDistance + = prog->Vert.UsesClipDistance; _mesa_reference_vertprog(ctx, &prog->VertexProgram, (struct gl_vertex_program *)linked_prog); ok = ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB, |