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

Reply via email to