Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

[Impeller] Fix framebuffer blend shader validation errors on Linux GLES #50240

Conversation

whiskeyPeak
Copy link

The impeller backend on linux was throwing errors due to not having had the neccessery shaders linked up. This PR fixes that.

Error: [ERROR:flutter/impeller/base/validation.cc(49)] Break on 'ImpellerValidationBreak' to inspect point of failure: Could not resolve pipeline entrypoint(s) 'framebuffer_blend_vertex_main' and 'framebuffer_blend_fragment_main' for pipeline named 'FramebufferBlend'.

@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact "@test-exemption-reviewer" in the #hackers channel in Chat (don't just cc them here, they won't see it! Use Discord!).

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@jonahwilliams
Copy link
Member

@whiskeyPeak WDUT about trying to write a test for this? I think in theory if you had an emedder unit test that enabled impeller, you could assert that it initialized correctly with this change?

@whiskeyPeak
Copy link
Author

@jonahwilliams I'm having trouble figuring out how to go about this. I looked at tests in embedder_gl_unittests.cc and there doesn't seem to be a way to check whether a rendering context has been initialised correctly.

I also can't enable impeller for single tests because the logic that decides what rendering context is used (impeller or skia) is in the FlutterEngineRun() function, so I would need to pass down my own Settings object which would break the embedder api. Though most tests fail when I enable impeller globally, even with this PR

@jonahwilliams
Copy link
Member

Rather than adjusting things via settings and constructing the entire embedder, could you create a new unit test that just tries to create a EmbedderSurfaceGLImpeller?

@chinmaygarde
Copy link
Member

Any update on a test for this?

@whiskeyPeak
Copy link
Author

Looks like this fix was incorporated in #50416. I'll close this here.

@whiskeyPeak whiskeyPeak closed this Feb 8, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants