[require]
VK_KHR_spirv_1_4

[vertex shader spirv]
; Test a vertex shader with an SSBO in the OpEntryPoint instruction.
;
; #version 450
;
; layout(std430, binding = 0) buffer input_buffer
; {
;	vec2 in_data[3];
; };
;
; void main() {
;	gl_Position = vec4(in_data[gl_VertexIndex], 0.0, 1.0);
; }
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Vertex %main "main" %_ %__0 %gl_VertexIndex
               OpSource GLSL 450
               OpName %main "main"
               OpName %gl_PerVertex "gl_PerVertex"
               OpMemberName %gl_PerVertex 0 "gl_Position"
               OpMemberName %gl_PerVertex 1 "gl_PointSize"
               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
               OpMemberName %gl_PerVertex 3 "gl_CullDistance"
               OpName %_ ""
               OpName %input_buffer "input_buffer"
               OpMemberName %input_buffer 0 "in_data"
               OpName %__0 ""
               OpName %gl_VertexIndex "gl_VertexIndex"
               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
               OpMemberDecorate %gl_PerVertex 3 BuiltIn CullDistance
               OpDecorate %gl_PerVertex Block
               OpDecorate %_arr_v2float_uint_3 ArrayStride 8
               OpMemberDecorate %input_buffer 0 Offset 0
               OpDecorate %input_buffer Block
               OpDecorate %__0 DescriptorSet 0
               OpDecorate %__0 Binding 0
               OpDecorate %gl_VertexIndex BuiltIn VertexIndex
       %void = OpTypeVoid
          %3 = OpTypeFunction %void
      %float = OpTypeFloat 32
    %v4float = OpTypeVector %float 4
       %uint = OpTypeInt 32 0
     %uint_1 = OpConstant %uint 1
%_arr_float_uint_1 = OpTypeArray %float %uint_1
%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
        %int = OpTypeInt 32 1
      %int_0 = OpConstant %int 0
    %v2float = OpTypeVector %float 2
     %uint_3 = OpConstant %uint 3
%_arr_v2float_uint_3 = OpTypeArray %v2float %uint_3
%input_buffer = OpTypeStruct %_arr_v2float_uint_3
%_ptr_StorageBuffer_input_buffer = OpTypePointer StorageBuffer %input_buffer
        %__0 = OpVariable %_ptr_StorageBuffer_input_buffer StorageBuffer
%_ptr_Input_int = OpTypePointer Input %int
%gl_VertexIndex = OpVariable %_ptr_Input_int Input
%_ptr_StorageBuffer_v2float = OpTypePointer StorageBuffer %v2float
    %float_0 = OpConstant %float 0
    %float_1 = OpConstant %float 1
%_ptr_Output_v4float = OpTypePointer Output %v4float
       %main = OpFunction %void None %3
          %5 = OpLabel
         %24 = OpLoad %int %gl_VertexIndex
         %26 = OpAccessChain %_ptr_StorageBuffer_v2float %__0 %int_0 %24
         %27 = OpLoad %v2float %26
         %30 = OpCompositeExtract %float %27 0
         %31 = OpCompositeExtract %float %27 1
         %32 = OpCompositeConstruct %v4float %30 %31 %float_0 %float_1
         %34 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %34 %32
               OpReturn
               OpFunctionEnd
[fragment shader]
#version 430
layout(location = 0) out vec4 outColor;
void main() {
    outColor = vec4(0.5, 0.5, 0.5, 0.5);
}

[vertex data]
     0/R8G8_SNORM 1/R8G8B8A8_UNORM
    -128 -128    255   0   0   255
     127  127    255   0   0   255
    -128  127    255   0   0   255

[test]
ssbo 0:0 subdata float 0 -1.0 -1.0 1.0 -1.0 -1.0 1.0
clear
draw arrays TRIANGLE_LIST 0 3

probe rect rgba (0, 0, 125, 125) (0.5 0.5 0.5 0.5)
probe rect rgba (125, 125, 125, 125) (0.0 0.0 0.0 0.0)
