Example #1
0
/**
 * ufo_gpu_node_get_info:
 * @node: A #UfoGpuNodeInfo
 * @info: Information to be queried
 *
 * Return information about the associated OpenCL device.
 *
 * Returns: (transfer full): Information about @info.
 */
GValue *
ufo_gpu_node_get_info (UfoGpuNode *node,
                       UfoGpuNodeInfo info)
{
    UfoGpuNodePrivate *priv;
    GValue *value;
    cl_ulong ulong_value;

    priv = UFO_GPU_NODE_GET_PRIVATE (node);
    value = g_new0 (GValue, 1);
    memset (value, 0, sizeof (GValue));

    g_value_init (value, G_TYPE_ULONG);

    switch (info) {
        case UFO_GPU_NODE_INFO_GLOBAL_MEM_SIZE:
            UFO_RESOURCES_CHECK_CLERR (clGetDeviceInfo (priv->device, CL_DEVICE_GLOBAL_MEM_SIZE, sizeof (cl_ulong), &ulong_value, NULL));
            break;

        case UFO_GPU_NODE_INFO_LOCAL_MEM_SIZE:
            UFO_RESOURCES_CHECK_CLERR (clGetDeviceInfo (priv->device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof (cl_ulong), &ulong_value, NULL));
            break;
    }

    g_value_set_ulong (value, ulong_value);
    return value;
}
Example #2
0
static void
ufo_gpu_node_init (UfoGpuNode *self)
{
    UfoGpuNodePrivate *priv;
    self->priv = priv = UFO_GPU_NODE_GET_PRIVATE (self);
    priv->cmd_queue = NULL;
}
Example #3
0
static void
ufo_gpu_node_dispose (GObject *object)
{
    UfoGpuNodePrivate *priv;

    priv = UFO_GPU_NODE_GET_PRIVATE (object);

    if (priv->cmd_queue != NULL) {
        g_debug ("Release cmd_queue=%p", priv->cmd_queue);
        clReleaseCommandQueue (priv->cmd_queue);
        priv->cmd_queue = NULL;
    }

    G_OBJECT_CLASS (ufo_gpu_node_parent_class)->dispose (object);
}
Example #4
0
static void
ufo_gpu_node_finalize (GObject *object)
{
    UfoGpuNodePrivate *priv;

    priv = UFO_GPU_NODE_GET_PRIVATE (object);

    if (priv->cmd_queue != NULL) {
        g_debug ("Release cmd_queue=%p", (gpointer) priv->cmd_queue);
        UFO_RESOURCES_CHECK_CLERR (clReleaseCommandQueue (priv->cmd_queue));
        priv->cmd_queue = NULL;

        UFO_RESOURCES_CHECK_CLERR (clReleaseContext (priv->context));
    }

    G_OBJECT_CLASS (ufo_gpu_node_parent_class)->finalize (object);
}