/* Most minimal update, forces re-emit of URB fence packet after GS
* unit turned on/off.
*/
-static void recalculate_urb_fence( struct brw_context *brw )
+void
+brw_calculate_urb_fence(struct brw_context *brw, unsigned csize,
+ unsigned vsize, unsigned sfsize)
{
- GLuint csize = brw->curbe.total_size;
- GLuint vsize = brw_vue_prog_data(brw->vs.base.prog_data)->urb_entry_size;
- GLuint sfsize = brw->sf.prog_data->urb_entry_size;
+ const struct gen_device_info *devinfo = &brw->screen->devinfo;
if (csize < limits[CS].min_entry_size)
csize = limits[CS].min_entry_size;
brw->urb.constrained = 0;
- if (brw->gen == 5) {
+ if (devinfo->gen == 5) {
brw->urb.nr_vs_entries = 128;
brw->urb.nr_sf_entries = 48;
if (check_urb_layout(brw)) {
brw->urb.nr_vs_entries = limits[VS].preferred_nr_entries;
brw->urb.nr_sf_entries = limits[SF].preferred_nr_entries;
}
- } else if (brw->is_g4x) {
+ } else if (devinfo->is_g4x) {
brw->urb.nr_vs_entries = 64;
if (check_urb_layout(brw)) {
goto done;
}
}
+static void recalculate_urb_fence( struct brw_context *brw )
+{
+ brw_calculate_urb_fence(brw, brw->curbe.total_size,
+ brw_vue_prog_data(brw->vs.base.prog_data)->urb_entry_size,
+ brw->sf.prog_data->urb_entry_size);
+}
+
const struct brw_tracked_state brw_recalculate_urb_fence = {
.dirty = {
while (--pad);
}
- BRW_BATCH_STRUCT(brw, &uf);
+ intel_batchbuffer_data(brw, &uf, sizeof(uf));
}