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