-
Notifications
You must be signed in to change notification settings - Fork 5.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add initial support for 4x MSAA in OpenGLES backend. #46381
Conversation
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 Hixie or stuartmorgan on 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. |
@@ -4,6 +4,8 @@ | |||
|
|||
#pragma once | |||
|
|||
// IWYU pragma: begin_exports |
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.
This is neat, apparently you can tell IWYU how includes are being used:
https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/IWYUPragmas.md#iwyu-pragma-export
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
…135717) flutter/engine@cc7c3c1...485543c 2023-09-28 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from cu6apvEZ2P6zhishc... to l2RxJKPfYn7QzGOoL... (flutter/engine#46382) 2023-09-28 30870216+gaaclarke@users.noreply.github.com Remove opacity layer dcheck. (flutter/engine#46160) 2023-09-28 matanlurey@users.noreply.github.com Add initial support for 4x MSAA in OpenGLES backend. (flutter/engine#46381) 2023-09-28 matej.knopp@gmail.com Reland: [macOS] performKeyEquivalent cleanup (flutter/engine#46377) 2023-09-28 matej.knopp@gmail.com [macOS] TextInputPlugin should mark navigation events in IME popover as handled (flutter/engine#46141) 2023-09-28 30870216+gaaclarke@users.noreply.github.com Removed unnecessary dynamic dispatch (flutter/engine#46369) 2023-09-28 joel.winarske@gmail.com [Impeller] Fix OpenGLES EGL_BAD_ACCESS due to context being current on multiple threads. (flutter/engine#46287) 2023-09-28 ajihyf@gmail.com Fix damage calculation when not providing populate_existing_damage for gl embedder (flutter/engine#45611) Also rolling transitive DEPS: fuchsia/sdk/core/linux-amd64 from cu6apvEZ2P6z to l2RxJKPfYn7Q 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 jacksongardner@google.com,rmistry@google.com,zra@google.com 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://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…lutter#135717) flutter/engine@cc7c3c1...485543c 2023-09-28 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from cu6apvEZ2P6zhishc... to l2RxJKPfYn7QzGOoL... (flutter/engine#46382) 2023-09-28 30870216+gaaclarke@users.noreply.github.com Remove opacity layer dcheck. (flutter/engine#46160) 2023-09-28 matanlurey@users.noreply.github.com Add initial support for 4x MSAA in OpenGLES backend. (flutter/engine#46381) 2023-09-28 matej.knopp@gmail.com Reland: [macOS] performKeyEquivalent cleanup (flutter/engine#46377) 2023-09-28 matej.knopp@gmail.com [macOS] TextInputPlugin should mark navigation events in IME popover as handled (flutter/engine#46141) 2023-09-28 30870216+gaaclarke@users.noreply.github.com Removed unnecessary dynamic dispatch (flutter/engine#46369) 2023-09-28 joel.winarske@gmail.com [Impeller] Fix OpenGLES EGL_BAD_ACCESS due to context being current on multiple threads. (flutter/engine#46287) 2023-09-28 ajihyf@gmail.com Fix damage calculation when not providing populate_existing_damage for gl embedder (flutter/engine#45611) Also rolling transitive DEPS: fuchsia/sdk/core/linux-amd64 from cu6apvEZ2P6z to l2RxJKPfYn7Q 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 jacksongardner@google.com,rmistry@google.com,zra@google.com 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://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Initial support _towards_ flutter/flutter#130045. This updates the `PROC_TABLE`, and adds (and supports) `Type::kRenderBufferMultisampled`. The type remains unused in the actual engine, and will be in a follow-up PR once we like this one! /cc @chinmaygarde
Closes flutter/flutter#130045. Continues the work started in #46381. _This is PR supercedes #46688 It's worth calling out the mechanism we're using is only supported in OpenGL 3.0+, so we'll need a different solution (either by default, or when Blit is not available) to get proper device support. I'll file an issue before merging. ## Status Appears to work! I validated it on a local demo app, flutter_gallery, and Wonderous. Example: ![flutter_05](https://github.com/flutter/engine/assets/168174/36f41602-511c-4b62-95d6-e09b56f89566) --- ## Background <details> <summary>History</summary> <br> **Still blocked**, but MSAA is working provided you use a phone with OpenGLES 3.0+. The last bit is getting stencil attachments to work again (they currently crash with a `GL_INVALID_OPERATION`). Compared to #46688, we''ve corrected some incorrect OpenGL calls and assumptions - for example we now have both multi-sampled textures similar to the [`MultisampledFBO.cpp`](https://github.com/ARM-software/opengl-es-sdk-for-android/blob/master/samples/advanced_samples/MultisampledFBO/jni/MultisampledFBO.cpp#L702) example. After doing so, the GL driver is successfully called, and no errors or crashes persist. Yay! We did need to use [`glBlitFramebuffer`](https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glBlitFramebuffer.xhtml) to move from the resolve texture to the color attachment, and referenced some other [example code](https://github.com/VictorGordan/opengl-tutorials/blob/346624ecc5a03f0f6d1d19247db0cc68d21bb7a5/YoutubeOpenGL%2027%20-%20Normal%20Maps/Main.cpp#L274) for that. <details> <summary>Example App</summary> ```dart import 'package:flutter/material.dart'; void main() { runApp(const MainApp()); } class MainApp extends StatefulWidget { const MainApp({super.key}); @OverRide State<MainApp> createState() => _MainAppState(); } class _MainAppState extends State<MainApp> { bool msaa = true; @OverRide Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('Force offscreen MSAA'), actions: [ Switch( value: msaa, onChanged: (value) { setState(() { msaa = value; }); }, ), ], ), body: Center( child: ForceOffscreenMSAA(opaque: !msaa), ), ), ); } } // Draws 2 overlapping circles (BoxDecoration/BoxShape) wrapped in 50% opacity. class ForceOffscreenMSAA extends StatelessWidget { final bool opaque; const ForceOffscreenMSAA({required this.opaque, super.key}); @OverRide Widget build(BuildContext context) { return Opacity( opacity: opaque ? 1.0 : 0.5, child: const DecoratedBox( decoration: BoxDecoration( shape: BoxShape.circle, color: Colors.red, ), child: SizedBox( width: 300, height: 300, child: DecoratedBox( decoration: BoxDecoration( shape: BoxShape.circle, color: Colors.green, ), ), ), ), ); } } ``` </details> <details> <summary>Screenshots</summary> ![Disabled](https://github.com/flutter/engine/assets/168174/0b00e278-fb8f-468d-b5ae-896341789d3f) ![Enabled](https://github.com/flutter/engine/assets/168174/045d056a-2a23-4a27-be9a-b8fbc3e60fb8) </details> <details> <summary>Open GL Commands during MSAA Render</summary> ```txt glClearStencil(, 0) glDisable(, 3089) glDisable(, 2929) glDisable(, 2960) glDisable(, 2884) glDisable(, 3042) glColorMask(, 1, 1, 1, 1) glClear(, 17664) glPushDebugGroupKHR(, 33354, 1367, 10, Solid Fill) glDisable(, 3042) glColorMask(, , , , ) glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7680) glStencilFuncSeparate(, 1032, 514, 0, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 787, 787) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glGenBuffers(, 1, 0x6f9900a578) glBindBuffer(, 34962, 1) glBufferData(, 34962, 4480, , 35044) glUseProgram(, 56) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 2, 5126, 0, 8, 0x0) glUniformMatrix4fv(, 0, 1, 0, 0xb4000070aadbc860) glUniform4fv(, 1, 1, 0xb4000070aadbc8a0) glBindBuffer(, 34963, 1) glDrawElements(, 4, 426, 5123, 0x480) glDisableVertexAttribArray(, 0) glUseProgram(, 0) glPopDebugGroupKHR() glPushDebugGroupKHR(, 33354, 1369, 10, Solid Fill) glDisable(, 3042) glColorMask(, , , , ) glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7680) glStencilFuncSeparate(, 1032, 514, 0, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 787, 787) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glBindBuffer(, 34962, 1) glUseProgram(, 56) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 2, 5126, 0, 8, 0x880) glUniformMatrix4fv(, 0, 1, 0, 0xb4000070aadbd160) glUniform4fv(, 1, 1, 0xb4000070aadbd1a0) glBindBuffer(, 34963, 1) glDrawElements(, 4, 426, 5123, 0xd00) glDisableVertexAttribArray(, 0) glUseProgram(, 0) glPopDebugGroupKHR() glDiscardFramebufferEXT(, 36160, 3, 0xb4000071cad5b590) glBindFramebuffer(, 36160, 0) glDeleteFramebuffers(, 1, 0x6f9900b25c) glPopDebugGroupKHR() glDeleteBuffers(, 1, 0x6f9900ce98) glDebugMessageControlKHR(, 4352, 4352, 4352, 0, nullptr, 1) glPushDebugGroupKHR(, 33354, 1370, 39, EntityPass Render Pass: Depth=0 Count=0) glClearColor(, 1, 0.984314, 0.996078, 1) glClearStencil(, 0) glDisable(, 3089) glDisable(, 2929) glDisable(, 2960) glDisable(, 2884) glDisable(, 3042) glColorMask(, 1, 1, 1, 1) glClear(, 17664) glPushDebugGroupKHR(, 33354, 1371, 21, Texture Fill: Subpass) glEnable(, 3042) glBlendFuncSeparate(, 1, 771, 1, 771) glBlendEquationSeparate(, 32774, 32774) glColorMask(, , , , ) glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7680) glStencilFuncSeparate(, 1032, 514, 0, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 1080, 2029) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glGenBuffers(, 1, 0x6f9900bfc8) glBindBuffer(, 34962, 1) glBufferData(, 34962, 11360, , 35044) glUseProgram(, 57) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 2, 5126, 0, 16, 0x0) glEnableVertexAttribArray(, 1) glVertexAttribPointer(, 1, 2, 5126, 0, 16, 0x8) glUniformMatrix4fv(, 1, 1, 0, 0xb40000705ad2f200) glUniform1fv(, 2, 1, 0xb40000705ad2f240) glUniform1fv(, 3, 1, 0xb40000705ad2f244) glActiveTexture(, 33984) glBindTexture(, 3553, 1) glTexParameteri(, 3553, 10241, 9728) glTexParameteri(, 3553, 10240, 9728) glTexParameteri(, 3553, 10242, 33071) glTexParameteri(, 3553, 10243, 33071) glUniform1i(, 0, 0) glDrawArrays(, 5, 0, 4) glDisableVertexAttribArray(, 0) glDisableVertexAttribArray(, 1) glUseProgram(, 0) glPopDebugGroupKHR() glPushDebugGroupKHR(, 33354, 1373, 10, Solid Fill) glDisable(, 3042) glColorMask(, , , , ) glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7680) glStencilFuncSeparate(, 1032, 514, 0, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 1080, 2029) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glBindBuffer(, 34962, 1) glUseProgram(, 58) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 2, 5126, 0, 8, 0x180) glUniformMatrix4fv(, 0, 1, 0, 0xb40000705ad2f300) glUniform4fv(, 1, 1, 0xb40000705ad2f340) glDrawArrays(, 5, 0, 4) glDisableVertexAttribArray(, 0) glUseProgram(, 0) glPopDebugGroupKHR() glPushDebugGroupKHR(, 33354, 1374, 14, Intersect Clip) glEnable(, 3042) glBlendFuncSeparate(, 0, 1, 0, 1) glBlendEquationSeparate(, 32774, 32774) glColorMask(, glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7682) glStencilFuncSeparate(, 1032, 514, 0, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 1080, 2029) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glBindBuffer(, 34962, 1) glUseProgram(, 59) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 2, 5126, 0, 8, 0x280) glUniformMatrix4fv(, 0, 1, 0, 0xb40000705ad2f400) glDrawArrays(, 5, 0, 4) glDisableVertexAttribArray(, 0) glUseProgram(, 0) glPopDebugGroupKHR() glPushDebugGroupKHR(, 33354, 1375, 9, TextFrame) glEnable(, 3042) glBlendFuncSeparate(, 1, 771, 1, 771) glBlendEquationSeparate(, 32774, 32774) glColorMask(, , , , ) glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7680) glStencilFuncSeparate(, 1032, 514, 1, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 1080, 2029) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glBindBuffer(, 34962, 1) glUseProgram(, 60) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 4, 5126, 0, 48, 0x4c0) glEnableVertexAttribArray(, 3) glVertexAttribPointer(, 3, 2, 5126, 0, 48, 0x4e8) glEnableVertexAttribArray(, 1) glVertexAttribPointer(, 1, 4, 5126, 0, 48, 0x4d0) glEnableVertexAttribArray(, 2) glVertexAttribPointer(, 2, 2, 5126, 0, 48, 0x4e0) glUniformMatrix4fv(, 1, 1, 0, 0xb40000705ad2f500) glUniformMatrix4fv(, 2, 1, 0, 0xb40000705ad2f540) glUniform2fv(, 3, 1, 0xb40000705ad2f580) glUniform2fv(, 4, 1, 0xb40000705ad2f588) glUniform4fv(, 5, 1, 0xb40000705ad2f590) glUniform1fv(, 6, 1, 0xb40000705ad2f5a0) glActiveTexture(, 33984) glBindTexture(, 3553, 2) glTexParameteri(, 3553, 10241, 9728) glTexParameteri(, 3553, 10240, 9728) glTexParameteri(, 3553, 10242, 33071) glTexParameteri(, 3553, 10243, 33071) glUniform1i(, 0, 0) glDrawArrays(, 4, 0, 120) glDisableVertexAttribArray(, 0) glDisableVertexAttribArray(, 3) glDisableVertexAttribArray(, 1) glDisableVertexAttribArray(, 2) glUseProgram(, 0) glPopDebugGroupKHR() glPushDebugGroupKHR(, 33354, 1376, 10, Solid Fill) glDisable(, 3042) glColorMask(, , , , ) glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7680) glStencilFuncSeparate(, 1032, 514, 1, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 1080, 2029) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glBindBuffer(, 34962, 1) glUseProgram(, 61) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 2, 5126, 0, 8, 0x1b40) glUniformMatrix4fv(, 0, 1, 0, 0xb40000705ad30f00) glUniform4fv(, 1, 1, 0xb40000705ad30f40) glBindBuffer(, 34963, 1) glDrawElements(, 4, 144, 5123, 0x1cd0) glDisableVertexAttribArray(, 0) glUseProgram(, 0) glPopDebugGroupKHR() glPushDebugGroupKHR(, 33354, 1377, 10, Solid Fill) glDisable(, 3042) glColorMask(, , , , ) glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7680) glStencilFuncSeparate(, 1032, 514, 1, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 1080, 2029) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glBindBuffer(, 34962, 1) glUseProgram(, 61) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 2, 5126, 0, 8, 0x1e80) glUniformMatrix4fv(, 0, 1, 0, 0xb40000705ad31200) glUniform4fv(, 1, 1, 0xb40000705ad31240) glBindBuffer(, 34963, 1) glDrawElements(, 4, 114, 5123, 0x1fc0) glDisableVertexAttribArray(, 0) glUseProgram(, 0) glPopDebugGroupKHR() glPushDebugGroupKHR(, 33354, 1378, 12, Restore Clip) glEnable(, 3042) glBlendFuncSeparate(, 0, 1, 0, 1) glBlendEquationSeparate(, 32774, 32774) glColorMask(, glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7681) glStencilFuncSeparate(, 1032, 513, 0, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 1080, 2029) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glBindBuffer(, 34962, 1) glUseProgram(, 62) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 2, 5126, 0, 8, 0x2180) glUniformMatrix4fv(, 0, 1, 0, 0xb40000705ad31300) glDrawArrays(, 5, 0, 4) glDisableVertexAttribArray(, 0) glUseProgram(, 0) glPopDebugGroupKHR() glPushDebugGroupKHR(, 33354, 1379, 12, RRect Shadow) glEnable(, 3042) glBlendFuncSeparate(, 1, 771, 1, 771) glBlendEquationSeparate(, 32774, 32774) glColorMask(, , , , ) glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7680) glStencilFuncSeparate(, 1032, 514, 0, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 1080, 2029) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glBindBuffer(, 34962, 1) glUseProgram(, 63) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 2, 5126, 0, 8, 0x2240) glUniformMatrix4fv(, 0, 1, 0, 0xb40000705ad31400) glUniform4fv(, 1, 1, 0xb40000705ad31500) glUniform2fv(, 2, 1, 0xb40000705ad31510) glUniform1fv(, 3, 1, 0xb40000705ad31518) glUniform1fv(, 4, 1, 0xb40000705ad3151c) glDrawArrays(, 5, 0, 4) glDisableVertexAttribArray(, 0) glUseProgram(, 0) glPopDebugGroupKHR() glPushDebugGroupKHR(, 33354, 1380, 10, Solid Fill) glEnable(, 3042) glBlendFuncSeparate(, 1, 771, 1, 771) glBlendEquationSeparate(, 32774, 32774) glColorMask(, , , , ) glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7680) glStencilFuncSeparate(, 1032, 514, 0, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 1080, 2029) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glBindBuffer(, 34962, 1) glUseProgram(, 64) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 2, 5126, 0, 8, 0x2420) glUniformMatrix4fv(, 0, 1, 0, 0xb40000705ad31600) glUniform4fv(, 1, 1, 0xb40000705ad31640) glDrawArrays(, 5, 0, 4) glDisableVertexAttribArray(, 0) glUseProgram(, 0) glPopDebugGroupKHR() glPushDebugGroupKHR(, 33354, 1381, 9, TextFrame) glEnable(, 3042) glBlendFuncSeparate(, 1, 771, 1, 771) glBlendEquationSeparate(, 32774, 32774) glColorMask(, , , , ) glEnable(, 2960) glStencilOpSeparate(, 1032, 7680, 7680, 7680) glStencilFuncSeparate(, 1032, 514, 0, 4294967295) glStencilMaskSeparate(, 1032, 4294967295) glDisable(, 2929) glViewport(, 0, 0, 1080, 2029) glDisable(, 3089) glDisable(, 2884) glFrontFace(, 2304) glBindBuffer(, 34962, 1) glUseProgram(, 60) glEnableVertexAttribArray(, 0) glVertexAttribPointer(, 0, 4, 5126, 0, 48, 0x26c0) glEnableVertexAttribArray(, 3) glVertexAttribPointer(, 3, 2, 5126, 0, 48, 0x26e8) glEnableVertexAttribArray(, 1) glVertexAttribPointer(, 1, 4, 5126, 0, 48, 0x26d0) glEnableVertexAttribArray(, 2) glVertexAttribPointer(, 2, 2, 5126, 0, 48, 0x26e0) glUniformMatrix4fv(, 1, 1, 0, 0xb40000705ad31700) glUniformMatrix4fv(, 2, 1, 0, 0xb40000705ad31740) glUniform2fv(, 3, 1, 0xb40000705ad31780) glUniform2fv(, 4, 1, 0xb40000705ad31788) glUniform4fv(, 5, 1, 0xb40000705ad31790) glUniform1fv(, 6, 1, 0xb40000705ad317a0) glActiveTexture(, 33984) glBindTexture(, 3553, 2) glTexParameteri(, 3553, 10241, 9729) glTexParameteri(, 3553, 10240, 9729) glTexParameteri(, 3553, 10242, 33071) glTexParameteri(, 3553, 10243, 33071) glUniform1i(, 0, 0) glDrawArrays(, 4, 0, 30) glDisableVertexAttribArray(, 0) glDisableVertexAttribArray(, 3) glDisableVertexAttribArray(, 1) glDisableVertexAttribArray(, 2) glUseProgram(, 0) glPopDebugGroupKHR() glDiscardFramebufferEXT(, 36160, 2, 0xb4000071cad5b310) glPopDebugGroupKHR() ``` </details> <details> <summary>AGI Trace</summary> <img width="590" alt="Screenshot 2023-10-17 at 3 21 44 PM" src="https://github.com/flutter/engine/assets/168174/ce9fa65c-9a2b-4b82-9f67-af5373d119c1"> <img width="336" alt="Screenshot 2023-10-17 at 3 21 51 PM" src="https://github.com/flutter/engine/assets/168174/8016029a-ec6d-4c18-b200-50c6485656fa"> </details> ~~As you can see, with MSAA enabled I get a weird mostly-blank artifact (or sometimes entirely blank).~~ UPDATE: FIXED. What we tried (h/t @jonahwilliams): - [x] Using AGI (with the ANGLE adapter, see also [these oddities](https://developer.android.com/agi/troubleshooting#game_failure_after_using_agi)), see [CircleOpacityTrace.gfxtrace.zip](https://github.com/flutter/engine/files/12966311/CircleOpacityTrace.gfxtrace.zip). - [x] Print debugging the commands (see above) - [x] Commenting out `gl.DiscardFramebufferEXT` optimizations - [x] Render Doc (I need to use a Samsung phone old enough to have OpenGLES) /cc @jonahwilliams to add anything else ^ </details>
Initial support towards flutter/flutter#130045.
This updates the
PROC_TABLE
, and adds (and supports)Type::kRenderBufferMultisampled
.The type remains unused in the actual engine, and will be in a follow-up PR once we like this one!
/cc @chinmaygarde