From 7805a20d7bb3920ca9868fb97e80c2ea3bcaa129 Mon Sep 17 00:00:00 2001
From: Philipp Zabel
Date: Wed, 18 Sep 2024 13:00:02 +0200
Subject: [PATCH] etnaviv/nn: Enable fused ReLU activation
Handle fused ReLU activation by setting the corresponding
flag in the NN engine configuration.
Reviewed-by: Tomeu Vizoso
Signed-off-by: Philipp Zabel
Part-of:
---
src/gallium/drivers/etnaviv/etnaviv_ml.h | 1 +
src/gallium/drivers/etnaviv/etnaviv_ml_nn.c | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/etnaviv/etnaviv_ml.h b/src/gallium/drivers/etnaviv/etnaviv_ml.h
index 909df16a03c..5f333cb299d 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_ml.h
+++ b/src/gallium/drivers/etnaviv/etnaviv_ml.h
@@ -69,6 +69,7 @@ struct etna_operation {
bool pointwise;
bool pooling_first_pixel;
bool padding_same;
+ bool relu;
unsigned stride;
diff --git a/src/gallium/drivers/etnaviv/etnaviv_ml_nn.c b/src/gallium/drivers/etnaviv/etnaviv_ml_nn.c
index 77f76ab7314..66149229ca4 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_ml_nn.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_ml_nn.c
@@ -432,6 +432,7 @@ etna_ml_lower_convolution(struct etna_ml_subgraph *subgraph,
operation->addition = false;
operation->depthwise = poperation->conv.depthwise;
operation->pointwise = poperation->conv.pointwise;
+ operation->relu = poperation->conv.relu;
operation->pooling_first_pixel = calc_pooling_first_pixel(subgraph, poperation);
operation->padding_same = poperation->conv.padding_same;
operation->stride = poperation->conv.stride_x;
@@ -692,7 +693,7 @@ create_nn_config(struct etna_ml_subgraph *subgraph, const struct etna_operation
map->nn_layer_flush = 0x1;
map->brick_mode = 0x0;
map->brick_distance = 0x0;
- map->relu = 0x0;
+ map->relu = operation->relu;
map->no_flush = nn_core_version == 8;
map->rounding_mode = 0x1;
map->partial_cache_data_unit = 0x0;