Add depth fix to convert from GL to Metal Vertex shaders need to convert from GL's -1 to +1 z range to Metal's 0 to +1 z range with: z = (z + w) * 0.5 This code is being upstreamed from WebKit. It fixes these end to end tests. BlitFramebufferTest.MultisampleDepthClear/ES3_Metal BlitFramebufferTest.MultisampleDepthClear/ES3_Metal_NoStencilOutput BlitFramebufferTest.BlitDepthStencilPixelByPixel/ES3_Metal BlitFramebufferTest.BlitDepthStencilPixelByPixel/ES3_Metal_NoStencilOutput ClearTest.ClearStencilMask/ES2_Metal ClearTest.ClearStencilMask/ES3_Metal ClearTestES3.ClearMultipleAttachmentsIndividually/ES3_Metal ClearTestES3.MaskedClearHeterogeneousAttachments/ES3_Metal ClearTestES3.ScissoredClearHeterogeneousAttachments/ES3_Metal ClearTestES3.ClearBufferivStencilMask/ES3_Metal ClearTestES3.ClearBufferfiNoStencilAttachment/ES3_Metal MaskedScissoredClearTest.Test/ES2_Metal__clear_s MaskedScissoredClearTest.Test/ES2_Metal__clear_s_mask_s MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_s_mask_s MaskedScissoredClearTest.Test/ES2_Metal__clear_d MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_d MaskedScissoredClearTest.Test/ES2_Metal__clear_ds MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_ds MaskedScissoredClearTest.Test/ES2_Metal__clear_ds_mask_s MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_ds_mask_s MaskedScissoredClearTest.Test/ES2_Metal__clear_cs MaskedScissoredClearTest.Test/ES2_Metal__clear_cs_mask_s MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_cs_mask_s MaskedScissoredClearTest.Test/ES2_Metal__clear_cd MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_cd MaskedScissoredClearTest.Test/ES2_Metal__clear_cds MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_cds MaskedScissoredClearTest.Test/ES2_Metal__clear_cds_mask_s MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_cds_mask_s MaskedScissoredClearTest.Test/ES2_Metal__clear_cs_mask_cs MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_cs_mask_cs MaskedScissoredClearTest.Test/ES2_Metal__clear_cd_mask_c MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_cd_mask_c MaskedScissoredClearTest.Test/ES2_Metal__clear_cds_mask_c MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_cds_mask_c MaskedScissoredClearTest.Test/ES2_Metal__clear_cds_mask_cs MaskedScissoredClearTest.Test/ES2_Metal__scissored_clear_cds_mask_cs MaskedScissoredClearTest.Test/ES3_Metal__clear_s MaskedScissoredClearTest.Test/ES3_Metal__clear_s_mask_s MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_s_mask_s MaskedScissoredClearTest.Test/ES3_Metal__clear_d MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_d MaskedScissoredClearTest.Test/ES3_Metal__clear_ds MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_ds MaskedScissoredClearTest.Test/ES3_Metal__clear_ds_mask_s MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_ds_mask_s MaskedScissoredClearTest.Test/ES3_Metal__clear_cs MaskedScissoredClearTest.Test/ES3_Metal__clear_cs_mask_s MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_cs_mask_s MaskedScissoredClearTest.Test/ES3_Metal__clear_cd MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_cd MaskedScissoredClearTest.Test/ES3_Metal__clear_cds MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_cds MaskedScissoredClearTest.Test/ES3_Metal__clear_cds_mask_s MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_cds_mask_s MaskedScissoredClearTest.Test/ES3_Metal__clear_cs_mask_cs MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_cs_mask_cs MaskedScissoredClearTest.Test/ES3_Metal__clear_cd_mask_c MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_cd_mask_c MaskedScissoredClearTest.Test/ES3_Metal__clear_cds_mask_c MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_cds_mask_c MaskedScissoredClearTest.Test/ES3_Metal__clear_cds_mask_cs MaskedScissoredClearTest.Test/ES3_Metal__scissored_clear_cds_mask_cs DepthStencilFormatsTest.DepthTextureRender/ES2_Metal DepthStencilFormatsTest.DepthBuffer16/ES2_Metal DepthStencilFormatsTest.DepthBuffer24/ES2_Metal DepthStencilFormatsTest.VerifyDepth32UploadData/ES2_Metal DepthStencilFormatsTest.VerifyDepth16UploadData/ES2_Metal TinyDepthStencilWorkaroundTest.DepthTexturesStick/ES3_Metal DiscardFramebufferEXTTest.ClearDepthThenDrawWithDepthTestThenDiscard/ES2_Metal DiscardFramebufferEXTTest.ClearDepthThenDrawWithDepthTestThenDiscard/ES3_Metal Bug: angleproject:5505 Change-Id: I9b52bb46569678636afc6a243bfa8779f101b6af Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3097161 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>