spirv-cross 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2441261f9f58a2fc569cfa3fab88a9a6ecc9666514e89d5a559a55f83f6b9487
4
- data.tar.gz: 4545b775ac721125cdbf1af53377a1ce26c5924cf6957ce1d47c3f9180788537
3
+ metadata.gz: 06b40e36f910e035b20458c5088f1946b7d6307321d5b0b73235d9681acaeec4
4
+ data.tar.gz: 57a90fa0a95cd82aebb6fbd2db1ca14ddc011bc1113434991f4ce8fc368d812c
5
5
  SHA512:
6
- metadata.gz: c9ae1805ee23b5c02c047dbb39820e9a1990fef23357fe26d7eaeabbaa8c16a1e1c5fd4a68489d2628ca01ea3d177f8cbe66e27a8408e4316eaa31a9192d0d8d
7
- data.tar.gz: 9aa286c888bbda09f8f56d29a0a5bd728295d1e1ea65235d88988f3a415a4436c54e5797a26f1d5453eb77416a2d98f6958721959a7385d0bcd299efc4f76940
6
+ metadata.gz: 258c51a5d07e42dc6bc44a0e8161f42f9a146e8d76583e3b8d958294dcf21102ab4959d550e642a488b14d858b891ce9ce524c7001724eb05ce46c752d8c381f
7
+ data.tar.gz: 694ed022139b8ad9d90ffdbccd91d2cb06128a9495b2811a2103730ead7a9b8e2e36b2691238c1db2b4fde9d1827bf65bbcc0e357c7525ebbeb2fbf0c217a880
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- spirv-cross (0.1.2)
4
+ spirv-cross (0.1.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -22,4 +22,4 @@ DEPENDENCIES
22
22
  spirv-cross!
23
23
 
24
24
  BUNDLED WITH
25
- 2.1.1
25
+ 2.1.2
@@ -179,11 +179,9 @@ extern "C" {
179
179
  return vres;
180
180
  }
181
181
 
182
- VALUE shader_resource_vector_to_ary(spirv_cross::Compiler &compiler, spirv_cross::SmallVector<spirv_cross::Resource> &vec, bool print_ssbo) {
182
+ VALUE shader_resource_vector_to_ary(spirv_cross::Compiler &compiler, spirv_cross::SmallVector<spirv_cross::Resource> &vec, bool print_ssbo, bool is_buffer) {
183
183
  VALUE ret = rb_ary_new();
184
- for (size_t i = 0; i < vec.size(); i++) {
185
- spirv_cross::Resource &res = vec[i];
186
-
184
+ for (auto &res : vec) {
187
185
  // just merge extra data into the type hash instead of creating a nested type hash
188
186
  VALUE vres = rb_spirv_type(compiler, res.type_id);
189
187
 
@@ -193,23 +191,27 @@ extern "C" {
193
191
  // // rb_hash_aset(vres, ID2SYM(rb_intern("base_type")), rb_spirv_type(compiler, res.base_type_id));
194
192
  // rb_hash_aset(vres, ID2SYM(rb_intern("type")), rb_spirv_type(compiler, res.type_id));
195
193
 
196
- spirv_cross::SmallVector<spirv_cross::BufferRange> ranges = compiler.get_active_buffer_ranges(res.id);
197
- VALUE vranges = rb_ary_new();
198
- rb_hash_aset(vres, ID2SYM(rb_intern("active_buffer_ranges")), vranges);
199
- for (auto &range : ranges) {
200
- VALUE vrange = rb_hash_new();
201
- rb_hash_aset(vrange, ID2SYM(rb_intern("index")), UINT2NUM(range.index));
202
- rb_hash_aset(vrange, ID2SYM(rb_intern("offset")), SIZET2NUM(range.offset));
203
- rb_hash_aset(vrange, ID2SYM(rb_intern("size")), SIZET2NUM(range.range));
204
- rb_ary_push(vranges, vrange);
194
+ // This can be used for Buffer (UBO), BufferBlock/StorageBuffer (SSBO) and PushConstant blocks.
195
+ if (is_buffer) {
196
+ auto ranges = compiler.get_active_buffer_ranges(res.id);
197
+ VALUE vranges = rb_ary_new();
198
+ rb_hash_aset(vres, ID2SYM(rb_intern("active_buffer_ranges")), vranges);
199
+ for (auto &range : ranges) {
200
+ VALUE vrange = rb_hash_new();
201
+ rb_hash_aset(vrange, ID2SYM(rb_intern("index")), UINT2NUM(range.index));
202
+ rb_hash_aset(vrange, ID2SYM(rb_intern("offset")), SIZET2NUM(range.offset));
203
+ rb_hash_aset(vrange, ID2SYM(rb_intern("size")), SIZET2NUM(range.range));
204
+ rb_ary_push(vranges, vrange);
205
+ }
205
206
  }
206
207
 
207
208
  auto &type = compiler.get_type(res.type_id);
208
209
 
209
210
  /* The following code was basically lifted from spirv-cross/main.cpp */
210
211
 
211
- if (print_ssbo && compiler.buffer_is_hlsl_counter_buffer(res.id))
212
+ if (print_ssbo && compiler.buffer_is_hlsl_counter_buffer(res.id)) {
212
213
  continue;
214
+ }
213
215
 
214
216
  // If we don't have a name, use the fallback for the type instead of the variable
215
217
  // for SSBOs and UBOs since those are the only meaningful names to use externally.
@@ -232,18 +234,20 @@ extern "C" {
232
234
  }
233
235
 
234
236
  spirv_cross::Bitset mask;
235
- if (print_ssbo)
237
+ if (print_ssbo) {
236
238
  mask = compiler.get_buffer_block_flags(res.id);
237
- else
239
+ } else {
238
240
  mask = compiler.get_decoration_bitset(res.id);
241
+ }
239
242
 
240
243
  VALUE ary = rb_ary_new();
241
244
  rb_hash_aset(vres, ID2SYM(rb_intern("array_sizes")), ary);
242
245
  for (size_t j = 0; j < type.array.size(); j++) {
243
- if (type.array_size_literal[j])
246
+ if (type.array_size_literal[j]) {
244
247
  rb_ary_push(ary, UINT2NUM(type.array[j]));
245
- else
248
+ } else {
246
249
  rb_ary_push(ary, ID2SYM(rb_intern("expression")));
250
+ }
247
251
  }
248
252
 
249
253
  rb_hash_aset(vres, ID2SYM(rb_intern("name")),
@@ -266,13 +270,15 @@ extern "C" {
266
270
  if (is_sized_block)
267
271
  {
268
272
  rb_hash_aset(vres, ID2SYM(rb_intern("block_size")), UINT2NUM(block_size));
269
- if (runtime_array_stride)
273
+ if (runtime_array_stride) {
270
274
  rb_hash_aset(vres, ID2SYM(rb_intern("unsized_array_stride")), UINT2NUM(runtime_array_stride));
275
+ }
271
276
  }
272
277
 
273
278
  uint32_t counter_id = 0;
274
- if (print_ssbo && compiler.buffer_get_hlsl_counter_buffer(res.id, counter_id))
279
+ if (print_ssbo && compiler.buffer_get_hlsl_counter_buffer(res.id, counter_id)) {
275
280
  rb_hash_aset(vres, ID2SYM(rb_intern("hlsl_counter_buffer_id")), UINT2NUM(counter_id));
281
+ }
276
282
 
277
283
  rb_ary_push(ret, vres);
278
284
  }
@@ -281,19 +287,19 @@ extern "C" {
281
287
 
282
288
  inline VALUE shader_resources_to_hash(spirv_cross::Compiler *comp, spirv_cross::ShaderResources &resources) {
283
289
  VALUE vsr = rb_hash_new();
284
- #define HASH_PUSH_RESOURCE_ARY(name, ssbo) \
285
- rb_hash_aset(vsr, ID2SYM(rb_intern(#name)), shader_resource_vector_to_ary(*comp, resources.name, ssbo));
286
- HASH_PUSH_RESOURCE_ARY(uniform_buffers, false);
287
- HASH_PUSH_RESOURCE_ARY(storage_buffers, true);
288
- HASH_PUSH_RESOURCE_ARY(stage_inputs, false);
289
- HASH_PUSH_RESOURCE_ARY(stage_outputs, false);
290
- HASH_PUSH_RESOURCE_ARY(subpass_inputs, false);
291
- HASH_PUSH_RESOURCE_ARY(storage_images, false);
292
- HASH_PUSH_RESOURCE_ARY(sampled_images, false);
293
- HASH_PUSH_RESOURCE_ARY(atomic_counters, false);
294
- HASH_PUSH_RESOURCE_ARY(push_constant_buffers, false);
295
- HASH_PUSH_RESOURCE_ARY(separate_images, false);
296
- HASH_PUSH_RESOURCE_ARY(separate_samplers, false);
290
+ #define HASH_PUSH_RESOURCE_ARY(name, ssbo, is_buffer) \
291
+ rb_hash_aset(vsr, ID2SYM(rb_intern(#name)), shader_resource_vector_to_ary(*comp, resources.name, ssbo, is_buffer));
292
+ HASH_PUSH_RESOURCE_ARY(uniform_buffers, false, true);
293
+ HASH_PUSH_RESOURCE_ARY(storage_buffers, true, true);
294
+ HASH_PUSH_RESOURCE_ARY(stage_inputs, false, false);
295
+ HASH_PUSH_RESOURCE_ARY(stage_outputs, false, false);
296
+ HASH_PUSH_RESOURCE_ARY(subpass_inputs, false, false);
297
+ HASH_PUSH_RESOURCE_ARY(storage_images, false, false);
298
+ HASH_PUSH_RESOURCE_ARY(sampled_images, false, false);
299
+ HASH_PUSH_RESOURCE_ARY(atomic_counters, false, false);
300
+ HASH_PUSH_RESOURCE_ARY(push_constant_buffers, false, true);
301
+ HASH_PUSH_RESOURCE_ARY(separate_images, false, false);
302
+ HASH_PUSH_RESOURCE_ARY(separate_samplers, false, false);
297
303
  return vsr;
298
304
  }
299
305
 
@@ -1,5 +1,5 @@
1
1
  module SPIRV
2
2
  module Cross
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spirv-cross
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin MacKenzie IV
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-10 00:00:00.000000000 Z
11
+ date: 2020-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  requirements: []
118
- rubygems_version: 3.1.1
118
+ rubygems_version: 3.1.2
119
119
  signing_key:
120
120
  specification_version: 4
121
121
  summary: Ruby bindings for SPIRV-Cross to provide reflection of SPIR-V shaders.