mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
8df34fce62
Co-authored-by: Giovanni Mascellani <gmascellani@codeweavers.com> These may happen when storing to structured buffers, and we are not handling them properly yet. The included test reaches unreacheable code before this patch. Storing to buffers is complicated since we need to split the index chain in two paths: - The path within the variable where the resource is. - The subpath to the part of the resource element that is being stored to. For now, we will emit a fixme when the index chain in the lhs is not a direct resource access.
126 lines
1.8 KiB
Plaintext
126 lines
1.8 KiB
Plaintext
[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;
|
|
}
|
|
|
|
[pixel shader todo]
|
|
struct s
|
|
{
|
|
float3 a;
|
|
};
|
|
|
|
struct s2
|
|
{
|
|
float4x4 f1, f2, f3;
|
|
};
|
|
|
|
RasterizerOrderedStructuredBuffer<float4> u : register(u2);
|
|
RasterizerOrderedStructuredBuffer<float> u1;
|
|
RasterizerOrderedStructuredBuffer<float2x2> u2;
|
|
RasterizerOrderedStructuredBuffer<struct s> u3;
|
|
RasterizerOrderedStructuredBuffer<float4x4> u4;
|
|
RasterizerOrderedStructuredBuffer<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;
|
|
}
|
|
|
|
[pixel shader]
|
|
typedef float arr[2];
|
|
RasterizerOrderedStructuredBuffer<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;
|
|
}
|
|
|
|
[pixel shader fail(sm<6)]
|
|
RasterizerOrderedStructuredBuffer<Texture2D> u;
|
|
|
|
float4 main() : sv_target1
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
[pixel shader fail]
|
|
struct s
|
|
{
|
|
Texture2D t;
|
|
};
|
|
RasterizerOrderedStructuredBuffer<struct s> u;
|
|
|
|
float4 main() : sv_target1
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
|
|
[pixel shader todo]
|
|
struct apple
|
|
{
|
|
float3 a, x;
|
|
};
|
|
|
|
RWStructuredBuffer<apple> u;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
u[0].x = float3(30.0, 40.0, 50.0);
|
|
return 0;
|
|
}
|