| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "Viewer.h" | 8 #include "Viewer.h" |
| 9 | 9 |
| 10 #include "GMSlide.h" | 10 #include "GMSlide.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 "[~][^]substring[$] [...] of bench name to run.\n" | 53 "[~][^]substring[$] [...] of bench name to run.\n" |
| 54 "Multiple matches may be separated by spaces.\n" | 54 "Multiple matches may be separated by spaces.\n" |
| 55 "~ causes a matching bench to always be skipped\n" | 55 "~ causes a matching bench to always be skipped\n" |
| 56 "^ requires the start of the bench to match\n" | 56 "^ requires the start of the bench to match\n" |
| 57 "$ requires the end of the bench to match\n" | 57 "$ requires the end of the bench to match\n" |
| 58 "^ and $ requires an exact match\n" | 58 "^ and $ requires an exact match\n" |
| 59 "If a bench does not match any list entry,\n" | 59 "If a bench does not match any list entry,\n" |
| 60 "it is skipped unless some list entry starts with ~"); | 60 "it is skipped unless some list entry starts with ~"); |
| 61 | 61 |
| 62 #ifdef SK_VULKAN | 62 #ifdef SK_VULKAN |
| 63 # define BACKENDS_STR "\"sw\", \"gl\", and \"vulkan\"" | 63 # define BACKENDS_STR "\"sw\", \"gl\", and \"vk\"" |
| 64 #else | 64 #else |
| 65 # define BACKENDS_STR "\"sw\" and \"gl\"" | 65 # define BACKENDS_STR "\"sw\" and \"gl\"" |
| 66 #endif | 66 #endif |
| 67 | 67 |
| 68 #ifdef SK_BUILD_FOR_ANDROID | 68 #ifdef SK_BUILD_FOR_ANDROID |
| 69 DEFINE_string(skps, "/data/local/tmp/skia", "Directory to read skps from."); | 69 DEFINE_string(skps, "/data/local/tmp/skia", "Directory to read skps from."); |
| 70 DEFINE_string(jpgs, "/data/local/tmp/skia", "Directory to read jpgs from."); | 70 DEFINE_string(jpgs, "/data/local/tmp/skia", "Directory to read jpgs from."); |
| 71 #else | 71 #else |
| 72 DEFINE_string(skps, "skps", "Directory to read skps from."); | 72 DEFINE_string(skps, "skps", "Directory to read skps from."); |
| 73 DEFINE_string(jpgs, "jpgs", "Directory to read jpgs from."); | 73 DEFINE_string(jpgs, "jpgs", "Directory to read jpgs from."); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 this->setupCurrentSlide(previousSlide); | 173 this->setupCurrentSlide(previousSlide); |
| 174 }); | 174 }); |
| 175 fCommands.addCommand(Window::Key::kUp, "Up", "Transform", "Zoom in", [this](
) { | 175 fCommands.addCommand(Window::Key::kUp, "Up", "Transform", "Zoom in", [this](
) { |
| 176 this->changeZoomLevel(1.f / 32.f); | 176 this->changeZoomLevel(1.f / 32.f); |
| 177 fWindow->inval(); | 177 fWindow->inval(); |
| 178 }); | 178 }); |
| 179 fCommands.addCommand(Window::Key::kDown, "Down", "Transform", "Zoom out", [t
his]() { | 179 fCommands.addCommand(Window::Key::kDown, "Down", "Transform", "Zoom out", [t
his]() { |
| 180 this->changeZoomLevel(-1.f / 32.f); | 180 this->changeZoomLevel(-1.f / 32.f); |
| 181 fWindow->inval(); | 181 fWindow->inval(); |
| 182 }); | 182 }); |
| 183 #if 0 // this doesn't seem to work on any platform right now | 183 #ifdef SK_BUILD_FOR_WIN |
| 184 #ifndef SK_BUILD_FOR_ANDROID | |
| 185 fCommands.addCommand('d', "Modes", "Change rendering backend", [this]() { | 184 fCommands.addCommand('d', "Modes", "Change rendering backend", [this]() { |
| 185 if (sk_app::Window::kRaster_BackendType == fBackendType) { |
| 186 fBackendType = sk_app::Window::kNativeGL_BackendType; |
| 187 #ifdef SK_VULKAN |
| 188 } else if (sk_app::Window::kNativeGL_BackendType == fBackendType) { |
| 189 fBackendType = sk_app::Window::kVulkan_BackendType; |
| 190 #endif |
| 191 } else { |
| 192 fBackendType = sk_app::Window::kRaster_BackendType; |
| 193 } |
| 194 |
| 186 fWindow->detach(); | 195 fWindow->detach(); |
| 187 | 196 |
| 197 #ifdef SK_VULKAN |
| 198 // Switching from OpenGL to Vulkan in the same window is problematic at
this point, |
| 199 // so we just delete the window and recreate it. |
| 200 // On Windows, only tearing down the window when going from OpenGL to Vu
lkan works fine. |
| 201 // On Linux, we may need to tear down the window for the Vulkan to OpenG
L case as well. |
| 188 if (sk_app::Window::kVulkan_BackendType == fBackendType) { | 202 if (sk_app::Window::kVulkan_BackendType == fBackendType) { |
| 189 fBackendType = sk_app::Window::kNativeGL_BackendType; | 203 delete fWindow; |
| 190 } | 204 fWindow = Window::CreateNativeWindow(nullptr); |
| 191 // TODO: get Vulkan -> OpenGL working on Windows without swapchain creat
ion failure | |
| 192 //else if (sk_app::Window::kNativeGL_BackendType == fBackendType) { | |
| 193 // fBackendType = sk_app::Window::kVulkan_BackendType; | |
| 194 //} | |
| 195 | 205 |
| 206 // re-register callbacks |
| 207 fCommands.attach(fWindow); |
| 208 fWindow->registerPaintFunc(on_paint_handler, this); |
| 209 fWindow->registerTouchFunc(on_touch_handler, this); |
| 210 fWindow->registerUIStateChangedFunc(on_ui_state_changed_handler, thi
s); |
| 211 } |
| 212 #endif |
| 196 fWindow->attach(fBackendType, DisplayParams()); | 213 fWindow->attach(fBackendType, DisplayParams()); |
| 214 |
| 197 this->updateTitle(); | 215 this->updateTitle(); |
| 198 fWindow->inval(); | 216 fWindow->inval(); |
| 217 fWindow->show(); |
| 199 }); | 218 }); |
| 200 #endif | 219 #endif |
| 201 #endif | |
| 202 | 220 |
| 203 // set up slides | 221 // set up slides |
| 204 this->initSlides(); | 222 this->initSlides(); |
| 205 | 223 |
| 206 fAnimTimer.run(); | 224 fAnimTimer.run(); |
| 207 | 225 |
| 208 // set up first frame | 226 // set up first frame |
| 209 fCurrentSlide = 0; | 227 fCurrentSlide = 0; |
| 210 setupCurrentSlide(-1); | 228 setupCurrentSlide(-1); |
| 211 | 229 |
| (...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 updateUIState(); | 646 updateUIState(); |
| 629 } | 647 } |
| 630 } else if (stateName.equals(kRefreshStateName)) { | 648 } else if (stateName.equals(kRefreshStateName)) { |
| 631 // This state is actually NOT in the UI state. | 649 // This state is actually NOT in the UI state. |
| 632 // We use this to allow Android to quickly set bool fRefresh. | 650 // We use this to allow Android to quickly set bool fRefresh. |
| 633 fRefresh = stateValue.equals(kON); | 651 fRefresh = stateValue.equals(kON); |
| 634 } else { | 652 } else { |
| 635 SkDebugf("Unknown stateName: %s", stateName.c_str()); | 653 SkDebugf("Unknown stateName: %s", stateName.c_str()); |
| 636 } | 654 } |
| 637 } | 655 } |
| OLD | NEW |