cb40008b43
SkVM implements switches as a pseudo-loop; breaks are handled with the condition mask just like a for loop. Fallthrough is handled via a scratch Value in a temporary slot. `writeStore` neeeded to be refactored to support writing into slot(s) without an associated Variable. At IR generation time, SwitchStatements are now emitted without error even in strict-ES2 mode. The GLSL code generator currently reports these as an error in strict-ES2 mode, but this will be fixed in a followup coming shortly (the switch will be rewritten as ifs inside a one-shot loop, similar to our IR-rewrite strategy). Change-Id: I5507257246c42a35d2f46b4b9a89492a5ffeff9b Bug: skia:12450 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/451421 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com> Auto-Submit: John Stiles <johnstiles@google.com> |
||
---|---|---|
.. | ||
DerivativesES2.rts | ||
ES3Types.rts | ||
FirstClassArrays.rts | ||
IllegalArrayOps.rts | ||
IllegalIndexing.rts | ||
IllegalOperators.rts | ||
IllegalPrecisionQualifiers.rts | ||
IllegalRecursionComplex.rts | ||
IllegalRecursionMutual.rts | ||
IllegalRecursionSimple.rts | ||
IllegalShaderSampling.rts | ||
IllegalShaderUse.rts | ||
IllegalStatements.rts | ||
InvalidBlendMain.rtb | ||
InvalidColorFilterFeatures.rtcf | ||
InvalidColorFilterMain.rtcf | ||
InvalidShaderMain.rts | ||
LoopConditionErrors.rts | ||
LoopExpressionErrors.rts | ||
LoopInitializerErrors.rts | ||
LoopStructureErrors.rts | ||
Ossfuzz36655.rts | ||
Ossfuzz38131.rts | ||
ProgramTooLarge_BlocklessLoops.rts | ||
ProgramTooLarge_Extreme.rts | ||
ProgramTooLarge_FlatLoop.rts | ||
ProgramTooLarge_Functions.rts | ||
ProgramTooLarge_NestedLoops.rts | ||
ProgramTooLarge_SplitLoops.rts | ||
ProgramTooLarge_StackDepth.rts | ||
UnsupportedTypeFragmentProcessor.rts | ||
UnsupportedTypeSampler.rts | ||
UnsupportedTypeTexture.rts |