---
 Note: I'm new to contributing to piglit, and I don't have commit access.
 tests/cl/program/program-tester.c | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/tests/cl/program/program-tester.c 
b/tests/cl/program/program-tester.c
index 8ddd06c..3e0ed43 100644
--- a/tests/cl/program/program-tester.c
+++ b/tests/cl/program/program-tester.c
@@ -1993,6 +1993,7 @@ init(const int argc,
 struct mem_arg {
        cl_uint index;
        cl_mem mem;
+       cl_mem_object_type type;
 };
 
 void
@@ -2162,6 +2163,7 @@ test_kernel(const struct piglit_cl_program_test_config* 
config,
                case TEST_ARG_BUFFER: {
                        struct mem_arg mem_arg;
                        mem_arg.index = test_arg.index;
+                       mem_arg.type = CL_MEM_OBJECT_BUFFER;
 
                        if(test_arg.value != NULL) {
                                mem_arg.mem = 
piglit_cl_create_buffer(env->context,
@@ -2198,6 +2200,7 @@ test_kernel(const struct piglit_cl_program_test_config* 
config,
                case TEST_ARG_IMAGE: {
                        struct mem_arg mem_arg;
                        mem_arg.index = test_arg.index;
+                       mem_arg.type = test_arg.image_desc.image_type;
 
                        if(!test_arg.value) {
                                printf("Image argument cannot be null.\n");
@@ -2274,15 +2277,28 @@ test_kernel(const struct piglit_cl_program_test_config* 
config,
                        break;
                case TEST_ARG_BUFFER: {
                        unsigned k;
+                       bool fail = false;
                        struct mem_arg mem_arg;
                        mem_arg.index = test_arg.index;
+                       mem_arg.type = CL_MEM_OBJECT_BUFFER;
 
                        for(k = 0; k < num_mem_args; k++) {
-                               if(mem_args[k].index == mem_arg.index) {
-                                       arg_set = true;
+                               if(mem_args[k].index != mem_arg.index)
+                                       continue;
+
+                               if(mem_args[k].type != mem_arg.type) {
+                                       printf("Inconsistent types specified 
for in-out"
+                                              "argument %d: arg_in: %s, 
arg_out: %s.\n",
+                                              mem_arg.index,
+                                              
piglit_cl_get_enum_name(mem_args[k].type),
+                                              
piglit_cl_get_enum_name(mem_arg.type));
+                                       arg_set = false;
+                                       fail = true;
+                                       break;
                                }
+                               arg_set = true;
                        }
-                       if(arg_set) {
+                       if(arg_set || fail) {
                                break;
                        }
 
-- 
2.4.6

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to