diff options
author | Marek Olšák <[email protected]> | 2014-09-17 22:17:02 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2014-09-24 14:48:02 +0200 |
commit | e29353ff20a2761a5a1caeaed78398557797207c (patch) | |
tree | 27c76f3fedc936269ae82bb92cdb84a00354018f /src/gallium/drivers/radeonsi/si_shader.h | |
parent | 2774abd4cec70d95cb73f83c2c150e9f5171c50d (diff) |
radeonsi: don't snoop currently-bound GS shader when compiling ES
Instead, pass the layout of GS inputs in memory to the ES using the shader
key. Only 64 bits are needed to represent the layout in the key.
Mixing and matching different VS and GS shaders should now always work.
Reviewed-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_shader.h')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h index 1f1cc32bc9c..637c69d3097 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -141,6 +141,9 @@ union si_shader_key { } ps; struct { unsigned instance_divisors[PIPE_MAX_ATTRIBS]; + /* The mask of "get_unique_index" bits, needed for ES, + * it describes how the ES->GS ring buffer is laid out. */ + uint64_t gs_used_inputs; unsigned ucps_enabled:2; unsigned as_es:1; } vs; @@ -175,6 +178,7 @@ struct si_shader { unsigned gs_input_prim; unsigned gs_output_prim; unsigned gs_max_out_vertices; + uint64_t gs_used_inputs; /* mask of "get_unique_index" bits */ unsigned nparam; bool uses_instanceid; |