1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright 2023 Asahi Lina 3*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT 4*61046927SAndroid Build Coastguard Worker */ 5*61046927SAndroid Build Coastguard Worker 6*61046927SAndroid Build Coastguard Worker #pragma once 7*61046927SAndroid Build Coastguard Worker 8*61046927SAndroid Build Coastguard Worker #include "agx_device.h" 9*61046927SAndroid Build Coastguard Worker #include <agx_pack.h> 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard Worker // #define SCRATCH_DEBUG 12*61046927SAndroid Build Coastguard Worker 13*61046927SAndroid Build Coastguard Worker struct agx_scratch { 14*61046927SAndroid Build Coastguard Worker struct agx_device *dev; 15*61046927SAndroid Build Coastguard Worker struct agx_bo *buf; 16*61046927SAndroid Build Coastguard Worker uint32_t max_core_id; 17*61046927SAndroid Build Coastguard Worker uint32_t num_cores; 18*61046927SAndroid Build Coastguard Worker 19*61046927SAndroid Build Coastguard Worker uint32_t subgroups; 20*61046927SAndroid Build Coastguard Worker uint32_t size_dwords; 21*61046927SAndroid Build Coastguard Worker 22*61046927SAndroid Build Coastguard Worker struct agx_helper_header *header; 23*61046927SAndroid Build Coastguard Worker 24*61046927SAndroid Build Coastguard Worker #ifdef SCRATCH_DEBUG 25*61046927SAndroid Build Coastguard Worker bool core_present[1024]; 26*61046927SAndroid Build Coastguard Worker struct agx_helper_block *blocklist; 27*61046927SAndroid Build Coastguard Worker void *data; 28*61046927SAndroid Build Coastguard Worker size_t core_size; 29*61046927SAndroid Build Coastguard Worker #endif 30*61046927SAndroid Build Coastguard Worker }; 31*61046927SAndroid Build Coastguard Worker 32*61046927SAndroid Build Coastguard Worker struct agx_bo *agx_build_helper(struct agx_device *dev); 33*61046927SAndroid Build Coastguard Worker 34*61046927SAndroid Build Coastguard Worker void agx_scratch_init(struct agx_device *dev, struct agx_scratch *scratch); 35*61046927SAndroid Build Coastguard Worker void agx_scratch_fini(struct agx_scratch *scratch); 36*61046927SAndroid Build Coastguard Worker void agx_scratch_debug_pre(struct agx_scratch *scratch); 37*61046927SAndroid Build Coastguard Worker void agx_scratch_debug_post(struct agx_scratch *scratch); 38*61046927SAndroid Build Coastguard Worker 39*61046927SAndroid Build Coastguard Worker uint32_t agx_scratch_get_bucket(uint32_t dwords); 40*61046927SAndroid Build Coastguard Worker void agx_scratch_alloc(struct agx_scratch *scratch, uint32_t dwords, 41*61046927SAndroid Build Coastguard Worker size_t subgroups); 42