[Piglit] [PATCH 3/8] shader_runner: Migrate numeric parser utils to parser library.
Francisco Jerez
currojerez at riseup.net
Tue Oct 18 23:17:41 UTC 2016
Rework the get_* parser helpers used in shader_runner.c to follow the
same principle as the recently introduced parser helpers. This gives
callers the possibility to handle failure and compose numeric parsers
with other parser primitives.
---
tests/shaders/parser_utils.c | 108 +++++++++++++++++++
tests/shaders/parser_utils.h | 80 ++++++++++++++
tests/shaders/shader_runner.c | 246 ++++++++++++++++--------------------------
3 files changed, 279 insertions(+), 155 deletions(-)
diff --git a/tests/shaders/parser_utils.c b/tests/shaders/parser_utils.c
index 470144e..2eb7da1 100644
--- a/tests/shaders/parser_utils.c
+++ b/tests/shaders/parser_utils.c
@@ -49,6 +49,114 @@ parse_str(const char *s, const char *lit, const char **rest)
return ret;
}
+unsigned
+parse_ints(const char *s, int *i, unsigned n, const char **rest)
+{
+ const char *end = s;
+ unsigned j;
+
+ for (j = 0; j < n; j++) {
+ i[j] = strtoll(s = end, (char **)&end, 0);
+ if (s == end)
+ break;
+ }
+
+ if (rest)
+ *rest = end;
+
+ return j;
+}
+
+unsigned
+parse_uints(const char *s, unsigned *u, unsigned n, const char **rest)
+{
+ const char *end = s;
+ unsigned j;
+
+ for (j = 0; j < n; j++) {
+ u[j] = strtoul(s = end, (char **)&end, 0);
+ if (s == end)
+ break;
+ }
+
+ if (rest)
+ *rest = end;
+
+ return j;
+}
+
+unsigned
+parse_int64s(const char *s, int64_t *i, unsigned n, const char **rest)
+{
+ const char *end = s;
+ unsigned j;
+
+ for (j = 0; j < n; j++) {
+ i[j] = strtoll(s = end, (char **)&end, 0);
+ if (s == end)
+ break;
+ }
+
+ if (rest)
+ *rest = end;
+
+ return j;
+}
+
+unsigned
+parse_uint64s(const char *s, uint64_t *u, unsigned n, const char **rest)
+{
+ const char *end = s;
+ unsigned j;
+
+ for (j = 0; j < n; j++) {
+ u[j] = strtoull(s = end, (char **)&end, 0);
+ if (s == end)
+ break;
+ }
+
+ if (rest)
+ *rest = end;
+
+ return j;
+}
+
+unsigned
+parse_floats(const char *s, float *f, unsigned n, const char **rest)
+{
+ const char *end = s;
+ unsigned j;
+
+ for (j = 0; j < n; j++) {
+ f[j] = strtof_hex(s = end, (char **)&end);
+ if (s == end)
+ break;
+ }
+
+ if (rest)
+ *rest = end;
+
+ return j;
+}
+
+unsigned
+parse_doubles(const char *s, double *d, unsigned n, const char **rest)
+{
+ const char *end = s;
+ unsigned j;
+
+ for (j = 0; j < n; j++) {
+ d[j] = strtod_hex(s = end, (char **)&end);
+ if (s == end)
+ break;
+ }
+
+ if (rest)
+ *rest = end;
+
+ return j;
+}
+
bool
parse_word(const char *s, const char **t, const char **rest)
{
diff --git a/tests/shaders/parser_utils.h b/tests/shaders/parser_utils.h
index 8b766bc..3579bee 100644
--- a/tests/shaders/parser_utils.h
+++ b/tests/shaders/parser_utils.h
@@ -65,6 +65,86 @@ bool
parse_str(const char *s, const char *lit, const char **rest);
/**
+ * Parse up to \p n whitespace-separated signed integer values. The
+ * number of values actually parsed is returned as result.
+ */
+unsigned
+parse_ints(const char *s, int *i, unsigned n, const char **rest);
+
+static inline bool
+parse_int(const char *s, int *i, const char **rest)
+{
+ return parse_ints(s, i, 1, rest);
+}
+
+/**
+ * Parse up to \p n whitespace-separated unsigned integer values. The
+ * number of values actually parsed is returned as result.
+ */
+unsigned
+parse_uints(const char *s, unsigned *u, unsigned n, const char **rest);
+
+static inline bool
+parse_uint(const char *s, unsigned *u, const char **rest)
+{
+ return parse_uints(s, u, 1, rest);
+}
+
+/**
+ * Parse up to \p n whitespace-separated signed 64-bit integer values.
+ * The number of values actually parsed is returned as result.
+ */
+unsigned
+parse_int64s(const char *s, int64_t *i, unsigned n, const char **rest);
+
+static inline bool
+parse_int64(const char *s, int64_t *i, const char **rest)
+{
+ return parse_int64s(s, i, 1, rest);
+}
+
+/**
+ * Parse up to \p n whitespace-separated unsigned 64-bit integer
+ * values. The number of values actually parsed is returned as
+ * result.
+ */
+unsigned
+parse_uint64s(const char *s, uint64_t *u, unsigned n, const char **rest);
+
+static inline bool
+parse_uint64(const char *s, uint64_t *u, const char **rest)
+{
+ return parse_uint64s(s, u, 1, rest);
+}
+
+/**
+ * Parse up to \p n whitespace-separated floating point values. The
+ * number of values actually parsed is returned as result.
+ */
+unsigned
+parse_floats(const char *s, float *f, unsigned n, const char **rest);
+
+static inline bool
+parse_float(const char *s, float *f, const char **rest)
+{
+ return parse_floats(s, f, 1, rest);
+}
+
+/**
+ * Parse up to \p n whitespace-separated double-precision floating
+ * point values. The number of values actually parsed is returned as
+ * result.
+ */
+unsigned
+parse_doubles(const char *s, double *d, unsigned n, const char **rest);
+
+static inline bool
+parse_double(const char *s, double *d, const char **rest)
+{
+ return parse_doubles(s, d, 1, rest);
+}
+
+/**
* Parse a single non-empty whitespace-separated token. On success \p
* t and \p rest will respectively point at the first and one past the
* last character of the result.
diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
index 92fab38..79ffdad 100644
--- a/tests/shaders/shader_runner.c
+++ b/tests/shaders/shader_runner.c
@@ -44,9 +44,6 @@ get_required_config(const char *script_name,
static GLenum
decode_drawing_mode(const char *mode_str);
-static void
-get_uints(const char *line, unsigned *uints, unsigned count);
-
PIGLIT_GL_TEST_CONFIG_BEGIN
config.window_width = DEFAULT_WINDOW_WIDTH;
@@ -701,9 +698,10 @@ parse_version_comparison(const char *line, enum comparison *cmp,
line = eat_whitespace(line);
line = process_comparison(line, cmp);
- line = eat_whitespace(line);
- sscanf(line, "%u.%u", &major, &minor);
- line = eat_text(line);
+ REQUIRE(parse_uint(line, &major, &line) &&
+ parse_str(line, ".", &line) &&
+ parse_uint(line, &minor, &line),
+ "Invalid version string: %s\n", line);
parse_whitespace(line, &line);
if (*line != '\n') {
@@ -778,7 +776,9 @@ process_requirement(const char *line)
"Invalid comparison enum at: %s\n", line);
line = process_comparison(eat_whitespace(line), &cmp);
- comparison_value = atoi(line);
+
+ REQUIRE(parse_int(line, &comparison_value, &line),
+ "Invalid comparison value at: %s\n", line);
glGetIntegerv(int_enum, &gl_int_value);
if (!piglit_check_gl_error(GL_NO_ERROR)) {
@@ -884,14 +884,9 @@ process_requirement(const char *line)
}
} else if (parse_str(line, "rlimit", &line)) {
unsigned lim;
- char *ptr;
- line = eat_whitespace(line);
- lim = strtoul(line, &ptr, 0);
- if (ptr == line) {
- printf("rlimit requires numeric argument\n");
- return PIGLIT_FAIL;
- }
+ REQUIRE(parse_uint(line, &lim, &line),
+ "Invalid rlimit argument at: %s\n", line);
piglit_set_rlimit(lim);
} else if (parse_str(line, "SSO", &line) &&
@@ -1343,7 +1338,7 @@ parse_required_config(struct requirement_parse_results *results,
}
} else if (parse_str(line, "SIZE", &line)) {
results->found_size = true;
- get_uints(line, results->size, 2);
+ parse_uints(line, results->size, 2, NULL);
} else if (parse_str(line, "depthbuffer", NULL)) {
results->found_depthbuffer = true;
}
@@ -1435,62 +1430,6 @@ get_required_config(const char *script_name,
}
}
-static void
-get_floats(const char *line, float *f, unsigned count)
-{
- unsigned i;
-
- for (i = 0; i < count; i++)
- f[i] = strtof_hex(line, (char **) &line);
-}
-
-static void
-get_doubles(const char *line, double *d, unsigned count)
-{
- unsigned i;
-
- for (i = 0; i < count; i++)
- d[i] = strtod_hex(line, (char **) &line);
-}
-
-
-static void
-get_ints(const char *line, int *ints, unsigned count)
-{
- unsigned i;
-
- for (i = 0; i < count; i++)
- ints[i] = strtol_hex(line, (char **) &line);
-}
-
-
-static void
-get_uints(const char *line, unsigned *uints, unsigned count)
-{
- unsigned i;
-
- for (i = 0; i < count; i++)
- uints[i] = strtoul(line, (char **) &line, 0);
-}
-
-static void
-get_int64s(const char *line, int64_t *ints, unsigned count)
-{
- int i;
-
- for (i = 0; i < count; i++)
- ints[i] = strtoll(line, (char **) &line, 0);
-}
-
-static void
-get_uint64s(const char *line, uint64_t *ints, unsigned count)
-{
- int i;
-
- for (i = 0; i < count; i++)
- ints[i] = strtoull(line, (char **) &line, 0);
-}
-
/**
* Check that the GL implementation supports unsigned uniforms
* (e.g. through glUniform1ui). If not, terminate the test with a
@@ -1618,46 +1557,46 @@ set_ubo_uniform(char *name, const char *type, const char *line, int ubo_array_in
data += offset;
if (parse_str(type, "float", NULL)) {
- get_floats(line, f, 1);
+ parse_floats(line, f, 1, NULL);
memcpy(data, f, sizeof(float));
} else if (parse_str(type, "int64_t", NULL)) {
- get_int64s(line, int64s, 1);
+ parse_int64s(line, int64s, 1, NULL);
memcpy(data, int64s, sizeof(int64_t));
} else if (parse_str(type, "uint64_t", NULL)) {
- get_uint64s(line, uint64s, 1);
+ parse_uint64s(line, uint64s, 1, NULL);
memcpy(data, uint64s, sizeof(uint64_t));
} else if (parse_str(type, "int", NULL)) {
- get_ints(line, ints, 1);
+ parse_ints(line, ints, 1, NULL);
memcpy(data, ints, sizeof(int));
} else if (parse_str(type, "uint", NULL)) {
- get_uints(line, uints, 1);
+ parse_uints(line, uints, 1, NULL);
memcpy(data, uints, sizeof(int));
} else if (parse_str(type, "double", NULL)) {
- get_doubles(line, d, 1);
+ parse_doubles(line, d, 1, NULL);
memcpy(data, d, sizeof(double));
} else if (parse_str(type, "vec", NULL)) {
int elements = type[3] - '0';
- get_floats(line, f, elements);
+ parse_floats(line, f, elements, NULL);
memcpy(data, f, elements * sizeof(float));
} else if (parse_str(type, "ivec", NULL)) {
int elements = type[4] - '0';
- get_ints(line, ints, elements);
+ parse_ints(line, ints, elements, NULL);
memcpy(data, ints, elements * sizeof(int));
} else if (parse_str(type, "uvec", NULL)) {
int elements = type[4] - '0';
- get_uints(line, uints, elements);
+ parse_uints(line, uints, elements, NULL);
memcpy(data, uints, elements * sizeof(unsigned));
} else if (parse_str(type, "i64vec", NULL)) {
int elements = type[6] - '0';
- get_int64s(line, int64s, elements);
+ parse_int64s(line, int64s, elements, NULL);
memcpy(data, int64s, elements * sizeof(int64_t));
} else if (parse_str(type, "u64vec", NULL)) {
int elements = type[6] - '0';
- get_uint64s(line, uint64s, elements);
+ parse_uint64s(line, uint64s, elements, NULL);
memcpy(data, uint64s, elements * sizeof(uint64_t));
} else if (parse_str(type, "dvec", NULL)) {
int elements = type[4] - '0';
- get_doubles(line, d, elements);
+ parse_doubles(line, d, elements, NULL);
memcpy(data, d, elements * sizeof(double));
} else if (parse_str(type, "mat", NULL)) {
GLint matrix_stride, row_major;
@@ -1669,7 +1608,7 @@ set_ubo_uniform(char *name, const char *type, const char *line, int ubo_array_in
assert(cols >= 2 && cols <= 4);
assert(rows >= 2 && rows <= 4);
- get_floats(line, f, rows * cols);
+ parse_floats(line, f, rows * cols, NULL);
glGetActiveUniformsiv(prog, 1, &uniform_index,
GL_UNIFORM_MATRIX_STRIDE, &matrix_stride);
@@ -1703,7 +1642,7 @@ set_ubo_uniform(char *name, const char *type, const char *line, int ubo_array_in
assert(cols >= 2 && cols <= 4);
assert(rows >= 2 && rows <= 4);
- get_doubles(line, d, rows * cols);
+ parse_doubles(line, d, rows * cols, NULL);
glGetActiveUniformsiv(prog, 1, &uniform_index,
GL_UNIFORM_MATRIX_STRIDE, &matrix_stride);
@@ -1771,60 +1710,60 @@ set_uniform(const char *line, int ubo_array_index)
}
if (parse_str(type, "float", NULL)) {
- get_floats(line, f, 1);
+ parse_floats(line, f, 1, NULL);
glUniform1fv(loc, 1, f);
return;
} else if (parse_str(type, "int64_t", NULL)) {
check_int64_support();
- get_int64s(line, int64s, 1);
+ parse_int64s(line, int64s, 1, NULL);
glUniform1i64vARB(loc, 1, int64s);
return;
} else if (parse_str(type, "uint64_t", NULL)) {
check_int64_support();
- get_uint64s(line, uint64s, 1);
+ parse_uint64s(line, uint64s, 1, NULL);
glUniform1ui64vARB(loc, 1, uint64s);
return;
} else if (parse_str(type, "int", NULL)) {
- get_ints(line, ints, 1);
+ parse_ints(line, ints, 1, NULL);
glUniform1iv(loc, 1, ints);
return;
} else if (parse_str(type, "uint", NULL)) {
check_unsigned_support();
- get_uints(line, uints, 1);
+ parse_uints(line, uints, 1, NULL);
glUniform1uiv(loc, 1, uints);
return;
} else if (parse_str(type, "double", NULL)) {
check_double_support();
- get_doubles(line, d, 1);
+ parse_doubles(line, d, 1, NULL);
glUniform1dv(loc, 1, d);
return;
} else if (parse_str(type, "vec", NULL)) {
switch (type[3]) {
case '2':
- get_floats(line, f, 2);
+ parse_floats(line, f, 2, NULL);
glUniform2fv(loc, 1, f);
return;
case '3':
- get_floats(line, f, 3);
+ parse_floats(line, f, 3, NULL);
glUniform3fv(loc, 1, f);
return;
case '4':
- get_floats(line, f, 4);
+ parse_floats(line, f, 4, NULL);
glUniform4fv(loc, 1, f);
return;
}
} else if (parse_str(type, "ivec", NULL)) {
switch (type[4]) {
case '2':
- get_ints(line, ints, 2);
+ parse_ints(line, ints, 2, NULL);
glUniform2iv(loc, 1, ints);
return;
case '3':
- get_ints(line, ints, 3);
+ parse_ints(line, ints, 3, NULL);
glUniform3iv(loc, 1, ints);
return;
case '4':
- get_ints(line, ints, 4);
+ parse_ints(line, ints, 4, NULL);
glUniform4iv(loc, 1, ints);
return;
}
@@ -1832,15 +1771,15 @@ set_uniform(const char *line, int ubo_array_index)
check_unsigned_support();
switch (type[4]) {
case '2':
- get_uints(line, uints, 2);
+ parse_uints(line, uints, 2, NULL);
glUniform2uiv(loc, 1, uints);
return;
case '3':
- get_uints(line, uints, 3);
+ parse_uints(line, uints, 3, NULL);
glUniform3uiv(loc, 1, uints);
return;
case '4':
- get_uints(line, uints, 4);
+ parse_uints(line, uints, 4, NULL);
glUniform4uiv(loc, 1, uints);
return;
}
@@ -1848,15 +1787,15 @@ set_uniform(const char *line, int ubo_array_index)
check_double_support();
switch (type[4]) {
case '2':
- get_doubles(line, d, 2);
+ parse_doubles(line, d, 2, NULL);
glUniform2dv(loc, 1, d);
return;
case '3':
- get_doubles(line, d, 3);
+ parse_doubles(line, d, 3, NULL);
glUniform3dv(loc, 1, d);
return;
case '4':
- get_doubles(line, d, 4);
+ parse_doubles(line, d, 4, NULL);
glUniform4dv(loc, 1, d);
return;
}
@@ -1864,15 +1803,15 @@ set_uniform(const char *line, int ubo_array_index)
check_int64_support();
switch (type[6]) {
case '2':
- get_int64s(line, int64s, 2);
+ parse_int64s(line, int64s, 2, NULL);
glUniform2i64vARB(loc, 1, int64s);
return;
case '3':
- get_int64s(line, int64s, 3);
+ parse_int64s(line, int64s, 3, NULL);
glUniform3i64vARB(loc, 1, int64s);
return;
case '4':
- get_int64s(line, int64s, 4);
+ parse_int64s(line, int64s, 4, NULL);
glUniform4i64vARB(loc, 1, int64s);
return;
}
@@ -1880,15 +1819,15 @@ set_uniform(const char *line, int ubo_array_index)
check_int64_support();
switch (type[6]) {
case '2':
- get_uint64s(line, uint64s, 2);
+ parse_uint64s(line, uint64s, 2, NULL);
glUniform2ui64vARB(loc, 1, uint64s);
return;
case '3':
- get_uint64s(line, uint64s, 3);
+ parse_uint64s(line, uint64s, 3, NULL);
glUniform3ui64vARB(loc, 1, uint64s);
return;
case '4':
- get_uint64s(line, uint64s, 4);
+ parse_uint64s(line, uint64s, 4, NULL);
glUniform4ui64vARB(loc, 1, uint64s);
return;
}
@@ -1899,45 +1838,45 @@ set_uniform(const char *line, int ubo_array_index)
case '2':
switch (rows) {
case '2':
- get_floats(line, f, 4);
+ parse_floats(line, f, 4, NULL);
glUniformMatrix2fv(loc, 1, GL_FALSE, f);
return;
case '3':
- get_floats(line, f, 6);
+ parse_floats(line, f, 6, NULL);
glUniformMatrix2x3fv(loc, 1, GL_FALSE, f);
return;
case '4':
- get_floats(line, f, 8);
+ parse_floats(line, f, 8, NULL);
glUniformMatrix2x4fv(loc, 1, GL_FALSE, f);
return;
}
case '3':
switch (rows) {
case '2':
- get_floats(line, f, 6);
+ parse_floats(line, f, 6, NULL);
glUniformMatrix3x2fv(loc, 1, GL_FALSE, f);
return;
case '3':
- get_floats(line, f, 9);
+ parse_floats(line, f, 9, NULL);
glUniformMatrix3fv(loc, 1, GL_FALSE, f);
return;
case '4':
- get_floats(line, f, 12);
+ parse_floats(line, f, 12, NULL);
glUniformMatrix3x4fv(loc, 1, GL_FALSE, f);
return;
}
case '4':
switch (rows) {
case '2':
- get_floats(line, f, 8);
+ parse_floats(line, f, 8, NULL);
glUniformMatrix4x2fv(loc, 1, GL_FALSE, f);
return;
case '3':
- get_floats(line, f, 12);
+ parse_floats(line, f, 12, NULL);
glUniformMatrix4x3fv(loc, 1, GL_FALSE, f);
return;
case '4':
- get_floats(line, f, 16);
+ parse_floats(line, f, 16, NULL);
glUniformMatrix4fv(loc, 1, GL_FALSE, f);
return;
}
@@ -1949,45 +1888,45 @@ set_uniform(const char *line, int ubo_array_index)
case '2':
switch (rows) {
case '2':
- get_doubles(line, d, 4);
+ parse_doubles(line, d, 4, NULL);
glUniformMatrix2dv(loc, 1, GL_FALSE, d);
return;
case '3':
- get_doubles(line, d, 6);
+ parse_doubles(line, d, 6, NULL);
glUniformMatrix2x3dv(loc, 1, GL_FALSE, d);
return;
case '4':
- get_doubles(line, d, 8);
+ parse_doubles(line, d, 8, NULL);
glUniformMatrix2x4dv(loc, 1, GL_FALSE, d);
return;
}
case '3':
switch (rows) {
case '2':
- get_doubles(line, d, 6);
+ parse_doubles(line, d, 6, NULL);
glUniformMatrix3x2dv(loc, 1, GL_FALSE, d);
return;
case '3':
- get_doubles(line, d, 9);
+ parse_doubles(line, d, 9, NULL);
glUniformMatrix3dv(loc, 1, GL_FALSE, d);
return;
case '4':
- get_doubles(line, d, 12);
+ parse_doubles(line, d, 12, NULL);
glUniformMatrix3x4dv(loc, 1, GL_FALSE, d);
return;
}
case '4':
switch (rows) {
case '2':
- get_doubles(line, d, 8);
+ parse_doubles(line, d, 8, NULL);
glUniformMatrix4x2dv(loc, 1, GL_FALSE, d);
return;
case '3':
- get_doubles(line, d, 12);
+ parse_doubles(line, d, 12, NULL);
glUniformMatrix4x3dv(loc, 1, GL_FALSE, d);
return;
case '4':
- get_doubles(line, d, 16);
+ parse_doubles(line, d, 16, NULL);
glUniformMatrix4dv(loc, 1, GL_FALSE, d);
return;
}
@@ -2162,6 +2101,7 @@ active_uniform(const char *line)
{ NULL, 0 }
};
+ const char *rest = line;
char name[512];
char name_buf[512];
char pname_string[512];
@@ -2170,17 +2110,15 @@ active_uniform(const char *line)
int i;
int num_active_uniforms;
- REQUIRE(parse_word_copy(line, name, sizeof(name), &line),
+ REQUIRE(parse_word_copy(rest, name, sizeof(name), &rest),
"Bad uniform name at: %s\n", line);
- strcpy_to_space(pname_string, eat_whitespace(line));
- pname = lookup_enum_string(all_pnames, &line, "glGetUniformsiv pname");
+ strcpy_to_space(pname_string, eat_whitespace(rest));
+ pname = lookup_enum_string(all_pnames, &rest, "glGetUniformsiv pname");
- line = eat_whitespace(line);
- if (isdigit(line[0])) {
- expected = strtol(line, NULL, 0);
- } else {
- expected = lookup_enum_string(all_types, &line, "type enum");
+ if (!parse_int(rest, &expected, &rest)) {
+ rest = eat_whitespace(rest);
+ expected = lookup_enum_string(all_types, &rest, "type enum");
}
glGetProgramiv(prog, GL_ACTIVE_UNIFORMS, &num_active_uniforms);
@@ -2362,10 +2300,8 @@ active_program_interface(const char *line)
prop = lookup_enum_string(all_props, &line,
"glGetProgramResourceiv pname");
- line = eat_whitespace(line);
- if (isdigit(line[0])) {
- expected = strtol(line, NULL, 0);
- } else {
+ if (!parse_int(line, &expected, &line)) {
+ line = eat_whitespace(line);
expected = lookup_enum_string(all_types, &line, "type enum");
}
@@ -2975,11 +2911,11 @@ piglit_display(void)
sizeof(GLuint) * y, sizeof(GLuint),
&z);
} else if (parse_str(line, "clear color ", &rest)) {
- get_floats(rest, c, 4);
+ parse_floats(rest, c, 4, NULL);
glClearColor(c[0], c[1], c[2], c[3]);
clear_bits |= GL_COLOR_BUFFER_BIT;
} else if (parse_str(line, "clear depth ", &rest)) {
- get_floats(rest, c, 1);
+ parse_floats(rest, c, 1, NULL);
glClearDepth(c[0]);
clear_bits |= GL_DEPTH_BUFFER_BIT;
} else if (parse_str(line, "clear", NULL)) {
@@ -3009,13 +2945,13 @@ piglit_display(void)
} else if (parse_str(line, "draw rect tex ", &rest)) {
program_must_be_in_use();
program_subroutine_uniforms();
- get_floats(rest, c, 8);
+ parse_floats(rest, c, 8, NULL);
piglit_draw_rect_tex(c[0], c[1], c[2], c[3],
c[4], c[5], c[6], c[7]);
} else if (parse_str(line, "draw rect ortho patch ", &rest)) {
program_must_be_in_use();
program_subroutine_uniforms();
- get_floats(rest, c, 4);
+ parse_floats(rest, c, 4, NULL);
piglit_draw_rect_custom(-1.0 + 2.0 * (c[0] / piglit_width),
-1.0 + 2.0 * (c[1] / piglit_height),
@@ -3024,7 +2960,7 @@ piglit_display(void)
} else if (parse_str(line, "draw rect ortho ", &rest)) {
program_must_be_in_use();
program_subroutine_uniforms();
- get_floats(rest, c, 4);
+ parse_floats(rest, c, 4, NULL);
piglit_draw_rect(-1.0 + 2.0 * (c[0] / piglit_width),
-1.0 + 2.0 * (c[1] / piglit_height),
@@ -3032,12 +2968,12 @@ piglit_display(void)
2.0 * (c[3] / piglit_height));
} else if (parse_str(line, "draw rect patch ", &rest)) {
program_must_be_in_use();
- get_floats(rest, c, 4);
+ parse_floats(rest, c, 4, NULL);
piglit_draw_rect_custom(c[0], c[1], c[2], c[3], true);
} else if (parse_str(line, "draw rect ", &rest)) {
program_must_be_in_use();
program_subroutine_uniforms();
- get_floats(rest, c, 4);
+ parse_floats(rest, c, 4, NULL);
piglit_draw_rect(c[0], c[1], c[2], c[3]);
} else if (parse_str(line, "draw instanced rect ", &rest)) {
int primcount;
@@ -3133,7 +3069,7 @@ piglit_display(void)
}
} else if (parse_str(line, "frustum", &rest)) {
- get_floats(rest, c, 6);
+ parse_floats(rest, c, 6, NULL);
piglit_frustum_projection(false, c[0], c[1], c[2],
c[3], c[4], c[5]);
} else if (parse_str(line, "hint", &rest)) {
@@ -3158,13 +3094,13 @@ piglit_display(void)
piglit_ortho_projection(render_width, render_height,
GL_FALSE);
} else if (parse_str(line, "probe rgba ", &rest)) {
- get_floats(rest, c, 6);
+ parse_floats(rest, c, 6, NULL);
if (!piglit_probe_pixel_rgba((int) c[0], (int) c[1],
& c[2])) {
result = PIGLIT_FAIL;
}
} else if (parse_str(line, "probe depth ", &rest)) {
- get_floats(rest, c, 3);
+ parse_floats(rest, c, 3, NULL);
if (!piglit_probe_pixel_depth((int) c[0], (int) c[1],
c[2])) {
result = PIGLIT_FAIL;
@@ -3199,7 +3135,7 @@ piglit_display(void)
result = PIGLIT_FAIL;
}
} else if (parse_str(line, "probe rgb ", &rest)) {
- get_floats(rest, c, 5);
+ parse_floats(rest, c, 5, NULL);
if (!piglit_probe_pixel_rgb((int) c[0], (int) c[1],
& c[2])) {
result = PIGLIT_FAIL;
@@ -3241,25 +3177,25 @@ piglit_display(void)
result = PIGLIT_FAIL;
}
} else if (parse_str(line, "probe all rgba ", &rest)) {
- get_floats(rest, c, 4);
+ parse_floats(rest, c, 4, NULL);
if (result != PIGLIT_FAIL &&
!piglit_probe_rect_rgba(0, 0, render_width,
render_height, c))
result = PIGLIT_FAIL;
} else if (parse_str(line, "probe warn all rgba ", &rest)) {
- get_floats(rest, c, 4);
+ parse_floats(rest, c, 4, NULL);
if (result == PIGLIT_PASS &&
!piglit_probe_rect_rgba(0, 0, render_width,
render_height, c))
result = PIGLIT_WARN;
} else if (parse_str(line, "probe all rgb", &rest)) {
- get_floats(rest, c, 3);
+ parse_floats(rest, c, 3, NULL);
if (result != PIGLIT_FAIL &&
!piglit_probe_rect_rgb(0, 0, render_width,
render_height, c))
result = PIGLIT_FAIL;
} else if (parse_str(line, "tolerance", &rest)) {
- get_floats(rest, piglit_tolerance, 4);
+ parse_floats(rest, piglit_tolerance, 4, NULL);
} else if (parse_str(line, "shade model smooth", NULL)) {
glShadeModel(GL_SMOOTH);
} else if (parse_str(line, "shade model flat", NULL)) {
@@ -3466,7 +3402,7 @@ piglit_display(void)
} else if (parse_str(line, "link success", &rest)) {
program_must_be_in_use();
} else if (parse_str(line, "ubo array index ", &rest)) {
- get_ints(rest, &ubo_array_index, 1);
+ parse_ints(rest, &ubo_array_index, 1, NULL);
} else if (parse_str(line, "active uniform ", &rest)) {
active_uniform(rest);
} else if (parse_str(line, "verify program_interface_query ", &rest)) {
--
2.9.0
More information about the Piglit
mailing list