summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/r600_shader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.h')
-rw-r--r--src/gallium/drivers/r600/r600_shader.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h
index 9032d508383..3fecda4c800 100644
--- a/src/gallium/drivers/r600/r600_shader.h
+++ b/src/gallium/drivers/r600/r600_shader.h
@@ -56,15 +56,25 @@ struct r600_shader_io {
int ring_offset;
};
+struct r600_shader_atomic {
+ unsigned start, end;
+ unsigned buffer_id;
+ unsigned hw_idx;
+ unsigned array_id;
+};
+
struct r600_shader {
unsigned processor_type;
struct r600_bytecode bc;
unsigned ninput;
unsigned noutput;
+ unsigned nhwatomic;
unsigned nlds;
unsigned nsys_inputs;
struct r600_shader_io input[64];
struct r600_shader_io output[64];
+ struct r600_shader_atomic atomics[8];
+ unsigned nhwatomic_ranges;
boolean uses_kill;
boolean fs_write_all;
boolean two_side;
@@ -105,26 +115,35 @@ struct r600_shader {
struct r600_shader_array * arrays;
boolean uses_doubles;
+ boolean uses_atomics;
+ uint8_t atomic_base;
};
union r600_shader_key {
struct {
unsigned nr_cbufs:4;
+ unsigned first_atomic_counter:4;
unsigned color_two_side:1;
unsigned alpha_to_one:1;
} ps;
struct {
unsigned prim_id_out:8;
+ unsigned first_atomic_counter:4;
unsigned as_es:1; /* export shader */
unsigned as_ls:1; /* local shader */
unsigned as_gs_a:1;
} vs;
struct {
+ unsigned first_atomic_counter:4;
unsigned as_es:1;
} tes;
struct {
+ unsigned first_atomic_counter:4;
unsigned prim_mode:3;
} tcs;
+ struct {
+ unsigned first_atomic_counter:4;
+ } gs;
};
struct r600_shader_array {