Mesa (master): radv,aco: remove aco_compiler_statistics

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Mar 5 17:10:52 UTC 2021


Module: Mesa
Branch: master
Commit: 7c7e8942f82755c7c83e9dfce0019dd1d793f51f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7c7e8942f82755c7c83e9dfce0019dd1d793f51f

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Thu Mar  4 16:41:05 2021 +0000

radv,aco: remove aco_compiler_statistics

This removes a pointer from radv_shader_binary_legacy::data.

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9411>

---

 src/amd/compiler/aco_interface.cpp | 15 +++++++--------
 src/amd/compiler/aco_interface.h   |  7 ++-----
 src/amd/vulkan/radv_pipeline.c     |  7 +++----
 src/amd/vulkan/radv_shader.h       |  2 +-
 4 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/src/amd/compiler/aco_interface.cpp b/src/amd/compiler/aco_interface.cpp
index 358a6b88022..b878ab99ba7 100644
--- a/src/amd/compiler/aco_interface.cpp
+++ b/src/amd/compiler/aco_interface.cpp
@@ -30,7 +30,7 @@
 #include <array>
 #include <iostream>
 
-const std::array<aco_compiler_statistic_info, aco::num_statistics> statistic_infos = []()
+static const std::array<aco_compiler_statistic_info, aco::num_statistics> statistic_infos = []()
 {
    std::array<aco_compiler_statistic_info, aco::num_statistics> ret{};
    ret[aco::statistic_hash] = aco_compiler_statistic_info{"Hash", "CRC32 hash of code and constant data"};
@@ -47,6 +47,9 @@ const std::array<aco_compiler_statistic_info, aco::num_statistics> statistic_inf
    return ret;
 }();
 
+const unsigned aco_num_statistics = aco::num_statistics;
+const aco_compiler_statistic_info *aco_statistic_infos = statistic_infos.data();
+
 static void validate(aco::Program *program)
 {
    if (!(aco::debug_flags & aco::DEBUG_VALIDATE_IR))
@@ -196,7 +199,7 @@ void aco_compile_shader(unsigned shader_count,
 
    size_t stats_size = 0;
    if (program->collect_statistics)
-      stats_size = sizeof(aco_compiler_statistics) + aco::num_statistics * sizeof(uint32_t);
+      stats_size = aco::num_statistics * sizeof(uint32_t);
    size += stats_size;
 
    size += code.size() * sizeof(uint32_t) + sizeof(radv_shader_binary_legacy);
@@ -211,12 +214,8 @@ void aco_compile_shader(unsigned shader_count,
    legacy_binary->base.is_gs_copy_shader = args->is_gs_copy_shader;
    legacy_binary->base.total_size = size;
 
-   if (program->collect_statistics) {
-      aco_compiler_statistics *statistics = (aco_compiler_statistics *)legacy_binary->data;
-      statistics->count = aco::num_statistics;
-      statistics->infos = statistic_infos.data();
-      memcpy(statistics->values, program->statistics, aco::num_statistics * sizeof(uint32_t));
-   }
+   if (program->collect_statistics)
+      memcpy(legacy_binary->data, program->statistics, aco::num_statistics * sizeof(uint32_t));
    legacy_binary->stats_size = stats_size;
 
    memcpy(legacy_binary->data + legacy_binary->stats_size, code.data(), code.size() * sizeof(uint32_t));
diff --git a/src/amd/compiler/aco_interface.h b/src/amd/compiler/aco_interface.h
index a1036f9bfb2..73ae845dc17 100644
--- a/src/amd/compiler/aco_interface.h
+++ b/src/amd/compiler/aco_interface.h
@@ -37,11 +37,8 @@ struct aco_compiler_statistic_info {
    char desc[64];
 };
 
-struct aco_compiler_statistics {
-   unsigned count;
-   const struct aco_compiler_statistic_info *infos;
-   uint32_t values[];
-};
+extern const unsigned aco_num_statistics;
+extern const struct aco_compiler_statistic_info *aco_statistic_infos;
 
 void aco_compile_shader(unsigned shader_count,
                         struct nir_shader *const *shaders,
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index cdbd42abff7..808003beffe 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -5943,14 +5943,13 @@ VkResult radv_GetPipelineExecutableStatisticsKHR(
 	++s;
 
 	if (shader->statistics) {
-		for (unsigned i = 0; i < shader->statistics->count; i++) {
-			const struct aco_compiler_statistic_info *info = &shader->statistics->infos[i];
-			uint32_t value = shader->statistics->values[i];
+		for (unsigned i = 0; i < aco_num_statistics; i++) {
+			const struct aco_compiler_statistic_info *info = &aco_statistic_infos[i];
 			if (s < end) {
 				desc_copy(s->name, info->name);
 				desc_copy(s->description, info->desc);
 				s->format = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR;
-				s->value.u64 = value;
+				s->value.u64 = shader->statistics[i];
 			}
 			++s;
 		}
diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h
index eee9507428d..b7ac55ab97b 100644
--- a/src/amd/vulkan/radv_shader.h
+++ b/src/amd/vulkan/radv_shader.h
@@ -410,7 +410,7 @@ struct radv_shader_variant {
 	char *nir_string;
 	char *disasm_string;
 	char *ir_string;
-	struct aco_compiler_statistics *statistics;
+	uint32_t *statistics;
 
 	struct list_head slab_list;
 };



More information about the mesa-commit mailing list