Visitar URL original
Consider using a static set of less specialized shaders that can be compiled on startup · Issue #77412 · flutter/flutter · GitHub
Skip to content

Consider using a static set of less specialized shaders that can be compiled on startup #77412

Description

@Hixie

Since we currently pay a price (jank) each time a new shader is used, and since some animations end up using a lot of new shaders, one option would be to use less specialized shaders.

If we had a static set of shaders, we could asynchronously compile them on program startup, so that by the time the application runs an animation we can use this static set and not stutter while we prepare a new one.

Medium term we could also determine what specialized shaders we would want to use in each scene, and compile them in the background so that the next time, if all the specialized shaders we would want to use are ready, we could just use them. That way we get the long-term sustained performance benefits of specialized shaders and the short-term smooth start performance benefits of a static shader set.

Activity

  1. added
    engineflutter/engine related. See also e: labels.
    c: performanceRelates to speed or footprint issues (see "perf:" labels)
    perf: speedPerformance issues related to (mostly rendering) speed
    P1High-priority issues at the top of the work list
    on Mar 5, 2021
  2. armandsLa commented on Jul 10, 2021

    @armandsLa

    Any updates?

  3. Hixie commented on Jul 10, 2021

    @Hixie
    ContributorAuthor

    Work is ongoing (@chinmaygarde made a demo of a subset of this for Metal which looks promising), but this is a long-term research project so I wouldn't expect frequent updates.

  4. added
    e: impellerImpeller rendering backend issues and features requests
    on Feb 18, 2022
  5. Hixie commented on May 2, 2022

    @Hixie
    ContributorAuthor

    For people who wish to follow along with this work, the library was recently merged into the engine tree (very much still as an experiment and nowhere near ready for production, please don't expect this to be available in stable for many many months yet): https://github.com/flutter/engine/tree/main/impeller

  6. moved this to 🤔 Needs Triage in Impelleron May 17, 2023
  7. chinmaygarde commented on May 18, 2023

    @chinmaygarde
    Contributor

    After a preview period since January 2023, Impeller is now on-by-default on iOS in a stable branch. We are now primarily focused on rounding out support for the remaining platforms with Android up next.

    Impeller uses a static shader set and all shaders are compiled and optimized on our build servers. Depending on the backend, the optimized shader representation is packaged as a blob in the engine and necessary pipeline state objects created at startup asynchronously. There is no runtime shader generation or compilation at all.

    Closing this issue as completed.

  8. moved this from 🤔 Needs Triage to ✅ Done in Impelleron May 18, 2023
  9. github-actions commented on Jun 1, 2023

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  10. locked as resolved and limited conversation to collaborators on Jun 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High-priority issues at the top of the work listc: performanceRelates to speed or footprint issues (see "perf:" labels)dependency: skiaSkia team may need to help use: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.perf: speedPerformance issues related to (mostly rendering) speed

    Type

    No type

    Projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions