Mesa (master): freedreno/ir3: unify shader create/delete paths
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Jun 15 16:10:41 UTC 2020
Module: Mesa
Branch: master
Commit: 43e0062c5b3762ec6a07398d0872b174404ef0ab
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=43e0062c5b3762ec6a07398d0872b174404ef0ab
Author: Rob Clark <robdclark at chromium.org>
Date: Fri Jun 5 12:41:29 2020 -0700
freedreno/ir3: unify shader create/delete paths
In particular, to move the fd_bo create/delete (which is unneeded by
turnip) out of the shared ir3 code, it is useful to have a single
delete path.
Signed-off-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5476>
---
src/gallium/drivers/freedreno/a5xx/fd5_compute.c | 2 +-
src/gallium/drivers/freedreno/a6xx/fd6_compute.c | 2 +-
src/gallium/drivers/freedreno/a6xx/fd6_program.c | 8 ++------
src/gallium/drivers/freedreno/ir3/ir3_gallium.c | 4 ++--
src/gallium/drivers/freedreno/ir3/ir3_gallium.h | 3 +++
5 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_compute.c b/src/gallium/drivers/freedreno/a5xx/fd5_compute.c
index cbc265eb3d3..468070770db 100644
--- a/src/gallium/drivers/freedreno/a5xx/fd5_compute.c
+++ b/src/gallium/drivers/freedreno/a5xx/fd5_compute.c
@@ -64,7 +64,7 @@ static void
fd5_delete_compute_state(struct pipe_context *pctx, void *hwcso)
{
struct fd5_compute_stateobj *so = hwcso;
- ir3_shader_destroy(so->shader);
+ ir3_shader_state_delete(pctx, so->shader);
free(so);
}
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_compute.c b/src/gallium/drivers/freedreno/a6xx/fd6_compute.c
index 613291280e2..508a85d0688 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_compute.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_compute.c
@@ -67,7 +67,7 @@ static void
fd6_delete_compute_state(struct pipe_context *pctx, void *hwcso)
{
struct fd6_compute_stateobj *so = hwcso;
- ir3_shader_destroy(so->shader);
+ ir3_shader_state_delete(pctx, so->shader);
free(so);
}
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_program.c b/src/gallium/drivers/freedreno/a6xx/fd6_program.c
index 4cb1eaae678..9faa11bd384 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_program.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_program.c
@@ -1045,10 +1045,7 @@ static const struct ir3_cache_funcs cache_funcs = {
static void *
fd6_shader_state_create(struct pipe_context *pctx, const struct pipe_shader_state *cso)
{
- struct fd_context *ctx = fd_context(pctx);
- struct ir3_compiler *compiler = ctx->screen->compiler;
- struct ir3_shader *shader =
- ir3_shader_create(compiler, cso, &ctx->debug, pctx->screen);
+ struct ir3_shader *shader = ir3_shader_state_create(pctx, cso);
unsigned packets, size;
/* pre-calculate size required for userconst stateobj: */
@@ -1067,10 +1064,9 @@ fd6_shader_state_create(struct pipe_context *pctx, const struct pipe_shader_stat
static void
fd6_shader_state_delete(struct pipe_context *pctx, void *hwcso)
{
- struct ir3_shader *so = hwcso;
struct fd_context *ctx = fd_context(pctx);
ir3_cache_invalidate(fd6_context(ctx)->shader_cache, hwcso);
- ir3_shader_destroy(so);
+ ir3_shader_state_delete(pctx, hwcso);
}
void
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c
index 720c87a72b8..6c0aa9f4b80 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c
@@ -225,7 +225,7 @@ ir3_shader_create_compute(struct ir3_compiler *compiler,
return shader;
}
-static void *
+void *
ir3_shader_state_create(struct pipe_context *pctx, const struct pipe_shader_state *cso)
{
struct fd_context *ctx = fd_context(pctx);
@@ -233,7 +233,7 @@ ir3_shader_state_create(struct pipe_context *pctx, const struct pipe_shader_stat
return ir3_shader_create(compiler, cso, &ctx->debug, pctx->screen);
}
-static void
+void
ir3_shader_state_delete(struct pipe_context *pctx, void *hwcso)
{
struct ir3_shader *so = hwcso;
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_gallium.h b/src/gallium/drivers/freedreno/ir3/ir3_gallium.h
index da83eb7c00c..0f103388b67 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_gallium.h
+++ b/src/gallium/drivers/freedreno/ir3/ir3_gallium.h
@@ -44,6 +44,9 @@ struct ir3_shader_variant * ir3_shader_variant(struct ir3_shader *shader,
struct ir3_shader_key key, bool binning_pass,
struct pipe_debug_callback *debug);
+void * ir3_shader_state_create(struct pipe_context *pctx, const struct pipe_shader_state *cso);
+void ir3_shader_state_delete(struct pipe_context *pctx, void *hwcso);
+
void ir3_prog_init(struct pipe_context *pctx);
#endif /* IR3_GALLIUM_H_ */
More information about the mesa-commit
mailing list