summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/r600_shader.h
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2015-11-30 10:45:19 +1000
committerDave Airlie <[email protected]>2015-12-07 09:58:59 +1000
commitb1da110b71b20509e4689475e82e88750f69b8fc (patch)
tree078bd6fd8dd3b5ce39ba61d270d957c2892142de /src/gallium/drivers/r600/r600_shader.h
parenta131ac73e6e653962723669dd5403fff061aa90f (diff)
r600: add shader key entries for tcs and tes.
with tessellation vs can now run on ls, and tes can run on vs or es, tcs runs on hs. Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.h')
-rw-r--r--src/gallium/drivers/r600/r600_shader.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h
index 2040f732bf5..398e7da7666 100644
--- a/src/gallium/drivers/r600/r600_shader.h
+++ b/src/gallium/drivers/r600/r600_shader.h
@@ -30,6 +30,16 @@
extern "C" {
#endif
+/* Valid shader configurations:
+ *
+ * API shaders VS | TCS | TES | GS |pass| PS
+ * are compiled as: | | | |thru|
+ * | | | | |
+ * Only VS & PS: VS | -- | -- | -- | -- | PS
+ * With GS: ES | -- | -- | GS | VS | PS
+ * With Tessel.: LS | HS | VS | -- | -- | PS
+ * With both: LS | HS | ES | GS | VS | PS
+ */
struct r600_shader_io {
unsigned name;
@@ -86,7 +96,10 @@ struct r600_shader {
unsigned max_arrays;
unsigned num_arrays;
unsigned vs_as_es;
+ unsigned vs_as_ls;
unsigned vs_as_gs_a;
+ unsigned tes_as_es;
+ unsigned tcs_prim_mode;
unsigned ps_prim_id_input;
struct r600_shader_array * arrays;
@@ -102,8 +115,15 @@ union r600_shader_key {
struct {
unsigned prim_id_out:8;
unsigned as_es:1; /* export shader */
+ unsigned as_ls:1; /* local shader */
unsigned as_gs_a:1;
} vs;
+ struct {
+ unsigned as_es:1;
+ } tes;
+ struct {
+ unsigned prim_mode:3;
+ } tcs;
};
struct r600_shader_array {