i965: clip: Convert computations to ..._to_offset() for clarity.
This patch replaces some ad-hoc computations using ATTR_SIZE and the offset[] array to use the VUE map functions brw_vert_result_to_offset() and brw_vue_slot_to_offset(). Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
@@ -79,7 +79,7 @@ void brw_clip_tri_alloc_regs( struct brw_clip_compile *c,
|
||||
* used. Fill the second half with zero.
|
||||
*/
|
||||
for (j = 0; j < 3; j++) {
|
||||
GLuint delta = c->vue_map.num_slots * ATTR_SIZE;
|
||||
GLuint delta = brw_vue_slot_to_offset(c->vue_map.num_slots);
|
||||
|
||||
brw_MOV(&c->func, byte_offset(c->reg.vertex[j], delta), brw_imm_f(0));
|
||||
}
|
||||
|
@@ -159,14 +159,22 @@ static void copy_bfc( struct brw_clip_compile *c )
|
||||
if (brw_clip_have_vert_result(c, VERT_RESULT_COL0) &&
|
||||
brw_clip_have_vert_result(c, VERT_RESULT_BFC0))
|
||||
brw_MOV(p,
|
||||
byte_offset(c->reg.vertex[i], c->offset[VERT_RESULT_COL0]),
|
||||
byte_offset(c->reg.vertex[i], c->offset[VERT_RESULT_BFC0]));
|
||||
byte_offset(c->reg.vertex[i],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_COL0)),
|
||||
byte_offset(c->reg.vertex[i],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_BFC0)));
|
||||
|
||||
if (brw_clip_have_vert_result(c, VERT_RESULT_COL1) &&
|
||||
brw_clip_have_vert_result(c, VERT_RESULT_BFC1))
|
||||
brw_MOV(p,
|
||||
byte_offset(c->reg.vertex[i], c->offset[VERT_RESULT_COL1]),
|
||||
byte_offset(c->reg.vertex[i], c->offset[VERT_RESULT_BFC1]));
|
||||
byte_offset(c->reg.vertex[i],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_COL1)),
|
||||
byte_offset(c->reg.vertex[i],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_BFC1)));
|
||||
}
|
||||
}
|
||||
brw_ENDIF(p);
|
||||
@@ -225,12 +233,18 @@ static void merge_edgeflags( struct brw_clip_compile *c )
|
||||
{
|
||||
brw_set_conditionalmod(p, BRW_CONDITIONAL_EQ);
|
||||
brw_AND(p, vec1(brw_null_reg()), get_element_ud(c->reg.R0, 2), brw_imm_ud(1<<8));
|
||||
brw_MOV(p, byte_offset(c->reg.vertex[0], c->offset[VERT_RESULT_EDGE]), brw_imm_f(0));
|
||||
brw_MOV(p, byte_offset(c->reg.vertex[0],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_EDGE)),
|
||||
brw_imm_f(0));
|
||||
brw_set_predicate_control(p, BRW_PREDICATE_NONE);
|
||||
|
||||
brw_set_conditionalmod(p, BRW_CONDITIONAL_EQ);
|
||||
brw_AND(p, vec1(brw_null_reg()), get_element_ud(c->reg.R0, 2), brw_imm_ud(1<<9));
|
||||
brw_MOV(p, byte_offset(c->reg.vertex[2], c->offset[VERT_RESULT_EDGE]), brw_imm_f(0));
|
||||
brw_MOV(p, byte_offset(c->reg.vertex[2],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_EDGE)),
|
||||
brw_imm_f(0));
|
||||
brw_set_predicate_control(p, BRW_PREDICATE_NONE);
|
||||
}
|
||||
brw_ENDIF(p);
|
||||
@@ -302,7 +316,8 @@ static void emit_lines(struct brw_clip_compile *c,
|
||||
/* draw edge if edgeflag != 0 */
|
||||
brw_CMP(p,
|
||||
vec1(brw_null_reg()), BRW_CONDITIONAL_NZ,
|
||||
deref_1f(v0, c->offset[VERT_RESULT_EDGE]),
|
||||
deref_1f(v0, brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_EDGE)),
|
||||
brw_imm_f(0));
|
||||
brw_IF(p, BRW_EXECUTE_1);
|
||||
{
|
||||
@@ -340,7 +355,8 @@ static void emit_points(struct brw_clip_compile *c,
|
||||
*/
|
||||
brw_CMP(p,
|
||||
vec1(brw_null_reg()), BRW_CONDITIONAL_NZ,
|
||||
deref_1f(v0, c->offset[VERT_RESULT_EDGE]),
|
||||
deref_1f(v0, brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_EDGE)),
|
||||
brw_imm_f(0));
|
||||
brw_IF(p, BRW_EXECUTE_1);
|
||||
{
|
||||
|
@@ -152,7 +152,7 @@ void brw_clip_interp_vertex( struct brw_clip_compile *c,
|
||||
/* Iterate over each attribute (could be done in pairs?)
|
||||
*/
|
||||
for (slot = 2*c->header_regs; slot < c->vue_map.num_slots; slot++) {
|
||||
GLuint delta = ATTR_SIZE * slot;
|
||||
GLuint delta = brw_vue_slot_to_offset(slot);
|
||||
|
||||
if (c->vue_map.slot_to_vert_result[slot] == VERT_RESULT_EDGE) {
|
||||
if (force_edgeflag)
|
||||
@@ -183,7 +183,7 @@ void brw_clip_interp_vertex( struct brw_clip_compile *c,
|
||||
}
|
||||
|
||||
if (c->vue_map.num_slots % 2) {
|
||||
GLuint delta = c->vue_map.num_slots * ATTR_SIZE;
|
||||
GLuint delta = brw_vue_slot_to_offset(c->vue_map.num_slots);
|
||||
|
||||
brw_MOV(p, deref_4f(dest_ptr, delta), brw_imm_f(0));
|
||||
}
|
||||
@@ -292,23 +292,39 @@ void brw_clip_copy_colors( struct brw_clip_compile *c,
|
||||
|
||||
if (brw_clip_have_vert_result(c, VERT_RESULT_COL0))
|
||||
brw_MOV(p,
|
||||
byte_offset(c->reg.vertex[to], c->offset[VERT_RESULT_COL0]),
|
||||
byte_offset(c->reg.vertex[from], c->offset[VERT_RESULT_COL0]));
|
||||
byte_offset(c->reg.vertex[to],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_COL0)),
|
||||
byte_offset(c->reg.vertex[from],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_COL0)));
|
||||
|
||||
if (brw_clip_have_vert_result(c, VERT_RESULT_COL1))
|
||||
brw_MOV(p,
|
||||
byte_offset(c->reg.vertex[to], c->offset[VERT_RESULT_COL1]),
|
||||
byte_offset(c->reg.vertex[from], c->offset[VERT_RESULT_COL1]));
|
||||
byte_offset(c->reg.vertex[to],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_COL1)),
|
||||
byte_offset(c->reg.vertex[from],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_COL1)));
|
||||
|
||||
if (brw_clip_have_vert_result(c, VERT_RESULT_BFC0))
|
||||
brw_MOV(p,
|
||||
byte_offset(c->reg.vertex[to], c->offset[VERT_RESULT_BFC0]),
|
||||
byte_offset(c->reg.vertex[from], c->offset[VERT_RESULT_BFC0]));
|
||||
byte_offset(c->reg.vertex[to],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_BFC0)),
|
||||
byte_offset(c->reg.vertex[from],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_BFC0)));
|
||||
|
||||
if (brw_clip_have_vert_result(c, VERT_RESULT_BFC1))
|
||||
brw_MOV(p,
|
||||
byte_offset(c->reg.vertex[to], c->offset[VERT_RESULT_BFC1]),
|
||||
byte_offset(c->reg.vertex[from], c->offset[VERT_RESULT_BFC1]));
|
||||
byte_offset(c->reg.vertex[to],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_BFC1)),
|
||||
byte_offset(c->reg.vertex[from],
|
||||
brw_vert_result_to_offset(&c->vue_map,
|
||||
VERT_RESULT_BFC1)));
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user