Avoid branch instructions while in single program flow mode.
authorEric Anholt <eric@anholt.net>
Wed, 18 Oct 2006 07:24:01 +0000 (00:24 -0700)
committerEric Anholt <eric@anholt.net>
Sun, 10 Dec 2006 20:24:51 +0000 (12:24 -0800)
commit9a94dae4c292bfc2aa94a3f86865550e2217b870
treeb10040a5802727ceb94923b7d3544e6397cc23d9
parent183abbcd6b48178a3412ee8992131ce8c7e7b69d
Avoid branch instructions while in single program flow mode.

There is an errata for Broadwater that threads don't have the instruction/loop
mask stacks initialized on thread spawn.  In single program flow mode, those
stacks are not writable, so we can't initialize them.  However, they do get
read during ELSE and ENDIF instructions.  So, instead, replace branch
instructions in single program flow mode with predicated jumps (ADD to the ip
register), avoiding use of the more complicated branch instructions that may
fail.  This is also a minor optimization as no ENDIF equivalent is necessary.
src/mesa/drivers/dri/i965/brw_clip.c
src/mesa/drivers/dri/i965/brw_eu.h
src/mesa/drivers/dri/i965/brw_eu_emit.c
src/mesa/drivers/dri/i965/brw_gs.c
src/mesa/drivers/dri/i965/brw_structs.h