aboutsummaryrefslogtreecommitdiff
path: root/tests/cases/debugger_spirv_line_stepping.amber
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cases/debugger_spirv_line_stepping.amber')
-rw-r--r--tests/cases/debugger_spirv_line_stepping.amber125
1 files changed, 125 insertions, 0 deletions
diff --git a/tests/cases/debugger_spirv_line_stepping.amber b/tests/cases/debugger_spirv_line_stepping.amber
new file mode 100644
index 0000000..1d3e33b
--- /dev/null
+++ b/tests/cases/debugger_spirv_line_stepping.amber
@@ -0,0 +1,125 @@
+#!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" 25 "%2 = OpVariable %15 Input"
+ STEP_IN
+ EXPECT LOCATION "ComputeShader0.spvasm" 27 "%6 = OpVariable %11 Uniform"
+ 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
+