summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/r600_asm.h
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2015-11-30 10:01:41 +1000
committerDave Airlie <[email protected]>2015-12-07 09:58:59 +1000
commit2b25d9ac7f364259058bf8098ebd40c7c484bcd7 (patch)
tree19258f49149392da31acd484c7445bc9da4bce28 /src/gallium/drivers/r600/r600_asm.h
parent4f83184eff9358a72f5d48dd16771c553f914ed0 (diff)
r600: add support for GDS clause to the assembler.
This just adds enough for the tessellation shaders, which require TF_WRITE to work. Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_asm.h')
-rw-r--r--src/gallium/drivers/r600/r600_asm.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/r600_asm.h b/src/gallium/drivers/r600/r600_asm.h
index d48ad1ebf01..f786bab3d59 100644
--- a/src/gallium/drivers/r600/r600_asm.h
+++ b/src/gallium/drivers/r600/r600_asm.h
@@ -115,6 +115,24 @@ struct r600_bytecode_vtx {
unsigned buffer_index_mode;
};
+struct r600_bytecode_gds {
+ struct list_head list;
+ unsigned op;
+ unsigned gds_op;
+ unsigned src_gpr;
+ unsigned src_rel;
+ unsigned src_sel_x;
+ unsigned src_sel_y;
+ unsigned src_sel_z;
+ unsigned src_gpr2;
+ unsigned dst_gpr;
+ unsigned dst_rel;
+ unsigned dst_sel_x;
+ unsigned dst_sel_y;
+ unsigned dst_sel_z;
+ unsigned dst_sel_w;
+};
+
struct r600_bytecode_output {
unsigned array_base;
unsigned array_size;
@@ -159,6 +177,7 @@ struct r600_bytecode_cf {
struct list_head alu;
struct list_head tex;
struct list_head vtx;
+ struct list_head gds;
struct r600_bytecode_output output;
struct r600_bytecode_alu *curr_bs_head;
struct r600_bytecode_alu *prev_bs_head;
@@ -233,7 +252,7 @@ struct r600_bytecode {
/* eg_asm.c */
int eg_bytecode_cf_build(struct r600_bytecode *bc, struct r600_bytecode_cf *cf);
int egcm_load_index_reg(struct r600_bytecode *bc, unsigned id, bool inside_alu_clause);
-
+int eg_bytecode_gds_build(struct r600_bytecode *bc, struct r600_bytecode_gds *gds, unsigned id);
/* r600_asm.c */
void r600_bytecode_init(struct r600_bytecode *bc,
enum chip_class chip_class,
@@ -246,6 +265,8 @@ int r600_bytecode_add_vtx(struct r600_bytecode *bc,
const struct r600_bytecode_vtx *vtx);
int r600_bytecode_add_tex(struct r600_bytecode *bc,
const struct r600_bytecode_tex *tex);
+int r600_bytecode_add_gds(struct r600_bytecode *bc,
+ const struct r600_bytecode_gds *gds);
int r600_bytecode_add_output(struct r600_bytecode *bc,
const struct r600_bytecode_output *output);
int r600_bytecode_build(struct r600_bytecode *bc);