- if (brw->vs.push_const_size == 0) {
- /* Disable the push constant buffers. */
- BEGIN_BATCH(7);
- OUT_BATCH(_3DSTATE_CONSTANT_VS << 16 | (7 - 2));
- OUT_BATCH(0);
- OUT_BATCH(0);
- OUT_BATCH(0);
- OUT_BATCH(0);
- OUT_BATCH(0);
- OUT_BATCH(0);
- ADVANCE_BATCH();
+ if (brw->vs.prog_data->base.base.use_alt_mode)
+ floating_point_mode = GEN6_VS_FLOATING_POINT_MODE_ALT;
+
+ BEGIN_BATCH(6);
+ OUT_BATCH(_3DSTATE_VS << 16 | (6 - 2));
+ OUT_BATCH(stage_state->prog_offset);
+ OUT_BATCH(floating_point_mode |
+ ((ALIGN(stage_state->sampler_count, 4)/4) <<
+ GEN6_VS_SAMPLER_COUNT_SHIFT) |
+ ((brw->vs.prog_data->base.base.binding_table.size_bytes / 4) <<
+ GEN6_VS_BINDING_TABLE_ENTRY_COUNT_SHIFT));
+
+ if (prog_data->base.total_scratch) {
+ OUT_RELOC(stage_state->scratch_bo,
+ I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
+ ffs(stage_state->per_thread_scratch) - 11);