[require]
shader model >= 5.0

[pixel shader todo]
struct s
{
    float3 a;
};

struct s2
{
    float4x4 f1, f2, f3;
};

RWStructuredBuffer<float4> u : register(u2);
RWStructuredBuffer<float> u1;
RWStructuredBuffer<float2x2> u2;
RWStructuredBuffer<struct s> u3;
RWStructuredBuffer<float4x4> u4;
RWStructuredBuffer<struct s2> u5;

float4 main() : sv_target1
{
    u[0] = float4(11.1, 12.2, 13.3, 14.4);
    return 0;
}

% Array type
[pixel shader]
typedef float arr[2];
RWStructuredBuffer<arr> u;

float4 main() : sv_target1
{
    return 0;
}

% Object types
[pixel shader fail(sm<6)]
RWStructuredBuffer<Texture2D> u;

float4 main() : sv_target1
{
    return 0;
}

[pixel shader fail]
struct s
{
    Texture2D t;
};
RWStructuredBuffer<struct s> u;

float4 main() : sv_target1
{
    return 0;
}
