OSDN Git Service

radeonsi: move r600_cs.h contents into si_pipe.h, si_build_pm4.h
authorMarek Olšák <marek.olsak@amd.com>
Sun, 1 Apr 2018 22:42:33 +0000 (18:42 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 5 Apr 2018 19:34:58 +0000 (15:34 -0400)
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
21 files changed:
src/gallium/drivers/radeon/Makefile.sources
src/gallium/drivers/radeon/r600_buffer_common.c
src/gallium/drivers/radeon/r600_query.c
src/gallium/drivers/radeon/r600_texture.c
src/gallium/drivers/radeonsi/si_build_pm4.h [moved from src/gallium/drivers/radeon/r600_cs.h with 60% similarity]
src/gallium/drivers/radeonsi/si_compute.c
src/gallium/drivers/radeonsi/si_cp_dma.c
src/gallium/drivers/radeonsi/si_descriptors.c
src/gallium/drivers/radeonsi/si_dma_cs.c
src/gallium/drivers/radeonsi/si_fence.c
src/gallium/drivers/radeonsi/si_gfx_cs.c
src/gallium/drivers/radeonsi/si_perfcounter.c
src/gallium/drivers/radeonsi/si_pipe.h
src/gallium/drivers/radeonsi/si_pm4.c
src/gallium/drivers/radeonsi/si_state.c
src/gallium/drivers/radeonsi/si_state_binning.c
src/gallium/drivers/radeonsi/si_state_draw.c
src/gallium/drivers/radeonsi/si_state_msaa.c
src/gallium/drivers/radeonsi/si_state_shaders.c
src/gallium/drivers/radeonsi/si_state_streamout.c
src/gallium/drivers/radeonsi/si_state_viewport.c

index 2ecfeb0..8c355ef 100644 (file)
@@ -1,6 +1,5 @@
 C_SOURCES := \
        r600_buffer_common.c \
-       r600_cs.h \
        r600_gpu_load.c \
        r600_perfcounter.c \
        r600_pipe_common.h \
index c4f33e3..0af97f4 100644 (file)
@@ -23,7 +23,6 @@
  */
 
 #include "radeonsi/si_pipe.h"
-#include "r600_cs.h"
 #include "util/u_memory.h"
 #include "util/u_upload_mgr.h"
 #include <inttypes.h>
index a2553d1..171f483 100644 (file)
@@ -26,7 +26,6 @@
 
 #include "radeonsi/si_pipe.h"
 #include "r600_query.h"
-#include "r600_cs.h"
 #include "util/u_memory.h"
 #include "util/u_upload_mgr.h"
 #include "util/os_time.h"
index af22687..cdca6c1 100644 (file)
@@ -24,7 +24,6 @@
  */
 
 #include "radeonsi/si_pipe.h"
-#include "r600_cs.h"
 #include "r600_query.h"
 #include "util/u_format.h"
 #include "util/u_log.h"
similarity index 60%
rename from src/gallium/drivers/radeon/r600_cs.h
rename to src/gallium/drivers/radeonsi/si_build_pm4.h
index f5ef94b..22f5558 100644 (file)
  * This file contains helpers for writing commands to commands streams.
  */
 
-#ifndef R600_CS_H
-#define R600_CS_H
+#ifndef SI_BUILD_PM4_H
+#define SI_BUILD_PM4_H
 
-#include "radeonsi/si_pipe.h"
-#include "amd/common/sid.h"
-
-/**
- * Return true if there is enough memory in VRAM and GTT for the buffers
- * added so far.
- *
- * \param vram      VRAM memory size not added to the buffer list yet
- * \param gtt       GTT memory size not added to the buffer list yet
- */
-static inline bool
-radeon_cs_memory_below_limit(struct si_screen *screen,
-                            struct radeon_winsys_cs *cs,
-                            uint64_t vram, uint64_t gtt)
-{
-       vram += cs->used_vram;
-       gtt += cs->used_gart;
-
-       /* Anything that goes above the VRAM size should go to GTT. */
-       if (vram > screen->info.vram_size)
-               gtt += vram - screen->info.vram_size;
-
-       /* Now we just need to check if we have enough GTT. */
-       return gtt < screen->info.gart_size * 0.7;
-}
-
-/**
- * Add a buffer to the buffer list for the given command stream (CS).
- *
- * All buffers used by a CS must be added to the list. This tells the kernel
- * driver which buffers are used by GPU commands. Other buffers can
- * be swapped out (not accessible) during execution.
- *
- * The buffer list becomes empty after every context flush and must be
- * rebuilt.
- */
-static inline void radeon_add_to_buffer_list(struct si_context *sctx,
-                                            struct radeon_winsys_cs *cs,
-                                            struct r600_resource *rbo,
-                                            enum radeon_bo_usage usage,
-                                            enum radeon_bo_priority priority)
-{
-       assert(usage);
-       sctx->b.ws->cs_add_buffer(
-               cs, rbo->buf,
-               (enum radeon_bo_usage)(usage | RADEON_USAGE_SYNCHRONIZED),
-               rbo->domains, priority);
-}
-
-/**
- * Same as above, but also checks memory usage and flushes the context
- * accordingly.
- *
- * When this SHOULD NOT be used:
- *
- * - if si_context_add_resource_size has been called for the buffer
- *   followed by *_need_cs_space for checking the memory usage
- *
- * - if si_need_dma_space has been called for the buffer
- *
- * - when emitting state packets and draw packets (because preceding packets
- *   can't be re-emitted at that point)
- *
- * - if shader resource "enabled_mask" is not up-to-date or there is
- *   a different constraint disallowing a context flush
- */
-static inline void
-radeon_add_to_gfx_buffer_list_check_mem(struct si_context *sctx,
-                                       struct r600_resource *rbo,
-                                       enum radeon_bo_usage usage,
-                                       enum radeon_bo_priority priority,
-                                       bool check_mem)
-{
-       if (check_mem &&
-           !radeon_cs_memory_below_limit(sctx->screen, sctx->b.gfx_cs,
-                                         sctx->b.vram + rbo->vram_usage,
-                                         sctx->b.gtt + rbo->gart_usage))
-               si_flush_gfx_cs(sctx, PIPE_FLUSH_ASYNC, NULL);
-
-       radeon_add_to_buffer_list(sctx, sctx->b.gfx_cs, rbo, usage, priority);
-}
+#include "si_pipe.h"
+#include "sid.h"
 
 static inline void radeon_set_config_reg_seq(struct radeon_winsys_cs *cs, unsigned reg, unsigned num)
 {
index 8c0d80f..c2e2d61 100644 (file)
 #include "util/u_upload_mgr.h"
 
 #include "amd_kernel_code_t.h"
-#include "radeon/r600_cs.h"
-#include "si_pipe.h"
+#include "si_build_pm4.h"
 #include "si_compute.h"
-#include "sid.h"
 
 #define COMPUTE_DBG(rscreen, fmt, args...) \
        do { \
index ffdb78c..b6274af 100644 (file)
@@ -24,7 +24,6 @@
 
 #include "si_pipe.h"
 #include "sid.h"
-#include "radeon/r600_cs.h"
 
 /* Recommended maximum sizes for optimal performance.
  * Fall back to compute or SDMA if the size is greater.
index d97fcb1..223724b 100644 (file)
@@ -53,7 +53,6 @@
  * Sampler states are never unbound except when FMASK is bound.
  */
 
-#include "radeon/r600_cs.h"
 #include "si_pipe.h"
 #include "sid.h"
 #include "gfx9d.h"
index fbe88ac..10d6d62 100644 (file)
@@ -23,7 +23,6 @@
  */
 
 #include "si_pipe.h"
-#include "radeon/r600_cs.h"
 
 static void si_dma_emit_wait_idle(struct si_context *sctx)
 {
index 22087ec..e43560a 100644 (file)
@@ -30,8 +30,7 @@
 #include "util/u_queue.h"
 #include "util/u_upload_mgr.h"
 
-#include "si_pipe.h"
-#include "radeon/r600_cs.h"
+#include "si_build_pm4.h"
 
 struct si_fine_fence {
        struct r600_resource *buf;
index 4340651..4450cb6 100644 (file)
@@ -24,7 +24,6 @@
  */
 
 #include "si_pipe.h"
-#include "radeon/r600_cs.h"
 
 #include "util/os_time.h"
 
index 5700b91..0593d55 100644 (file)
  * SOFTWARE.
  */
 
-#include "radeon/r600_cs.h"
+#include "si_build_pm4.h"
 #include "radeon/r600_query.h"
 #include "util/u_memory.h"
 
-#include "si_pipe.h"
-#include "sid.h"
 
 enum si_pc_reg_layout {
        /* All secondary selector dwords follow as one block after the primary
index 0ae28a2..ab58ec5 100644 (file)
@@ -1063,6 +1063,85 @@ static inline unsigned si_get_total_colormask(struct si_context *sctx)
        return colormask;
 }
 
+/**
+ * Return true if there is enough memory in VRAM and GTT for the buffers
+ * added so far.
+ *
+ * \param vram      VRAM memory size not added to the buffer list yet
+ * \param gtt       GTT memory size not added to the buffer list yet
+ */
+static inline bool
+radeon_cs_memory_below_limit(struct si_screen *screen,
+                            struct radeon_winsys_cs *cs,
+                            uint64_t vram, uint64_t gtt)
+{
+       vram += cs->used_vram;
+       gtt += cs->used_gart;
+
+       /* Anything that goes above the VRAM size should go to GTT. */
+       if (vram > screen->info.vram_size)
+               gtt += vram - screen->info.vram_size;
+
+       /* Now we just need to check if we have enough GTT. */
+       return gtt < screen->info.gart_size * 0.7;
+}
+
+/**
+ * Add a buffer to the buffer list for the given command stream (CS).
+ *
+ * All buffers used by a CS must be added to the list. This tells the kernel
+ * driver which buffers are used by GPU commands. Other buffers can
+ * be swapped out (not accessible) during execution.
+ *
+ * The buffer list becomes empty after every context flush and must be
+ * rebuilt.
+ */
+static inline void radeon_add_to_buffer_list(struct si_context *sctx,
+                                            struct radeon_winsys_cs *cs,
+                                            struct r600_resource *rbo,
+                                            enum radeon_bo_usage usage,
+                                            enum radeon_bo_priority priority)
+{
+       assert(usage);
+       sctx->b.ws->cs_add_buffer(
+               cs, rbo->buf,
+               (enum radeon_bo_usage)(usage | RADEON_USAGE_SYNCHRONIZED),
+               rbo->domains, priority);
+}
+
+/**
+ * Same as above, but also checks memory usage and flushes the context
+ * accordingly.
+ *
+ * When this SHOULD NOT be used:
+ *
+ * - if si_context_add_resource_size has been called for the buffer
+ *   followed by *_need_cs_space for checking the memory usage
+ *
+ * - if si_need_dma_space has been called for the buffer
+ *
+ * - when emitting state packets and draw packets (because preceding packets
+ *   can't be re-emitted at that point)
+ *
+ * - if shader resource "enabled_mask" is not up-to-date or there is
+ *   a different constraint disallowing a context flush
+ */
+static inline void
+radeon_add_to_gfx_buffer_list_check_mem(struct si_context *sctx,
+                                       struct r600_resource *rbo,
+                                       enum radeon_bo_usage usage,
+                                       enum radeon_bo_priority priority,
+                                       bool check_mem)
+{
+       if (check_mem &&
+           !radeon_cs_memory_below_limit(sctx->screen, sctx->b.gfx_cs,
+                                         sctx->b.vram + rbo->vram_usage,
+                                         sctx->b.gtt + rbo->gart_usage))
+               si_flush_gfx_cs(sctx, PIPE_FLUSH_ASYNC, NULL);
+
+       radeon_add_to_buffer_list(sctx, sctx->b.gfx_cs, rbo, usage, priority);
+}
+
 #define PRINT_ERR(fmt, args...) \
        fprintf(stderr, "EE %s:%d %s - " fmt, __FILE__, __LINE__, __func__, ##args)
 
index b9f2a01..a05cc25 100644 (file)
@@ -22,7 +22,6 @@
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#include "radeon/r600_cs.h"
 #include "util/u_memory.h"
 #include "si_pipe.h"
 #include "sid.h"
index a085015..e4de521 100644 (file)
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#include "si_pipe.h"
-#include "sid.h"
+#include "si_build_pm4.h"
 #include "gfx9d.h"
-#include "radeon/r600_cs.h"
 #include "radeon/r600_query.h"
 
 #include "util/u_dual_blend.h"
index 5ed5c5c..d001b24 100644 (file)
 
 /* This file handles register programming of primitive binning. */
 
-#include "si_pipe.h"
-#include "sid.h"
+#include "si_build_pm4.h"
 #include "gfx9d.h"
-#include "radeon/r600_cs.h"
 
 struct uvec2 {
        unsigned x, y;
index bf39d4c..f0db029 100644 (file)
@@ -22,9 +22,7 @@
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#include "si_pipe.h"
-#include "radeon/r600_cs.h"
-#include "sid.h"
+#include "si_build_pm4.h"
 #include "gfx9d.h"
 
 #include "util/u_index_modify.h"
index fbd6e87..890e0d4 100644 (file)
@@ -22,9 +22,7 @@
  * SOFTWARE.
  */
 
-#include "si_pipe.h"
-#include "sid.h"
-#include "radeon/r600_cs.h"
+#include "si_build_pm4.h"
 
 /* For MSAA sample positions. */
 #define FILL_SREG(s0x, s0y, s1x, s1y, s2x, s2y, s3x, s3y)  \
index eff7b81..2c8ffd7 100644 (file)
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#include "si_pipe.h"
-#include "sid.h"
+#include "si_build_pm4.h"
 #include "gfx9d.h"
-#include "radeon/r600_cs.h"
 
 #include "compiler/nir/nir_serialize.h"
 #include "tgsi/tgsi_parse.h"
index 21a5c88..e70f667 100644 (file)
  * SOFTWARE.
  */
 
-#include "si_pipe.h"
-#include "si_state.h"
-#include "sid.h"
-#include "radeon/r600_cs.h"
+#include "si_build_pm4.h"
 
 #include "util/u_memory.h"
 
index d02542e..a3482a8 100644 (file)
@@ -22,9 +22,7 @@
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#include "si_pipe.h"
-#include "sid.h"
-#include "radeon/r600_cs.h"
+#include "si_build_pm4.h"
 #include "util/u_viewport.h"
 #include "tgsi/tgsi_scan.h"