blob: 68b17421456c6ef71a87397944d26cc74742c5b6 [file] [log] [blame]
[require]
VK_KHR_spirv_1_4
[vertex shader passthrough]
[fragment shader spirv]
; A fragment shader with a ubo.
;
; #version 430
;
; layout(std430, binding = 0) buffer input_buffer
; {
; vec4 data_SSBO[];
; };
;
; layout(location = 0) out vec4 outColor;
;
; void main() {
; outColor = data_SSBO[0];
; }
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %_ %outColor
OpExecutionMode %main OriginUpperLeft
OpSource GLSL 430
OpName %main "main"
OpName %outColor "outColor"
OpName %input_buffer "input_buffer"
OpMemberName %input_buffer 0 "data_SSBO"
OpName %_ ""
OpDecorate %outColor Location 0
OpDecorate %_runtimearr_v4float ArrayStride 16
OpMemberDecorate %input_buffer 0 Offset 0
OpDecorate %input_buffer Block
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%outColor = OpVariable %_ptr_Output_v4float Output
%_runtimearr_v4float = OpTypeRuntimeArray %v4float
%input_buffer = OpTypeStruct %_runtimearr_v4float
%_ptr_StorageBuffer_input_buffer = OpTypePointer StorageBuffer %input_buffer
%_ = OpVariable %_ptr_StorageBuffer_input_buffer StorageBuffer
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%_ptr_StorageBuffer_v4float = OpTypePointer StorageBuffer %v4float
%main = OpFunction %void None %3
%5 = OpLabel
%17 = OpAccessChain %_ptr_StorageBuffer_v4float %_ %int_0 %int_0
%18 = OpLoad %v4float %17
OpStore %outColor %18
OpReturn
OpFunctionEnd
[test]
ssbo 0:0 subdata float 0 0.2 0.3 0.4 0.1
draw rect -1 -1 2 2
probe rect rgba (0, 0, 250, 250) (0.2 0.3 0.4 0.1)