summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi/si_shader.h
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2016-02-15 23:57:54 +0100
committerMarek Olšák <marek.olsak@amd.com>2016-02-21 21:08:58 +0100
commit4636d9be4a40138d0a10cadcb1b63eea89d95e34 (patch)
tree740236bab766818d5bf3ea6e30bcbd03448f7b6c /src/gallium/drivers/radeonsi/si_shader.h
parente79bb746ab8525d56f71948ebf3d6dbf8a3bdd4d (diff)
downloadexternal_mesa3d-4636d9be4a40138d0a10cadcb1b63eea89d95e34.zip
external_mesa3d-4636d9be4a40138d0a10cadcb1b63eea89d95e34.tar.gz
external_mesa3d-4636d9be4a40138d0a10cadcb1b63eea89d95e34.tar.bz2
radeonsi: add PS prolog
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_shader.h')
-rw-r--r--src/gallium/drivers/radeonsi/si_shader.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h
index 928cb2e..196fa3e 100644
--- a/src/gallium/drivers/radeonsi/si_shader.h
+++ b/src/gallium/drivers/radeonsi/si_shader.h
@@ -169,7 +169,7 @@ struct radeon_shader_reloc;
#define SI_PARAM_SAMPLE_COVERAGE 20
#define SI_PARAM_POS_FIXED_PT 21
-#define SI_NUM_PARAMS (SI_PARAM_POS_FIXED_PT + 1)
+#define SI_NUM_PARAMS (SI_PARAM_POS_FIXED_PT + 9) /* +8 for COLOR[0..1] */
struct si_shader;
@@ -199,6 +199,7 @@ struct si_shader_selector {
unsigned max_gsvs_emit_size;
/* PS parameters. */
+ unsigned color_attr_index[2];
unsigned db_shader_control;
/* Set 0xf or 0x0 (4 bits) per each written output.
* ANDed with spi_shader_col_format.
@@ -282,6 +283,17 @@ union si_shader_part_key {
struct si_tcs_epilog_bits states;
} tcs_epilog;
struct {
+ struct si_ps_prolog_bits states;
+ unsigned num_input_sgprs:5;
+ unsigned num_input_vgprs:5;
+ /* Color interpolation and two-side color selection. */
+ unsigned colors_read:8; /* color input components read */
+ unsigned num_interp_inputs:5; /* BCOLOR is at this location */
+ unsigned face_vgpr_index:5;
+ char color_attr_index[2];
+ char color_interp_vgpr_index[2]; /* -1 == constant */
+ } ps_prolog;
+ struct {
struct si_ps_epilog_bits states;
unsigned colors_written:8;
unsigned writes_z:1;