util: added debug_print_transfer_flags() function

This commit is contained in:
Brian Paul 2012-10-12 12:10:59 -06:00
parent bcb10ca172
commit 1ec12c53ba
2 changed files with 45 additions and 0 deletions

View file

@ -691,4 +691,45 @@ error1:
;
}
/**
* Print PIPE_TRANSFER_x flags with a message.
*/
void
debug_print_transfer_flags(const char *msg, unsigned usage)
{
#define FLAG(x) { x, #x }
static const struct {
unsigned bit;
const char *name;
} flags[] = {
FLAG(PIPE_TRANSFER_READ),
FLAG(PIPE_TRANSFER_WRITE),
FLAG(PIPE_TRANSFER_MAP_DIRECTLY),
FLAG(PIPE_TRANSFER_DISCARD_RANGE),
FLAG(PIPE_TRANSFER_DONTBLOCK),
FLAG(PIPE_TRANSFER_UNSYNCHRONIZED),
FLAG(PIPE_TRANSFER_FLUSH_EXPLICIT),
FLAG(PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE)
};
unsigned i;
debug_printf("%s ", msg);
for (i = 0; i < Elements(flags); i++) {
if (usage & flags[i].bit) {
debug_printf("%s", flags[i].name);
usage &= ~flags[i].bit;
if (usage) {
debug_printf(" | ");
}
}
}
debug_printf("\n");
#undef FLAG
}
#endif

View file

@ -446,6 +446,10 @@ void debug_dump_float_rgba_bmp(const char *filename,
#endif
void
debug_print_transfer_flags(const char *msg, unsigned usage);
#ifdef __cplusplus
}
#endif