4185acc70d
- Assign ulongn physical type to buffer pointers in short arrays when array stride is larger than pointer size. - Support GL_EXT_buffer_reference_uvec2 casting buffer reference pointers to and from uvec2 values. - When packing structs, include structs inside physical buffers. - Update mechanism for traversing pointer arrays when calculating type sizes. - Added unit test shaders.
29 lines
558 B
Plaintext
29 lines
558 B
Plaintext
#include <metal_stdlib>
|
|
#include <simd/simd.h>
|
|
|
|
using namespace metal;
|
|
|
|
struct SSBO;
|
|
|
|
struct UBO
|
|
{
|
|
uint2 b;
|
|
};
|
|
|
|
struct SSBO
|
|
{
|
|
packed_float3 a1;
|
|
float a2;
|
|
};
|
|
|
|
kernel void main0(constant UBO& _10 [[buffer(0)]])
|
|
{
|
|
((device SSBO*)as_type<uint64_t>(_10.b))->a1 = float3(1.0, 2.0, 3.0);
|
|
uint2 _35 = as_type<uint2>((uint64_t)((device SSBO*)as_type<uint64_t>(_10.b + uint2(32u))));
|
|
uint2 v2 = _35;
|
|
device SSBO* _39 = ((device SSBO*)as_type<uint64_t>(_35));
|
|
float3 v3 = float3(_39->a1);
|
|
_39->a1 = float3(_39->a1) + float3(1.0);
|
|
}
|
|
|