#version 460
#extension GL_EXT_samplerless_texture_functions : require
layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in;

layout(set = 0, binding = 0) uniform texture2D _8;
layout(set = 0, binding = 0, r32f) uniform image2D _11;
layout(set = 0, binding = 1, r32f) uniform image2D _12;

void main()
{
    imageStore(_11, ivec2(uvec2(gl_GlobalInvocationID.x, gl_GlobalInvocationID.y)), vec4(imageLoad(_11, ivec2(uvec2(gl_GlobalInvocationID.x, gl_GlobalInvocationID.y))).x + 1.0));
    imageStore(_12, ivec2(uvec2(gl_GlobalInvocationID.x, gl_GlobalInvocationID.y)), vec4(imageLoad(_12, ivec2(uvec2(gl_GlobalInvocationID.x, gl_GlobalInvocationID.y))).x + texelFetch(_8, ivec2(uvec2(gl_GlobalInvocationID.x, gl_GlobalInvocationID.y)), int(0u)).x));
}


#if 0
// SPIR-V disassembly
; SPIR-V
; Version: 1.6
; Generator: Unknown(30017); 21022
; Bound: 48
; Schema: 0
OpCapability Shader
OpCapability StorageImageWriteWithoutFormat
OpCapability VulkanMemoryModel
OpMemoryModel Logical Vulkan
OpEntryPoint GLCompute %3 "main" %8 %11 %12 %19
OpExecutionMode %3 LocalSize 8 8 1
OpName %3 "main"
OpDecorate %8 DescriptorSet 0
OpDecorate %8 Binding 0
OpDecorate %11 DescriptorSet 0
OpDecorate %11 Binding 0
OpDecorate %12 DescriptorSet 0
OpDecorate %12 Binding 1
OpDecorate %19 BuiltIn GlobalInvocationId
%1 = OpTypeVoid
%2 = OpTypeFunction %1
%5 = OpTypeFloat 32
%6 = OpTypeImage %5 2D 0 0 0 1 Unknown
%7 = OpTypePointer UniformConstant %6
%8 = OpVariable %7 UniformConstant
%9 = OpTypeImage %5 2D 0 0 0 2 R32f
%10 = OpTypePointer UniformConstant %9
%11 = OpVariable %10 UniformConstant
%12 = OpVariable %10 UniformConstant
%16 = OpTypeInt 32 0
%17 = OpTypeVector %16 3
%18 = OpTypePointer Input %17
%19 = OpVariable %18 Input
%20 = OpTypePointer Input %16
%22 = OpConstant %16 0
%25 = OpConstant %16 1
%27 = OpTypeVector %5 4
%29 = OpTypeVector %16 2
%31 = OpConstant %16 5
%34 = OpConstant %5 1
%3 = OpFunction %1 None %2
%4 = OpLabel
OpBranch %46
%46 = OpLabel
%13 = OpLoad %9 %12
%14 = OpLoad %9 %11
%15 = OpLoad %6 %8
%21 = OpAccessChain %20 %19 %22
%23 = OpLoad %16 %21
%24 = OpAccessChain %20 %19 %25
%26 = OpLoad %16 %24
%30 = OpCompositeConstruct %29 %23 %26
%28 = OpImageRead %27 %14 %30 MakeTexelVisible|NonPrivateTexel %31
%32 = OpCompositeExtract %5 %28 0
%33 = OpFAdd %5 %32 %34
%35 = OpCompositeConstruct %29 %23 %26
%36 = OpCompositeConstruct %27 %33 %33 %33 %33
OpImageWrite %14 %35 %36 MakeTexelAvailable|NonPrivateTexel %31
%38 = OpCompositeConstruct %29 %23 %26
%37 = OpImageFetch %27 %15 %38 Lod %22
%39 = OpCompositeExtract %5 %37 0
%41 = OpCompositeConstruct %29 %23 %26
%40 = OpImageRead %27 %13 %41 NonPrivateTexel
%42 = OpCompositeExtract %5 %40 0
%43 = OpFAdd %5 %42 %39
%44 = OpCompositeConstruct %29 %23 %26
%45 = OpCompositeConstruct %27 %43 %43 %43 %43
OpImageWrite %13 %44 %45 NonPrivateTexel
OpReturn
OpFunctionEnd
#endif
