lwjgl/src/templates/org/lwjgl/opencl/EXT_device_fission.java

143 lines
5.3 KiB
Java

/*
* Copyright (c) 2002-2010 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opencl;
import org.lwjgl.PointerBuffer;
import org.lwjgl.util.generator.*;
import org.lwjgl.util.generator.opencl.CLDeviceExtension;
import org.lwjgl.util.generator.opencl.cl_int;
import org.lwjgl.util.generator.opencl.cl_uint;
import java.nio.IntBuffer;
import java.nio.LongBuffer;
@CLDeviceExtension
public interface EXT_device_fission {
/**
* Accepted as a property name in the <properties> parameter of
* clCreateSubDeviceEXT:
*/
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:
*/
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:
*/
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:
*/
int CL_PROPERTIES_LIST_END_EXT = 0x0;
/**
* Accepted as the partition counts list terminator in the <properties>
* parameter of clCreateSubDeviceEXT:
*/
int CL_PARTITION_BY_COUNTS_LIST_END_EXT = 0x0;
/**
* Accepted as the partition names list terminator in the <properties>
* parameter of clCreateSubDeviceEXT:
*/
int CL_PARTITION_BY_NAMES_LIST_END_EXT = -1;
/**
* 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.
*/
int CL_DEVICE_PARTITION_FAILED_EXT = -1057;
/**
* 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.
*/
int CL_INVALID_PARTITION_COUNT_EXT = -1058;
/**
* Returned by clCreateSubDevicesEXT when a compute unit name appearing in a
* name list following CL_DEVICE_PARTITION_BY_NAMES_EXT is not in range.
*/
int CL_INVALID_PARTITION_NAME_EXT = -1059;
@Code(javaAfterNative = "\t\tif ( __result == CL10.CL_SUCCESS ) device.retain();")
@cl_int
int clRetainDeviceEXT(@PointerWrapper("cl_device_id") CLDevice device);
/**
* 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.
*
* @param device the parent CLDevice
*
* @return the error code
*/
@Code(
javaBeforeNative = "\t\tAPIUtil.releaseObjects(device);",
javaAfterNative = "\t\tif ( __result == CL10.CL_SUCCESS ) device.release();"
)
@cl_int
int clReleaseDeviceEXT(@PointerWrapper("cl_device_id") CLDevice device);
@Code(javaAfterNative = "\t\tif ( __result == CL10.CL_SUCCESS && out_devices != null ) in_device.registerSubCLDevices(out_devices);")
@cl_int
int clCreateSubDevicesEXT(
@PointerWrapper("cl_device_id") CLDevice in_device,
@NullTerminated @Const @NativeType("cl_device_partition_property_ext") LongBuffer properties,
@AutoSize(value = "out_devices", canBeNull = true) @cl_uint int num_entries,
@OutParameter @Check(canBeNull = true) @NativeType("cl_device_id") PointerBuffer out_devices,
@OutParameter @Check(value = "1", canBeNull = true) @cl_uint IntBuffer num_devices);
}