Lines Matching refs:brw

88 static void brw_set_prim(struct brw_context *brw,
91 struct gl_context *ctx = &brw->intel.ctx;
111 if (hw_prim != brw->primitive) {
112 brw->primitive = hw_prim;
113 brw->state.dirty.brw |= BRW_NEW_PRIMITIVE;
115 if (reduced_prim[prim->mode] != brw->intel.reduced_primitive) {
116 brw->intel.reduced_primitive = reduced_prim[prim->mode];
117 brw->state.dirty.brw |= BRW_NEW_REDUCED_PRIMITIVE;
122 static void gen6_set_prim(struct brw_context *brw,
131 if (hw_prim != brw->primitive) {
132 brw->primitive = hw_prim;
133 brw->state.dirty.brw |= BRW_NEW_PRIMITIVE;
149 static void brw_emit_prim(struct brw_context *brw,
153 struct intel_context *intel = &brw->intel;
166 start_vertex_location += brw->ib.start_vertex_offset;
167 base_vertex_location += brw->vb.start_vertex_bias;
170 start_vertex_location += brw->vb.start_vertex_bias;
206 static void gen7_emit_prim(struct brw_context *brw,
210 struct intel_context *intel = &brw->intel;
223 start_vertex_location += brw->ib.start_vertex_offset;
224 base_vertex_location += brw->vb.start_vertex_bias;
227 start_vertex_location += brw->vb.start_vertex_bias;
261 static void brw_merge_inputs( struct brw_context *brw,
264 struct brw_vertex_info old = brw->vb.info;
267 for (i = 0; i < brw->vb.nr_buffers; i++) {
268 drm_intel_bo_unreference(brw->vb.buffers[i].bo);
269 brw->vb.buffers[i].bo = NULL;
271 brw->vb.nr_buffers = 0;
273 memset(&brw->vb.info, 0, sizeof(brw->vb.info));
276 brw->vb.inputs[i].buffer = -1;
277 brw->vb.inputs[i].glarray = arrays[i];
278 brw->vb.inputs[i].attrib = (gl_vert_attrib) i;
281 brw->vb.info.sizes[i/16] |= (brw->vb.inputs[i].glarray->Size - 1) <<
286 if (memcmp(brw->vb.info.sizes, old.sizes, sizeof(old.sizes)) != 0)
287 brw->state.dirty.brw |= BRW_NEW_INPUT_DIMENSIONS;
299 brw_predraw_resolve_buffers(struct brw_context *brw)
301 struct gl_context *ctx = &brw->intel.ctx;
302 struct intel_context *intel = &brw->intel;
331 static void brw_postdraw_set_buffers_need_resolve(struct brw_context *brw)
333 struct intel_context *intel = &brw->intel;
334 struct gl_context *ctx = &brw->intel.ctx;
381 brw_update_primitive_count(struct brw_context *brw,
385 brw->sol.primitives_generated += count;
386 if (brw->intel.ctx.TransformFeedback.CurrentObject->Active &&
387 !brw->intel.ctx.TransformFeedback.CurrentObject->Paused) {
388 /* Update brw->sol.svbi_0_max_index to reflect the amount by which the
397 (brw->sol.svbi_0_max_index - brw->sol.svbi_0_starting_index) / verts;
399 brw->sol.svbi_0_starting_index += verts * primitives_written;
402 brw->sol.primitives_written += primitives_written;
418 struct brw_context *brw = brw_context(ctx);
433 brw_validate_textures( brw );
441 brw_predraw_resolve_buffers(brw);
445 brw_merge_inputs( brw, arrays );
447 brw->ib.ib = ib;
448 brw->state.dirty.brw |= BRW_NEW_INDICES;
450 brw->vb.min_index = min_index;
451 brw->vb.max_index = max_index;
452 brw->state.dirty.brw |= BRW_NEW_VERTICES;
457 * Note this is where brw->vs->prog_data.inputs_read is calculated,
479 brw->num_instances = prim->num_instances;
481 brw_set_prim(brw, &prim[i]);
483 gen6_set_prim(brw, &prim[i]);
486 /* Note that before the loop, brw->state.dirty.brw was set to != 0, and
489 * brw->state.dirty.brw.
491 if (brw->state.dirty.brw) {
493 brw_upload_state(brw);
497 gen7_emit_prim(brw, &prim[i], brw->primitive);
499 brw_emit_prim(brw, &prim[i], brw->primitive);
525 brw_update_primitive_count(brw, &prim[i]);
531 brw_state_cache_check_size(brw);
532 brw_postdraw_set_buffers_need_resolve(brw);
592 void brw_draw_init( struct brw_context *brw )
594 struct gl_context *ctx = &brw->intel.ctx;
603 brw->vb.inputs[i].buffer = -1;
604 brw->vb.nr_buffers = 0;
605 brw->vb.nr_enabled = 0;
608 void brw_draw_destroy( struct brw_context *brw )
612 for (i = 0; i < brw->vb.nr_buffers; i++) {
613 drm_intel_bo_unreference(brw->vb.buffers[i].bo);
614 brw->vb.buffers[i].bo = NULL;
616 brw->vb.nr_buffers = 0;
618 for (i = 0; i < brw->vb.nr_enabled; i++) {
619 brw->vb.enabled[i]->buffer = -1;
621 brw->vb.nr_enabled = 0;
623 drm_intel_bo_unreference(brw->ib.bo);
624 brw->ib.bo = NULL;