radeonsi: move DB_SHADER_CONTROL into db_render_state
[mesa.git] / src / gallium / drivers / radeonsi / si_shader.h
index 63c19ecaeef5ba02394adeeefbb8171f0cbd09d4..9c6b2387ac16410cbd8ba01a124ca08048e059a8 100644 (file)
 #define SI_SGPR_CONST          0
 #define SI_SGPR_SAMPLER                2
 #define SI_SGPR_RESOURCE       4
-#define SI_SGPR_VERTEX_BUFFER  6  /* VS only */
-#define SI_SGPR_SO_BUFFER      8  /* VS only, stream-out */
-#define SI_SGPR_START_INSTANCE 10 /* VS only */
-#define SI_SGPR_ALPHA_REF      6  /* PS only */
+#define SI_SGPR_RW_BUFFERS     6  /* rings (& stream-out, VS only) */
+#define SI_SGPR_VERTEX_BUFFER  8  /* VS only */
+#define SI_SGPR_BASE_VERTEX    10 /* VS only */
+#define SI_SGPR_START_INSTANCE 11 /* VS only */
+#define SI_SGPR_ALPHA_REF      8  /* PS only */
 
-#define SI_VS_NUM_USER_SGPR    11
-#define SI_GS_NUM_USER_SGPR    6
-#define SI_PS_NUM_USER_SGPR    7
+#define SI_VS_NUM_USER_SGPR    12
+#define SI_GS_NUM_USER_SGPR    8
+#define SI_PS_NUM_USER_SGPR    9
 
 /* LLVM function parameter indices */
 #define SI_PARAM_CONST         0
 #define SI_PARAM_SAMPLER       1
 #define SI_PARAM_RESOURCE      2
+#define SI_PARAM_RW_BUFFERS    3
 
 /* VS only parameters */
-#define SI_PARAM_VERTEX_BUFFER 3
-#define SI_PARAM_SO_BUFFER     4
-#define SI_PARAM_START_INSTANCE        5
+#define SI_PARAM_VERTEX_BUFFER 4
+#define SI_PARAM_BASE_VERTEX   5
+#define SI_PARAM_START_INSTANCE        6
 /* the other VS parameters are assigned dynamically */
 
 /* ES only parameters */
-#define SI_PARAM_ES2GS_OFFSET  6
+#define SI_PARAM_ES2GS_OFFSET  7
 
 /* GS only parameters */
-#define SI_PARAM_GS2VS_OFFSET  3
-#define SI_PARAM_GS_WAVE_ID    4
-#define SI_PARAM_VTX0_OFFSET   5
-#define SI_PARAM_VTX1_OFFSET   6
-#define SI_PARAM_PRIMITIVE_ID  7
-#define SI_PARAM_VTX2_OFFSET   8
-#define SI_PARAM_VTX3_OFFSET   9
-#define SI_PARAM_VTX4_OFFSET   10
-#define SI_PARAM_VTX5_OFFSET   11
-#define SI_PARAM_GS_INSTANCE_ID        12
+#define SI_PARAM_GS2VS_OFFSET  4
+#define SI_PARAM_GS_WAVE_ID    5
+#define SI_PARAM_VTX0_OFFSET   6
+#define SI_PARAM_VTX1_OFFSET   7
+#define SI_PARAM_PRIMITIVE_ID  8
+#define SI_PARAM_VTX2_OFFSET   9
+#define SI_PARAM_VTX3_OFFSET   10
+#define SI_PARAM_VTX4_OFFSET   11
+#define SI_PARAM_VTX5_OFFSET   12
+#define SI_PARAM_GS_INSTANCE_ID        13
 
 /* PS only parameters */
-#define SI_PARAM_ALPHA_REF             3
-#define SI_PARAM_PRIM_MASK             4
-#define SI_PARAM_PERSP_SAMPLE          5
-#define SI_PARAM_PERSP_CENTER          6
-#define SI_PARAM_PERSP_CENTROID                7
-#define SI_PARAM_PERSP_PULL_MODEL      8
-#define SI_PARAM_LINEAR_SAMPLE         9
-#define SI_PARAM_LINEAR_CENTER         10
-#define SI_PARAM_LINEAR_CENTROID       11
-#define SI_PARAM_LINE_STIPPLE_TEX      12
-#define SI_PARAM_POS_X_FLOAT           13
-#define SI_PARAM_POS_Y_FLOAT           14
-#define SI_PARAM_POS_Z_FLOAT           15
-#define SI_PARAM_POS_W_FLOAT           16
-#define SI_PARAM_FRONT_FACE            17
-#define SI_PARAM_ANCILLARY             18
-#define SI_PARAM_SAMPLE_COVERAGE       19
-#define SI_PARAM_POS_FIXED_PT          20
+#define SI_PARAM_ALPHA_REF             4
+#define SI_PARAM_PRIM_MASK             5
+#define SI_PARAM_PERSP_SAMPLE          6
+#define SI_PARAM_PERSP_CENTER          7
+#define SI_PARAM_PERSP_CENTROID                8
+#define SI_PARAM_PERSP_PULL_MODEL      9
+#define SI_PARAM_LINEAR_SAMPLE         10
+#define SI_PARAM_LINEAR_CENTER         11
+#define SI_PARAM_LINEAR_CENTROID       12
+#define SI_PARAM_LINE_STIPPLE_TEX      13
+#define SI_PARAM_POS_X_FLOAT           14
+#define SI_PARAM_POS_Y_FLOAT           15
+#define SI_PARAM_POS_Z_FLOAT           16
+#define SI_PARAM_POS_W_FLOAT           17
+#define SI_PARAM_FRONT_FACE            18
+#define SI_PARAM_ANCILLARY             19
+#define SI_PARAM_SAMPLE_COVERAGE       20
+#define SI_PARAM_POS_FIXED_PT          21
+
+#define SI_NUM_PARAMS (SI_PARAM_POS_FIXED_PT + 1)
 
 struct si_shader_input {
        unsigned                name;
@@ -138,7 +142,6 @@ struct si_shader {
        unsigned                gs_max_out_vertices;
 
        unsigned                nparam;
-       bool                    uses_kill;
        bool                    uses_instanceid;
        bool                    fs_write_all;
        bool                    vs_out_misc_write;
@@ -156,6 +159,7 @@ union si_shader_key {
                unsigned        color_two_side:1;
                unsigned        alpha_func:3;
                unsigned        flatshade:1;
+               unsigned        interp_at_sample:1;
                unsigned        alpha_to_one:1;
        } ps;
        struct {
@@ -172,14 +176,16 @@ struct si_pipe_shader {
        struct si_shader                shader;
        struct si_pm4_state             *pm4;
        struct r600_resource            *bo;
+       struct r600_resource            *scratch_bo;
        unsigned                        num_sgprs;
        unsigned                        num_vgprs;
        unsigned                        lds_size;
        unsigned                        spi_ps_input_ena;
+       unsigned                        scratch_bytes_per_wave;
        unsigned                        spi_shader_col_format;
+       unsigned                        spi_shader_z_format;
+       unsigned                        db_shader_control;
        unsigned                        cb_shader_mask;
-       bool                            cb0_is_integer;
-       unsigned                        sprite_coord_enable;
        union si_shader_key             key;
 };