[Mesa-dev] [PATCH 12/23] radeonsi: move/remove ac_shader_binary helpers

Marek Olšák maraeo at gmail.com
Tue Nov 28 21:38:40 UTC 2017


From: Marek Olšák <marek.olsak at amd.com>

---
 src/amd/common/ac_binary.c                    | 13 +++++++++++++
 src/amd/common/ac_binary.h                    |  1 +
 src/gallium/drivers/radeon/r600_pipe_common.c | 22 ----------------------
 src/gallium/drivers/radeon/r600_pipe_common.h |  3 ---
 src/gallium/drivers/radeonsi/si_pipe.c        |  2 +-
 src/gallium/drivers/radeonsi/si_shader.c      |  2 +-
 6 files changed, 16 insertions(+), 27 deletions(-)

diff --git a/src/amd/common/ac_binary.c b/src/amd/common/ac_binary.c
index 6ad60468..fabeb15 100644
--- a/src/amd/common/ac_binary.c
+++ b/src/amd/common/ac_binary.c
@@ -291,10 +291,23 @@ void ac_shader_binary_read_config(struct ac_shader_binary *binary,
 
 		if (!conf->spi_ps_input_addr)
 			conf->spi_ps_input_addr = conf->spi_ps_input_ena;
 	}
 
 	if (really_needs_scratch) {
 		/* sgprs spills aren't spilling */
 	        conf->scratch_bytes_per_wave = G_00B860_WAVESIZE(wavesize) * 256 * 4;
 	}
 }
+
+void ac_shader_binary_clean(struct ac_shader_binary *b)
+{
+	if (!b)
+		return;
+	FREE(b->code);
+	FREE(b->config);
+	FREE(b->rodata);
+	FREE(b->global_symbol_offsets);
+	FREE(b->relocs);
+	FREE(b->disasm_string);
+	FREE(b->llvm_ir_string);
+}
diff --git a/src/amd/common/ac_binary.h b/src/amd/common/ac_binary.h
index 24c9ba5..4bd86b9 100644
--- a/src/amd/common/ac_binary.h
+++ b/src/amd/common/ac_binary.h
@@ -89,12 +89,13 @@ bool ac_elf_read(const char *elf_data, unsigned elf_size,
  * the function starting at \p symbol_offset of the binary.
  */
 const unsigned char *ac_shader_binary_config_start(
 	const struct ac_shader_binary *binary,
 	uint64_t symbol_offset);
 
 void ac_shader_binary_read_config(struct ac_shader_binary *binary,
 				  struct ac_shader_config *conf,
 				  unsigned symbol_offset,
 				  bool supports_spill);
+void ac_shader_binary_clean(struct ac_shader_binary *b);
 
 #endif /* AC_BINARY_H */
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c
index b4e76a3..a72d2d4 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.c
+++ b/src/gallium/drivers/radeon/r600_pipe_common.c
@@ -32,42 +32,20 @@
 #include "util/os_time.h"
 #include "vl/vl_decoder.h"
 #include "vl/vl_video_buffer.h"
 #include "radeon/radeon_video.h"
 #include "amd/common/ac_llvm_util.h"
 #include "amd/common/sid.h"
 #include <inttypes.h>
 
 #include <llvm-c/TargetMachine.h>
 
-
-/*
- * shader binary helpers.
- */
-void si_radeon_shader_binary_init(struct ac_shader_binary *b)
-{
-	memset(b, 0, sizeof(*b));
-}
-
-void si_radeon_shader_binary_clean(struct ac_shader_binary *b)
-{
-	if (!b)
-		return;
-	FREE(b->code);
-	FREE(b->config);
-	FREE(b->rodata);
-	FREE(b->global_symbol_offsets);
-	FREE(b->relocs);
-	FREE(b->disasm_string);
-	FREE(b->llvm_ir_string);
-}
-
 /*
  * pipe_context
  */
 
 /**
  * Write an EOP event.
  *
  * \param event		EVENT_TYPE_*
  * \param event_flags	Optional cache flush flags (TC)
  * \param data_sel	1 = fence, 3 = timestamp
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h
index c052a54..0597af4 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -120,23 +120,20 @@ enum {
 
 #define R600_MAP_BUFFER_ALIGNMENT 64
 
 #define SI_MAX_VARIABLE_THREADS_PER_BLOCK 1024
 
 struct r600_common_context;
 struct r600_perfcounters;
 struct tgsi_shader_info;
 struct r600_qbo_state;
 
-void si_radeon_shader_binary_init(struct ac_shader_binary *b);
-void si_radeon_shader_binary_clean(struct ac_shader_binary *b);
-
 /* Only 32-bit buffer allocations are supported, gallium doesn't support more
  * at the moment.
  */
 struct r600_resource {
 	struct threaded_resource	b;
 
 	/* Winsys objects. */
 	struct pb_buffer		*buf;
 	uint64_t			gpu_address;
 	/* Memory usage if the buffer placement is optimal. */
diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
index dfb35ed..fd09d78 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -426,21 +426,21 @@ static void si_destroy_screen(struct pipe_screen* pscreen)
 	for (i = 0; i < ARRAY_SIZE(sscreen->tm_low_priority); i++)
 		if (sscreen->tm_low_priority[i])
 			LLVMDisposeTargetMachine(sscreen->tm_low_priority[i]);
 
 	/* Free shader parts. */
 	for (i = 0; i < ARRAY_SIZE(parts); i++) {
 		while (parts[i]) {
 			struct si_shader_part *part = parts[i];
 
 			parts[i] = part->next;
-			si_radeon_shader_binary_clean(&part->binary);
+			ac_shader_binary_clean(&part->binary);
 			FREE(part);
 		}
 	}
 	mtx_destroy(&sscreen->shader_parts_mutex);
 	si_destroy_shader_cache(sscreen);
 	si_destroy_common_screen(&sscreen->b);
 }
 
 static bool si_init_gs_info(struct si_screen *sscreen)
 {
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index fc4bab8..0340133 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -7806,14 +7806,14 @@ int si_shader_create(struct si_screen *sscreen, LLVMTargetMachineRef tm,
 }
 
 void si_shader_destroy(struct si_shader *shader)
 {
 	if (shader->scratch_bo)
 		r600_resource_reference(&shader->scratch_bo, NULL);
 
 	r600_resource_reference(&shader->bo, NULL);
 
 	if (!shader->is_binary_shared)
-		si_radeon_shader_binary_clean(&shader->binary);
+		ac_shader_binary_clean(&shader->binary);
 
 	free(shader->shader_log);
 }
-- 
2.7.4



More information about the mesa-dev mailing list