Skia Compute core files

Bug: skia:
Change-Id: I4bba49cf20eff013e581800a3f114c85acd8498c
Reviewed-on: https://skia-review.googlesource.com/135782
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
diff --git a/src/compute/skc/path_builder.h b/src/compute/skc/path_builder.h
new file mode 100644
index 0000000..c8e36df
--- /dev/null
+++ b/src/compute/skc/path_builder.h
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can
+ * be found in the LICENSE file.
+ *
+ */
+
+#pragma once
+
+//
+//
+//
+
+#include "skc.h"
+#include "assert_state.h"
+
+//
+//
+//
+
+typedef enum skc_path_builder_state_e {
+
+  SKC_PATH_BUILDER_STATE_READY,
+  SKC_PATH_BUILDER_STATE_BUILDING
+
+} skc_path_builder_state_e;
+
+//
+// FIXME -- we might be able to bury more of this in the impl
+//
+
+struct skc_coords_rem_count_line
+{
+  skc_uint    rem;
+  skc_float * coords[4];
+};
+
+struct skc_coords_rem_count_quad
+{
+  skc_uint    rem;
+  skc_float * coords[6];
+};
+
+struct skc_coords_rem_count_cubic
+{
+  skc_uint    rem;
+  skc_float * coords[8];
+};
+
+//
+//
+//
+
+struct skc_path_builder
+{
+  struct skc_context              * context;
+  
+  struct skc_path_builder_impl    * impl;
+
+  void                           (* begin    )(struct skc_path_builder_impl * const impl); 
+  void                           (* end      )(struct skc_path_builder_impl * const impl, skc_path_t * const path);
+  void                           (* new_line )(struct skc_path_builder_impl * const impl);
+  void                           (* new_quad )(struct skc_path_builder_impl * const impl);
+  void                           (* new_cubic)(struct skc_path_builder_impl * const impl);
+  void                           (* release  )(struct skc_path_builder_impl * const impl);
+
+  struct skc_coords_rem_count_line  line;
+  struct skc_coords_rem_count_quad  quad;
+  struct skc_coords_rem_count_cubic cubic;
+
+  struct {
+    float                           x;
+    float                           y;
+  } curr[2];
+
+  skc_uint                          refcount;
+
+  SKC_ASSERT_STATE_DECLARE(skc_path_builder_state_e);
+};
+
+//
+//
+//
+