Disable inliner on Functions.sksl.

This reintroduces the flipped-array-dimensions bug in skia:10924. It
will be fixed in followup CLs.

Change-Id: I24ec687209b397f5fd0cf44194d0e21fe30dc32c
Bug: skia:10924
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/339797
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This commit is contained in:
John Stiles 2020-12-02 11:53:51 -05:00 committed by Skia Commit-Bot
parent a48c233e7b
commit 799b32e25d
4 changed files with 116 additions and 97 deletions

View File

@ -1,3 +1,5 @@
/*#pragma settings NoInline*/
float arr(float v[2][3]) {
return v[0][0] * v[1][2];
}

View File

@ -5,13 +5,14 @@ OpEntryPoint Fragment %main "main" %sk_FragColor %sk_Clockwise
OpExecutionMode %main OriginUpperLeft
OpName %sk_FragColor "sk_FragColor"
OpName %sk_Clockwise "sk_Clockwise"
OpName %arr "arr"
OpName %foo "foo"
OpName %bar "bar"
OpName %y "y"
OpName %z "z"
OpName %a "a"
OpName %main "main"
OpName %x "x"
OpName %_2_y "_2_y"
OpName %_3_z "_3_z"
OpName %_4_0_foo "_4_0_foo"
OpName %_5_a "_5_a"
OpName %_6_1_arr "_6_1_arr"
OpDecorate %sk_FragColor RelaxedPrecision
OpDecorate %sk_FragColor Location 0
OpDecorate %sk_FragColor Index 0
@ -26,59 +27,83 @@ OpDecorate %_arr__arr_float_int_2_int_3 ArrayStride 32
%bool = OpTypeBool
%_ptr_Input_bool = OpTypePointer Input %bool
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
%void = OpTypeVoid
%11 = OpTypeFunction %void
%_ptr_Function_float = OpTypePointer Function %float
%float_10 = OpConstant %float 10
%int = OpTypeInt 32 1
%int_2 = OpConstant %int 2
%_arr_float_int_2 = OpTypeArray %float %int_2
%_ptr_Function__arr_float_int_2 = OpTypePointer Function %_arr_float_int_2
%int_0 = OpConstant %int 0
%float_20 = OpConstant %float 20
%int_1 = OpConstant %int 1
%int_3 = OpConstant %int 3
%_arr__arr_float_int_2_int_3 = OpTypeArray %_arr_float_int_2 %int_3
%_ptr_Function__arr__arr_float_int_2_int_3 = OpTypePointer Function %_arr__arr_float_int_2_int_3
%18 = OpTypeFunction %float %_ptr_Function__arr__arr_float_int_2_int_3
%int_0 = OpConstant %int 0
%_ptr_Function_float = OpTypePointer Function %float
%int_1 = OpConstant %int 1
%_ptr_Function__arr_float_int_2 = OpTypePointer Function %_arr_float_int_2
%30 = OpTypeFunction %float %_ptr_Function__arr_float_int_2
%void = OpTypeVoid
%40 = OpTypeFunction %void %_ptr_Function_float
%float_2 = OpConstant %float 2
%float_123 = OpConstant %float 123
%float_456 = OpConstant %float 456
%main = OpFunction %void None %11
%12 = OpLabel
%x = OpVariable %_ptr_Function_float Function
%_2_y = OpVariable %_ptr_Function__arr_float_int_2 Function
%_3_z = OpVariable %_ptr_Function_float Function
%_4_0_foo = OpVariable %_ptr_Function_float Function
%_5_a = OpVariable %_ptr_Function__arr__arr_float_int_2_int_3 Function
%_6_1_arr = OpVariable %_ptr_Function_float Function
OpStore %x %float_10
%23 = OpAccessChain %_ptr_Function_float %_2_y %int_0
OpStore %23 %float_10
%26 = OpAccessChain %_ptr_Function_float %_2_y %int_1
OpStore %26 %float_20
%28 = OpAccessChain %_ptr_Function_float %_2_y %int_0
%29 = OpLoad %float %28
%30 = OpAccessChain %_ptr_Function_float %_2_y %int_1
%31 = OpLoad %float %30
%32 = OpFMul %float %29 %31
OpStore %_4_0_foo %32
%33 = OpLoad %float %_4_0_foo
OpStore %_3_z %33
%39 = OpAccessChain %_ptr_Function_float %_5_a %int_0 %int_0
OpStore %39 %float_123
%41 = OpAccessChain %_ptr_Function_float %_5_a %int_1 %int_2
OpStore %41 %float_456
%43 = OpAccessChain %_ptr_Function_float %_5_a %int_0 %int_0
%44 = OpLoad %float %43
%45 = OpAccessChain %_ptr_Function_float %_5_a %int_1 %int_2
%46 = OpLoad %float %45
%47 = OpFMul %float %44 %46
OpStore %_6_1_arr %47
%48 = OpLoad %float %_3_z
%49 = OpLoad %float %_6_1_arr
%50 = OpFAdd %float %48 %49
OpStore %x %50
%51 = OpLoad %float %x
%52 = OpCompositeConstruct %v4float %51 %51 %51 %51
OpStore %sk_FragColor %52
%64 = OpTypeFunction %void
%float_10 = OpConstant %float 10
%arr = OpFunction %float None %18
%20 = OpFunctionParameter %_ptr_Function__arr__arr_float_int_2_int_3
%21 = OpLabel
%23 = OpAccessChain %_ptr_Function_float %20 %int_0 %int_0
%25 = OpLoad %float %23
%27 = OpAccessChain %_ptr_Function_float %20 %int_1 %int_2
%28 = OpLoad %float %27
%29 = OpFMul %float %25 %28
OpReturnValue %29
OpFunctionEnd
%foo = OpFunction %float None %30
%32 = OpFunctionParameter %_ptr_Function__arr_float_int_2
%33 = OpLabel
%34 = OpAccessChain %_ptr_Function_float %32 %int_0
%35 = OpLoad %float %34
%36 = OpAccessChain %_ptr_Function_float %32 %int_1
%37 = OpLoad %float %36
%38 = OpFMul %float %35 %37
OpReturnValue %38
OpFunctionEnd
%bar = OpFunction %void None %40
%41 = OpFunctionParameter %_ptr_Function_float
%42 = OpLabel
%y = OpVariable %_ptr_Function__arr_float_int_2 Function
%z = OpVariable %_ptr_Function_float Function
%52 = OpVariable %_ptr_Function__arr_float_int_2 Function
%a = OpVariable %_ptr_Function__arr__arr_float_int_2_int_3 Function
%61 = OpVariable %_ptr_Function__arr__arr_float_int_2_int_3 Function
%45 = OpLoad %float %41
%46 = OpAccessChain %_ptr_Function_float %y %int_0
OpStore %46 %45
%47 = OpLoad %float %41
%49 = OpFMul %float %47 %float_2
%50 = OpAccessChain %_ptr_Function_float %y %int_1
OpStore %50 %49
%51 = OpLoad %_arr_float_int_2 %y
OpStore %52 %51
%53 = OpFunctionCall %float %foo %52
OpStore %z %53
%56 = OpAccessChain %_ptr_Function_float %a %int_0 %int_0
OpStore %56 %float_123
%58 = OpAccessChain %_ptr_Function_float %a %int_1 %int_2
OpStore %58 %float_456
%59 = OpLoad %float %z
%60 = OpLoad %_arr__arr_float_int_2_int_3 %a
OpStore %61 %60
%62 = OpFunctionCall %float %arr %61
%63 = OpFAdd %float %59 %62
OpStore %41 %63
OpReturn
OpFunctionEnd
%main = OpFunction %void None %64
%65 = OpLabel
%x = OpVariable %_ptr_Function_float Function
OpStore %x %float_10
%68 = OpFunctionCall %void %bar %x
%69 = OpLoad %float %x
%70 = OpCompositeConstruct %v4float %69 %69 %69 %69
OpStore %sk_FragColor %70
OpReturn
OpFunctionEnd

View File

@ -1,29 +1,25 @@
out vec4 sk_FragColor;
float arr(float v[3][2]) {
return v[0][0] * v[1][2];
}
float foo(float v[2]) {
return v[0] * v[1];
}
void bar(inout float x) {
float y[2];
float z;
y[0] = x;
y[1] = x * 2.0;
z = foo(y);
float a[2][3];
a[0][0] = 123.0;
a[1][2] = 456.0;
x = z + arr(a);
}
void main() {
float x = 10.0;
{
float _2_y[2];
float _3_z;
_2_y[0] = 10.0;
_2_y[1] = 20.0;
float _4_0_foo;
{
_4_0_foo = _2_y[0] * _2_y[1];
}
_3_z = _4_0_foo;
float _5_a[2][3];
_5_a[0][0] = 123.0;
_5_a[1][2] = 456.0;
float _6_1_arr;
{
_6_1_arr = _5_a[0][0] * _5_a[1][2];
}
x = _3_z + _6_1_arr;
}
bar(x);
sk_FragColor = vec4(x);
}

View File

@ -6,33 +6,29 @@ struct Inputs {
struct Outputs {
float4 sk_FragColor [[color(0)]];
};
float arr(float v[3][2]) {
return v[0][0] * v[1][2];
}
float foo(float v[2]) {
return v[0] * v[1];
}
void bar(thread float* x) {
float y[2];
float z;
y[0] = x;
y[1] = x * 2.0;
z = foo(y);
float a[2][3];
a[0][0] = 123.0;
a[1][2] = 456.0;
*x = z + arr(a);
}
fragment Outputs fragmentMain(Inputs _in [[stage_in]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
Outputs _outputStruct;
thread Outputs* _out = &_outputStruct;
float x = 10.0;
{
float _2_y[2];
float _3_z;
_2_y[0] = 10.0;
_2_y[1] = 20.0;
float _4_0_foo;
{
_4_0_foo = _2_y[0] * _2_y[1];
}
_3_z = _4_0_foo;
float _5_a[2][3];
_5_a[0][0] = 123.0;
_5_a[1][2] = 456.0;
float _6_1_arr;
{
_6_1_arr = _5_a[0][0] * _5_a[1][2];
}
x = _3_z + _6_1_arr;
}
bar(&x);
_out->sk_FragColor = float4(x);
return *_out;
}