1 /*
2  * Copyright 2017 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can
5  * be found in the LICENSE file.
6  *
7  */
8 
9 //
10 //
11 //
12 
13 #include <stdlib.h>
14 #include <assert.h> // FIXME -- replace with an SKC assert for non-debug builds
15 
16 #include "skc.h"
17 #include "context.h"
18 
19 //
20 // FIXME -- THE RUNTIME AND DEVICE WILL DYNAMICALLY LOADED
21 //
22 
23 // temporarily
24 #include "runtime_cl_12.h"
25 
26 //
27 // CONTEXT
28 //
29 
30 skc_err
skc_context_create_cl(skc_context_t * context,cl_context context_cl,cl_device_id device_id_cl)31 skc_context_create_cl(skc_context_t * context,
32                       cl_context      context_cl,
33                       cl_device_id    device_id_cl)
34 {
35   (*context) = malloc(sizeof(**context));
36 
37   //
38   // FIXME -- we'll clean up context creation by platform later.  For
39   // now, just create a CL_12 context.
40   //
41   skc_err err;
42 
43   err = skc_runtime_cl_12_create(*context,context_cl,device_id_cl);
44 
45   return err;
46 }
47 
48 skc_err
skc_context_retain(skc_context_t context)49 skc_context_retain(skc_context_t context)
50 {
51   return SKC_ERR_SUCCESS;
52 }
53 
54 
55 skc_err
skc_context_release(skc_context_t context)56 skc_context_release(skc_context_t context)
57 {
58   skc_err err = skc_runtime_cl_12_dispose(context);
59 
60   free(context);
61 
62   return err;
63 }
64 
65 
66 skc_err
skc_context_reset(skc_context_t context)67 skc_context_reset(skc_context_t context)
68 {
69   return SKC_ERR_SUCCESS;
70 }
71 
72 //
73 //
74 //
75 
76 bool
skc_context_yield(skc_context_t context)77 skc_context_yield(skc_context_t context)
78 {
79   return context->yield(context->runtime);
80 }
81 
82 void
skc_context_wait(skc_context_t context)83 skc_context_wait(skc_context_t context)
84 {
85   context->wait(context->runtime);
86 }
87 
88 //
89 //
90 //
91 
92 skc_err
skc_path_builder_create(skc_context_t context,skc_path_builder_t * path_builder)93 skc_path_builder_create(skc_context_t context, skc_path_builder_t * path_builder)
94 {
95   return context->path_builder(context,path_builder);
96 }
97 
98 skc_err
skc_path_retain(skc_context_t context,skc_path_t const * paths,uint32_t count)99 skc_path_retain(skc_context_t context, skc_path_t const * paths, uint32_t count)
100 {
101   return context->path_retain(context->runtime,paths,count);
102 }
103 
104 skc_err
skc_path_release(skc_context_t context,skc_path_t const * paths,uint32_t count)105 skc_path_release(skc_context_t context, skc_path_t const * paths, uint32_t count)
106 {
107   return context->path_release(context->runtime,paths,count);
108 }
109 
110 skc_err
skc_path_flush(skc_context_t context,skc_path_t const * paths,uint32_t count)111 skc_path_flush(skc_context_t context, skc_path_t const * paths, uint32_t count)
112 {
113   return context->path_flush(context->runtime,paths,count);
114 }
115 
116 //
117 //
118 //
119 
120 skc_err
skc_raster_builder_create(skc_context_t context,skc_raster_builder_t * raster_builder)121 skc_raster_builder_create(skc_context_t context, skc_raster_builder_t * raster_builder)
122 {
123   return context->raster_builder(context,raster_builder);
124 }
125 
126 skc_err
skc_raster_retain(skc_context_t context,skc_raster_t const * rasters,uint32_t count)127 skc_raster_retain(skc_context_t context, skc_raster_t const * rasters, uint32_t count)
128 {
129   return context->raster_retain(context->runtime,rasters,count);
130 }
131 
132 skc_err
skc_raster_release(skc_context_t context,skc_raster_t const * rasters,uint32_t count)133 skc_raster_release(skc_context_t context, skc_raster_t const * rasters, uint32_t count)
134 {
135   return context->raster_release(context->runtime,rasters,count);
136 }
137 
138 skc_err
skc_raster_flush(skc_context_t context,skc_raster_t const * rasters,uint32_t count)139 skc_raster_flush(skc_context_t context, skc_raster_t const * rasters, uint32_t count)
140 {
141   return context->raster_flush(context->runtime,rasters,count);
142 }
143 
144 //
145 //
146 //
147 
148 skc_err
skc_styling_create(skc_context_t context,skc_styling_t * styling,uint32_t layers_count,uint32_t groups_count,uint32_t extras_count)149 skc_styling_create(skc_context_t   context,
150                    skc_styling_t * styling,
151                    uint32_t        layers_count,
152                    uint32_t        groups_count,
153                    uint32_t        extras_count)
154 {
155   return context->styling(context,
156                           styling,
157                           layers_count,
158                           groups_count,
159                           extras_count);
160 }
161 
162 skc_err
skc_composition_create(skc_context_t context,skc_composition_t * composition)163 skc_composition_create(skc_context_t context, skc_composition_t * composition)
164 {
165   return context->composition(context,composition);
166 }
167 
168 
169 skc_err
skc_surface_create(skc_context_t context,skc_surface_t * surface)170 skc_surface_create(skc_context_t context, skc_surface_t * surface)
171 {
172   return context->surface(context,surface);
173 }
174 
175 //
176 //
177 //
178