Mesa (main): panfrost: Compile pan_cmdstream per-gen
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jul 23 20:28:03 UTC 2021
Module: Mesa
Branch: main
Commit: 284b71a2e1d33a86c65beab215b33747a28aea38
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=284b71a2e1d33a86c65beab215b33747a28aea38
Author: Alyssa Rosenzweig <alyssa at collabora.com>
Date: Mon Jul 12 19:15:46 2021 -0400
panfrost: Compile pan_cmdstream per-gen
Signed-off-by: Alyssa Rosenzweig <alyssa at collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11851>
---
src/gallium/drivers/panfrost/meson.build | 16 +++++++++++++++-
src/gallium/drivers/panfrost/pan_cmdstream.c | 5 ++---
src/gallium/drivers/panfrost/pan_screen.c | 11 ++++++++++-
src/gallium/drivers/panfrost/pan_screen.h | 6 ++++--
4 files changed, 31 insertions(+), 7 deletions(-)
diff --git a/src/gallium/drivers/panfrost/meson.build b/src/gallium/drivers/panfrost/meson.build
index 7db7f4d4c8b..221bf236962 100644
--- a/src/gallium/drivers/panfrost/meson.build
+++ b/src/gallium/drivers/panfrost/meson.build
@@ -30,7 +30,6 @@ files_panfrost = files(
'pan_blit.c',
'pan_job.c',
'pan_assemble.c',
- 'pan_cmdstream.c',
'pan_compute.c',
'pan_mempool.c',
'pan_mempool.h',
@@ -51,6 +50,20 @@ compile_args_panfrost = [
'-Wno-pointer-arith'
]
+panfrost_versions = ['4', '5', '6', '7']
+libpanfrost_versions = []
+
+foreach ver : panfrost_versions
+ libpanfrost_versions += static_library(
+ 'panfrost-v' + ver,
+ ['pan_cmdstream.c', midgard_pack],
+ include_directories : panfrost_includes,
+ c_args : ['-DPAN_ARCH=' + ver],
+ gnu_symbol_visibility : 'hidden',
+ dependencies : [idep_midgard_pack, idep_nir, dep_libdrm],
+)
+endforeach
+
libpanfrost = static_library(
'panfrost',
files_panfrost,
@@ -64,6 +77,7 @@ libpanfrost = static_library(
include_directories : panfrost_includes,
c_args : [c_msvc_compat_args, compile_args_panfrost],
gnu_symbol_visibility : 'hidden',
+ link_with: [libpanfrost_versions],
)
driver_panfrost = declare_dependency(
diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c
index 5309f7a5eff..0b2866d9da1 100644
--- a/src/gallium/drivers/panfrost/pan_cmdstream.c
+++ b/src/gallium/drivers/panfrost/pan_cmdstream.c
@@ -35,6 +35,7 @@
#include "gallium/auxiliary/util/u_blend.h"
#include "panfrost-quirks.h"
+#include "gen_macros.h"
#include "pan_pool.h"
#include "pan_bo.h"
@@ -3661,7 +3662,7 @@ context_init(struct pipe_context *pipe)
}
void
-panfrost_cmdstream_screen_init(struct panfrost_screen *screen)
+GENX(panfrost_cmdstream_screen_init)(struct panfrost_screen *screen)
{
struct panfrost_device *dev = &screen->dev;
@@ -3676,5 +3677,3 @@ panfrost_cmdstream_screen_init(struct panfrost_screen *screen)
pan_blitter_init(dev, &screen->blitter.bin_pool.base,
&screen->blitter.desc_pool.base);
}
-
-
diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c
index a1201baa477..a7289440e5f 100644
--- a/src/gallium/drivers/panfrost/pan_screen.c
+++ b/src/gallium/drivers/panfrost/pan_screen.c
@@ -893,7 +893,16 @@ panfrost_create_screen(int fd, struct renderonly *ro)
4096, "Blitter shaders", false, true);
panfrost_pool_init(&screen->blitter.desc_pool, NULL, dev, 0, 65536,
"Blitter RSDs", false, true);
- panfrost_cmdstream_screen_init(screen);
+ if (dev->arch == 4)
+ panfrost_cmdstream_screen_init_v4(screen);
+ else if (dev->arch == 5)
+ panfrost_cmdstream_screen_init_v5(screen);
+ else if (dev->arch == 6)
+ panfrost_cmdstream_screen_init_v6(screen);
+ else if (dev->arch == 7)
+ panfrost_cmdstream_screen_init_v7(screen);
+ else
+ unreachable("Unhandled architecture major");
return &screen->base;
}
diff --git a/src/gallium/drivers/panfrost/pan_screen.h b/src/gallium/drivers/panfrost/pan_screen.h
index 416af403315..5ff084848cb 100644
--- a/src/gallium/drivers/panfrost/pan_screen.h
+++ b/src/gallium/drivers/panfrost/pan_screen.h
@@ -104,8 +104,10 @@ pan_device(struct pipe_screen *p)
struct pipe_fence_handle *
panfrost_fence_create(struct panfrost_context *ctx);
-void
-panfrost_cmdstream_screen_init(struct panfrost_screen *screen);
+void panfrost_cmdstream_screen_init_v4(struct panfrost_screen *screen);
+void panfrost_cmdstream_screen_init_v5(struct panfrost_screen *screen);
+void panfrost_cmdstream_screen_init_v6(struct panfrost_screen *screen);
+void panfrost_cmdstream_screen_init_v7(struct panfrost_screen *screen);
#define perf_debug(dev, ...) \
do { \
More information about the mesa-commit
mailing list