From: Antia Puentes <apuen...@igalia.com>

Tests glGetProgramResourceName().
---
 tests/shaders/shader_runner.c | 74 ++++++++++++++++++++++++++++++++++-
 1 file changed, 73 insertions(+), 1 deletion(-)

diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
index 51c31c9d8..893a99422 100644
--- a/tests/shaders/shader_runner.c
+++ b/tests/shaders/shader_runner.c
@@ -2991,6 +2991,26 @@ query_check_error_int(const char *query_str, int 
expected, int got)
        }
 }
 
+static void
+query_check_error_name(const char *query_str,
+                      int expected_length, int got_length,
+                      const char *expected_name, const char *got_name)
+{
+       if (!piglit_check_gl_error(GL_NO_ERROR)) {
+               fprintf(stderr, "%s error\n", query_str);
+               piglit_report_result(PIGLIT_FAIL);
+       }
+
+       if (got_length != expected_length || strcmp(got_name, expected_name)) {
+               fprintf(stderr,
+                       "%s: expected (length = %d, name = \"%s\"),"
+                       "got (length = %d, name = \"%s\")\n", query_str,
+                       expected_length, expected_name,
+                       got_length, got_name);
+               piglit_report_result(PIGLIT_FAIL);
+       }
+}
+
 static int
 resource_info_get_block_or_atomic_buffer_index(struct resource_info *resource)
 {
@@ -3209,6 +3229,21 @@ query_resource_by_name(unsigned interface_type, const 
char *name, unsigned prop,
        return;
 }
 
+static void
+query_resource_name(unsigned interface_type, GLuint index,
+                   GLsizei expected_length, const char *expected_name,
+                   const char *query_str)
+{
+       GLsizei got_length;
+       char got_name[512];
+
+       glGetProgramResourceName(prog, interface_type, index, sizeof(got_name),
+                                &got_length, got_name);
+
+       query_check_error_name(query_str, expected_length, got_length,
+                              expected_name, got_name);
+}
+
 static void
 parse_resource_info(const char **line, unsigned interface_type,
                    struct resource_info *resource)
@@ -3589,12 +3624,49 @@ verify_program_interface_query(const char *line,
                                               expected, query_str, block_data);
                }
 
+       }
+               break;
+       case QUERY_RESOURCE_NAME: {
+               struct resource_info resource = {GL_NONE, -1, -1, -1, -1, 
false};
+               GLuint index;
+               GLsizei expected_length;
+               char expected_name[512];
+
+               parse_resource_info(&line, interface_type, &resource);
+               index = resource_info_get_index(&resource);
+
+               REQUIRE(parse_int(line, &expected_length, &line),
+                       "Bad expected length at: %s\n", line);
+
+               if (parse_str(line, "\"\"", &line))
+                       expected_name[0] = '\0';
+               else
+                       REQUIRE(parse_word_copy(line, expected_name,
+                                               sizeof(expected_name), &line),
+                               "Bad expected name at: %s\n", line);
+
+               if (strlen(expected_name) != expected_length) {
+                       fprintf(stderr,
+                               "Expected values for length and name do not "
+                               "match: length = %d, name = \"%s\" "
+                               "(name's real length = %zu)\n",
+                               expected_length, expected_name,
+                               strlen(expected_name));
+                       piglit_report_result(PIGLIT_FAIL);
+               }
+
+               snprintf(query_str, sizeof(query_str),
+                        "glGetProgramResourceName(%s, %d)",
+                        piglit_get_gl_enum_name(interface_type),
+                        index);
+
+               query_resource_name(interface_type, index,
+                                   expected_length, expected_name, query_str);
        }
                break;
        case QUERY_RESOURCE_INDEX:
        case QUERY_RESOURCE_LOCATION:
        case QUERY_RESOURCE_LOCATION_INDEX:
-       case QUERY_RESOURCE_NAME:
                assert(!"Not implemented.");
                break;
        default:
-- 
2.19.1

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to