xref: /aosp_15_r20/external/mesa3d/src/amd/vulkan/radv_printf.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2016 Red Hat.
3*61046927SAndroid Build Coastguard Worker  * Copyright © 2016 Bas Nieuwenhuizen
4*61046927SAndroid Build Coastguard Worker  *
5*61046927SAndroid Build Coastguard Worker  * based in part on anv driver which is:
6*61046927SAndroid Build Coastguard Worker  * Copyright © 2015 Intel Corporation
7*61046927SAndroid Build Coastguard Worker  *
8*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
9*61046927SAndroid Build Coastguard Worker  */
10*61046927SAndroid Build Coastguard Worker 
11*61046927SAndroid Build Coastguard Worker #ifndef RADV_PRINTF_H
12*61046927SAndroid Build Coastguard Worker #define RADV_PRINTF_H
13*61046927SAndroid Build Coastguard Worker 
14*61046927SAndroid Build Coastguard Worker #include <inttypes.h>
15*61046927SAndroid Build Coastguard Worker #include <stdbool.h>
16*61046927SAndroid Build Coastguard Worker #include <stdio.h>
17*61046927SAndroid Build Coastguard Worker 
18*61046927SAndroid Build Coastguard Worker #include <vulkan/vulkan_core.h>
19*61046927SAndroid Build Coastguard Worker 
20*61046927SAndroid Build Coastguard Worker #include "util/u_dynarray.h"
21*61046927SAndroid Build Coastguard Worker 
22*61046927SAndroid Build Coastguard Worker struct radv_device;
23*61046927SAndroid Build Coastguard Worker typedef struct nir_builder nir_builder;
24*61046927SAndroid Build Coastguard Worker typedef struct nir_shader nir_shader;
25*61046927SAndroid Build Coastguard Worker typedef struct nir_def nir_def;
26*61046927SAndroid Build Coastguard Worker 
27*61046927SAndroid Build Coastguard Worker struct radv_printf_data {
28*61046927SAndroid Build Coastguard Worker    uint32_t buffer_size;
29*61046927SAndroid Build Coastguard Worker    VkBuffer buffer;
30*61046927SAndroid Build Coastguard Worker    VkDeviceMemory memory;
31*61046927SAndroid Build Coastguard Worker    VkDeviceAddress buffer_addr;
32*61046927SAndroid Build Coastguard Worker    void *data;
33*61046927SAndroid Build Coastguard Worker    struct util_dynarray formats;
34*61046927SAndroid Build Coastguard Worker };
35*61046927SAndroid Build Coastguard Worker 
36*61046927SAndroid Build Coastguard Worker struct radv_printf_format {
37*61046927SAndroid Build Coastguard Worker    char *string;
38*61046927SAndroid Build Coastguard Worker    uint32_t divergence_mask;
39*61046927SAndroid Build Coastguard Worker    uint8_t element_sizes[32];
40*61046927SAndroid Build Coastguard Worker };
41*61046927SAndroid Build Coastguard Worker 
42*61046927SAndroid Build Coastguard Worker struct radv_printf_buffer_header {
43*61046927SAndroid Build Coastguard Worker    uint32_t offset;
44*61046927SAndroid Build Coastguard Worker    uint32_t size;
45*61046927SAndroid Build Coastguard Worker };
46*61046927SAndroid Build Coastguard Worker 
47*61046927SAndroid Build Coastguard Worker VkResult radv_printf_data_init(struct radv_device *device);
48*61046927SAndroid Build Coastguard Worker 
49*61046927SAndroid Build Coastguard Worker void radv_printf_data_finish(struct radv_device *device);
50*61046927SAndroid Build Coastguard Worker 
51*61046927SAndroid Build Coastguard Worker void radv_build_printf(nir_builder *b, nir_def *cond, const char *format, ...);
52*61046927SAndroid Build Coastguard Worker 
53*61046927SAndroid Build Coastguard Worker void radv_dump_printf_data(struct radv_device *device, FILE *out);
54*61046927SAndroid Build Coastguard Worker 
55*61046927SAndroid Build Coastguard Worker void radv_device_associate_nir(struct radv_device *device, nir_shader *nir);
56*61046927SAndroid Build Coastguard Worker 
57*61046927SAndroid Build Coastguard Worker #endif /* RADV_PRINTF_H */
58