summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans de Goede <[email protected]>2016-04-22 14:47:05 +0200
committerHans de Goede <[email protected]>2016-07-02 12:21:28 +0200
commitef8e50a841e79597ca56ae081102119329fd154c (patch)
treec11c8f71c1c8817d03e7eaf9c2c04199a8a394e2
parentd386cef246b5949a1199f3b9d53a9e6d125e4869 (diff)
clover: Pass work_dim parameter of clEnqueueNDRangeKernel() to driver
In order to implement get_work_dim() the driver may need to know the clEnqueueNDRangeKernel() work_dim parameter, so pass it to the driver. Signed-off-by: Hans de Goede <[email protected]> Reviewed-by: Ilia Mirkin <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]>
-rw-r--r--src/gallium/include/pipe/p_state.h7
-rw-r--r--src/gallium/state_trackers/clover/core/kernel.cpp1
2 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index 5526c392aa7..f4bee38a195 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -756,6 +756,13 @@ struct pipe_grid_info
void *input;
/**
+ * Grid number of dimensions, 1-3, e.g. the work_dim parameter passed to
+ * clEnqueueNDRangeKernel. Note block[] and grid[] must be padded with
+ * 1 for non-used dimensions.
+ */
+ uint work_dim;
+
+ /**
* Determine the layout of the working block (in thread units) to be used.
*/
uint block[3];
diff --git a/src/gallium/state_trackers/clover/core/kernel.cpp b/src/gallium/state_trackers/clover/core/kernel.cpp
index 9231462b822..d9bda6c712c 100644
--- a/src/gallium/state_trackers/clover/core/kernel.cpp
+++ b/src/gallium/state_trackers/clover/core/kernel.cpp
@@ -76,6 +76,7 @@ kernel::launch(command_queue &q,
exec.g_buffers.data(), g_handles.data());
// Fill information for the launch_grid() call.
+ info.work_dim = grid_size.size();
copy(pad_vector(q, block_size, 1), info.block);
copy(pad_vector(q, reduced_grid_size, 1), info.grid);
info.pc = find(name_equals(_name), m.syms).offset;