Signed-off-by: Jan Vesely <jan.ves...@rutgers.edu>
---
 tests/cl/api/create-program-with-binary.c        |  2 +-
 tests/cl/custom/buffer-flags.c                   |  2 +-
 tests/cl/custom/flush-after-enqueue-kernel.c     |  2 +-
 tests/cl/custom/r600-create-release-buffer-bug.c | 12 ++++-----
 tests/cl/custom/run-simple-kernel.c              |  2 +-
 tests/cl/custom/use-sub-buffer-in-kernel.c       |  4 +--
 tests/cl/program/bitcoin-phatk.c                 |  2 +-
 tests/cl/program/max-work-item-sizes.c           |  1 +
 tests/cl/program/program-tester.c                | 33 ++++++++++++++++++++++++
 tests/util/piglit-util-cl.c                      |  7 +++--
 tests/util/piglit-util-cl.h                      |  4 +++
 11 files changed, 56 insertions(+), 15 deletions(-)

diff --git a/tests/cl/api/create-program-with-binary.c 
b/tests/cl/api/create-program-with-binary.c
index 4873b76..4238331 100644
--- a/tests/cl/api/create-program-with-binary.c
+++ b/tests/cl/api/create-program-with-binary.c
@@ -183,7 +183,7 @@ piglit_cl_test(const int argc,
                size_t global_work_size = 1;
                size_t local_work_size = 1;
                cl_command_queue queue = ctx->command_queues[i];
-               if (!piglit_cl_enqueue_ND_range_kernel(queue, kernel, 1,
+               if (!piglit_cl_enqueue_ND_range_kernel(queue, kernel, 1, NULL,
                                        &global_work_size, &local_work_size)) {
                        fprintf(stderr, "Failed to execute binary kernel.");
                        piglit_merge_result(&result, PIGLIT_FAIL);
diff --git a/tests/cl/custom/buffer-flags.c b/tests/cl/custom/buffer-flags.c
index 6bf988f..115fb92 100644
--- a/tests/cl/custom/buffer-flags.c
+++ b/tests/cl/custom/buffer-flags.c
@@ -130,7 +130,7 @@ buffer_test(piglit_cl_context *ctx,
 
        printf("Running the kernel...\n");
        if (!piglit_cl_enqueue_ND_range_kernel(context->command_queues[0],
-                                       kernel, 1, &global, &local)) {
+                                       kernel, 1, NULL, &global, &local)) {
                ret = PIGLIT_FAIL;
                goto cleanup;
        }
diff --git a/tests/cl/custom/flush-after-enqueue-kernel.c 
b/tests/cl/custom/flush-after-enqueue-kernel.c
index 00a0516..8d3fc8c 100644
--- a/tests/cl/custom/flush-after-enqueue-kernel.c
+++ b/tests/cl/custom/flush-after-enqueue-kernel.c
@@ -92,7 +92,7 @@ piglit_cl_test(const int argc,
        }
 
        if (!piglit_cl_enqueue_ND_range_kernel(context->command_queues[0],
-                                       kernel, 3, global_size, local_size)) {
+                                       kernel, 3, NULL, global_size, 
local_size)) {
                return PIGLIT_FAIL;
        }
 
diff --git a/tests/cl/custom/r600-create-release-buffer-bug.c 
b/tests/cl/custom/r600-create-release-buffer-bug.c
index 7c3a214..535e57d 100644
--- a/tests/cl/custom/r600-create-release-buffer-bug.c
+++ b/tests/cl/custom/r600-create-release-buffer-bug.c
@@ -74,8 +74,8 @@ piglit_cl_test(const int argc,
                return PIGLIT_FAIL;
        }
 
-       if (!piglit_cl_enqueue_ND_range_kernel(queue, kernel, 1, &global_size,
-                                               &local_size)) {
+       if (!piglit_cl_enqueue_ND_range_kernel(queue, kernel, 1, NULL,
+                                              &global_size, &local_size)) {
                return PIGLIT_FAIL;
        }
 
@@ -84,8 +84,8 @@ piglit_cl_test(const int argc,
                return PIGLIT_FAIL;
        }
 
-       if (!piglit_cl_enqueue_ND_range_kernel(queue, kernel, 1, &global_size,
-                                               &local_size)) {
+       if (!piglit_cl_enqueue_ND_range_kernel(queue, kernel, 1, NULL,
+                                              &global_size, &local_size)) {
                return PIGLIT_FAIL;
        }
 
@@ -98,8 +98,8 @@ piglit_cl_test(const int argc,
                return PIGLIT_FAIL;
        }
 
-       if (!piglit_cl_enqueue_ND_range_kernel(queue, kernel, 1, &global_size,
-                                               &local_size)) {
+       if (!piglit_cl_enqueue_ND_range_kernel(queue, kernel, 1, NULL,
+                                              &global_size, &local_size)) {
                return PIGLIT_FAIL;
        }
 
diff --git a/tests/cl/custom/run-simple-kernel.c 
b/tests/cl/custom/run-simple-kernel.c
index 48d7725..db529d2 100644
--- a/tests/cl/custom/run-simple-kernel.c
+++ b/tests/cl/custom/run-simple-kernel.c
@@ -61,7 +61,7 @@ piglit_cl_test(const int argc,
                               sizeof(cl_int), &data);
        piglit_cl_set_kernel_buffer_arg(kernel, 0, &buffer);
        piglit_cl_execute_ND_range_kernel(context->command_queues[0], kernel, 1,
-                                         &global_size, &local_size);
+                                         NULL, &global_size, &local_size);
 
        /* Read the buffer and check the result */
        piglit_cl_read_buffer(context->command_queues[0], buffer, 0,
diff --git a/tests/cl/custom/use-sub-buffer-in-kernel.c 
b/tests/cl/custom/use-sub-buffer-in-kernel.c
index 10cfe01..74c0858 100644
--- a/tests/cl/custom/use-sub-buffer-in-kernel.c
+++ b/tests/cl/custom/use-sub-buffer-in-kernel.c
@@ -98,8 +98,8 @@ piglit_cl_test(const int argc,
                return PIGLIT_FAIL;
        }
 
-       if (!piglit_cl_enqueue_ND_range_kernel(queue, kernel, 1, &global_size,
-                                               &local_size)) {
+       if (!piglit_cl_enqueue_ND_range_kernel(queue, kernel, 1, NULL,
+                                              &global_size, &local_size)) {
                return PIGLIT_FAIL;
        }
        clFinish(queue);
diff --git a/tests/cl/program/bitcoin-phatk.c b/tests/cl/program/bitcoin-phatk.c
index 422a3ce..f57d41b 100644
--- a/tests/cl/program/bitcoin-phatk.c
+++ b/tests/cl/program/bitcoin-phatk.c
@@ -514,7 +514,7 @@ piglit_cl_test(const int argc,
        piglit_cl_set_kernel_buffer_arg(env->kernel, 23, &buffer);
 
        piglit_cl_execute_ND_range_kernel(env->context->command_queues[0],
-                                       env->kernel, 1,
+                                       env->kernel, 1, NULL,
                                        &global_size, &local_size);
        piglit_cl_read_whole_buffer(env->context->command_queues[0], buffer, 
data);
 
diff --git a/tests/cl/program/max-work-item-sizes.c 
b/tests/cl/program/max-work-item-sizes.c
index 6fdd18e..5f160a5 100644
--- a/tests/cl/program/max-work-item-sizes.c
+++ b/tests/cl/program/max-work-item-sizes.c
@@ -116,6 +116,7 @@ piglit_cl_test(const int argc,
                
piglit_cl_execute_ND_range_kernel(env->context->command_queues[0],
                                                  env->kernel,
                                                  i+1,
+                                                 NULL,
                                                  global_size,
                                                  global_size);
 
diff --git a/tests/cl/program/program-tester.c 
b/tests/cl/program/program-tester.c
index 0a3b011..8e3cb4d 100644
--- a/tests/cl/program/program-tester.c
+++ b/tests/cl/program/program-tester.c
@@ -279,7 +279,9 @@ bool     expect_test_fail = false;
 cl_uint  work_dimensions = 1;
 size_t   global_work_size[3] = {1, 1, 1};
 size_t   local_work_size[3] = {1, 1, 1};
+size_t   global_offset[3] = {0, 0, 0};
 bool     local_work_size_null = false;
+bool     global_offset_null = true;
 
 /* Helper functions */
 
@@ -384,6 +386,8 @@ struct test {
        size_t global_work_size[3];
        size_t local_work_size[3];
        bool local_work_size_null;
+       size_t global_offset[3];
+       bool global_offset_null;
 
        bool expect_test_fail;
 
@@ -407,6 +411,7 @@ struct test create_test()
                //.global_work_size = global_work_size,
                //.local_work_size = local_work_size,
                .local_work_size_null = local_work_size_null,
+               .global_offset_null = global_offset_null,
 
                .expect_test_fail = expect_test_fail,
 
@@ -419,6 +424,7 @@ struct test create_test()
 
        memcpy(t.global_work_size, global_work_size, sizeof(global_work_size));
        memcpy(t.local_work_size, local_work_size, sizeof(local_work_size));
+       memcpy(t.global_offset, global_offset, sizeof(global_offset));
 
        return t;
 }
@@ -1736,6 +1742,19 @@ parse_config(const char* config_str,
                                        } else {
                                                local_work_size_null = true;
                                        }
+                               } else if(regex_match(key, "^global_offset$")) {
+                                       if(!regex_match(value, 
REGEX_FULL_MATCH(REGEX_NULL))) {
+                                               int i;
+                                               uint64_t* int_global_offset;
+                                               get_uint_array(value, 
&int_global_offset, 3);
+                                               for(i = 0; i < 3; i++) {
+                                                       global_offset[i] = 
int_global_offset[i];
+                                               }
+                                               global_offset_null = false;
+                                               free(int_global_offset);
+                                       } else {
+                                               global_offset_null = true;
+                                       }
                                } else {
                                        fprintf(stderr,
                                                "Invalid configuration, key 
'%s' does not belong to a [config] section: %s\n",
@@ -1778,6 +1797,19 @@ parse_config(const char* config_str,
                                        } else {
                                                test->local_work_size_null = 
true;
                                        }
+                               } else if(regex_match(key, "^global_offset$")) {
+                                       if(!regex_match(value, 
REGEX_FULL_MATCH(REGEX_NULL))) {
+                                               int i;
+                                               uint64_t* int_global_offset;
+                                               get_uint_array(value, 
&int_global_offset, 3);
+                                               for(i = 0; i < 3; i++) {
+                                                       test->global_offset[i] 
= int_global_offset[i];
+                                               }
+                                               test->global_offset_null = 
false;
+                                               free(int_global_offset);
+                                       } else {
+                                               test->global_offset_null = true;
+                                       }
                                } else if(regex_match(key, "^arg_in$")) {
                                        get_test_arg(value, test, true);
                                } else if(regex_match(key, "^arg_out$")) {
@@ -2396,6 +2428,7 @@ test_kernel(const struct piglit_cl_program_test_config* 
config,
        if(!piglit_cl_execute_ND_range_kernel(env->context->command_queues[0],
                                              kernel,
                                              test.work_dimensions,
+                                             test.global_offset_null ? NULL : 
test.global_offset,
                                              test.global_work_size,
                                              test.local_work_size_null ? NULL 
: test.local_work_size)) {
                printf("Failed to enqueue the kernel\n");
diff --git a/tests/util/piglit-util-cl.c b/tests/util/piglit-util-cl.c
index 51d6808..7e7d985 100644
--- a/tests/util/piglit-util-cl.c
+++ b/tests/util/piglit-util-cl.c
@@ -1263,14 +1263,15 @@ piglit_cl_set_kernel_buffer_arg(cl_kernel kernel, 
cl_uint arg_index,
 bool
 piglit_cl_enqueue_ND_range_kernel(cl_command_queue command_queue,
                                   cl_kernel kernel, cl_uint work_dim,
+                                  const size_t* global_offset,
                                   const size_t* global_work_size,
                                   const size_t* local_work_size)
 {
        cl_int errNo;
 
        errNo = clEnqueueNDRangeKernel(command_queue, kernel, work_dim,
-                                      NULL, global_work_size, local_work_size,
-                                      0, NULL, NULL);
+                                      global_offset, global_work_size,
+                                      local_work_size, 0, NULL, NULL);
        if(!piglit_cl_check_error(errNo, CL_SUCCESS)) {
                fprintf(stderr,
                        "Could not enqueue ND range kernel: %s\n",
@@ -1284,6 +1285,7 @@ piglit_cl_enqueue_ND_range_kernel(cl_command_queue 
command_queue,
 bool
 piglit_cl_execute_ND_range_kernel(cl_command_queue command_queue,
                                   cl_kernel kernel, cl_uint work_dim,
+                                  const size_t* global_offset,
                                   const size_t* global_work_size,
                                   const size_t* local_work_size)
 {
@@ -1292,6 +1294,7 @@ piglit_cl_execute_ND_range_kernel(cl_command_queue 
command_queue,
        if(!piglit_cl_enqueue_ND_range_kernel(command_queue,
                                             kernel,
                                             work_dim,
+                                            global_offset,
                                             global_work_size,
                                             local_work_size)) {
                return false;
diff --git a/tests/util/piglit-util-cl.h b/tests/util/piglit-util-cl.h
index e4730cc..9fb4f9f 100644
--- a/tests/util/piglit-util-cl.h
+++ b/tests/util/piglit-util-cl.h
@@ -704,6 +704,7 @@ piglit_cl_set_kernel_buffer_arg(cl_kernel kernel,
  * @param command_queue     Command queue to enqueue operation on.
  * @param kernel            Kernel to be enqueued.
  * @param work_dim          Work dimensions.
+ * @param global_offset     Global offset.
  * @param global_work_size  Global work sizes.
  * @param local_work_size   Local work sizes.
  * @return                  \c true on succes, \c false otherwise.
@@ -712,6 +713,7 @@ bool
 piglit_cl_enqueue_ND_range_kernel(cl_command_queue command_queue,
                                   cl_kernel kernel,
                                   cl_uint work_dim,
+                                  const size_t* global_offset,
                                   const size_t* global_work_size,
                                   const size_t* local_work_size);
 
@@ -721,6 +723,7 @@ piglit_cl_enqueue_ND_range_kernel(cl_command_queue 
command_queue,
  * @param command_queue     Command queue to enqueue operation on.
  * @param kernel            Kernel to be enqueued.
  * @param work_dim          Work dimensions.
+ * @param global_offset     Global offset.
  * @param global_work_size  Global work sizes.
  * @param local_work_size   Local work sizes.
  * @return                  \c true on succes, \c false otherwise.
@@ -729,6 +732,7 @@ bool
 piglit_cl_execute_ND_range_kernel(cl_command_queue command_queue,
                                   cl_kernel kernel,
                                   cl_uint work_dim,
+                                  const size_t* global_offset,
                                   const size_t* global_work_size,
                                   const size_t* local_work_size);
 
-- 
2.5.5

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

Reply via email to