43ac7e6315
Our SPIR-V code generator did not implement support for negating a uint. However, this is something that GLSL allows (as does the rest of SkSL). I checked glslang and it uses OpSNegate here. The SPIR-V docs indicate that OpSNegate allows any type of integer, and the validator lets it pass, so we now use OpSNegate here as well. http://screen/33mkq92uxAT5Xu8 http://screen/4YBTh3gCWz8eZx7 http://screen/388HtXyytcN5vLZ Change-Id: I8c142018fd5e162dcd051abe1bc5d69a6e034794 Bug: oss-fuzz:37627 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/441880 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com> Commit-Queue: John Stiles <johnstiles@google.com> Auto-Submit: John Stiles <johnstiles@google.com>
27 lines
758 B
JavaScript
27 lines
758 B
JavaScript
OpCapability Shader
|
|
%1 = OpExtInstImport "GLSL.std.450"
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Fragment %main "main" %sk_Clockwise
|
|
OpExecutionMode %main OriginUpperLeft
|
|
OpName %sk_Clockwise "sk_Clockwise"
|
|
OpName %main "main"
|
|
OpName %x "x"
|
|
OpDecorate %sk_Clockwise BuiltIn FrontFacing
|
|
%bool = OpTypeBool
|
|
%_ptr_Input_bool = OpTypePointer Input %bool
|
|
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
|
|
%void = OpTypeVoid
|
|
%7 = OpTypeFunction %void
|
|
%uint = OpTypeInt 32 0
|
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
|
%uint_1 = OpConstant %uint 1
|
|
%main = OpFunction %void None %7
|
|
%8 = OpLabel
|
|
%x = OpVariable %_ptr_Function_uint Function
|
|
%14 = OpLoad %uint %x
|
|
%15 = OpIAdd %uint %14 %uint_1
|
|
OpStore %x %15
|
|
%12 = OpSNegate %uint %15
|
|
OpReturn
|
|
OpFunctionEnd
|