diff options
author | Chia-I Wu <[email protected]> | 2015-06-15 11:24:47 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2015-06-15 15:06:11 +0800 |
commit | 94ab56367169ba2902e83aded409db2df3d25eb1 (patch) | |
tree | 311dce1b6dcc154649cfb6981b971847a337f367 /src/gallium/drivers/ilo/ilo_state.c | |
parent | 7cb853d52ae795b76adec41c98870166b41c9e6f (diff) |
ilo: add ilo_state_raster_{line,poly}_stipple
Initialize hardware stipple states on bound instead of on emission.
Diffstat (limited to 'src/gallium/drivers/ilo/ilo_state.c')
-rw-r--r-- | src/gallium/drivers/ilo/ilo_state.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/gallium/drivers/ilo/ilo_state.c b/src/gallium/drivers/ilo/ilo_state.c index 0145fcbb8d5..84fd7991c26 100644 --- a/src/gallium/drivers/ilo/ilo_state.c +++ b/src/gallium/drivers/ilo/ilo_state.c @@ -1088,10 +1088,20 @@ ilo_create_rasterizer_state(struct pipe_context *pipe, static void ilo_bind_rasterizer_state(struct pipe_context *pipe, void *state) { + const struct ilo_dev *dev = ilo_context(pipe)->dev; struct ilo_state_vector *vec = &ilo_context(pipe)->state_vector; vec->rasterizer = state; + if (vec->rasterizer) { + struct ilo_state_line_stipple_info info; + + info.pattern = vec->rasterizer->state.line_stipple_pattern; + info.repeat_count = vec->rasterizer->state.line_stipple_factor + 1; + + ilo_state_line_stipple_set_info(&vec->line_stipple, dev, &info); + } + vec->dirty |= ILO_DIRTY_RASTERIZER; } @@ -1610,9 +1620,15 @@ static void ilo_set_polygon_stipple(struct pipe_context *pipe, const struct pipe_poly_stipple *state) { + const struct ilo_dev *dev = ilo_context(pipe)->dev; struct ilo_state_vector *vec = &ilo_context(pipe)->state_vector; + struct ilo_state_poly_stipple_info info; + int i; + + for (i = 0; i < 32; i++) + info.pattern[i] = state->stipple[i]; - vec->poly_stipple = *state; + ilo_state_poly_stipple_set_info(&vec->poly_stipple, dev, &info); vec->dirty |= ILO_DIRTY_POLY_STIPPLE; } |