summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2013-09-01 20:48:23 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2013-09-01 20:48:23 -0400
commit44551a7920272adb196a319d0643952ee47d6eb4 (patch)
treef65ce73f1bbc822c1a54e532efb9910567ab816a
parent1d5d9f466d5cf2fb40506c5a2b9eb09fded1a40c (diff)
more iterjit
-rw-r--r--iterjit.c101
1 files changed, 101 insertions, 0 deletions
diff --git a/iterjit.c b/iterjit.c
index 64e32ed..c6af98f 100644
--- a/iterjit.c
+++ b/iterjit.c
@@ -50,3 +50,104 @@
There may also be setup()/setup_line() methods required.
*/
+#include <stdio.h>
+#include "simplex86.h"
+#include "simple-reg.h"
+#include "stack-man.h"
+#include "crc32.h"
+
+typedef struct jit_dest_iter_t jit_dest_iter_t;
+typedef struct jit_src_iter_t jit_src_iter_t;
+typedef struct jit_combiner_t jit_combiner_t;
+
+struct jit_src_iter_t
+{
+ void (* begin) (jit_src_iter_t *src);
+ void (* begin_line) (jit_src_iter_t *src);
+ op_t (* get_1_pixel) (jit_src_iter_t *src);
+ op_t (* get_2_pixels) (jit_src_iter_t *src);
+ op_t (* get_4_pixels) (jit_src_iter_t *src);
+ op_t (* get_8_pixels) (jit_src_iter_t *src);
+ op_t (* get_16_pixels) (jit_src_iter_t *src);
+ void (* end_line) (jit_src_iter_t *);
+ void (* end) (jit_src_iter_t *);
+};
+
+struct jit_combiner_t
+{
+ op_t (* combine) (jit_src_iter_t *src, op_t a, op_t b, op_t c);
+};
+
+struct jit_dest_iter_t
+{
+ void (* begin) (jit_dest_iter_t *dest);
+ void (* process_line) (jit_dest_iter_t *dest_iter,
+ jit_src_iter_t *src_iter,
+ jit_src_iter_t *mask_iter,
+ jit_combiner_t *combiner);
+ void (* end) (jit_dest_iter_t *dest);
+};
+
+static void
+dest_a8r8g8b8_begin (jit_dest_iter_t *dest)
+{
+
+}
+
+static void
+dest_a8r8g8b8_process_line (jit_dest_iter_t *dest,
+ jit_src_iter_t *src,
+ jit_src_iter_t *mask,
+ jit_combiner_t *combiner)
+{
+}
+
+static void
+dest_a8r8g8b8_end (jit_dest_iter_t *dest)
+{
+}
+
+jit_dest_iter_t *
+dest_iter_create_a8r8g8b8 (jit_dest_iter_t *dest)
+{
+ jit_dest_iter_t *iter = malloc (sizeof *iter); /* FIXME OOM */
+
+ iter->begin = dest_a8r8g8b8_begin;
+ iter->process_line = dest_a8r8g8b8_process_line;
+ iter->end = dest_a8r8g8b8_end;
+
+ return iter;
+}
+
+void
+generate_kernel (jit_src_iter_t *src_iter,
+ jit_src_iter_t *mask_iter,
+ jit_dest_iter_t *dest_iter,
+ jit_combiner_t *combiner)
+{
+
+
+ /* This function does
+ *
+ * src_iter->setup();
+ * mask_iter->setup();
+ * dest_iter->setup();
+ * while (height--)
+ * {
+ * dest_iter->process_line (
+ * dest_iter, src_iter, mask_iter, combiner);
+ * }
+ * dest_iter->end();
+ * mask_iter->end();
+ * src_iter->end();
+ */
+}
+
+int
+main ()
+{
+ /* n_8_8888() */
+ printf ("iter jit\n");
+
+ return 0;
+}