/* MACHINE GENERATED FILE, DO NOT EDIT */
package org.lwjgl.opencl;
import org.lwjgl.*;
import java.nio.*;
public final class EXTDeviceFission {
/**
* Accepted as a property name in the <properties> parameter of
* clCreateSubDeviceEXT:
*/
public static final int CL_DEVICE_PARTITION_EQUALLY_EXT = 0x4050,
CL_DEVICE_PARTITION_BY_COUNTS_EXT = 0x4051,
CL_DEVICE_PARTITION_BY_NAMES_EXT = 0x4052,
CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT = 0x4053;
/**
* Accepted as a property name, when accompanying the
* CL_DEVICE_PARITION_BY_AFFINITY_DOMAIN_EXT property, in the <properties>
* parameter of clCreateSubDeviceEXT:
*/
public static final int CL_AFFINITY_DOMAIN_L1_CACHE_EXT = 0x1,
CL_AFFINITY_DOMAIN_L2_CACHE_EXT = 0x2,
CL_AFFINITY_DOMAIN_L3_CACHE_EXT = 0x3,
CL_AFFINITY_DOMAIN_L4_CACHE_EXT = 0x4,
CL_AFFINITY_DOMAIN_NUMA_EXT = 0x10,
CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT = 0x100;
/**
* Accepted as a property being queried in the <param_name> argument of
* clGetDeviceInfo:
*/
public static final int CL_DEVICE_PARENT_DEVICE_EXT = 0x4054,
CL_DEVICE_PARITION_TYPES_EXT = 0x4055,
CL_DEVICE_AFFINITY_DOMAINS_EXT = 0x4056,
CL_DEVICE_REFERENCE_COUNT_EXT = 0x4057,
CL_DEVICE_PARTITION_STYLE_EXT = 0x4058;
/**
* Accepted as the property list terminator in the <properties> parameter of
* clCreateSubDeviceEXT:
*/
public static final int CL_PROPERTIES_LIST_END_EXT = 0x0;
/**
* Accepted as the partition counts list terminator in the <properties>
* parameter of clCreateSubDeviceEXT:
*/
public static final int CL_PARTITION_BY_COUNTS_LIST_END_EXT = 0x0;
/**
* Accepted as the partition names list terminator in the <properties>
* parameter of clCreateSubDeviceEXT:
*/
public static final int CL_PARTITION_BY_NAMES_LIST_END_EXT = 0xFFFFFFFF;
/**
* Returned by clCreateSubDevicesEXT when the indicated partition scheme is
* supported by the implementation, but the implementation can not further
* partition the device in this way.
*/
public static final int CL_DEVICE_PARTITION_FAILED_EXT = 0xFFFFFBDF;
/**
* Returned by clCreateSubDevicesEXT when the total number of compute units
* requested exceeds CL_DEVICE_MAX_COMPUTE_UNITS, or the number of compute
* units for any one sub-device is less than 1.
*/
public static final int CL_INVALID_PARTITION_COUNT_EXT = 0xFFFFFBDE;
/**
* Returned by clCreateSubDevicesEXT when a compute unit name appearing in a
* name list following CL_DEVICE_PARTITION_BY_NAMES_EXT is not in range.
*/
public static final int CL_INVALID_PARTITION_NAME_EXT = 0xFFFFFBDD;
private EXTDeviceFission() {}
public static int clRetainDeviceEXT(CLDevice device) {
long function_pointer = CLCapabilities.clRetainDeviceEXT;
BufferChecks.checkFunctionAddress(function_pointer);
int __result = nclRetainDeviceEXT(device.getPointer(), function_pointer);
if ( __result == CL10.CL_SUCCESS ) device.retain();
return __result;
}
static native int nclRetainDeviceEXT(long device, long function_pointer);
/**
* Warning: LWJGL will not automatically release any objects associated with sub-devices.
* The user is responsible for tracking and releasing everything prior to calling this method.
* <p>
* @param device the parent CLDevice
* <p>
* @return the error code
*/
public static int clReleaseDeviceEXT(CLDevice device) {
long function_pointer = CLCapabilities.clReleaseDeviceEXT;
BufferChecks.checkFunctionAddress(function_pointer);
APIUtil.releaseObjects(device);
int __result = nclReleaseDeviceEXT(device.getPointer(), function_pointer);
if ( __result == CL10.CL_SUCCESS ) device.release();
return __result;
}
static native int nclReleaseDeviceEXT(long device, long function_pointer);
public static int clCreateSubDevicesEXT(CLDevice in_device, LongBuffer properties, PointerBuffer out_devices, IntBuffer num_devices) {
long function_pointer = CLCapabilities.clCreateSubDevicesEXT;
BufferChecks.checkFunctionAddress(function_pointer);
BufferChecks.checkDirect(properties);
BufferChecks.checkNullTerminated(properties);
if (out_devices != null)
BufferChecks.checkDirect(out_devices);
if (num_devices != null)
BufferChecks.checkBuffer(num_devices, 1);
int __result = nclCreateSubDevicesEXT(in_device.getPointer(), MemoryUtil.getAddress(properties), (out_devices == null ? 0 : out_devices.remaining()), MemoryUtil.getAddressSafe(out_devices), MemoryUtil.getAddressSafe(num_devices), function_pointer);
if ( __result == CL10.CL_SUCCESS && out_devices != null ) in_device.registerSubCLDevices(out_devices);
return __result;
}
static native int nclCreateSubDevicesEXT(long in_device, long properties, int out_devices_num_entries, long out_devices, long num_devices, long function_pointer);
}