ソースを参照

Use new ufo_filter_register_inputs/outputs

Matthias Vogelgesang 12 年 前
コミット
b8c41e6eaf

+ 3 - 0
src/ufo-filter-3d-edf-writer.c

@@ -193,10 +193,13 @@ ufo_filter_3d_edf_writer_class_init(UfoFilter3DEdfWriterClass *klass)
 static void
 ufo_filter_3d_edf_writer_init (UfoFilter3DEdfWriter *self)
 {
+    UfoInputParameter input_params[] = {{3, UFO_FILTER_INFINITE_INPUT}};
+
     self->priv = UFO_FILTER_3D_EDF_WRITER_GET_PRIVATE(self);
     self->priv->path = g_strdup(".");
     self->priv->prefix = NULL;
 
+    ufo_filter_register_inputs (UFO_FILTER (self), 1, input_params);
     ufo_filter_register_inputs (UFO_FILTER (self), 3, NULL);
 }
 

+ 5 - 2
src/ufo-filter-lamino-bp-generic.c

@@ -480,6 +480,9 @@ ufo_filter_lamino_bp_generic_class_init(UfoFilterLaminoBPGenericClass *klass)
 static void
 ufo_filter_lamino_bp_generic_init(UfoFilterLaminoBPGeneric *self)
 {
+    UfoInputParameter input_params[] = {{2, UFO_FILTER_INFINITE_INPUT}};
+    UfoOutputParameter output_params[] = {{3}};
+
     // initialize parameters here
     self->priv = UFO_FILTER_LAMINO_BP_GENERIC_GET_PRIVATE(self);
 
@@ -499,8 +502,8 @@ ufo_filter_lamino_bp_generic_init(UfoFilterLaminoBPGeneric *self)
     prms->proj_ox = 0.0;
     prms->proj_oy = 0.0;
 
-    ufo_filter_register_inputs (UFO_FILTER (self), 2, NULL);
-    ufo_filter_register_outputs (UFO_FILTER (self), 3, NULL);
+    ufo_filter_register_inputs (UFO_FILTER (self), 1, input_params);
+    ufo_filter_register_outputs (UFO_FILTER (self), 1, output_params);
 }
 
 G_MODULE_EXPORT UfoFilter *

+ 10 - 17
src/ufo-filter-lamino-ft-conv.c

