41eb5c43b5
We were passing a constant '1' to `emit_atomic_func_op()`--which caused us to refer to SPIR-V value `%1`, which is almost certainly not what we want! What we really want is to add/subtract the literal constant '1' to/from the memory location.
72 lines
2.5 KiB
Plaintext
72 lines
2.5 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.0
|
|
; Generator: Wine VKD3D Shader Compiler; 0
|
|
; Bound: 43
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
OpCapability SampledBuffer
|
|
OpCapability ImageBuffer
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint GLCompute %3 "main" %15
|
|
OpExecutionMode %3 LocalSize 4 1 1
|
|
OpName %3 "main"
|
|
OpName %8 "u0"
|
|
OpName %9 "u0_counters"
|
|
OpMemberName %9 0 "c"
|
|
OpName %11 "u0_counter"
|
|
OpName %15 "vThreadID"
|
|
OpName %19 "r0"
|
|
OpDecorate %8 DescriptorSet 0
|
|
OpDecorate %8 Binding 0
|
|
OpMemberDecorate %9 0 Offset 0
|
|
OpDecorate %9 BufferBlock
|
|
OpDecorate %11 DescriptorSet 1
|
|
OpDecorate %11 Binding 0
|
|
OpDecorate %15 BuiltIn GlobalInvocationId
|
|
%1 = OpTypeVoid
|
|
%2 = OpTypeFunction %1
|
|
%5 = OpTypeInt 32 0
|
|
%6 = OpTypeImage %5 Buffer 0 0 0 2 R32ui
|
|
%7 = OpTypePointer UniformConstant %6
|
|
%8 = OpVariable %7 UniformConstant
|
|
%9 = OpTypeStruct %5
|
|
%10 = OpTypePointer Uniform %9
|
|
%11 = OpVariable %10 Uniform
|
|
%12 = OpTypeInt 32 1
|
|
%13 = OpTypeVector %12 3
|
|
%14 = OpTypePointer Input %13
|
|
%15 = OpVariable %14 Input
|
|
%16 = OpTypeFloat 32
|
|
%17 = OpTypeVector %16 4
|
|
%18 = OpTypePointer Function %17
|
|
%20 = OpTypePointer Uniform %5
|
|
%21 = OpConstant %5 0
|
|
%23 = OpConstant %5 1
|
|
%26 = OpTypePointer Function %16
|
|
%33 = OpConstant %12 0
|
|
%34 = OpConstant %5 2
|
|
%37 = OpTypePointer Input %12
|
|
%41 = OpTypeVector %5 4
|
|
%3 = OpFunction %1 None %2
|
|
%4 = OpLabel
|
|
%19 = OpVariable %18 Function
|
|
%22 = OpAccessChain %20 %11 %21
|
|
%24 = OpAtomicIDecrement %5 %22 %23 %21
|
|
%25 = OpBitcast %16 %24
|
|
%27 = OpInBoundsAccessChain %26 %19 %21
|
|
OpStore %27 %25
|
|
%28 = OpLoad %6 %8
|
|
%29 = OpInBoundsAccessChain %26 %19 %21
|
|
%30 = OpLoad %16 %29
|
|
%31 = OpBitcast %12 %30
|
|
%32 = OpIMul %5 %31 %23
|
|
%35 = OpShiftRightLogical %5 %33 %34
|
|
%36 = OpIAdd %5 %32 %35
|
|
%38 = OpInBoundsAccessChain %37 %15 %21
|
|
%39 = OpLoad %12 %38
|
|
%40 = OpBitcast %5 %39
|
|
%42 = OpCompositeConstruct %41 %40 %40 %40 %40
|
|
OpImageWrite %28 %36 %42
|
|
OpReturn
|
|
OpFunctionEnd
|