skia2/tests/sksl/runtime/PrecisionQualifiers.skvm
John Stiles 2fb8dac598 Add trace coordinates to SkVMDebugInfo.
The SkVMDebugInfo now includes an skvm::Coord that the caller is
responsible for filling in before converting the program. If it is set,
the value indicates the device coordinates that should be traced. If it
is unset, debug traces will not be emitted at all.

Within the SkVMCodeGenerator, we now have a new traceMask() call which
combines the current execution mask with the trace mask. Tracing opcodes
now pass the result of traceMask() instead of mask(). This will limit
trace data to the selected pixel, instead of tracing the entire draw.

Bug: skia:12614
Change-Id: I1f8ce7d18a31aa60a139a4a7335c2a285d6aee60
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472798
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-11-17 21:56:42 +00:00

324 lines
11 KiB
Plaintext

$0 = colorGreen (float4 : slot 1/4, L3)
$1 = colorGreen (float4 : slot 2/4, L3)
$2 = colorGreen (float4 : slot 3/4, L3)
$3 = colorGreen (float4 : slot 4/4, L3)
$4 = colorRed (float4 : slot 1/4, L3)
$5 = colorRed (float4 : slot 2/4, L3)
$6 = colorRed (float4 : slot 3/4, L3)
$7 = colorRed (float4 : slot 4/4, L3)
$8 = coords (float2 : slot 1/2, L57)
$9 = coords (float2 : slot 2/2, L57)
$10 = zero (float4 : slot 1/4, L58)
$11 = zero (float4 : slot 2/4, L58)
$12 = zero (float4 : slot 3/4, L58)
$13 = zero (float4 : slot 4/4, L58)
$14 = one (float4 : slot 1/4, L59)
$15 = one (float4 : slot 2/4, L59)
$16 = one (float4 : slot 3/4, L59)
$17 = one (float4 : slot 4/4, L59)
$18 = green (float4 : slot 1/4, L60)
$19 = green (float4 : slot 2/4, L60)
$20 = green (float4 : slot 3/4, L60)
$21 = green (float4 : slot 4/4, L60)
$22 = red (float4 : slot 1/4, L63)
$23 = red (float4 : slot 2/4, L63)
$24 = red (float4 : slot 3/4, L63)
$25 = red (float4 : slot 4/4, L63)
$26 = mp (float, L6)
$27 = hp (float, L7)
$28 = ihp (int, L8)
$29 = imp (int, L9)
$30 = mp2 (float2 : slot 1/2, L15)
$31 = mp2 (float2 : slot 2/2, L15)
$32 = hp2 (float2 : slot 1/2, L16)
$33 = hp2 (float2 : slot 2/2, L16)
$34 = mp3 (float3 : slot 1/3, L17)
$35 = mp3 (float3 : slot 2/3, L17)
$36 = mp3 (float3 : slot 3/3, L17)
$37 = hp3 (float3 : slot 1/3, L18)
$38 = hp3 (float3 : slot 2/3, L18)
$39 = hp3 (float3 : slot 3/3, L18)
$40 = mp4 (float4 : slot 1/4, L19)
$41 = mp4 (float4 : slot 2/4, L19)
$42 = mp4 (float4 : slot 3/4, L19)
$43 = mp4 (float4 : slot 4/4, L19)
$44 = hp4 (float4 : slot 1/4, L20)
$45 = hp4 (float4 : slot 2/4, L20)
$46 = hp4 (float4 : slot 3/4, L20)
$47 = hp4 (float4 : slot 4/4, L20)
$48 = ihp2 (int2 : slot 1/2, L22)
$49 = ihp2 (int2 : slot 2/2, L22)
$50 = imp2 (int2 : slot 1/2, L23)
$51 = imp2 (int2 : slot 2/2, L23)
$52 = ihp3 (int3 : slot 1/3, L24)
$53 = ihp3 (int3 : slot 2/3, L24)
$54 = ihp3 (int3 : slot 3/3, L24)
$55 = imp3 (int3 : slot 1/3, L25)
$56 = imp3 (int3 : slot 2/3, L25)
$57 = imp3 (int3 : slot 3/3, L25)
$58 = ihp4 (int4 : slot 1/4, L26)
$59 = ihp4 (int4 : slot 2/4, L26)
$60 = ihp4 (int4 : slot 3/4, L26)
$61 = ihp4 (int4 : slot 4/4, L26)
$62 = imp4 (int4 : slot 1/4, L27)
$63 = imp4 (int4 : slot 2/4, L27)
$64 = imp4 (int4 : slot 3/4, L27)
$65 = imp4 (int4 : slot 4/4, L27)
$66 = mp2 (float2x2 : slot 1/4, L34)
$67 = mp2 (float2x2 : slot 2/4, L34)
$68 = mp2 (float2x2 : slot 3/4, L34)
$69 = mp2 (float2x2 : slot 4/4, L34)
$70 = hp2 (float2x2 : slot 1/4, L35)
$71 = hp2 (float2x2 : slot 2/4, L35)
$72 = hp2 (float2x2 : slot 3/4, L35)
$73 = hp2 (float2x2 : slot 4/4, L35)
$74 = mp3 (float3x3 : slot 1/9, L36)
$75 = mp3 (float3x3 : slot 2/9, L36)
$76 = mp3 (float3x3 : slot 3/9, L36)
$77 = mp3 (float3x3 : slot 4/9, L36)
$78 = mp3 (float3x3 : slot 5/9, L36)
$79 = mp3 (float3x3 : slot 6/9, L36)
$80 = mp3 (float3x3 : slot 7/9, L36)
$81 = mp3 (float3x3 : slot 8/9, L36)
$82 = mp3 (float3x3 : slot 9/9, L36)
$83 = hp3 (float3x3 : slot 1/9, L37)
$84 = hp3 (float3x3 : slot 2/9, L37)
$85 = hp3 (float3x3 : slot 3/9, L37)
$86 = hp3 (float3x3 : slot 4/9, L37)
$87 = hp3 (float3x3 : slot 5/9, L37)
$88 = hp3 (float3x3 : slot 6/9, L37)
$89 = hp3 (float3x3 : slot 7/9, L37)
$90 = hp3 (float3x3 : slot 8/9, L37)
$91 = hp3 (float3x3 : slot 9/9, L37)
$92 = mp4 (float4x4 : slot 1/16, L38)
$93 = mp4 (float4x4 : slot 2/16, L38)
$94 = mp4 (float4x4 : slot 3/16, L38)
$95 = mp4 (float4x4 : slot 4/16, L38)
$96 = mp4 (float4x4 : slot 5/16, L38)
$97 = mp4 (float4x4 : slot 6/16, L38)
$98 = mp4 (float4x4 : slot 7/16, L38)
$99 = mp4 (float4x4 : slot 8/16, L38)
$100 = mp4 (float4x4 : slot 9/16, L38)
$101 = mp4 (float4x4 : slot 10/16, L38)
$102 = mp4 (float4x4 : slot 11/16, L38)
$103 = mp4 (float4x4 : slot 12/16, L38)
$104 = mp4 (float4x4 : slot 13/16, L38)
$105 = mp4 (float4x4 : slot 14/16, L38)
$106 = mp4 (float4x4 : slot 15/16, L38)
$107 = mp4 (float4x4 : slot 16/16, L38)
$108 = hp4 (float4x4 : slot 1/16, L39)
$109 = hp4 (float4x4 : slot 2/16, L39)
$110 = hp4 (float4x4 : slot 3/16, L39)
$111 = hp4 (float4x4 : slot 4/16, L39)
$112 = hp4 (float4x4 : slot 5/16, L39)
$113 = hp4 (float4x4 : slot 6/16, L39)
$114 = hp4 (float4x4 : slot 7/16, L39)
$115 = hp4 (float4x4 : slot 8/16, L39)
$116 = hp4 (float4x4 : slot 9/16, L39)
$117 = hp4 (float4x4 : slot 10/16, L39)
$118 = hp4 (float4x4 : slot 11/16, L39)
$119 = hp4 (float4x4 : slot 12/16, L39)
$120 = hp4 (float4x4 : slot 13/16, L39)
$121 = hp4 (float4x4 : slot 14/16, L39)
$122 = hp4 (float4x4 : slot 15/16, L39)
$123 = hp4 (float4x4 : slot 16/16, L39)
$124 = mf[0] (float, L45)
$125 = hf[0] (float, L46)
$126 = mv[0] (float2 : slot 1/2, L47)
$127 = mv[0] (float2 : slot 2/2, L47)
$128 = mv[1] (float2 : slot 1/2, L47)
$129 = mv[1] (float2 : slot 2/2, L47)
$130 = hv[0] (float2 : slot 1/2, L48)
$131 = hv[0] (float2 : slot 2/2, L48)
$132 = hv[1] (float2 : slot 1/2, L48)
$133 = hv[1] (float2 : slot 2/2, L48)
$134 = value (float, L53)
$135 = value (float, L54)
$136 = value (float, L55)
F0 = float4 main(float2 coords)
F1 = bool test_scalar()
F2 = bool test_vector()
F3 = bool test_matrix()
F4 = bool test_array()
F5 = bool highp_param(float value)
F6 = bool mediump_param(half value)
F7 = bool lowp_param(half value)
21 registers, 175 instructions:
0 r0 = splat 3F000000 (0.5)
1 r1 = splat 42C90000 (100.5)
2 r2 = uniform32 ptr0 0
3 r3 = uniform32 ptr0 4
4 r4 = uniform32 ptr0 8
5 r5 = uniform32 ptr0 C
6 r6 = uniform32 ptr0 10
7 r7 = uniform32 ptr0 14
8 r8 = uniform32 ptr0 18
9 r9 = uniform32 ptr0 1C
10 r10 = uniform32 ptr0 20
11 r11 = eq_f32 r2 r1
12 r12 = splat 3F800000 (1)
13 r13 = splat 2 (2.8025969e-45)
14 r14 = splat 40000000 (2)
15 r15 = splat 40400000 (3)
16 r16 = splat 40800000 (4)
17 r17 = splat 3 (4.2038954e-45)
18 r18 = splat 4 (5.6051939e-45)
loop:
19 r19 = index
20 r20 = eq_f32 r19 r1
21 r20 = bit_and r20 r11
22 trace_var r20 $0 = r3 (F32)
23 trace_var r20 $1 = r4 (F32)
24 trace_var r20 $2 = r5 (F32)
25 trace_var r20 $3 = r6 (F32)
26 trace_var r20 $4 = r7 (F32)
27 trace_var r20 $5 = r8 (F32)
28 trace_var r20 $6 = r9 (F32)
29 trace_var r20 $7 = r10 (F32)
30 trace_call r20 F0 (enter)
31 trace_var r20 $8 = r19 (F32)
32 trace_var r20 $9 = r2 (F32)
33 trace_line r20 L58
34 trace_line r20 L59
35 trace_var r20 $14 = r12 (F32)
36 trace_var r20 $15 = r12 (F32)
37 trace_var r20 $16 = r12 (F32)
38 trace_var r20 $17 = r12 (F32)
39 trace_line r20 L60
40 trace_var r20 $18 = r3 (F32)
41 trace_var r20 $19 = r4 (F32)
42 trace_var r20 $20 = r5 (F32)
43 trace_var r20 $21 = r6 (F32)
44 trace_line r20 L61
45 trace_line r20 L63
46 trace_var r20 $22 = r7 (F32)
47 trace_var r20 $23 = r8 (F32)
48 trace_var r20 $24 = r9 (F32)
49 trace_var r20 $25 = r10 (F32)
50 trace_line r20 L64
51 trace_line r20 L66
52 trace_call r20 F1 (enter)
53 trace_line r20 L6
54 trace_var r20 $26 = r0 (F32)
55 trace_line r20 L7
56 trace_var r20 $27 = r0 (F32)
57 trace_line r20 L8
58 trace_var r20 $28 = r13 (I32)
59 trace_line r20 L9
60 trace_var r20 $29 = r13 (I32)
61 trace_line r20 L11
62 trace_call r20 F1 (exit)
63 trace_call r20 F2 (enter)
64 trace_line r20 L15
65 trace_var r20 $30 = r14 (F32)
66 trace_var r20 $31 = r14 (F32)
67 trace_line r20 L16
68 trace_var r20 $32 = r14 (F32)
69 trace_var r20 $33 = r14 (F32)
70 trace_line r20 L17
71 trace_var r20 $34 = r15 (F32)
72 trace_var r20 $35 = r15 (F32)
73 trace_var r20 $36 = r15 (F32)
74 trace_line r20 L18
75 trace_var r20 $37 = r15 (F32)
76 trace_var r20 $38 = r15 (F32)
77 trace_var r20 $39 = r15 (F32)
78 trace_line r20 L19
79 trace_var r20 $40 = r16 (F32)
80 trace_var r20 $41 = r16 (F32)
81 trace_var r20 $42 = r16 (F32)
82 trace_var r20 $43 = r16 (F32)
83 trace_line r20 L20
84 trace_var r20 $44 = r16 (F32)
85 trace_var r20 $45 = r16 (F32)
86 trace_var r20 $46 = r16 (F32)
87 trace_var r20 $47 = r16 (F32)
88 trace_line r20 L22
89 trace_var r20 $48 = r13 (I32)
90 trace_var r20 $49 = r13 (I32)
91 trace_line r20 L23
92 trace_var r20 $50 = r13 (I32)
93 trace_var r20 $51 = r13 (I32)
94 trace_line r20 L24
95 trace_var r20 $52 = r17 (I32)
96 trace_var r20 $53 = r17 (I32)
97 trace_var r20 $54 = r17 (I32)
98 trace_line r20 L25
99 trace_var r20 $55 = r17 (I32)
100 trace_var r20 $56 = r17 (I32)
101 trace_var r20 $57 = r17 (I32)
102 trace_line r20 L26
103 trace_var r20 $58 = r18 (I32)
104 trace_var r20 $59 = r18 (I32)
105 trace_var r20 $60 = r18 (I32)
106 trace_var r20 $61 = r18 (I32)
107 trace_line r20 L27
108 trace_var r20 $62 = r18 (I32)
109 trace_var r20 $63 = r18 (I32)
110 trace_var r20 $64 = r18 (I32)
111 trace_var r20 $65 = r18 (I32)
112 trace_line r20 L29
113 trace_call r20 F2 (exit)
114 trace_call r20 F3 (enter)
115 trace_line r20 L34
116 trace_var r20 $66 = r14 (F32)
117 trace_var r20 $69 = r14 (F32)
118 trace_line r20 L35
119 trace_var r20 $70 = r14 (F32)
120 trace_var r20 $73 = r14 (F32)
121 trace_line r20 L36
122 trace_var r20 $74 = r15 (F32)
123 trace_var r20 $78 = r15 (F32)
124 trace_var r20 $82 = r15 (F32)
125 trace_line r20 L37
126 trace_var r20 $83 = r15 (F32)
127 trace_var r20 $87 = r15 (F32)
128 trace_var r20 $91 = r15 (F32)
129 trace_line r20 L38
130 trace_var r20 $92 = r16 (F32)
131 trace_var r20 $97 = r16 (F32)
132 trace_var r20 $102 = r16 (F32)
133 trace_var r20 $107 = r16 (F32)
134 trace_line r20 L39
135 trace_var r20 $108 = r16 (F32)
136 trace_var r20 $113 = r16 (F32)
137 trace_var r20 $118 = r16 (F32)
138 trace_var r20 $123 = r16 (F32)
139 trace_line r20 L41
140 trace_call r20 F3 (exit)
141 trace_call r20 F4 (enter)
142 trace_line r20 L45
143 trace_var r20 $124 = r12 (F32)
144 trace_line r20 L46
145 trace_var r20 $125 = r12 (F32)
146 trace_line r20 L47
147 trace_var r20 $127 = r12 (F32)
148 trace_line r20 L47
149 trace_var r20 $128 = r14 (F32)
150 trace_var r20 $129 = r15 (F32)
151 trace_line r20 L48
152 trace_var r20 $131 = r12 (F32)
153 trace_line r20 L48
154 trace_var r20 $132 = r14 (F32)
155 trace_var r20 $133 = r15 (F32)
156 trace_line r20 L50
157 trace_call r20 F4 (exit)
158 trace_call r20 F5 (enter)
159 trace_var r20 $134 = r12 (F32)
160 trace_line r20 L53
161 trace_call r20 F5 (exit)
162 trace_call r20 F6 (enter)
163 trace_var r20 $135 = r14 (F32)
164 trace_line r20 L54
165 trace_call r20 F6 (exit)
166 trace_call r20 F7 (enter)
167 trace_var r20 $136 = r15 (F32)
168 trace_line r20 L55
169 trace_call r20 F7 (exit)
170 trace_call r20 F0 (exit)
171 store32 ptr1 r3
172 store32 ptr2 r4
173 store32 ptr3 r5
174 store32 ptr4 r6