summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl/frag/constant-composites.frag
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl/frag/constant-composites.frag')
-rw-r--r--3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl/frag/constant-composites.frag98
1 files changed, 42 insertions, 56 deletions
diff --git a/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl/frag/constant-composites.frag b/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl/frag/constant-composites.frag
index ccaac97bcbc..e0fa980fb85 100644
--- a/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl/frag/constant-composites.frag
+++ b/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl/frag/constant-composites.frag
@@ -1,18 +1,56 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
+#pragma clang diagnostic ignored "-Wmissing-braces"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
+template<typename T, size_t Num>
+struct spvUnsafeArray
+{
+ T elements[Num ? Num : 1];
+
+ thread T& operator [] (size_t pos) thread
+ {
+ return elements[pos];
+ }
+ constexpr const thread T& operator [] (size_t pos) const thread
+ {
+ return elements[pos];
+ }
+
+ device T& operator [] (size_t pos) device
+ {
+ return elements[pos];
+ }
+ constexpr const device T& operator [] (size_t pos) const device
+ {
+ return elements[pos];
+ }
+
+ constexpr const constant T& operator [] (size_t pos) const constant
+ {
+ return elements[pos];
+ }
+
+ threadgroup T& operator [] (size_t pos) threadgroup
+ {
+ return elements[pos];
+ }
+ constexpr const threadgroup T& operator [] (size_t pos) const threadgroup
+ {
+ return elements[pos];
+ }
+};
+
struct Foo
{
float a;
float b;
};
-constant float _16[4] = { 1.0, 4.0, 3.0, 2.0 };
-constant Foo _28[2] = { Foo{ 10.0, 20.0 }, Foo{ 30.0, 40.0 } };
+constant spvUnsafeArray<float, 4> _16 = spvUnsafeArray<float, 4>({ 1.0, 4.0, 3.0, 2.0 });
struct main0_out
{
@@ -24,62 +62,10 @@ struct main0_in
int line [[user(locn0)]];
};
-template<typename T, uint A>
-inline void spvArrayCopyFromConstantToStack1(thread T (&dst)[A], constant T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
- {
- dst[i] = src[i];
- }
-}
-
-template<typename T, uint A>
-inline void spvArrayCopyFromConstantToThreadGroup1(threadgroup T (&dst)[A], constant T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
- {
- dst[i] = src[i];
- }
-}
-
-template<typename T, uint A>
-inline void spvArrayCopyFromStackToStack1(thread T (&dst)[A], thread const T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
- {
- dst[i] = src[i];
- }
-}
-
-template<typename T, uint A>
-inline void spvArrayCopyFromStackToThreadGroup1(threadgroup T (&dst)[A], thread const T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
- {
- dst[i] = src[i];
- }
-}
-
-template<typename T, uint A>
-inline void spvArrayCopyFromThreadGroupToStack1(thread T (&dst)[A], threadgroup const T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
- {
- dst[i] = src[i];
- }
-}
-
-template<typename T, uint A>
-inline void spvArrayCopyFromThreadGroupToThreadGroup1(threadgroup T (&dst)[A], threadgroup const T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
- {
- dst[i] = src[i];
- }
-}
-
fragment main0_out main0(main0_in in [[stage_in]])
{
+ spvUnsafeArray<Foo, 2> _28 = spvUnsafeArray<Foo, 2>({ Foo{ 10.0, 20.0 }, Foo{ 30.0, 40.0 } });
+
main0_out out = {};
out.FragColor = float4(_16[in.line]);
out.FragColor += float4(_28[in.line].a * _28[1 - in.line].a);