From: Vadim Girlin vadimgir...@gmail.com
Signed-off-by: Vadim Girlin vadimgir...@gmail.com
Signed-off-by: Dave Airlie airl...@redhat.com
---
src/gallium/drivers/r600/eg_asm.c | 10 ++
src/gallium/drivers/r600/r600_asm.c| 21 +++--
src/gallium/drivers/r600/r600_asm.h| 4 ++--
src/gallium/drivers/r600/r600_shader.c | 26 +-
4 files changed, 32 insertions(+), 29 deletions(-)
diff --git a/src/gallium/drivers/r600/eg_asm.c
b/src/gallium/drivers/r600/eg_asm.c
index fffc436..42e78c0 100644
--- a/src/gallium/drivers/r600/eg_asm.c
+++ b/src/gallium/drivers/r600/eg_asm.c
@@ -86,11 +86,11 @@ int eg_bytecode_cf_build(struct r600_bytecode *bc, struct
r600_bytecode_cf *cf)
S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y(cf-output.swizzle_y) |
S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z(cf-output.swizzle_z) |
S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W(cf-output.swizzle_w) |
-
S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(cf-output.barrier) |
+
S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(cf-barrier) |
S_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST(opcode);
if (bc-chip_class == EVERGREEN) /* no EOP on cayman */
- bc-bytecode[id] |=
S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(cf-output.end_of_program);
+ bc-bytecode[id] |=
S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(cf-end_of_program);
id++;
} else if (cfop-flags CF_STRM) {
/* MEM_STREAM instructions */
@@ -99,12 +99,12 @@ int eg_bytecode_cf_build(struct r600_bytecode *bc, struct
r600_bytecode_cf *cf)
S_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE(cf-output.array_base) |
S_SQ_CF_ALLOC_EXPORT_WORD0_TYPE(cf-output.type);
bc-bytecode[id] =
S_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(cf-output.burst_count - 1) |
-
S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(cf-output.barrier) |
+
S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(cf-barrier) |
S_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST(opcode) |
S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(cf-output.comp_mask) |
S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(cf-output.array_size);
if (bc-chip_class == EVERGREEN) /* no EOP on cayman */
- bc-bytecode[id] |=
S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(cf-output.end_of_program);
+ bc-bytecode[id] |=
S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(cf-end_of_program);
id++;
} else {
/* branch, loop, call, return instructions */
@@ -118,6 +118,7 @@ int eg_bytecode_cf_build(struct r600_bytecode *bc, struct
r600_bytecode_cf *cf)
return 0;
}
+#if 0
void eg_bytecode_export_read(struct r600_bytecode *bc,
struct r600_bytecode_output *output, uint32_t word0, uint32_t
word1)
{
@@ -138,3 +139,4 @@ void eg_bytecode_export_read(struct r600_bytecode *bc,
output-array_size = G_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(word1);
output-comp_mask = G_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(word1);
}
+#endif
diff --git a/src/gallium/drivers/r600/r600_asm.c
b/src/gallium/drivers/r600/r600_asm.c
index 86f79e2..dbf4b07 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -193,7 +193,6 @@ int r600_bytecode_add_output(struct r600_bytecode *bc,
if ((output-gpr + output-burst_count) ==
bc-cf_last-output.gpr
(output-array_base + output-burst_count) ==
bc-cf_last-output.array_base) {
- bc-cf_last-output.end_of_program |=
output-end_of_program;
bc-cf_last-op = bc-cf_last-output.op = output-op;
bc-cf_last-output.gpr = output-gpr;
bc-cf_last-output.array_base = output-array_base;
@@ -203,7 +202,6 @@ int r600_bytecode_add_output(struct r600_bytecode *bc,
} else if (output-gpr == (bc-cf_last-output.gpr +
bc-cf_last-output.burst_count)
output-array_base == (bc-cf_last-output.array_base +
bc-cf_last-output.burst_count)) {
- bc-cf_last-output.end_of_program |=
output-end_of_program;
bc-cf_last-op = bc-cf_last-output.op = output-op;
bc-cf_last-output.burst_count += output-burst_count;
return 0;
@@ -215,6 +213,7 @@ int r600_bytecode_add_output(struct r600_bytecode *bc,