Mesa (master): clover: Pass work_dim parameter of clEnqueueNDRangeKernel() to driver

Hans de Goede jwrdegoede at kemper.freedesktop.org
Sat Jul 2 10:22:25 UTC 2016


Module: Mesa
Branch: master
Commit: ef8e50a841e79597ca56ae081102119329fd154c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ef8e50a841e79597ca56ae081102119329fd154c

Author: Hans de Goede <hdegoede at redhat.com>
Date:   Fri Apr 22 14:47:05 2016 +0200

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 <hdegoede at redhat.com>
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>

---

 src/gallium/include/pipe/p_state.h                | 7 +++++++
 src/gallium/state_trackers/clover/core/kernel.cpp | 1 +
 2 files changed, 8 insertions(+)

diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index 5526c39..f4bee38 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 9231462..d9bda6c 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;




More information about the mesa-commit mailing list