The subject line sould be something like: gallium/auxiliary: add dump functions for bind and transfer flags
No need to mention the Nine state tracker. On 10/18/2014 05:55 AM, David Heidelberger wrote:
From: Christoph Bumiller <christoph.bumil...@speed.at> Signed-off-by: David Heidelberger <david.heidelber...@ixit.cz> --- src/gallium/auxiliary/util/u_dump.h | 6 +++ src/gallium/auxiliary/util/u_dump_defines.c | 78 +++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/src/gallium/auxiliary/util/u_dump.h b/src/gallium/auxiliary/util/u_dump.h index 58e7dfd..84ba1ed 100644 --- a/src/gallium/auxiliary/util/u_dump.h +++ b/src/gallium/auxiliary/util/u_dump.h @@ -88,6 +88,12 @@ util_dump_tex_filter(unsigned value, boolean shortened); const char * util_dump_query_type(unsigned value, boolean shortened); +const char * +util_dump_bind_flags(unsigned flags); + +const char * +util_dump_transfer_flags(unsigned flags); + /* * p_state.h, through a FILE diff --git a/src/gallium/auxiliary/util/u_dump_defines.c b/src/gallium/auxiliary/util/u_dump_defines.c index 03fd15d..5a3446a 100644 --- a/src/gallium/auxiliary/util/u_dump_defines.c +++ b/src/gallium/auxiliary/util/u_dump_defines.c @@ -61,6 +61,28 @@ util_dump_enum_continuous(unsigned value, return names[value]; } +static const char * +util_dump_flags(unsigned flags, const char *prefix, + unsigned num_names, + const char **names) +{ + static __thread char str[256];
__thread is a gcc feature, right? Won't work with other compilers like MSVC.
+ int i, pos; + + if (!flags) + return ""; + pos = snprintf(str, Elements(str), "%s_", prefix); + + for (i = 0; (i < num_names) && flags; flags >>= 1, ++i) { + if (flags & 1) { + pos += snprintf(&str[pos], Elements(str) - pos, "%s", names[i]); + if (flags & ~1) + pos += snprintf(&str[pos], Elements(str) - pos, "|"); + } + } + return str; +} + #define DEFINE_UTIL_DUMP_CONTINUOUS(_name) \ const char * \ @@ -90,6 +112,14 @@ util_dump_enum_continuous(unsigned value, } +#define DEFINE_UTIL_DUMP_FLAGS(_prefix, _name) \ + const char * \ + util_dump_##_name##_flags(unsigned flags) \ + { \ + return util_dump_flags(flags, _prefix, Elements(util_dump_##_name##_flag_names), util_dump_##_name##_flag_names); \ + } + + static const char * util_dump_blend_factor_names[] = { UTIL_DUMP_INVALID_NAME, /* 0x0 */ @@ -392,3 +422,51 @@ util_dump_query_type_short_names[] = { }; DEFINE_UTIL_DUMP_CONTINUOUS(query_type) + + +static const char * +util_dump_bind_flag_names[] = { + "DEPTH_STENCIL", + "RENDER_TARGET", + "BLENDABLE", + "SAMPLER_VIEW", + "VERTEX_BUFFER", + "INDEX_BUFFER", + "CONSTANT_BUFFER", + "(7)", + "DISPLAY_TARGET", + "TRANSFER_WRITE", + "TRANSFER_READ", + "STREAM_OUTPUT", + "(12)", + "(13)", + "(14)", + "(15)", + "CURSOR", + "CUSTOM", + "GLOBAL", + "SHADER_RESOURCE", + "COMPUTE_RESOURCE" +}; + +DEFINE_UTIL_DUMP_FLAGS("PIPE_BIND", bind) + + +static const char * +util_dump_transfer_flag_names[] = { + "READ", + "WRITE", + "MAP_DIRECTLY", + "(3)", + "(4)", + "(5)", + "(6)", + "(7)", + "DISCARD_RANGE", + "DONTBLOCK", + "UNSYNCHRONIZED", + "FLUSH_EXPLICIT", + "DISCARD_WHOLE_RESOURCE" +}; + +DEFINE_UTIL_DUMP_FLAGS("", transfer)
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev