cd80689192
Many of our shaders generate the same vector constant dozens of times, e.g. Gaussian blur uses float4(1) repeatedly. This change avoids re-emitting redundant vector constants. Change-Id: I22a71cd8b2783fb997f52d485b49031f64ca6d96 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/350701 Auto-Submit: John Stiles <johnstiles@google.com> Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
233 lines
7.8 KiB
JavaScript
233 lines
7.8 KiB
JavaScript
OpCapability Shader
|
|
%1 = OpExtInstImport "GLSL.std.450"
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Fragment %main "main" %sk_FragColor %sk_Clockwise
|
|
OpExecutionMode %main OriginUpperLeft
|
|
OpName %sk_FragColor "sk_FragColor"
|
|
OpName %sk_Clockwise "sk_Clockwise"
|
|
OpName %main "main"
|
|
OpName %v "v"
|
|
OpName %result "result"
|
|
OpDecorate %sk_FragColor RelaxedPrecision
|
|
OpDecorate %sk_FragColor Location 0
|
|
OpDecorate %sk_FragColor Index 0
|
|
OpDecorate %sk_Clockwise RelaxedPrecision
|
|
OpDecorate %sk_Clockwise BuiltIn FrontFacing
|
|
OpDecorate %21 RelaxedPrecision
|
|
OpDecorate %25 RelaxedPrecision
|
|
OpDecorate %32 RelaxedPrecision
|
|
OpDecorate %35 RelaxedPrecision
|
|
OpDecorate %38 RelaxedPrecision
|
|
OpDecorate %45 RelaxedPrecision
|
|
OpDecorate %50 RelaxedPrecision
|
|
OpDecorate %52 RelaxedPrecision
|
|
OpDecorate %55 RelaxedPrecision
|
|
OpDecorate %58 RelaxedPrecision
|
|
OpDecorate %63 RelaxedPrecision
|
|
OpDecorate %66 RelaxedPrecision
|
|
OpDecorate %69 RelaxedPrecision
|
|
OpDecorate %70 RelaxedPrecision
|
|
OpDecorate %76 RelaxedPrecision
|
|
OpDecorate %80 RelaxedPrecision
|
|
OpDecorate %83 RelaxedPrecision
|
|
OpDecorate %88 RelaxedPrecision
|
|
OpDecorate %90 RelaxedPrecision
|
|
OpDecorate %95 RelaxedPrecision
|
|
OpDecorate %97 RelaxedPrecision
|
|
OpDecorate %100 RelaxedPrecision
|
|
OpDecorate %102 RelaxedPrecision
|
|
OpDecorate %105 RelaxedPrecision
|
|
OpDecorate %108 RelaxedPrecision
|
|
OpDecorate %114 RelaxedPrecision
|
|
OpDecorate %119 RelaxedPrecision
|
|
OpDecorate %121 RelaxedPrecision
|
|
OpDecorate %124 RelaxedPrecision
|
|
OpDecorate %127 RelaxedPrecision
|
|
OpDecorate %132 RelaxedPrecision
|
|
OpDecorate %135 RelaxedPrecision
|
|
OpDecorate %139 RelaxedPrecision
|
|
OpDecorate %148 RelaxedPrecision
|
|
%float = OpTypeFloat 32
|
|
%v4float = OpTypeVector %float 4
|
|
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
|
%sk_FragColor = OpVariable %_ptr_Output_v4float Output
|
|
%bool = OpTypeBool
|
|
%_ptr_Input_bool = OpTypePointer Input %bool
|
|
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
|
|
%void = OpTypeVoid
|
|
%11 = OpTypeFunction %void
|
|
%v4bool = OpTypeVector %bool 4
|
|
%_ptr_Function_v4bool = OpTypePointer Function %v4bool
|
|
%float_1 = OpConstant %float 1
|
|
%true = OpConstantTrue %bool
|
|
%v2bool = OpTypeVector %bool 2
|
|
%false = OpConstantFalse %bool
|
|
%v3bool = OpTypeVector %bool 3
|
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
|
%145 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
|
|
%float_0 = OpConstant %float 0
|
|
%147 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
|
|
%main = OpFunction %void None %11
|
|
%12 = OpLabel
|
|
%v = OpVariable %_ptr_Function_v4bool Function
|
|
%result = OpVariable %_ptr_Function_v4bool Function
|
|
%140 = OpVariable %_ptr_Function_v4float Function
|
|
%16 = OpExtInst %float %1 Sqrt %float_1
|
|
%18 = OpFOrdEqual %bool %16 %float_1
|
|
%19 = OpCompositeConstruct %v4bool %18 %18 %18 %18
|
|
OpStore %v %19
|
|
%21 = OpLoad %v4bool %v
|
|
%22 = OpCompositeExtract %bool %21 0
|
|
%24 = OpCompositeConstruct %v4bool %22 %true %true %true
|
|
OpStore %result %24
|
|
%25 = OpLoad %v4bool %v
|
|
%26 = OpVectorShuffle %v2bool %25 %25 0 1
|
|
%28 = OpCompositeExtract %bool %26 0
|
|
%29 = OpCompositeExtract %bool %26 1
|
|
%31 = OpCompositeConstruct %v4bool %28 %29 %false %true
|
|
OpStore %result %31
|
|
%32 = OpLoad %v4bool %v
|
|
%33 = OpCompositeExtract %bool %32 0
|
|
%34 = OpCompositeConstruct %v4bool %33 %true %true %false
|
|
OpStore %result %34
|
|
%35 = OpLoad %v4bool %v
|
|
%36 = OpCompositeExtract %bool %35 1
|
|
%37 = OpCompositeConstruct %v4bool %false %36 %true %true
|
|
OpStore %result %37
|
|
%38 = OpLoad %v4bool %v
|
|
%39 = OpVectorShuffle %v3bool %38 %38 0 1 2
|
|
%41 = OpCompositeExtract %bool %39 0
|
|
%42 = OpCompositeExtract %bool %39 1
|
|
%43 = OpCompositeExtract %bool %39 2
|
|
%44 = OpCompositeConstruct %v4bool %41 %42 %43 %true
|
|
OpStore %result %44
|
|
%45 = OpLoad %v4bool %v
|
|
%46 = OpVectorShuffle %v2bool %45 %45 0 1
|
|
%47 = OpCompositeExtract %bool %46 0
|
|
%48 = OpCompositeExtract %bool %46 1
|
|
%49 = OpCompositeConstruct %v4bool %47 %48 %true %true
|
|
OpStore %result %49
|
|
%50 = OpLoad %v4bool %v
|
|
%51 = OpCompositeExtract %bool %50 0
|
|
%52 = OpLoad %v4bool %v
|
|
%53 = OpCompositeExtract %bool %52 2
|
|
%54 = OpCompositeConstruct %v4bool %51 %false %53 %true
|
|
OpStore %result %54
|
|
%55 = OpLoad %v4bool %v
|
|
%56 = OpCompositeExtract %bool %55 0
|
|
%57 = OpCompositeConstruct %v4bool %56 %true %false %false
|
|
OpStore %result %57
|
|
%58 = OpLoad %v4bool %v
|
|
%59 = OpVectorShuffle %v2bool %58 %58 1 2
|
|
%60 = OpCompositeExtract %bool %59 0
|
|
%61 = OpCompositeExtract %bool %59 1
|
|
%62 = OpCompositeConstruct %v4bool %true %60 %61 %false
|
|
OpStore %result %62
|
|
%63 = OpLoad %v4bool %v
|
|
%64 = OpCompositeExtract %bool %63 1
|
|
%65 = OpCompositeConstruct %v4bool %false %64 %true %false
|
|
OpStore %result %65
|
|
%66 = OpLoad %v4bool %v
|
|
%67 = OpCompositeExtract %bool %66 2
|
|
%68 = OpCompositeConstruct %v4bool %true %true %67 %false
|
|
OpStore %result %68
|
|
%69 = OpLoad %v4bool %v
|
|
OpStore %result %69
|
|
%70 = OpLoad %v4bool %v
|
|
%71 = OpVectorShuffle %v3bool %70 %70 0 1 2
|
|
%72 = OpCompositeExtract %bool %71 0
|
|
%73 = OpCompositeExtract %bool %71 1
|
|
%74 = OpCompositeExtract %bool %71 2
|
|
%75 = OpCompositeConstruct %v4bool %72 %73 %74 %true
|
|
OpStore %result %75
|
|
%76 = OpLoad %v4bool %v
|
|
%77 = OpVectorShuffle %v2bool %76 %76 0 1
|
|
%78 = OpCompositeExtract %bool %77 0
|
|
%79 = OpCompositeExtract %bool %77 1
|
|
%80 = OpLoad %v4bool %v
|
|
%81 = OpCompositeExtract %bool %80 3
|
|
%82 = OpCompositeConstruct %v4bool %78 %79 %false %81
|
|
OpStore %result %82
|
|
%83 = OpLoad %v4bool %v
|
|
%84 = OpVectorShuffle %v2bool %83 %83 0 1
|
|
%85 = OpCompositeExtract %bool %84 0
|
|
%86 = OpCompositeExtract %bool %84 1
|
|
%87 = OpCompositeConstruct %v4bool %85 %86 %true %false
|
|
OpStore %result %87
|
|
%88 = OpLoad %v4bool %v
|
|
%89 = OpCompositeExtract %bool %88 0
|
|
%90 = OpLoad %v4bool %v
|
|
%91 = OpVectorShuffle %v2bool %90 %90 2 3
|
|
%92 = OpCompositeExtract %bool %91 0
|
|
%93 = OpCompositeExtract %bool %91 1
|
|
%94 = OpCompositeConstruct %v4bool %89 %true %92 %93
|
|
OpStore %result %94
|
|
%95 = OpLoad %v4bool %v
|
|
%96 = OpCompositeExtract %bool %95 0
|
|
%97 = OpLoad %v4bool %v
|
|
%98 = OpCompositeExtract %bool %97 2
|
|
%99 = OpCompositeConstruct %v4bool %96 %false %98 %true
|
|
OpStore %result %99
|
|
%100 = OpLoad %v4bool %v
|
|
%101 = OpCompositeExtract %bool %100 0
|
|
%102 = OpLoad %v4bool %v
|
|
%103 = OpCompositeExtract %bool %102 3
|
|
%104 = OpCompositeConstruct %v4bool %101 %true %true %103
|
|
OpStore %result %104
|
|
%105 = OpLoad %v4bool %v
|
|
%106 = OpCompositeExtract %bool %105 0
|
|
%107 = OpCompositeConstruct %v4bool %106 %true %false %true
|
|
OpStore %result %107
|
|
%108 = OpLoad %v4bool %v
|
|
%109 = OpVectorShuffle %v3bool %108 %108 1 2 3
|
|
%110 = OpCompositeExtract %bool %109 0
|
|
%111 = OpCompositeExtract %bool %109 1
|
|
%112 = OpCompositeExtract %bool %109 2
|
|
%113 = OpCompositeConstruct %v4bool %true %110 %111 %112
|
|
OpStore %result %113
|
|
%114 = OpLoad %v4bool %v
|
|
%115 = OpVectorShuffle %v2bool %114 %114 1 2
|
|
%116 = OpCompositeExtract %bool %115 0
|
|
%117 = OpCompositeExtract %bool %115 1
|
|
%118 = OpCompositeConstruct %v4bool %false %116 %117 %true
|
|
OpStore %result %118
|
|
%119 = OpLoad %v4bool %v
|
|
%120 = OpCompositeExtract %bool %119 1
|
|
%121 = OpLoad %v4bool %v
|
|
%122 = OpCompositeExtract %bool %121 3
|
|
%123 = OpCompositeConstruct %v4bool %false %120 %true %122
|
|
OpStore %result %123
|
|
%124 = OpLoad %v4bool %v
|
|
%125 = OpCompositeExtract %bool %124 1
|
|
%126 = OpCompositeConstruct %v4bool %true %125 %true %true
|
|
OpStore %result %126
|
|
%127 = OpLoad %v4bool %v
|
|
%128 = OpVectorShuffle %v2bool %127 %127 2 3
|
|
%129 = OpCompositeExtract %bool %128 0
|
|
%130 = OpCompositeExtract %bool %128 1
|
|
%131 = OpCompositeConstruct %v4bool %false %false %129 %130
|
|
OpStore %result %131
|
|
%132 = OpLoad %v4bool %v
|
|
%133 = OpCompositeExtract %bool %132 2
|
|
%134 = OpCompositeConstruct %v4bool %false %false %133 %true
|
|
OpStore %result %134
|
|
%135 = OpLoad %v4bool %v
|
|
%136 = OpCompositeExtract %bool %135 3
|
|
%137 = OpCompositeConstruct %v4bool %false %true %true %136
|
|
OpStore %result %137
|
|
%139 = OpLoad %v4bool %result
|
|
%138 = OpAny %bool %139
|
|
OpSelectionMerge %144 None
|
|
OpBranchConditional %138 %142 %143
|
|
%142 = OpLabel
|
|
OpStore %140 %145
|
|
OpBranch %144
|
|
%143 = OpLabel
|
|
OpStore %140 %147
|
|
OpBranch %144
|
|
%144 = OpLabel
|
|
%148 = OpLoad %v4float %140
|
|
OpStore %sk_FragColor %148
|
|
OpReturn
|
|
OpFunctionEnd
|