iris: fix sample mask
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 27 Jul 2018 23:02:09 +0000 (16:02 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 21 Feb 2019 18:26:08 +0000 (10:26 -0800)
0xffffffff does not mean 1, it means enable as many as there actually
are.  we don't get set_sample_mask() calls until some masking is
actually applied...i.e. it doesn't get updated based on # of samples
in the FBO changing.

src/gallium/drivers/iris/iris_state.c

index fb08966414789c035f4e438687c11a7965273a96..afe95d4f6fe6098e31729a4a2517a094aa19cb98 100644 (file)
@@ -1208,7 +1208,7 @@ iris_set_sample_mask(struct pipe_context *ctx, unsigned sample_mask)
 {
    struct iris_context *ice = (struct iris_context *) ctx;
 
-   ice->state.sample_mask = sample_mask == 0xffffffff ? 1 : sample_mask;
+   ice->state.sample_mask = sample_mask & 0xffff;
    ice->state.dirty |= IRIS_DIRTY_SAMPLE_MASK;
 }
 
@@ -3882,6 +3882,7 @@ genX(init_state)(struct iris_context *ice)
 
    ice->state.dirty = ~0ull;
 
+   ice->state.sample_mask = 0xffff;
    ice->state.num_viewports = 1;
    ice->state.genx = calloc(1, sizeof(struct iris_genx_state));