summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>2019-06-19 21:02:41 -0700
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>2019-06-20 09:02:04 -0700
commit393fcbd6a3060db869f201e54e5141089bc094d7 (patch)
tree9a9f94a03edbcde213f1ddd229754e33dee90553
parent6c5735e5ae4669ec4303e894cac19f99189e4910 (diff)
util: Optionally validate SPIR-V after assembling
PIGLIT_SPIRV_VALIDATE enables the feature, PIGLIT_SPIRV_VAL_BINARY let the user specify which "spirv-val" to use. For now, validate against opengl4.5 target environment. Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
-rw-r--r--tests/util/piglit-shader.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/util/piglit-shader.c b/tests/util/piglit-shader.c
index 4ba2c4dc5..ccd231429 100644
--- a/tests/util/piglit-shader.c
+++ b/tests/util/piglit-shader.c
@@ -493,6 +493,30 @@ piglit_assemble_spirv(GLenum target,
piglit_report_result(PIGLIT_FAIL);
}
+ if (getenv("PIGLIT_SPIRV_VALIDATE")) {
+ char *arguments[] = {
+ getenv("PIGLIT_SPIRV_VAL_BINARY"),
+ "--target-env", "opengl4.5",
+ NULL,
+ };
+
+ if (arguments[0] == NULL)
+ arguments[0] = "spirv-val";
+
+ uint8_t *validate_result;
+ size_t validate_result_length;
+ bool res = piglit_subprocess(arguments,
+ binary_source_length,
+ (const uint8_t *) binary_source,
+ &validate_result_length,
+ &validate_result);
+
+ if (!res) {
+ fprintf(stderr, "spirv-val failed\n");
+ piglit_report_result(PIGLIT_FAIL);
+ }
+ }
+
GLuint shader = glCreateShader(target);
glShaderBinary(1, &shader, GL_SHADER_BINARY_FORMAT_SPIR_V_ARB,
binary_source, binary_source_length);