[Beignet] [PATCH 3/4] Runtime: fix some piglit failures.
Zhigang Gong
zhigang.gong at intel.com
Sun Nov 24 21:11:08 PST 2013
compiler_available should be true. And when a program is retained, we should
not call build on it again.
Signed-off-by: Zhigang Gong <zhigang.gong at intel.com>
---
src/cl_gt_device.h | 2 +-
src/cl_kernel.c | 3 ---
src/cl_kernel.h | 1 -
src/cl_program.c | 3 +++
4 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/cl_gt_device.h b/src/cl_gt_device.h
index e8fa362..110988a 100644
--- a/src/cl_gt_device.h
+++ b/src/cl_gt_device.h
@@ -59,7 +59,7 @@
.profiling_timer_resolution = 80, /* ns */
.endian_little = CL_TRUE,
.available = CL_TRUE,
-.compiler_available = CL_FALSE, /* XXX */
+.compiler_available = CL_TRUE,
.execution_capabilities = CL_EXEC_KERNEL | CL_EXEC_NATIVE_KERNEL,
.queue_properties = CL_QUEUE_PROFILING_ENABLE,
.platform = NULL, /* == intel_platform (set when requested) */
diff --git a/src/cl_kernel.c b/src/cl_kernel.c
index 1869eba..803c9e5 100644
--- a/src/cl_kernel.c
+++ b/src/cl_kernel.c
@@ -44,7 +44,6 @@ cl_kernel_delete(cl_kernel k)
if (atomic_dec(&k->ref_n) > 1) return;
/* Release one reference on all bos we own */
if (k->bo) cl_buffer_unreference(k->bo);
- if (k->const_bo) cl_buffer_unreference(k->const_bo);
/* This will be true for kernels created by clCreateKernel */
if (k->ref_its_program) cl_program_delete(k->program);
/* Release the curbe if allocated */
@@ -256,7 +255,6 @@ cl_kernel_dup(cl_kernel from)
TRY_ALLOC_NO_ERR (to, CALLOC(struct _cl_kernel));
SET_ICD(to->dispatch)
to->bo = from->bo;
- to->const_bo = from->const_bo;
to->opaque = from->opaque;
to->ref_n = 1;
to->magic = CL_MAGIC_KERNEL_HEADER;
@@ -279,7 +277,6 @@ cl_kernel_dup(cl_kernel from)
/* Retain the bos */
if (from->bo) cl_buffer_reference(from->bo);
- if (from->const_bo) cl_buffer_reference(from->const_bo);
/* We retain the program destruction since this kernel (user allocated)
* depends on the program for some of its pointers
diff --git a/src/cl_kernel.h b/src/cl_kernel.h
index 6524a69..fb509a2 100644
--- a/src/cl_kernel.h
+++ b/src/cl_kernel.h
@@ -47,7 +47,6 @@ struct _cl_kernel {
uint64_t magic; /* To identify it as a kernel */
volatile int ref_n; /* We reference count this object */
cl_buffer bo; /* The code itself */
- cl_buffer const_bo; /* Buffer for all __constants values in the OCL program */
cl_program program; /* Owns this structure (and pointers) */
gbe_kernel opaque; /* (Opaque) compiler structure for the OCL kernel */
char *curbe; /* One curbe per kernel */
diff --git a/src/cl_program.c b/src/cl_program.c
index b8da052..df2f1e0 100644
--- a/src/cl_program.c
+++ b/src/cl_program.c
@@ -300,6 +300,9 @@ cl_program_build(cl_program p, const char *options)
int i = 0;
int copyed = 0;
+ if (p->ref_n > 1)
+ return CL_INVALID_OPERATION;
+
if (options) {
if(p->build_opts == NULL || strcmp(options, p->build_opts) != 0) {
if(p->build_opts) {
--
1.7.9.5
More information about the Beignet
mailing list