Module: Mesa Branch: main Commit: 17827ef24c6034756575c3879df8d6cee66fb368 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=17827ef24c6034756575c3879df8d6cee66fb368
Author: Danylo Piliaiev <dpilia...@igalia.com> Date: Fri Oct 27 14:08:33 2023 +0200 freedreno,tu,ir3: Pass fd_dev_info into ir3_compiler_create We want to modify fd_dev_info with debug options, so we must have a single source of fd_dev_info. Signed-off-by: Danylo Piliaiev <dpilia...@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25939> --- src/freedreno/computerator/a4xx.cc | 3 ++- src/freedreno/computerator/a6xx.cc | 3 ++- src/freedreno/decode/rdcompiler-utils.h | 2 +- src/freedreno/ir3/ir3_compiler.c | 2 +- src/freedreno/ir3/ir3_compiler.h | 1 + src/freedreno/ir3/tests/delay.c | 2 +- src/freedreno/ir3/tests/disasm.c | 6 ++++-- src/freedreno/vulkan/tu_device.cc | 4 ++-- src/gallium/drivers/freedreno/ir3/ir3_cmdline.c | 2 +- src/gallium/drivers/freedreno/ir3/ir3_gallium.c | 3 ++- 10 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/freedreno/computerator/a4xx.cc b/src/freedreno/computerator/a4xx.cc index 4b1cf44c0dd..a0b9e9debeb 100644 --- a/src/freedreno/computerator/a4xx.cc +++ b/src/freedreno/computerator/a4xx.cc @@ -345,7 +345,8 @@ a4xx_init(struct fd_device *dev, const struct fd_dev_id *dev_id) }; struct ir3_compiler_options compiler_options = {}; - a4xx_backend->compiler = ir3_compiler_create(dev, dev_id, &compiler_options); + a4xx_backend->compiler = + ir3_compiler_create(dev, dev_id, fd_dev_info(dev_id), &compiler_options); a4xx_backend->dev = dev; return &a4xx_backend->base; diff --git a/src/freedreno/computerator/a6xx.cc b/src/freedreno/computerator/a6xx.cc index 93a3de2cd9f..f0b7e510355 100644 --- a/src/freedreno/computerator/a6xx.cc +++ b/src/freedreno/computerator/a6xx.cc @@ -610,7 +610,8 @@ a6xx_init(struct fd_device *dev, const struct fd_dev_id *dev_id) }; struct ir3_compiler_options compiler_options = {}; - a6xx_backend->compiler = ir3_compiler_create(dev, dev_id, &compiler_options); + a6xx_backend->compiler = + ir3_compiler_create(dev, dev_id, fd_dev_info(dev_id), &compiler_options); a6xx_backend->dev = dev; a6xx_backend->info = fd_dev_info(dev_id); diff --git a/src/freedreno/decode/rdcompiler-utils.h b/src/freedreno/decode/rdcompiler-utils.h index 2547699f1f2..3db01864d42 100644 --- a/src/freedreno/decode/rdcompiler-utils.h +++ b/src/freedreno/decode/rdcompiler-utils.h @@ -244,7 +244,7 @@ replay_context_init(struct replay_context *ctx, struct fd_dev_id *dev_id, struct ir3_compiler_options options{}; ctx->compiler = - ir3_compiler_create(NULL, dev_id, &options); + ir3_compiler_create(NULL, dev_id, fd_dev_info(dev_id), &options); ctx->compiled_shaders = _mesa_hash_table_u64_create(ctx->mem_ctx); } diff --git a/src/freedreno/ir3/ir3_compiler.c b/src/freedreno/ir3/ir3_compiler.c index 34b08b2fe0b..53ea182da21 100644 --- a/src/freedreno/ir3/ir3_compiler.c +++ b/src/freedreno/ir3/ir3_compiler.c @@ -127,6 +127,7 @@ static const nir_shader_compiler_options ir3_base_options = { struct ir3_compiler * ir3_compiler_create(struct fd_device *dev, const struct fd_dev_id *dev_id, + const struct fd_dev_info *dev_info, const struct ir3_compiler_options *options) { struct ir3_compiler *compiler = rzalloc(NULL, struct ir3_compiler); @@ -146,7 +147,6 @@ ir3_compiler_create(struct fd_device *dev, const struct fd_dev_id *dev_id, compiler->options = *options; /* TODO see if older GPU's were different here */ - const struct fd_dev_info *dev_info = fd_dev_info(compiler->dev_id); compiler->branchstack_size = 64; compiler->wave_granularity = dev_info->wave_granularity; compiler->max_waves = 16; diff --git a/src/freedreno/ir3/ir3_compiler.h b/src/freedreno/ir3/ir3_compiler.h index 93b19c1f6f8..08eb53e9e82 100644 --- a/src/freedreno/ir3/ir3_compiler.h +++ b/src/freedreno/ir3/ir3_compiler.h @@ -254,6 +254,7 @@ struct ir3_compiler { void ir3_compiler_destroy(struct ir3_compiler *compiler); struct ir3_compiler *ir3_compiler_create(struct fd_device *dev, const struct fd_dev_id *dev_id, + const struct fd_dev_info *dev_info, const struct ir3_compiler_options *options); void ir3_disk_cache_init(struct ir3_compiler *compiler); diff --git a/src/freedreno/ir3/tests/delay.c b/src/freedreno/ir3/tests/delay.c index 383d54eab2a..25e2564db96 100644 --- a/src/freedreno/ir3/tests/delay.c +++ b/src/freedreno/ir3/tests/delay.c @@ -155,7 +155,7 @@ main(int argc, char **argv) .gpu_id = 630, }; - c = ir3_compiler_create(NULL, &dev_id, &(struct ir3_compiler_options){}); + c = ir3_compiler_create(NULL, &dev_id, fd_dev_info(&dev_id), &(struct ir3_compiler_options){}); for (int i = 0; i < ARRAY_SIZE(tests); i++) { const struct test *test = &tests[i]; diff --git a/src/freedreno/ir3/tests/disasm.c b/src/freedreno/ir3/tests/disasm.c index f012d2a3cfc..56de28d7083 100644 --- a/src/freedreno/ir3/tests/disasm.c +++ b/src/freedreno/ir3/tests/disasm.c @@ -535,8 +535,10 @@ main(int argc, char **argv) if (!compilers[dev_info->chip]) { dev_ids[dev_info->chip].gpu_id = test->gpu_id; dev_ids[dev_info->chip].chip_id = test->chip_id; - compilers[dev_info->chip] = ir3_compiler_create( - NULL, &dev_ids[dev_info->chip], &(struct ir3_compiler_options){}); + compilers[dev_info->chip] = + ir3_compiler_create(NULL, &dev_ids[dev_info->chip], + fd_dev_info(&dev_ids[dev_info->chip]), + &(struct ir3_compiler_options){}); } FILE *fasm = diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index 943bc4bfd82..8bc154c9572 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -2285,8 +2285,8 @@ tu_CreateDevice(VkPhysicalDevice physicalDevice, .storage_16bit = physical_device->info->a6xx.storage_16bit, .shared_push_consts = !TU_DEBUG(PUSH_CONSTS_PER_STAGE), }; - device->compiler = - ir3_compiler_create(NULL, &physical_device->dev_id, &ir3_options); + device->compiler = ir3_compiler_create( + NULL, &physical_device->dev_id, physical_device->info, &ir3_options); } if (!device->compiler) { result = vk_startup_errorf(physical_device->instance, diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c b/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c index 497a44b147a..9b97273f38e 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c @@ -370,7 +370,7 @@ main(int argc, char **argv) struct fd_dev_id dev_id = { .gpu_id = gpu_id, }; - compiler = ir3_compiler_create(NULL, &dev_id, + compiler = ir3_compiler_create(NULL, &dev_id, fd_dev_info(&dev_id), &(struct ir3_compiler_options) {}); if (from_tgsi) { diff --git a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c index 32aee3b077e..cf1bf5c6f2f 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c @@ -587,7 +587,8 @@ ir3_screen_init(struct pipe_screen *pscreen) if (screen->gen >= 6) { options.lower_base_vertex = true; } - screen->compiler = ir3_compiler_create(screen->dev, screen->dev_id, &options); + screen->compiler = + ir3_compiler_create(screen->dev, screen->dev_id, screen->info, &options); /* TODO do we want to limit things to # of fast cores, or just limit * based on total # of both big and little cores. The little cores