Преглед на файлове

Convert indices to float on host

Tomas Farago преди 9 години
родител
ревизия
7c156ac3d6
променени са 2 файла, в които са добавени 17 реда и са изтрити 17 реда
  1. 4 4
      src/kernels/ankabackproject.cl
  2. 13 13
      src/ufo-anka-backproject-task.c

+ 4 - 4
src/kernels/ankabackproject.cl

@@ -20,11 +20,11 @@
  __kernel void backproject (global float *volume,
                             __read_only image2d_t projection,
                             const sampler_t sampler,
-                            const int2 x_region,
-                            const int2 y_region,
-                            const int2 z_region,
+                            const float2 x_region,
+                            const float2 y_region,
+                            const float2 z_region,
                             const float8 tmatrix,
-                            const int2 offset,
+                            const float2 offset,
                             const uint cumulate)
 {
      int3 id = (int3) (get_global_id (0), get_global_id (1), get_global_id (2));

+ 13 - 13
src/ufo-anka-backproject-task.c

@@ -184,7 +184,7 @@ ufo_anka_backproject_task_process (UfoTask *task,
     UfoProfiler *profiler;
     gfloat tomo_angle;
     /* regions stripped off the "to" value */
-    gint x_region[2], y_region[2], z_region[2], proj_offset[2];
+    gfloat x_region[2], y_region[2], z_region[2], proj_offset[2];
     cl_command_queue cmd_queue;
     cl_mem image;
     cl_mem out_mem;
@@ -195,17 +195,17 @@ ufo_anka_backproject_task_process (UfoTask *task,
     out_mem = ufo_buffer_get_device_array (output, cmd_queue);
     image = ufo_buffer_get_device_image (inputs[0], cmd_queue); 
 
-    x_region[0] = EXTRACT_INT (priv->x_region, 0);
-    x_region[1] = EXTRACT_INT (priv->x_region, 2);
+    x_region[0] = (gfloat) EXTRACT_INT (priv->x_region, 0);
+    x_region[1] = (gfloat) EXTRACT_INT (priv->x_region, 2);
 
-    y_region[0] = EXTRACT_INT (priv->y_region, 0);
-    y_region[1] = EXTRACT_INT (priv->y_region, 2);
+    y_region[0] = (gfloat) EXTRACT_INT (priv->y_region, 0);
+    y_region[1] = (gfloat) EXTRACT_INT (priv->y_region, 2);
 
-    z_region[0] = EXTRACT_INT (priv->z_region, 0);
-    z_region[1] = EXTRACT_INT (priv->z_region, 2);
+    z_region[0] = (gfloat) EXTRACT_INT (priv->z_region, 0);
+    z_region[1] = (gfloat) EXTRACT_INT (priv->z_region, 2);
 
-    proj_offset[0] = EXTRACT_INT (priv->projection_offset, 0);
-    proj_offset[1] = EXTRACT_INT (priv->projection_offset, 1);
+    proj_offset[0] = (gfloat) EXTRACT_INT (priv->projection_offset, 0);
+    proj_offset[1] = (gfloat) EXTRACT_INT (priv->projection_offset, 1);
 
 
     tomo_angle = priv->tomo_angle_is_absolute ? priv->tomo_angle : priv->tomo_angle * priv->count;
@@ -214,11 +214,11 @@ ufo_anka_backproject_task_process (UfoTask *task,
     UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 0, sizeof (cl_mem), &out_mem));
     UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 1, sizeof (cl_mem), &image));
     UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 2, sizeof (cl_sampler), &priv->sampler));
-    UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 3, sizeof (cl_int2), x_region));
-    UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 4, sizeof (cl_int2), y_region));
-    UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 5, sizeof (cl_int2), z_region));
+    UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 3, sizeof (cl_float2), x_region));
+    UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 4, sizeof (cl_float2), y_region));
+    UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 5, sizeof (cl_float2), z_region));
     UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 6, sizeof (cl_float8), priv->tmatrix));
-    UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 7, sizeof (cl_int2), proj_offset));
+    UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 7, sizeof (cl_float2), proj_offset));
     UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 8, sizeof (cl_uint), (cl_uint *) &priv->count));
 
     profiler = ufo_task_node_get_profiler (UFO_TASK_NODE (task));