[Piglit] [PATCH] shader_runner: add basic ssbo probing support
Ilia Mirkin
imirkin at alum.mit.edu
Fri Mar 18 15:58:51 UTC 2016
---
tests/shaders/shader_runner.c | 43 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
index 6783b6f..8d2a9bd 100644
--- a/tests/shaders/shader_runner.c
+++ b/tests/shaders/shader_runner.c
@@ -2703,6 +2703,41 @@ probe_atomic_counter(GLint counter_num, const char *op, uint32_t value)
return true;
}
+static bool
+probe_ssbo_uint(GLint ssbo_offset, const char *op, uint32_t value)
+{
+ uint32_t *p;
+ uint32_t observed;
+ enum comparison cmp;
+ bool result;
+
+ process_comparison(op, &cmp);
+
+ glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, ssbo);
+ p = glMapBufferRange(GL_SHADER_STORAGE_BUFFER, ssbo_offset,
+ sizeof(uint32_t), GL_MAP_READ_BIT);
+
+ if (!p) {
+ printf("Couldn't map ssbo to verify expected value.\n");
+ return false;
+ }
+
+ observed = *p;
+ result = compare_uint(value, observed, cmp);
+
+ if (!result) {
+ printf("SSBO %d test failed: Reference %s Observed\n",
+ ssbo_offset, comparison_string(cmp));
+ printf(" Reference: %u\n", value);
+ printf(" Observed: %u\n", observed);
+ glUnmapBuffer(GL_SHADER_STORAGE_BUFFER);
+ return false;
+ }
+
+ glUnmapBuffer(GL_SHADER_STORAGE_BUFFER);
+ return true;
+}
+
enum piglit_result
piglit_display(void)
{
@@ -2958,6 +2993,14 @@ piglit_display(void)
if (!probe_atomic_counter(x, s, y)) {
piglit_report_result(PIGLIT_FAIL);
}
+ } else if (sscanf(line, "probe ssbo uint %d %s 0x%x",
+ &x, s, &y) == 3) {
+ if (!probe_ssbo_uint(x, s, y))
+ pass = false;
+ } else if (sscanf(line, "probe ssbo uint %d %s %d",
+ &x, s, &y) == 3) {
+ if (!probe_ssbo_uint(x, s, y))
+ pass = false;
} else if (sscanf(line,
"relative probe rgba ( %f , %f ) "
"( %f , %f , %f , %f )",
--
2.4.10
More information about the Piglit
mailing list