/* * Copyright 2017-2019 Lyude Paul * Copyright 2017-2019 Alyssa Rosenzweig * SPDX-License-Identifier: MIT * */ #pragma once #include #include "agx_bo.h" #include "unstable_asahi_drm.h" struct agxdecode_ctx; struct agxdecode_ctx *agxdecode_new_context(uint64_t shader_base); void agxdecode_destroy_context(struct agxdecode_ctx *ctx); void agxdecode_next_frame(void); void agxdecode_close(void); void agxdecode_cmdstream(struct agxdecode_ctx *ctx, unsigned cmdbuf_index, unsigned map_index, bool verbose); void agxdecode_image_heap(struct agxdecode_ctx *ctx, uint64_t heap, unsigned nr_entries); void agxdecode_drm_cmd_render(struct agxdecode_ctx *ctx, struct drm_asahi_params_global *params, struct drm_asahi_cmd_render *cmdbuf, bool verbose); void agxdecode_drm_cmd_compute(struct agxdecode_ctx *ctx, struct drm_asahi_params_global *params, struct drm_asahi_cmd_compute *cmdbuf, bool verbose); void agxdecode_dump_file_open(void); void agxdecode_track_alloc(struct agxdecode_ctx *ctx, struct agx_bo *alloc); void agxdecode_track_free(struct agxdecode_ctx *ctx, struct agx_bo *bo); struct libagxdecode_config { uint32_t chip_id; size_t (*read_gpu_mem)(uint64_t addr, size_t size, void *data); ssize_t (*stream_write)(const char *buffer, size_t size); }; void libagxdecode_init(struct libagxdecode_config *config); void libagxdecode_vdm(struct agxdecode_ctx *ctx, uint64_t addr, const char *label, bool verbose); void libagxdecode_cdm(struct agxdecode_ctx *ctx, uint64_t addr, const char *label, bool verbose); void libagxdecode_usc(struct agxdecode_ctx *ctx, uint64_t addr, const char *label, bool verbose); void libagxdecode_shutdown(void);