Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
2482ff708c
@ -0,0 +1,18 @@
|
|||||||
|
#include <metal_stdlib>
|
||||||
|
#include <simd/simd.h>
|
||||||
|
|
||||||
|
using namespace metal;
|
||||||
|
|
||||||
|
struct SSBO
|
||||||
|
{
|
||||||
|
float4 a[16];
|
||||||
|
float4 b[16];
|
||||||
|
};
|
||||||
|
|
||||||
|
constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u);
|
||||||
|
|
||||||
|
kernel void main0(device SSBO& _14 [[buffer(0)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]])
|
||||||
|
{
|
||||||
|
_14.b[gl_GlobalInvocationID.x] = float4(_14.a[gl_GlobalInvocationID.x].x);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
#version 450
|
||||||
|
layout(local_size_x = 1) in;
|
||||||
|
|
||||||
|
layout(std140, binding = 0) buffer SSBO
|
||||||
|
{
|
||||||
|
float a[16];
|
||||||
|
vec4 b[16];
|
||||||
|
};
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
b[gl_GlobalInvocationID.x] = vec4(a[gl_GlobalInvocationID.x]);
|
||||||
|
}
|
@ -3035,7 +3035,7 @@ string CompilerGLSL::to_composite_constructor_expression(uint32_t id)
|
|||||||
return to_rerolled_array_expression(to_enclosed_expression(id), type);
|
return to_rerolled_array_expression(to_enclosed_expression(id), type);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return to_expression(id);
|
return to_unpacked_expression(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
string CompilerGLSL::to_expression(uint32_t id, bool register_expression_read)
|
string CompilerGLSL::to_expression(uint32_t id, bool register_expression_read)
|
||||||
@ -8290,14 +8290,14 @@ void CompilerGLSL::emit_instruction(const Instruction &instruction)
|
|||||||
if (type_is_empty(out_type) && !backend.supports_empty_struct)
|
if (type_is_empty(out_type) && !backend.supports_empty_struct)
|
||||||
constructor_op += "0";
|
constructor_op += "0";
|
||||||
else if (splat)
|
else if (splat)
|
||||||
constructor_op += to_expression(elems[0]);
|
constructor_op += to_unpacked_expression(elems[0]);
|
||||||
else
|
else
|
||||||
constructor_op += build_composite_combiner(result_type, elems, length);
|
constructor_op += build_composite_combiner(result_type, elems, length);
|
||||||
constructor_op += " }";
|
constructor_op += " }";
|
||||||
}
|
}
|
||||||
else if (swizzle_splat && !composite)
|
else if (swizzle_splat && !composite)
|
||||||
{
|
{
|
||||||
constructor_op = remap_swizzle(get<SPIRType>(result_type), 1, to_expression(elems[0]));
|
constructor_op = remap_swizzle(get<SPIRType>(result_type), 1, to_unpacked_expression(elems[0]));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -8305,7 +8305,7 @@ void CompilerGLSL::emit_instruction(const Instruction &instruction)
|
|||||||
if (type_is_empty(out_type) && !backend.supports_empty_struct)
|
if (type_is_empty(out_type) && !backend.supports_empty_struct)
|
||||||
constructor_op += "0";
|
constructor_op += "0";
|
||||||
else if (splat)
|
else if (splat)
|
||||||
constructor_op += to_expression(elems[0]);
|
constructor_op += to_unpacked_expression(elems[0]);
|
||||||
else
|
else
|
||||||
constructor_op += build_composite_combiner(result_type, elems, length);
|
constructor_op += build_composite_combiner(result_type, elems, length);
|
||||||
constructor_op += ")";
|
constructor_op += ")";
|
||||||
|
Loading…
Reference in New Issue
Block a user