4ca06c7278
Implement this by synthesizing an OpLoad/OpStore pair instead.
200 lines
7.2 KiB
GLSL
200 lines
7.2 KiB
GLSL
; SPIR-V
|
|
; Version: 1.0
|
|
; Generator: Wine VKD3D Shader Compiler; 2
|
|
; Bound: 126
|
|
; Schema: 0
|
|
OpCapability Tessellation
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint TessellationControl %1 "main" %4 %30 %80 %101 %103 %108 %110 %115 %117
|
|
OpExecutionMode %1 OutputVertices 3
|
|
OpExecutionMode %1 Triangles
|
|
OpExecutionMode %1 SpacingEqual
|
|
OpExecutionMode %1 VertexOrderCw
|
|
OpName %1 "main"
|
|
OpName %11 "opc"
|
|
OpName %14 "cb1_struct"
|
|
OpName %16 "cb0_0"
|
|
OpName %22 "vicp"
|
|
OpName %23 "fork0"
|
|
OpName %26 "vForkInstanceId"
|
|
OpName %34 "r0"
|
|
OpName %32 "fork0_epilogue"
|
|
OpName %75 "fork1"
|
|
OpName %81 "fork1_epilogue"
|
|
OpName %101 "v0"
|
|
OpName %103 "v1"
|
|
OpName %108 "vicp0"
|
|
OpName %110 "vocp0"
|
|
OpName %115 "vicp1"
|
|
OpName %117 "vocp1"
|
|
OpDecorate %4 BuiltIn InvocationId
|
|
OpDecorate %13 ArrayStride 16
|
|
OpDecorate %14 Block
|
|
OpMemberDecorate %14 0 Offset 0
|
|
OpDecorate %16 DescriptorSet 0
|
|
OpDecorate %16 Binding 0
|
|
OpDecorate %30 BuiltIn TessLevelOuter
|
|
OpDecorate %30 Patch
|
|
OpDecorate %30 Patch
|
|
OpDecorate %30 Patch
|
|
OpDecorate %30 Patch
|
|
OpDecorate %80 BuiltIn TessLevelInner
|
|
OpDecorate %80 Patch
|
|
OpDecorate %80 Patch
|
|
OpDecorate %101 Location 0
|
|
OpDecorate %103 Location 1
|
|
OpDecorate %108 Location 2
|
|
OpDecorate %110 Location 3
|
|
OpDecorate %115 Location 4
|
|
OpDecorate %117 Location 5
|
|
%2 = OpTypeInt 32 1
|
|
%3 = OpTypePointer Input %2
|
|
%4 = OpVariable %3 Input
|
|
%5 = OpTypeFloat 32
|
|
%6 = OpTypeVector %5 4
|
|
%7 = OpTypeInt 32 0
|
|
%8 = OpConstant %7 4
|
|
%9 = OpTypeArray %6 %8
|
|
%10 = OpTypePointer Private %9
|
|
%11 = OpVariable %10 Private
|
|
%12 = OpConstant %7 1
|
|
%13 = OpTypeArray %6 %12
|
|
%14 = OpTypeStruct %13
|
|
%15 = OpTypePointer Uniform %14
|
|
%16 = OpVariable %15 Uniform
|
|
%17 = OpConstant %7 3
|
|
%18 = OpTypeArray %6 %17
|
|
%19 = OpConstant %7 2
|
|
%20 = OpTypeArray %18 %19
|
|
%21 = OpTypePointer Private %20
|
|
%22 = OpVariable %21 Private
|
|
%24 = OpTypeVoid
|
|
%25 = OpTypeFunction %24 %7
|
|
%28 = OpTypeArray %5 %8
|
|
%29 = OpTypePointer Output %28
|
|
%30 = OpVariable %29 Output
|
|
%31 = OpConstant %7 0
|
|
%33 = OpTypePointer Function %6
|
|
%36 = OpTypePointer Function %5
|
|
%38 = OpTypePointer Uniform %6
|
|
%40 = OpTypePointer Uniform %5
|
|
%46 = OpTypePointer Private %6
|
|
%48 = OpTypePointer Private %5
|
|
%52 = OpVariable %46 Private
|
|
%55 = OpVariable %46 Private
|
|
%58 = OpVariable %46 Private
|
|
%60 = OpTypeFunction %24 %46 %46 %46
|
|
%69 = OpTypePointer Output %5
|
|
%76 = OpTypeFunction %24
|
|
%78 = OpTypeArray %5 %19
|
|
%79 = OpTypePointer Output %78
|
|
%80 = OpVariable %79 Output
|
|
%89 = OpVariable %46 Private
|
|
%91 = OpTypeFunction %24 %46
|
|
%98 = OpTypePointer Private %18
|
|
%100 = OpTypePointer Input %18
|
|
%101 = OpVariable %100 Input
|
|
%103 = OpVariable %100 Input
|
|
%105 = OpTypeVector %5 3
|
|
%106 = OpTypeArray %105 %17
|
|
%107 = OpTypePointer Input %106
|
|
%108 = OpVariable %107 Input
|
|
%109 = OpTypePointer Output %106
|
|
%110 = OpVariable %109 Output
|
|
%111 = OpTypePointer Output %105
|
|
%112 = OpTypePointer Input %105
|
|
%115 = OpVariable %100 Input
|
|
%116 = OpTypePointer Output %18
|
|
%117 = OpVariable %116 Output
|
|
%118 = OpTypePointer Output %6
|
|
%119 = OpTypePointer Input %6
|
|
%23 = OpFunction %24 None %25
|
|
%26 = OpFunctionParameter %7
|
|
%27 = OpLabel
|
|
%34 = OpVariable %33 Function
|
|
%35 = OpBitcast %5 %26
|
|
%37 = OpInBoundsAccessChain %36 %34 %31
|
|
OpStore %37 %35
|
|
%39 = OpAccessChain %38 %16 %31 %31
|
|
%41 = OpInBoundsAccessChain %40 %39 %31
|
|
%42 = OpLoad %5 %41
|
|
%43 = OpInBoundsAccessChain %36 %34 %31
|
|
%44 = OpLoad %5 %43
|
|
%45 = OpBitcast %2 %44
|
|
%47 = OpAccessChain %46 %11 %45
|
|
%49 = OpInBoundsAccessChain %48 %47 %31
|
|
OpStore %49 %42
|
|
%50 = OpAccessChain %46 %11 %31
|
|
%51 = OpLoad %6 %50
|
|
OpStore %52 %51
|
|
%53 = OpAccessChain %46 %11 %12
|
|
%54 = OpLoad %6 %53
|
|
OpStore %55 %54
|
|
%56 = OpAccessChain %46 %11 %19
|
|
%57 = OpLoad %6 %56
|
|
OpStore %58 %57
|
|
%59 = OpFunctionCall %24 %32 %52 %55 %58
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%32 = OpFunction %24 None %60
|
|
%61 = OpFunctionParameter %46
|
|
%62 = OpFunctionParameter %46
|
|
%63 = OpFunctionParameter %46
|
|
%64 = OpLabel
|
|
%65 = OpLoad %6 %61
|
|
%66 = OpLoad %6 %62
|
|
%67 = OpLoad %6 %63
|
|
%68 = OpCompositeExtract %5 %65 0
|
|
%70 = OpAccessChain %69 %30 %31
|
|
OpStore %70 %68
|
|
%71 = OpCompositeExtract %5 %66 0
|
|
%72 = OpAccessChain %69 %30 %12
|
|
OpStore %72 %71
|
|
%73 = OpCompositeExtract %5 %67 0
|
|
%74 = OpAccessChain %69 %30 %19
|
|
OpStore %74 %73
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%75 = OpFunction %24 None %76
|
|
%77 = OpLabel
|
|
%82 = OpAccessChain %38 %16 %31 %31
|
|
%83 = OpInBoundsAccessChain %40 %82 %31
|
|
%84 = OpLoad %5 %83
|
|
%85 = OpAccessChain %46 %11 %17
|
|
%86 = OpInBoundsAccessChain %48 %85 %31
|
|
OpStore %86 %84
|
|
%87 = OpAccessChain %46 %11 %17
|
|
%88 = OpLoad %6 %87
|
|
OpStore %89 %88
|
|
%90 = OpFunctionCall %24 %81 %89
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%81 = OpFunction %24 None %91
|
|
%92 = OpFunctionParameter %46
|
|
%93 = OpLabel
|
|
%94 = OpLoad %6 %92
|
|
%95 = OpCompositeExtract %5 %94 0
|
|
%96 = OpAccessChain %69 %80 %31
|
|
OpStore %96 %95
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%1 = OpFunction %24 None %76
|
|
%97 = OpLabel
|
|
%99 = OpInBoundsAccessChain %98 %22 %31
|
|
OpCopyMemory %99 %101
|
|
%102 = OpInBoundsAccessChain %98 %22 %12
|
|
OpCopyMemory %102 %103
|
|
%104 = OpLoad %2 %4
|
|
%113 = OpAccessChain %111 %110 %104
|
|
%114 = OpAccessChain %112 %108 %104
|
|
OpCopyMemory %113 %114
|
|
%120 = OpAccessChain %118 %117 %104
|
|
%121 = OpAccessChain %119 %115 %104
|
|
OpCopyMemory %120 %121
|
|
%122 = OpFunctionCall %24 %23 %31
|
|
%123 = OpFunctionCall %24 %23 %12
|
|
%124 = OpFunctionCall %24 %23 %19
|
|
%125 = OpFunctionCall %24 %75
|
|
OpReturn
|
|
OpFunctionEnd
|