spirv-cross 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/ext/spirv_cross/rb_spvx_compiler.cpp +39 -33
- data/lib/spirv/cross/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06b40e36f910e035b20458c5088f1946b7d6307321d5b0b73235d9681acaeec4
|
4
|
+
data.tar.gz: 57a90fa0a95cd82aebb6fbd2db1ca14ddc011bc1113434991f4ce8fc368d812c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 258c51a5d07e42dc6bc44a0e8161f42f9a146e8d76583e3b8d958294dcf21102ab4959d550e642a488b14d858b891ce9ce524c7001724eb05ce46c752d8c381f
|
7
|
+
data.tar.gz: 694ed022139b8ad9d90ffdbccd91d2cb06128a9495b2811a2103730ead7a9b8e2e36b2691238c1db2b4fde9d1827bf65bbcc0e357c7525ebbeb2fbf0c217a880
|
data/Gemfile.lock
CHANGED
@@ -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 (
|
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
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
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
|
|
data/lib/spirv/cross/version.rb
CHANGED
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.
|
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-
|
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.
|
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.
|