summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600/r600_asm.h
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-09-08 14:09:40 +1000
committerDave Airlie <airlied@redhat.com>2010-09-08 14:12:21 +1000
commitbf346f065c65e15e5757d5b1a14dbc6638051860 (patch)
treeeaa1e5bdec0cce3c5e38d4a7a218fa755a9ef8cb /src/gallium/drivers/r600/r600_asm.h
parent48e789d71e01b0a7185555735b4a26b1a53d0825 (diff)
r600g: add initial bank swizzle support.
this is ported from r600c mostly, bank swizzling is real messy and I don't think I got enough sleep last night to fully understand it.
Diffstat (limited to 'src/gallium/drivers/r600/r600_asm.h')
-rw-r--r--src/gallium/drivers/r600/r600_asm.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_asm.h b/src/gallium/drivers/r600/r600_asm.h
index 0d75d99310..d4b3463af5 100644
--- a/src/gallium/drivers/r600/r600_asm.h
+++ b/src/gallium/drivers/r600/r600_asm.h
@@ -26,6 +26,9 @@
#include "radeon.h"
#include "util/u_double_list.h"
+#define NUM_OF_CYCLES 3
+#define NUM_OF_COMPONENTS 4
+
struct r600_bc_alu_src {
unsigned sel;
unsigned chan;
@@ -44,6 +47,7 @@ struct r600_bc_alu_dst {
struct r600_bc_alu {
struct list_head list;
+ struct list_head bs_list; /* bank swizzle list */
struct r600_bc_alu_src src[3];
struct r600_bc_alu_dst dst;
unsigned inst;
@@ -52,7 +56,9 @@ struct r600_bc_alu {
unsigned predicate;
unsigned nliteral;
unsigned literal_added;
+ unsigned bank_swizzle;
u32 value[4];
+ int hw_gpr[NUM_OF_CYCLES][NUM_OF_COMPONENTS];
};
struct r600_bc_tex {
@@ -125,6 +131,7 @@ struct r600_bc_cf {
struct list_head tex;
struct list_head vtx;
struct r600_bc_output output;
+ struct r600_bc_alu *curr_bs_head;
};
#define FC_NONE 0