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