This repository was archived by the owner on Feb 25, 2025. It is now read-only.
  
  
  - 
                Notifications
    You must be signed in to change notification settings 
- Fork 6k
Make the GL context current in EmbedderSurfaceGLImpeller before creating the GPU surface #50807
          
     Merged
      
      
            auto-submit
  merged 1 commit into
  flutter:main
from
jason-simmons:embed_iplr_gl_context_gpu_surface
  
      
      
   
  Feb 21, 2024 
      
    
                
     Merged
            
            Make the GL context current in EmbedderSurfaceGLImpeller before creating the GPU surface #50807
                    auto-submit
  merged 1 commit into
  flutter:main
from
jason-simmons:embed_iplr_gl_context_gpu_surface
  
      
      
   
  Feb 21, 2024 
              
            Conversation
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
    | PlatformDispatcher.instance.scheduleFrame(); | ||
| } | ||
|  | ||
| @pragma('vm:entry-point') | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does this test do differently than the entrypoint you're replacing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test executes a series of canvas draw calls that makes the EntityPass render a Contents that needs to obtain a Pipeline before the ReactorGLES is flushed.
Without this patch, the test hangs when SolidColorContents::Render tries to get its shader pipeline.
              
                    jonahwilliams
  
              
              approved these changes
              
                  
                    Feb 21, 2024 
                  
              
              
            
            
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with nit
…ing the GPU surface The GPUSurfaceGLImpeller ctor creates an AiksContext/ContentContext, which loads the shader pipelines. If the current thread does not have a GL context and can not execute ReactorGLES operations, then the pipeline futures will not complete. This can cause the raster thread to hang if the reactor has not run and the futures are still incomplete when a rendering task later needs to obtain the pipeline.
26d2a40    to
    41d39f7      
    Compare
  
    
    
  engine-flutter-autoroll 
      added a commit
        to engine-flutter-autoroll/flutter
      that referenced
      this pull request
    
      Feb 21, 2024 
    
    
      
  
    
      
    
  
…fore creating the GPU surface (flutter/engine#50807)
    
  auto-submit bot
      pushed a commit
        to flutter/flutter
      that referenced
      this pull request
    
      Feb 21, 2024 
    
    
      
  
    
      
    
  
…143875) flutter/engine@52ffcaa...bf5c003 2024-02-21 [email protected] Roll Skia from 9d86359b5fe8 to 8fa858855820 (15 revisions) (flutter/engine#50827) 2024-02-21 [email protected] Add the `scenario_app` `'solid_blue'` golden to the Android test suite (flutter/engine#50801) 2024-02-21 [email protected] Ignore EOF newline characters and added tests to `dir_contents_diff` tool (flutter/engine#50805) 2024-02-21 [email protected] Make the GL context current in EmbedderSurfaceGLImpeller before creating the GPU surface (flutter/engine#50807) 2024-02-21 [email protected] Fail engine post-submit on skia-gold comparions. (flutter/engine#50826) 2024-02-21 [email protected] Remove WindowManager reflection in SingleViewPresentation.java (flutter/engine#49996) 2024-02-21 [email protected] [Impeller] applied the lerp hack to blur (roughly 2x speedup?) (flutter/engine#50790) 2024-02-21 [email protected] Migrate the Fuchsia embedder to the Dart_RecordTimelineEvent API (flutter/engine#50823) 2024-02-21 [email protected] Hook ImageReaderSurfaceProducer to the onTrimMemory listener interface (flutter/engine#50792) 2024-02-21 [email protected] Fix the local-only lint errors due to an unexpected `GeneratedPluginRegistrant.java` (flutter/engine#50795) 2024-02-21 [email protected] [Impeller] cache onscreen render targets. (flutter/engine#50751) 2024-02-21 [email protected] Use 'et format' in CI. Check formatting of all files in CI (flutter/engine#50810) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
  
      Sign up for free
      to subscribe to this conversation on GitHub.
      Already have an account?
      Sign in.
  
      
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
The GPUSurfaceGLImpeller ctor creates an AiksContext/ContentContext, which loads the shader pipelines. If the current thread does not have a GL context and can not execute ReactorGLES operations, then the pipeline futures will not complete. This can cause the raster thread to hang if the reactor has not run and the futures are still incomplete when a rendering task later needs to obtain the pipeline.