Dawn: fix single-sided stencil.

GrStencilSettings requires that single-sided stencil be accessed via
frontAndBack(), not via front() or back().

Change-Id: Ib35e6187bda05e21c164685f7b726ce4849979fe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249416
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/src/gpu/dawn/GrDawnProgramBuilder.cpp b/src/gpu/dawn/GrDawnProgramBuilder.cpp
index a33e9bb..84e4067 100644
--- a/src/gpu/dawn/GrDawnProgramBuilder.cpp
+++ b/src/gpu/dawn/GrDawnProgramBuilder.cpp
@@ -241,14 +241,18 @@
     dawn::DepthStencilStateDescriptor state;
     state.format = depthStencilFormat;
     if (!stencilSettings.isDisabled()) {
-        const GrStencilSettings::Face& front = stencilSettings.front(origin);
-        state.stencilReadMask = front.fTestMask;
-        state.stencilWriteMask = front.fWriteMask;
-        state.stencilFront = to_stencil_state_face(stencilSettings.front(origin));
         if (stencilSettings.isTwoSided()) {
-            state.stencilBack = to_stencil_state_face(stencilSettings.back(origin));
+            auto front = stencilSettings.front(origin);
+            auto back = stencilSettings.front(origin);
+            state.stencilFront = to_stencil_state_face(front);
+            state.stencilBack = to_stencil_state_face(back);
+            state.stencilReadMask = front.fTestMask;
+            state.stencilWriteMask = front.fWriteMask;
         } else {
-            state.stencilBack = state.stencilFront;
+            auto frontAndBack = stencilSettings.frontAndBack();
+            state.stencilBack = state.stencilFront = to_stencil_state_face(frontAndBack);
+            state.stencilReadMask = frontAndBack.fTestMask;
+            state.stencilWriteMask = frontAndBack.fWriteMask;
         }
     }
     return state;