Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcheckout_glslang_spirv_tools.sh6
-rw-r--r--reference/opt/shaders-hlsl/asm/frag/unreachable.asm.frag10
-rw-r--r--reference/opt/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert14
-rw-r--r--reference/opt/shaders-hlsl/comp/spec-constant-op-member-array.comp2
-rw-r--r--reference/opt/shaders-hlsl/frag/spec-constant-ternary.frag4
-rw-r--r--reference/opt/shaders-hlsl/vert/basic.vert2
-rw-r--r--reference/opt/shaders-msl/asm/frag/unreachable.asm.frag10
-rw-r--r--reference/opt/shaders-msl/comp/atomic.comp2
-rw-r--r--reference/opt/shaders-msl/comp/bitcast-16bit-1.invalid.comp2
-rw-r--r--reference/opt/shaders-msl/comp/spec-constant-op-member-array.comp4
-rw-r--r--reference/opt/shaders-msl/frag/spec-constant-ternary.frag4
-rw-r--r--reference/opt/shaders-msl/vert/no_stage_out.write_buff.vert6
-rw-r--r--reference/opt/shaders-msl/vert/resource-arrays-leaf.ios.vert16
-rw-r--r--reference/opt/shaders-msl/vert/resource-arrays.ios.vert6
-rw-r--r--reference/opt/shaders/asm/comp/hlsl-functionality.asm.comp2
-rw-r--r--reference/opt/shaders/asm/frag/loop-body-dominator-continue-access.asm.frag18
-rw-r--r--reference/opt/shaders/asm/frag/temporary-phi-hoisting.asm.frag2
-rw-r--r--reference/opt/shaders/asm/frag/unreachable.asm.frag9
-rw-r--r--reference/opt/shaders/comp/bitcast-16bit-1.invalid.comp2
-rw-r--r--reference/opt/shaders/desktop-only/vert/basic.desktop.sso.vert2
-rw-r--r--reference/opt/shaders/tesc/water_tess.tesc2
-rw-r--r--reference/opt/shaders/vert/basic.vert2
-rw-r--r--reference/opt/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp4
-rw-r--r--reference/opt/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp.vk4
-rw-r--r--reference/opt/shaders/vulkan/frag/spec-constant-ternary.vk.frag4
-rw-r--r--reference/opt/shaders/vulkan/frag/spec-constant-ternary.vk.frag.vk4
-rw-r--r--reference/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert14
-rw-r--r--reference/shaders-hlsl/comp/spec-constant-op-member-array.comp2
-rw-r--r--reference/shaders-hlsl/frag/spec-constant-ternary.frag4
-rw-r--r--reference/shaders-hlsl/vert/basic.vert2
-rw-r--r--reference/shaders-msl/comp/bitcast-16bit-1.invalid.comp2
-rw-r--r--reference/shaders-msl/comp/spec-constant-op-member-array.comp4
-rw-r--r--reference/shaders-msl/frag/spec-constant-ternary.frag4
-rw-r--r--reference/shaders-msl/vert/resource-arrays-leaf.ios.vert16
-rw-r--r--reference/shaders-msl/vert/resource-arrays.ios.vert6
-rw-r--r--reference/shaders/asm/comp/hlsl-functionality.asm.comp2
-rw-r--r--reference/shaders/asm/frag/temporary-phi-hoisting.asm.frag2
-rw-r--r--reference/shaders/comp/bitcast-16bit-1.invalid.comp2
-rw-r--r--reference/shaders/desktop-only/vert/basic.desktop.sso.vert2
-rw-r--r--reference/shaders/tesc/water_tess.tesc2
-rw-r--r--reference/shaders/vert/basic.vert2
-rw-r--r--reference/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp4
-rw-r--r--reference/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp.vk4
-rw-r--r--reference/shaders/vulkan/frag/spec-constant-ternary.vk.frag4
-rw-r--r--reference/shaders/vulkan/frag/spec-constant-ternary.vk.frag.vk4
-rw-r--r--shaders-hlsl-no-opt/asm/vert/empty-struct-composite.asm.vert1
-rw-r--r--shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert4
-rw-r--r--shaders-msl-no-opt/asm/vert/empty-struct-composite.asm.vert1
-rw-r--r--shaders-msl/asm/comp/buffer-write.asm.comp1
-rw-r--r--shaders-msl/asm/comp/multiple-entry.asm.comp1
-rw-r--r--shaders-msl/asm/comp/struct-resource-name-aliasing.asm.comp2
-rw-r--r--shaders-msl/asm/frag/default-member-names.asm.frag2
-rw-r--r--shaders-msl/asm/frag/extract-packed-from-composite.asm.frag1
-rw-r--r--shaders-msl/asm/frag/locations-components.asm.frag1
-rw-r--r--shaders-msl/asm/frag/op-image-sampled-image.asm.frag1
-rw-r--r--shaders-msl/vert/resource-arrays-leaf.ios.vert5
-rw-r--r--shaders-no-opt/asm/vert/empty-struct-composite.asm.vert1
-rw-r--r--shaders/asm/comp/hlsl-functionality.asm.comp1
-rw-r--r--shaders/asm/comp/multiple-entry.asm.comp1
-rw-r--r--shaders/asm/frag/default-member-names.asm.frag2
-rw-r--r--shaders/asm/frag/locations-components.asm.frag1
-rw-r--r--shaders/asm/frag/temporary-phi-hoisting.asm.frag1
-rw-r--r--spirv_hlsl.cpp24
-rw-r--r--spirv_msl.cpp2
-rw-r--r--spirv_reflect.cpp3
65 files changed, 150 insertions, 131 deletions
diff --git a/checkout_glslang_spirv_tools.sh b/checkout_glslang_spirv_tools.sh
index c90d1daa..2ccc6c89 100755
--- a/checkout_glslang_spirv_tools.sh
+++ b/checkout_glslang_spirv_tools.sh
@@ -1,8 +1,8 @@
#!/bin/bash
-GLSLANG_REV=91ac4290bcf2cb930b4fb0981f09c00c0b6797e1
-SPIRV_TOOLS_REV=9bfe0eb25e3dfdf4f3fd86ab6c0cda009c9bd661
-SPIRV_HEADERS_REV=d5b2e1255f706ce1f88812217e9a554f299848af
+GLSLANG_REV=c9e03360e2a78a95a8571292aefa5ddbdbf66daf
+SPIRV_TOOLS_REV=e2279da7148d19bd21c6d47ffc96ee4176f43dba
+SPIRV_HEADERS_REV=8bea0a266ac9b718aa0818d9e3a47c0b77c2cb23
if [ -d external/glslang ]; then
echo "Updating glslang to revision $GLSLANG_REV."
diff --git a/reference/opt/shaders-hlsl/asm/frag/unreachable.asm.frag b/reference/opt/shaders-hlsl/asm/frag/unreachable.asm.frag
index ee3e4672..4a024c8e 100644
--- a/reference/opt/shaders-hlsl/asm/frag/unreachable.asm.frag
+++ b/reference/opt/shaders-hlsl/asm/frag/unreachable.asm.frag
@@ -13,21 +13,21 @@ struct SPIRV_Cross_Output
void frag_main()
{
- bool _29;
+ float4 _33;
for (;;)
{
- _29 = counter == 10;
- if (_29)
+ if (counter == 10)
{
+ _33 = 10.0f.xxxx;
break;
}
else
{
+ _33 = 30.0f.xxxx;
break;
}
}
- bool4 _35 = _29.xxxx;
- FragColor = float4(_35.x ? 10.0f.xxxx.x : 30.0f.xxxx.x, _35.y ? 10.0f.xxxx.y : 30.0f.xxxx.y, _35.z ? 10.0f.xxxx.z : 30.0f.xxxx.z, _35.w ? 10.0f.xxxx.w : 30.0f.xxxx.w);
+ FragColor = _33;
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
diff --git a/reference/opt/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert b/reference/opt/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert
index 8d5e771f..48b2df20 100644
--- a/reference/opt/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert
+++ b/reference/opt/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert
@@ -1,10 +1,10 @@
static float4 gl_Position;
-static int gl_VertexID;
-static int gl_InstanceID;
+static int gl_VertexIndex;
+static int gl_InstanceIndex;
struct SPIRV_Cross_Input
{
- uint gl_VertexID : SV_VertexID;
- uint gl_InstanceID : SV_InstanceID;
+ uint gl_VertexIndex : SV_VertexID;
+ uint gl_InstanceIndex : SV_InstanceID;
};
struct SPIRV_Cross_Output
@@ -14,13 +14,13 @@ struct SPIRV_Cross_Output
void vert_main()
{
- gl_Position = float(gl_VertexID + gl_InstanceID).xxxx;
+ gl_Position = float(gl_VertexIndex + gl_InstanceIndex).xxxx;
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
- gl_VertexID = int(stage_input.gl_VertexID);
- gl_InstanceID = int(stage_input.gl_InstanceID);
+ gl_VertexIndex = int(stage_input.gl_VertexIndex);
+ gl_InstanceIndex = int(stage_input.gl_InstanceIndex);
vert_main();
SPIRV_Cross_Output stage_output;
stage_output.gl_Position = gl_Position;
diff --git a/reference/opt/shaders-hlsl/comp/spec-constant-op-member-array.comp b/reference/opt/shaders-hlsl/comp/spec-constant-op-member-array.comp
index c35031b8..c4537db0 100644
--- a/reference/opt/shaders-hlsl/comp/spec-constant-op-member-array.comp
+++ b/reference/opt/shaders-hlsl/comp/spec-constant-op-member-array.comp
@@ -23,7 +23,7 @@ struct B
#define SPIRV_CROSS_CONSTANT_ID_2 300
#endif
static const int c = SPIRV_CROSS_CONSTANT_ID_2;
-static const int _18 = (c + 50);
+static const int d = (c + 50);
#ifndef SPIRV_CROSS_CONSTANT_ID_3
#define SPIRV_CROSS_CONSTANT_ID_3 400
#endif
diff --git a/reference/opt/shaders-hlsl/frag/spec-constant-ternary.frag b/reference/opt/shaders-hlsl/frag/spec-constant-ternary.frag
index 58735aad..942da54f 100644
--- a/reference/opt/shaders-hlsl/frag/spec-constant-ternary.frag
+++ b/reference/opt/shaders-hlsl/frag/spec-constant-ternary.frag
@@ -3,7 +3,7 @@
#endif
static const uint s = SPIRV_CROSS_CONSTANT_ID_0;
static const bool _13 = (s > 20u);
-static const uint _16 = _13 ? 30u : 50u;
+static const uint f = _13 ? 30u : 50u;
static float FragColor;
@@ -14,7 +14,7 @@ struct SPIRV_Cross_Output
void frag_main()
{
- FragColor = float(_16);
+ FragColor = float(f);
}
SPIRV_Cross_Output main()
diff --git a/reference/opt/shaders-hlsl/vert/basic.vert b/reference/opt/shaders-hlsl/vert/basic.vert
index f357d907..e0bcebf7 100644
--- a/reference/opt/shaders-hlsl/vert/basic.vert
+++ b/reference/opt/shaders-hlsl/vert/basic.vert
@@ -1,4 +1,4 @@
-cbuffer UBO
+cbuffer UBO : register(b0)
{
row_major float4x4 _16_uMVP : packoffset(c0);
};
diff --git a/reference/opt/shaders-msl/asm/frag/unreachable.asm.frag b/reference/opt/shaders-msl/asm/frag/unreachable.asm.frag
index 9a9baef5..918a0b9c 100644
--- a/reference/opt/shaders-msl/asm/frag/unreachable.asm.frag
+++ b/reference/opt/shaders-msl/asm/frag/unreachable.asm.frag
@@ -16,21 +16,21 @@ struct main0_in
fragment main0_out main0(main0_in in [[stage_in]])
{
main0_out out = {};
- bool _29;
+ float4 _33;
for (;;)
{
- _29 = in.counter == 10;
- if (_29)
+ if (in.counter == 10)
{
+ _33 = float4(10.0);
break;
}
else
{
+ _33 = float4(30.0);
break;
}
}
- bool4 _35 = bool4(_29);
- out.FragColor = float4(_35.x ? float4(10.0).x : float4(30.0).x, _35.y ? float4(10.0).y : float4(30.0).y, _35.z ? float4(10.0).z : float4(30.0).z, _35.w ? float4(10.0).w : float4(30.0).w);
+ out.FragColor = _33;
return out;
}
diff --git a/reference/opt/shaders-msl/comp/atomic.comp b/reference/opt/shaders-msl/comp/atomic.comp
index 17d0a652..f77922ac 100644
--- a/reference/opt/shaders-msl/comp/atomic.comp
+++ b/reference/opt/shaders-msl/comp/atomic.comp
@@ -40,6 +40,8 @@ kernel void main0(device SSBO& ssbo [[buffer(2)]])
{
_52 = 10;
} while (!atomic_compare_exchange_weak_explicit((volatile device atomic_int*)&ssbo.i32, &_52, 2, memory_order_relaxed, memory_order_relaxed));
+ shared_u32 = 10u;
+ shared_i32 = 10;
uint _57 = atomic_fetch_add_explicit((volatile threadgroup atomic_uint*)&shared_u32, 1u, memory_order_relaxed);
uint _58 = atomic_fetch_or_explicit((volatile threadgroup atomic_uint*)&shared_u32, 1u, memory_order_relaxed);
uint _59 = atomic_fetch_xor_explicit((volatile threadgroup atomic_uint*)&shared_u32, 1u, memory_order_relaxed);
diff --git a/reference/opt/shaders-msl/comp/bitcast-16bit-1.invalid.comp b/reference/opt/shaders-msl/comp/bitcast-16bit-1.invalid.comp
index 5671cd7c..f91e5fea 100644
--- a/reference/opt/shaders-msl/comp/bitcast-16bit-1.invalid.comp
+++ b/reference/opt/shaders-msl/comp/bitcast-16bit-1.invalid.comp
@@ -15,7 +15,7 @@ struct SSBO1
kernel void main0(device SSBO0& _25 [[buffer(0)]], device SSBO1& _39 [[buffer(1)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]])
{
- _39.outputs[gl_GlobalInvocationID.x].x = int(as_type<uint>(as_type<half2>(_25.inputs[gl_GlobalInvocationID.x].xy) + half2(half(1))));
+ _39.outputs[gl_GlobalInvocationID.x].x = int(as_type<uint>(as_type<half2>(_25.inputs[gl_GlobalInvocationID.x].xy) + half2(1.0h)));
_39.outputs[gl_GlobalInvocationID.x].y = as_type<int>(_25.inputs[gl_GlobalInvocationID.x].zw);
_39.outputs[gl_GlobalInvocationID.x].z = int(as_type<uint>(ushort2(_25.inputs[gl_GlobalInvocationID.x].xy)));
}
diff --git a/reference/opt/shaders-msl/comp/spec-constant-op-member-array.comp b/reference/opt/shaders-msl/comp/spec-constant-op-member-array.comp
index 1d78f3f4..d3c8b7dc 100644
--- a/reference/opt/shaders-msl/comp/spec-constant-op-member-array.comp
+++ b/reference/opt/shaders-msl/comp/spec-constant-op-member-array.comp
@@ -28,14 +28,14 @@ struct B
#define SPIRV_CROSS_CONSTANT_ID_2 300
#endif
constant int c = SPIRV_CROSS_CONSTANT_ID_2;
-constant int _18 = (c + 50);
+constant int d = (c + 50);
struct SSBO
{
A member_a;
B member_b;
int v[a];
- int w[_18];
+ int w[d];
};
constant int e_tmp [[function_constant(3)]];
diff --git a/reference/opt/shaders-msl/frag/spec-constant-ternary.frag b/reference/opt/shaders-msl/frag/spec-constant-ternary.frag
index 5ab6b4fc..05900650 100644
--- a/reference/opt/shaders-msl/frag/spec-constant-ternary.frag
+++ b/reference/opt/shaders-msl/frag/spec-constant-ternary.frag
@@ -6,7 +6,7 @@ using namespace metal;
constant uint s_tmp [[function_constant(0)]];
constant uint s = is_function_constant_defined(s_tmp) ? s_tmp : 10u;
constant bool _13 = (s > 20u);
-constant uint _16 = _13 ? 30u : 50u;
+constant uint f = _13 ? 30u : 50u;
struct main0_out
{
@@ -16,7 +16,7 @@ struct main0_out
fragment main0_out main0()
{
main0_out out = {};
- out.FragColor = float(_16);
+ out.FragColor = float(f);
return out;
}
diff --git a/reference/opt/shaders-msl/vert/no_stage_out.write_buff.vert b/reference/opt/shaders-msl/vert/no_stage_out.write_buff.vert
index 458e1f1b..52af329a 100644
--- a/reference/opt/shaders-msl/vert/no_stage_out.write_buff.vert
+++ b/reference/opt/shaders-msl/vert/no_stage_out.write_buff.vert
@@ -27,10 +27,10 @@ vertex void main0(main0_in in [[stage_in]], constant _40& _42 [[buffer(0)]], dev
{
main0_out out = {};
out.gl_Position = in.m_17;
- for (int _51 = 0; _51 < 1024; )
+ for (int _52 = 0; _52 < 1024; )
{
- _37._m0[_51] = _42._m0[_51];
- _51++;
+ _37._m0[_52] = _42._m0[_52];
+ _52++;
continue;
}
}
diff --git a/reference/opt/shaders-msl/vert/resource-arrays-leaf.ios.vert b/reference/opt/shaders-msl/vert/resource-arrays-leaf.ios.vert
index 93704af2..7c454c1f 100644
--- a/reference/opt/shaders-msl/vert/resource-arrays-leaf.ios.vert
+++ b/reference/opt/shaders-msl/vert/resource-arrays-leaf.ios.vert
@@ -20,14 +20,8 @@ struct constant_block
#endif
constant int arraySize = SPIRV_CROSS_CONSTANT_ID_0;
-vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_block* storage_1 [[buffer(1)]], constant constant_block* constants_0 [[buffer(2)]], constant constant_block* constants_1 [[buffer(3)]], constant constant_block* constants_2 [[buffer(4)]], constant constant_block* constants_3 [[buffer(5)]], array<texture2d<int>, 3> images [[texture(0)]])
+vertex void main0(constant constant_block* constants_0 [[buffer(4)]], constant constant_block* constants_1 [[buffer(5)]], constant constant_block* constants_2 [[buffer(6)]], constant constant_block* constants_3 [[buffer(7)]], device storage_block* storage_0 [[buffer(8)]], device storage_block* storage_1 [[buffer(9)]], array<texture2d<int>, 3> images [[texture(0)]])
{
- device storage_block* storage[] =
- {
- storage_0,
- storage_1,
- };
-
constant constant_block* constants[] =
{
constants_0,
@@ -35,7 +29,13 @@ vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_
constants_2,
constants_3,
};
-
+
+ device storage_block* storage[] =
+ {
+ storage_0,
+ storage_1,
+ };
+
storage[0]->baz = uint4(constants[3]->foo);
storage[1]->quux = images[2].read(uint2(int2(constants[1]->bar))).xy;
}
diff --git a/reference/opt/shaders-msl/vert/resource-arrays.ios.vert b/reference/opt/shaders-msl/vert/resource-arrays.ios.vert
index 93704af2..543f7414 100644
--- a/reference/opt/shaders-msl/vert/resource-arrays.ios.vert
+++ b/reference/opt/shaders-msl/vert/resource-arrays.ios.vert
@@ -20,14 +20,14 @@ struct constant_block
#endif
constant int arraySize = SPIRV_CROSS_CONSTANT_ID_0;
-vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_block* storage_1 [[buffer(1)]], constant constant_block* constants_0 [[buffer(2)]], constant constant_block* constants_1 [[buffer(3)]], constant constant_block* constants_2 [[buffer(4)]], constant constant_block* constants_3 [[buffer(5)]], array<texture2d<int>, 3> images [[texture(0)]])
+vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_block* storage_1 [[buffer(1)]], constant constant_block* constants_0 [[buffer(0)]], constant constant_block* constants_1 [[buffer(1)]], constant constant_block* constants_2 [[buffer(2)]], constant constant_block* constants_3 [[buffer(3)]], array<texture2d<int>, 3> images [[texture(0)]])
{
device storage_block* storage[] =
{
storage_0,
storage_1,
};
-
+
constant constant_block* constants[] =
{
constants_0,
@@ -35,7 +35,7 @@ vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_
constants_2,
constants_3,
};
-
+
storage[0]->baz = uint4(constants[3]->foo);
storage[1]->quux = images[2].read(uint2(int2(constants[1]->bar))).xy;
}
diff --git a/reference/opt/shaders/asm/comp/hlsl-functionality.asm.comp b/reference/opt/shaders/asm/comp/hlsl-functionality.asm.comp
index 29bc02c6..6860cfaf 100644
--- a/reference/opt/shaders/asm/comp/hlsl-functionality.asm.comp
+++ b/reference/opt/shaders/asm/comp/hlsl-functionality.asm.comp
@@ -6,7 +6,7 @@ layout(binding = 0, std430) buffer Buf
vec4 _data[];
} Buf_1;
-layout(std430) buffer Buf_count
+layout(binding = 1, std430) buffer Buf_count
{
int _count;
} Buf_count_1;
diff --git a/reference/opt/shaders/asm/frag/loop-body-dominator-continue-access.asm.frag b/reference/opt/shaders/asm/frag/loop-body-dominator-continue-access.asm.frag
index af44e654..8c35e62e 100644
--- a/reference/opt/shaders/asm/frag/loop-body-dominator-continue-access.asm.frag
+++ b/reference/opt/shaders/asm/frag/loop-body-dominator-continue-access.asm.frag
@@ -14,17 +14,16 @@ int _240;
void main()
{
- bool _246;
uint _227;
- int _237;
+ int _236;
for (;;)
{
_227 = 0u;
- bool _164;
+ bool _231;
+ int _237;
for (;;)
{
- _164 = _227 < _11.shadowCascadesNum;
- if (_164)
+ if (_227 < _11.shadowCascadesNum)
{
mat4 _228;
for (;;)
@@ -44,6 +43,7 @@ void main()
if ((((_179 >= 0.0) && (_179 <= 1.0)) && (max(_186, _188) <= 1.0)) && (min(_186, _188) >= 0.0))
{
_237 = int(_227);
+ _231 = true;
break;
}
else
@@ -57,16 +57,18 @@ void main()
else
{
_237 = _240;
+ _231 = false;
break;
}
}
- _246 = _164 ? true : false;
- if (_246)
+ if (_231)
{
+ _236 = _237;
break;
}
+ _236 = -1;
break;
}
- _entryPointOutput = _246 ? _237 : (-1);
+ _entryPointOutput = _236;
}
diff --git a/reference/opt/shaders/asm/frag/temporary-phi-hoisting.asm.frag b/reference/opt/shaders/asm/frag/temporary-phi-hoisting.asm.frag
index 1ecd61d7..ade51d4a 100644
--- a/reference/opt/shaders/asm/frag/temporary-phi-hoisting.asm.frag
+++ b/reference/opt/shaders/asm/frag/temporary-phi-hoisting.asm.frag
@@ -5,7 +5,7 @@ struct MyStruct
vec4 color;
};
-layout(std140) uniform MyStruct_CB
+layout(binding = 0, std140) uniform MyStruct_CB
{
MyStruct g_MyStruct[4];
} _6;
diff --git a/reference/opt/shaders/asm/frag/unreachable.asm.frag b/reference/opt/shaders/asm/frag/unreachable.asm.frag
index eb7e8a91..c8986c12 100644
--- a/reference/opt/shaders/asm/frag/unreachable.asm.frag
+++ b/reference/opt/shaders/asm/frag/unreachable.asm.frag
@@ -5,19 +5,20 @@ layout(location = 0) out vec4 FragColor;
void main()
{
- bool _29;
+ vec4 _33;
for (;;)
{
- _29 = counter == 10;
- if (_29)
+ if (counter == 10)
{
+ _33 = vec4(10.0);
break;
}
else
{
+ _33 = vec4(30.0);
break;
}
}
- FragColor = mix(vec4(30.0), vec4(10.0), bvec4(_29));
+ FragColor = _33;
}
diff --git a/reference/opt/shaders/comp/bitcast-16bit-1.invalid.comp b/reference/opt/shaders/comp/bitcast-16bit-1.invalid.comp
index 7420586f..9844e719 100644
--- a/reference/opt/shaders/comp/bitcast-16bit-1.invalid.comp
+++ b/reference/opt/shaders/comp/bitcast-16bit-1.invalid.comp
@@ -31,7 +31,7 @@ void main()
{
uint ident = gl_GlobalInvocationID.x;
f16vec2 a = int16BitsToFloat16(_25.inputs[ident].xy);
- _39.outputs[ident].x = int(packFloat2x16(a + f16vec2(float16_t(1), float16_t(1))));
+ _39.outputs[ident].x = int(packFloat2x16(a + f16vec2(1.0hf)));
_39.outputs[ident].y = packInt2x16(_25.inputs[ident].zw);
_39.outputs[ident].z = int(packUint2x16(u16vec2(_25.inputs[ident].xy)));
}
diff --git a/reference/opt/shaders/desktop-only/vert/basic.desktop.sso.vert b/reference/opt/shaders/desktop-only/vert/basic.desktop.sso.vert
index 5f527e08..2f880398 100644
--- a/reference/opt/shaders/desktop-only/vert/basic.desktop.sso.vert
+++ b/reference/opt/shaders/desktop-only/vert/basic.desktop.sso.vert
@@ -5,7 +5,7 @@ out gl_PerVertex
vec4 gl_Position;
};
-layout(std140) uniform UBO
+layout(binding = 0, std140) uniform UBO
{
mat4 uMVP;
} _16;
diff --git a/reference/opt/shaders/tesc/water_tess.tesc b/reference/opt/shaders/tesc/water_tess.tesc
index 69307d3c..eb3e84d5 100644
--- a/reference/opt/shaders/tesc/water_tess.tesc
+++ b/reference/opt/shaders/tesc/water_tess.tesc
@@ -2,7 +2,7 @@
#extension GL_EXT_tessellation_shader : require
layout(vertices = 1) out;
-layout(std140) uniform UBO
+layout(binding = 0, std140) uniform UBO
{
vec4 uScale;
vec3 uCamPos;
diff --git a/reference/opt/shaders/vert/basic.vert b/reference/opt/shaders/vert/basic.vert
index 05504eb2..8f251cbe 100644
--- a/reference/opt/shaders/vert/basic.vert
+++ b/reference/opt/shaders/vert/basic.vert
@@ -1,6 +1,6 @@
#version 310 es
-layout(std140) uniform UBO
+layout(binding = 0, std140) uniform UBO
{
mat4 uMVP;
} _16;
diff --git a/reference/opt/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp b/reference/opt/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp
index 33647a42..7c4c7ed6 100644
--- a/reference/opt/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp
+++ b/reference/opt/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp
@@ -26,7 +26,7 @@ struct B
#define SPIRV_CROSS_CONSTANT_ID_2 300
#endif
const int c = SPIRV_CROSS_CONSTANT_ID_2;
-const int _18 = (c + 50);
+const int d = (c + 50);
#ifndef SPIRV_CROSS_CONSTANT_ID_3
#define SPIRV_CROSS_CONSTANT_ID_3 400
#endif
@@ -37,7 +37,7 @@ layout(binding = 0, std430) buffer SSBO
A member_a;
B member_b;
int v[a];
- int w[_18];
+ int w[d];
} _22;
void main()
diff --git a/reference/opt/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp.vk b/reference/opt/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp.vk
index cd68e93d..b7571b7a 100644
--- a/reference/opt/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp.vk
+++ b/reference/opt/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp.vk
@@ -17,7 +17,7 @@ struct B
};
layout(constant_id = 2) const int c = 300;
-const int _18 = (c + 50);
+const int d = (c + 50);
layout(constant_id = 3) const int e = 400;
layout(set = 1, binding = 0, std430) buffer SSBO
@@ -25,7 +25,7 @@ layout(set = 1, binding = 0, std430) buffer SSBO
A member_a;
B member_b;
int v[a];
- int w[_18];
+ int w[d];
} _22;
void main()
diff --git a/reference/opt/shaders/vulkan/frag/spec-constant-ternary.vk.frag b/reference/opt/shaders/vulkan/frag/spec-constant-ternary.vk.frag
index e03dfcb9..081206f1 100644
--- a/reference/opt/shaders/vulkan/frag/spec-constant-ternary.vk.frag
+++ b/reference/opt/shaders/vulkan/frag/spec-constant-ternary.vk.frag
@@ -5,12 +5,12 @@
#endif
const uint s = SPIRV_CROSS_CONSTANT_ID_0;
const bool _13 = (s > 20u);
-const uint _16 = _13 ? 30u : 50u;
+const uint f = _13 ? 30u : 50u;
layout(location = 0) out float FragColor;
void main()
{
- FragColor = float(_16);
+ FragColor = float(f);
}
diff --git a/reference/opt/shaders/vulkan/frag/spec-constant-ternary.vk.frag.vk b/reference/opt/shaders/vulkan/frag/spec-constant-ternary.vk.frag.vk
index 59d3b99b..34bfea02 100644
--- a/reference/opt/shaders/vulkan/frag/spec-constant-ternary.vk.frag.vk
+++ b/reference/opt/shaders/vulkan/frag/spec-constant-ternary.vk.frag.vk
@@ -2,12 +2,12 @@
layout(constant_id = 0) const uint s = 10u;
const bool _13 = (s > 20u);
-const uint _16 = _13 ? 30u : 50u;
+const uint f = _13 ? 30u : 50u;
layout(location = 0) out float FragColor;
void main()
{
- FragColor = float(_16);
+ FragColor = float(f);
}
diff --git a/reference/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert b/reference/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert
index 8d5e771f..48b2df20 100644
--- a/reference/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert
+++ b/reference/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert
@@ -1,10 +1,10 @@
static float4 gl_Position;
-static int gl_VertexID;
-static int gl_InstanceID;
+static int gl_VertexIndex;
+static int gl_InstanceIndex;
struct SPIRV_Cross_Input
{
- uint gl_VertexID : SV_VertexID;
- uint gl_InstanceID : SV_InstanceID;
+ uint gl_VertexIndex : SV_VertexID;
+ uint gl_InstanceIndex : SV_InstanceID;
};
struct SPIRV_Cross_Output
@@ -14,13 +14,13 @@ struct SPIRV_Cross_Output
void vert_main()
{
- gl_Position = float(gl_VertexID + gl_InstanceID).xxxx;
+ gl_Position = float(gl_VertexIndex + gl_InstanceIndex).xxxx;
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
- gl_VertexID = int(stage_input.gl_VertexID);
- gl_InstanceID = int(stage_input.gl_InstanceID);
+ gl_VertexIndex = int(stage_input.gl_VertexIndex);
+ gl_InstanceIndex = int(stage_input.gl_InstanceIndex);
vert_main();
SPIRV_Cross_Output stage_output;
stage_output.gl_Position = gl_Position;
diff --git a/reference/shaders-hlsl/comp/spec-constant-op-member-array.comp b/reference/shaders-hlsl/comp/spec-constant-op-member-array.comp
index c35031b8..c4537db0 100644
--- a/reference/shaders-hlsl/comp/spec-constant-op-member-array.comp
+++ b/reference/shaders-hlsl/comp/spec-constant-op-member-array.comp
@@ -23,7 +23,7 @@ struct B
#define SPIRV_CROSS_CONSTANT_ID_2 300
#endif
static const int c = SPIRV_CROSS_CONSTANT_ID_2;
-static const int _18 = (c + 50);
+static const int d = (c + 50);
#ifndef SPIRV_CROSS_CONSTANT_ID_3
#define SPIRV_CROSS_CONSTANT_ID_3 400
#endif
diff --git a/reference/shaders-hlsl/frag/spec-constant-ternary.frag b/reference/shaders-hlsl/frag/spec-constant-ternary.frag
index 58735aad..942da54f 100644
--- a/reference/shaders-hlsl/frag/spec-constant-ternary.frag
+++ b/reference/shaders-hlsl/frag/spec-constant-ternary.frag
@@ -3,7 +3,7 @@
#endif
static const uint s = SPIRV_CROSS_CONSTANT_ID_0;
static const bool _13 = (s > 20u);
-static const uint _16 = _13 ? 30u : 50u;
+static const uint f = _13 ? 30u : 50u;
static float FragColor;
@@ -14,7 +14,7 @@ struct SPIRV_Cross_Output
void frag_main()
{
- FragColor = float(_16);
+ FragColor = float(f);
}
SPIRV_Cross_Output main()
diff --git a/reference/shaders-hlsl/vert/basic.vert b/reference/shaders-hlsl/vert/basic.vert
index f357d907..e0bcebf7 100644
--- a/reference/shaders-hlsl/vert/basic.vert
+++ b/reference/shaders-hlsl/vert/basic.vert
@@ -1,4 +1,4 @@
-cbuffer UBO
+cbuffer UBO : register(b0)
{
row_major float4x4 _16_uMVP : packoffset(c0);
};
diff --git a/reference/shaders-msl/comp/bitcast-16bit-1.invalid.comp b/reference/shaders-msl/comp/bitcast-16bit-1.invalid.comp
index ddf38a60..8315f792 100644
--- a/reference/shaders-msl/comp/bitcast-16bit-1.invalid.comp
+++ b/reference/shaders-msl/comp/bitcast-16bit-1.invalid.comp
@@ -17,7 +17,7 @@ kernel void main0(device SSBO0& _25 [[buffer(0)]], device SSBO1& _39 [[buffer(1)
{
uint ident = gl_GlobalInvocationID.x;
half2 a = as_type<half2>(_25.inputs[ident].xy);
- _39.outputs[ident].x = int(as_type<uint>(a + half2(half(1), half(1))));
+ _39.outputs[ident].x = int(as_type<uint>(a + half2(1.0h)));
_39.outputs[ident].y = as_type<int>(_25.inputs[ident].zw);
_39.outputs[ident].z = int(as_type<uint>(ushort2(_25.inputs[ident].xy)));
}
diff --git a/reference/shaders-msl/comp/spec-constant-op-member-array.comp b/reference/shaders-msl/comp/spec-constant-op-member-array.comp
index 1d78f3f4..d3c8b7dc 100644
--- a/reference/shaders-msl/comp/spec-constant-op-member-array.comp
+++ b/reference/shaders-msl/comp/spec-constant-op-member-array.comp
@@ -28,14 +28,14 @@ struct B
#define SPIRV_CROSS_CONSTANT_ID_2 300
#endif
constant int c = SPIRV_CROSS_CONSTANT_ID_2;
-constant int _18 = (c + 50);
+constant int d = (c + 50);
struct SSBO
{
A member_a;
B member_b;
int v[a];
- int w[_18];
+ int w[d];
};
constant int e_tmp [[function_constant(3)]];
diff --git a/reference/shaders-msl/frag/spec-constant-ternary.frag b/reference/shaders-msl/frag/spec-constant-ternary.frag
index 5ab6b4fc..05900650 100644
--- a/reference/shaders-msl/frag/spec-constant-ternary.frag
+++ b/reference/shaders-msl/frag/spec-constant-ternary.frag
@@ -6,7 +6,7 @@ using namespace metal;
constant uint s_tmp [[function_constant(0)]];
constant uint s = is_function_constant_defined(s_tmp) ? s_tmp : 10u;
constant bool _13 = (s > 20u);
-constant uint _16 = _13 ? 30u : 50u;
+constant uint f = _13 ? 30u : 50u;
struct main0_out
{
@@ -16,7 +16,7 @@ struct main0_out
fragment main0_out main0()
{
main0_out out = {};
- out.FragColor = float(_16);
+ out.FragColor = float(f);
return out;
}
diff --git a/reference/shaders-msl/vert/resource-arrays-leaf.ios.vert b/reference/shaders-msl/vert/resource-arrays-leaf.ios.vert
index bef2acc8..5c267630 100644
--- a/reference/shaders-msl/vert/resource-arrays-leaf.ios.vert
+++ b/reference/shaders-msl/vert/resource-arrays-leaf.ios.vert
@@ -28,14 +28,8 @@ void doWork(device storage_block* (&storage)[2], constant constant_block* (&cons
storage[1]->quux = images[2].read(uint2(int2(constants[1]->bar))).xy;
}
-vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_block* storage_1 [[buffer(1)]], constant constant_block* constants_0 [[buffer(2)]], constant constant_block* constants_1 [[buffer(3)]], constant constant_block* constants_2 [[buffer(4)]], constant constant_block* constants_3 [[buffer(5)]], array<texture2d<int>, 3> images [[texture(0)]])
+vertex void main0(constant constant_block* constants_0 [[buffer(4)]], constant constant_block* constants_1 [[buffer(5)]], constant constant_block* constants_2 [[buffer(6)]], constant constant_block* constants_3 [[buffer(7)]], device storage_block* storage_0 [[buffer(8)]], device storage_block* storage_1 [[buffer(9)]], array<texture2d<int>, 3> images [[texture(0)]])
{
- device storage_block* storage[] =
- {
- storage_0,
- storage_1,
- };
-
constant constant_block* constants[] =
{
constants_0,
@@ -43,7 +37,13 @@ vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_
constants_2,
constants_3,
};
-
+
+ device storage_block* storage[] =
+ {
+ storage_0,
+ storage_1,
+ };
+
doWork(storage, constants, images);
}
diff --git a/reference/shaders-msl/vert/resource-arrays.ios.vert b/reference/shaders-msl/vert/resource-arrays.ios.vert
index 93704af2..543f7414 100644
--- a/reference/shaders-msl/vert/resource-arrays.ios.vert
+++ b/reference/shaders-msl/vert/resource-arrays.ios.vert
@@ -20,14 +20,14 @@ struct constant_block
#endif
constant int arraySize = SPIRV_CROSS_CONSTANT_ID_0;
-vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_block* storage_1 [[buffer(1)]], constant constant_block* constants_0 [[buffer(2)]], constant constant_block* constants_1 [[buffer(3)]], constant constant_block* constants_2 [[buffer(4)]], constant constant_block* constants_3 [[buffer(5)]], array<texture2d<int>, 3> images [[texture(0)]])
+vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_block* storage_1 [[buffer(1)]], constant constant_block* constants_0 [[buffer(0)]], constant constant_block* constants_1 [[buffer(1)]], constant constant_block* constants_2 [[buffer(2)]], constant constant_block* constants_3 [[buffer(3)]], array<texture2d<int>, 3> images [[texture(0)]])
{
device storage_block* storage[] =
{
storage_0,
storage_1,
};
-
+
constant constant_block* constants[] =
{
constants_0,
@@ -35,7 +35,7 @@ vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_
constants_2,
constants_3,
};
-
+
storage[0]->baz = uint4(constants[3]->foo);
storage[1]->quux = images[2].read(uint2(int2(constants[1]->bar))).xy;
}
diff --git a/reference/shaders/asm/comp/hlsl-functionality.asm.comp b/reference/shaders/asm/comp/hlsl-functionality.asm.comp
index ae3bb1f8..e80f5240 100644
--- a/reference/shaders/asm/comp/hlsl-functionality.asm.comp
+++ b/reference/shaders/asm/comp/hlsl-functionality.asm.comp
@@ -6,7 +6,7 @@ layout(binding = 0, std430) buffer Buf
vec4 _data[];
} Buf_1;
-layout(std430) buffer Buf_count
+layout(binding = 1, std430) buffer Buf_count
{
int _count;
} Buf_count_1;
diff --git a/reference/shaders/asm/frag/temporary-phi-hoisting.asm.frag b/reference/shaders/asm/frag/temporary-phi-hoisting.asm.frag
index 3917594d..4cee76cc 100644
--- a/reference/shaders/asm/frag/temporary-phi-hoisting.asm.frag
+++ b/reference/shaders/asm/frag/temporary-phi-hoisting.asm.frag
@@ -5,7 +5,7 @@ struct MyStruct
vec4 color;
};
-layout(std140) uniform MyStruct_CB
+layout(binding = 0, std140) uniform MyStruct_CB
{
MyStruct g_MyStruct[4];
} _6;
diff --git a/reference/shaders/comp/bitcast-16bit-1.invalid.comp b/reference/shaders/comp/bitcast-16bit-1.invalid.comp
index 7420586f..9844e719 100644
--- a/reference/shaders/comp/bitcast-16bit-1.invalid.comp
+++ b/reference/shaders/comp/bitcast-16bit-1.invalid.comp
@@ -31,7 +31,7 @@ void main()
{
uint ident = gl_GlobalInvocationID.x;
f16vec2 a = int16BitsToFloat16(_25.inputs[ident].xy);
- _39.outputs[ident].x = int(packFloat2x16(a + f16vec2(float16_t(1), float16_t(1))));
+ _39.outputs[ident].x = int(packFloat2x16(a + f16vec2(1.0hf)));
_39.outputs[ident].y = packInt2x16(_25.inputs[ident].zw);
_39.outputs[ident].z = int(packUint2x16(u16vec2(_25.inputs[ident].xy)));
}
diff --git a/reference/shaders/desktop-only/vert/basic.desktop.sso.vert b/reference/shaders/desktop-only/vert/basic.desktop.sso.vert
index 5f527e08..2f880398 100644
--- a/reference/shaders/desktop-only/vert/basic.desktop.sso.vert
+++ b/reference/shaders/desktop-only/vert/basic.desktop.sso.vert
@@ -5,7 +5,7 @@ out gl_PerVertex
vec4 gl_Position;
};
-layout(std140) uniform UBO
+layout(binding = 0, std140) uniform UBO
{
mat4 uMVP;
} _16;
diff --git a/reference/shaders/tesc/water_tess.tesc b/reference/shaders/tesc/water_tess.tesc
index 4daaa456..8d5a4a30 100644
--- a/reference/shaders/tesc/water_tess.tesc
+++ b/reference/shaders/tesc/water_tess.tesc
@@ -2,7 +2,7 @@
#extension GL_EXT_tessellation_shader : require
layout(vertices = 1) out;
-layout(std140) uniform UBO
+layout(binding = 0, std140) uniform UBO
{
vec4 uScale;
vec3 uCamPos;
diff --git a/reference/shaders/vert/basic.vert b/reference/shaders/vert/basic.vert
index 05504eb2..8f251cbe 100644
--- a/reference/shaders/vert/basic.vert
+++ b/reference/shaders/vert/basic.vert
@@ -1,6 +1,6 @@
#version 310 es
-layout(std140) uniform UBO
+layout(binding = 0, std140) uniform UBO
{
mat4 uMVP;
} _16;
diff --git a/reference/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp b/reference/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp
index 33647a42..7c4c7ed6 100644
--- a/reference/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp
+++ b/reference/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp
@@ -26,7 +26,7 @@ struct B
#define SPIRV_CROSS_CONSTANT_ID_2 300
#endif
const int c = SPIRV_CROSS_CONSTANT_ID_2;
-const int _18 = (c + 50);
+const int d = (c + 50);
#ifndef SPIRV_CROSS_CONSTANT_ID_3
#define SPIRV_CROSS_CONSTANT_ID_3 400
#endif
@@ -37,7 +37,7 @@ layout(binding = 0, std430) buffer SSBO
A member_a;
B member_b;
int v[a];
- int w[_18];
+ int w[d];
} _22;
void main()
diff --git a/reference/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp.vk b/reference/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp.vk
index cd68e93d..b7571b7a 100644
--- a/reference/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp.vk
+++ b/reference/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp.vk
@@ -17,7 +17,7 @@ struct B
};
layout(constant_id = 2) const int c = 300;
-const int _18 = (c + 50);
+const int d = (c + 50);
layout(constant_id = 3) const int e = 400;
layout(set = 1, binding = 0, std430) buffer SSBO
@@ -25,7 +25,7 @@ layout(set = 1, binding = 0, std430) buffer SSBO
A member_a;
B member_b;
int v[a];
- int w[_18];
+ int w[d];
} _22;
void main()
diff --git a/reference/shaders/vulkan/frag/spec-constant-ternary.vk.frag b/reference/shaders/vulkan/frag/spec-constant-ternary.vk.frag
index e03dfcb9..081206f1 100644
--- a/reference/shaders/vulkan/frag/spec-constant-ternary.vk.frag
+++ b/reference/shaders/vulkan/frag/spec-constant-ternary.vk.frag
@@ -5,12 +5,12 @@
#endif
const uint s = SPIRV_CROSS_CONSTANT_ID_0;
const bool _13 = (s > 20u);
-const uint _16 = _13 ? 30u : 50u;
+const uint f = _13 ? 30u : 50u;
layout(location = 0) out float FragColor;
void main()
{
- FragColor = float(_16);
+ FragColor = float(f);
}
diff --git a/reference/shaders/vulkan/frag/spec-constant-ternary.vk.frag.vk b/reference/shaders/vulkan/frag/spec-constant-ternary.vk.frag.vk
index 59d3b99b..34bfea02 100644
--- a/reference/shaders/vulkan/frag/spec-constant-ternary.vk.frag.vk
+++ b/reference/shaders/vulkan/frag/spec-constant-ternary.vk.frag.vk
@@ -2,12 +2,12 @@
layout(constant_id = 0) const uint s = 10u;
const bool _13 = (s > 20u);
-const uint _16 = _13 ? 30u : 50u;
+const uint f = _13 ? 30u : 50u;
layout(location = 0) out float FragColor;
void main()
{
- FragColor = float(_16);
+ FragColor = float(f);
}
diff --git a/shaders-hlsl-no-opt/asm/vert/empty-struct-composite.asm.vert b/shaders-hlsl-no-opt/asm/vert/empty-struct-composite.asm.vert
index 37a2d879..038ecaa6 100644
--- a/shaders-hlsl-no-opt/asm/vert/empty-struct-composite.asm.vert
+++ b/shaders-hlsl-no-opt/asm/vert/empty-struct-composite.asm.vert
@@ -7,7 +7,6 @@
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %2 "main"
- OpExecutionMode %2 OriginUpperLeft
OpName %Test "Test"
OpName %t "t"
OpName %retvar "retvar"
diff --git a/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert b/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert
index 85acc47f..4587fc1e 100644
--- a/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert
+++ b/shaders-hlsl/asm/vert/vertex-id-instance-id.asm.vert
@@ -22,8 +22,8 @@
OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
OpMemberDecorate %gl_PerVertex 3 BuiltIn CullDistance
OpDecorate %gl_PerVertex Block
- OpDecorate %gl_VertexID BuiltIn VertexId
- OpDecorate %gl_InstanceID BuiltIn InstanceId
+ OpDecorate %gl_VertexID BuiltIn VertexIndex
+ OpDecorate %gl_InstanceID BuiltIn InstanceIndex
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
diff --git a/shaders-msl-no-opt/asm/vert/empty-struct-composite.asm.vert b/shaders-msl-no-opt/asm/vert/empty-struct-composite.asm.vert
index 37a2d879..038ecaa6 100644
--- a/shaders-msl-no-opt/asm/vert/empty-struct-composite.asm.vert
+++ b/shaders-msl-no-opt/asm/vert/empty-struct-composite.asm.vert
@@ -7,7 +7,6 @@
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %2 "main"
- OpExecutionMode %2 OriginUpperLeft
OpName %Test "Test"
OpName %t "t"
OpName %retvar "retvar"
diff --git a/shaders-msl/asm/comp/buffer-write.asm.comp b/shaders-msl/asm/comp/buffer-write.asm.comp
index aa7b3208..697324ba 100644
--- a/shaders-msl/asm/comp/buffer-write.asm.comp
+++ b/shaders-msl/asm/comp/buffer-write.asm.comp
@@ -22,6 +22,7 @@
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 7
OpDecorate %buffer DescriptorSet 0
+ OpDecorate %buffer Binding 0
OpDecorate %group_id BuiltIn WorkgroupId
OpDecorate %group_index BuiltIn LocalInvocationIndex
%void = OpTypeVoid
diff --git a/shaders-msl/asm/comp/multiple-entry.asm.comp b/shaders-msl/asm/comp/multiple-entry.asm.comp
index 0cfb5543..9ddc07bc 100644
--- a/shaders-msl/asm/comp/multiple-entry.asm.comp
+++ b/shaders-msl/asm/comp/multiple-entry.asm.comp
@@ -9,6 +9,7 @@
OpEntryPoint Fragment %func_alt "main2" %frag_in %frag_out
OpEntryPoint GLCompute %func "main"
OpExecutionMode %func LocalSize 1 1 1
+ OpExecutionMode %func_alt OriginUpperLeft
OpSource ESSL 310
OpSourceExtension "GL_GOOGLE_cpp_style_line_directive"
OpSourceExtension "GL_GOOGLE_include_directive"
diff --git a/shaders-msl/asm/comp/struct-resource-name-aliasing.asm.comp b/shaders-msl/asm/comp/struct-resource-name-aliasing.asm.comp
index 98d31537..384da305 100644
--- a/shaders-msl/asm/comp/struct-resource-name-aliasing.asm.comp
+++ b/shaders-msl/asm/comp/struct-resource-name-aliasing.asm.comp
@@ -20,6 +20,8 @@
OpDecorate %bufA BufferBlock
OpDecorate %bufA_0 DescriptorSet 0
OpDecorate %bufB DescriptorSet 0
+ OpDecorate %bufA_0 Binding 0
+ OpDecorate %bufB Binding 1
%void = OpTypeVoid
%3 = OpTypeFunction %void
%uint = OpTypeInt 32 0
diff --git a/shaders-msl/asm/frag/default-member-names.asm.frag b/shaders-msl/asm/frag/default-member-names.asm.frag
index 4d616fe4..ba493c0f 100644
--- a/shaders-msl/asm/frag/default-member-names.asm.frag
+++ b/shaders-msl/asm/frag/default-member-names.asm.frag
@@ -7,7 +7,7 @@
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %2 "main" %3
- OpExecutionMode %2 OriginLowerLeft
+ OpExecutionMode %2 OriginUpperLeft
OpDecorate %3 Location 0
%void = OpTypeVoid
%9 = OpTypeFunction %void
diff --git a/shaders-msl/asm/frag/extract-packed-from-composite.asm.frag b/shaders-msl/asm/frag/extract-packed-from-composite.asm.frag
index e205a15c..b27f598a 100644
--- a/shaders-msl/asm/frag/extract-packed-from-composite.asm.frag
+++ b/shaders-msl/asm/frag/extract-packed-from-composite.asm.frag
@@ -34,6 +34,7 @@
OpMemberDecorate %buf 1 Offset 256
OpDecorate %buf Block
OpDecorate %_ DescriptorSet 0
+ OpDecorate %_ Binding 0
OpDecorate %pos_1 BuiltIn FragCoord
OpDecorate %_entryPointOutput Location 0
%void = OpTypeVoid
diff --git a/shaders-msl/asm/frag/locations-components.asm.frag b/shaders-msl/asm/frag/locations-components.asm.frag
index bf8c6a69..16bfc525 100644
--- a/shaders-msl/asm/frag/locations-components.asm.frag
+++ b/shaders-msl/asm/frag/locations-components.asm.frag
@@ -6,6 +6,7 @@
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %8 %16 %22 %28 %33 %o0
+ OpExecutionMode %main OriginUpperLeft
OpName %main "main"
OpName %v1 "v1"
OpName %v2 "v2"
diff --git a/shaders-msl/asm/frag/op-image-sampled-image.asm.frag b/shaders-msl/asm/frag/op-image-sampled-image.asm.frag
index 4dbede7b..bf7ec56d 100644
--- a/shaders-msl/asm/frag/op-image-sampled-image.asm.frag
+++ b/shaders-msl/asm/frag/op-image-sampled-image.asm.frag
@@ -6,6 +6,7 @@
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %o0
+ OpExecutionMode %main OriginUpperLeft
OpName %main "main"
OpName %t0 "t0"
OpName %o0 "o0"
diff --git a/shaders-msl/vert/resource-arrays-leaf.ios.vert b/shaders-msl/vert/resource-arrays-leaf.ios.vert
index d097d598..b35c410f 100644
--- a/shaders-msl/vert/resource-arrays-leaf.ios.vert
+++ b/shaders-msl/vert/resource-arrays-leaf.ios.vert
@@ -3,12 +3,13 @@
layout(constant_id = 0) const int arraySize = 3;
layout(binding = 0, rgba32i) uniform iimage2D images[arraySize];
-uniform constant_block
+layout(binding = 4) uniform constant_block
{
vec4 foo;
int bar;
} constants[4];
-buffer storage_block
+
+layout(binding = 8) buffer storage_block
{
uvec4 baz;
ivec2 quux;
diff --git a/shaders-no-opt/asm/vert/empty-struct-composite.asm.vert b/shaders-no-opt/asm/vert/empty-struct-composite.asm.vert
index 37a2d879..038ecaa6 100644
--- a/shaders-no-opt/asm/vert/empty-struct-composite.asm.vert
+++ b/shaders-no-opt/asm/vert/empty-struct-composite.asm.vert
@@ -7,7 +7,6 @@
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %2 "main"
- OpExecutionMode %2 OriginUpperLeft
OpName %Test "Test"
OpName %t "t"
OpName %retvar "retvar"
diff --git a/shaders/asm/comp/hlsl-functionality.asm.comp b/shaders/asm/comp/hlsl-functionality.asm.comp
index dfdcb454..d4311139 100644
--- a/shaders/asm/comp/hlsl-functionality.asm.comp
+++ b/shaders/asm/comp/hlsl-functionality.asm.comp
@@ -26,6 +26,7 @@
OpMemberDecorate %Buf_count 0 Offset 0
OpDecorate %Buf_count BufferBlock
OpDecorate %Buf_count_0 DescriptorSet 0
+ OpDecorate %Buf_count_0 Binding 1
OpDecorateId %Buf_0 HlslCounterBufferGOOGLE %Buf_count_0
%void = OpTypeVoid
%3 = OpTypeFunction %void
diff --git a/shaders/asm/comp/multiple-entry.asm.comp b/shaders/asm/comp/multiple-entry.asm.comp
index 0cfb5543..9ddc07bc 100644
--- a/shaders/asm/comp/multiple-entry.asm.comp
+++ b/shaders/asm/comp/multiple-entry.asm.comp
@@ -9,6 +9,7 @@
OpEntryPoint Fragment %func_alt "main2" %frag_in %frag_out
OpEntryPoint GLCompute %func "main"
OpExecutionMode %func LocalSize 1 1 1
+ OpExecutionMode %func_alt OriginUpperLeft
OpSource ESSL 310
OpSourceExtension "GL_GOOGLE_cpp_style_line_directive"
OpSourceExtension "GL_GOOGLE_include_directive"
diff --git a/shaders/asm/frag/default-member-names.asm.frag b/shaders/asm/frag/default-member-names.asm.frag
index 4d616fe4..ba493c0f 100644
--- a/shaders/asm/frag/default-member-names.asm.frag
+++ b/shaders/asm/frag/default-member-names.asm.frag
@@ -7,7 +7,7 @@
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %2 "main" %3
- OpExecutionMode %2 OriginLowerLeft
+ OpExecutionMode %2 OriginUpperLeft
OpDecorate %3 Location 0
%void = OpTypeVoid
%9 = OpTypeFunction %void
diff --git a/shaders/asm/frag/locations-components.asm.frag b/shaders/asm/frag/locations-components.asm.frag
index bf8c6a69..16bfc525 100644
--- a/shaders/asm/frag/locations-components.asm.frag
+++ b/shaders/asm/frag/locations-components.asm.frag
@@ -6,6 +6,7 @@
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %8 %16 %22 %28 %33 %o0
+ OpExecutionMode %main OriginUpperLeft
OpName %main "main"
OpName %v1 "v1"
OpName %v2 "v2"
diff --git a/shaders/asm/frag/temporary-phi-hoisting.asm.frag b/shaders/asm/frag/temporary-phi-hoisting.asm.frag
index 7cedcd58..977c20ac 100644
--- a/shaders/asm/frag/temporary-phi-hoisting.asm.frag
+++ b/shaders/asm/frag/temporary-phi-hoisting.asm.frag
@@ -21,6 +21,7 @@
OpMemberDecorate %MyStruct_CB 0 Offset 0
OpDecorate %MyStruct_CB Block
OpDecorate %_ DescriptorSet 0
+ OpDecorate %_ Binding 0
OpDecorate %_entryPointOutput Location 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
diff --git a/spirv_hlsl.cpp b/spirv_hlsl.cpp
index 0da312e4..b2102f1b 100644
--- a/spirv_hlsl.cpp
+++ b/spirv_hlsl.cpp
@@ -2909,7 +2909,12 @@ string CompilerHLSL::to_resource_binding(const SPIRVariable &var)
else if (storage == StorageClassPushConstant)
space = 'b'; // Constant buffers
else if (storage == StorageClassStorageBuffer)
- space = 'u'; // UAV
+ {
+ // UAV or SRV depending on readonly flag.
+ Bitset flags = ir.get_buffer_block_flags(var);
+ bool is_readonly = flags.get(DecorationNonWritable);
+ space = is_readonly ? 't' : 'u';
+ }
break;
}
@@ -3538,8 +3543,14 @@ void CompilerHLSL::emit_access_chain(const Instruction &instruction)
bool need_byte_access_chain = false;
auto &type = expression_type(ops[2]);
- const SPIRAccessChain *chain = nullptr;
- if (type.storage == StorageClassStorageBuffer || has_decoration(type.self, DecorationBufferBlock))
+ const auto *chain = maybe_get<SPIRAccessChain>(ops[2]);
+
+ if (chain)
+ {
+ // Keep tacking on an existing access chain.
+ need_byte_access_chain = true;
+ }
+ else if (type.storage == StorageClassStorageBuffer || has_decoration(type.self, DecorationBufferBlock))
{
// If we are starting to poke into an SSBO, we are dealing with ByteAddressBuffers, and we need
// to emit SPIRAccessChain rather than a plain SPIRExpression.
@@ -3547,13 +3558,6 @@ void CompilerHLSL::emit_access_chain(const Instruction &instruction)
if (chain_arguments > type.array.size())
need_byte_access_chain = true;
}
- else
- {
- // Keep tacking on an existing access chain.
- chain = maybe_get<SPIRAccessChain>(ops[2]);
- if (chain)
- need_byte_access_chain = true;
- }
if (need_byte_access_chain)
{
diff --git a/spirv_msl.cpp b/spirv_msl.cpp
index fd90160f..9467f03f 100644
--- a/spirv_msl.cpp
+++ b/spirv_msl.cpp
@@ -369,7 +369,7 @@ void CompilerMSL::emit_entry_point_declarations()
for (uint32_t i = 0; i < type.array[0]; ++i)
statement(name + "_" + convert_to_string(i) + ",");
end_scope_decl();
- statement("");
+ statement_no_indent("");
}
// For some reason, without this, we end up emitting the arrays twice.
buffer_arrays.clear();
diff --git a/spirv_reflect.cpp b/spirv_reflect.cpp
index 75f7a308..54eb64fb 100644
--- a/spirv_reflect.cpp
+++ b/spirv_reflect.cpp
@@ -475,7 +475,8 @@ void CompilerReflection::emit_resources(const char *tag, const vector<Resource>
{
bool is_sized_block = is_block && (get_storage_class(res.id) == StorageClassUniform ||
- get_storage_class(res.id) == StorageClassUniformConstant);
+ get_storage_class(res.id) == StorageClassUniformConstant ||
+ get_storage_class(res.id) == StorageClassStorageBuffer);
if (is_sized_block)
{
uint32_t block_size = uint32_t(get_declared_struct_size(get_type(res.base_type_id)));