radeonsi: print the buffer list for CHECK_VM
[mesa.git] / src / gallium / drivers / radeonsi / si_shader.h
index f457f8e20b13f858e8ad9a46af140d2d61fe3d03..bcb5c9da4cea77750858eea18988718abc93e42d 100644 (file)
  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- *     Tom Stellard <thomas.stellard@amd.com>
- *     Michel Dänzer <michel.daenzer@amd.com>
- *      Christian König <christian.koenig@amd.com>
  */
 
 /* The compiler middle-end architecture: Explaining (non-)monolithic shaders
@@ -154,14 +149,11 @@ struct nir_shader;
 
 /* SGPR user data indices */
 enum {
-       /* GFX9 merged shaders have RW_BUFFERS among the first 8 system SGPRs,
-        * and these two are used for other purposes.
-        */
        SI_SGPR_RW_BUFFERS,  /* rings (& stream-out, VS only) */
        SI_SGPR_RW_BUFFERS_HI,
        SI_SGPR_BINDLESS_SAMPLERS_AND_IMAGES,
        SI_SGPR_BINDLESS_SAMPLERS_AND_IMAGES_HI,
-       SI_SGPR_CONST_AND_SHADER_BUFFERS,
+       SI_SGPR_CONST_AND_SHADER_BUFFERS, /* or just a constant buffer 0 pointer */
        SI_SGPR_CONST_AND_SHADER_BUFFERS_HI,
        SI_SGPR_SAMPLERS_AND_IMAGES,
        SI_SGPR_SAMPLERS_AND_IMAGES_HI,
@@ -176,6 +168,8 @@ enum {
        SI_SGPR_VS_STATE_BITS,
        SI_VS_NUM_USER_SGPR,
 
+       SI_SGPR_VS_BLIT_DATA = SI_SGPR_CONST_AND_SHADER_BUFFERS,
+
        /* TES */
        SI_SGPR_TES_OFFCHIP_LAYOUT = SI_NUM_RESOURCE_SGPRS,
        SI_SGPR_TES_OFFCHIP_ADDR_BASE64K,
@@ -263,6 +257,16 @@ enum {
        TGSI_SEMANTIC_DEFAULT_TESSINNER_SI,
 };
 
+enum {
+       /* Use a property enum that VS wouldn't use. */
+       TGSI_PROPERTY_VS_BLIT_SGPRS = TGSI_PROPERTY_FS_COORD_ORIGIN,
+
+       /* These represent the number of SGPRs the shader uses. */
+       SI_VS_BLIT_SGPRS_POS = 3,
+       SI_VS_BLIT_SGPRS_POS_COLOR = 7,
+       SI_VS_BLIT_SGPRS_POS_TEXCOORD = 9,
+};
+
 /* For VS shader key fix_fetch. */
 enum {
        SI_FIX_FETCH_NONE = 0,
@@ -332,12 +336,15 @@ struct si_shader_selector {
        /* PIPE_SHADER_[VERTEX|FRAGMENT|...] */
        unsigned        type;
        bool            vs_needs_prolog;
+       bool            force_correct_derivs_after_kill;
        unsigned        pa_cl_vs_out_cntl;
        ubyte           clipdist_mask;
        ubyte           culldist_mask;
 
-       /* GS parameters. */
+       /* ES parameters. */
        unsigned        esgs_itemsize;
+
+       /* GS parameters. */
        unsigned        gs_input_verts_per_prim;
        unsigned        gs_output_prim;
        unsigned        gs_max_out_vertices;
@@ -447,6 +454,7 @@ union si_shader_part_key {
                unsigned        num_merged_next_stage_vgprs:3;
                unsigned        last_input:4;
                unsigned        as_ls:1;
+               unsigned        as_es:1;
                /* Prologs for monolithic shaders shouldn't set EXEC. */
                unsigned        is_monolithic:1;
        } vs_prolog;
@@ -585,7 +593,7 @@ struct si_shader {
        struct r600_resource            *bo;
        struct r600_resource            *scratch_bo;
        struct si_shader_key            key;
-       struct util_queue_fence         optimized_ready;
+       struct util_queue_fence         ready;
        bool                            compilation_failed;
        bool                            is_monolithic;
        bool                            is_optimized;