summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/tgsi/tgsi_text.c
diff options
context:
space:
mode:
authorNicolai Hähnle <nicolai.haehnle@amd.com>2016-04-28 17:07:44 -0500
committerNicolai Hähnle <nicolai.haehnle@amd.com>2016-04-29 11:39:51 -0500
commita56edbdd8ff2619d54787b6d0705ab33dbe7d189 (patch)
treeadae94a4e273c473315ea076f80abce846ef5b82 /src/gallium/auxiliary/tgsi/tgsi_text.c
parentacb65a23a3488d820f851342b06d215cd4964b3d (diff)
downloadexternal_mesa3d-a56edbdd8ff2619d54787b6d0705ab33dbe7d189.zip
external_mesa3d-a56edbdd8ff2619d54787b6d0705ab33dbe7d189.tar.gz
external_mesa3d-a56edbdd8ff2619d54787b6d0705ab33dbe7d189.tar.bz2
tgsi/text: add str_match_format helper function
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'src/gallium/auxiliary/tgsi/tgsi_text.c')
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_text.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c
index 3f5ef05..26e7c8f 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_text.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
@@ -119,6 +119,24 @@ static boolean str_match_nocase_whole( const char **pcur, const char *str )
return FALSE;
}
+/* Return the format corresponding to the name at *pcur.
+ * Returns -1 if there is no format name.
+ *
+ * On success, the pointer to the string is moved to the end of the read format
+ * name.
+ */
+static int str_match_format(const char **pcur)
+{
+ for (unsigned i = 0; i < PIPE_FORMAT_COUNT; i++) {
+ const struct util_format_description *desc =
+ util_format_description(i);
+ if (desc && str_match_nocase_whole(pcur, desc->name)) {
+ return i;
+ }
+ }
+ return -1;
+}
+
/* Eat zero or more whitespaces.
*/
static void eat_opt_white( const char **pcur )
@@ -1302,16 +1320,11 @@ static boolean parse_declaration( struct translate_ctx *ctx )
decl.Image.Writable = 1;
} else {
- for (i = 0; i < PIPE_FORMAT_COUNT; i++) {
- const struct util_format_description *desc =
- util_format_description(i);
- if (desc && str_match_nocase_whole(&cur2, desc->name)) {
- decl.Image.Format = i;
- break;
- }
- }
- if (i == PIPE_FORMAT_COUNT)
+ int format = str_match_format(&cur2);
+ if (format < 0)
break;
+
+ decl.Image.Format = format;
}
cur = cur2;
eat_opt_white(&cur2);