コード例 #1
0
ファイル: ccl_device_wrapper.c プロジェクト: fakenmc/cf4ocl
/**
 * Decrements the reference count of the device wrapper object.
 * If it reaches 0, the device wrapper object is destroyed.
 *
 * @public @memberof ccl_device
 *
 * @param[in] dev The device wrapper object.
 * */
CCL_EXPORT
void ccl_device_destroy(CCLDevice * dev) {

#ifdef CL_VERSION_1_2

    cl_uint ver = ccl_device_get_opencl_version(dev, NULL);

    /* Device destruction depends on device OpenCL version. */
    if (ver >= 120) {

        /* If OpenCL >= 1.2, then pass clReleaseDevice() to release
         * device (will only matter for sub-devices). */
        ccl_wrapper_unref((CCLWrapper *) dev, sizeof(CCLDevice),
            (ccl_wrapper_release_fields) ccl_device_release_fields,
            (ccl_wrapper_release_cl_object) clReleaseDevice, NULL);

    } else {

        /* If OpenCL < 1.2, don't pass OpenCL specific destructors. */
        ccl_wrapper_unref((CCLWrapper *) dev, sizeof(CCLDevice),
            NULL, NULL, NULL);
    }

#else

    ccl_wrapper_unref((CCLWrapper *) dev, sizeof(CCLDevice), NULL, NULL, NULL);

#endif
}
コード例 #2
0
ファイル: ccl_platform_wrapper.c プロジェクト: fakenmc/cf4ocl
/**
 * Decrements the reference count of the platform wrapper object.
 * If it reaches 0, the platform wrapper object is destroyed.
 *
 * @public @memberof ccl_platform
 *
 * @param[in] platf The platform wrapper object.
 * */
CCL_EXPORT
void ccl_platform_destroy(CCLPlatform * platf) {

    ccl_wrapper_unref((CCLWrapper *) platf, sizeof(CCLPlatform),
        (ccl_wrapper_release_fields) ccl_dev_container_release_devices,
        NULL, NULL);
}
コード例 #3
0
ファイル: ccl_sampler_wrapper.c プロジェクト: LaSEEB/cf4ocl
/**
 * Decrements the reference count of the wrapper object. If it
 * reaches 0, the wrapper object is destroyed.
 *
 * @public @memberof ccl_sampler
 *
 * @param[in] smplr The sampler wrapper object.
 * */
CCL_EXPORT
void ccl_sampler_destroy(CCLSampler* smplr) {

	ccl_wrapper_unref((CCLWrapper*) smplr, sizeof(CCLSampler),
		NULL, (ccl_wrapper_release_cl_object) clReleaseSampler, NULL);

}
コード例 #4
0
ファイル: ccl_kernel_wrapper.c プロジェクト: LaSEEB/cf4ocl
/**
 * Decrements the reference count of the kernel wrapper object.
 * If it reaches 0, the kernel wrapper object is destroyed.
 *
 * @public @memberof ccl_kernel
 *
 * @param[in] krnl The kernel wrapper object.
 * */
CCL_EXPORT
void ccl_kernel_destroy(CCLKernel* krnl) {

	ccl_wrapper_unref((CCLWrapper*) krnl, sizeof(CCLKernel),
		(ccl_wrapper_release_fields) ccl_kernel_release_fields,
		(ccl_wrapper_release_cl_object) clReleaseKernel, NULL);

}