From d80f150bbfaca524d2cbe851dab2bdf62d3eceeb Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Thu, 25 Apr 2024 07:07:06 +0200 Subject: [PATCH] etnaviv/nn: Make parallel jobs disabled by default It doesn't work for all models, with the same happening to the proprietary driver. There may be some hardware limitation on at least the HW that is currently supported in Mesa. So match what the proprietary driver is doing and disable by default. Fixes: d6473ce28ee0 ("etnaviv: Use NN cores to accelerate convolutions") Reviewed-by: Christian Gmeiner Part-of: (cherry picked from commit 1277f58d8a4a57c7522e07359cbe7aa2b8f9b661) --- .pick_status.json | 2 +- src/gallium/drivers/etnaviv/etnaviv_debug.h | 2 +- src/gallium/drivers/etnaviv/etnaviv_ml.c | 2 +- src/gallium/drivers/etnaviv/etnaviv_ml_nn.c | 2 +- src/gallium/drivers/etnaviv/etnaviv_ml_tp.c | 2 +- src/gallium/drivers/etnaviv/etnaviv_screen.c | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 63e1448578b..135c58431f2 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1684,7 +1684,7 @@ "description": "etnaviv/nn: Make parallel jobs disabled by default", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "d6473ce28ee0f36890e24b3832cd53d3ed5e98e7", "notes": null diff --git a/src/gallium/drivers/etnaviv/etnaviv_debug.h b/src/gallium/drivers/etnaviv/etnaviv_debug.h index 12a4165d768..3245855f7c3 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_debug.h +++ b/src/gallium/drivers/etnaviv/etnaviv_debug.h @@ -62,7 +62,7 @@ enum etna_dbg { ETNA_DBG_LINEAR_PE = BITFIELD_BIT(25), /* Enable linear PE */ ETNA_DBG_NO_MSAA = BITFIELD_BIT(26), /* Disable MSAA */ ETNA_DBG_SHARED_TS = BITFIELD_BIT(27), /* Enable TS sharing */ - ETNA_DBG_NPU_NO_PARALLEL = BITFIELD_BIT(28), /* Disable parallelism inside NPU batches */ + ETNA_DBG_NPU_PARALLEL = BITFIELD_BIT(28), /* Enable parallelism inside NPU batches (unsafe) */ ETNA_DBG_NPU_NO_BATCHING = BITFIELD_BIT(29), /* Disable batching NPU jobs */ }; diff --git a/src/gallium/drivers/etnaviv/etnaviv_ml.c b/src/gallium/drivers/etnaviv/etnaviv_ml.c index 659c588f38a..559e60e5ed9 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_ml.c +++ b/src/gallium/drivers/etnaviv/etnaviv_ml.c @@ -342,7 +342,7 @@ close_batch(struct pipe_context *pctx) struct etna_cmd_stream *stream = ctx->stream; unsigned cache = VIVS_GL_FLUSH_CACHE_DEPTH | VIVS_GL_FLUSH_CACHE_COLOR | VIVS_GL_FLUSH_CACHE_UNK10; - if (DBG_ENABLED(ETNA_DBG_NPU_NO_PARALLEL)) + if (!DBG_ENABLED(ETNA_DBG_NPU_PARALLEL)) cache |= VIVS_GL_FLUSH_CACHE_UNK11 | VIVS_GL_FLUSH_CACHE_SHADER_L1; etna_set_state(stream, VIVS_GL_FLUSH_CACHE, cache); diff --git a/src/gallium/drivers/etnaviv/etnaviv_ml_nn.c b/src/gallium/drivers/etnaviv/etnaviv_ml_nn.c index b55002f94d4..9fe4b83242f 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_ml_nn.c +++ b/src/gallium/drivers/etnaviv/etnaviv_ml_nn.c @@ -1377,7 +1377,7 @@ etna_ml_emit_operation_nn(struct etna_ml_subgraph *subgraph, unsigned offset = idx + 1; unsigned nn_config = VIVS_GL_NN_CONFIG_NN_CORE_COUNT(0x0); /* This disables power control of NN cores and enables all of them */ - if (DBG_ENABLED(ETNA_DBG_NPU_NO_PARALLEL)) { + if (!DBG_ENABLED(ETNA_DBG_NPU_PARALLEL)) { nn_config |= VIVS_GL_NN_CONFIG_SMALL_BATCH; offset = 0; } diff --git a/src/gallium/drivers/etnaviv/etnaviv_ml_tp.c b/src/gallium/drivers/etnaviv/etnaviv_ml_tp.c index 1433f9595fd..3aa8364662e 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_ml_tp.c +++ b/src/gallium/drivers/etnaviv/etnaviv_ml_tp.c @@ -759,7 +759,7 @@ etna_ml_emit_operation_tp(struct etna_ml_subgraph *subgraph, unsigned tp_core_count = ctx->screen->specs.tp_core_count; struct etna_cmd_stream *stream = ctx->stream; bool more_than_one_tp_job = operation->configs[1] != NULL; - bool parallel = !DBG_ENABLED(ETNA_DBG_NPU_NO_PARALLEL); + bool parallel = DBG_ENABLED(ETNA_DBG_NPU_PARALLEL); for (unsigned j = 0; j < tp_core_count && operation->configs[j]; j++) { unsigned offset = parallel ? idx + 1 : 0; diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index 499e3adce83..19a6a98ad8f 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -77,7 +77,7 @@ static const struct debug_named_value etna_debug_options[] = { {"no_msaa", ETNA_DBG_NO_MSAA, "Disable MSAA support"}, {"shared_ts", ETNA_DBG_SHARED_TS, "Enable TS sharing"}, {"perf", ETNA_DBG_PERF, "Enable performance warnings"}, - {"npu_no_parallel",ETNA_DBG_NPU_NO_PARALLEL, "Disable parallelism inside NPU batches"}, + {"npu_parallel", ETNA_DBG_NPU_PARALLEL, "Enable parallelism inside NPU batches (unsafe)"}, {"npu_no_batching",ETNA_DBG_NPU_NO_BATCHING, "Disable batching NPU jobs"}, DEBUG_NAMED_VALUE_END };