--- tests/util/gen_dispatch.py | 14 +++++++++++++- tests/util/piglit-util-gl-enum-gen.c.mako | 24 ++++++++++++++++++++++++ tests/util/piglit-util-gl.h | 3 +++ 3 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/tests/util/gen_dispatch.py b/tests/util/gen_dispatch.py index 80099ad..dd05687 100644 --- a/tests/util/gen_dispatch.py +++ b/tests/util/gen_dispatch.py @@ -144,12 +144,14 @@ class EnumCode(object): enums = cls.get_enums_in_default_namespace(gl_registry) unique_enums = cls.get_unique_enums(enums) enums_by_name = cls.get_enums_by_name(enums) + memory_barrier = cls.get_enums_in_memory_barrier_group(gl_registry) render_template( cls.C_TEMPLATE, out_dir, gl_registry=gl_registry, sorted_unique_enums_in_default_namespace=unique_enums, - sorted_enums_by_name=enums_by_name) + sorted_enums_by_name=enums_by_name, + sorted_by_name_memory_barrier_enums=memory_barrier) @classmethod def get_enums_in_default_namespace(cls, gl_registry): @@ -161,6 +163,16 @@ class EnumCode(object): return enums @classmethod + def get_enums_in_memory_barrier_group(cls, gl_registry): + enums = [] + for enum_group in gl_registry.enum_groups: + if enum_group.name == 'MemoryBarrierMask': + if enum_group.type == 'bitmask': + for enum in enum_group.enums: + enums.append(enum) + return cls.get_enums_by_name(enums) + + @classmethod def get_unique_enums(cls, enums): def append_enum_if_new_value(enum_list, enum): if enum_list[-1].num_value < enum.num_value: diff --git a/tests/util/piglit-util-gl-enum-gen.c.mako b/tests/util/piglit-util-gl-enum-gen.c.mako index 9a0fff8..04b79b8 100644 --- a/tests/util/piglit-util-gl-enum-gen.c.mako +++ b/tests/util/piglit-util-gl-enum-gen.c.mako @@ -64,6 +64,30 @@ compare_enum_name(const void *a, const void *b) } GLenum +piglit_get_gl_memory_barrier_enum_from_name(const char *name) +{ +>-------static const struct gl_name_to_enum names[] = { +% for enum in sorted_by_name_memory_barrier_enums: +>------->-------{ "${enum.name}", ${enum.c_num_literal} }, +% endfor +>-------}; +>-------struct gl_name_to_enum key = { name, 0 }; +>-------struct gl_name_to_enum *result; + +>-------result = (struct gl_name_to_enum*) +>------->-------bsearch(&key, +>------->------- names, ARRAY_SIZE(names), sizeof names[0], +>------->------- compare_enum_name); + +>-------if (result == NULL) { +>------->-------fprintf(stderr, "No known enum named %s!\n", name); +>------->-------abort(); +>-------} + +>-------return result->_enum; +} + +GLenum piglit_get_gl_enum_from_name(const char *name) { >-------static const struct gl_name_to_enum names[] = { diff --git a/tests/util/piglit-util-gl.h b/tests/util/piglit-util-gl.h index 5a8c82b..4ba0aa3 100644 --- a/tests/util/piglit-util-gl.h +++ b/tests/util/piglit-util-gl.h @@ -95,6 +95,9 @@ const char *piglit_get_gl_enum_name(GLenum param); */ GLenum piglit_get_gl_enum_from_name(const char *name); +GLenum +piglit_get_gl_memory_barrier_enum_from_name(const char *name); + /** * \brief Convert a GL primitive type enum value to a string. * -- 2.4.3 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit