skia2/include/effects
Mike Klein a9741ee25a first sksl on skvm
Exactly enough implemented to run

    fm --skvm -b cpu -s runtime_shader -w foo

This shader

     0: 0077 load2 0
    10: 00a2 pushimmediate 998277249(0.0039215688593685627)
    22: 0070 dup
    31: 0094 multiplyf2
    40: 0080 loaduniform 2
    50: 00a2 pushimmediate 1065353216(1.0)
    62: 00c1 store4 2
    71: 00b4 return 0

becomes this blitter, including matrix, blending, asserts, etc:

    17 registers, 57 instructions:
    0	r0 = uniform32 arg(0) 4
    1	r0 = to_f32 r0
    2	r1 = splat 3F000000 (0.5)
    3	r0 = add_f32 r0 r1
    4	r2 = uniform32 arg(0) 2C
    5	r3 = uniform32 arg(0) 28
    6	r2 = fma_f32 r0 r3 r2
    7	r3 = uniform32 arg(0) 0
    8	r4 = uniform32 arg(0) 24
    9	r5 = splat 3F800000 (1)
    10	r6 = uniform32 arg(0) 38
    11	r6 = min_f32 r6 r5
    12	r7 = splat 0 (0)
    13	r6 = max_f32 r7 r6
    14	r8 = splat 437F0000 (255)
    15	r9 = mul_f32 r6 r8
    16	r9 = round r9
    17	r10 = splat FF (3.5733111e-43)
    18	r10 = pack r9 r10 8
    19	r9 = splat 3B808081 (0.0039215689)
    20	r11 = uniform32 arg(0) 20
    21	r12 = uniform32 arg(0) 1C
    22	r11 = fma_f32 r0 r12 r11
    23	r12 = uniform32 arg(0) 18
    24	r0 = splat 3F800001 (1.0000001)
    25	r13 = min_f32 r6 r0
    26	r14 = splat B4000000 (-1.1920929e-07)
    27	r13 = max_f32 r14 r13
    28	r13 = eq_f32 r6 r13
    29	assert_true r13 r6
    loop:
    30	    r6 = index
    31	    r6 = sub_i32 r3 r6
    32	    r6 = to_f32 r6
    33	    r6 = add_f32 r6 r1
    34	    r13 = fma_f32 r6 r4 r2
    35	    r13 = mul_f32 r9 r13
    36	    r6 = fma_f32 r6 r12 r11
    37	    r13 = min_f32 r13 r5
    38	    r13 = max_f32 r7 r13
    39	    r15 = mul_f32 r13 r8
    40	    r15 = round r15
    41	    r6 = mul_f32 r9 r6
    42	    r6 = min_f32 r6 r5
    43	    r6 = max_f32 r7 r6
    44	    r16 = mul_f32 r6 r8
    45	    r16 = round r16
    46	    r15 = pack r16 r15 8
    47	    r15 = pack r15 r10 16
    48	    store32 arg(1) r15
    49	    r15 = min_f32 r13 r0
    50	    r15 = max_f32 r14 r15
    51	    r15 = eq_f32 r13 r15
    52	    assert_true r15 r13
    53	    r13 = min_f32 r6 r0
    54	    r13 = max_f32 r14 r13
    55	    r13 = eq_f32 r6 r13
    56	    assert_true r13 r6

And that JITs using 11 ymm registers.

Change-Id: Ib45b5fa6aee427f290b77d8900f10d433ad81133
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/281746
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-04-06 17:32:28 +00:00
..
Sk1DPathEffect.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Sk2DPathEffect.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkAlphaThresholdFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkArithmeticImageFilter.h Add comment explaining memset in ArithmeticFPInputs 2020-02-05 20:03:28 +00:00
SkBlurDrawLooper.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkBlurImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkBlurMaskFilter.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkColorFilterImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkColorMatrix.h SkColorMatrix cleanup 2019-11-04 15:20:15 +00:00
SkColorMatrixFilter.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkComposeImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkCornerPathEffect.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkDashPathEffect.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkDiscretePathEffect.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkDisplacementMapEffect.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkDropShadowImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkGradientShader.h Add fiddle example for MakeLinear 2020-03-18 17:53:11 +00:00
SkHighContrastFilter.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkImageFilters.h Fix GMs broken during API porting 2019-08-05 14:53:45 +00:00
SkImageSource.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkLayerDrawLooper.h Return translate info from looper, rather than moding a canvas 2019-07-25 20:39:13 +00:00
SkLightingImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkLumaColorFilter.h rearrange to emphasize most salient params 2020-03-15 20:14:58 +00:00
SkMagnifierImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkMatrixConvolutionImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkMergeImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkMorphologyImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkOffsetImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkOpPathEffect.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkOverdrawColorFilter.h onProgram for overdraw-colorfilter 2020-03-27 17:02:26 +00:00
SkPaintImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkPerlinNoiseShader.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkPictureImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkRuntimeEffect.h first sksl on skvm 2020-04-06 17:32:28 +00:00
SkShaderMaskFilter.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTableColorFilter.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTableMaskFilter.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTileImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
SkTrimPathEffect.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkXfermodeImageFilter.h Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00