@@ -11,7 +11,7 @@
 #include "ufo-filter-lamino-ft-conv.h"
 
 /**
- * SECTION:ufo-filter-lamino-f-t-conv
+ * SECTION:ufo-filter-lamino-ft-conv
  * @Short_description:
  * @Title: laminoftconv
  *
@@ -20,7 +20,6 @@
 
 struct _UfoFilterLaminoFTConvPrivate {
     cl_kernel   kernel;
-    cl_mem      filter_mem;
     size_t      global_work_size[2];
     guint       img_width;
     guint       img_height;
@@ -40,8 +39,6 @@ ufo_filter_lamino_ft_conv_initialize (UfoFilter *filter, UfoBuffer *params[], gu
 {
     UfoFilterLaminoFTConvPrivate *priv = UFO_FILTER_LAMINO_FT_CONV_GET_PRIVATE (filter);
     UfoResourceManager *manager = ufo_resource_manager ();
-    cl_command_queue command_queue;
-    cl_mem filter_mem;
     guint f_width, f_height;
     GError *tmp_error = NULL;
 
@@ -65,10 +62,6 @@ ufo_filter_lamino_ft_conv_initialize (UfoFilter *filter, UfoBuffer *params[], gu
     dim_sizes[0][1] = priv->img_height;
     priv->global_work_size[0] = (size_t) priv->img_width;
     priv->global_work_size[1] = (size_t) priv->img_height;
-
-    command_queue = ufo_resource_manager_get_command_queue (manager, 0);
-    filter_mem = ufo_buffer_get_device_array (params[INPUT_FILTER], command_queue);
-    priv->filter_mem = ufo_resource_manager_memdup (manager, filter_mem);
 }
 
 static UfoEventList *
@@ -81,11 +74,12 @@ ufo_filter_lamino_ft_conv_process_gpu(UfoFilter *flt, UfoBuffer *input[], UfoBuf
 
     cl_command_queue command_queue = (cl_command_queue) cmd_queue;
     cl_kernel kernel = priv->kernel;
+    cl_mem filter_mem = (cl_mem) ufo_buffer_get_device_array(input[INPUT_FILTER], command_queue);
     cl_mem input_mem  = (cl_mem) ufo_buffer_get_device_array(input[INPUT_IMAGE],  command_queue);
     cl_mem output_mem = (cl_mem) ufo_buffer_get_device_array(output[0], command_queue);
 
     CHECK_OPENCL_ERROR(clSetKernelArg(kernel, 0, sizeof(cl_mem), (void *) &input_mem));
-    CHECK_OPENCL_ERROR(clSetKernelArg(kernel, 1, sizeof(cl_mem), (void *) &priv->filter_mem));
+    CHECK_OPENCL_ERROR(clSetKernelArg(kernel, 1, sizeof(cl_mem), (void *) &filter_mem));
     CHECK_OPENCL_ERROR(clSetKernelArg(kernel, 2, sizeof(cl_mem), (void *) &output_mem));
     CHECK_OPENCL_ERROR(clSetKernelArg(kernel, 3, sizeof(int), &priv->img_width));
 
@@ -112,17 +106,16 @@ ufo_filter_lamino_ft_conv_class_init(UfoFilterLaminoFTConvClass *klass)
 static void
 ufo_filter_lamino_ft_conv_init(UfoFilterLaminoFTConv *self)
 {
+    UfoOutputParameter output_params[] = {{2}};
+    UfoInputParameter input_params[] = {
+        {2, 1},
+        {2, UFO_FILTER_INFINITE_INPUT}};
+
     UfoFilterLaminoFTConvPrivate *priv = self->priv = UFO_FILTER_LAMINO_FT_CONV_GET_PRIVATE(self);
     priv->kernel = NULL;
 
-    ufo_filter_register_inputs (UFO_FILTER (self),
-            2,  /* filter */
-            2,  /* input image */
-            NULL);
-
-    ufo_filter_register_outputs (UFO_FILTER (self),
-            2,  /* output image */
-            NULL);
+    ufo_filter_register_inputs (UFO_FILTER (self), 2, input_params);
+    ufo_filter_register_outputs (UFO_FILTER (self), 1, output_params);
 }
 
 G_MODULE_EXPORT UfoFilter *

+ 2 - 1
src/ufo-filter-lamino-ramp.c

@@ -232,6 +232,7 @@ ufo_filter_lamino_ramp_class_init(UfoFilterLaminoRampClass *klass)
 static void ufo_filter_lamino_ramp_init(UfoFilterLaminoRamp *self)
 {
     UfoFilterLaminoRampPrivate *priv = self->priv = UFO_FILTER_LAMINO_RAMP_GET_PRIVATE(self);
+    UfoOutputParameter output_params[] = {{2}};
 
     priv->width = 4;
     priv->fill_width=2;
@@ -240,7 +241,7 @@ static void ufo_filter_lamino_ramp_init(UfoFilterLaminoRamp *self)
     priv->tau = 10.0;
     priv->done = FALSE;
 
-    ufo_filter_register_outputs (UFO_FILTER(self), 2, NULL);
+    ufo_filter_register_outputs (UFO_FILTER (self), 1, output_params);
 }
 
 G_MODULE_EXPORT UfoFilter *

+ 4 - 2
src/ufo-filter-padding-2d.c

@@ -337,6 +337,8 @@ static void
 ufo_filter_padding_2d_init(UfoFilterPadding2D *self)
 {
     UfoFilterPadding2DPrivate *priv = self->priv = UFO_FILTER_PADDING_2D_GET_PRIVATE(self);
+    UfoInputParameter input_params[] = {{2, UFO_FILTER_INFINITE_INPUT}};
+    UfoOutputParameter output_params[] = {{3}};
 
     // set default values
     priv->xl = 1;
@@ -352,8 +354,8 @@ ufo_filter_padding_2d_init(UfoFilterPadding2D *self)
     priv->kernel_brep   = NULL;
 
     // register filter input and output
-    ufo_filter_register_inputs (UFO_FILTER (self), 2, NULL);
-    ufo_filter_register_outputs (UFO_FILTER (self), 2, NULL);
+    ufo_filter_register_inputs (UFO_FILTER (self), 1, input_params);
+    ufo_filter_register_outputs (UFO_FILTER (self), 1, output_params);
 }
 
 G_MODULE_EXPORT