Metal: Fix multisample resolves. 1) Only use MTLLoadActionDontCare if store action was MTLStoreActionDontCare, ignoring MTLStoreActionMultisampleResolve. 2) For color, depth and stencil attachments, if they have implicit multisample textures, use MTLStoreActionStoreAndMultisampleResolve rather than MTLStoreActionStore. This addresses bugs when resolving a multisampled framebuffer and copying it to a texture, and fixes these two Three.js demos: https://threejs.org/examples/webgl_framebuffer_texture https://threejs.org/examples/webgl_decals Added CopyTextureTestES3.DrawThenCopyThenBlend modeled after new WebGL 2.0 conformance test in: https://github.com/KhronosGroup/WebGL/pull/3379 Confirmed to catch the bug. On Intel Macs, the Metal debug layers and load/store action validation must be enabled: MTL_DEBUG_LAYER=1 \ MTL_DEBUG_LAYER_VALIDATE_LOAD_ACTIONS=1 \ MTL_DEBUG_LAYER_VALIDATE_STORE_ACTIONS=1 \ MTL_DEBUG_LAYER_VALIDATE_UNRETAINED_RESOURCES=4 \ angle_end2end_tests ... Bug: angleproject:6972 Change-Id: I7bcb7c19e434e22e24b800fdce4c480d10b1fc40 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3450033 Reviewed-by: Gregg Tavares <gman@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>