132 lines
4.0 KiB
Plaintext
132 lines
4.0 KiB
Plaintext
#!amber
|
|
# Copyright 2020 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.
|
|
|
|
SET ENGINE_DATA fence_timeout_ms 1000000
|
|
|
|
# #version 450
|
|
# layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
# layout(binding = 0, std430) buffer InBuffer
|
|
# {
|
|
# int Data[];
|
|
# } In;
|
|
# layout(binding = 1, std430) buffer OutBuffer
|
|
# {
|
|
# int Data[];
|
|
# } Out;
|
|
# void main()
|
|
# {
|
|
# Out.Data[gl_GlobalInvocationID.x] = In.Data[gl_GlobalInvocationID.x];
|
|
# }
|
|
SHADER compute mah_shader SPIRV-ASM
|
|
OpCapability Shader
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint GLCompute %1 "main" %2
|
|
OpExecutionMode %1 LocalSize 4 1 1
|
|
OpDecorate %3 ArrayStride 4
|
|
OpMemberDecorate %4 0 Offset 0
|
|
OpDecorate %4 BufferBlock
|
|
OpDecorate %5 DescriptorSet 0
|
|
OpDecorate %5 Binding 1
|
|
OpDecorate %2 BuiltIn GlobalInvocationId
|
|
OpDecorate %6 DescriptorSet 0
|
|
OpDecorate %6 Binding 0
|
|
%7 = OpTypeVoid
|
|
%8 = OpTypeFunction %7
|
|
%9 = OpTypeInt 32 1
|
|
%10 = OpTypeInt 32 0
|
|
%3 = OpTypeRuntimeArray %9
|
|
%4 = OpTypeStruct %3
|
|
%11 = OpTypePointer Uniform %4
|
|
%5 = OpVariable %11 Uniform
|
|
%12 = OpConstant %9 0
|
|
%13 = OpConstant %10 0
|
|
%14 = OpTypeVector %10 3
|
|
%15 = OpTypePointer Input %14
|
|
%2 = OpVariable %15 Input
|
|
%16 = OpTypePointer Input %10
|
|
%6 = OpVariable %11 Uniform
|
|
%17 = OpTypePointer Uniform %9
|
|
%1 = OpFunction %7 None %8
|
|
%18 = OpLabel
|
|
%19 = OpAccessChain %16 %2 %13
|
|
%20 = OpLoad %10 %19
|
|
%21 = OpAccessChain %17 %6 %12 %20
|
|
%22 = OpLoad %9 %21
|
|
%23 = OpAccessChain %17 %5 %12 %20
|
|
OpStore %23 %22
|
|
OpReturn
|
|
OpFunctionEnd
|
|
END
|
|
|
|
BUFFER buf_in DATA_TYPE uint32 DATA
|
|
20 30 40 50 60
|
|
END
|
|
|
|
BUFFER buf_out DATA_TYPE uint32 DATA
|
|
99 99 99 99 99
|
|
END
|
|
|
|
PIPELINE compute pipeline
|
|
ATTACH mah_shader
|
|
|
|
BIND BUFFER buf_in AS storage DESCRIPTOR_SET 0 BINDING 0
|
|
BIND BUFFER buf_out AS storage DESCRIPTOR_SET 0 BINDING 1
|
|
END
|
|
|
|
# Only one workgroup. Having only one invocation execute ensures
|
|
# there are no race conditions.
|
|
DEBUG pipeline 1 1 1
|
|
THREAD GLOBAL_INVOCATION_ID 2 0 0
|
|
EXPECT CALLSTACK
|
|
"SPIR-V" "ComputeShader0.spvasm" 20
|
|
END
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 20 "%5 = OpVariable %11 Uniform"
|
|
STEP_IN
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 21 "%12 = OpConstant %9 0"
|
|
STEP_IN
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 22 "%13 = OpConstant %10 0"
|
|
STEP_IN
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 25 "%2 = OpVariable %15 Input"
|
|
STEP_IN
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 27 "%6 = OpVariable %11 Uniform"
|
|
STEP_IN
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 29 "%1 = OpFunction %7 None %8"
|
|
STEP_IN
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 31 "%19 = OpAccessChain %16 %2 %13"
|
|
STEP_IN
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 32 "%20 = OpLoad %10 %19"
|
|
STEP_IN
|
|
EXPECT LOCAL "%20" EQ 2
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 33 "%21 = OpAccessChain %17 %6 %12 %20"
|
|
STEP_IN
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 34 "%22 = OpLoad %9 %21"
|
|
STEP_IN
|
|
EXPECT LOCAL "%22" EQ 40
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 35 "%23 = OpAccessChain %17 %5 %12 %20"
|
|
STEP_IN
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 36 "OpStore %23 %22"
|
|
STEP_IN
|
|
EXPECT CALLSTACK
|
|
"SPIR-V" "ComputeShader0.spvasm" 37
|
|
END
|
|
EXPECT LOCATION "ComputeShader0.spvasm" 37 "OpReturn"
|
|
CONTINUE
|
|
END
|
|
END
|
|
|
|
EXPECT buf_in IDX 0 EQ 20 30 40 50 60
|
|
EXPECT buf_out IDX 0 EQ 20 30 40 50 99
|
|
|