From: Kenneth Graunke Date: Mon, 22 Jan 2018 05:23:48 +0000 (-0800) Subject: iris: scissor slots X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=df401aaa11eeab91ada100c44ec9a1c4f3963978;p=mesa.git iris: scissor slots --- diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 9082b6154f2..8e49312f58d 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -923,15 +923,14 @@ static void iris_set_scissor_states(struct pipe_context *ctx, unsigned start_slot, unsigned num_scissors, - const struct pipe_scissor_state *state) + const struct pipe_scissor_state *states) { struct iris_context *ice = (struct iris_context *) ctx; - // XXX: start_slot ice->state.num_scissors = num_scissors; - for (unsigned i = start_slot; i < start_slot + num_scissors; i++) { - ice->state.scissors[i] = *state; + for (unsigned i = 0; i < num_scissors; i++) { + ice->state.scissors[start_slot + i] = states[i]; } ice->state.dirty |= IRIS_DIRTY_SCISSOR_RECT; @@ -1049,6 +1048,7 @@ iris_set_viewport_states(struct pipe_context *ctx, struct iris_viewport_state *cso = malloc(sizeof(struct iris_viewport_state)); + // XXX: sf_cl_vp is only big enough for one slot, we don't iterate right for (unsigned i = start_slot; i < start_slot + num_viewports; i++) { float x_extent = extent_from_matrix(&state[i], 0); float y_extent = extent_from_matrix(&state[i], 1);