Reland "Remove use of legacy display globals."

This is a reland of c1916c34febe0c6f9805b5d9fc18349ec8b74008

As it turns out, benches are not always given a canvas.

Original change's description:
> Remove use of legacy display globals.
>
> In the ongoing effort to remove the display globals from Skia, allow
> their use only if SK_LEGACY_SURFACE_PROPS is defined. Do not define this
> in a normal Skia build and remove all use from Skia code.
>
> Change-Id: I9ff550f5db246b9024aac687a1bc01321f1be4c8
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/319343
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Ben Wagner <bungeman@google.com>

Change-Id: I61a2ac058fafc99653e3304876cf4b97350dac8b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/322490
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp
index daafba4..61c68a0 100644
--- a/tools/viewer/Viewer.cpp
+++ b/tools/viewer/Viewer.cpp
@@ -369,6 +369,7 @@
     displayParams.fGrContextOptions.fShaderErrorHandler = &gShaderErrorHandler;
     displayParams.fGrContextOptions.fSuppressPrints = true;
     fWindow->setRequestedDisplayParams(displayParams);
+    fDisplay = fWindow->getRequestedDisplayParams();
     fRefresh = FLAGS_redraw;
 
     // Configure timers
@@ -493,8 +494,9 @@
     fCommands.addCommand('G', "Modes", "Geometry", [this]() {
         DisplayParams params = fWindow->getRequestedDisplayParams();
         uint32_t flags = params.fSurfaceProps.flags();
-        if (!fPixelGeometryOverrides) {
-            fPixelGeometryOverrides = true;
+        SkPixelGeometry defaultPixelGeometry = fDisplay.fSurfaceProps.pixelGeometry();
+        if (!fDisplayOverrides.fSurfaceProps.fPixelGeometry) {
+            fDisplayOverrides.fSurfaceProps.fPixelGeometry = true;
             params.fSurfaceProps = SkSurfaceProps(flags, kUnknown_SkPixelGeometry);
         } else {
             switch (params.fSurfaceProps.pixelGeometry()) {
@@ -511,8 +513,8 @@
                     params.fSurfaceProps = SkSurfaceProps(flags, kBGR_V_SkPixelGeometry);
                     break;
                 case kBGR_V_SkPixelGeometry:
-                    params.fSurfaceProps = SkSurfaceProps(flags, SkSurfaceProps::kLegacyFontHost_InitType);
-                    fPixelGeometryOverrides = false;
+                    params.fSurfaceProps = SkSurfaceProps(flags, defaultPixelGeometry);
+                    fDisplayOverrides.fSurfaceProps.fPixelGeometry = false;
                     break;
             }
         }
@@ -1022,7 +1024,7 @@
     }
 
     const DisplayParams& params = fWindow->getRequestedDisplayParams();
-    if (fPixelGeometryOverrides) {
+    if (fDisplayOverrides.fSurfaceProps.fPixelGeometry) {
         switch (params.fSurfaceProps.pixelGeometry()) {
             case kUnknown_SkPixelGeometry:
                 title.append( " Flat");
@@ -1410,7 +1412,7 @@
     }
 
     auto make_surface = [=](int w, int h) {
-        SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
+        SkSurfaceProps props(fWindow->getRequestedDisplayParams().fSurfaceProps);
         slideCanvas->getProps(&props);
 
         SkImageInfo info = SkImageInfo::Make(w, h, colorType, kPremul_SkAlphaType, colorSpace);
@@ -1828,7 +1830,7 @@
                 }
 
                 int pixelGeometryIdx = 0;
-                if (fPixelGeometryOverrides) {
+                if (fDisplayOverrides.fSurfaceProps.fPixelGeometry) {
                     pixelGeometryIdx = params.fSurfaceProps.pixelGeometry() + 1;
                 }
                 if (ImGui::Combo("Pixel Geometry", &pixelGeometryIdx,
@@ -1836,10 +1838,11 @@
                 {
                     uint32_t flags = params.fSurfaceProps.flags();
                     if (pixelGeometryIdx == 0) {
-                        fPixelGeometryOverrides = false;
-                        params.fSurfaceProps = SkSurfaceProps(flags, SkSurfaceProps::kLegacyFontHost_InitType);
+                        fDisplayOverrides.fSurfaceProps.fPixelGeometry = false;
+                        SkPixelGeometry pixelGeometry = fDisplay.fSurfaceProps.pixelGeometry();
+                        params.fSurfaceProps = SkSurfaceProps(flags, pixelGeometry);
                     } else {
-                        fPixelGeometryOverrides = true;
+                        fDisplayOverrides.fSurfaceProps.fPixelGeometry = true;
                         SkPixelGeometry pixelGeometry = SkTo<SkPixelGeometry>(pixelGeometryIdx - 1);
                         params.fSurfaceProps = SkSurfaceProps(flags, pixelGeometry);
                     }