/** * 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 }
/** * 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); }
/** * 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); }
/** * 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); }