nir/printf: break out va_list handling
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34737>
This commit is contained in:
committed by
Marge Bot
parent
e0a111540f
commit
43f22110e7
@@ -199,8 +199,8 @@ nir_lower_printf_buffer(nir_shader *nir, uint64_t address, uint32_t size)
|
||||
nir_metadata_control_flow, &opts);
|
||||
}
|
||||
|
||||
void
|
||||
nir_printf_fmt(nir_builder *b, unsigned ptr_bit_size, const char *fmt, ...)
|
||||
static void
|
||||
nir_vprintf_fmt(nir_builder *b, unsigned ptr_bit_size, const char *fmt, va_list aq)
|
||||
{
|
||||
u_printf_info info = {
|
||||
.strings = ralloc_strdup(b->shader, fmt),
|
||||
@@ -211,7 +211,7 @@ nir_printf_fmt(nir_builder *b, unsigned ptr_bit_size, const char *fmt, ...)
|
||||
size_t pos = 0;
|
||||
size_t args_size = 0;
|
||||
|
||||
va_start(ap, fmt);
|
||||
va_copy(ap, aq);
|
||||
while ((pos = util_printf_next_spec_pos(fmt, pos)) != -1) {
|
||||
unsigned arg_size;
|
||||
switch (fmt[pos]) {
|
||||
@@ -294,7 +294,7 @@ nir_printf_fmt(nir_builder *b, unsigned ptr_bit_size, const char *fmt, ...)
|
||||
nir_store_global(b, store_addr, 4, identifier, 0x1);
|
||||
|
||||
/* Arguments */
|
||||
va_start(ap, fmt);
|
||||
va_copy(ap, aq);
|
||||
unsigned store_offset = sizeof(uint32_t);
|
||||
for (unsigned a = 0; a < info.num_args; a++) {
|
||||
nir_def *def = va_arg(ap, nir_def *);
|
||||
@@ -320,3 +320,12 @@ nir_printf_fmt(nir_builder *b, unsigned ptr_bit_size, const char *fmt, ...)
|
||||
*/
|
||||
u_printf_singleton_add(&info, 1);
|
||||
}
|
||||
|
||||
void
|
||||
nir_printf_fmt(nir_builder *b, unsigned ptr_bit_size, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
nir_vprintf_fmt(b, ptr_bit_size, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user