summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/r600_shader.h
diff options
context:
space:
mode:
authorVadim Girlin <[email protected]>2013-08-02 06:38:23 +0400
committerDave Airlie <[email protected]>2014-02-05 10:49:11 +1000
commit1371d65a7fbd695d3516861fe733685569d890d0 (patch)
tree8c387665f364abadb25a1a6817c7178ec4aff39d /src/gallium/drivers/r600/r600_shader.h
parent34ee1d0f9f64cd19ed0ddbbbf82db6230afca71d (diff)
r600g: initial support for geometry shaders on evergreen (v2)
This is Vadim's initial work with a few regression fixes squashed in. v2: (airlied) fix regression in glsl-max-varyings - need to use vs and ps_dirty fix regression in shader exports from rebasing. whitespace fixing. v2.1: squash fix assert Signed-off-by: Vadim Girlin <[email protected]> Signed-off-by: Dave Airlie <[email protected]> Reviewed-by: Alex Deucher <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.h')
-rw-r--r--src/gallium/drivers/r600/r600_shader.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h
index d989ce43649..0bf8b51fff3 100644
--- a/src/gallium/drivers/r600/r600_shader.h
+++ b/src/gallium/drivers/r600/r600_shader.h
@@ -37,6 +37,7 @@ struct r600_shader_io {
unsigned lds_pos; /* for evergreen */
unsigned back_color_input;
unsigned write_mask;
+ int ring_offset;
};
struct r600_shader {
@@ -64,9 +65,17 @@ struct r600_shader {
boolean has_txq_cube_array_z_comp;
boolean uses_tex_buffers;
+ /* geometry shader properties */
+ unsigned gs_input_prim;
+ unsigned gs_output_prim;
+ unsigned gs_max_out_vertices;
+ /* size in bytes of a data item in the ring (single vertex data) */
+ unsigned ring_item_size;
+
unsigned indirect_files;
unsigned max_arrays;
unsigned num_arrays;
+ unsigned vs_as_es;
struct r600_shader_array * arrays;
};
@@ -74,6 +83,7 @@ struct r600_shader_key {
unsigned color_two_side:1;
unsigned alpha_to_one:1;
unsigned nr_cbufs:4;
+ unsigned vs_as_es:1;
};
struct r600_shader_array {
@@ -85,6 +95,8 @@ struct r600_shader_array {
struct r600_pipe_shader {
struct r600_pipe_shader_selector *selector;
struct r600_pipe_shader *next_variant;
+ /* for GS - corresponding copy shader (installed as VS) */
+ struct r600_pipe_shader *gs_copy_shader;
struct r600_shader shader;
struct r600_command_buffer command_buffer; /* register writes */
struct r600_resource *bo;