Mercurial > games > semicongine
annotate src/glslang/glslang_c_interface.nim @ 463:91544fc1afe5
did: hello world triangle, a bit of code organization
author | Sam <sam@basx.dev> |
---|---|
date | Mon, 19 Dec 2022 10:41:20 +0700 |
parents | 0bc8643cfe25 |
children | 0660ba9d1930 |
rev | line source |
---|---|
463
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
1 import std/strformat |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
2 |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
3 when defined(linux): |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
4 const platform = "linux" |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
5 when defined(windows): |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
6 const platform = "windows" |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
7 |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
8 |
462 | 9 when defined(release): |
463
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
10 const libversion = "release" |
462 | 11 else: |
463
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
12 const libversion = "debug" |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
13 |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
14 |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
15 # required to link the GLSL compiler |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
16 {.passl: &"-Lthirdparty/lib/glslang/{platform}_{libversion}" .} |
91544fc1afe5
did: hello world triangle, a bit of code organization
Sam <sam@basx.dev>
parents:
462
diff
changeset
|
17 {.passl: &"-Lthirdparty/lib/spirv-tools/{platform}_{libversion}" .} |
462 | 18 |
19 {.passl: "-lglslang" .} | |
20 {.passl: "-lglslang-default-resource-limits" .} | |
21 {.passl: "-lHLSL" .} | |
22 {.passl: "-lMachineIndependent" .} | |
23 {.passl: "-lGenericCodeGen" .} | |
24 {.passl: "-lOSDependent" .} | |
25 {.passl: "-lOGLCompiler" .} | |
26 {.passl: "-lSPIRV" .} | |
27 {.passl: "-lSPIRV-Tools-opt" .} | |
28 {.passl: "-lSPIRV-Tools" .} | |
29 {.passl: "-lSPIRV-Tools-diff" .} | |
30 {.passl: "-lSPIRV-Tools-fuzz" .} | |
31 {.passl: "-lSPIRV-Tools-link" .} | |
32 {.passl: "-lSPIRV-Tools-lint" .} | |
33 {.passl: "-lSPIRV-Tools-opt" .} | |
34 {.passl: "-lSPIRV-Tools-reduce" .} | |
35 | |
36 {.passl: "-lstdc++" .} | |
37 {.passl: "-lm" .} | |
38 | |
461 | 39 import |
40 glslang_c_shader_types | |
41 | |
462 | 42 type |
43 glslang_shader_t* {.nodecl incompleteStruct.} = object | |
44 glslang_program_t* {.nodecl incompleteStruct.} = object | |
461 | 45 glslang_limits_t* {.bycopy.} = object |
46 non_inductive_for_loops*: bool | |
47 while_loops*: bool | |
48 do_while_loops*: bool | |
49 general_uniform_indexing*: bool | |
50 general_attribute_matrix_vector_indexing*: bool | |
51 general_varying_indexing*: bool | |
52 general_sampler_indexing*: bool | |
53 general_variable_indexing*: bool | |
54 general_constant_matrix_vector_indexing*: bool | |
55 glslang_resource_t* {.bycopy.} = object | |
56 max_lights*: cint | |
57 max_clip_planes*: cint | |
58 max_texture_units*: cint | |
59 max_texture_coords*: cint | |
60 max_vertex_attribs*: cint | |
61 max_vertex_uniform_components*: cint | |
62 max_varying_floats*: cint | |
63 max_vertex_texture_image_units*: cint | |
64 max_combined_texture_image_units*: cint | |
65 max_texture_image_units*: cint | |
66 max_fragment_uniform_components*: cint | |
67 max_draw_buffers*: cint | |
68 max_vertex_uniform_vectors*: cint | |
69 max_varying_vectors*: cint | |
70 max_fragment_uniform_vectors*: cint | |
71 max_vertex_output_vectors*: cint | |
72 max_fragment_input_vectors*: cint | |
73 min_program_texel_offset*: cint | |
74 max_program_texel_offset*: cint | |
75 max_clip_distances*: cint | |
76 max_compute_work_group_count_x*: cint | |
77 max_compute_work_group_count_y*: cint | |
78 max_compute_work_group_count_z*: cint | |
79 max_compute_work_group_size_x*: cint | |
80 max_compute_work_group_size_y*: cint | |
81 max_compute_work_group_size_z*: cint | |
82 max_compute_uniform_components*: cint | |
83 max_compute_texture_image_units*: cint | |
84 max_compute_image_uniforms*: cint | |
85 max_compute_atomic_counters*: cint | |
86 max_compute_atomic_counter_buffers*: cint | |
87 max_varying_components*: cint | |
88 max_vertex_output_components*: cint | |
89 max_geometry_input_components*: cint | |
90 max_geometry_output_components*: cint | |
91 max_fragment_input_components*: cint | |
92 max_image_units*: cint | |
93 max_combined_image_units_and_fragment_outputs*: cint | |
94 max_combined_shader_output_resources*: cint | |
95 max_image_samples*: cint | |
96 max_vertex_image_uniforms*: cint | |
97 max_tess_control_image_uniforms*: cint | |
98 max_tess_evaluation_image_uniforms*: cint | |
99 max_geometry_image_uniforms*: cint | |
100 max_fragment_image_uniforms*: cint | |
101 max_combined_image_uniforms*: cint | |
102 max_geometry_texture_image_units*: cint | |
103 max_geometry_output_vertices*: cint | |
104 max_geometry_total_output_components*: cint | |
105 max_geometry_uniform_components*: cint | |
106 max_geometry_varying_components*: cint | |
107 max_tess_control_input_components*: cint | |
108 max_tess_control_output_components*: cint | |
109 max_tess_control_texture_image_units*: cint | |
110 max_tess_control_uniform_components*: cint | |
111 max_tess_control_total_output_components*: cint | |
112 max_tess_evaluation_input_components*: cint | |
113 max_tess_evaluation_output_components*: cint | |
114 max_tess_evaluation_texture_image_units*: cint | |
115 max_tess_evaluation_uniform_components*: cint | |
116 max_tess_patch_components*: cint | |
117 max_patch_vertices*: cint | |
118 max_tess_gen_level*: cint | |
119 max_viewports*: cint | |
120 max_vertex_atomic_counters*: cint | |
121 max_tess_control_atomic_counters*: cint | |
122 max_tess_evaluation_atomic_counters*: cint | |
123 max_geometry_atomic_counters*: cint | |
124 max_fragment_atomic_counters*: cint | |
125 max_combined_atomic_counters*: cint | |
126 max_atomic_counter_bindings*: cint | |
127 max_vertex_atomic_counter_buffers*: cint | |
128 max_tess_control_atomic_counter_buffers*: cint | |
129 max_tess_evaluation_atomic_counter_buffers*: cint | |
130 max_geometry_atomic_counter_buffers*: cint | |
131 max_fragment_atomic_counter_buffers*: cint | |
132 max_combined_atomic_counter_buffers*: cint | |
133 max_atomic_counter_buffer_size*: cint | |
134 max_transform_feedback_buffers*: cint | |
135 max_transform_feedback_interleaved_components*: cint | |
136 max_cull_distances*: cint | |
137 max_combined_clip_and_cull_distances*: cint | |
138 max_samples*: cint | |
139 max_mesh_output_vertices_nv*: cint | |
140 max_mesh_output_primitives_nv*: cint | |
141 max_mesh_work_group_size_x_nv*: cint | |
142 max_mesh_work_group_size_y_nv*: cint | |
143 max_mesh_work_group_size_z_nv*: cint | |
144 max_task_work_group_size_x_nv*: cint | |
145 max_task_work_group_size_y_nv*: cint | |
146 max_task_work_group_size_z_nv*: cint | |
147 max_mesh_view_count_nv*: cint | |
148 max_mesh_output_vertices_ext*: cint | |
149 max_mesh_output_primitives_ext*: cint | |
150 max_mesh_work_group_size_x_ext*: cint | |
151 max_mesh_work_group_size_y_ext*: cint | |
152 max_mesh_work_group_size_z_ext*: cint | |
153 max_task_work_group_size_x_ext*: cint | |
154 max_task_work_group_size_y_ext*: cint | |
155 max_task_work_group_size_z_ext*: cint | |
156 max_mesh_view_count_ext*: cint | |
157 maxDualSourceDrawBuffersEXT*: cint | |
158 limits*: glslang_limits_t | |
159 glslang_input_t* {.bycopy.} = object | |
160 language*: glslang_source_t | |
161 stage*: glslang_stage_t | |
162 client*: glslang_client_t | |
163 client_version*: glslang_target_client_version_t | |
164 target_language*: glslang_target_language_t | |
165 target_language_version*: glslang_target_language_version_t | |
166 code*: cstring | |
167 default_version*: cint | |
168 default_profile*: glslang_profile_t | |
169 force_default_version_and_profile*: cint | |
170 forward_compatible*: cint | |
171 messages*: glslang_messages_t | |
172 resource*: ptr glslang_resource_t | |
173 glsl_include_result_t* {.bycopy.} = object | |
174 ## Header file name or NULL if inclusion failed | |
175 header_name*: cstring | |
176 ## Header contents or NULL | |
177 header_data*: cstring | |
178 header_length*: csize_t | |
462 | 179 glsl_include_local_func* = proc (ctx: pointer; header_name: cstring; includer_name: cstring; include_depth: csize_t): ptr glsl_include_result_t |
180 glsl_include_system_func* = proc (ctx: pointer; header_name: cstring; includer_name: cstring; include_depth: csize_t): ptr glsl_include_result_t | |
181 glsl_free_include_result_func* = proc (ctx: pointer; result: ptr glsl_include_result_t): cint | |
461 | 182 glsl_include_callbacks_t* {.bycopy.} = object |
183 include_system*: glsl_include_system_func | |
184 include_local*: glsl_include_local_func | |
185 free_include_result*: glsl_free_include_result_func | |
186 glslang_spv_options_t* {.bycopy.} = object | |
187 generate_debug_info*: bool | |
188 strip_debug_info*: bool | |
189 disable_optimizer*: bool | |
190 optimize_size*: bool | |
191 disassemble*: bool | |
192 validate*: bool | |
193 emit_nonsemantic_shader_debug_info*: bool | |
194 emit_nonsemantic_shader_debug_source*: bool | |
195 | |
196 proc glslang_initialize_process*(): cint {.importc.} | |
197 proc glslang_finalize_process*() {.importc.} | |
198 proc glslang_shader_create*(input: ptr glslang_input_t): ptr glslang_shader_t {.importc.} | |
199 proc glslang_shader_delete*(shader: ptr glslang_shader_t) {.importc.} | |
200 proc glslang_shader_set_preamble*(shader: ptr glslang_shader_t; s: cstring) {.importc.} | |
201 proc glslang_shader_shift_binding*(shader: ptr glslang_shader_t; res: glslang_resource_type_t; base: cuint) {.importc.} | |
202 proc glslang_shader_shift_binding_for_set*(shader: ptr glslang_shader_t; res: glslang_resource_type_t; base: cuint; set: cuint) {.importc.} | |
203 proc glslang_shader_set_options*(shader: ptr glslang_shader_t; options: cint) {.importc.} | |
204 | |
205 proc glslang_shader_set_glsl_version*(shader: ptr glslang_shader_t; version: cint) {.importc.} | |
206 proc glslang_shader_preprocess*(shader: ptr glslang_shader_t; input: ptr glslang_input_t): cint {.importc.} | |
207 proc glslang_shader_parse*(shader: ptr glslang_shader_t; input: ptr glslang_input_t): cint {.importc.} | |
208 proc glslang_shader_get_preprocessed_code*(shader: ptr glslang_shader_t): cstring {.importc.} | |
209 proc glslang_shader_get_info_log*(shader: ptr glslang_shader_t): cstring {.importc.} | |
210 proc glslang_shader_get_info_debug_log*(shader: ptr glslang_shader_t): cstring {.importc.} | |
211 proc glslang_program_create*(): ptr glslang_program_t {.importc.} | |
212 proc glslang_program_delete*(program: ptr glslang_program_t) {.importc.} | |
213 proc glslang_program_add_shader*(program: ptr glslang_program_t; shader: ptr glslang_shader_t) {.importc.} | |
214 proc glslang_program_link*(program: ptr glslang_program_t; messages: cint): cint {.importc.} | |
215 | |
216 proc glslang_program_add_source_text*(program: ptr glslang_program_t; stage: glslang_stage_t; text: cstring; len: csize_t) {.importc.} | |
217 proc glslang_program_set_source_file*(program: ptr glslang_program_t; stage: glslang_stage_t; file: cstring) {.importc.} | |
218 proc glslang_program_map_io*(program: ptr glslang_program_t): cint {.importc.} | |
219 proc glslang_program_SPIRV_generate*(program: ptr glslang_program_t; stage: glslang_stage_t) {.importc.} | |
220 proc glslang_program_SPIRV_generate_with_options*(program: ptr glslang_program_t; stage: glslang_stage_t; spv_options: ptr glslang_spv_options_t) {.importc.} | |
221 proc glslang_program_SPIRV_get_size*(program: ptr glslang_program_t): csize_t {.importc.} | |
222 proc glslang_program_SPIRV_get*(program: ptr glslang_program_t; a2: ptr cuint) {.importc.} | |
223 proc glslang_program_SPIRV_get_ptr*(program: ptr glslang_program_t): ptr cuint {.importc.} | |
224 proc glslang_program_SPIRV_get_messages*(program: ptr glslang_program_t): cstring {.importc.} | |
225 proc glslang_program_get_info_log*(program: ptr glslang_program_t): cstring {.importc.} | |
226 proc glslang_program_get_info_debug_log*(program: ptr glslang_program_t): cstring {.importc.} | |
227 | |
228 proc glslang_default_resource*(): ptr glslang_resource_t {.importc.} | |
229 proc glslang_default_resource_string*(): cstring {.importc.} | |
230 proc glslang_decode_resource_limits*(resources: ptr glslang_resource_t , config: cstring) {.importc.} |