Added clSetKernelArg support for CLObject and __local arguments.
This commit is contained in:
parent
1b6a2e866c
commit
c7152449c2
|
@ -31,8 +31,6 @@
|
|||
*/
|
||||
package org.lwjgl.opencl;
|
||||
|
||||
import org.lwjgl.PointerWrapper;
|
||||
|
||||
/**
|
||||
* This class is a wrapper around a cl_kernel pointer.
|
||||
*
|
||||
|
@ -145,11 +143,24 @@ public final class CLKernel extends CLObjectChild<CLProgram> {
|
|||
*
|
||||
* @return this CLKernel object
|
||||
*/
|
||||
public CLKernel setArg(final int index, final PointerWrapper value) {
|
||||
public CLKernel setArg(final int index, final CLObject value) {
|
||||
util.setArg(this, index, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the size of a __local kernel argument at the specified index.
|
||||
*
|
||||
* @param index the argument index
|
||||
* @param size the argument size
|
||||
*
|
||||
* @return this CLKernel object
|
||||
*/
|
||||
public CLKernel setArgSize(final int index, final long size) {
|
||||
util.setArgSize(this, index, size);
|
||||
return this;
|
||||
}
|
||||
|
||||
// clGetKernelInfo methods
|
||||
|
||||
/**
|
||||
|
@ -225,7 +236,9 @@ public final class CLKernel extends CLObjectChild<CLProgram> {
|
|||
|
||||
void setArg(CLKernel kernel, int index, double value);
|
||||
|
||||
void setArg(CLKernel kernel, int index, PointerWrapper pointer);
|
||||
void setArg(CLKernel kernel, int index, CLObject pointer);
|
||||
|
||||
void setArgSize(CLKernel kernel, int index, long size);
|
||||
|
||||
long getWorkGroupInfoSize(CLKernel kernel, CLDevice device, int param_name);
|
||||
|
||||
|
|
|
@ -230,8 +230,12 @@ final class InfoUtilFactory {
|
|||
clSetKernelArg(kernel, index, 8, APIUtil.getBufferDouble().put(0, value));
|
||||
}
|
||||
|
||||
public void setArg(final CLKernel kernel, final int index, final PointerWrapper pointer) {
|
||||
clSetKernelArg(kernel, index, PointerBuffer.getPointerSize(), APIUtil.getBufferPointer().put(0, pointer).getBuffer());
|
||||
public void setArg(final CLKernel kernel, final int index, final CLObject value) {
|
||||
clSetKernelArg(kernel, index, value);
|
||||
}
|
||||
|
||||
public void setArgSize(final CLKernel kernel, final int index, final long size) {
|
||||
clSetKernelArg(kernel, index, size);
|
||||
}
|
||||
|
||||
protected int getInfo(final CLKernel kernel, final int param_name, final ByteBuffer param_value, final PointerBuffer param_value_size_ret) {
|
||||
|
|
|
@ -979,8 +979,8 @@ public interface CL10 {
|
|||
@cl_int
|
||||
int clSetKernelArg(@PointerWrapper("cl_kernel") CLKernel kernel,
|
||||
@cl_uint int arg_index,
|
||||
@AutoSize(value = "arg_value", canBeNull = true) @size_t long arg_size,
|
||||
@Check(canBeNull = true) @Const
|
||||
@AutoSize("arg_value") @size_t long arg_size,
|
||||
@Const
|
||||
@cl_byte
|
||||
@cl_short
|
||||
@cl_int
|
||||
|
@ -988,15 +988,31 @@ public interface CL10 {
|
|||
@cl_float
|
||||
@cl_double Buffer arg_value);
|
||||
|
||||
// This is used by CLKernelImpl. Assumes arg_value.position() == 0.
|
||||
|
||||
@Alternate("clSetKernelArg")
|
||||
@Private
|
||||
@cl_int
|
||||
int clSetKernelArg(@PointerWrapper("cl_kernel") CLKernel kernel,
|
||||
@cl_uint int arg_index,
|
||||
@Constant("PointerBuffer.getPointerSize()") @size_t long arg_size,
|
||||
@Check(canBeNull = true) @Const
|
||||
@Constant(value = "APIUtil.getBufferPointer().put(0, arg_value == null ? 0 : arg_value.getPointer()).getBuffer(), 0", keepParam = true) CLObject arg_value);
|
||||
|
||||
/** Sets the size of a __local kernel argument at the specified index. */
|
||||
@Alternate("clSetKernelArg")
|
||||
@cl_int
|
||||
int clSetKernelArg2(@PointerWrapper("cl_kernel") CLKernel kernel,
|
||||
@cl_uint int arg_index,
|
||||
@size_t long arg_size,
|
||||
@Check(value = "1") @Const Buffer arg_value);
|
||||
@Constant("null, 0") Buffer arg_value);
|
||||
|
||||
// This is used by CLKernelUtil. Assumes arg_value.position() == 0.
|
||||
|
||||
@Alternate("clSetKernelArg")
|
||||
@Private
|
||||
@cl_int
|
||||
int clSetKernelArg3(@PointerWrapper("cl_kernel") CLKernel kernel,
|
||||
@cl_uint int arg_index,
|
||||
@size_t long arg_size,
|
||||
@Constant(value = "arg_value, 0", keepParam = true) Buffer arg_value);
|
||||
|
||||
@cl_int
|
||||
int clGetKernelInfo(@PointerWrapper("cl_kernel") CLKernel kernel,
|
||||
|
|
Loading…
Reference in New Issue