diff options
author | Vadim Girlin <[email protected]> | 2013-08-02 06:38:23 +0400 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2014-02-05 10:49:11 +1000 |
commit | 1371d65a7fbd695d3516861fe733685569d890d0 (patch) | |
tree | 8c387665f364abadb25a1a6817c7178ec4aff39d /src/gallium/drivers/r600/r600_shader.h | |
parent | 34ee1d0f9f64cd19ed0ddbbbf82db6230afca71d (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.h | 12 |
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; |