[Mesa-dev] [PATCH 13/16] gallium/auxiliary: add dump functions for Nine

Brian Paul brianp at vmware.com
Mon Oct 20 08:37:48 PDT 2014


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.bumiller at speed.at>
>
> Signed-off-by: David Heidelberger <david.heidelberger at 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)
>



More information about the mesa-dev mailing list