iris: fix VP iteration
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 20 Jun 2018 23:03:43 +0000 (16:03 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 21 Feb 2019 18:26:07 +0000 (10:26 -0800)
src/gallium/drivers/iris/iris_state.c

index 7e791c68120c4f5290030f2cd27ff3333252720d..e3f8cf4508b4a8b5c241f09c2f02f5b2dfa52ca9 100644 (file)
@@ -1228,21 +1228,22 @@ static void
 iris_set_viewport_states(struct pipe_context *ctx,
                          unsigned start_slot,
                          unsigned count,
-                         const struct pipe_viewport_state *state)
+                         const struct pipe_viewport_state *states)
 {
    struct iris_context *ice = (struct iris_context *) ctx;
    struct iris_viewport_state *cso = ice->state.cso_vp;
    uint32_t *vp_map = &cso->sf_cl_vp[start_slot];
 
    // XXX: sf_cl_vp is only big enough for one slot, we don't iterate right
-   for (unsigned i = start_slot; i < count; i++) {
+   for (unsigned i = 0; i < count; i++) {
+      const struct pipe_viewport_state *state = &states[start_slot + i];
       iris_pack_state(GENX(SF_CLIP_VIEWPORT), vp_map, vp) {
-         vp.ViewportMatrixElementm00 = state[i].scale[0];
-         vp.ViewportMatrixElementm11 = state[i].scale[1];
-         vp.ViewportMatrixElementm22 = state[i].scale[2];
-         vp.ViewportMatrixElementm30 = state[i].translate[0];
-         vp.ViewportMatrixElementm31 = state[i].translate[1];
-         vp.ViewportMatrixElementm32 = state[i].translate[2];
+         vp.ViewportMatrixElementm00 = state->scale[0];
+         vp.ViewportMatrixElementm11 = state->scale[1];
+         vp.ViewportMatrixElementm22 = state->scale[2];
+         vp.ViewportMatrixElementm30 = state->translate[0];
+         vp.ViewportMatrixElementm31 = state->translate[1];
+         vp.ViewportMatrixElementm32 = state->translate[2];
          /* XXX: in i965 this is computed based on the drawbuffer size,
           * but we don't have that here...
           */
@@ -1250,10 +1251,10 @@ iris_set_viewport_states(struct pipe_context *ctx,
          vp.XMaxClipGuardband = 1.0;
          vp.YMinClipGuardband = -1.0;
          vp.YMaxClipGuardband = 1.0;
-         vp.XMinViewPort = viewport_extent(&state[i], 0, -1.0f);
-         vp.XMaxViewPort = viewport_extent(&state[i], 0,  1.0f) - 1;
-         vp.YMinViewPort = viewport_extent(&state[i], 1, -1.0f);
-         vp.YMaxViewPort = viewport_extent(&state[i], 1,  1.0f) - 1;
+         vp.XMinViewPort = viewport_extent(state, 0, -1.0f);
+         vp.XMaxViewPort = viewport_extent(state, 0,  1.0f) - 1;
+         vp.YMinViewPort = viewport_extent(state, 1, -1.0f);
+         vp.YMaxViewPort = viewport_extent(state, 1,  1.0f) - 1;
       }
 
       vp_map += GENX(SF_CLIP_VIEWPORT_length);