Skip to content

[Impeller] OpenGLES memory corruption in device buffers (and views) #158275

@flar

Description

@flar

While testing my PR to add new gradient shaders for older hardware platforms I ran into 2 cases of memory corruption in OpenGLES while testing using a host_debug_unopt_arm64 build:

  • a crash while viewing the results of Play/AiksTest.CanRenderLinearGradientManyColorsUnevenStops/OpenGLES in the playground
  • a crash in the Play/TypographerTest.GlyphAtlasWithLotsOfdUniqueGlyphSize/OpenGLES test when doing a full run of impeller_unittests

To reproduce, pull over my branch for the PR (flar:impeller-uniforms-for-general-gradients) and using the state of it in commit 3cb7871 (currently at the top of that PR's commits). (turns out these also crash on the current ToT)

Then build using et build -c host_debug_unopt_arm64.

Then run the indicated test above in the playground and do a full out/host_debug_unopt_arm64/impeller_unittests run.

The playground test works fine on Metal and Vulkan, only the OpenGLES version crashes.

Also, the crash in the Typographer code only happens on a full run of the unittests, if you run just the Typographer tests, it doesn't crash...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions