i965: Set the correct provoking vertex for clipped first-mode trifans.
Bug #24470: glean clipFlat test.
This commit is contained in:
parent
18ed479119
commit
4e84dc8729
|
@ -177,7 +177,7 @@ void brw_clip_tri_init_vertices( struct brw_clip_compile *c )
|
||||||
void brw_clip_tri_flat_shade( struct brw_clip_compile *c )
|
void brw_clip_tri_flat_shade( struct brw_clip_compile *c )
|
||||||
{
|
{
|
||||||
struct brw_compile *p = &c->func;
|
struct brw_compile *p = &c->func;
|
||||||
struct brw_instruction *is_poly;
|
struct brw_instruction *is_poly, *is_trifan;
|
||||||
struct brw_reg tmp0 = c->reg.loopcount; /* handy temporary */
|
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_AND(p, tmp0, get_element_ud(c->reg.R0, 2), brw_imm_ud(PRIM_MASK));
|
||||||
|
@ -195,8 +195,22 @@ void brw_clip_tri_flat_shade( struct brw_clip_compile *c )
|
||||||
is_poly = brw_ELSE(p, is_poly);
|
is_poly = brw_ELSE(p, is_poly);
|
||||||
{
|
{
|
||||||
if (c->key.pv_first) {
|
if (c->key.pv_first) {
|
||||||
brw_clip_copy_colors(c, 1, 0);
|
brw_CMP(p,
|
||||||
brw_clip_copy_colors(c, 2, 0);
|
vec1(brw_null_reg()),
|
||||||
|
BRW_CONDITIONAL_EQ,
|
||||||
|
tmp0,
|
||||||
|
brw_imm_ud(_3DPRIM_TRIFAN));
|
||||||
|
is_trifan = brw_IF(p, BRW_EXECUTE_1);
|
||||||
|
{
|
||||||
|
brw_clip_copy_colors(c, 0, 1);
|
||||||
|
brw_clip_copy_colors(c, 2, 1);
|
||||||
|
}
|
||||||
|
is_trifan = brw_ELSE(p, is_trifan);
|
||||||
|
{
|
||||||
|
brw_clip_copy_colors(c, 1, 0);
|
||||||
|
brw_clip_copy_colors(c, 2, 0);
|
||||||
|
}
|
||||||
|
brw_ENDIF(p, is_trifan);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
brw_clip_copy_colors(c, 0, 2);
|
brw_clip_copy_colors(c, 0, 2);
|
||||||
|
|
Loading…
Reference in New Issue