aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/amd/common/ac_rtld.c4
-rw-r--r--src/amd/common/ac_rtld.h3
-rw-r--r--src/amd/vulkan/radv_pipeline.c2
-rw-r--r--src/amd/vulkan/radv_shader.c6
-rw-r--r--src/amd/vulkan/radv_shader.h1
-rw-r--r--src/gallium/drivers/radeonsi/si_shader.c2
6 files changed, 14 insertions, 4 deletions
diff --git a/src/amd/common/ac_rtld.c b/src/amd/common/ac_rtld.c
index a1bb51a8a88..7c35e72543d 100644
--- a/src/amd/common/ac_rtld.c
+++ b/src/amd/common/ac_rtld.c
@@ -271,6 +271,7 @@ bool ac_rtld_open(struct ac_rtld_binary *binary,
uint64_t pasted_text_size = 0;
uint64_t rx_align = 1;
uint64_t rx_size = 0;
+ uint64_t exec_size = 0;
#define report_if(cond) \
do { \
@@ -370,6 +371,8 @@ bool ac_rtld_open(struct ac_rtld_binary *binary,
if (!strcmp(s->name, ".text"))
s->is_pasted_text = true;
+
+ exec_size += shdr->sh_size;
}
if (s->is_pasted_text) {
@@ -438,6 +441,7 @@ bool ac_rtld_open(struct ac_rtld_binary *binary,
}
binary->rx_size += rx_size;
+ binary->exec_size = exec_size;
if (i.info->chip_class >= GFX10) {
/* In gfx10, the SQ fetches up to 3 cache lines of 16 dwords
diff --git a/src/amd/common/ac_rtld.h b/src/amd/common/ac_rtld.h
index 55faaa011db..2246cf1208a 100644
--- a/src/amd/common/ac_rtld.h
+++ b/src/amd/common/ac_rtld.h
@@ -57,6 +57,9 @@ struct ac_rtld_binary {
/* Required buffer sizes, currently read/executable only. */
uint64_t rx_size;
+ /* Size of executable code, for reporting purposes. */
+ uint64_t exec_size;
+
uint64_t rx_end_markers;
unsigned num_parts;
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 0897b2d153e..d387e56c60b 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -5025,7 +5025,7 @@ VkResult radv_GetPipelineExecutableStatisticsKHR(
desc_copy(s->name, "Code size");
desc_copy(s->description, "Code size in bytes");
s->format = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR;
- s->value.u64 = shader->code_size;
+ s->value.u64 = shader->exec_size;
}
++s;
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index e907c04863a..b6de97deb24 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -941,10 +941,12 @@ radv_shader_variant_create(struct radv_device *device,
}
variant->code_size = rtld_binary.rx_size;
+ variant->exec_size = rtld_binary.exec_size;
} else {
assert(binary->type == RADV_BINARY_TYPE_LEGACY);
config = ((struct radv_shader_binary_legacy *)binary)->config;
- variant->code_size = radv_get_shader_binary_size(((struct radv_shader_binary_legacy *)binary)->code_size);
+ variant->code_size = radv_get_shader_binary_size(((struct radv_shader_binary_legacy *)binary)->code_size);
+ variant->exec_size = variant->code_size;
}
variant->info = binary->variant_info;
@@ -1299,7 +1301,7 @@ generate_shader_stats(struct radv_device *device,
"********************\n\n\n",
conf->num_sgprs, conf->num_vgprs,
conf->spilled_sgprs, conf->spilled_vgprs,
- variant->info.private_mem_vgprs, variant->code_size,
+ variant->info.private_mem_vgprs, variant->exec_size,
conf->lds_size, conf->scratch_bytes_per_wave,
max_simd_waves);
}
diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h
index 67c45a0f0bd..9d18d4410c1 100644
--- a/src/amd/vulkan/radv_shader.h
+++ b/src/amd/vulkan/radv_shader.h
@@ -350,6 +350,7 @@ struct radv_shader_variant {
uint64_t bo_offset;
struct ac_shader_config config;
uint32_t code_size;
+ uint32_t exec_size;
struct radv_shader_variant_info info;
/* debug only */
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index cd75c084043..7636d44bee4 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -5286,7 +5286,7 @@ static unsigned si_get_shader_binary_size(struct si_screen *screen, struct si_sh
{
struct ac_rtld_binary rtld;
si_shader_binary_open(screen, shader, &rtld);
- return rtld.rx_size;
+ return rtld.exec_size;
}
static bool si_get_external_symbol(void *data, const char *name, uint64_t *value)