spirv-cross 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +7 -7
- data/exe/spirv-dump +6 -0
- data/ext/spirv_cross/extconf.rb +1 -1
- data/ext/spirv_cross/rb_spvx_compiler.cpp +137 -142
- data/lib/spirv/cross/version.rb +1 -1
- data/spirv-cross.gemspec +2 -2
- metadata +7 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2441261f9f58a2fc569cfa3fab88a9a6ecc9666514e89d5a559a55f83f6b9487
|
4
|
+
data.tar.gz: 4545b775ac721125cdbf1af53377a1ce26c5924cf6957ce1d47c3f9180788537
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9ae1805ee23b5c02c047dbb39820e9a1990fef23357fe26d7eaeabbaa8c16a1e1c5fd4a68489d2628ca01ea3d177f8cbe66e27a8408e4316eaa31a9192d0d8d
|
7
|
+
data.tar.gz: 9aa286c888bbda09f8f56d29a0a5bd728295d1e1ea65235d88988f3a415a4436c54e5797a26f1d5453eb77416a2d98f6958721959a7385d0bcd299efc4f76940
|
data/Gemfile.lock
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
spirv-cross (0.1.
|
4
|
+
spirv-cross (0.1.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
minitest (5.
|
10
|
-
rake (
|
11
|
-
rake-compiler (1.0
|
9
|
+
minitest (5.13.0)
|
10
|
+
rake (13.0.1)
|
11
|
+
rake-compiler (1.1.0)
|
12
12
|
rake
|
13
13
|
|
14
14
|
PLATFORMS
|
15
15
|
ruby
|
16
16
|
|
17
17
|
DEPENDENCIES
|
18
|
-
bundler (~> 1
|
18
|
+
bundler (~> 2.1)
|
19
19
|
minitest (~> 5.0)
|
20
|
-
rake (~>
|
20
|
+
rake (~> 13.0)
|
21
21
|
rake-compiler
|
22
22
|
spirv-cross!
|
23
23
|
|
24
24
|
BUNDLED WITH
|
25
|
-
1.
|
25
|
+
2.1.1
|
data/exe/spirv-dump
CHANGED
data/ext/spirv_cross/extconf.rb
CHANGED
@@ -4,7 +4,7 @@ require 'rake/file_utils'
|
|
4
4
|
|
5
5
|
include FileUtils
|
6
6
|
|
7
|
-
REVISION = '
|
7
|
+
REVISION = 'f912c328'
|
8
8
|
|
9
9
|
unless File.directory?(File.expand_path('spirv-cross', __dir__))
|
10
10
|
sh 'git', 'clone', 'https://github.com/KhronosGroup/SPIRV-Cross', File.expand_path('spirv-cross', __dir__)
|
@@ -1,17 +1,13 @@
|
|
1
1
|
#include "rb_spirv_cross.h"
|
2
2
|
#include "spirv_cross.hpp"
|
3
3
|
|
4
|
-
using namespace spirv_cross;
|
5
|
-
using namespace std;
|
6
|
-
using namespace spv;
|
7
|
-
|
8
4
|
void compiler_free(void* data) {
|
9
|
-
Compiler *comp = (Compiler *) data;
|
5
|
+
spirv_cross::Compiler *comp = (spirv_cross::Compiler *) data;
|
10
6
|
delete comp;
|
11
7
|
}
|
12
8
|
|
13
9
|
size_t compiler_size(const void* data) {
|
14
|
-
return sizeof(Compiler);
|
10
|
+
return sizeof(spirv_cross::Compiler);
|
15
11
|
}
|
16
12
|
|
17
13
|
static const rb_data_type_t compiler_type = {
|
@@ -19,8 +15,7 @@ static const rb_data_type_t compiler_type = {
|
|
19
15
|
.function = {
|
20
16
|
.dmark = NULL,
|
21
17
|
.dfree = compiler_free,
|
22
|
-
.dsize = compiler_size
|
23
|
-
.reserved = { 0, 0 }
|
18
|
+
.dsize = compiler_size
|
24
19
|
},
|
25
20
|
.parent = NULL,
|
26
21
|
.data = NULL,
|
@@ -28,25 +23,25 @@ static const rb_data_type_t compiler_type = {
|
|
28
23
|
};
|
29
24
|
|
30
25
|
extern "C" {
|
31
|
-
VALUE rb_spirv_type(Compiler &compiler, uint32_t type_id) {
|
26
|
+
VALUE rb_spirv_type(spirv_cross::Compiler &compiler, uint32_t type_id) {
|
32
27
|
VALUE vres = rb_hash_new();
|
33
28
|
auto &base_type = compiler.get_type(type_id);
|
34
29
|
switch(base_type.basetype) {
|
35
|
-
case SPIRType::BaseType::Void: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("void"))); break;
|
36
|
-
case SPIRType::BaseType::Boolean: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("boolean"))); break;
|
37
|
-
case SPIRType::BaseType::Char: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("char"))); break;
|
38
|
-
case SPIRType::BaseType::Int: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("int"))); break;
|
39
|
-
case SPIRType::BaseType::UInt: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("uint"))); break;
|
40
|
-
case SPIRType::BaseType::Int64: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("int64"))); break;
|
41
|
-
case SPIRType::BaseType::UInt64: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("uint64"))); break;
|
42
|
-
case SPIRType::BaseType::AtomicCounter: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("atomic_counter"))); break;
|
43
|
-
case SPIRType::BaseType::Half: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("half"))); break;
|
44
|
-
case SPIRType::BaseType::Float: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("float"))); break;
|
45
|
-
case SPIRType::BaseType::Double: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("double"))); break;
|
46
|
-
case SPIRType::BaseType::Struct: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("struct"))); break;
|
47
|
-
case SPIRType::BaseType::Image: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("image"))); break;
|
48
|
-
case SPIRType::BaseType::SampledImage: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("sampled_image"))); break;
|
49
|
-
case SPIRType::BaseType::Sampler: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("sampler"))); break;
|
30
|
+
case spirv_cross::SPIRType::BaseType::Void: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("void"))); break;
|
31
|
+
case spirv_cross::SPIRType::BaseType::Boolean: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("boolean"))); break;
|
32
|
+
case spirv_cross::SPIRType::BaseType::Char: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("char"))); break;
|
33
|
+
case spirv_cross::SPIRType::BaseType::Int: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("int"))); break;
|
34
|
+
case spirv_cross::SPIRType::BaseType::UInt: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("uint"))); break;
|
35
|
+
case spirv_cross::SPIRType::BaseType::Int64: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("int64"))); break;
|
36
|
+
case spirv_cross::SPIRType::BaseType::UInt64: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("uint64"))); break;
|
37
|
+
case spirv_cross::SPIRType::BaseType::AtomicCounter: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("atomic_counter"))); break;
|
38
|
+
case spirv_cross::SPIRType::BaseType::Half: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("half"))); break;
|
39
|
+
case spirv_cross::SPIRType::BaseType::Float: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("float"))); break;
|
40
|
+
case spirv_cross::SPIRType::BaseType::Double: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("double"))); break;
|
41
|
+
case spirv_cross::SPIRType::BaseType::Struct: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("struct"))); break;
|
42
|
+
case spirv_cross::SPIRType::BaseType::Image: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("image"))); break;
|
43
|
+
case spirv_cross::SPIRType::BaseType::SampledImage: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("sampled_image"))); break;
|
44
|
+
case spirv_cross::SPIRType::BaseType::Sampler: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("sampler"))); break;
|
50
45
|
default: rb_hash_aset(vres, ID2SYM(rb_intern("type")), ID2SYM(rb_intern("unknown")));
|
51
46
|
}
|
52
47
|
|
@@ -55,19 +50,19 @@ extern "C" {
|
|
55
50
|
rb_hash_aset(vres, ID2SYM(rb_intern("columns")), UINT2NUM(base_type.columns));
|
56
51
|
rb_hash_aset(vres, ID2SYM(rb_intern("is_pointer")), base_type.pointer ? Qtrue : Qfalse);
|
57
52
|
|
58
|
-
if (base_type.basetype == SPIRType::BaseType::Image || base_type.basetype == SPIRType::BaseType::SampledImage) {
|
53
|
+
if (base_type.basetype == spirv_cross::SPIRType::BaseType::Image || base_type.basetype == spirv_cross::SPIRType::BaseType::SampledImage) {
|
59
54
|
VALUE vimg = rb_hash_new();
|
60
55
|
rb_hash_aset(vimg, ID2SYM(rb_intern("type")), rb_spirv_type(compiler, base_type.image.type));
|
61
56
|
switch(base_type.image.dim) {
|
62
|
-
case Dim::Dim1D: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), INT2NUM(1)); break;
|
63
|
-
case Dim::Dim2D: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), INT2NUM(2)); break;
|
64
|
-
case Dim::Dim3D: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), INT2NUM(3)); break;
|
65
|
-
case Dim::DimCube: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("cube"))); break;
|
66
|
-
case Dim::DimRect: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("rect"))); break;
|
67
|
-
case Dim::DimBuffer: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("buffer"))); break;
|
68
|
-
case Dim::DimSubpassData: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("subpass_data"))); break;
|
69
|
-
case Dim::DimMax: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("max"))); break;
|
70
|
-
default:
|
57
|
+
case spv::Dim::Dim1D: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), INT2NUM(1)); break;
|
58
|
+
case spv::Dim::Dim2D: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), INT2NUM(2)); break;
|
59
|
+
case spv::Dim::Dim3D: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), INT2NUM(3)); break;
|
60
|
+
case spv::Dim::DimCube: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("cube"))); break;
|
61
|
+
case spv::Dim::DimRect: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("rect"))); break;
|
62
|
+
case spv::Dim::DimBuffer: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("buffer"))); break;
|
63
|
+
case spv::Dim::DimSubpassData: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("subpass_data"))); break;
|
64
|
+
case spv::Dim::DimMax: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("max"))); break;
|
65
|
+
default: rb_hash_aset(vimg, ID2SYM(rb_intern("dimensions")), ID2SYM(rb_intern("unknown")));
|
71
66
|
}
|
72
67
|
rb_hash_aset(vimg, ID2SYM(rb_intern("depth")), base_type.image.depth ? Qtrue : Qfalse);
|
73
68
|
rb_hash_aset(vimg, ID2SYM(rb_intern("arrayed")), base_type.image.arrayed ? Qtrue : Qfalse);
|
@@ -78,74 +73,74 @@ extern "C" {
|
|
78
73
|
default: rb_hash_aset(vimg, ID2SYM(rb_intern("sampling")), Qfalse);
|
79
74
|
}
|
80
75
|
switch(base_type.image.format) {
|
81
|
-
case ImageFormatRgba32f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba32f"))); break;
|
82
|
-
case ImageFormatRgba16f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba16f"))); break;
|
83
|
-
case ImageFormatR32f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r32f"))); break;
|
84
|
-
case ImageFormatRgba8: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba8"))); break;
|
85
|
-
case ImageFormatRgba8Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba8snorm"))); break;
|
86
|
-
case ImageFormatRg32f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg32f"))); break;
|
87
|
-
case ImageFormatRg16f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg16f"))); break;
|
88
|
-
case ImageFormatR11fG11fB10f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r11fg11fb10f"))); break;
|
89
|
-
case ImageFormatR16f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r16f"))); break;
|
90
|
-
case ImageFormatRgba16: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba16"))); break;
|
91
|
-
case ImageFormatRgb10A2: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgb10a2"))); break;
|
92
|
-
case ImageFormatRg16: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg16"))); break;
|
93
|
-
case ImageFormatRg8: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg8"))); break;
|
94
|
-
case ImageFormatR16: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r16"))); break;
|
95
|
-
case ImageFormatR8: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r8"))); break;
|
96
|
-
case ImageFormatRgba16Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba16snorm"))); break;
|
97
|
-
case ImageFormatRg16Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg16snorm"))); break;
|
98
|
-
case ImageFormatRg8Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg8snorm"))); break;
|
99
|
-
case ImageFormatR16Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r16snorm"))); break;
|
100
|
-
case ImageFormatR8Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r8snorm"))); break;
|
101
|
-
case ImageFormatRgba32i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba32i"))); break;
|
102
|
-
case ImageFormatRgba16i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba16i"))); break;
|
103
|
-
case ImageFormatRgba8i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba8i"))); break;
|
104
|
-
case ImageFormatR32i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r32i"))); break;
|
105
|
-
case ImageFormatRg32i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg32i"))); break;
|
106
|
-
case ImageFormatRg16i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg16i"))); break;
|
107
|
-
case ImageFormatRg8i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg8i"))); break;
|
108
|
-
case ImageFormatR16i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r16i"))); break;
|
109
|
-
case ImageFormatR8i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r8i"))); break;
|
110
|
-
case ImageFormatRgba32ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba32ui"))); break;
|
111
|
-
case ImageFormatRgba16ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba16ui"))); break;
|
112
|
-
case ImageFormatRgba8ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba8ui"))); break;
|
113
|
-
case ImageFormatR32ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r32ui"))); break;
|
114
|
-
case ImageFormatRgb10a2ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgb10a2ui"))); break;
|
115
|
-
case ImageFormatRg32ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg32ui"))); break;
|
116
|
-
case ImageFormatRg16ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg16ui"))); break;
|
117
|
-
case ImageFormatRg8ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg8ui"))); break;
|
118
|
-
case ImageFormatR16ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r16ui"))); break;
|
119
|
-
case ImageFormatR8ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r8ui"))); break;
|
120
|
-
case ImageFormatMax: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("max"))); break;
|
121
|
-
default:
|
76
|
+
case spv::ImageFormatRgba32f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba32f"))); break;
|
77
|
+
case spv::ImageFormatRgba16f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba16f"))); break;
|
78
|
+
case spv::ImageFormatR32f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r32f"))); break;
|
79
|
+
case spv::ImageFormatRgba8: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba8"))); break;
|
80
|
+
case spv::ImageFormatRgba8Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba8snorm"))); break;
|
81
|
+
case spv::ImageFormatRg32f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg32f"))); break;
|
82
|
+
case spv::ImageFormatRg16f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg16f"))); break;
|
83
|
+
case spv::ImageFormatR11fG11fB10f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r11fg11fb10f"))); break;
|
84
|
+
case spv::ImageFormatR16f: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r16f"))); break;
|
85
|
+
case spv::ImageFormatRgba16: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba16"))); break;
|
86
|
+
case spv::ImageFormatRgb10A2: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgb10a2"))); break;
|
87
|
+
case spv::ImageFormatRg16: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg16"))); break;
|
88
|
+
case spv::ImageFormatRg8: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg8"))); break;
|
89
|
+
case spv::ImageFormatR16: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r16"))); break;
|
90
|
+
case spv::ImageFormatR8: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r8"))); break;
|
91
|
+
case spv::ImageFormatRgba16Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba16snorm"))); break;
|
92
|
+
case spv::ImageFormatRg16Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg16snorm"))); break;
|
93
|
+
case spv::ImageFormatRg8Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg8snorm"))); break;
|
94
|
+
case spv::ImageFormatR16Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r16snorm"))); break;
|
95
|
+
case spv::ImageFormatR8Snorm: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r8snorm"))); break;
|
96
|
+
case spv::ImageFormatRgba32i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba32i"))); break;
|
97
|
+
case spv::ImageFormatRgba16i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba16i"))); break;
|
98
|
+
case spv::ImageFormatRgba8i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba8i"))); break;
|
99
|
+
case spv::ImageFormatR32i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r32i"))); break;
|
100
|
+
case spv::ImageFormatRg32i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg32i"))); break;
|
101
|
+
case spv::ImageFormatRg16i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg16i"))); break;
|
102
|
+
case spv::ImageFormatRg8i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg8i"))); break;
|
103
|
+
case spv::ImageFormatR16i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r16i"))); break;
|
104
|
+
case spv::ImageFormatR8i: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r8i"))); break;
|
105
|
+
case spv::ImageFormatRgba32ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba32ui"))); break;
|
106
|
+
case spv::ImageFormatRgba16ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba16ui"))); break;
|
107
|
+
case spv::ImageFormatRgba8ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgba8ui"))); break;
|
108
|
+
case spv::ImageFormatR32ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r32ui"))); break;
|
109
|
+
case spv::ImageFormatRgb10a2ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rgb10a2ui"))); break;
|
110
|
+
case spv::ImageFormatRg32ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg32ui"))); break;
|
111
|
+
case spv::ImageFormatRg16ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg16ui"))); break;
|
112
|
+
case spv::ImageFormatRg8ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("rg8ui"))); break;
|
113
|
+
case spv::ImageFormatR16ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r16ui"))); break;
|
114
|
+
case spv::ImageFormatR8ui: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("r8ui"))); break;
|
115
|
+
case spv::ImageFormatMax: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("max"))); break;
|
116
|
+
default: rb_hash_aset(vimg, ID2SYM(rb_intern("format")), ID2SYM(rb_intern("unknown")));
|
122
117
|
}
|
123
118
|
switch(base_type.image.access) {
|
124
|
-
case AccessQualifierReadOnly: rb_hash_aset(vimg, ID2SYM(rb_intern("access")), ID2SYM(rb_intern("read_only"))); break;
|
125
|
-
case AccessQualifierWriteOnly: rb_hash_aset(vimg, ID2SYM(rb_intern("access")), ID2SYM(rb_intern("write_only"))); break;
|
126
|
-
case AccessQualifierReadWrite: rb_hash_aset(vimg, ID2SYM(rb_intern("access")), ID2SYM(rb_intern("read_write"))); break;
|
127
|
-
case AccessQualifierMax: rb_hash_aset(vimg, ID2SYM(rb_intern("access")), ID2SYM(rb_intern("max"))); break;
|
128
|
-
default:
|
119
|
+
case spv::AccessQualifierReadOnly: rb_hash_aset(vimg, ID2SYM(rb_intern("access")), ID2SYM(rb_intern("read_only"))); break;
|
120
|
+
case spv::AccessQualifierWriteOnly: rb_hash_aset(vimg, ID2SYM(rb_intern("access")), ID2SYM(rb_intern("write_only"))); break;
|
121
|
+
case spv::AccessQualifierReadWrite: rb_hash_aset(vimg, ID2SYM(rb_intern("access")), ID2SYM(rb_intern("read_write"))); break;
|
122
|
+
case spv::AccessQualifierMax: rb_hash_aset(vimg, ID2SYM(rb_intern("access")), ID2SYM(rb_intern("max"))); break;
|
123
|
+
default: rb_hash_aset(vimg, ID2SYM(rb_intern("access")), ID2SYM(rb_intern("unknown"))); break;
|
129
124
|
}
|
130
125
|
rb_hash_aset(vres, ID2SYM(rb_intern("image")), vimg);
|
131
126
|
}
|
132
127
|
|
133
128
|
switch(base_type.storage) {
|
134
|
-
case StorageClassGeneric: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("generic"))); break;
|
135
|
-
case StorageClassUniformConstant: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("uniform_constant"))); break;
|
136
|
-
case StorageClassInput: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("input"))); break;
|
137
|
-
case StorageClassUniform: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("uniform"))); break;
|
138
|
-
case StorageClassOutput: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("output"))); break;
|
139
|
-
case StorageClassWorkgroup: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("workgroup"))); break;
|
140
|
-
case StorageClassCrossWorkgroup: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("cross_work_group"))); break;
|
141
|
-
case StorageClassPrivate: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("private"))); break;
|
142
|
-
case StorageClassFunction: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("function"))); break;
|
143
|
-
case StorageClassPushConstant: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("push_constant"))); break;
|
144
|
-
case StorageClassAtomicCounter: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("atomic_counter"))); break;
|
145
|
-
case StorageClassImage: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("image"))); break;
|
146
|
-
case StorageClassStorageBuffer: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("storage_buffer"))); break;
|
147
|
-
case StorageClassMax: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("max"))); break;
|
148
|
-
default:
|
129
|
+
case spv::StorageClassGeneric: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("generic"))); break;
|
130
|
+
case spv::StorageClassUniformConstant: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("uniform_constant"))); break;
|
131
|
+
case spv::StorageClassInput: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("input"))); break;
|
132
|
+
case spv::StorageClassUniform: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("uniform"))); break;
|
133
|
+
case spv::StorageClassOutput: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("output"))); break;
|
134
|
+
case spv::StorageClassWorkgroup: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("workgroup"))); break;
|
135
|
+
case spv::StorageClassCrossWorkgroup: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("cross_work_group"))); break;
|
136
|
+
case spv::StorageClassPrivate: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("private"))); break;
|
137
|
+
case spv::StorageClassFunction: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("function"))); break;
|
138
|
+
case spv::StorageClassPushConstant: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("push_constant"))); break;
|
139
|
+
case spv::StorageClassAtomicCounter: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("atomic_counter"))); break;
|
140
|
+
case spv::StorageClassImage: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("image"))); break;
|
141
|
+
case spv::StorageClassStorageBuffer: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("storage_buffer"))); break;
|
142
|
+
case spv::StorageClassMax: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("max"))); break;
|
143
|
+
default: rb_hash_aset(vres, ID2SYM(rb_intern("storage_class")), ID2SYM(rb_intern("unknown")));
|
149
144
|
}
|
150
145
|
|
151
146
|
VALUE vmembers = rb_ary_new();
|
@@ -177,17 +172,17 @@ extern "C" {
|
|
177
172
|
size_t matrix_stride = compiler.type_struct_member_matrix_stride(base_type, i);
|
178
173
|
rb_hash_aset(vmember, ID2SYM(rb_intern("matrix_stride")), SIZET2NUM(matrix_stride));
|
179
174
|
}
|
180
|
-
const string &name = compiler.get_member_name(base_type.self, i);
|
175
|
+
const std::string &name = compiler.get_member_name(base_type.self, i);
|
181
176
|
rb_hash_aset(vmember, ID2SYM(rb_intern("name")), rb_str_new2(name.c_str()));
|
182
177
|
}
|
183
178
|
|
184
179
|
return vres;
|
185
180
|
}
|
186
181
|
|
187
|
-
VALUE shader_resource_vector_to_ary(Compiler &compiler,
|
182
|
+
VALUE shader_resource_vector_to_ary(spirv_cross::Compiler &compiler, spirv_cross::SmallVector<spirv_cross::Resource> &vec, bool print_ssbo) {
|
188
183
|
VALUE ret = rb_ary_new();
|
189
184
|
for (size_t i = 0; i < vec.size(); i++) {
|
190
|
-
Resource &res = vec[i];
|
185
|
+
spirv_cross::Resource &res = vec[i];
|
191
186
|
|
192
187
|
// just merge extra data into the type hash instead of creating a nested type hash
|
193
188
|
VALUE vres = rb_spirv_type(compiler, res.type_id);
|
@@ -198,7 +193,7 @@ extern "C" {
|
|
198
193
|
// // rb_hash_aset(vres, ID2SYM(rb_intern("base_type")), rb_spirv_type(compiler, res.base_type_id));
|
199
194
|
// rb_hash_aset(vres, ID2SYM(rb_intern("type")), rb_spirv_type(compiler, res.type_id));
|
200
195
|
|
201
|
-
|
196
|
+
spirv_cross::SmallVector<spirv_cross::BufferRange> ranges = compiler.get_active_buffer_ranges(res.id);
|
202
197
|
VALUE vranges = rb_ary_new();
|
203
198
|
rb_hash_aset(vres, ID2SYM(rb_intern("active_buffer_ranges")), vranges);
|
204
199
|
for (auto &range : ranges) {
|
@@ -219,12 +214,12 @@ extern "C" {
|
|
219
214
|
// If we don't have a name, use the fallback for the type instead of the variable
|
220
215
|
// for SSBOs and UBOs since those are the only meaningful names to use externally.
|
221
216
|
// Push constant blocks are still accessed by name and not block name, even though they are technically Blocks.
|
222
|
-
bool is_push_constant = compiler.get_storage_class(res.id) == StorageClassPushConstant;
|
223
|
-
bool is_block = compiler.get_decoration_bitset(type.self).get(DecorationBlock) ||
|
224
|
-
compiler.get_decoration_bitset(type.self).get(DecorationBufferBlock);
|
225
|
-
bool is_sized_block = is_block && (compiler.get_storage_class(res.id) == StorageClassUniform ||
|
226
|
-
compiler.get_storage_class(res.id) == StorageClassUniformConstant);
|
227
|
-
|
217
|
+
bool is_push_constant = compiler.get_storage_class(res.id) == spv::StorageClassPushConstant;
|
218
|
+
bool is_block = compiler.get_decoration_bitset(type.self).get(spv::DecorationBlock) ||
|
219
|
+
compiler.get_decoration_bitset(type.self).get(spv::DecorationBufferBlock);
|
220
|
+
bool is_sized_block = is_block && (compiler.get_storage_class(res.id) == spv::StorageClassUniform ||
|
221
|
+
compiler.get_storage_class(res.id) == spv::StorageClassUniformConstant);
|
222
|
+
spirv_cross::ID fallback_id = !is_push_constant && is_block ? spirv_cross::ID(res.base_type_id) : spirv_cross::ID(res.id);
|
228
223
|
|
229
224
|
uint32_t block_size = 0;
|
230
225
|
uint32_t runtime_array_stride = 0;
|
@@ -236,7 +231,7 @@ extern "C" {
|
|
236
231
|
compiler.get_declared_struct_size_runtime_array(base_type, 0));
|
237
232
|
}
|
238
233
|
|
239
|
-
Bitset mask;
|
234
|
+
spirv_cross::Bitset mask;
|
240
235
|
if (print_ssbo)
|
241
236
|
mask = compiler.get_buffer_block_flags(res.id);
|
242
237
|
else
|
@@ -256,17 +251,17 @@ extern "C" {
|
|
256
251
|
res.name.c_str() :
|
257
252
|
compiler.get_fallback_name(fallback_id).c_str()));
|
258
253
|
|
259
|
-
if (mask.get(DecorationLocation))
|
260
|
-
rb_hash_aset(vres, ID2SYM(rb_intern("location")), UINT2NUM(compiler.get_decoration(res.id, DecorationLocation)));
|
261
|
-
if (mask.get(DecorationDescriptorSet))
|
262
|
-
rb_hash_aset(vres, ID2SYM(rb_intern("descriptor_set")), UINT2NUM(compiler.get_decoration(res.id, DecorationDescriptorSet)));
|
263
|
-
if (mask.get(DecorationBinding))
|
264
|
-
rb_hash_aset(vres, ID2SYM(rb_intern("binding")), UINT2NUM(compiler.get_decoration(res.id, DecorationBinding)));
|
265
|
-
if (mask.get(DecorationInputAttachmentIndex))
|
266
|
-
rb_hash_aset(vres, ID2SYM(rb_intern("attachment")), UINT2NUM(compiler.get_decoration(res.id, DecorationInputAttachmentIndex)));
|
267
|
-
if (mask.get(DecorationNonReadable))
|
254
|
+
if (mask.get(spv::DecorationLocation))
|
255
|
+
rb_hash_aset(vres, ID2SYM(rb_intern("location")), UINT2NUM(compiler.get_decoration(res.id, spv::DecorationLocation)));
|
256
|
+
if (mask.get(spv::DecorationDescriptorSet))
|
257
|
+
rb_hash_aset(vres, ID2SYM(rb_intern("descriptor_set")), UINT2NUM(compiler.get_decoration(res.id, spv::DecorationDescriptorSet)));
|
258
|
+
if (mask.get(spv::DecorationBinding))
|
259
|
+
rb_hash_aset(vres, ID2SYM(rb_intern("binding")), UINT2NUM(compiler.get_decoration(res.id, spv::DecorationBinding)));
|
260
|
+
if (mask.get(spv::DecorationInputAttachmentIndex))
|
261
|
+
rb_hash_aset(vres, ID2SYM(rb_intern("attachment")), UINT2NUM(compiler.get_decoration(res.id, spv::DecorationInputAttachmentIndex)));
|
262
|
+
if (mask.get(spv::DecorationNonReadable))
|
268
263
|
rb_hash_aset(vres, ID2SYM(rb_intern("write_only")), Qtrue);
|
269
|
-
if (mask.get(DecorationNonWritable))
|
264
|
+
if (mask.get(spv::DecorationNonWritable))
|
270
265
|
rb_hash_aset(vres, ID2SYM(rb_intern("read_only")), Qtrue);
|
271
266
|
if (is_sized_block)
|
272
267
|
{
|
@@ -284,7 +279,7 @@ extern "C" {
|
|
284
279
|
return ret;
|
285
280
|
}
|
286
281
|
|
287
|
-
inline VALUE shader_resources_to_hash(Compiler *comp, ShaderResources &resources) {
|
282
|
+
inline VALUE shader_resources_to_hash(spirv_cross::Compiler *comp, spirv_cross::ShaderResources &resources) {
|
288
283
|
VALUE vsr = rb_hash_new();
|
289
284
|
#define HASH_PUSH_RESOURCE_ARY(name, ssbo) \
|
290
285
|
rb_hash_aset(vsr, ID2SYM(rb_intern(#name)), shader_resource_vector_to_ary(*comp, resources.name, ssbo));
|
@@ -303,49 +298,49 @@ extern "C" {
|
|
303
298
|
}
|
304
299
|
|
305
300
|
VALUE rb_spvx_compiler_all_shader_resources(VALUE self) {
|
306
|
-
Compiler *comp;
|
307
|
-
TypedData_Get_Struct(rb_ivar_get(self, rb_intern("@handle")), Compiler, &compiler_type, comp);
|
308
|
-
ShaderResources resources = comp->get_shader_resources();
|
301
|
+
spirv_cross::Compiler *comp;
|
302
|
+
TypedData_Get_Struct(rb_ivar_get(self, rb_intern("@handle")), spirv_cross::Compiler, &compiler_type, comp);
|
303
|
+
spirv_cross::ShaderResources resources = comp->get_shader_resources();
|
309
304
|
return shader_resources_to_hash(comp, resources);
|
310
305
|
}
|
311
306
|
|
312
307
|
VALUE rb_spvx_compiler_active_shader_resources(VALUE self) {
|
313
|
-
Compiler *comp;
|
314
|
-
TypedData_Get_Struct(rb_ivar_get(self, rb_intern("@handle")), Compiler, &compiler_type, comp);
|
308
|
+
spirv_cross::Compiler *comp;
|
309
|
+
TypedData_Get_Struct(rb_ivar_get(self, rb_intern("@handle")), spirv_cross::Compiler, &compiler_type, comp);
|
315
310
|
auto active = comp->get_active_interface_variables();
|
316
|
-
ShaderResources resources = comp->get_shader_resources(active);
|
317
|
-
// comp->set_enabled_interface_variables(move(active));
|
311
|
+
spirv_cross::ShaderResources resources = comp->get_shader_resources(active);
|
312
|
+
// comp->set_enabled_interface_variables(std::move(active));
|
318
313
|
return shader_resources_to_hash(comp, resources);
|
319
314
|
}
|
320
315
|
|
321
316
|
VALUE rb_spvx_compiler_entry_points(VALUE self) {
|
322
|
-
Compiler *comp;
|
323
|
-
TypedData_Get_Struct(rb_ivar_get(self, rb_intern("@handle")), Compiler, &compiler_type, comp);
|
324
|
-
|
317
|
+
spirv_cross::Compiler *comp;
|
318
|
+
TypedData_Get_Struct(rb_ivar_get(self, rb_intern("@handle")), spirv_cross::Compiler, &compiler_type, comp);
|
319
|
+
spirv_cross::SmallVector<spirv_cross::EntryPoint> entry_points = comp->get_entry_points_and_stages();
|
325
320
|
VALUE ret = rb_ary_new();
|
326
321
|
for (auto &ep : entry_points) {
|
327
322
|
VALUE vep = rb_hash_new();
|
328
323
|
rb_ary_push(ret, vep);
|
329
324
|
rb_hash_aset(vep, ID2SYM(rb_intern("name")), rb_str_new2(ep.name.c_str()));
|
330
325
|
switch(ep.execution_model) {
|
331
|
-
case ExecutionModel::ExecutionModelVertex: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("vertex"))); break;
|
332
|
-
case ExecutionModel::ExecutionModelTessellationControl: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("tessellation_control"))); break;
|
333
|
-
case ExecutionModel::ExecutionModelTessellationEvaluation: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("tessellation_evaluation"))); break;
|
334
|
-
case ExecutionModel::ExecutionModelGeometry: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("geometry"))); break;
|
335
|
-
case ExecutionModel::ExecutionModelFragment: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("fragment"))); break;
|
336
|
-
case ExecutionModel::ExecutionModelGLCompute: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("gl_compute"))); break;
|
337
|
-
case ExecutionModel::ExecutionModelKernel: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("kernel"))); break;
|
338
|
-
case ExecutionModel::ExecutionModelMax: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("max"))); break;
|
339
|
-
default:
|
326
|
+
case spv::ExecutionModel::ExecutionModelVertex: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("vertex"))); break;
|
327
|
+
case spv::ExecutionModel::ExecutionModelTessellationControl: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("tessellation_control"))); break;
|
328
|
+
case spv::ExecutionModel::ExecutionModelTessellationEvaluation: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("tessellation_evaluation"))); break;
|
329
|
+
case spv::ExecutionModel::ExecutionModelGeometry: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("geometry"))); break;
|
330
|
+
case spv::ExecutionModel::ExecutionModelFragment: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("fragment"))); break;
|
331
|
+
case spv::ExecutionModel::ExecutionModelGLCompute: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("gl_compute"))); break;
|
332
|
+
case spv::ExecutionModel::ExecutionModelKernel: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("kernel"))); break;
|
333
|
+
case spv::ExecutionModel::ExecutionModelMax: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("max"))); break;
|
334
|
+
default: rb_hash_aset(vep, ID2SYM(rb_intern("execution_model")), ID2SYM(rb_intern("unknown"))); break;
|
340
335
|
}
|
341
336
|
}
|
342
337
|
return ret;
|
343
338
|
}
|
344
339
|
|
345
340
|
VALUE rb_spvx_compiler_specialization_constants(VALUE self) {
|
346
|
-
Compiler *comp;
|
347
|
-
TypedData_Get_Struct(rb_ivar_get(self, rb_intern("@handle")), Compiler, &compiler_type, comp);
|
348
|
-
|
341
|
+
spirv_cross::Compiler *comp;
|
342
|
+
TypedData_Get_Struct(rb_ivar_get(self, rb_intern("@handle")), spirv_cross::Compiler, &compiler_type, comp);
|
343
|
+
spirv_cross::SmallVector<spirv_cross::SpecializationConstant> consts = comp->get_specialization_constants();
|
349
344
|
VALUE vconsts = rb_ary_new();
|
350
345
|
for (auto &c : consts) {
|
351
346
|
VALUE vconst = rb_hash_new();
|
@@ -359,15 +354,15 @@ extern "C" {
|
|
359
354
|
VALUE rb_spvx_compiler_initialize(VALUE self, VALUE binstr) {
|
360
355
|
size_t len = RSTRING_LEN(binstr) / sizeof(uint32_t);
|
361
356
|
uint32_t *data = (uint32_t *) RSTRING_PTR(binstr);
|
362
|
-
vector<uint32_t> spirv;
|
357
|
+
std::vector<uint32_t> spirv;
|
363
358
|
for (size_t i = 0; i < len; i++) {
|
364
359
|
spirv.push_back(data[i]);
|
365
360
|
}
|
366
361
|
|
367
362
|
try {
|
368
|
-
Compiler *compiler = new Compiler(move(spirv));
|
363
|
+
spirv_cross::Compiler *compiler = new spirv_cross::Compiler(std::move(spirv));
|
369
364
|
rb_ivar_set(self, rb_intern("@handle"), TypedData_Wrap_Struct(rb_cData, &compiler_type, compiler));
|
370
|
-
} catch(const exception &ex) {
|
365
|
+
} catch(const std::exception &ex) {
|
371
366
|
rb_raise(rb_eSPIRVError, "%s", ex.what());
|
372
367
|
}
|
373
368
|
|
data/lib/spirv/cross/version.rb
CHANGED
data/spirv-cross.gemspec
CHANGED
@@ -33,8 +33,8 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.require_paths = ["lib"]
|
34
34
|
spec.extensions = ["ext/spirv_cross/extconf.rb"]
|
35
35
|
|
36
|
-
spec.add_development_dependency "bundler", "~> 1
|
37
|
-
spec.add_development_dependency "rake", "~>
|
36
|
+
spec.add_development_dependency "bundler", "~> 2.1"
|
37
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
38
38
|
spec.add_development_dependency "rake-compiler"
|
39
39
|
spec.add_development_dependency "minitest", "~> 5.0"
|
40
40
|
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.
|
4
|
+
version: 0.1.2
|
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:
|
11
|
+
date: 2020-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1
|
19
|
+
version: '2.1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1
|
26
|
+
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake-compiler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,8 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0'
|
117
117
|
requirements: []
|
118
|
-
|
119
|
-
rubygems_version: 2.7.8
|
118
|
+
rubygems_version: 3.1.1
|
120
119
|
signing_key:
|
121
120
|
specification_version: 4
|
122
121
|
summary: Ruby bindings for SPIRV-Cross to provide reflection of SPIR-V shaders.
|