llvmpipe: pass incoming sample_mask into fragment shader context.
[mesa.git] / src / gallium / drivers / llvmpipe / lp_state_derived.c
index 9fe0ddf1fb21af88e40289c3837b26fc43f629d8..5d51736964ab98a60ad2bf14e2cedbbb49a6cba5 100644 (file)
@@ -214,6 +214,7 @@ void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe )
    if (llvmpipe->dirty & (LP_NEW_FS |
                           LP_NEW_FRAMEBUFFER |
                           LP_NEW_RASTERIZER |
+                          LP_NEW_SAMPLE_MASK |
                           LP_NEW_DEPTH_STENCIL_ALPHA)) {
 
       /*
@@ -225,7 +226,7 @@ void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe )
       boolean null_fs = !llvmpipe->fs ||
                         llvmpipe->fs->info.base.num_instructions <= 1;
       boolean discard =
-         (llvmpipe->sample_mask & 1) == 0 ||
+         (llvmpipe->sample_mask) == 0 ||
          (llvmpipe->rasterizer ? llvmpipe->rasterizer->rasterizer_discard : FALSE) ||
          (null_fs &&
           !llvmpipe->depth_stencil->depth.enabled &&
@@ -238,6 +239,9 @@ void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe )
                           LP_NEW_RASTERIZER))
       llvmpipe_update_setup( llvmpipe );
 
+   if (llvmpipe->dirty & LP_NEW_SAMPLE_MASK)
+      lp_setup_set_sample_mask(llvmpipe->setup, llvmpipe->sample_mask);
+
    if (llvmpipe->dirty & LP_NEW_BLEND_COLOR)
       lp_setup_set_blend_color(llvmpipe->setup,
                                &llvmpipe->blend_color);