blob: 3a0892fc94f7f0eb1f2873905fcb74b283bcefec [file] [log] [blame]
#!amber
# Copyright 2019 The Amber Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
DEVICE_EXTENSION VK_KHR_storage_buffer_storage_class
SHADER compute my_shader SPIRV-ASM
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %18 "foo"
OpSource OpenCL_C 120
OpDecorate %11 SpecId 0
OpDecorate %12 SpecId 1
OpDecorate %13 SpecId 2
OpDecorate %_runtimearr_uint ArrayStride 4
OpMemberDecorate %_struct_3 0 Offset 0
OpDecorate %_struct_3 Block
OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
OpDecorate %16 DescriptorSet 0
OpDecorate %16 Binding 0
OpDecorate %17 DescriptorSet 0
OpDecorate %17 Binding 1
%uint = OpTypeInt 32 0
%_runtimearr_uint = OpTypeRuntimeArray %uint
%_struct_3 = OpTypeStruct %_runtimearr_uint
%_ptr_StorageBuffer__struct_3 = OpTypePointer StorageBuffer %_struct_3
%void = OpTypeVoid
%6 = OpTypeFunction %void
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%v3uint = OpTypeVector %uint 3
%_ptr_Private_v3uint = OpTypePointer Private %v3uint
%uint_0 = OpConstant %uint 0
%11 = OpSpecConstant %uint 1
%12 = OpSpecConstant %uint 1
%13 = OpSpecConstant %uint 1
%gl_WorkGroupSize = OpSpecConstantComposite %v3uint %11 %12 %13
%15 = OpVariable %_ptr_Private_v3uint Private %gl_WorkGroupSize
%16 = OpVariable %_ptr_StorageBuffer__struct_3 StorageBuffer
%17 = OpVariable %_ptr_StorageBuffer__struct_3 StorageBuffer
%18 = OpFunction %void None %6
%19 = OpLabel
%20 = OpAccessChain %_ptr_StorageBuffer_uint %16 %uint_0 %uint_0
%21 = OpAccessChain %_ptr_StorageBuffer_uint %17 %uint_0 %uint_0
%22 = OpLoad %uint %20
OpStore %21 %22
OpReturn
OpFunctionEnd
END
BUFFER in_buf DATA_TYPE uint32 DATA
9
END
BUFFER out_buf DATA_TYPE uint32 SIZE 1 FILL 0
PIPELINE compute my_pipeline
ATTACH my_shader ENTRY_POINT foo
BIND BUFFER in_buf AS storage DESCRIPTOR_SET 0 BINDING 0
BIND BUFFER out_buf AS storage DESCRIPTOR_SET 0 BINDING 1
END
RUN my_pipeline 1 1 1
EXPECT out_buf EQ_BUFFER in_buf