xref: /aosp_15_r20/external/mesa3d/src/asahi/lib/decode.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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