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:
parent
a48c233e7b
commit
799b32e25d
@ -1,3 +1,5 @@
|
||||
/*#pragma settings NoInline*/
|
||||
|
||||
float arr(float v[2][3]) {
|
||||
return v[0][0] * v[1][2];
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user