1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright 2017-2019 Lyude Paul 3*61046927SAndroid Build Coastguard Worker * Copyright 2017-2019 Alyssa Rosenzweig 4*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT 5*61046927SAndroid Build Coastguard Worker * 6*61046927SAndroid Build Coastguard Worker */ 7*61046927SAndroid Build Coastguard Worker 8*61046927SAndroid Build Coastguard Worker #pragma once 9*61046927SAndroid Build Coastguard Worker 10*61046927SAndroid Build Coastguard Worker #include <sys/types.h> 11*61046927SAndroid Build Coastguard Worker #include "agx_bo.h" 12*61046927SAndroid Build Coastguard Worker 13*61046927SAndroid Build Coastguard Worker #include "unstable_asahi_drm.h" 14*61046927SAndroid Build Coastguard Worker 15*61046927SAndroid Build Coastguard Worker struct agxdecode_ctx; 16*61046927SAndroid Build Coastguard Worker 17*61046927SAndroid Build Coastguard Worker struct agxdecode_ctx *agxdecode_new_context(uint64_t shader_base); 18*61046927SAndroid Build Coastguard Worker 19*61046927SAndroid Build Coastguard Worker void agxdecode_destroy_context(struct agxdecode_ctx *ctx); 20*61046927SAndroid Build Coastguard Worker 21*61046927SAndroid Build Coastguard Worker void agxdecode_next_frame(void); 22*61046927SAndroid Build Coastguard Worker 23*61046927SAndroid Build Coastguard Worker void agxdecode_close(void); 24*61046927SAndroid Build Coastguard Worker 25*61046927SAndroid Build Coastguard Worker void agxdecode_cmdstream(struct agxdecode_ctx *ctx, unsigned cmdbuf_index, 26*61046927SAndroid Build Coastguard Worker unsigned map_index, bool verbose); 27*61046927SAndroid Build Coastguard Worker 28*61046927SAndroid Build Coastguard Worker void agxdecode_image_heap(struct agxdecode_ctx *ctx, uint64_t heap, 29*61046927SAndroid Build Coastguard Worker unsigned nr_entries); 30*61046927SAndroid Build Coastguard Worker 31*61046927SAndroid Build Coastguard Worker void agxdecode_drm_cmd_render(struct agxdecode_ctx *ctx, 32*61046927SAndroid Build Coastguard Worker struct drm_asahi_params_global *params, 33*61046927SAndroid Build Coastguard Worker struct drm_asahi_cmd_render *cmdbuf, 34*61046927SAndroid Build Coastguard Worker bool verbose); 35*61046927SAndroid Build Coastguard Worker 36*61046927SAndroid Build Coastguard Worker void agxdecode_drm_cmd_compute(struct agxdecode_ctx *ctx, 37*61046927SAndroid Build Coastguard Worker struct drm_asahi_params_global *params, 38*61046927SAndroid Build Coastguard Worker struct drm_asahi_cmd_compute *cmdbuf, 39*61046927SAndroid Build Coastguard Worker bool verbose); 40*61046927SAndroid Build Coastguard Worker 41*61046927SAndroid Build Coastguard Worker void agxdecode_dump_file_open(void); 42*61046927SAndroid Build Coastguard Worker 43*61046927SAndroid Build Coastguard Worker void agxdecode_track_alloc(struct agxdecode_ctx *ctx, struct agx_bo *alloc); 44*61046927SAndroid Build Coastguard Worker 45*61046927SAndroid Build Coastguard Worker void agxdecode_track_free(struct agxdecode_ctx *ctx, struct agx_bo *bo); 46*61046927SAndroid Build Coastguard Worker 47*61046927SAndroid Build Coastguard Worker struct libagxdecode_config { 48*61046927SAndroid Build Coastguard Worker uint32_t chip_id; 49*61046927SAndroid Build Coastguard Worker size_t (*read_gpu_mem)(uint64_t addr, size_t size, void *data); 50*61046927SAndroid Build Coastguard Worker ssize_t (*stream_write)(const char *buffer, size_t size); 51*61046927SAndroid Build Coastguard Worker }; 52*61046927SAndroid Build Coastguard Worker 53*61046927SAndroid Build Coastguard Worker void libagxdecode_init(struct libagxdecode_config *config); 54*61046927SAndroid Build Coastguard Worker void libagxdecode_vdm(struct agxdecode_ctx *ctx, uint64_t addr, 55*61046927SAndroid Build Coastguard Worker const char *label, bool verbose); 56*61046927SAndroid Build Coastguard Worker void libagxdecode_cdm(struct agxdecode_ctx *ctx, uint64_t addr, 57*61046927SAndroid Build Coastguard Worker const char *label, bool verbose); 58*61046927SAndroid Build Coastguard Worker void libagxdecode_usc(struct agxdecode_ctx *ctx, uint64_t addr, 59*61046927SAndroid Build Coastguard Worker const char *label, bool verbose); 60*61046927SAndroid Build Coastguard Worker void libagxdecode_shutdown(void); 61