• Home
  • Raw
  • Download

Lines Matching +full:vm +full:- +full:misc

4 * Use of this source code is governed by a BSD-style license that can be
65 #include "misc/cpp/imgui_stdlib.h" // For ImGui support of std::string
68 #include "spirv-tools/libspirv.hpp"
143 static DEFINE_bool(dmsaa, false, "Use internal MSAA to render to non-MSAA surfaces?");
174 static DEFINE_int_2(threads, j, -1,
306 canvas->clear(0xffff11ff); in draw()
327 : fCurrentSlide(-1) in Viewer()
342 // Our UI can only tweak gamma (currently), so start out gamma-only
400 fWindow->setRequestedDisplayParams(displayParams);
401 fDisplay = fWindow->getRequestedDisplayParams();
404 fImGuiLayer.setScaleFactor(fWindow->scaleFactor());
405 fStatsLayer.setDisplayScale((fZoomUI ? 2.0f : 1.0f) * fWindow->scaleFactor());
415 fWindow->pushLayer(this);
416 fWindow->pushLayer(&fStatsLayer);
417 fWindow->pushLayer(&fImGuiLayer);
419 // add key-bindings
421 this->fShowImGuiDebugWindow = !this->fShowImGuiDebugWindow; in __anon681de3df0102()
422 fWindow->inval(); in __anon681de3df0102()
426 this->fShowImGuiDebugWindow = true; in __anon681de3df0202()
427 this->fShowSlidePicker = true; in __anon681de3df0202()
428 fWindow->inval(); in __anon681de3df0202()
432 this->fShowImGuiDebugWindow = true; in __anon681de3df0302()
433 this->fShowSlidePicker = true; in __anon681de3df0302()
434 fWindow->inval(); in __anon681de3df0302()
437 this->fShowImGuiTestWindow = !this->fShowImGuiTestWindow; in __anon681de3df0402()
438 fWindow->inval(); in __anon681de3df0402()
441 this->fShowZoomWindow = !this->fShowZoomWindow; in __anon681de3df0502()
442 fWindow->inval(); in __anon681de3df0502()
445 this->fZoomWindowFixed = !this->fZoomWindowFixed; in __anon681de3df0602()
446 fWindow->inval(); in __anon681de3df0602()
449 DisplayParams params = fWindow->getRequestedDisplayParams(); in __anon681de3df0702()
451 fWindow->setRequestedDisplayParams(params); in __anon681de3df0702()
452 this->updateTitle(); in __anon681de3df0702()
453 fWindow->inval(); in __anon681de3df0702()
456 DisplayParams params = fWindow->getRequestedDisplayParams(); in __anon681de3df0802()
458 fWindow->setRequestedDisplayParams(params); in __anon681de3df0802()
459 this->updateTitle(); in __anon681de3df0802()
460 fWindow->inval(); in __anon681de3df0802()
464 fWindow->inval(); in __anon681de3df0902()
468 fWindow->inval(); in __anon681de3df0a02()
472 this->updateTitle(); in __anon681de3df0b02()
473 fWindow->inval(); in __anon681de3df0b02()
478 this->setColorMode(ColorMode::kColorManaged8888); in __anon681de3df0c02()
481 this->setColorMode(ColorMode::kColorManagedF16); in __anon681de3df0c02()
484 this->setColorMode(ColorMode::kColorManagedF16Norm); in __anon681de3df0c02()
487 this->setColorMode(ColorMode::kLegacy); in __anon681de3df0c02()
492 DisplayParams params = fWindow->getRequestedDisplayParams(); in __anon681de3df0d02()
494 fWindow->setRequestedDisplayParams(params); in __anon681de3df0d02()
495 fWindow->inval(); in __anon681de3df0d02()
498 DisplayParams params = fWindow->getRequestedDisplayParams(); in __anon681de3df0e02()
501 fWindow->setRequestedDisplayParams(params); in __anon681de3df0e02()
502 fWindow->inval(); in __anon681de3df0e02()
505 this->setCurrentSlide(fCurrentSlide < fSlides.count() - 1 ? fCurrentSlide + 1 : 0); in __anon681de3df0f02()
508 this->setCurrentSlide(fCurrentSlide > 0 ? fCurrentSlide - 1 : fSlides.count() - 1); in __anon681de3df1002()
511 this->changeZoomLevel(1.f / 32.f); in __anon681de3df1102()
512 fWindow->inval(); in __anon681de3df1102()
515 this->changeZoomLevel(-1.f / 32.f); in __anon681de3df1202()
516 fWindow->inval(); in __anon681de3df1202()
530 this->setBackend(newBackend); in __anon681de3df1302()
534 fWindow->inval(); in __anon681de3df1402()
538 fWindow->inval(); in __anon681de3df1502()
541 DisplayParams params = fWindow->getRequestedDisplayParams(); in __anon681de3df1602()
567 fWindow->setRequestedDisplayParams(params); in __anon681de3df1602()
568 this->updateTitle(); in __anon681de3df1602()
569 fWindow->inval(); in __anon681de3df1602()
592 this->updateTitle(); in __anon681de3df1702()
593 fWindow->inval(); in __anon681de3df1702()
625 this->updateTitle(); in __anon681de3df1802()
626 fWindow->inval(); in __anon681de3df1802()
629 DisplayParams params = fWindow->getRequestedDisplayParams(); in __anon681de3df1902()
633 fWindow->setRequestedDisplayParams(params); in __anon681de3df1902()
634 this->updateTitle(); in __anon681de3df1902()
635 fWindow->inval(); in __anon681de3df1902()
655 this->updateTitle(); in __anon681de3df1a02()
656 fWindow->inval(); in __anon681de3df1a02()
669 this->updateTitle(); in __anon681de3df1b02()
670 fWindow->inval(); in __anon681de3df1b02()
683 this->updateTitle(); in __anon681de3df1c02()
684 fWindow->inval(); in __anon681de3df1c02()
689 this->updateTitle(); in __anon681de3df1d02()
690 fWindow->inval(); in __anon681de3df1d02()
695 this->updateTitle(); in __anon681de3df1e02()
696 fWindow->inval(); in __anon681de3df1e02()
703 fStatsLayer.setDisplayScale((fZoomUI ? 2.0f : 1.0f) * fWindow->scaleFactor()); in __anon681de3df2002()
704 fWindow->inval(); in __anon681de3df2002()
708 this->updateTitle(); in __anon681de3df2102()
709 fWindow->inval(); in __anon681de3df2102()
713 this->updateTitle(); in __anon681de3df2202()
714 fWindow->inval(); in __anon681de3df2202()
718 this->updateTitle(); in __anon681de3df2302()
719 fWindow->inval(); in __anon681de3df2302()
723 this->initSlides();
725 this->listNames();
736 … fImGuiGamutPaint.setShader(gamutImage->makeShader(SkSamplingOptions(SkFilterMode::kLinear)));
740 fWindow->attach(backend_type_for_window(fBackendType));
741 this->setCurrentSlide(this->startupSlide());
752 { ".mskp", "mskp-dir", FLAGS_mskps, in initSlides()
753 [](const SkString& name, const SkString& path) -> sk_sp<Slide> { in initSlides()
756 { ".skp", "skp-dir", FLAGS_skps, in initSlides()
757 [](const SkString& name, const SkString& path) -> sk_sp<Slide> { in initSlides()
760 { ".jpg", "jpg-dir", FLAGS_jpgs, in initSlides()
761 [](const SkString& name, const SkString& path) -> sk_sp<Slide> { in initSlides()
765 { ".json", "skottie-dir", FLAGS_lotties, in initSlides()
766 [](const SkString& name, const SkString& path) -> sk_sp<Slide> { in initSlides()
771 { ".flr", "skrive-dir", FLAGS_rives, in initSlides()
772 [](const SkString& name, const SkString& path) -> sk_sp<Slide> { in initSlides()
777 { ".svg", "svg-dir", FLAGS_svgs, in initSlides()
778 [](const SkString& name, const SkString& path) -> sk_sp<Slide> { in initSlides()
821 if (bisect && !CommandLineFlags::ShouldSkip(FLAGS_match, bisect->getName().c_str())) { in initSlides()
824 bisect->onChar(*ch); in initSlides()
835 if (!CommandLineFlags::ShouldSkip(FLAGS_match, gm->getName())) { in initSlides()
841 int numGMs = fSlides.count() - firstGM; in initSlides()
843 std::swap(fSlides[firstGM + i], fSlides[fSlides.count() - i - 1]); in initSlides()
849 if (!CommandLineFlags::ShouldSkip(FLAGS_match, slide->getName().c_str())) { in initSlides()
858 if (!CommandLineFlags::ShouldSkip(FLAGS_match, slide->getName().c_str())) { in initSlides()
866 if (!CommandLineFlags::ShouldSkip(FLAGS_match, slide->getName().c_str())) { in initSlides()
899 dirSlides.reset(); // NOLINT(bugprone-use-after-move) in initSlides()
913 slide->gpuTeardown(); in ~Viewer()
916 fWindow->detach(); in ~Viewer()
924 fTitle->append(" {"); in append()
926 fTitle->append(", "); in append()
928 fTitle->append(s); in append()
933 fTitle->append("}"); in done()
944 if (fWindow->sampleCount() < 1) { in updateTitle()
949 title.append(fSlides[fCurrentSlide]->getName()); in updateTitle()
994 "Linear Metrics", "Non-Linear Metrics"); in updateTitle()
1047 int curPrimaries = -1; in updateTitle()
1059 const DisplayParams& params = fWindow->getRequestedDisplayParams(); in updateTitle()
1086 int msaa = fWindow->sampleCount(); in updateTitle()
1092 GpuPathRenderers pr = fWindow->getRequestedDisplayParams().fGrContextOptions.fGpuPathRenderers; in updateTitle()
1103 fWindow->setTitle(title.c_str()); in updateTitle()
1111 if (fSlides[i]->getName().equals(FLAGS_slide[0])) { in startupSlide()
1117 this->listNames(); in startupSlide()
1126 SkDebugf(" %s\n", slide->getName().c_str()); in listNames()
1138 fSlides[fCurrentSlide]->unload(); in setCurrentSlide()
1143 scaleFactor = fWindow->scaleFactor(); in setCurrentSlide()
1145 fSlides[slide]->load(SkIntToScalar(fWindow->width()) / scaleFactor, in setCurrentSlide()
1146 SkIntToScalar(fWindow->height()) / scaleFactor); in setCurrentSlide()
1148 this->setupCurrentSlide(); in setCurrentSlide()
1157 const SkISize slideSize = fSlides[fCurrentSlide]->getDimensions(); in setupCurrentSlide()
1159 const SkRect windowRect = SkRect::MakeIWH(fWindow->width(), fWindow->height()); in setupCurrentSlide()
1162 if (fWindow->scaleContentToFit()) { in setupCurrentSlide()
1170 fGesture.setTransLimit(slideBounds, windowRect, this->computePreTouchMatrix()); in setupCurrentSlide()
1172 this->updateTitle(); in setupCurrentSlide()
1173 this->updateUIState(); in setupCurrentSlide()
1177 fWindow->inval(); in setupCurrentSlide()
1182 #define MIN_ZOOM_LEVEL -8.0f
1187 this->preTouchMatrixChanged(); in changeZoomLevel()
1192 const SkISize slideSize = fSlides[fCurrentSlide]->getDimensions(); in preTouchMatrixChanged()
1194 const SkRect windowRect = SkRect::MakeIWH(fWindow->width(), fWindow->height()); in preTouchMatrixChanged()
1195 fGesture.setTransLimit(slideBounds, windowRect, this->computePreTouchMatrix()); in preTouchMatrixChanged()
1199 SkScalar w = fWindow->width(), h = fWindow->height(); in computePerspectiveMatrix()
1217 zoomScale *= fWindow->scaleFactor(); in computePreTouchMatrix()
1219 m.preTranslate((fOffset.x() - 0.5f) * 2.0f, (fOffset.y() - 0.5f) * 2.0f); in computePreTouchMatrix()
1222 const SkISize slideSize = fSlides[fCurrentSlide]->getDimensions(); in computePreTouchMatrix()
1226 SkMatrix persp = this->computePerspectiveMatrix(); in computePreTouchMatrix()
1236 m.preConcat(this->computePreTouchMatrix()); in computeMatrix()
1247 slide->gpuTeardown(); in setBackend()
1250 fWindow->detach(); in setBackend()
1255 DisplayParams params = fWindow->getRequestedDisplayParams(); in setBackend()
1259 // re-register callbacks in setBackend()
1261 fWindow->pushLayer(this); in setBackend()
1262 fWindow->pushLayer(&fStatsLayer); in setBackend()
1263 fWindow->pushLayer(&fImGuiLayer); in setBackend()
1265 // Don't allow the window to re-attach. If we're in MSAA mode, the params we grabbed above in setBackend()
1266 // will still include our correct sample count. But the re-created fWindow will lose that in setBackend()
1267 // information. On Windows, we need to re-create the window when changing sample count, in setBackend()
1268 // so we'll incorrectly detect that situation, then re-initialize the window in GL mode, in setBackend()
1269 // rendering this tear-down step pointless (and causing the Vulkan window context to fail in setBackend()
1271 fWindow->setRequestedDisplayParams(params, false); in setBackend()
1274 fWindow->attach(backend_type_for_window(fBackendType)); in setBackend()
1279 this->updateTitle(); in setColorMode()
1280 fWindow->inval(); in setColorMode()
1301 bool shouldDraw = this->filterFont(&filteredFont); in filterTextBlob()
1314 bool shouldDraw = this->filterFont(&filteredFont); in filterTextBlob()
1354 return cache->get(); in filterTextBlob()
1359 this->SkPaintFilterCanvas::onDrawTextBlob( in onDrawTextBlob()
1360 this->filterTextBlob(paint, blob, &cache), x, y, paint); in onDrawTextBlob()
1363 if (fFontOverrides->fTypeface) { in filterFont()
1364 font->writable()->setTypeface(fFont->refTypeface()); in filterFont()
1366 if (fFontOverrides->fSize) { in filterFont()
1367 font->writable()->setSize(fFont->getSize()); in filterFont()
1369 if (fFontOverrides->fScaleX) { in filterFont()
1370 font->writable()->setScaleX(fFont->getScaleX()); in filterFont()
1372 if (fFontOverrides->fSkewX) { in filterFont()
1373 font->writable()->setSkewX(fFont->getSkewX()); in filterFont()
1375 if (fFontOverrides->fHinting) { in filterFont()
1376 font->writable()->setHinting(fFont->getHinting()); in filterFont()
1378 if (fFontOverrides->fEdging) { in filterFont()
1379 font->writable()->setEdging(fFont->getEdging()); in filterFont()
1381 if (fFontOverrides->fSubpixel) { in filterFont()
1382 font->writable()->setSubpixel(fFont->isSubpixel()); in filterFont()
1384 if (fFontOverrides->fForceAutoHinting) { in filterFont()
1385 font->writable()->setForceAutoHinting(fFont->isForceAutoHinting()); in filterFont()
1387 if (fFontOverrides->fEmbeddedBitmaps) { in filterFont()
1388 font->writable()->setEmbeddedBitmaps(fFont->isEmbeddedBitmaps()); in filterFont()
1390 if (fFontOverrides->fLinearMetrics) { in filterFont()
1391 font->writable()->setLinearMetrics(fFont->isLinearMetrics()); in filterFont()
1393 if (fFontOverrides->fEmbolden) { in filterFont()
1394 font->writable()->setEmbolden(fFont->isEmbolden()); in filterFont()
1396 if (fFontOverrides->fBaselineSnap) { in filterFont()
1397 font->writable()->setBaselineSnap(fFont->isBaselineSnap()); in filterFont()
1404 if (fPaintOverrides->fPathEffect) { in onFilter()
1405 paint.setPathEffect(fPaint->refPathEffect()); in onFilter()
1407 if (fPaintOverrides->fShader) { in onFilter()
1408 paint.setShader(fPaint->refShader()); in onFilter()
1410 if (fPaintOverrides->fMaskFilter) { in onFilter()
1411 paint.setMaskFilter(fPaint->refMaskFilter()); in onFilter()
1413 if (fPaintOverrides->fColorFilter) { in onFilter()
1414 paint.setColorFilter(fPaint->refColorFilter()); in onFilter()
1416 if (fPaintOverrides->fImageFilter) { in onFilter()
1417 paint.setImageFilter(fPaint->refImageFilter()); in onFilter()
1419 if (fPaintOverrides->fColor) { in onFilter()
1420 paint.setColor4f(fPaint->getColor4f()); in onFilter()
1422 if (fPaintOverrides->fStrokeWidth) { in onFilter()
1423 paint.setStrokeWidth(fPaint->getStrokeWidth()); in onFilter()
1425 if (fPaintOverrides->fMiterLimit) { in onFilter()
1426 paint.setStrokeMiter(fPaint->getStrokeMiter()); in onFilter()
1428 if (fPaintOverrides->fBlendMode) { in onFilter()
1429 paint.setBlendMode(fPaint->getBlendMode_or(SkBlendMode::kSrc)); in onFilter()
1431 if (fPaintOverrides->fAntiAlias) { in onFilter()
1432 paint.setAntiAlias(fPaint->isAntiAlias()); in onFilter()
1434 if (fPaintOverrides->fDither) { in onFilter()
1435 paint.setDither(fPaint->isDither()); in onFilter()
1437 if (fPaintOverrides->fForceRuntimeBlend) { in onFilter()
1442 if (fPaintOverrides->fCapType) { in onFilter()
1443 paint.setStrokeCap(fPaint->getStrokeCap()); in onFilter()
1445 if (fPaintOverrides->fJoinType) { in onFilter()
1446 paint.setStrokeJoin(fPaint->getStrokeJoin()); in onFilter()
1448 if (fPaintOverrides->fStyle) { in onFilter()
1449 paint.setStyle(fPaint->getStyle()); in onFilter()
1464 SkAutoCanvasRestore autorestore(surface->getCanvas(), false); in drawSlide()
1468 SkCanvas* slideCanvas = surface->getCanvas(); in drawSlide()
1482 SkRect::Make(fSlides[fCurrentSlide]->getDimensions())); in drawSlide()
1483 fSlides[fCurrentSlide]->draw(recorderCanvas); in drawSlide()
1486 picture->serialize(&stream); in drawSlide()
1506 SkSurfaceProps props(fWindow->getRequestedDisplayParams().fSurfaceProps); in drawSlide()
1507 slideCanvas->getProps(&props); in drawSlide()
1510 return Window::kRaster_BackendType == this->fBackendType in drawSlide()
1512 : slideCanvas->makeSurface(info, &props); in drawSlide()
1527 offscreenSurface = make_surface(fWindow->width(), fWindow->height()); in drawSlide()
1529 slideCanvas = offscreenSurface->getCanvas(); in drawSlide()
1537 SkRect::Make(fSlides[fCurrentSlide]->getDimensions())); in drawSlide()
1540 int count = slideCanvas->save(); in drawSlide()
1541 slideCanvas->clear(SK_ColorWHITE); in drawSlide()
1545 int tileW = SkScalarCeilToInt(fWindow->width() * fTileScale.width()); in drawSlide()
1546 int tileH = SkScalarCeilToInt(fWindow->height() * fTileScale.height()); in drawSlide()
1547 for (int y = 0; y < fWindow->height(); y += tileH) { in drawSlide()
1548 for (int x = 0; x < fWindow->width(); x += tileW) { in drawSlide()
1550 slideCanvas->clipRect(SkRect::MakeXYWH(x, y, tileW, tileH)); in drawSlide()
1551 fSlides[fCurrentSlide]->draw(slideCanvas); in drawSlide()
1560 for (int y = 0; y < fWindow->height(); y += tileH) { in drawSlide()
1561 for (int x = 0; x < fWindow->width(); x += tileW) { in drawSlide()
1562 slideCanvas->drawRect(SkRect::MakeXYWH(x, y, tileW, tileH), border); in drawSlide()
1567 slideCanvas->concat(this->computeMatrix()); in drawSlide()
1569 slideCanvas->clipRect(SkRect::MakeWH(fWindow->width(), fWindow->height())); in drawSlide()
1575 fSlides[fCurrentSlide]->draw(&filterCanvas); in drawSlide()
1577 fSlides[fCurrentSlide]->draw(slideCanvas); in drawSlide()
1581 slideCanvas->restoreToCount(count); in drawSlide()
1585 auto data = picture->serialize(); in drawSlide()
1587 slideCanvas->drawPicture(SkPicture::MakeFromData(data.get())); in drawSlide()
1592 slideSurface->flushAndSubmit(); in drawSlide()
1597 fLastImage = offscreenSurface->makeImageSnapshot(); in drawSlide()
1599 SkCanvas* canvas = surface->getCanvas(); in drawSlide()
1603 int prePerspectiveCount = canvas->save(); in drawSlide()
1606 canvas->clear(SK_ColorWHITE); in drawSlide()
1607 canvas->concat(this->computePerspectiveMatrix()); in drawSlide()
1609 canvas->drawImage(fLastImage, 0, 0, sampling, &paint); in drawSlide()
1610 canvas->restoreToCount(prePerspectiveCount); in drawSlide()
1614 SkCanvas* canvas = surface->getCanvas(); in drawSlide()
1616 canvas->concat(this->computeMatrix()); in drawSlide()
1617 SkRect r = SkRect::Make(fSlides[fCurrentSlide]->getDimensions()); in drawSlide()
1620 canvas->drawRect(r, paint); in drawSlide()
1625 this->setupCurrentSlide(); in onBackendCreated()
1626 fWindow->show(); in onBackendCreated()
1630 this->drawSlide(surface); in onPaint()
1632 fCommands.drawHelp(surface->getCanvas()); in onPaint()
1634 this->drawImGui(); in onPaint()
1638 if (auto direct = fWindow->directContext()) { in onPaint()
1640 direct->performDeferredCleanup(std::chrono::seconds(10)); in onPaint()
1648 scaleFactor = fWindow->scaleFactor(); in onResize()
1650 fSlides[fCurrentSlide]->resize(width / scaleFactor, height / scaleFactor); in onResize()
1655 const auto m = this->computeMatrix(); in mapEvent()
1668 const auto slidePt = this->mapEvent(x, y); in onTouch()
1669 … if (fSlides[fCurrentSlide]->onMouse(slidePt.x(), slidePt.y(), state, skui::ModifierKey::kNone)) { in onTouch()
1670 fWindow->inval(); in onTouch()
1685 this->setCurrentSlide(fCurrentSlide < fSlides.count() - 1 ? in onTouch()
1688 this->setCurrentSlide(fCurrentSlide > 0 ? in onTouch()
1689 fCurrentSlide - 1 : fSlides.count() - 1); in onTouch()
1712 fWindow->inval(); in onTouch()
1721 const auto slidePt = this->mapEvent(x, y); in onMouse()
1722 if (fSlides[fCurrentSlide]->onMouse(slidePt.x(), slidePt.y(), state, modifiers)) { in onMouse()
1723 fWindow->inval(); in onMouse()
1748 fWindow->inval(); in onMouse()
1755 this->setCurrentSlide(fCurrentSlide > 0 ? fCurrentSlide - 1 : fSlides.count() - 1); in onFling()
1758 this->setCurrentSlide(fCurrentSlide < fSlides.count() - 1 ? fCurrentSlide + 1 : 0); in onFling()
1791 // Simplifes re-mapping math, clipping behavior, and increases resolution in the useful area. in ImGui_Primaries()
1792 // Magic numbers are pixel locations of the origin and upper-right corner. in ImGui_Primaries()
1793 dc.fDrawList->AddImage(gamutPaint, dc.fPos, in ImGui_Primaries()
1797 dc.dragPoint((SkPoint*)(&primaries->fRX), true, 0xFF000040); in ImGui_Primaries()
1798 dc.dragPoint((SkPoint*)(&primaries->fGX), true, 0xFF004000); in ImGui_Primaries()
1799 dc.dragPoint((SkPoint*)(&primaries->fBX), true, 0xFF400000); in ImGui_Primaries()
1800 dc.dragPoint((SkPoint*)(&primaries->fWX), true); in ImGui_Primaries()
1801 dc.fDrawList->AddPolyline(dc.fScreenPoints.begin(), 3, 0xFFFFFFFF, true, 1.5f); in ImGui_Primaries()
1819 dc.fDrawList->AddLine(dc.fScreenPoints[0], dc.fScreenPoints[1], 0xFFFFFFFF); in ImGui_DragQuad()
1820 dc.fDrawList->AddLine(dc.fScreenPoints[1], dc.fScreenPoints[3], 0xFFFFFFFF); in ImGui_DragQuad()
1821 dc.fDrawList->AddLine(dc.fScreenPoints[3], dc.fScreenPoints[2], 0xFFFFFFFF); in ImGui_DragQuad()
1822 dc.fDrawList->AddLine(dc.fScreenPoints[2], dc.fScreenPoints[0], 0xFFFFFFFF); in ImGui_DragQuad()
1833 // Metal fragment shaders need a lot of non-trivial boilerplate that we don't want to recompute in build_metal_highlight_shader()
1841 replacementShader.insert(pos, "_out->sk_FragColor = float4(1.0, 0.0, 1.0, 0.5); "); in build_metal_highlight_shader()
1860 // All VM blitters start with two arguments (uniforms, dst surface) in build_skvm_highlight_program()
1889 DisplayParams params = fWindow->getRequestedDisplayParams(); in drawImGui()
1890 bool displayParamsChanged = false; // heavy-weight, might recreate entire context in drawImGui()
1892 auto ctx = fWindow->directContext(); in drawImGui()
1928 this->setBackend(static_cast<sk_app::Window::BackendType>(newBackend)); in drawImGui()
1944 int sampleCount = fWindow->sampleCount(); in drawImGui()
1946 ctx->maxSurfaceSampleCountForColorType(kRGBA_8888_SkColorType) : in drawImGui()
1985 SkPixelGeometry pixelGeometry = SkTo<SkPixelGeometry>(pixelGeometryIdx - 1); in drawImGui()
2020 if (fWindow->sampleCount() > 1 || FLAGS_dmsaa) { in drawImGui()
2021 const auto* caps = ctx->priv().caps(); in drawImGui()
2030 if (1 == fWindow->sampleCount()) { in drawImGui()
2049 this->preTouchMatrixChanged(); in drawImGui()
2050 this->onResize(fWindow->width(), fWindow->height()); in drawImGui()
2059 this->preTouchMatrixChanged(); in drawImGui()
2063 if (ImGui::SliderFloat("Rotate", &deg, -30, 360, "%.3f deg")) { in drawImGui()
2065 this->preTouchMatrixChanged(); in drawImGui()
2070 this->preTouchMatrixChanged(); in drawImGui()
2074 this->preTouchMatrixChanged(); in drawImGui()
2081 this->preTouchMatrixChanged(); in drawImGui()
2085 this->preTouchMatrixChanged(); in drawImGui()
2095 if (ImGui::Combo("Anti-Alias", &aliasIdx, in drawImGui()
2105 … fPaintOverrides.fAntiAliasState = SkTo<SkPaintFields::AntiAliasState>(aliasIdx-1); in drawImGui()
2160 fPaint.setStyle(SkTo<SkPaint::Style>(styleIdx - 1)); in drawImGui()
2197 fPaint.setStrokeCap(SkTo<SkPaint::Cap>(capIdx - 1)); in drawImGui()
2214 fPaint.setStrokeJoin(SkTo<SkPaint::Join>(joinIdx - 1)); in drawImGui()
2233 fFont.setHinting(SkTo<SkFontHinting>(hintingIdx - 1)); in drawImGui()
2284 fontFlag("Force Auto-Hinting", in drawImGui()
2285 "Default\0No Force Auto-Hinting\0Force Auto-Hinting\0\0", in drawImGui()
2300 fFont.setEdging(SkTo<SkFont::Edging>(edgingIdx-1)); in drawImGui()
2309 0.001f, -10.0f, 300.0f, "%.6f", 2.0f); in drawImGui()
2342 if (fSlides[fCurrentSlide]->onGetControls(&controls)) { in drawImGui()
2365 fSlides[fCurrentSlide]->onSetControls(controls); in drawImGui()
2388 const char* slideName = fSlides[i]->getName().c_str(); in drawImGui()
2400 this->setCurrentSlide(filteredSlideIndices[filteredIndex]); in drawImGui()
2418 this->setColorMode(newMode); in drawImGui()
2477 // To re-load shaders from the currently active programs, we flush all in drawImGui()
2486 hash.write(key->bytes(), key->size()); in drawImGui()
2493 SkReadBuffer reader(data->data(), data->size()); in drawImGui()
2570 this->dumpShadersToResources(); in drawImGui()
2588 int lines = std::count(str->begin(), str->end(), '\n') + 2; in drawImGui()
2589 ImVec2 boxSize(-1.0f, ImGui::GetTextLineHeight() * std::min(lines, 30)); in drawImGui()
2605 ctx->priv().getGpu()->resetShaderCacheForTesting(); in drawImGui()
2609 // We don't support updating SPIRV shaders. We could re-assemble them (with edits), in drawImGui()
2616 ctx->priv().getGpu()->resetShaderCacheForTesting(); in drawImGui()
2630 *ctx->priv().caps()->shaderCaps()); in drawImGui()
2656 cache->reset(); in drawImGui()
2669 cache->foreach(restoreHoveredProgram); in drawImGui()
2681 int lines = std::count(str->begin(), str->end(), '\n') + 2; in drawImGui()
2682 ImVec2 boxSize(-1.0f, ImGui::GetTextLineHeight() * std::min(lines, 30)); in drawImGui()
2687 program->dump(&stream); in drawImGui()
2689 std::string dumpString((const char*)dumpData->data(), dumpData->size()); in drawImGui()
2690 stringBox("##VM", &dumpString); in drawImGui()
2695 program->disassemble(&stream); in drawImGui()
2699 std::string((const char*)asmData->data(), asmData->size())); in drawImGui()
2709 static_cast<SkColorType>(key->colorType), program->nargs()); in drawImGui()
2716 cache->foreach(showVMEntry); in drawImGui()
2724 fWindow->setRequestedDisplayParams(params); in drawImGui()
2726 fWindow->inval(); in drawImGui()
2727 this->updateTitle(); in drawImGui()
2771 auto dContext = fWindow->directContext(); in drawImGui()
2772 if (fLastImage->readPixels(dContext, info, &pixel, info.minRowBytes(), xInt, yInt)) { in drawImGui()
2783 c->scale(zoomFactor, zoomFactor); in drawImGui()
2784 c->translate(avail.x * 0.5f / zoomFactor - x - 0.5f, in drawImGui()
2785 avail.y * 0.5f / zoomFactor - y - 0.5f); in drawImGui()
2786 c->drawImage(lastImage, 0, 0); in drawImGui()
2790 c->drawRect(SkRect::MakeXYWH(x, y, 1, 1), outline); in drawImGui()
2808 return std::tie(a->fShader[kFragment_GrShaderType], a->fShader[kVertex_GrShaderType]) < in dumpShadersToResources()
2809 std::tie(b->fShader[kFragment_GrShaderType], b->fShader[kVertex_GrShaderType]); in dumpShadersToResources()
2815 fSlides[fCurrentSlide]->getName().c_str()); in dumpShadersToResources()
2826 const SkSL::String& vertText = entry->fShader[kVertex_GrShaderType]; in dumpShadersToResources()
2836 const SkSL::String& fragText = entry->fShader[kFragment_GrShaderType]; in dumpShadersToResources()
2857 bool animateWantsInval = fSlides[fCurrentSlide]->animate(fAnimTimer.nanos()); in onIdle()
2867 fWindow->inval(); in onIdle()
2893 if (fWindow->sampleCount() < 1) { in updateUIState()
2902 WriteStateObject(writer, kSlideStateName, fSlides[fCurrentSlide]->getName().c_str(), in updateUIState()
2905 writer.appendString(slide->getName().c_str()); in updateUIState()
2918 const auto countString = SkStringPrintf("%d", fWindow->sampleCount()); in updateUIState()
2933 GpuPathRenderers pr = fWindow->getRequestedDisplayParams().fGrContextOptions.fGpuPathRenderers; in updateUIState()
2936 auto ctx = fWindow->directContext(); in updateUIState()
2942 if (fWindow->sampleCount() > 1 || FLAGS_dmsaa) { in updateUIState()
2943 const auto* caps = ctx->priv().caps(); in updateUIState()
2954 if (1 == fWindow->sampleCount()) { in updateUIState()
2977 const SkString cstring(static_cast<const char*>(data->data()), data->size()); in updateUIState()
2979 fWindow->setUIState(cstring.c_str()); in updateUIState()
2989 if (fSlides[i]->getName().equals(stateValue)) { in onUIStateChanged()
2990 this->setCurrentSlide(i); in onUIStateChanged()
3002 slide->gpuTeardown(); in onUIStateChanged()
3004 fWindow->detach(); in onUIStateChanged()
3005 fWindow->attach(backend_type_for_window(fBackendType)); in onUIStateChanged()
3011 DisplayParams params = fWindow->getRequestedDisplayParams(); in onUIStateChanged()
3015 fWindow->setRequestedDisplayParams(params); in onUIStateChanged()
3016 fWindow->inval(); in onUIStateChanged()
3017 this->updateTitle(); in onUIStateChanged()
3018 this->updateUIState(); in onUIStateChanged()
3021 DisplayParams params = fWindow->getRequestedDisplayParams(); in onUIStateChanged()
3026 fWindow->setRequestedDisplayParams(params); in onUIStateChanged()
3027 fWindow->inval(); in onUIStateChanged()
3028 this->updateTitle(); in onUIStateChanged()
3029 this->updateUIState(); in onUIStateChanged()
3037 this->updateUIState(); // This is still needed to reset the value to kSoftkeyHint in onUIStateChanged()
3053 if (fSlides[fCurrentSlide]->onChar(c)) { in onChar()
3054 fWindow->inval(); in onChar()