org.lwjgl.opencl.CL30 Maven / Gradle / Ivy
Show all versions of lwjgl-opencl Show documentation
/*
* Copyright LWJGL. All rights reserved.
* License terms: https://www.lwjgl.org/license
* MACHINE GENERATED FILE, DO NOT EDIT
*/
package org.lwjgl.opencl;
import javax.annotation.*;
import java.nio.*;
import org.lwjgl.system.*;
import static org.lwjgl.system.Checks.*;
import static org.lwjgl.system.JNI.*;
import static org.lwjgl.system.MemoryUtil.*;
/** The core OpenCL 3.0 functionality. */
public class CL30 extends CL22 {
/** OpenCL Version. */
public static final int CL_VERSION_3_0 = 1;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetPlatformInfo GetPlatformInfo}, returns a {@code cl_version} value.
*
* Returns the detailed (major, minor, patch) version supported by the platform. The major and minor version numbers returned must match those returned
* via {@link CL10#CL_PLATFORM_VERSION PLATFORM_VERSION}.
*/
public static final int CL_PLATFORM_NUMERIC_VERSION = 0x906;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetPlatformInfo GetPlatformInfo}, returns a {@code cl_name_version[]} value.
*
* Returns an array of description (name and version) structures that lists all the extensions supported by the platform. The same extension name must not
* be reported more than once. The list of extensions reported must match the list reported via {@link CL10#CL_PLATFORM_EXTENSIONS PLATFORM_EXTENSIONS}.
*/
public static final int CL_PLATFORM_EXTENSIONS_WITH_VERSION = 0x907;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_version} value.
*
* Returns the detailed (major, minor, patch) version supported by the device. The major and minor version numbers returned must match those returned via
* {@link CL10#CL_DEVICE_VERSION DEVICE_VERSION}.
*/
public static final int CL_DEVICE_NUMERIC_VERSION = 0x105E;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_name_version[]} value.
*
* Returns an array of description (name and version) structures. The same extension name must not be reported more than once. The list of extensions
* reported must match the list reported via {@link CL10#CL_DEVICE_EXTENSIONS DEVICE_EXTENSIONS}. See {@code CL_DEVICE_EXTENSIONS} for a list of extensions that are required to be
* reported for a given OpenCL version.
*/
public static final int CL_DEVICE_EXTENSIONS_WITH_VERSION = 0x1060;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_name_version[]} value.
*
* Returns an array of descriptions (name and version) for all supported intermediate languages. Intermediate languages with the same name may be reported
* more than once but each name and major/minor version combination may only be reported once. The list of intermediate languages reported must match the
* list reported via {@link CL21#CL_DEVICE_IL_VERSION DEVICE_IL_VERSION}.
*
* For an OpenCL 2.1 or 2.2 device, at least one version of SPIR-V must be reported.
*/
public static final int CL_DEVICE_ILS_WITH_VERSION = 0x1061;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_name_version[]} value.
*
* Returns an array of descriptions for the built-in kernels supported by the device. Each built-in kernel may only be reported once. The list of reported
* kernels must match the list returned via {@link CL12#CL_DEVICE_BUILT_IN_KERNELS DEVICE_BUILT_IN_KERNELS}.
*/
public static final int CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION = 0x1062;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_device_atomic_capabilities} value.
*
* Describes the various memory orders and scopes that the device supports for atomic memory operations. This is a bit-field that describes a combination
* of the following values:
*
*
* - {@link #CL_DEVICE_ATOMIC_ORDER_RELAXED DEVICE_ATOMIC_ORDER_RELAXED} - Support for the relaxed memory order.
* - {@link #CL_DEVICE_ATOMIC_ORDER_ACQ_REL DEVICE_ATOMIC_ORDER_ACQ_REL} - Support for the acquire, release, and acquire-release memory orders.
* - {@link #CL_DEVICE_ATOMIC_ORDER_SEQ_CST DEVICE_ATOMIC_ORDER_SEQ_CST} - Support for the sequentially consistent memory order.
*
*
* Because atomic memory orders are hierarchical, a device that supports a strong memory order must also support all weaker memory orders.
*
*
* - {@link #CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM DEVICE_ATOMIC_SCOPE_WORK_ITEM} - Support for memory ordering constraints that apply to a single work item.
* - {@link #CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP DEVICE_ATOMIC_SCOPE_WORK_GROUP} - Support for memory ordering constraints that apply to all work-items in a work-group.
* - {@link #CL_DEVICE_ATOMIC_SCOPE_DEVICE DEVICE_ATOMIC_SCOPE_DEVICE} - Support for memory ordering constraints that apply to all work-items executing on the device.
* - {@link #CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES DEVICE_ATOMIC_SCOPE_ALL_DEVICES} - Support for memory ordering constraints that apply to all work-items executing across all devices that can share
* SVM memory with each other and the host process.
*
*
* Because atomic scopes are hierarchical, a device that supports a wide scope must also support all narrower scopes, except for the work-item scope, which is a special case.
*
* The mandated minimum capability is:
*
*
* CL_DEVICE_ATOMIC_ORDER_RELAXED |
* CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP
*/
public static final int CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES = 0x1063;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_device_atomic_capabilities} value.
*
* Describes the various memory orders and scopes that the device supports for atomic fence operations. This is a bit-field that has the same set of
* possible values as described for {@link #CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES DEVICE_ATOMIC_MEMORY_CAPABILITIES}.
*
* The mandated minimum capability is:
*
*
* CL_DEVICE_ATOMIC_ORDER_RELAXED |
* CL_DEVICE_ATOMIC_ORDER_ACQ_REL |
* CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP
*/
public static final int CL_DEVICE_ATOMIC_FENCE_CAPABILITIES = 0x1064;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_bool} value.
*
* Is {@link CL10#CL_TRUE TRUE} if the device supports non-uniform work groups, and {@link CL10#CL_FALSE FALSE} otherwise.
*/
public static final int CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT = 0x1065;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_name_version[]} value.
*
* Returns an array of name, version descriptions listing all the versions of OpenCL C supported by the compiler for the device. In each returned
* description structure, the name field is required to be "OpenCL C". The list may include both newer non-backwards compatible OpenCL C versions, such as
* OpenCL C 3.0, and older OpenCL C versions with mandatory backwards compatibility. The version returned by {@link CL11#CL_DEVICE_OPENCL_C_VERSION DEVICE_OPENCL_C_VERSION} is required to be
* present in the list.
*
* For devices that support compilation from OpenCL C source:
*
* Because OpenCL 3.0 is backwards compatible with OpenCL C 1.2, and OpenCL C 1.2 is backwards compatible with OpenCL C 1.1 and OpenCL C 1.0, support for
* at least OpenCL C 3.0, OpenCL C 1.2, OpenCL C 1.1, and OpenCL C 1.0 is required for an OpenCL 3.0 device.
*
* Support for OpenCL C 2.0, OpenCL C 1.2, OpenCL C 1.1, and OpenCL C 1.0 is required for an OpenCL 2.0, OpenCL 2.1, or OpenCL 2.2 device.
*
* Support for OpenCL C 1.2, OpenCL C 1.1, and OpenCL C 1.0 is required for an OpenCL 1.2 device.
*
* Support for OpenCL C 1.1 and OpenCL C 1.0 is required for an OpenCL 1.1 device.
*
* Support for at least OpenCL C 1.0 is required for an OpenCL 1.0 device.
*
* For devices that do not support compilation from OpenCL C source, this query may return an empty array.
*/
public static final int CL_DEVICE_OPENCL_C_ALL_VERSIONS = 0x1066;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code size_t} value.
*
* Returns the preferred multiple of work-group size for the given device. This is a performance hint intended as a guide when specifying the local work
* size argument to {@link CL10#clEnqueueNDRangeKernel EnqueueNDRangeKernel}.
*
* (Refer also to {@link CL10#clGetKernelWorkGroupInfo GetKernelWorkGroupInfo} where {@link CL11#CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE} can return a different value to
* {@code CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE} which may be more optimal.)
*/
public static final int CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE = 0x1067;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_bool} value.
*
* Is {@link CL10#CL_TRUE TRUE} if the device supports work group collective functions e.g. {@code work_group_broadcast}, {@code work_group_reduce}, and
* {@code work_group_scan}, and {@link CL10#CL_FALSE FALSE} otherwise.
*/
public static final int CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT = 0x1068;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_bool} value.
*
* Is {@link CL10#CL_TRUE TRUE} if the device supports the generic address space and its associated built-in functions, and {@link CL10#CL_FALSE FALSE} otherwise.
*/
public static final int CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT = 0x1069;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_name_version[]} value.
*
* Returns an array of optional OpenCL C features supported by the compiler for the device alongside the OpenCL C version that introduced the feature
* macro. For example, if a compiler supports an OpenCL C 3.0 feature, the returned name will be the full name of the OpenCL C feature macro, and the
* returned version will be 3.0.0.
*
* For devices that do not support compilation from OpenCL C source, this query may return an empty array.
*/
public static final int CL_DEVICE_OPENCL_C_FEATURES = 0x106F;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_device_device_enqueue_capabilities} value.
*
* Describes device-side enqueue capabilities of the device. This is a bit-field that describes one or more of the following values:
*
*
* - {@link #CL_DEVICE_QUEUE_SUPPORTED DEVICE_QUEUE_SUPPORTED} - Device supports device-side enqueue and on-device queues.
* - {@link #CL_DEVICE_QUEUE_REPLACEABLE_DEFAULT DEVICE_QUEUE_REPLACEABLE_DEFAULT} - Device supports a replaceable default on-device queue.
*
*
* If {@code CL_DEVICE_QUEUE_REPLACEABLE_DEFAULT} is set, {@code CL_DEVICE_QUEUE_SUPPORTED} must also be set.
*
* Devices that set {@code CL_DEVICE_QUEUE_SUPPORTED} for {@code CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES} must also return {@link CL10#CL_TRUE TRUE} for
* {@link #CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT}.
*/
public static final int CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES = 0x1070;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code cl_bool} value.
*
* Is {@link CL10#CL_TRUE TRUE} if the device supports pipes, and CL_FALSE otherwise.
*
* Devices that return {@link CL10#CL_TRUE TRUE} for {@code CL_DEVICE_PIPE_SUPPORT} must also return {@code CL_TRUE} for {@link #CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT}.
*/
public static final int CL_DEVICE_PIPE_SUPPORT = 0x1071;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetDeviceInfo GetDeviceInfo}, returns a {@code char[]} value.
*
* Returns the latest version of the conformance test suite that this device has fully passed in accordance with the official conformance process.
*/
public static final int CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED = 0x1072;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetCommandQueueInfo GetCommandQueueInfo}, returns a {@code cl_queue_properties[]} value.
*
* Return the properties argument specified in {@link CL20#clCreateCommandQueueWithProperties CreateCommandQueueWithProperties}.
*
* If the properties argument specified in {@code clCreateCommandQueueWithProperties} used to create {@code command_queue} was not {@code NULL}, the
* implementation must return the values specified in the properties argument in the same order and without including additional properties.
*
* If {@code command_queue} was created using {@link CL10#clCreateCommandQueue CreateCommandQueue}, or if the properties argument specified in {@code clCreateCommandQueueWithProperties}
* was {@code NULL}, the implementation must return {@code param_value_size_ret} equal to 0, indicating that there are no properties to be returned.
*/
public static final int CL_QUEUE_PROPERTIES_ARRAY = 0x1098;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetMemObjectInfo GetMemObjectInfo}, returns a {@code cl_mem_properties[]} value.
*
* Return the {@code properties} argument specified in {@link #clCreateBufferWithProperties CreateBufferWithProperties} or {@link #clCreateImageWithProperties CreateImageWithProperties}.
*
* If the {@code properties} argument specified in {@code clCreateBufferWithProperties} or {@code clCreateImageWithProperties} used to create
* {@code memobj} was not {@code NULL}, the implementation must return the values specified in the {@code properties} argument in the same order and without
* including additional properties.
*
* If {@code memobj} was created using {@link CL10#clCreateBuffer CreateBuffer}, {@link CL11#clCreateSubBuffer CreateSubBuffer}, {@link CL12#clCreateImage CreateImage}, {@link CL10#clCreateImage2D CreateImage2D}, or {@link CL10#clCreateImage3D CreateImage3D}, or if the
* {@code properties} argument specified in {@code clCreateBufferWithProperties} or {@code clCreateImageWithProperties} was {@code NULL}, the implementation must
* return {@code param_value_size_ret} equal to 0, indicating that there are no properties to be returned.
*/
public static final int CL_MEM_PROPERTIES = 0x110A;
/**
* Accepted as the {@code param_name} parameter of {@link CL20#clGetPipeInfo GetPipeInfo}, returns a {@code cl_pipe_properties[]} value.
*
* Return the {@code properties} argument specified in {@link CL20#clCreatePipe CreatePipe}.
*
* If the {@code properties} argument specified in {@code clCreatePipe} used to create pipe was not {@code NULL}, the implementation must return the values
* specified in the {@code properties} argument in the same order and without including additional properties.
*
* If the {@code properties} argument specified in {@code clCreatePipe} used to create pipe was {@code NULL}, the implementation must return
* {@code param_value_size_ret} equal to 0, indicating that there are no properties to be returned.
*/
public static final int CL_PIPE_PROPERTIES = 0x1122;
/**
* Accepted as the {@code param_name} parameter of {@link CL10#clGetSamplerInfo GetSamplerInfo}, returns a {@code cl_sampler_properties[]} value.
*
* Return the {@code properties} argument specified in {@link CL20#clCreateSamplerWithProperties CreateSamplerWithProperties}.
*
* If the {@code properties} argument specified in {@code clCreateSamplerWithProperties} used to create sampler was not {@code NULL}, the implementation must
* return the values specified in the {@code properties} argument in the same order and without including additional properties.
*
* If {@code sampler} was created using {@link CL10#clCreateSampler CreateSampler}, or if the {@code properties} argument specified in {@code clCreateSamplerWithProperties} was
* {@code NULL}, the implementation must return {@code param_value_size_ret} equal to 0, indicating that there are no properties to be returned.
*/
public static final int CL_SAMPLER_PROPERTIES = 0x1158;
/** {@code cl_command_type} */
public static final int CL_COMMAND_SVM_MIGRATE_MEM = 0x120E;
/** {@code cl_device_atomic_capabilities} - bitfield */
public static final int
CL_DEVICE_ATOMIC_ORDER_RELAXED = (1 << 0),
CL_DEVICE_ATOMIC_ORDER_ACQ_REL = (1 << 1),
CL_DEVICE_ATOMIC_ORDER_SEQ_CST = (1 << 2),
CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM = (1 << 3),
CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP = (1 << 4),
CL_DEVICE_ATOMIC_SCOPE_DEVICE = (1 << 5),
CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES = (1 << 6);
/** {@code cl_device_device_enqueue_capabilities} - bitfield */
public static final int
CL_DEVICE_QUEUE_SUPPORTED = (1 << 0),
CL_DEVICE_QUEUE_REPLACEABLE_DEFAULT = (1 << 1);
/** {@code cl_version} constants */
public static final int
CL_VERSION_MAJOR_BITS = 10,
CL_VERSION_MINOR_BITS = 10,
CL_VERSION_PATCH_BITS = 12,
CL_VERSION_MAJOR_MASK = ((1 << CL_VERSION_MAJOR_BITS) - 1),
CL_VERSION_MINOR_MASK = ((1 << CL_VERSION_MINOR_BITS) - 1),
CL_VERSION_PATCH_MASK = ((1 << CL_VERSION_PATCH_BITS) - 1);
protected CL30() {
throw new UnsupportedOperationException();
}
// --- [ CL_VERSION_MAJOR ] ---
/**
* Extracts the {@code major} version from a packed {@code cl_version}.
*
* @param version a packed {@code cl_version}
*
* @see Reference Page
*/
@NativeType("uint32_t")
public static int CL_VERSION_MAJOR(@NativeType("uint32_t") int version) {
return version >>> (CL_VERSION_MINOR_BITS + CL_VERSION_PATCH_BITS);
}
// --- [ CL_VERSION_MINOR ] ---
/**
* Extracts the {@code minor} version from a packed {@code cl_version}.
*
* @param version a packed {@code cl_version}
*
* @see Reference Page
*/
@NativeType("uint32_t")
public static int CL_VERSION_MINOR(@NativeType("uint32_t") int version) {
return (version >>> CL_VERSION_PATCH_BITS) & CL_VERSION_MINOR_MASK;
}
// --- [ CL_VERSION_PATCH ] ---
/**
* Extracts the {@code patch} version from a packed {@code cl_version}.
*
* @param version a packed {@code cl_version}
*
* @see Reference Page
*/
@NativeType("uint32_t")
public static int CL_VERSION_PATCH(@NativeType("uint32_t") int version) {
return version & CL_VERSION_PATCH_MASK;
}
// --- [ CL_MAKE_VERSION ] ---
/**
* Returns a packed {@code cl_version} from a major, minor and patch version.
*
* @param major the major version
* @param minor the minor version
* @param patch the patch version
*
* @see Reference Page
*/
@NativeType("uint32_t")
public static int CL_MAKE_VERSION(@NativeType("uint32_t") int major, @NativeType("uint32_t") int minor, @NativeType("uint32_t") int patch) {
return ((major & CL_VERSION_MAJOR_MASK) << (CL_VERSION_MINOR_BITS + CL_VERSION_PATCH_BITS)) |
((minor & CL_VERSION_MINOR_MASK) << CL_VERSION_PATCH_BITS) |
(patch & CL_VERSION_PATCH_MASK);
}
// --- [ clSetContextDestructorCallback ] ---
/** Unsafe version of: {@link #clSetContextDestructorCallback SetContextDestructorCallback} */
public static int nclSetContextDestructorCallback(long context, long pfn_notify, long user_data) {
long __functionAddress = CL.getICD().clSetContextDestructorCallback;
if (CHECKS) {
check(__functionAddress);
check(context);
}
return callPPPI(context, pfn_notify, user_data, __functionAddress);
}
/**
* Registers a callback function with a context that is called when the context is destroyed.
*
* Each call to {@code clSetContextDestructorCallback} registers the specified callback function on a destructor callback stack associated with context.
* The registered callback functions are called in the reverse order in which they were registered. If a context callback function was specified when
* context was created, it will not be called after any context destructor callback is called. Therefore, the context destructor callback provides a
* mechanism for an application to safely re-use or free any {@code user_data} specified for the context callback function when context was created.
*
* @param context specifies the OpenCL context to register the callback to
* @param pfn_notify the callback function to register.
*
* This callback function may be called asynchronously by the OpenCL implementation. It is the application’s responsibility to ensure that the
* callback function is thread-safe.
* @param user_data will be passed as the {@code user_data} argument when {@code pfn_notify} is called. {@code user_data} can be {@code NULL}.
*
* @return {@link CL10#CL_SUCCESS SUCCESS} if the function is executed successfully. Otherwise, it returns one of the following errors:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if {@code pfn_notify} is {@code NULL}.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_int")
public static int clSetContextDestructorCallback(@NativeType("cl_context") long context, @NativeType("void (*) (cl_context, void *)") CLContextDestructorCallbackI pfn_notify, @NativeType("void *") long user_data) {
return nclSetContextDestructorCallback(context, pfn_notify.address(), user_data);
}
// --- [ clCreateBufferWithProperties ] ---
/**
* Unsafe version of: {@link #clCreateBufferWithProperties CreateBufferWithProperties}
*
* @param size the size in bytes of the buffer memory object to be allocated
*/
public static long nclCreateBufferWithProperties(long context, long properties, long flags, long size, long host_ptr, long errcode_ret) {
long __functionAddress = CL.getICD().clCreateBufferWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
}
return callPPJPPPP(context, properties, flags, size, host_ptr, errcode_ret, __functionAddress);
}
/**
* Creates a buffer object with additional properties.
*
* If {@code clCreateBufferWithProperties} is called with {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} set in its {@code flags} argument, the contents of the memory pointed to by
* {@code host_ptr} at the time of the {@code clCreateBufferWithProperties} call define the initial contents of the buffer object.
*
* If {@code clCreateBufferWithProperties} is called with a pointer returned by {@link CL20#clSVMAlloc SVMAlloc} as its {@code host_ptr} argument, and
* {@code CL_MEM_USE_HOST_PTR} is set in its {@code flags} argument, {@code clCreateBufferWithProperties} will succeed and return a valid non-zero buffer
* object as long as the {@code size} argument is no larger than the size argument passed in the original {@code clSVMAlloc} call. The new buffer object
* returned has the shared memory as the underlying storage. Locations in the buffers underlying shared memory can be operated on using atomic operations
* to the devices level of support as defined in the memory model.
*
* @param context a valid OpenCL context used to create the buffer object
* @param properties an optional list of properties for the buffer object and their corresponding values.
*
* The list is terminated with the special property 0. If no properties are required, {@code properties} may be {@code NULL}.
* @param flags a bit-field that is used to specify allocation and usage information about the image memory object being created. One of:
{@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE} {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY} {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS}"
* @param size the size in bytes of the buffer memory object to be allocated
* @param errcode_ret will return an appropriate error code. If {@code errcode_ret} is {@code NULL}, no error code is returned.
*
* @return a valid non-zero buffer object and {@code errcode_ret} is set to {@link CL10#CL_SUCCESS SUCCESS} if the buffer object is created successfully. Otherwise, it returns a {@code NULL} value
* with one of the following error values returned in {@code errcode_ret}:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL11#CL_INVALID_PROPERTY INVALID_PROPERTY} if a property name in {@code properties} is not a supported property name, if the value specified for a supported property name
* is not valid, or if the same property name is specified more than once.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if values specified in {@code flags} are not valid.
* - {@link CL10#CL_INVALID_BUFFER_SIZE INVALID_BUFFER_SIZE} if {@code size} is 0 or if {@code size} is greater than {@link CL10#CL_DEVICE_MAX_MEM_ALLOC_SIZE DEVICE_MAX_MEM_ALLOC_SIZE} for all devices in context.
* - {@link CL10#CL_INVALID_HOST_PTR INVALID_HOST_PTR} if {@code host_ptr} is {@code NULL} and {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} or {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} are set in {@code flags} or if {@code host_ptr} is not
* {@code NULL} but {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} or {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} are not set in {@code flags}.
* - {@link CL10#CL_MEM_OBJECT_ALLOCATION_FAILURE MEM_OBJECT_ALLOCATION_FAILURE} if there is a failure to allocate memory for buffer object.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") LongBuffer properties, @NativeType("cl_mem_flags") long flags, @NativeType("size_t") long size, @Nullable @NativeType("cl_int *") IntBuffer errcode_ret) {
if (CHECKS) {
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return nclCreateBufferWithProperties(context, memAddressSafe(properties), flags, size, NULL, memAddressSafe(errcode_ret));
}
/**
* Creates a buffer object with additional properties.
*
* If {@code clCreateBufferWithProperties} is called with {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} set in its {@code flags} argument, the contents of the memory pointed to by
* {@code host_ptr} at the time of the {@code clCreateBufferWithProperties} call define the initial contents of the buffer object.
*
* If {@code clCreateBufferWithProperties} is called with a pointer returned by {@link CL20#clSVMAlloc SVMAlloc} as its {@code host_ptr} argument, and
* {@code CL_MEM_USE_HOST_PTR} is set in its {@code flags} argument, {@code clCreateBufferWithProperties} will succeed and return a valid non-zero buffer
* object as long as the {@code size} argument is no larger than the size argument passed in the original {@code clSVMAlloc} call. The new buffer object
* returned has the shared memory as the underlying storage. Locations in the buffers underlying shared memory can be operated on using atomic operations
* to the devices level of support as defined in the memory model.
*
* @param context a valid OpenCL context used to create the buffer object
* @param properties an optional list of properties for the buffer object and their corresponding values.
*
* The list is terminated with the special property 0. If no properties are required, {@code properties} may be {@code NULL}.
* @param flags a bit-field that is used to specify allocation and usage information about the image memory object being created. One of:
{@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE} {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY} {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS}"
* @param host_ptr a pointer to the buffer data that may already be allocated by the application.
*
* The size of the buffer that {@code host_ptr} points to must be greater than or equal to {@code size} bytes.
* @param errcode_ret will return an appropriate error code. If {@code errcode_ret} is {@code NULL}, no error code is returned.
*
* @return a valid non-zero buffer object and {@code errcode_ret} is set to {@link CL10#CL_SUCCESS SUCCESS} if the buffer object is created successfully. Otherwise, it returns a {@code NULL} value
* with one of the following error values returned in {@code errcode_ret}:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL11#CL_INVALID_PROPERTY INVALID_PROPERTY} if a property name in {@code properties} is not a supported property name, if the value specified for a supported property name
* is not valid, or if the same property name is specified more than once.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if values specified in {@code flags} are not valid.
* - {@link CL10#CL_INVALID_BUFFER_SIZE INVALID_BUFFER_SIZE} if {@code size} is 0 or if {@code size} is greater than {@link CL10#CL_DEVICE_MAX_MEM_ALLOC_SIZE DEVICE_MAX_MEM_ALLOC_SIZE} for all devices in context.
* - {@link CL10#CL_INVALID_HOST_PTR INVALID_HOST_PTR} if {@code host_ptr} is {@code NULL} and {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} or {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} are set in {@code flags} or if {@code host_ptr} is not
* {@code NULL} but {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} or {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} are not set in {@code flags}.
* - {@link CL10#CL_MEM_OBJECT_ALLOCATION_FAILURE MEM_OBJECT_ALLOCATION_FAILURE} if there is a failure to allocate memory for buffer object.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") LongBuffer properties, @NativeType("cl_mem_flags") long flags, @NativeType("void *") ByteBuffer host_ptr, @Nullable @NativeType("cl_int *") IntBuffer errcode_ret) {
if (CHECKS) {
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return nclCreateBufferWithProperties(context, memAddressSafe(properties), flags, host_ptr.remaining(), memAddress(host_ptr), memAddressSafe(errcode_ret));
}
/**
* Creates a buffer object with additional properties.
*
* If {@code clCreateBufferWithProperties} is called with {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} set in its {@code flags} argument, the contents of the memory pointed to by
* {@code host_ptr} at the time of the {@code clCreateBufferWithProperties} call define the initial contents of the buffer object.
*
* If {@code clCreateBufferWithProperties} is called with a pointer returned by {@link CL20#clSVMAlloc SVMAlloc} as its {@code host_ptr} argument, and
* {@code CL_MEM_USE_HOST_PTR} is set in its {@code flags} argument, {@code clCreateBufferWithProperties} will succeed and return a valid non-zero buffer
* object as long as the {@code size} argument is no larger than the size argument passed in the original {@code clSVMAlloc} call. The new buffer object
* returned has the shared memory as the underlying storage. Locations in the buffers underlying shared memory can be operated on using atomic operations
* to the devices level of support as defined in the memory model.
*
* @param context a valid OpenCL context used to create the buffer object
* @param properties an optional list of properties for the buffer object and their corresponding values.
*
* The list is terminated with the special property 0. If no properties are required, {@code properties} may be {@code NULL}.
* @param flags a bit-field that is used to specify allocation and usage information about the image memory object being created. One of:
{@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE} {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY} {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS}"
* @param host_ptr a pointer to the buffer data that may already be allocated by the application.
*
* The size of the buffer that {@code host_ptr} points to must be greater than or equal to {@code size} bytes.
* @param errcode_ret will return an appropriate error code. If {@code errcode_ret} is {@code NULL}, no error code is returned.
*
* @return a valid non-zero buffer object and {@code errcode_ret} is set to {@link CL10#CL_SUCCESS SUCCESS} if the buffer object is created successfully. Otherwise, it returns a {@code NULL} value
* with one of the following error values returned in {@code errcode_ret}:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL11#CL_INVALID_PROPERTY INVALID_PROPERTY} if a property name in {@code properties} is not a supported property name, if the value specified for a supported property name
* is not valid, or if the same property name is specified more than once.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if values specified in {@code flags} are not valid.
* - {@link CL10#CL_INVALID_BUFFER_SIZE INVALID_BUFFER_SIZE} if {@code size} is 0 or if {@code size} is greater than {@link CL10#CL_DEVICE_MAX_MEM_ALLOC_SIZE DEVICE_MAX_MEM_ALLOC_SIZE} for all devices in context.
* - {@link CL10#CL_INVALID_HOST_PTR INVALID_HOST_PTR} if {@code host_ptr} is {@code NULL} and {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} or {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} are set in {@code flags} or if {@code host_ptr} is not
* {@code NULL} but {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} or {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} are not set in {@code flags}.
* - {@link CL10#CL_MEM_OBJECT_ALLOCATION_FAILURE MEM_OBJECT_ALLOCATION_FAILURE} if there is a failure to allocate memory for buffer object.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") LongBuffer properties, @NativeType("cl_mem_flags") long flags, @NativeType("void *") ShortBuffer host_ptr, @Nullable @NativeType("cl_int *") IntBuffer errcode_ret) {
if (CHECKS) {
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return nclCreateBufferWithProperties(context, memAddressSafe(properties), flags, Integer.toUnsignedLong(host_ptr.remaining()) << 1, memAddress(host_ptr), memAddressSafe(errcode_ret));
}
/**
* Creates a buffer object with additional properties.
*
* If {@code clCreateBufferWithProperties} is called with {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} set in its {@code flags} argument, the contents of the memory pointed to by
* {@code host_ptr} at the time of the {@code clCreateBufferWithProperties} call define the initial contents of the buffer object.
*
* If {@code clCreateBufferWithProperties} is called with a pointer returned by {@link CL20#clSVMAlloc SVMAlloc} as its {@code host_ptr} argument, and
* {@code CL_MEM_USE_HOST_PTR} is set in its {@code flags} argument, {@code clCreateBufferWithProperties} will succeed and return a valid non-zero buffer
* object as long as the {@code size} argument is no larger than the size argument passed in the original {@code clSVMAlloc} call. The new buffer object
* returned has the shared memory as the underlying storage. Locations in the buffers underlying shared memory can be operated on using atomic operations
* to the devices level of support as defined in the memory model.
*
* @param context a valid OpenCL context used to create the buffer object
* @param properties an optional list of properties for the buffer object and their corresponding values.
*
* The list is terminated with the special property 0. If no properties are required, {@code properties} may be {@code NULL}.
* @param flags a bit-field that is used to specify allocation and usage information about the image memory object being created. One of:
{@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE} {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY} {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS}"
* @param host_ptr a pointer to the buffer data that may already be allocated by the application.
*
* The size of the buffer that {@code host_ptr} points to must be greater than or equal to {@code size} bytes.
* @param errcode_ret will return an appropriate error code. If {@code errcode_ret} is {@code NULL}, no error code is returned.
*
* @return a valid non-zero buffer object and {@code errcode_ret} is set to {@link CL10#CL_SUCCESS SUCCESS} if the buffer object is created successfully. Otherwise, it returns a {@code NULL} value
* with one of the following error values returned in {@code errcode_ret}:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL11#CL_INVALID_PROPERTY INVALID_PROPERTY} if a property name in {@code properties} is not a supported property name, if the value specified for a supported property name
* is not valid, or if the same property name is specified more than once.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if values specified in {@code flags} are not valid.
* - {@link CL10#CL_INVALID_BUFFER_SIZE INVALID_BUFFER_SIZE} if {@code size} is 0 or if {@code size} is greater than {@link CL10#CL_DEVICE_MAX_MEM_ALLOC_SIZE DEVICE_MAX_MEM_ALLOC_SIZE} for all devices in context.
* - {@link CL10#CL_INVALID_HOST_PTR INVALID_HOST_PTR} if {@code host_ptr} is {@code NULL} and {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} or {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} are set in {@code flags} or if {@code host_ptr} is not
* {@code NULL} but {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} or {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} are not set in {@code flags}.
* - {@link CL10#CL_MEM_OBJECT_ALLOCATION_FAILURE MEM_OBJECT_ALLOCATION_FAILURE} if there is a failure to allocate memory for buffer object.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") LongBuffer properties, @NativeType("cl_mem_flags") long flags, @NativeType("void *") IntBuffer host_ptr, @Nullable @NativeType("cl_int *") IntBuffer errcode_ret) {
if (CHECKS) {
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return nclCreateBufferWithProperties(context, memAddressSafe(properties), flags, Integer.toUnsignedLong(host_ptr.remaining()) << 2, memAddress(host_ptr), memAddressSafe(errcode_ret));
}
/**
* Creates a buffer object with additional properties.
*
* If {@code clCreateBufferWithProperties} is called with {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} set in its {@code flags} argument, the contents of the memory pointed to by
* {@code host_ptr} at the time of the {@code clCreateBufferWithProperties} call define the initial contents of the buffer object.
*
* If {@code clCreateBufferWithProperties} is called with a pointer returned by {@link CL20#clSVMAlloc SVMAlloc} as its {@code host_ptr} argument, and
* {@code CL_MEM_USE_HOST_PTR} is set in its {@code flags} argument, {@code clCreateBufferWithProperties} will succeed and return a valid non-zero buffer
* object as long as the {@code size} argument is no larger than the size argument passed in the original {@code clSVMAlloc} call. The new buffer object
* returned has the shared memory as the underlying storage. Locations in the buffers underlying shared memory can be operated on using atomic operations
* to the devices level of support as defined in the memory model.
*
* @param context a valid OpenCL context used to create the buffer object
* @param properties an optional list of properties for the buffer object and their corresponding values.
*
* The list is terminated with the special property 0. If no properties are required, {@code properties} may be {@code NULL}.
* @param flags a bit-field that is used to specify allocation and usage information about the image memory object being created. One of:
{@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE} {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY} {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS}"
* @param host_ptr a pointer to the buffer data that may already be allocated by the application.
*
* The size of the buffer that {@code host_ptr} points to must be greater than or equal to {@code size} bytes.
* @param errcode_ret will return an appropriate error code. If {@code errcode_ret} is {@code NULL}, no error code is returned.
*
* @return a valid non-zero buffer object and {@code errcode_ret} is set to {@link CL10#CL_SUCCESS SUCCESS} if the buffer object is created successfully. Otherwise, it returns a {@code NULL} value
* with one of the following error values returned in {@code errcode_ret}:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL11#CL_INVALID_PROPERTY INVALID_PROPERTY} if a property name in {@code properties} is not a supported property name, if the value specified for a supported property name
* is not valid, or if the same property name is specified more than once.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if values specified in {@code flags} are not valid.
* - {@link CL10#CL_INVALID_BUFFER_SIZE INVALID_BUFFER_SIZE} if {@code size} is 0 or if {@code size} is greater than {@link CL10#CL_DEVICE_MAX_MEM_ALLOC_SIZE DEVICE_MAX_MEM_ALLOC_SIZE} for all devices in context.
* - {@link CL10#CL_INVALID_HOST_PTR INVALID_HOST_PTR} if {@code host_ptr} is {@code NULL} and {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} or {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} are set in {@code flags} or if {@code host_ptr} is not
* {@code NULL} but {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} or {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} are not set in {@code flags}.
* - {@link CL10#CL_MEM_OBJECT_ALLOCATION_FAILURE MEM_OBJECT_ALLOCATION_FAILURE} if there is a failure to allocate memory for buffer object.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") LongBuffer properties, @NativeType("cl_mem_flags") long flags, @NativeType("void *") FloatBuffer host_ptr, @Nullable @NativeType("cl_int *") IntBuffer errcode_ret) {
if (CHECKS) {
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return nclCreateBufferWithProperties(context, memAddressSafe(properties), flags, Integer.toUnsignedLong(host_ptr.remaining()) << 2, memAddress(host_ptr), memAddressSafe(errcode_ret));
}
/**
* Creates a buffer object with additional properties.
*
* If {@code clCreateBufferWithProperties} is called with {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} set in its {@code flags} argument, the contents of the memory pointed to by
* {@code host_ptr} at the time of the {@code clCreateBufferWithProperties} call define the initial contents of the buffer object.
*
* If {@code clCreateBufferWithProperties} is called with a pointer returned by {@link CL20#clSVMAlloc SVMAlloc} as its {@code host_ptr} argument, and
* {@code CL_MEM_USE_HOST_PTR} is set in its {@code flags} argument, {@code clCreateBufferWithProperties} will succeed and return a valid non-zero buffer
* object as long as the {@code size} argument is no larger than the size argument passed in the original {@code clSVMAlloc} call. The new buffer object
* returned has the shared memory as the underlying storage. Locations in the buffers underlying shared memory can be operated on using atomic operations
* to the devices level of support as defined in the memory model.
*
* @param context a valid OpenCL context used to create the buffer object
* @param properties an optional list of properties for the buffer object and their corresponding values.
*
* The list is terminated with the special property 0. If no properties are required, {@code properties} may be {@code NULL}.
* @param flags a bit-field that is used to specify allocation and usage information about the image memory object being created. One of:
{@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE} {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY} {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS}"
* @param host_ptr a pointer to the buffer data that may already be allocated by the application.
*
* The size of the buffer that {@code host_ptr} points to must be greater than or equal to {@code size} bytes.
* @param errcode_ret will return an appropriate error code. If {@code errcode_ret} is {@code NULL}, no error code is returned.
*
* @return a valid non-zero buffer object and {@code errcode_ret} is set to {@link CL10#CL_SUCCESS SUCCESS} if the buffer object is created successfully. Otherwise, it returns a {@code NULL} value
* with one of the following error values returned in {@code errcode_ret}:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL11#CL_INVALID_PROPERTY INVALID_PROPERTY} if a property name in {@code properties} is not a supported property name, if the value specified for a supported property name
* is not valid, or if the same property name is specified more than once.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if values specified in {@code flags} are not valid.
* - {@link CL10#CL_INVALID_BUFFER_SIZE INVALID_BUFFER_SIZE} if {@code size} is 0 or if {@code size} is greater than {@link CL10#CL_DEVICE_MAX_MEM_ALLOC_SIZE DEVICE_MAX_MEM_ALLOC_SIZE} for all devices in context.
* - {@link CL10#CL_INVALID_HOST_PTR INVALID_HOST_PTR} if {@code host_ptr} is {@code NULL} and {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} or {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} are set in {@code flags} or if {@code host_ptr} is not
* {@code NULL} but {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} or {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} are not set in {@code flags}.
* - {@link CL10#CL_MEM_OBJECT_ALLOCATION_FAILURE MEM_OBJECT_ALLOCATION_FAILURE} if there is a failure to allocate memory for buffer object.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") LongBuffer properties, @NativeType("cl_mem_flags") long flags, @NativeType("void *") DoubleBuffer host_ptr, @Nullable @NativeType("cl_int *") IntBuffer errcode_ret) {
if (CHECKS) {
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return nclCreateBufferWithProperties(context, memAddressSafe(properties), flags, Integer.toUnsignedLong(host_ptr.remaining()) << 3, memAddress(host_ptr), memAddressSafe(errcode_ret));
}
// --- [ clCreateImageWithProperties ] ---
/** Unsafe version of: {@link #clCreateImageWithProperties CreateImageWithProperties} */
public static long nclCreateImageWithProperties(long context, long properties, long flags, long image_format, long image_desc, long host_ptr, long errcode_ret) {
long __functionAddress = CL.getICD().clCreateImageWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
}
return callPPJPPPPP(context, properties, flags, image_format, image_desc, host_ptr, errcode_ret, __functionAddress);
}
/**
* Creates an image object with additional properties.
*
* For a 3D image or 2D image array, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent 2D image slices or 2D images
* respectively. Each 2D image is a linear sequence of adjacent scanlines. Each scanline is a linear sequence of image elements.
*
* For a 2D image, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent scanlines. Each scanline is a linear sequence
* of image elements.
*
* For a 1D image array, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent 1D images. Each 1D image is stored as a
* single scanline which is a linear sequence of adjacent elements.
*
* For 1D image or 1D image buffer, the image data specified by {@code host_ptr} is stored as a single scanline which is a linear sequence of adjacent
* elements.
*
* @param context a valid OpenCL context used to create the image object
* @param properties an optional list of properties for the image object and their corresponding values.
*
* The list is terminated with the special property 0. If no properties are required, properties may be {@code NULL}.
* @param flags a bit-field that is used to specify allocation and usage information about the image memory object being created.
*
* For all image types except {@link CL12#CL_MEM_OBJECT_IMAGE1D_BUFFER MEM_OBJECT_IMAGE1D_BUFFER}, if the value specified for {@code flags} is 0, the default is used which is {@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE}.
*
* For {@code CL_MEM_OBJECT_IMAGE1D_BUFFER} image type, or an image created from another memory object (image or buffer), if the
* {@code CL_MEM_READ_WRITE}, {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} or {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} values are not specified in {@code flags}, they are inherited from the corresponding
* memory access qualifiers associated with {@code mem_object}. The {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR}, {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} and {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} values cannot be
* specified in {@code flags} but are inherited from the corresponding memory access qualifiers associated with {@code mem_object}. If
* {@code CL_MEM_COPY_HOST_PTR} is specified in the memory access qualifier values associated with {@code mem_object} it does not imply any additional
* copies when the image is created from {@code mem_object}. If the {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY}, {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} or {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS} values are not
* specified in {@code flags}, they are inherited from the corresponding memory access qualifiers associated with {@code mem_object}. One of:
{@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE} {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY} {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS}
* @param image_format a pointer to a structure that describes format properties of the image to be allocated.
*
* A 1D image buffer or 2D image can be created from a buffer by specifying a buffer object in the {@code image_desc→mem_object}. A 2D image can be
* created from another 2D image object by specifying an image object in the {@code image_desc→mem_object}.
* @param image_desc a pointer to a structure that describes type and dimensions of the image to be allocated
* @param host_ptr a pointer to the image data that may already be allocated by the application.
*
* Refer to table below for a description of how large the buffer that {@code host_ptr} points to must be.
*
*
* ImageType Size of buffer that {@code host_ptr} points to
* {@link CL12#CL_MEM_OBJECT_IMAGE1D MEM_OBJECT_IMAGE1D} ≥ {@code image_row_pitch}
* {@link CL12#CL_MEM_OBJECT_IMAGE1D_BUFFER MEM_OBJECT_IMAGE1D_BUFFER} ≥ {@code image_row_pitch}
* {@link CL10#CL_MEM_OBJECT_IMAGE2D MEM_OBJECT_IMAGE2D} ≥ {@code image_row_pitch * image_height}
* {@link CL10#CL_MEM_OBJECT_IMAGE3D MEM_OBJECT_IMAGE3D} ≥ {@code image_slice_pitch * image_depth}
* {@link CL12#CL_MEM_OBJECT_IMAGE1D_ARRAY MEM_OBJECT_IMAGE1D_ARRAY} ≥ {@code image_slice_pitch * image_array_size}
* {@link CL12#CL_MEM_OBJECT_IMAGE2D_ARRAY MEM_OBJECT_IMAGE2D_ARRAY} ≥ {@code image_slice_pitch * image_array_size}
*
* @param errcode_ret will return an appropriate error code. If {@code errcode_ret} is {@code NULL}, no error code is returned.
*
* @return a valid non-zero image object and the {@code errcode_ret} is set to {@link CL10#CL_SUCCESS SUCCESS} if the image object is created successfully. Otherwise, it returns a {@code NULL}
* value with one of the following error values returned in {@code errcode_ret}:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL11#CL_INVALID_PROPERTY INVALID_PROPERTY} if a property name in {@code properties} is not a supported property name, if the value specified for a supported property name
* is not valid, or if the same property name is specified more than once.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if values specified in {@code flags} are not valid.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if values specified in {@code image_format} are not valid or if {@code image_format} is {@code NULL}.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if a 2D image is created from a buffer and the row pitch and base address alignment does not follow the rules
* described for creating a 2D image from a buffer.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if a 2D image is created from a 2D image object and the rules described above are not followed.
* - {@link CL12#CL_INVALID_IMAGE_DESCRIPTOR INVALID_IMAGE_DESCRIPTOR} if values specified in {@code image_desc} are not valid or if {@code image_desc} is {@code NULL}.
* - {@link CL10#CL_INVALID_IMAGE_SIZE INVALID_IMAGE_SIZE} if image dimensions specified in {@code image_desc} exceed the maximum image dimensions for all devices in context.
* - {@link CL10#CL_INVALID_HOST_PTR INVALID_HOST_PTR} if {@code host_ptr} is {@code NULL} and {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} or {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} are set in flags or if {@code host_ptr} is not
* {@code NULL} but {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} or {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} are not set in flags.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if an image is being created from another memory object (buffer or image) under one of the following circumstances:
*
*
* - {@code mem_object} was created with {@code CL_MEM_WRITE_ONLY} and {@code flags} specifies {@code CL_MEM_READ_WRITE} or
* {@code CL_MEM_READ_ONLY},
* - {@code mem_object} was created with {@code CL_MEM_READ_ONLY} and flags specifies {@code CL_MEM_READ_WRITE} or {@code CL_MEM_WRITE_ONLY},
* - {@code flags} specifies {@code CL_MEM_USE_HOST_PTR} or {@code CL_MEM_ALLOC_HOST_PTR} or {@code CL_MEM_COPY_HOST_PTR}.
*
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if an image is being created from another memory object (buffer or image) and {@code mem_object} was created with
* {@code CL_MEM_HOST_WRITE_ONLY} and {@code flags} specifies {@code CL_MEM_HOST_READ_ONLY}, or if {@code mem_object} was created with
* {@code CL_MEM_HOST_READ_ONLY} and {@code flags} specifies {@code CL_MEM_HOST_WRITE_ONLY}, or if {@code mem_object} was created with
* {@code CL_MEM_HOST_NO_ACCESS} and {@code flags} specifies {@code CL_MEM_HOST_READ_ONLY} or {@code CL_MEM_HOST_WRITE_ONLY}.
* - {@link CL10#CL_IMAGE_FORMAT_NOT_SUPPORTED IMAGE_FORMAT_NOT_SUPPORTED} if there are no devices in context that support {@code image_format}.
* - {@link CL10#CL_MEM_OBJECT_ALLOCATION_FAILURE MEM_OBJECT_ALLOCATION_FAILURE} if there is a failure to allocate memory for image object.
* - {@link CL10#CL_INVALID_OPERATION INVALID_OPERATION} if there are no devices in context that support images.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateImageWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") LongBuffer properties, @NativeType("cl_mem_flags") long flags, @NativeType("cl_image_format const *") CLImageFormat image_format, @NativeType("cl_image_desc const *") CLImageDesc image_desc, @Nullable @NativeType("void *") ByteBuffer host_ptr, @Nullable @NativeType("cl_int *") IntBuffer errcode_ret) {
if (CHECKS) {
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return nclCreateImageWithProperties(context, memAddressSafe(properties), flags, image_format.address(), image_desc.address(), memAddressSafe(host_ptr), memAddressSafe(errcode_ret));
}
/**
* Creates an image object with additional properties.
*
* For a 3D image or 2D image array, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent 2D image slices or 2D images
* respectively. Each 2D image is a linear sequence of adjacent scanlines. Each scanline is a linear sequence of image elements.
*
* For a 2D image, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent scanlines. Each scanline is a linear sequence
* of image elements.
*
* For a 1D image array, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent 1D images. Each 1D image is stored as a
* single scanline which is a linear sequence of adjacent elements.
*
* For 1D image or 1D image buffer, the image data specified by {@code host_ptr} is stored as a single scanline which is a linear sequence of adjacent
* elements.
*
* @param context a valid OpenCL context used to create the image object
* @param properties an optional list of properties for the image object and their corresponding values.
*
* The list is terminated with the special property 0. If no properties are required, properties may be {@code NULL}.
* @param flags a bit-field that is used to specify allocation and usage information about the image memory object being created.
*
* For all image types except {@link CL12#CL_MEM_OBJECT_IMAGE1D_BUFFER MEM_OBJECT_IMAGE1D_BUFFER}, if the value specified for {@code flags} is 0, the default is used which is {@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE}.
*
* For {@code CL_MEM_OBJECT_IMAGE1D_BUFFER} image type, or an image created from another memory object (image or buffer), if the
* {@code CL_MEM_READ_WRITE}, {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} or {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} values are not specified in {@code flags}, they are inherited from the corresponding
* memory access qualifiers associated with {@code mem_object}. The {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR}, {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} and {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} values cannot be
* specified in {@code flags} but are inherited from the corresponding memory access qualifiers associated with {@code mem_object}. If
* {@code CL_MEM_COPY_HOST_PTR} is specified in the memory access qualifier values associated with {@code mem_object} it does not imply any additional
* copies when the image is created from {@code mem_object}. If the {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY}, {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} or {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS} values are not
* specified in {@code flags}, they are inherited from the corresponding memory access qualifiers associated with {@code mem_object}. One of:
{@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE} {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY} {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS}
* @param image_format a pointer to a structure that describes format properties of the image to be allocated.
*
* A 1D image buffer or 2D image can be created from a buffer by specifying a buffer object in the {@code image_desc→mem_object}. A 2D image can be
* created from another 2D image object by specifying an image object in the {@code image_desc→mem_object}.
* @param image_desc a pointer to a structure that describes type and dimensions of the image to be allocated
* @param host_ptr a pointer to the image data that may already be allocated by the application.
*
* Refer to table below for a description of how large the buffer that {@code host_ptr} points to must be.
*
*
* ImageType Size of buffer that {@code host_ptr} points to
* {@link CL12#CL_MEM_OBJECT_IMAGE1D MEM_OBJECT_IMAGE1D} ≥ {@code image_row_pitch}
* {@link CL12#CL_MEM_OBJECT_IMAGE1D_BUFFER MEM_OBJECT_IMAGE1D_BUFFER} ≥ {@code image_row_pitch}
* {@link CL10#CL_MEM_OBJECT_IMAGE2D MEM_OBJECT_IMAGE2D} ≥ {@code image_row_pitch * image_height}
* {@link CL10#CL_MEM_OBJECT_IMAGE3D MEM_OBJECT_IMAGE3D} ≥ {@code image_slice_pitch * image_depth}
* {@link CL12#CL_MEM_OBJECT_IMAGE1D_ARRAY MEM_OBJECT_IMAGE1D_ARRAY} ≥ {@code image_slice_pitch * image_array_size}
* {@link CL12#CL_MEM_OBJECT_IMAGE2D_ARRAY MEM_OBJECT_IMAGE2D_ARRAY} ≥ {@code image_slice_pitch * image_array_size}
*
* @param errcode_ret will return an appropriate error code. If {@code errcode_ret} is {@code NULL}, no error code is returned.
*
* @return a valid non-zero image object and the {@code errcode_ret} is set to {@link CL10#CL_SUCCESS SUCCESS} if the image object is created successfully. Otherwise, it returns a {@code NULL}
* value with one of the following error values returned in {@code errcode_ret}:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL11#CL_INVALID_PROPERTY INVALID_PROPERTY} if a property name in {@code properties} is not a supported property name, if the value specified for a supported property name
* is not valid, or if the same property name is specified more than once.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if values specified in {@code flags} are not valid.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if values specified in {@code image_format} are not valid or if {@code image_format} is {@code NULL}.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if a 2D image is created from a buffer and the row pitch and base address alignment does not follow the rules
* described for creating a 2D image from a buffer.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if a 2D image is created from a 2D image object and the rules described above are not followed.
* - {@link CL12#CL_INVALID_IMAGE_DESCRIPTOR INVALID_IMAGE_DESCRIPTOR} if values specified in {@code image_desc} are not valid or if {@code image_desc} is {@code NULL}.
* - {@link CL10#CL_INVALID_IMAGE_SIZE INVALID_IMAGE_SIZE} if image dimensions specified in {@code image_desc} exceed the maximum image dimensions for all devices in context.
* - {@link CL10#CL_INVALID_HOST_PTR INVALID_HOST_PTR} if {@code host_ptr} is {@code NULL} and {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} or {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} are set in flags or if {@code host_ptr} is not
* {@code NULL} but {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} or {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} are not set in flags.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if an image is being created from another memory object (buffer or image) under one of the following circumstances:
*
*
* - {@code mem_object} was created with {@code CL_MEM_WRITE_ONLY} and {@code flags} specifies {@code CL_MEM_READ_WRITE} or
* {@code CL_MEM_READ_ONLY},
* - {@code mem_object} was created with {@code CL_MEM_READ_ONLY} and flags specifies {@code CL_MEM_READ_WRITE} or {@code CL_MEM_WRITE_ONLY},
* - {@code flags} specifies {@code CL_MEM_USE_HOST_PTR} or {@code CL_MEM_ALLOC_HOST_PTR} or {@code CL_MEM_COPY_HOST_PTR}.
*
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if an image is being created from another memory object (buffer or image) and {@code mem_object} was created with
* {@code CL_MEM_HOST_WRITE_ONLY} and {@code flags} specifies {@code CL_MEM_HOST_READ_ONLY}, or if {@code mem_object} was created with
* {@code CL_MEM_HOST_READ_ONLY} and {@code flags} specifies {@code CL_MEM_HOST_WRITE_ONLY}, or if {@code mem_object} was created with
* {@code CL_MEM_HOST_NO_ACCESS} and {@code flags} specifies {@code CL_MEM_HOST_READ_ONLY} or {@code CL_MEM_HOST_WRITE_ONLY}.
* - {@link CL10#CL_IMAGE_FORMAT_NOT_SUPPORTED IMAGE_FORMAT_NOT_SUPPORTED} if there are no devices in context that support {@code image_format}.
* - {@link CL10#CL_MEM_OBJECT_ALLOCATION_FAILURE MEM_OBJECT_ALLOCATION_FAILURE} if there is a failure to allocate memory for image object.
* - {@link CL10#CL_INVALID_OPERATION INVALID_OPERATION} if there are no devices in context that support images.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateImageWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") LongBuffer properties, @NativeType("cl_mem_flags") long flags, @NativeType("cl_image_format const *") CLImageFormat image_format, @NativeType("cl_image_desc const *") CLImageDesc image_desc, @Nullable @NativeType("void *") ShortBuffer host_ptr, @Nullable @NativeType("cl_int *") IntBuffer errcode_ret) {
if (CHECKS) {
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return nclCreateImageWithProperties(context, memAddressSafe(properties), flags, image_format.address(), image_desc.address(), memAddressSafe(host_ptr), memAddressSafe(errcode_ret));
}
/**
* Creates an image object with additional properties.
*
* For a 3D image or 2D image array, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent 2D image slices or 2D images
* respectively. Each 2D image is a linear sequence of adjacent scanlines. Each scanline is a linear sequence of image elements.
*
* For a 2D image, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent scanlines. Each scanline is a linear sequence
* of image elements.
*
* For a 1D image array, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent 1D images. Each 1D image is stored as a
* single scanline which is a linear sequence of adjacent elements.
*
* For 1D image or 1D image buffer, the image data specified by {@code host_ptr} is stored as a single scanline which is a linear sequence of adjacent
* elements.
*
* @param context a valid OpenCL context used to create the image object
* @param properties an optional list of properties for the image object and their corresponding values.
*
* The list is terminated with the special property 0. If no properties are required, properties may be {@code NULL}.
* @param flags a bit-field that is used to specify allocation and usage information about the image memory object being created.
*
* For all image types except {@link CL12#CL_MEM_OBJECT_IMAGE1D_BUFFER MEM_OBJECT_IMAGE1D_BUFFER}, if the value specified for {@code flags} is 0, the default is used which is {@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE}.
*
* For {@code CL_MEM_OBJECT_IMAGE1D_BUFFER} image type, or an image created from another memory object (image or buffer), if the
* {@code CL_MEM_READ_WRITE}, {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} or {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} values are not specified in {@code flags}, they are inherited from the corresponding
* memory access qualifiers associated with {@code mem_object}. The {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR}, {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} and {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} values cannot be
* specified in {@code flags} but are inherited from the corresponding memory access qualifiers associated with {@code mem_object}. If
* {@code CL_MEM_COPY_HOST_PTR} is specified in the memory access qualifier values associated with {@code mem_object} it does not imply any additional
* copies when the image is created from {@code mem_object}. If the {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY}, {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} or {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS} values are not
* specified in {@code flags}, they are inherited from the corresponding memory access qualifiers associated with {@code mem_object}. One of:
{@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE} {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY} {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS}
* @param image_format a pointer to a structure that describes format properties of the image to be allocated.
*
* A 1D image buffer or 2D image can be created from a buffer by specifying a buffer object in the {@code image_desc→mem_object}. A 2D image can be
* created from another 2D image object by specifying an image object in the {@code image_desc→mem_object}.
* @param image_desc a pointer to a structure that describes type and dimensions of the image to be allocated
* @param host_ptr a pointer to the image data that may already be allocated by the application.
*
* Refer to table below for a description of how large the buffer that {@code host_ptr} points to must be.
*
*
* ImageType Size of buffer that {@code host_ptr} points to
* {@link CL12#CL_MEM_OBJECT_IMAGE1D MEM_OBJECT_IMAGE1D} ≥ {@code image_row_pitch}
* {@link CL12#CL_MEM_OBJECT_IMAGE1D_BUFFER MEM_OBJECT_IMAGE1D_BUFFER} ≥ {@code image_row_pitch}
* {@link CL10#CL_MEM_OBJECT_IMAGE2D MEM_OBJECT_IMAGE2D} ≥ {@code image_row_pitch * image_height}
* {@link CL10#CL_MEM_OBJECT_IMAGE3D MEM_OBJECT_IMAGE3D} ≥ {@code image_slice_pitch * image_depth}
* {@link CL12#CL_MEM_OBJECT_IMAGE1D_ARRAY MEM_OBJECT_IMAGE1D_ARRAY} ≥ {@code image_slice_pitch * image_array_size}
* {@link CL12#CL_MEM_OBJECT_IMAGE2D_ARRAY MEM_OBJECT_IMAGE2D_ARRAY} ≥ {@code image_slice_pitch * image_array_size}
*
* @param errcode_ret will return an appropriate error code. If {@code errcode_ret} is {@code NULL}, no error code is returned.
*
* @return a valid non-zero image object and the {@code errcode_ret} is set to {@link CL10#CL_SUCCESS SUCCESS} if the image object is created successfully. Otherwise, it returns a {@code NULL}
* value with one of the following error values returned in {@code errcode_ret}:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL11#CL_INVALID_PROPERTY INVALID_PROPERTY} if a property name in {@code properties} is not a supported property name, if the value specified for a supported property name
* is not valid, or if the same property name is specified more than once.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if values specified in {@code flags} are not valid.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if values specified in {@code image_format} are not valid or if {@code image_format} is {@code NULL}.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if a 2D image is created from a buffer and the row pitch and base address alignment does not follow the rules
* described for creating a 2D image from a buffer.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if a 2D image is created from a 2D image object and the rules described above are not followed.
* - {@link CL12#CL_INVALID_IMAGE_DESCRIPTOR INVALID_IMAGE_DESCRIPTOR} if values specified in {@code image_desc} are not valid or if {@code image_desc} is {@code NULL}.
* - {@link CL10#CL_INVALID_IMAGE_SIZE INVALID_IMAGE_SIZE} if image dimensions specified in {@code image_desc} exceed the maximum image dimensions for all devices in context.
* - {@link CL10#CL_INVALID_HOST_PTR INVALID_HOST_PTR} if {@code host_ptr} is {@code NULL} and {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} or {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} are set in flags or if {@code host_ptr} is not
* {@code NULL} but {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} or {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} are not set in flags.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if an image is being created from another memory object (buffer or image) under one of the following circumstances:
*
*
* - {@code mem_object} was created with {@code CL_MEM_WRITE_ONLY} and {@code flags} specifies {@code CL_MEM_READ_WRITE} or
* {@code CL_MEM_READ_ONLY},
* - {@code mem_object} was created with {@code CL_MEM_READ_ONLY} and flags specifies {@code CL_MEM_READ_WRITE} or {@code CL_MEM_WRITE_ONLY},
* - {@code flags} specifies {@code CL_MEM_USE_HOST_PTR} or {@code CL_MEM_ALLOC_HOST_PTR} or {@code CL_MEM_COPY_HOST_PTR}.
*
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if an image is being created from another memory object (buffer or image) and {@code mem_object} was created with
* {@code CL_MEM_HOST_WRITE_ONLY} and {@code flags} specifies {@code CL_MEM_HOST_READ_ONLY}, or if {@code mem_object} was created with
* {@code CL_MEM_HOST_READ_ONLY} and {@code flags} specifies {@code CL_MEM_HOST_WRITE_ONLY}, or if {@code mem_object} was created with
* {@code CL_MEM_HOST_NO_ACCESS} and {@code flags} specifies {@code CL_MEM_HOST_READ_ONLY} or {@code CL_MEM_HOST_WRITE_ONLY}.
* - {@link CL10#CL_IMAGE_FORMAT_NOT_SUPPORTED IMAGE_FORMAT_NOT_SUPPORTED} if there are no devices in context that support {@code image_format}.
* - {@link CL10#CL_MEM_OBJECT_ALLOCATION_FAILURE MEM_OBJECT_ALLOCATION_FAILURE} if there is a failure to allocate memory for image object.
* - {@link CL10#CL_INVALID_OPERATION INVALID_OPERATION} if there are no devices in context that support images.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateImageWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") LongBuffer properties, @NativeType("cl_mem_flags") long flags, @NativeType("cl_image_format const *") CLImageFormat image_format, @NativeType("cl_image_desc const *") CLImageDesc image_desc, @Nullable @NativeType("void *") IntBuffer host_ptr, @Nullable @NativeType("cl_int *") IntBuffer errcode_ret) {
if (CHECKS) {
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return nclCreateImageWithProperties(context, memAddressSafe(properties), flags, image_format.address(), image_desc.address(), memAddressSafe(host_ptr), memAddressSafe(errcode_ret));
}
/**
* Creates an image object with additional properties.
*
* For a 3D image or 2D image array, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent 2D image slices or 2D images
* respectively. Each 2D image is a linear sequence of adjacent scanlines. Each scanline is a linear sequence of image elements.
*
* For a 2D image, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent scanlines. Each scanline is a linear sequence
* of image elements.
*
* For a 1D image array, the image data specified by {@code host_ptr} is stored as a linear sequence of adjacent 1D images. Each 1D image is stored as a
* single scanline which is a linear sequence of adjacent elements.
*
* For 1D image or 1D image buffer, the image data specified by {@code host_ptr} is stored as a single scanline which is a linear sequence of adjacent
* elements.
*
* @param context a valid OpenCL context used to create the image object
* @param properties an optional list of properties for the image object and their corresponding values.
*
* The list is terminated with the special property 0. If no properties are required, properties may be {@code NULL}.
* @param flags a bit-field that is used to specify allocation and usage information about the image memory object being created.
*
* For all image types except {@link CL12#CL_MEM_OBJECT_IMAGE1D_BUFFER MEM_OBJECT_IMAGE1D_BUFFER}, if the value specified for {@code flags} is 0, the default is used which is {@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE}.
*
* For {@code CL_MEM_OBJECT_IMAGE1D_BUFFER} image type, or an image created from another memory object (image or buffer), if the
* {@code CL_MEM_READ_WRITE}, {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} or {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} values are not specified in {@code flags}, they are inherited from the corresponding
* memory access qualifiers associated with {@code mem_object}. The {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR}, {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} and {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} values cannot be
* specified in {@code flags} but are inherited from the corresponding memory access qualifiers associated with {@code mem_object}. If
* {@code CL_MEM_COPY_HOST_PTR} is specified in the memory access qualifier values associated with {@code mem_object} it does not imply any additional
* copies when the image is created from {@code mem_object}. If the {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY}, {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} or {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS} values are not
* specified in {@code flags}, they are inherited from the corresponding memory access qualifiers associated with {@code mem_object}. One of:
{@link CL10#CL_MEM_READ_WRITE MEM_READ_WRITE} {@link CL10#CL_MEM_WRITE_ONLY MEM_WRITE_ONLY} {@link CL10#CL_MEM_READ_ONLY MEM_READ_ONLY} {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} {@link CL10#CL_MEM_ALLOC_HOST_PTR MEM_ALLOC_HOST_PTR} {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} {@link CL12#CL_MEM_HOST_WRITE_ONLY MEM_HOST_WRITE_ONLY} {@link CL12#CL_MEM_HOST_READ_ONLY MEM_HOST_READ_ONLY} {@link CL12#CL_MEM_HOST_NO_ACCESS MEM_HOST_NO_ACCESS}
* @param image_format a pointer to a structure that describes format properties of the image to be allocated.
*
* A 1D image buffer or 2D image can be created from a buffer by specifying a buffer object in the {@code image_desc→mem_object}. A 2D image can be
* created from another 2D image object by specifying an image object in the {@code image_desc→mem_object}.
* @param image_desc a pointer to a structure that describes type and dimensions of the image to be allocated
* @param host_ptr a pointer to the image data that may already be allocated by the application.
*
* Refer to table below for a description of how large the buffer that {@code host_ptr} points to must be.
*
*
* ImageType Size of buffer that {@code host_ptr} points to
* {@link CL12#CL_MEM_OBJECT_IMAGE1D MEM_OBJECT_IMAGE1D} ≥ {@code image_row_pitch}
* {@link CL12#CL_MEM_OBJECT_IMAGE1D_BUFFER MEM_OBJECT_IMAGE1D_BUFFER} ≥ {@code image_row_pitch}
* {@link CL10#CL_MEM_OBJECT_IMAGE2D MEM_OBJECT_IMAGE2D} ≥ {@code image_row_pitch * image_height}
* {@link CL10#CL_MEM_OBJECT_IMAGE3D MEM_OBJECT_IMAGE3D} ≥ {@code image_slice_pitch * image_depth}
* {@link CL12#CL_MEM_OBJECT_IMAGE1D_ARRAY MEM_OBJECT_IMAGE1D_ARRAY} ≥ {@code image_slice_pitch * image_array_size}
* {@link CL12#CL_MEM_OBJECT_IMAGE2D_ARRAY MEM_OBJECT_IMAGE2D_ARRAY} ≥ {@code image_slice_pitch * image_array_size}
*
* @param errcode_ret will return an appropriate error code. If {@code errcode_ret} is {@code NULL}, no error code is returned.
*
* @return a valid non-zero image object and the {@code errcode_ret} is set to {@link CL10#CL_SUCCESS SUCCESS} if the image object is created successfully. Otherwise, it returns a {@code NULL}
* value with one of the following error values returned in {@code errcode_ret}:
*
*
* - {@link CL10#CL_INVALID_CONTEXT INVALID_CONTEXT} if {@code context} is not a valid context.
* - {@link CL11#CL_INVALID_PROPERTY INVALID_PROPERTY} if a property name in {@code properties} is not a supported property name, if the value specified for a supported property name
* is not valid, or if the same property name is specified more than once.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if values specified in {@code flags} are not valid.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if values specified in {@code image_format} are not valid or if {@code image_format} is {@code NULL}.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if a 2D image is created from a buffer and the row pitch and base address alignment does not follow the rules
* described for creating a 2D image from a buffer.
* - {@link CL10#CL_INVALID_IMAGE_FORMAT_DESCRIPTOR INVALID_IMAGE_FORMAT_DESCRIPTOR} if a 2D image is created from a 2D image object and the rules described above are not followed.
* - {@link CL12#CL_INVALID_IMAGE_DESCRIPTOR INVALID_IMAGE_DESCRIPTOR} if values specified in {@code image_desc} are not valid or if {@code image_desc} is {@code NULL}.
* - {@link CL10#CL_INVALID_IMAGE_SIZE INVALID_IMAGE_SIZE} if image dimensions specified in {@code image_desc} exceed the maximum image dimensions for all devices in context.
* - {@link CL10#CL_INVALID_HOST_PTR INVALID_HOST_PTR} if {@code host_ptr} is {@code NULL} and {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} or {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} are set in flags or if {@code host_ptr} is not
* {@code NULL} but {@link CL10#CL_MEM_COPY_HOST_PTR MEM_COPY_HOST_PTR} or {@link CL10#CL_MEM_USE_HOST_PTR MEM_USE_HOST_PTR} are not set in flags.
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if an image is being created from another memory object (buffer or image) under one of the following circumstances:
*
*
* - {@code mem_object} was created with {@code CL_MEM_WRITE_ONLY} and {@code flags} specifies {@code CL_MEM_READ_WRITE} or
* {@code CL_MEM_READ_ONLY},
* - {@code mem_object} was created with {@code CL_MEM_READ_ONLY} and flags specifies {@code CL_MEM_READ_WRITE} or {@code CL_MEM_WRITE_ONLY},
* - {@code flags} specifies {@code CL_MEM_USE_HOST_PTR} or {@code CL_MEM_ALLOC_HOST_PTR} or {@code CL_MEM_COPY_HOST_PTR}.
*
* - {@link CL10#CL_INVALID_VALUE INVALID_VALUE} if an image is being created from another memory object (buffer or image) and {@code mem_object} was created with
* {@code CL_MEM_HOST_WRITE_ONLY} and {@code flags} specifies {@code CL_MEM_HOST_READ_ONLY}, or if {@code mem_object} was created with
* {@code CL_MEM_HOST_READ_ONLY} and {@code flags} specifies {@code CL_MEM_HOST_WRITE_ONLY}, or if {@code mem_object} was created with
* {@code CL_MEM_HOST_NO_ACCESS} and {@code flags} specifies {@code CL_MEM_HOST_READ_ONLY} or {@code CL_MEM_HOST_WRITE_ONLY}.
* - {@link CL10#CL_IMAGE_FORMAT_NOT_SUPPORTED IMAGE_FORMAT_NOT_SUPPORTED} if there are no devices in context that support {@code image_format}.
* - {@link CL10#CL_MEM_OBJECT_ALLOCATION_FAILURE MEM_OBJECT_ALLOCATION_FAILURE} if there is a failure to allocate memory for image object.
* - {@link CL10#CL_INVALID_OPERATION INVALID_OPERATION} if there are no devices in context that support images.
* - {@link CL10#CL_OUT_OF_RESOURCES OUT_OF_RESOURCES} if there is a failure to allocate resources required by the OpenCL implementation on the device.
* - {@link CL10#CL_OUT_OF_HOST_MEMORY OUT_OF_HOST_MEMORY} if there is a failure to allocate resources required by the OpenCL implementation on the host.
*
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateImageWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") LongBuffer properties, @NativeType("cl_mem_flags") long flags, @NativeType("cl_image_format const *") CLImageFormat image_format, @NativeType("cl_image_desc const *") CLImageDesc image_desc, @Nullable @NativeType("void *") FloatBuffer host_ptr, @Nullable @NativeType("cl_int *") IntBuffer errcode_ret) {
if (CHECKS) {
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return nclCreateImageWithProperties(context, memAddressSafe(properties), flags, image_format.address(), image_desc.address(), memAddressSafe(host_ptr), memAddressSafe(errcode_ret));
}
/**
* Array version of: {@link #clCreateBufferWithProperties CreateBufferWithProperties}
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") long[] properties, @NativeType("cl_mem_flags") long flags, @NativeType("void *") ByteBuffer host_ptr, @Nullable @NativeType("cl_int *") int[] errcode_ret) {
long __functionAddress = CL.getICD().clCreateBufferWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return callPPJPPPP(context, properties, flags, (long)host_ptr.remaining(), memAddress(host_ptr), errcode_ret, __functionAddress);
}
/**
* Array version of: {@link #clCreateBufferWithProperties CreateBufferWithProperties}
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") long[] properties, @NativeType("cl_mem_flags") long flags, @NativeType("void *") short[] host_ptr, @Nullable @NativeType("cl_int *") int[] errcode_ret) {
long __functionAddress = CL.getICD().clCreateBufferWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return callPPJPPPP(context, properties, flags, Integer.toUnsignedLong(host_ptr.length) << 1, host_ptr, errcode_ret, __functionAddress);
}
/**
* Array version of: {@link #clCreateBufferWithProperties CreateBufferWithProperties}
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") long[] properties, @NativeType("cl_mem_flags") long flags, @NativeType("void *") int[] host_ptr, @Nullable @NativeType("cl_int *") int[] errcode_ret) {
long __functionAddress = CL.getICD().clCreateBufferWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return callPPJPPPP(context, properties, flags, Integer.toUnsignedLong(host_ptr.length) << 2, host_ptr, errcode_ret, __functionAddress);
}
/**
* Array version of: {@link #clCreateBufferWithProperties CreateBufferWithProperties}
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") long[] properties, @NativeType("cl_mem_flags") long flags, @NativeType("void *") float[] host_ptr, @Nullable @NativeType("cl_int *") int[] errcode_ret) {
long __functionAddress = CL.getICD().clCreateBufferWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return callPPJPPPP(context, properties, flags, Integer.toUnsignedLong(host_ptr.length) << 2, host_ptr, errcode_ret, __functionAddress);
}
/**
* Array version of: {@link #clCreateBufferWithProperties CreateBufferWithProperties}
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateBufferWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") long[] properties, @NativeType("cl_mem_flags") long flags, @NativeType("void *") double[] host_ptr, @Nullable @NativeType("cl_int *") int[] errcode_ret) {
long __functionAddress = CL.getICD().clCreateBufferWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return callPPJPPPP(context, properties, flags, Integer.toUnsignedLong(host_ptr.length) << 3, host_ptr, errcode_ret, __functionAddress);
}
/**
* Array version of: {@link #clCreateImageWithProperties CreateImageWithProperties}
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateImageWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") long[] properties, @NativeType("cl_mem_flags") long flags, @NativeType("cl_image_format const *") CLImageFormat image_format, @NativeType("cl_image_desc const *") CLImageDesc image_desc, @Nullable @NativeType("void *") ByteBuffer host_ptr, @Nullable @NativeType("cl_int *") int[] errcode_ret) {
long __functionAddress = CL.getICD().clCreateImageWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return callPPJPPPPP(context, properties, flags, image_format.address(), image_desc.address(), memAddressSafe(host_ptr), errcode_ret, __functionAddress);
}
/**
* Array version of: {@link #clCreateImageWithProperties CreateImageWithProperties}
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateImageWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") long[] properties, @NativeType("cl_mem_flags") long flags, @NativeType("cl_image_format const *") CLImageFormat image_format, @NativeType("cl_image_desc const *") CLImageDesc image_desc, @Nullable @NativeType("void *") short[] host_ptr, @Nullable @NativeType("cl_int *") int[] errcode_ret) {
long __functionAddress = CL.getICD().clCreateImageWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return callPPJPPPPP(context, properties, flags, image_format.address(), image_desc.address(), host_ptr, errcode_ret, __functionAddress);
}
/**
* Array version of: {@link #clCreateImageWithProperties CreateImageWithProperties}
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateImageWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") long[] properties, @NativeType("cl_mem_flags") long flags, @NativeType("cl_image_format const *") CLImageFormat image_format, @NativeType("cl_image_desc const *") CLImageDesc image_desc, @Nullable @NativeType("void *") int[] host_ptr, @Nullable @NativeType("cl_int *") int[] errcode_ret) {
long __functionAddress = CL.getICD().clCreateImageWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return callPPJPPPPP(context, properties, flags, image_format.address(), image_desc.address(), host_ptr, errcode_ret, __functionAddress);
}
/**
* Array version of: {@link #clCreateImageWithProperties CreateImageWithProperties}
*
* @see Reference Page
*/
@NativeType("cl_mem")
public static long clCreateImageWithProperties(@NativeType("cl_context") long context, @Nullable @NativeType("cl_mem_properties const *") long[] properties, @NativeType("cl_mem_flags") long flags, @NativeType("cl_image_format const *") CLImageFormat image_format, @NativeType("cl_image_desc const *") CLImageDesc image_desc, @Nullable @NativeType("void *") float[] host_ptr, @Nullable @NativeType("cl_int *") int[] errcode_ret) {
long __functionAddress = CL.getICD().clCreateImageWithProperties;
if (CHECKS) {
check(__functionAddress);
check(context);
checkNTSafe(properties);
checkSafe(errcode_ret, 1);
}
return callPPJPPPPP(context, properties, flags, image_format.address(), image_desc.address(), host_ptr, errcode_ret, __functionAddress);
}
}