b14a819122
Making a VectorCast from a compile-time constant will perform the cast at compile-time instead; previously, we did not apply this optimization. This simplified a few test outputs in subtle ways. (In particular, the SPIR-V codegen used to occasionally decorate OpConstantComposite of constant numbers with RelaxedPrecision, and no longer appears to do this. This should have no effect on results either way AFAICS.) Because we don't return VectorCast constructors containing compile-time constant values, we do not need to implement compareConstant for this constructor; they only wrap non-compile-time-constant expressions. Change-Id: I28c1f337f64d6f20fb86bc0f58e225af4bd7b26c Bug: skia:11032 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/392197 Auto-Submit: John Stiles <johnstiles@google.com> Commit-Queue: John Stiles <johnstiles@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
37 lines
1.2 KiB
JavaScript
37 lines
1.2 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"
|
|
OpDecorate %sk_FragColor RelaxedPrecision
|
|
OpDecorate %sk_FragColor Location 0
|
|
OpDecorate %sk_FragColor Index 0
|
|
OpDecorate %sk_Clockwise BuiltIn FrontFacing
|
|
OpDecorate %19 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
|
|
%int = OpTypeInt 32 1
|
|
%v2int = OpTypeVector %int 2
|
|
%int_0 = OpConstant %int 0
|
|
%17 = OpConstantComposite %v2int %int_0 %int_0
|
|
%_ptr_Output_float = OpTypePointer Output %float
|
|
%main = OpFunction %void None %11
|
|
%12 = OpLabel
|
|
%13 = OpExtInst %v2int %1 SAbs %17
|
|
%18 = OpCompositeExtract %int %13 0
|
|
%19 = OpConvertSToF %float %18
|
|
%20 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
|
|
OpStore %20 %19
|
|
OpReturn
|
|
OpFunctionEnd
|