78 lines
2.8 KiB
Plaintext
78 lines
2.8 KiB
Plaintext
#!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
|
|
|