ilo: embed ilo_state_urb in ilo_state_vector
[mesa.git] / src / gallium / drivers / ilo / ilo_render.c
index f71059857c62b7ae61e4f11ad0718fb6edf26b3f..0fd19e3fdff433d4ba22af5790cc35e514c3a885 100644 (file)
@@ -448,17 +448,25 @@ draw_session_prepare(struct ilo_render *render,
       session->prim_changed = true;
       session->primitive_restart_changed = true;
 
+      ilo_state_urb_full_delta(&vec->urb, render->dev, &session->urb_delta);
+
       ilo_state_raster_full_delta(&vec->rasterizer->rs, render->dev,
             &session->rs_delta);
 
       ilo_state_viewport_full_delta(&vec->viewport.vp, render->dev,
             &session->vp_delta);
+
+      ilo_state_cc_full_delta(&vec->blend->cc, render->dev,
+            &session->cc_delta);
    } else {
       session->prim_changed =
          (render->state.reduced_prim != session->reduced_prim);
       session->primitive_restart_changed =
          (render->state.primitive_restart != vec->draw->primitive_restart);
 
+      ilo_state_urb_get_delta(&vec->urb, render->dev,
+            &render->state.urb, &session->urb_delta);
+
       if (vec->dirty & ILO_DIRTY_RASTERIZER) {
          ilo_state_raster_get_delta(&vec->rasterizer->rs, render->dev,
                &render->state.rs, &session->rs_delta);
@@ -468,6 +476,11 @@ draw_session_prepare(struct ilo_render *render,
          ilo_state_viewport_full_delta(&vec->viewport.vp, render->dev,
                &session->vp_delta);
       }
+
+      if (vec->dirty & ILO_DIRTY_BLEND) {
+         ilo_state_cc_get_delta(&vec->blend->cc, render->dev,
+               &render->state.cc, &session->cc_delta);
+      }
    }
 }
 
@@ -485,7 +498,9 @@ draw_session_end(struct ilo_render *render,
    render->state.reduced_prim = session->reduced_prim;
    render->state.primitive_restart = vec->draw->primitive_restart;
 
+   render->state.urb = vec->urb;
    render->state.rs = vec->rasterizer->rs;
+   render->state.cc = vec->blend->cc;
 }
 
 void