[Piglit] [PATCH 04/15] shader_runner: Add func version_string()

Chad Versace chad.versace at linux.intel.com
Fri Dec 7 12:53:50 PST 2012


Translates a `struct version` to a string.

We will need this function when `struct version` begins representing ES
versions.

Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
---
 tests/shaders/shader_runner.c | 44 +++++++++++++++++++++++++++++++++++--------
 1 file changed, 36 insertions(+), 8 deletions(-)

diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
index e701cc2..0c96d60 100644
--- a/tests/shaders/shader_runner.c
+++ b/tests/shaders/shader_runner.c
@@ -63,6 +63,7 @@ struct version {
 	} _tag;
 
 	unsigned num;
+	char _string[100];
 };
 
 extern float piglit_tolerance[4];
@@ -128,6 +129,7 @@ version_init(struct version *v, enum version_tag tag, unsigned num)
 
 	v->_tag = tag;
 	v->num = num;
+	v->_string[0] = 0;
 }
 
 static void
@@ -144,6 +146,32 @@ version_compare(struct version *a, struct version *b, enum comparison cmp)
 	return compare(a->num, b->num, cmp);
 }
 
+/**
+ * Get the version string.
+ */
+static const char*
+version_string(struct version *v)
+{
+	if (v->_string[0])
+		return v->_string;
+
+	switch (v->_tag) {
+	case VERSION_GL:
+		snprintf(v->_string, sizeof(v->_string) - 1, "GL %d.%d",
+		         v->num / 10, v->num % 10);
+		break;
+	case VERSION_GLSL:
+		snprintf(v->_string, sizeof(v->_string) - 1, "GLSL %d.%d",
+		         v->num / 100, v->num % 100);
+		break;
+	default:
+		assert(false);
+		break;
+	}
+
+	return v->_string;
+}
+
 static GLboolean
 string_match(const char *string, const char *line)
 {
@@ -522,11 +550,11 @@ process_requirement(const char *line)
 		}
 
 		if (!version_compare(&glsl_req_version, &glsl_version, cmp)) {
-			printf("Test requires GLSL version %s %d.%d.  "
-			       "Actual version is %d.%d.\n",
+			printf("Test requires %s %s.  "
+			       "Actual version %s.\n",
 			       comparison_string(cmp),
-			       glsl_req_version.num / 100, glsl_req_version.num % 100,
-			       glsl_version.num / 100, glsl_version.num % 100);
+			       version_string(&glsl_req_version),
+			       version_string(&glsl_version));
 			piglit_report_result(PIGLIT_SKIP);
 		}
 	} else if (string_match("GL", line)) {
@@ -537,11 +565,11 @@ process_requirement(const char *line)
 		                         VERSION_GL);
 
 		if (!version_compare(&gl_req_version, &gl_version, cmp)) {
-			printf("Test requires GL version %s %d.%d.  "
-			       "Actual version is %d.%d.\n",
+			printf("Test requires %s %s.  "
+			       "Actual version is %s.\n",
 			       comparison_string(cmp),
-			       gl_req_version.num / 10, gl_req_version.num % 10,
-			       gl_version.num / 10, gl_version.num % 10);
+			       version_string(&gl_req_version),
+			       version_string(&gl_version));
 			piglit_report_result(PIGLIT_SKIP);
 		}
 	} else if (string_match("rlimit", line)) {
-- 
1.7.11.7



More information about the Piglit mailing list