draw/llvm: set draw->pt.user.planes field in draw_set_clip_state()
authorBrian Paul <brianp@vmware.com>
Mon, 10 Oct 2011 23:49:27 +0000 (17:49 -0600)
committerBrian Paul <brianp@vmware.com>
Tue, 11 Oct 2011 13:41:36 +0000 (07:41 -0600)
Previously it was getting set in draw_set_mapped_constant_buffer() but
if there were no shader constants, that function wasn't called.  So the
pt.user.planes field was null and we died when we tried to access the
clip planes in the LLVM-generated code.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=41663

Note: This is a candidate for the 7.11 branch.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/draw/draw_context.c

index e1b9a15e528b5bde1c9fa6863362780b9643916f..a4447936d512e00a422b204e69b6d8fd0b39a0d7 100644 (file)
@@ -292,6 +292,8 @@ void draw_set_clip_state( struct draw_context *draw,
    draw->nr_planes = 6 + clip->nr;
    draw->depth_clamp = clip->depth_clamp;
 
+   draw->pt.user.planes = (float (*) [DRAW_TOTAL_CLIP_PLANES][4]) &(draw->plane[0]);
+
    update_clip_flags(draw);
 }
 
@@ -369,7 +371,6 @@ draw_set_mapped_constant_buffer(struct draw_context *draw,
    case PIPE_SHADER_VERTEX:
       draw->pt.user.vs_constants[slot] = buffer;
       draw->pt.user.vs_constants_size[slot] = size;
-      draw->pt.user.planes = (float (*) [DRAW_TOTAL_CLIP_PLANES][4]) &(draw->plane[0]);
       draw_vs_set_constants(draw, slot, buffer, size);
       break;
    case PIPE_SHADER_GEOMETRY: