auxiliary: add functions to describe gallium objects

This commit is contained in:
Luca Barbieri 2010-08-18 00:36:14 +02:00
parent 63d010115c
commit d46f91af68
4 changed files with 55 additions and 0 deletions

View file

@ -92,6 +92,7 @@ C_SOURCES = \
translate/translate.c \
translate/translate_cache.c \
util/u_debug.c \
util/u_debug_describe.c \
util/u_debug_symbol.c \
util/u_debug_stack.c \
util/u_dump_defines.c \

View file

@ -146,6 +146,7 @@ source = [
'util/u_caps.c',
'util/u_cpu_detect.c',
'util/u_debug.c',
'util/u_debug_describe.c',
'util/u_debug_memory.c',
'util/u_debug_stack.c',
'util/u_debug_symbol.c',

View file

@ -0,0 +1,43 @@
#include <pipe/p_state.h>
#include <util/u_format.h>
#include <util/u_debug_describe.h>
#include <util/u_string.h>
void
debug_describe_reference(char* buf, const struct pipe_reference*ptr)
{
strcpy(buf, "pipe_object");
}
void
debug_describe_resource(char* buf, const struct pipe_resource *ptr)
{
if(ptr->target == PIPE_BUFFER)
util_sprintf(buf, "pipe_buffer<%u>", util_format_get_stride(ptr->format, ptr->width0));
else if(ptr->target == PIPE_TEXTURE_1D)
util_sprintf(buf, "pipe_texture1d<%u,%s,%u>", ptr->width0, util_format_short_name(ptr->format), ptr->last_level);
else if(ptr->target == PIPE_TEXTURE_2D)
util_sprintf(buf, "pipe_texture2d<%u,%u,%s,%u>", ptr->width0, ptr->height0, util_format_short_name(ptr->format), ptr->last_level);
else if(ptr->target == PIPE_TEXTURE_CUBE)
util_sprintf(buf, "pipe_texture_cube<%u,%u,%s,%u>", ptr->width0, ptr->height0, util_format_short_name(ptr->format), ptr->last_level);
else if(ptr->target == PIPE_TEXTURE_3D)
util_sprintf(buf, "pipe_texture3d<%u,%u,%u,%s,%u>", ptr->width0, ptr->height0, ptr->depth0, util_format_short_name(ptr->format), ptr->last_level);
else
util_sprintf(buf, "pipe_martian_resource<%u>", ptr->target);
}
void
debug_describe_surface(char* buf, const struct pipe_surface *ptr)
{
char res[128];
debug_describe_resource(res, ptr->texture);
util_sprintf(buf, "pipe_surface<%s,%u,%u,%u>", res, ptr->face, ptr->level, ptr->zslice);
}
void
debug_describe_sampler_view(char* buf, const struct pipe_sampler_view *ptr)
{
char res[128];
debug_describe_resource(res, ptr->texture);
util_sprintf(buf, "pipe_sampler_view<%s,%s>", res, util_format_short_name(ptr->format));
}

View file

@ -0,0 +1,10 @@
#ifndef U_DEBUG_DESCRIBE_H_
#define U_DEBUG_DESCRIBE_H_
/* a 256-byte buffer is necessary and sufficient */
void debug_describe_reference(char* buf, const struct pipe_reference*ptr);
void debug_describe_resource(char* buf, const struct pipe_resource *ptr);
void debug_describe_surface(char* buf, const struct pipe_surface *ptr);
void debug_describe_sampler_view(char* buf, const struct pipe_sampler_view *ptr);
#endif /* U_DEBUG_DESCRIBE_H_ */