radeonsi: rename dma_cs -> sdma_cs
[mesa.git] / src / gallium / drivers / radeonsi / si_pipe.h
index 63fded304d9cea5ce0f46050015a2f6cf61be824..e222de1e906f1aa79375e9881ac164af852c6a87 100644 (file)
@@ -32,7 +32,7 @@
 #include "util/u_idalloc.h"
 #include "util/u_threaded_context.h"
 
-#ifdef PIPE_ARCH_BIG_ENDIAN
+#if UTIL_ARCH_BIG_ENDIAN
 #define SI_BIG_ENDIAN 1
 #else
 #define SI_BIG_ENDIAN 0
@@ -166,8 +166,10 @@ enum {
        DBG_VM,
 
        /* Driver options: */
-       DBG_FORCE_DMA,
-       DBG_NO_ASYNC_DMA,
+       DBG_FORCE_SDMA,
+       DBG_NO_SDMA,
+       DBG_NO_SDMA_CLEARS,
+       DBG_NO_SDMA_COPY_IMAGE,
        DBG_NO_WC,
        DBG_CHECK_VM,
        DBG_RESERVE_VMID,
@@ -314,6 +316,7 @@ struct si_texture {
        uint16_t                        stencil_dirty_level_mask; /* each bit says if that mipmap is compressed */
        enum pipe_format                db_render_format:16;
        uint8_t                         stencil_clear_value;
+       bool                            fmask_is_not_identity:1;
        bool                            tc_compatible_htile:1;
        bool                            htile_stencil_disabled:1;
        bool                            depth_cleared:1; /* if it was cleared at least once */
@@ -331,6 +334,8 @@ struct si_texture {
         * for a possible future enablement.
         */
        bool                            separate_dcc_dirty:1;
+       bool                            displayable_dcc_dirty:1;
+
        /* Statistics gathering for the DCC enablement heuristic. */
        bool                            dcc_gather_statistics:1;
        /* Counter that should be non-zero if the texture is bound to a
@@ -669,6 +674,7 @@ struct si_framebuffer {
        ubyte                           nr_color_samples; /* at most 8xAA */
        ubyte                           compressed_cb_mask;
        ubyte                           uncompressed_cb_mask;
+       ubyte                           displayable_dcc_cb_mask;
        ubyte                           color_is_int8;
        ubyte                           color_is_int10;
        ubyte                           dirty_cbufs;
@@ -759,7 +765,7 @@ struct si_shader_ctx_state {
  */
 union si_vgt_param_key {
        struct {
-#ifdef PIPE_ARCH_LITTLE_ENDIAN
+#if UTIL_ARCH_LITTLE_ENDIAN
                unsigned prim:4;
                unsigned uses_instancing:1;
                unsigned multi_instances_smaller_than_primgroup:1;
@@ -770,7 +776,7 @@ union si_vgt_param_key {
                unsigned tess_uses_prim_id:1;
                unsigned uses_gs:1;
                unsigned _pad:32 - SI_NUM_VGT_PARAM_KEY_BITS;
-#else /* PIPE_ARCH_BIG_ENDIAN */
+#else /* UTIL_ARCH_BIG_ENDIAN */
                unsigned _pad:32 - SI_NUM_VGT_PARAM_KEY_BITS;
                unsigned uses_gs:1;
                unsigned tess_uses_prim_id:1;
@@ -786,7 +792,7 @@ union si_vgt_param_key {
        uint32_t index;
 };
 
-#define SI_NUM_VGT_STAGES_KEY_BITS 4
+#define SI_NUM_VGT_STAGES_KEY_BITS 5
 #define SI_NUM_VGT_STAGES_STATES (1 << SI_NUM_VGT_STAGES_KEY_BITS)
 
 /* The VGT_SHADER_STAGES key used to index the table of precomputed values.
@@ -794,16 +800,18 @@ union si_vgt_param_key {
  */
 union si_vgt_stages_key {
        struct {
-#ifdef PIPE_ARCH_LITTLE_ENDIAN
+#if UTIL_ARCH_LITTLE_ENDIAN
                unsigned tess:1;
                unsigned gs:1;
+               unsigned ngg_passthrough:1;
                unsigned ngg:1; /* gfx10+ */
                unsigned streamout:1; /* only used with NGG */
                unsigned _pad:32 - SI_NUM_VGT_STAGES_KEY_BITS;
-#else /* PIPE_ARCH_BIG_ENDIAN */
+#else /* UTIL_ARCH_BIG_ENDIAN */
                unsigned _pad:32 - SI_NUM_VGT_STAGES_KEY_BITS;
                unsigned streamout:1;
                unsigned ngg:1;
+               unsigned ngg_passthrough:1;
                unsigned gs:1;
                unsigned tess:1;
 #endif
@@ -857,7 +865,7 @@ struct si_context {
        struct radeon_winsys            *ws;
        struct radeon_winsys_ctx        *ctx;
        struct radeon_cmdbuf            *gfx_cs; /* compute IB if graphics is disabled */
-       struct radeon_cmdbuf            *dma_cs;
+       struct radeon_cmdbuf            *sdma_cs;
        struct pipe_fence_handle        *last_gfx_fence;
        struct pipe_fence_handle        *last_sdma_fence;
        struct si_resource              *eop_bug_scratch;
@@ -893,7 +901,9 @@ struct si_context {
        void                            *cs_copy_image_1d_array;
        void                            *cs_clear_render_target;
        void                            *cs_clear_render_target_1d_array;
+       void                            *cs_clear_12bytes_buffer;
        void                            *cs_dcc_retile;
+       void                            *cs_fmask_expand[3][2]; /* [log2(samples)-1][is_array] */
        struct si_screen                *screen;
        struct pipe_debug_callback      debug;
        struct ac_llvm_compiler         compiler; /* only non-threaded compilation */
@@ -1303,6 +1313,7 @@ void si_compute_clear_render_target(struct pipe_context *ctx,
                                     unsigned width, unsigned height,
                                    bool render_condition_enabled);
 void si_retile_dcc(struct si_context *sctx, struct si_texture *tex);
+void si_compute_expand_fmask(struct pipe_context *ctx, struct pipe_resource *tex);
 void si_init_compute_blit_functions(struct si_context *sctx);
 
 /* si_cp_dma.c */
@@ -1423,13 +1434,13 @@ void si_dispatch_prim_discard_cs_and_draw(struct si_context *sctx,
                                          unsigned input_indexbuf_max_elements);
 void si_initialize_prim_discard_tunables(struct si_context *sctx);
 
+/* si_pipe.c */
+void si_init_compiler(struct si_screen *sscreen, struct ac_llvm_compiler *compiler);
+
 /* si_perfcounters.c */
 void si_init_perfcounters(struct si_screen *screen);
 void si_destroy_perfcounters(struct si_screen *screen);
 
-/* si_pipe.c */
-bool si_check_device_reset(struct si_context *sctx);
-
 /* si_query.c */
 void si_init_screen_query_functions(struct si_screen *sscreen);
 void si_init_query_functions(struct si_context *sctx);
@@ -1447,7 +1458,10 @@ void *si_create_copy_image_compute_shader(struct pipe_context *ctx);
 void *si_create_copy_image_compute_shader_1d_array(struct pipe_context *ctx);
 void *si_clear_render_target_shader(struct pipe_context *ctx);
 void *si_clear_render_target_shader_1d_array(struct pipe_context *ctx);
+void *si_clear_12bytes_buffer_shader(struct pipe_context *ctx);
 void *si_create_dcc_retile_cs(struct pipe_context *ctx);
+void *si_create_fmask_expand_cs(struct pipe_context *ctx, unsigned num_samples,
+                               bool is_array);
 void *si_create_query_result_cs(struct si_context *sctx);
 void *gfx10_create_sh_query_result_cs(struct si_context *sctx);