summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorJunyan He <junyan.he@intel.com>2016-04-14 18:52:39 +0800
committerJunyan He <junyan.he@intel.com>2016-04-14 18:52:39 +0800
commitd72dfdb689fa4b5fae05a06fcad27ce4fa565482 (patch)
treea4cbd35332da26f0cac90d13913c8697b5c92248 /backend
parent01dab26711ad6c6841370ec510f717dd2d679d1b (diff)
modify ref
Diffstat (limited to 'backend')
-rw-r--r--backend/src/driver/cl_gen_command_queue.cpp9
-rw-r--r--backend/src/driver/cl_gen_driver.hpp4
2 files changed, 9 insertions, 4 deletions
diff --git a/backend/src/driver/cl_gen_command_queue.cpp b/backend/src/driver/cl_gen_command_queue.cpp
index e01aaec9..e78cb32e 100644
--- a/backend/src/driver/cl_gen_command_queue.cpp
+++ b/backend/src/driver/cl_gen_command_queue.cpp
@@ -154,6 +154,10 @@ static void *workerFunction(void *Arg)
bool GenGPUCommandQueue::enqueueWorkItem(GenGPUWorkItem* item)
{
+ if (item->event) {
+ GBE_ASSERT(item->event->queue == this->queue); //Should belong to this queue.
+ }
+
pthread_mutex_lock(&this->mutex);
if (this->quit) { // already destroy the queue?
@@ -305,7 +309,7 @@ bool GenGPUCommandQueue::setEventStatus(cl_event event, cl_int state)
return true;
}
-GenGPUCommandQueue::GenGPUCommandQueue(dri_bufmgr *bufmgr, drm_intel_context *ctx)
+GenGPUCommandQueue::GenGPUCommandQueue(dri_bufmgr *bufmgr, drm_intel_context *ctx, cl_command_queue queue)
{
GBE_ASSERT(bufmgr != NULL);
GBE_ASSERT(ctx != NULL);
@@ -315,6 +319,7 @@ GenGPUCommandQueue::GenGPUCommandQueue(dri_bufmgr *bufmgr, drm_intel_context *ct
this->workItems = list<GenGPUWorkItem*>();
this->quit = false;
this->inExec = false;
+ this->queue = queue;
pthread_mutex_init(&this->mutex, NULL);
pthread_cond_init(&this->cond, NULL);
@@ -354,7 +359,7 @@ cl_int GenCreateCommandQueue(cl_command_queue queue)
GenGPUContext* gpuCtx = (GenGPUContext*)getGenContextPrivate(ctx, device);
GBE_ASSERT(gpuCtx != NULL);
- GenGPUCommandQueue* gpuQueue = GBE_NEW(GenGPUCommandQueue, gpuCtx->bufmgr, gpuCtx->ctx);
+ GenGPUCommandQueue* gpuQueue = GBE_NEW(GenGPUCommandQueue, gpuCtx->bufmgr, gpuCtx->ctx, queue);
if (gpuQueue == NULL) {
return CL_OUT_OF_RESOURCES;
}
diff --git a/backend/src/driver/cl_gen_driver.hpp b/backend/src/driver/cl_gen_driver.hpp
index 17449594..7bf23e35 100644
--- a/backend/src/driver/cl_gen_driver.hpp
+++ b/backend/src/driver/cl_gen_driver.hpp
@@ -220,7 +220,6 @@ struct GenGPUContext {
struct GenGPUCommandQueue;
struct GenGPUWorkItem { // Represent Some real work for GPU to do.
- GenGPUCommandQueue* queue; // Pointer back to queue.
list<cl_event> dependEvents;// The events we depend on.
cl_event event; // The event represent us.
cl_int state; // Exec state.
@@ -242,6 +241,7 @@ struct GenGPUWorkItemNDRange : public GenGPUWorkItem {
};
struct GenGPUCommandQueue {
+ cl_command_queue queue; // Pointer back to queue.
dri_bufmgr *bufmgr;
drm_intel_context *ctx;
pthread_t worker;
@@ -257,7 +257,7 @@ struct GenGPUCommandQueue {
bool waitForEvents(const cl_event* events, int num); // True means ok, False means canceled.
void waitForFlush(void);
void waitForFinish(void);
- GenGPUCommandQueue(dri_bufmgr *bufmgr, drm_intel_context *ctx);
+ GenGPUCommandQueue(dri_bufmgr *bufmgr, drm_intel_context *ctx, cl_command_queue queue);
~GenGPUCommandQueue(void);
};