diff options
author | Rob Clark <[email protected]> | 2016-04-04 17:33:19 -0400 |
---|---|---|
committer | Rob Clark <[email protected]> | 2016-04-04 20:18:18 -0400 |
commit | 383b6e87f90e0ac84a200e1677a44b370976c93b (patch) | |
tree | 09ce227213251c39b3a881e25adb7cdea7249197 /src/gallium | |
parent | d47fb856af4da5f56f80e072365b9286f0731a54 (diff) |
freedreno/ir3: we can't store immediate values
Fixes some transform-feedback piglits, like:
bin/ext_transform_feedback-nonflat-integral
Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/freedreno/ir3/ir3_cp.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cp.c b/src/gallium/drivers/freedreno/ir3/ir3_cp.c index 48870074514..00fa3538cc0 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_cp.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_cp.c @@ -111,6 +111,19 @@ static bool valid_flags(struct ir3_instruction *instr, unsigned n, valid_flags = IR3_REG_IMMED; if (flags & ~valid_flags) return false; + + if (flags & IR3_REG_IMMED) { + /* doesn't seem like we can have immediate src for store + * instructions: + * + * TODO this restriction could also apply to load instructions, + * but for load instructions this arg is the address (and not + * really sure any good way to test a hard-coded immed addr src) + */ + if (is_store(instr) && (n == 1)) + return false; + } + break; case 2: valid_flags = ir3_cat2_absneg(instr->opc) | |