Mesa (main): radv,aco: rename radv_prolog_binary/radv_shader_prolog to shader_part
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jun 21 08:36:06 UTC 2022
Module: Mesa
Branch: main
Commit: 6cab999d6a2ed69782a8089e618f7b30aa54bfc4
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6cab999d6a2ed69782a8089e618f7b30aa54bfc4
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Thu Jun 16 16:32:56 2022 +0200
radv,aco: rename radv_prolog_binary/radv_shader_prolog to shader_part
The same structures and functions will be re-used for PS epilogs.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17084>
---
src/amd/compiler/aco_interface.cpp | 23 ++++++++++-----------
src/amd/compiler/aco_interface.h | 2 +-
src/amd/vulkan/radv_cmd_buffer.c | 12 +++++------
src/amd/vulkan/radv_debug.c | 6 +++---
src/amd/vulkan/radv_device.c | 8 ++++----
src/amd/vulkan/radv_private.h | 6 +++---
src/amd/vulkan/radv_shader.c | 42 +++++++++++++++++++-------------------
src/amd/vulkan/radv_shader.h | 10 ++++-----
8 files changed, 54 insertions(+), 55 deletions(-)
diff --git a/src/amd/compiler/aco_interface.cpp b/src/amd/compiler/aco_interface.cpp
index 86f8b0962a6..5c77131d4dd 100644
--- a/src/amd/compiler/aco_interface.cpp
+++ b/src/amd/compiler/aco_interface.cpp
@@ -293,7 +293,7 @@ aco_compile_vs_prolog(const struct aco_compiler_options* options,
const struct aco_shader_info* info,
const struct aco_vs_prolog_key* key,
const struct radv_shader_args* args,
- struct radv_prolog_binary** binary)
+ struct radv_shader_part_binary** binary)
{
aco::init();
@@ -318,7 +318,7 @@ aco_compile_vs_prolog(const struct aco_compiler_options* options,
unsigned exec_size = aco::emit_program(program.get(), code);
/* copy into binary */
- size_t size = code.size() * sizeof(uint32_t) + sizeof(radv_prolog_binary);
+ size_t size = code.size() * sizeof(uint32_t) + sizeof(radv_shader_part_binary);
bool get_disasm = options->dump_shader || options->record_ir;
@@ -328,19 +328,18 @@ aco_compile_vs_prolog(const struct aco_compiler_options* options,
size += disasm.size();
}
- radv_prolog_binary* prolog_binary = (radv_prolog_binary*)calloc(size, 1);
+ radv_shader_part_binary* bin = (radv_shader_part_binary*)calloc(size, 1);
- prolog_binary->num_sgprs = config.num_sgprs;
- prolog_binary->num_vgprs = config.num_vgprs;
- prolog_binary->num_preserved_sgprs = num_preserved_sgprs;
- prolog_binary->code_size = code.size() * sizeof(uint32_t);
- memcpy(prolog_binary->data, code.data(), prolog_binary->code_size);
+ bin->num_sgprs = config.num_sgprs;
+ bin->num_vgprs = config.num_vgprs;
+ bin->num_preserved_sgprs = num_preserved_sgprs;
+ bin->code_size = code.size() * sizeof(uint32_t);
+ memcpy(bin->data, code.data(), bin->code_size);
if (get_disasm) {
- disasm.copy((char*)prolog_binary->data + prolog_binary->code_size,
- disasm.size());
- prolog_binary->disasm_size = disasm.size();
+ disasm.copy((char*)bin->data + bin->code_size, disasm.size());
+ bin->disasm_size = disasm.size();
}
- *binary = prolog_binary;
+ *binary = bin;
}
diff --git a/src/amd/compiler/aco_interface.h b/src/amd/compiler/aco_interface.h
index 6bcdb26b9c4..133592b3e03 100644
--- a/src/amd/compiler/aco_interface.h
+++ b/src/amd/compiler/aco_interface.h
@@ -56,7 +56,7 @@ void aco_compile_vs_prolog(const struct aco_compiler_options* options,
const struct aco_shader_info* info,
const struct aco_vs_prolog_key* key,
const struct radv_shader_args* args,
- struct radv_prolog_binary** binary);
+ struct radv_shader_part_binary** binary);
uint64_t aco_get_codegen_flags();
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 54e1b39b79e..b56ed6740a4 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -745,7 +745,7 @@ radv_save_vertex_descriptors(struct radv_cmd_buffer *cmd_buffer, uint64_t vb_ptr
}
static void
-radv_save_vs_prolog(struct radv_cmd_buffer *cmd_buffer, const struct radv_shader_prolog *prolog)
+radv_save_vs_prolog(struct radv_cmd_buffer *cmd_buffer, const struct radv_shader_part *prolog)
{
struct radv_device *device = cmd_buffer->device;
uint32_t data[2];
@@ -2811,7 +2811,7 @@ radv_cmp_vs_prolog(const void *a_, const void *b_)
return memcmp(a, b, header.key_size) == 0;
}
-static struct radv_shader_prolog *
+static struct radv_shader_part *
lookup_vs_prolog(struct radv_cmd_buffer *cmd_buffer, struct radv_shader *vs_shader,
uint32_t *nontrivial_divisors)
{
@@ -2832,7 +2832,7 @@ lookup_vs_prolog(struct radv_cmd_buffer *cmd_buffer, struct radv_shader *vs_shad
const uint32_t misaligned_mask = chip == GFX6 || chip >= GFX10 ? cmd_buffer->state.vbo_misaligned_mask : 0;
/* try to use a pre-compiled prolog first */
- struct radv_shader_prolog *prolog = NULL;
+ struct radv_shader_part *prolog = NULL;
if (pipeline->can_use_simple_input &&
(!vs_shader->info.vs.as_ls || !instance_rate_inputs) &&
!misaligned_mask && !state->alpha_adjust_lo && !state->alpha_adjust_hi) {
@@ -2933,7 +2933,7 @@ lookup_vs_prolog(struct radv_cmd_buffer *cmd_buffer, struct radv_shader *vs_shad
prolog = radv_create_vs_prolog(device, &key);
uint32_t *key2 = malloc(key_size * 4);
if (!prolog || !key2) {
- radv_prolog_destroy(device, prolog);
+ radv_shader_part_destroy(device, prolog);
free(key2);
u_rwlock_wrunlock(&device->vs_prologs_lock);
return NULL;
@@ -2950,7 +2950,7 @@ lookup_vs_prolog(struct radv_cmd_buffer *cmd_buffer, struct radv_shader *vs_shad
static void
emit_prolog_regs(struct radv_cmd_buffer *cmd_buffer, struct radv_shader *vs_shader,
- struct radv_shader_prolog *prolog, bool pipeline_is_dirty)
+ struct radv_shader_part *prolog, bool pipeline_is_dirty)
{
/* no need to re-emit anything in this case */
if (cmd_buffer->state.emitted_vs_prolog == prolog && !pipeline_is_dirty)
@@ -3059,7 +3059,7 @@ radv_emit_vertex_input(struct radv_cmd_buffer *cmd_buffer, bool pipeline_is_dirt
return;
uint32_t nontrivial_divisors;
- struct radv_shader_prolog *prolog =
+ struct radv_shader_part *prolog =
lookup_vs_prolog(cmd_buffer, vs_shader, &nontrivial_divisors);
if (!prolog) {
cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY;
diff --git a/src/amd/vulkan/radv_debug.c b/src/amd/vulkan/radv_debug.c
index 45ce0c4f933..d20238f22bc 100644
--- a/src/amd/vulkan/radv_debug.c
+++ b/src/amd/vulkan/radv_debug.c
@@ -488,17 +488,17 @@ radv_dump_vertex_descriptors(struct radv_graphics_pipeline *pipeline, FILE *f)
}
}
-static struct radv_shader_prolog *
+static struct radv_shader_part *
radv_get_saved_vs_prolog(struct radv_device *device)
{
uint64_t *ptr = (uint64_t *)device->trace_id_ptr;
- return *(struct radv_shader_prolog **)(ptr + 4);
+ return *(struct radv_shader_part **)(ptr + 4);
}
static void
radv_dump_vs_prolog(struct radv_pipeline *pipeline, FILE *f)
{
- struct radv_shader_prolog *vs_prolog = radv_get_saved_vs_prolog(pipeline->device);
+ struct radv_shader_part *vs_prolog = radv_get_saved_vs_prolog(pipeline->device);
struct radv_shader *vs_shader = radv_get_shader(pipeline, MESA_SHADER_VERTEX);
if (!vs_prolog || !vs_shader || !vs_shader->info.vs.has_prolog)
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 206df78ffe1..e3df1f7d27b 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -2867,7 +2867,7 @@ radv_device_init_vs_prologs(struct radv_device *device)
key.num_attributes = num_attributes;
- struct radv_shader_prolog *prolog = radv_create_vs_prolog(device, &key);
+ struct radv_shader_part *prolog = radv_create_vs_prolog(device, &key);
if (!prolog)
return vk_error(device->physical_device->instance, VK_ERROR_OUT_OF_DEVICE_MEMORY);
@@ -2889,16 +2889,16 @@ radv_device_finish_vs_prologs(struct radv_device *device)
hash_table_foreach(device->vs_prologs, entry)
{
free((void *)entry->key);
- radv_prolog_destroy(device, entry->data);
+ radv_shader_part_destroy(device, entry->data);
}
_mesa_hash_table_destroy(device->vs_prologs, NULL);
}
for (unsigned i = 0; i < ARRAY_SIZE(device->simple_vs_prologs); i++)
- radv_prolog_destroy(device, device->simple_vs_prologs[i]);
+ radv_shader_part_destroy(device, device->simple_vs_prologs[i]);
for (unsigned i = 0; i < ARRAY_SIZE(device->instance_rate_vs_prologs); i++)
- radv_prolog_destroy(device, device->instance_rate_vs_prologs[i]);
+ radv_shader_part_destroy(device, device->instance_rate_vs_prologs[i]);
}
VkResult
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 388dc07590d..5bc2033a34d 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -899,8 +899,8 @@ struct radv_device {
/* Prime blit sdma queue */
struct radv_queue *private_sdma_queue;
- struct radv_shader_prolog *simple_vs_prologs[MAX_VERTEX_ATTRIBS];
- struct radv_shader_prolog *instance_rate_vs_prologs[816];
+ struct radv_shader_part *simple_vs_prologs[MAX_VERTEX_ATTRIBS];
+ struct radv_shader_part *instance_rate_vs_prologs[816];
simple_mtx_t trace_mtx;
@@ -1505,7 +1505,7 @@ struct radv_cmd_state {
uint32_t rt_stack_size;
- struct radv_shader_prolog *emitted_vs_prolog;
+ struct radv_shader_part *emitted_vs_prolog;
uint32_t *emitted_vs_prolog_key;
uint32_t emitted_vs_prolog_key_hash;
uint32_t vbo_misaligned_mask;
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index b758fbbbf0a..04a4d4ef904 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -2220,22 +2220,22 @@ radv_trap_handler_shader_destroy(struct radv_device *device, struct radv_trap_ha
free(trap);
}
-static struct radv_shader_prolog *
-upload_vs_prolog(struct radv_device *device, struct radv_prolog_binary *bin, unsigned wave_size)
+static struct radv_shader_part *
+upload_shader_part(struct radv_device *device, struct radv_shader_part_binary *bin, unsigned wave_size)
{
uint32_t code_size = radv_get_shader_binary_size(bin->code_size);
- struct radv_shader_prolog *prolog = malloc(sizeof(struct radv_shader_prolog));
- if (!prolog)
+ struct radv_shader_part *shader_part = malloc(sizeof(struct radv_shader_part));
+ if (!shader_part)
return NULL;
- prolog->alloc = radv_alloc_shader_memory(device, code_size, NULL);
- if (!prolog->alloc) {
- free(prolog);
+ shader_part->alloc = radv_alloc_shader_memory(device, code_size, NULL);
+ if (!shader_part->alloc) {
+ free(shader_part);
return NULL;
}
- prolog->bo = prolog->alloc->arena->bo;
- char *dest_ptr = prolog->alloc->arena->ptr + prolog->alloc->offset;
+ shader_part->bo = shader_part->alloc->arena->bo;
+ char *dest_ptr = shader_part->alloc->arena->ptr + shader_part->alloc->offset;
memcpy(dest_ptr, bin->data, bin->code_size);
@@ -2244,15 +2244,15 @@ upload_vs_prolog(struct radv_device *device, struct radv_prolog_binary *bin, uns
for (unsigned i = 0; i < DEBUGGER_NUM_MARKERS; i++)
ptr32[i] = DEBUGGER_END_OF_CODE_MARKER;
- prolog->rsrc1 = S_00B848_VGPRS((bin->num_vgprs - 1) / (wave_size == 32 ? 8 : 4)) |
+ shader_part->rsrc1 = S_00B848_VGPRS((bin->num_vgprs - 1) / (wave_size == 32 ? 8 : 4)) |
S_00B228_SGPRS((bin->num_sgprs - 1) / 8);
- prolog->num_preserved_sgprs = bin->num_preserved_sgprs;
- prolog->disasm_string = NULL;
+ shader_part->num_preserved_sgprs = bin->num_preserved_sgprs;
+ shader_part->disasm_string = NULL;
- return prolog;
+ return shader_part;
}
-struct radv_shader_prolog *
+struct radv_shader_part *
radv_create_vs_prolog(struct radv_device *device, const struct radv_vs_prolog_key *key)
{
struct radv_shader_args args = {0};
@@ -2289,7 +2289,7 @@ radv_create_vs_prolog(struct radv_device *device, const struct radv_vs_prolog_ke
ac_init_llvm_once();
#endif
- struct radv_prolog_binary *binary = NULL;
+ struct radv_shader_part_binary *binary = NULL;
struct aco_shader_info ac_info;
struct aco_vs_prolog_key ac_key;
struct aco_compiler_options ac_opts;
@@ -2297,7 +2297,7 @@ radv_create_vs_prolog(struct radv_device *device, const struct radv_vs_prolog_ke
radv_aco_convert_opts(&ac_opts, &options);
radv_aco_convert_vs_prolog_key(&ac_key, key);
aco_compile_vs_prolog(&ac_opts, &ac_info, &ac_key, &args, &binary);
- struct radv_shader_prolog *prolog = upload_vs_prolog(device, binary, info.wave_size);
+ struct radv_shader_part *prolog = upload_shader_part(device, binary, info.wave_size);
if (prolog) {
prolog->nontrivial_divisors = key->state->nontrivial_divisors;
prolog->disasm_string =
@@ -2329,14 +2329,14 @@ radv_shader_destroy(struct radv_device *device, struct radv_shader *shader)
}
void
-radv_prolog_destroy(struct radv_device *device, struct radv_shader_prolog *prolog)
+radv_shader_part_destroy(struct radv_device *device, struct radv_shader_part *shader_part)
{
- if (!prolog)
+ if (!shader_part)
return;
- radv_free_shader_memory(device, prolog->alloc);
- free(prolog->disasm_string);
- free(prolog);
+ radv_free_shader_memory(device, shader_part->alloc);
+ free(shader_part->disasm_string);
+ free(shader_part);
}
uint64_t
diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h
index f686ec6d98a..bcca4aa430b 100644
--- a/src/amd/vulkan/radv_shader.h
+++ b/src/amd/vulkan/radv_shader.h
@@ -441,7 +441,7 @@ struct radv_shader_binary_rtld {
uint8_t data[0];
};
-struct radv_prolog_binary {
+struct radv_shader_part_binary {
uint8_t num_sgprs;
uint8_t num_vgprs;
uint8_t num_preserved_sgprs;
@@ -497,7 +497,7 @@ struct radv_trap_handler_shader {
union radv_shader_arena_block *alloc;
};
-struct radv_shader_prolog {
+struct radv_shader_part {
struct radeon_winsys_bo *bo;
union radv_shader_arena_block *alloc;
uint32_t rsrc1;
@@ -578,12 +578,12 @@ uint64_t radv_trap_handler_shader_get_va(const struct radv_trap_handler_shader *
void radv_trap_handler_shader_destroy(struct radv_device *device,
struct radv_trap_handler_shader *trap);
-struct radv_shader_prolog *radv_create_vs_prolog(struct radv_device *device,
- const struct radv_vs_prolog_key *key);
+struct radv_shader_part *radv_create_vs_prolog(struct radv_device *device,
+ const struct radv_vs_prolog_key *key);
void radv_shader_destroy(struct radv_device *device, struct radv_shader *shader);
-void radv_prolog_destroy(struct radv_device *device, struct radv_shader_prolog *prolog);
+void radv_shader_part_destroy(struct radv_device *device, struct radv_shader_part *shader_part);
uint64_t radv_shader_get_va(const struct radv_shader *shader);
struct radv_shader *radv_find_shader(struct radv_device *device, uint64_t pc);
More information about the mesa-commit
mailing list