void brw_emit_line_clip( struct brw_clip_compile *c ) { brw_clip_line_alloc_regs(c); brw_clip_init_ff_sync(c); if (c->key.contains_flat_varying) { if (c->key.pv_first) brw_clip_copy_flatshaded_attributes(c, 1, 0); else brw_clip_copy_flatshaded_attributes(c, 0, 1); } clip_and_emit_line(c); }
void brw_clip_tri_flat_shade( struct brw_clip_compile *c ) { struct brw_codegen *p = &c->func; struct brw_reg tmp0 = c->reg.loopcount; /* handy temporary */ brw_AND(p, tmp0, get_element_ud(c->reg.R0, 2), brw_imm_ud(PRIM_MASK)); brw_CMP(p, vec1(brw_null_reg()), BRW_CONDITIONAL_EQ, tmp0, brw_imm_ud(_3DPRIM_POLYGON)); brw_IF(p, BRW_EXECUTE_1); { brw_clip_copy_flatshaded_attributes(c, 1, 0); brw_clip_copy_flatshaded_attributes(c, 2, 0); } brw_ELSE(p); { if (c->key.pv_first) { brw_CMP(p, vec1(brw_null_reg()), BRW_CONDITIONAL_EQ, tmp0, brw_imm_ud(_3DPRIM_TRIFAN)); brw_IF(p, BRW_EXECUTE_1); { brw_clip_copy_flatshaded_attributes(c, 0, 1); brw_clip_copy_flatshaded_attributes(c, 2, 1); } brw_ELSE(p); { brw_clip_copy_flatshaded_attributes(c, 1, 0); brw_clip_copy_flatshaded_attributes(c, 2, 0); } brw_ENDIF(p); } else { brw_clip_copy_flatshaded_attributes(c, 0, 2); brw_clip_copy_flatshaded_attributes(c, 1, 2); } } brw_ENDIF(p); }