static gboolean ufo_gpu_node_equal_real (UfoNode *n1, UfoNode *n2) { g_return_val_if_fail (UFO_IS_GPU_NODE (n1) && UFO_IS_GPU_NODE (n2), FALSE); return UFO_GPU_NODE (n1)->priv->cmd_queue == UFO_GPU_NODE (n2)->priv->cmd_queue; }
static gboolean ufo_null_task_process (UfoTask *task, UfoBuffer **inputs, UfoBuffer *output, UfoRequisition *requisition) { UfoNullTaskPrivate *priv; priv = UFO_NULL_TASK_GET_PRIVATE (task); if (priv->force_download) { gfloat *host_array; host_array = ufo_buffer_get_host_array (inputs[0], NULL); host_array[0] = 0.0; } if (priv->finish) { UfoGpuNode *gpu; gpu = UFO_GPU_NODE (ufo_task_node_get_proc_node (UFO_TASK_NODE (task))); UFO_RESOURCES_CHECK_CLERR (clFinish (ufo_gpu_node_get_cmd_queue (gpu))); } return TRUE; }
static UfoNode * ufo_gpu_node_copy_real (UfoNode *node, GError **error) { UfoGpuNode *orig; orig = UFO_GPU_NODE (node); return ufo_gpu_node_new (orig->priv->context, orig->priv->device); }
UfoNode * ufo_gpu_node_new (gpointer cmd_queue) { UfoGpuNode *node; g_return_val_if_fail (cmd_queue != NULL, NULL); node = UFO_GPU_NODE (g_object_new (UFO_TYPE_GPU_NODE, NULL)); node->priv->cmd_queue = cmd_queue; clRetainCommandQueue (cmd_queue); return UFO_NODE (node); }
UfoNode * ufo_gpu_node_new (gpointer context, gpointer device) { UfoGpuNode *node; cl_int errcode; cl_command_queue_properties queue_properties; g_return_val_if_fail (context != NULL && device != NULL, NULL); queue_properties = CL_QUEUE_PROFILING_ENABLE; node = UFO_GPU_NODE (g_object_new (UFO_TYPE_GPU_NODE, NULL)); node->priv->context = context; node->priv->device = device; node->priv->cmd_queue = clCreateCommandQueue (context, device, queue_properties, &errcode); UFO_RESOURCES_CHECK_CLERR (errcode); UFO_RESOURCES_CHECK_CLERR (clRetainContext (context)); return UFO_NODE (node); }
static UfoNode * ufo_gpu_node_copy_real (UfoNode *node, GError **error) { return UFO_NODE (ufo_gpu_node_new (UFO_GPU_NODE (node)->priv->cmd_queue)); }