6ee5d9e3c9
Yesterday's implementation was close but I realized later that it wasn't quite ideal. - Array index-folding was gated on `isCompileTimeConstant`, which is too strict. The real limitation is `hasSideEffects`. If an array contains a side-effecting expression, we should leave it alone. Otherwise it is safe to pluck out an element from the array and toss the rest. - Matrix index-folding was gated on `getConstantSubexpression` for the extracted elements, but did not check the other elements at all. This was too lenient; we now only proceed to the folding step if `hasSideEffects` returns false. I added some tests to verify the final behavior and also discovered a small related issue. Diagonal matrices were not substituting literals in for constant-values, which inhibited folding as well and would break constant-expression evaluation. This is now fixed. Change-Id: Idda32fd8643c1f32ba21475251cd4d4dd7cea94c Reviewed-on: https://skia-review.googlesource.com/c/skia/+/470396 Auto-Submit: John Stiles <johnstiles@google.com> Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: John Stiles <johnstiles@google.com> |
||
---|---|---|
.. | ||
blend | ||
errors | ||
folding | ||
glsl | ||
inliner | ||
intrinsics | ||
metal | ||
runtime | ||
runtime_errors | ||
shared | ||
spirv | ||
workarounds | ||
README.txt |
This directory contains skslc-compiled output from matching source files in the /resources/sksl/ directory.