From 418f864ae4c70fbc9a8b12fa02d605ffddb78f9a Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Thu, 24 Oct 2024 09:52:33 +0200 Subject: [PATCH] etnaviv/ml: Take offsets into account in TP operations Reviewed-by: Philipp Zabel Part-of: --- src/gallium/drivers/etnaviv/etnaviv_ml_tp.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_ml_tp.c b/src/gallium/drivers/etnaviv/etnaviv_ml_tp.c index 77246b0c705..bd8e7037175 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_ml_tp.c +++ b/src/gallium/drivers/etnaviv/etnaviv_ml_tp.c @@ -263,10 +263,11 @@ create_transpose_config(struct etna_ml_subgraph *subgraph, const struct etna_ope map->in_tile_y_inc = operation->input_height; struct pipe_resource *input = etna_ml_get_tensor(subgraph, operation->input_tensors[0]); - map->in_image_base_address = etna_bo_gpu_va(etna_resource(input)->bo); + unsigned offset = etna_ml_get_offset(subgraph, operation->input_tensors[0]); + map->in_image_base_address = etna_bo_gpu_va(etna_resource(input)->bo) + offset; struct pipe_resource *output = etna_ml_get_tensor(subgraph, operation->output_tensor); - unsigned offset = etna_ml_get_offset(subgraph, operation->output_tensor); + offset = etna_ml_get_offset(subgraph, operation->output_tensor); map->out_image_base_address = etna_bo_gpu_va(etna_resource(output)->bo) + offset; map->out_loop_1_inc = operation->input_width * operation->input_height; @@ -312,10 +313,12 @@ create_detranspose_config(struct etna_ml_subgraph *subgraph, const struct etna_o map->in_tile_y_inc = 0x1; struct pipe_resource *input = etna_ml_get_tensor(subgraph, operation->input_tensors[0]); - map->in_image_base_address = etna_bo_gpu_va(etna_resource(input)->bo); + unsigned offset = etna_ml_get_offset(subgraph, operation->input_tensors[0]); + map->in_image_base_address = etna_bo_gpu_va(etna_resource(input)->bo) + offset; struct pipe_resource *output = etna_ml_get_tensor(subgraph, operation->output_tensor); - map->out_image_base_address = etna_bo_gpu_va(etna_resource(output)->bo); + offset = etna_ml_get_offset(subgraph, operation->output_tensor); + map->out_image_base_address = etna_bo_gpu_va(etna_resource(output)->bo) + offset; map->out_loop_0_inc = input_channels; map->out_loop_1_inc = 0x0;