Re: [Mesa-dev] [PATCH 02/25] r600g: move barrier and end_of_program bits from output to cf struct

2014-01-30 Thread Dave Airlie
On Thu, Jan 30, 2014 at 10:42 AM, Dave Airlie airl...@gmail.com wrote:
 From: Vadim Girlin vadimgir...@gmail.com

 Signed-off-by: Vadim Girlin vadimgir...@gmail.com
 Signed-off-by: Dave Airlie airl...@redhat.com

This commit has a missing line in the r600 case that causes a
regression, I'll fix it up.

Dave.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 02/25] r600g: move barrier and end_of_program bits from output to cf struct

2014-01-29 Thread Dave Airlie
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,