glslang/Test/spv.register.subpass.frag
LoopDawg 7f93d56ef2 HLSL: add subpass input types and methods
Add support for Subpass Input proposal of issue #1069.

Subpass input types are given as:

    layout(input_attachment_index = 1) SubpassInput<float4> subpass_f;
    layout(input_attachment_index = 2) SubpassInput<int4>   subpass_i;
    layout(input_attachment_index = 3) SubpassInput<uint4>  subpass_u;

    layout(input_attachment_index = 1) SubpassInputMS<float4> subpass_ms_f;
    layout(input_attachment_index = 2) SubpassInputMS<int4>   subpass_ms_i;
    layout(input_attachment_index = 3) SubpassInputMS<uint4>  subpass_ms_u;

The input attachment may also be specified using attribute syntax:

    [[vk::input_attachment_index(7)]] SubpassInput subpass_2;

The template type may be a shorter-than-vec4 vector, but currently user
structs are not supported.  (An unimplemented error will be issued).

The load operations are methods on objects of the above type:

    float4 result = subpass_f.SubpassLoad();
    int4   result = subpass_i.SubpassLoad();
    uint4  result = subpass_u.SubpassLoad();

    float4 result = subpass_ms_f.SubpassLoad(samp);
    int4   result = subpass_ms_i.SubpassLoad(samp);
    uint4  result = subpass_ms_u.SubpassLoad(samp);

Additionally, the AST printer could not print EOpSubpass* nodes.  Now it can.

Fixes #1069
2017-10-02 12:46:55 -06:00

16 lines
477 B
GLSL

// Test binding autoassignment and offset for SubpassInput objects
layout(input_attachment_index = 1) SubpassInput<float4> subpass_f4 : register(t1);
layout(input_attachment_index = 4) SubpassInputMS<float4> subpass_ms_f4;
[[vk::input_attachment_index(7)]] SubpassInput subpass_2;
float4 main() : SV_Target0
{
float4 result00 = subpass_f4.SubpassLoad();
float4 result10 = subpass_ms_f4.SubpassLoad(3);
float4 result73 = subpass_2.SubpassLoad();
return 0;
}