summaryrefslogtreecommitdiff
path: root/chromium/third_party/angle/doc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/angle/doc')
-rw-r--r--chromium/third_party/angle/doc/AddingExtensions.md37
-rw-r--r--chromium/third_party/angle/doc/ChoosingANGLEBranch.md9
-rw-r--r--chromium/third_party/angle/doc/CodingStandard.md3
-rw-r--r--chromium/third_party/angle/doc/DevSetupAndroid.md79
-rw-r--r--chromium/third_party/angle/doc/img/StateChangeNotificationFlow.svg3
5 files changed, 91 insertions, 40 deletions
diff --git a/chromium/third_party/angle/doc/AddingExtensions.md b/chromium/third_party/angle/doc/AddingExtensions.md
new file mode 100644
index 00000000000..dc7550b9048
--- /dev/null
+++ b/chromium/third_party/angle/doc/AddingExtensions.md
@@ -0,0 +1,37 @@
+# Introduction
+
+This page describes how to add new extensions to ANGLE.
+
+# Adding EGL extensions
+
+Note: see also [anglebug.com/2621](http://anglebug.com/2621), linked
+from the [starter project](Starter-Projects.md) doc, to simplify some
+of these steps.
+
+For extensions requiring new entry points:
+
+* Add the extension xml to this file:
+ https://source.chromium.org/chromium/chromium/src/+/master:third_party/angle/scripts/egl_angle_ext.xml
+
+* Note the prototypes for the new entry points must be added to the
+ top of the file, and the functions themselves grouped under the
+ extension name to the bottom of the file.
+
+* Modify `scripts/registry_xml.py` to add the new extension as needed.
+
+* run
+ [scripts/run_code_generation.py](https://source.chromium.org/chromium/chromium/src/+/master:third_party/angle/scripts/run_code_generation.py)
+
+* The entry point itself goes in the
+ [entry_points_egl_ext.h](https://source.chromium.org/chromium/chromium/src/+/master:third_party/angle/src/libGLESv2/entry_points_egl_ext.h)
+ and cpp files.
+
+* Update
+ [eglext_angle.h](https://source.chromium.org/chromium/chromium/src/+/master:third_party/angle/include/EGL/eglext_angle.h)
+ with the new entry points and/or enums.
+
+* Add members to the appropriate Extensions struct in
+ [Caps.h](https://source.chromium.org/chromium/chromium/src/+/master:third_party/angle/src/libANGLE/Caps.h)
+
+* Initialize extension availability in the `Display` subclass's
+ `generateExtensions` method for displays that can support the extension.
diff --git a/chromium/third_party/angle/doc/ChoosingANGLEBranch.md b/chromium/third_party/angle/doc/ChoosingANGLEBranch.md
index c2ac1ae2c40..809268d2eb9 100644
--- a/chromium/third_party/angle/doc/ChoosingANGLEBranch.md
+++ b/chromium/third_party/angle/doc/ChoosingANGLEBranch.md
@@ -66,3 +66,12 @@ If there are conflicts, however, follow these steps:
Have the cherry-pick reviewed, and then land it. It's also OK to skip
the review and land it yourself with TBR= in the issue description, if
you have that ability.
+
+There is one final step to pick up the ANGLE change into a Chromium Beta or
+Stable branch. A Skia auto-roller updates the DEPS file in the corresponding
+Chromium branch automatically once the ANGLE change is merged into an ANGLE
+branch. To make sure that your change has made it into Chromium you can check
+these auto-rollers:
+
+1. https://autoroll.skia.org/r/angle-chromium-beta-autoroll
+1. https://autoroll.skia.org/r/angle-chromium-stable-autoroll
diff --git a/chromium/third_party/angle/doc/CodingStandard.md b/chromium/third_party/angle/doc/CodingStandard.md
index a01de0692f0..728ba89c33f 100644
--- a/chromium/third_party/angle/doc/CodingStandard.md
+++ b/chromium/third_party/angle/doc/CodingStandard.md
@@ -30,9 +30,6 @@ This will catch most of the trivial formatting errors and save you time.
### [Other C++ Features](https://google.github.io/styleguide/cppguide.html#Other_C++_Features)
-* {DEV} all parameters passed by reference, except for STL containers (e.g.
- std::vector, std::list), must be labeled `const`. For return parameters
- other than STL containers, use a pointer.
* {DO} avoid use of default arguments.
* {DONT} use C++ exceptions, they are disabled in the builds and not caught.
* {DO} use nullptr (instead of 0 or NULL) for pointers.
diff --git a/chromium/third_party/angle/doc/DevSetupAndroid.md b/chromium/third_party/angle/doc/DevSetupAndroid.md
index 52836d507d1..2444e63cc14 100644
--- a/chromium/third_party/angle/doc/DevSetupAndroid.md
+++ b/chromium/third_party/angle/doc/DevSetupAndroid.md
@@ -7,63 +7,35 @@ From a Linux platform (the only platform that Chromium for Android supports), fo
Name your output directories `out/Debug` and `out/Release`, because Chromium GPU tests look for browser binaries in these folders. Replacing '[Debug|Release]' with other names seems to be OK when working with multiple build configurations.
-The following GN args are known to work well for Release and Debug configurations.
-Debug:
+## ANGLE GN args for Android
+The following command will open a text editor to populate GN args for a Debug build:
```
-$ gn args out/Debug
-```
-```
-target_os = "android"
-target_cpu = "arm64"
-android32_ndk_api_level = 26
-android64_ndk_api_level = 26
-angle_libs_suffix = "_angle"
-ffmpeg_branding = "Chrome"
-is_component_build = false
-symbol_level = 1
-is_debug = true
-dcheck_always_on = true
-angle_enable_vulkan = true
-angle_enable_vulkan_validation_layers = true
-angle_enable_gl = false
-```
-Release:
-```
-$ gn args out/Release
+gn args out/Debug
```
+
+Once the editor is up, paste the following GN args to generate an Android build, and save the file.
```
target_os = "android"
target_cpu = "arm64"
android32_ndk_api_level = 26
android64_ndk_api_level = 26
angle_libs_suffix = "_angle"
-ffmpeg_branding = "Chrome"
is_component_build = false
-symbol_level = 0
-strip_debug_info = true
-is_debug = false
-is_official_build = true # enables level of optimization beyond release
-dcheck_always_on = false
-angle_enable_vulkan = true
-angle_enable_vulkan_validation_layers = false
-angle_enable_gl = false
-enable_resource_whitelist_generation = false
```
+More targeted GN arg combinations can be found [below](#android-gn-args-combinations).
+
If you run into any problems with the above, you may be able to pull newer GN args from an official Android bot on [GPU.FYI waterfall](https://ci.chromium.org/p/chromium/g/chromium.gpu.fyi/console).
- Look for `generate_build_files` step output of that bot.
- Remove `goma_dir` flag.
+## Building ANGLE for Android
Build an ANGLE target using the following command:
```
autoninja -C out/Debug <target>
```
-or
-```
-autoninja -C out/Release <target>
-```
The following ANGLE build targets are supported:
@@ -182,3 +154,38 @@ E GraphicsEnvironment: Invalid number of ANGLE packages. Required: 1, Found: 0
E GraphicsEnvironment: Failed to find ANGLE package.
```
Double check that you are root, or that your application is [marked debuggable](https://developer.android.com/guide/topics/manifest/application-element#debug).
+
+## Android GN args combinations
+
+The [above](#angle-gn-args-for-android) GN args only modify default values to generate a Debug build for Android. Below are some common configurations used for different scenarios.
+
+To determine what is different from default, you can point the following command at your target directory. It will show the list of gn args in use, where they came from, their current value, and their default values.
+```
+gn args --list <dir>
+```
+### Performance config
+This config is designed to get maximum performance by disabling debug configs and validation layers.
+Note: The oddly named `is_official_build` is a more aggressive optimization level than `Release`. Its names is historical.
+```
+target_os = "android"
+target_cpu = "arm64"
+android32_ndk_api_level = 26
+android64_ndk_api_level = 26
+angle_libs_suffix = "_angle"
+is_component_build = false
+is_official_build = true
+is_debug = false
+```
+### Release with asserts config
+This config is useful for quickly ensuring Vulkan is running cleanly. It disables debug, but enables asserts and allows validation errors.
+```
+target_os = "android"
+target_cpu = "arm64"
+android32_ndk_api_level = 26
+android64_ndk_api_level = 26
+angle_libs_suffix = "_angle"
+is_component_build = false
+is_official_build = true
+is_debug = false
+dcheck_always_on = true
+```
diff --git a/chromium/third_party/angle/doc/img/StateChangeNotificationFlow.svg b/chromium/third_party/angle/doc/img/StateChangeNotificationFlow.svg
index df65f9dac4e..c83eeecb6b3 100644
--- a/chromium/third_party/angle/doc/img/StateChangeNotificationFlow.svg
+++ b/chromium/third_party/angle/doc/img/StateChangeNotificationFlow.svg
@@ -1,2 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="642px" height="682px" viewBox="-0.5 -0.5 642 682" content="&lt;mxfile modified=&quot;2019-05-01T19:07:07.556Z&quot; host=&quot;www.draw.io&quot; agent=&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36&quot; etag=&quot;7MVQbu2uo8iAHLBw1ZlM&quot; version=&quot;10.6.5&quot; type=&quot;google&quot;&gt;&lt;diagram id=&quot;6a731a19-8d31-9384-78a2-239565b7b9f0&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="1" y="1" width="640" height="80" fill="#23445d" stroke="#bac8d3" stroke-width="2" pointer-events="none"/><g transform="translate(155.5,23.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="330" height="26" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 24px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">State Change Notification Flow</div></div></foreignObject><text x="165" y="25" fill="#FFFFFF" text-anchor="middle" font-size="24px" font-family="Helvetica">State Change Notification Flow</text></switch></g><rect x="1" y="81" width="640" height="100" fill-opacity="0.6" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.6" stroke-width="2" pointer-events="none"/><rect x="1" y="181" width="640" height="100" fill-opacity="0.9" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><rect x="1" y="281" width="640" height="100" fill-opacity="0.6" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.6" stroke-width="2" pointer-events="none"/><rect x="1" y="381" width="640" height="100" fill-opacity="0.9" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><rect x="1" y="481" width="640" height="100" fill-opacity="0.6" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.6" stroke-width="2" pointer-events="none"/><rect x="1" y="581" width="640" height="100" fill-opacity="0.9" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><path d="M 168.1 130 L 175.55 130 Q 183 130 183 140 L 183 226 Q 183 236 193 236 L 239 236" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 161.35 130 L 170.35 125.5 L 168.1 130 L 170.35 134.5 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><rect x="31.39" y="105.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(58.5,122.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="72" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">gl::Context</div></div></foreignObject><text x="36" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">gl::Context</text></switch></g><rect x="476.9" y="211" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(495.5,227.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="89" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">rx::BufferImpl</div></div></foreignObject><text x="45" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">rx::BufferImpl</text></switch></g><rect x="239.35" y="211" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(272.5,227.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="60" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">gl::Buffer</div></div></foreignObject><text x="30" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">gl::Buffer</text></switch></g><path d="M 302.9 461.87 L 302.9 505.5" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 302.9 456.62 L 306.4 463.62 L 302.9 461.87 L 299.4 463.62 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="239.4" y="405.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(251.5,422.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="101" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">gl::Framebuffer</div></div></foreignObject><text x="51" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">gl::Framebuffer</text></switch></g><rect x="476.9" y="505.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(490.5,522.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="98" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">rx::TextureImpl</div></div></foreignObject><text x="49" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">rx::TextureImpl</text></switch></g><rect x="239.35" y="605.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(264.5,622.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="76" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">gl::Sampler</div></div></foreignObject><text x="38" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">gl::Sampler</text></switch></g><rect x="239.35" y="505.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(267.5,522.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="69" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">gl::Texture</div></div></foreignObject><text x="35" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">gl::Texture</text></switch></g><rect x="476.76" y="305.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(499.5,322.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="80" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">egl::Surface</div></div></foreignObject><text x="40" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">egl::Surface</text></switch></g><path d="M 168.5 130.5 L 175.75 130.5 Q 183 130.5 183 140.5 L 183 520.5 Q 183 530.5 193 530.5 L 239.35 530.5" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 161.75 130.5 L 170.75 126 L 168.5 130.5 L 170.75 135 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 168.5 130.5 L 175.75 130.5 Q 183 130.5 183 140.5 L 183 620.5 Q 183 630.5 193 630.5 L 239.35 630.5" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 161.75 130.5 L 170.75 126 L 168.5 130.5 L 170.75 135 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 376.46 236 L 412 236 Q 422 236 432 236 L 476.9 236" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 369.71 236 L 378.71 231.5 L 376.46 236 L 378.71 240.5 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 303 211 L 303 193.5 Q 303 183.5 303 174.8 L 303 166.1" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 303 159.35 L 307.5 168.35 L 303 166.1 L 298.5 168.35 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 303 505.5 L 303 490.5 Q 303 480.5 303 473.05 L 303 465.6" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 303 458.85 L 307.5 467.85 L 303 465.6 L 298.5 467.85 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 376.46 530.5 L 412 530.5 Q 422 530.5 432 530.5 L 476.9 530.5" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 369.71 530.5 L 378.71 526 L 376.46 530.5 L 378.71 535 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 376.51 430.5 L 412 430.5 Q 422 430.5 422 420.5 L 422 340.5 Q 422 330.5 432 330.5 L 476.76 330.5" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 369.76 430.5 L 378.76 426 L 376.51 430.5 L 378.76 435 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 168.1 131 L 175.55 131 Q 183 131 183 141 L 183 421 Q 183 431 193 431 L 241 431" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 161.35 131 L 170.35 126.5 L 168.1 131 L 170.35 135.5 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 239.35 130.5 L 165.72 130.5" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 160.47 130.5 L 167.47 127 L 165.72 130.5 L 167.47 134 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="239.35" y="105.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(253.5,122.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="98" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">gl::VertexArray<br style="font-size: 15px" /></div></div></foreignObject><text x="49" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="32.35" y="105.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(46.5,122.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="98" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">gl::VertexArray<br style="font-size: 15px" /></div></div></foreignObject><text x="49" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="239.35" y="305.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="none"/><g transform="translate(248.5,322.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="107" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">gl::Renderbuffer</div></div></foreignObject><text x="54" y="16" fill="#FFFFFF" text-anchor="middle" font-size="15px" font-family="Helvetica">gl::Renderbuffer</text></switch></g><path d="M 301 395.4 L 301 387.95 Q 301 380.5 301 370.5 L 301 355.5" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 301 402.15 L 296.5 393.15 L 301 395.4 L 305.5 393.15 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 168.1 130 L 189 130 Q 199 130 209 130 L 240 130" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 161.35 130 L 170.35 125.5 L 168.1 130 L 170.35 134.5 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/></g></svg> \ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="642px" height="682px" viewBox="-0.5 -0.5 642 682" content="&lt;mxfile modified=&quot;2020-06-01T14:42:02.062Z&quot; host=&quot;app.diagrams.net&quot; agent=&quot;5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36&quot; etag=&quot;yHR0n6PLTIF92Dy7KGMj&quot; version=&quot;13.1.11&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;6a731a19-8d31-9384-78a2-239565b7b9f0&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="1" y="1" width="640" height="80" fill="#23445d" stroke="#bac8d3" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 37px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">State Change Notification Flow</div></div></div></foreignObject><text x="321" y="44" fill="#FFFFFF" font-family="Helvetica" font-size="24px" text-anchor="middle">State Change Notification Flow</text></switch></g><rect x="1" y="81" width="640" height="100" fill-opacity="0.6" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.6" stroke-width="2" pointer-events="all"/><rect x="1" y="181" width="640" height="100" fill-opacity="0.9" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.9" stroke-width="2" pointer-events="all"/><rect x="1" y="281" width="640" height="100" fill-opacity="0.6" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.6" stroke-width="2" pointer-events="all"/><rect x="1" y="381" width="640" height="100" fill-opacity="0.9" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.9" stroke-width="2" pointer-events="all"/><rect x="1" y="481" width="640" height="100" fill-opacity="0.6" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.6" stroke-width="2" pointer-events="all"/><rect x="1" y="581" width="640" height="100" fill-opacity="0.9" fill="#bac8d3" stroke="#ffffff" stroke-opacity="0.9" stroke-width="2" pointer-events="all"/><path d="M 168.1 130 L 175.55 130 Q 183 130 183 140 L 183 226 Q 183 236 193 236 L 239.35 236" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 161.35 130 L 170.35 125.5 L 168.1 130 L 170.35 134.5 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="31.39" y="105.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 131px; margin-left: 95px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">gl::Context</div></div></div></foreignObject><text x="95" y="135" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">gl::Context</text></switch></g><rect x="476.9" y="211" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 236px; margin-left: 540px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">rx::BufferImpl</div></div></div></foreignObject><text x="540" y="241" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">rx::BufferImpl</text></switch></g><rect x="239.35" y="211" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 236px; margin-left: 303px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">gl::Buffer</div></div></div></foreignObject><text x="303" y="241" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">gl::Buffer</text></switch></g><path d="M 302.9 461.87 L 302.9 505.5" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 302.9 456.62 L 306.4 463.62 L 302.9 461.87 L 299.4 463.62 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="239.4" y="405.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 431px; margin-left: 303px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">gl::Framebuffer</div></div></div></foreignObject><text x="303" y="435" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">gl::Framebuffer</text></switch></g><rect x="476.9" y="505.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 531px; margin-left: 540px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">rx::TextureImpl</div></div></div></foreignObject><text x="540" y="535" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">rx::TextureImpl</text></switch></g><rect x="239.35" y="605.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 631px; margin-left: 303px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">gl::Sampler</div></div></div></foreignObject><text x="303" y="635" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">gl::Sampler</text></switch></g><rect x="239.35" y="505.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 531px; margin-left: 303px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">gl::Texture</div></div></div></foreignObject><text x="303" y="535" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">gl::Texture</text></switch></g><rect x="476.91" y="405" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 430px; margin-left: 540px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">egl::Surface</div></div></div></foreignObject><text x="540" y="435" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">egl::Surface</text></switch></g><path d="M 168.5 130.5 L 175.75 130.5 Q 183 130.5 183 140.5 L 183 520.5 Q 183 530.5 193 530.5 L 239.35 530.5" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 161.75 130.5 L 170.75 126 L 168.5 130.5 L 170.75 135 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 168.5 130.5 L 175.75 130.5 Q 183 130.5 183 140.5 L 183 620.5 Q 183 630.5 193 630.5 L 239.35 630.5" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 161.75 130.5 L 170.75 126 L 168.5 130.5 L 170.75 135 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 376.46 236 L 412 236 Q 422 236 432 236 L 476.9 236" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 369.71 236 L 378.71 231.5 L 376.46 236 L 378.71 240.5 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 303 211 L 303 165.5 Q 303 155.5 302.94 160.55 L 302.88 165.6" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 302.86 158.85 L 307.39 167.84 L 302.88 165.6 L 298.39 167.87 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 303 505.5 L 303 490.5 Q 303 480.5 303 473.05 L 303 465.6" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 303 458.85 L 307.5 467.85 L 303 465.6 L 298.5 467.85 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 376.46 530.5 L 412 530.5 Q 422 530.5 432 530.5 L 476.9 530.5" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 369.71 530.5 L 378.71 526 L 376.46 530.5 L 378.71 535 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 376.51 430.5 L 412 430.5 Q 422 430.5 432 430.41 L 476.91 430" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 369.76 430.5 L 378.76 426 L 376.51 430.5 L 378.76 435 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 168.5 130.5 L 175.75 130.5 Q 183 130.5 183 140.5 L 183 421 Q 183 431 193 431 L 241 431" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 161.75 130.5 L 170.75 126 L 168.5 130.5 L 170.75 135 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 239.35 130.5 L 165.72 130.5" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 160.47 130.5 L 167.47 127 L 165.72 130.5 L 167.47 134 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="239.35" y="105.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 131px; margin-left: 303px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">gl::VertexArray<br style="font-size: 15px" /></div></div></div></foreignObject><text x="303" y="135" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">gl::VertexArray&#xa;</text></switch></g><rect x="32.35" y="105.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 131px; margin-left: 96px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">gl::Context</div></div></div></foreignObject><text x="96" y="135" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">gl::Context</text></switch></g><rect x="239.35" y="305.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 331px; margin-left: 303px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">gl::Renderbuffer</div></div></div></foreignObject><text x="303" y="335" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">gl::Renderbuffer</text></switch></g><path d="M 301 395.4 L 301 387.95 Q 301 380.5 301 370.5 L 301 355.5" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 301 402.15 L 296.5 393.15 L 301 395.4 L 305.5 393.15 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 168.1 130 L 189 130 Q 199 130 209 130 L 240 130" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 161.35 130 L 170.35 125.5 L 168.1 130 L 170.35 134.5 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="476.91" y="305.5" width="127" height="50" rx="7.5" ry="7.5" fill="#23445d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 331px; margin-left: 540px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: nowrap; ">RenderbufferImpl</div></div></div></foreignObject><text x="540" y="335" fill="#FFFFFF" font-family="Helvetica" font-size="15px" text-anchor="middle">RenderbufferImpl</text></switch></g><path d="M 376.46 330 L 412 330 Q 422 330 432 330 L 476.9 330" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 369.71 330 L 378.71 325.5 L 376.46 330 L 378.71 334.5 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 169.46 130.5 L 176.23 130.5 Q 183 130.5 183 140.5 L 183 320.5 Q 183 330.5 193 330.5 L 239.35 330.5" fill="none" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 162.71 130.5 L 171.71 126 L 169.46 130.5 L 171.71 135 Z" fill="#0c343d" stroke="#0c343d" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg> \ No newline at end of file