From 97ae8a94d3ee913de8facaad8e29d229adca7c7b Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Wed, 18 Feb 2026 08:47:16 -0800 Subject: [PATCH] freedreno: Block rusticl on older gens Currently pre-a6xx is missing ir3 support for various things that rusticl requires, leading to segfaults. For now, block compute-only contexts on older gens. Signed-off-by: Rob Clark Part-of: --- src/gallium/drivers/freedreno/a3xx/fd3_context.c | 4 ++++ src/gallium/drivers/freedreno/a4xx/fd4_context.c | 4 ++++ src/gallium/drivers/freedreno/a5xx/fd5_context.c | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_context.c b/src/gallium/drivers/freedreno/a3xx/fd3_context.c index e79ef7a42d5..75d491b91c3 100644 --- a/src/gallium/drivers/freedreno/a3xx/fd3_context.c +++ b/src/gallium/drivers/freedreno/a3xx/fd3_context.c @@ -45,6 +45,10 @@ fd3_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags) in_dt { struct fd_screen *screen = fd_screen(pscreen); + + if (flags & PIPE_CONTEXT_COMPUTE_ONLY) + return NULL; + struct fd3_context *fd3_ctx = CALLOC_STRUCT(fd3_context); struct pipe_context *pctx; diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_context.c b/src/gallium/drivers/freedreno/a4xx/fd4_context.c index b82743c5c11..2126e5eccbb 100644 --- a/src/gallium/drivers/freedreno/a4xx/fd4_context.c +++ b/src/gallium/drivers/freedreno/a4xx/fd4_context.c @@ -46,6 +46,10 @@ fd4_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags) in_dt { struct fd_screen *screen = fd_screen(pscreen); + + if (flags & PIPE_CONTEXT_COMPUTE_ONLY) + return NULL; + struct fd4_context *fd4_ctx = CALLOC_STRUCT(fd4_context); struct pipe_context *pctx; diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_context.c b/src/gallium/drivers/freedreno/a5xx/fd5_context.c index f1d3bd06fea..3fda7cb5320 100644 --- a/src/gallium/drivers/freedreno/a5xx/fd5_context.c +++ b/src/gallium/drivers/freedreno/a5xx/fd5_context.c @@ -44,6 +44,10 @@ fd5_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags) disable_thread_safety_analysis { struct fd_screen *screen = fd_screen(pscreen); + + if (flags & PIPE_CONTEXT_COMPUTE_ONLY) + return NULL; + struct fd5_context *fd5_ctx = CALLOC_STRUCT(fd5_context); struct pipe_context *pctx;