├── .github
└── FUNDING.yml
├── .gitignore
├── .travis.yml
├── CMakeLists.txt
├── CMakeSettings.json
├── LICENSE
├── README.md
├── appveyor.yml
├── gui
├── AutoEmbedLibs
│ ├── ICSharpCode.AvalonEdit.dll
│ ├── SharpDX.D3DCompiler.dll
│ ├── SharpDX.DXGI.dll
│ ├── SharpDX.Direct2D1.dll
│ ├── SharpDX.Direct3D11.dll
│ ├── SharpDX.dll
│ └── System.Windows.Interactivity.dll
├── CMakeLists.txt
├── FodyWeavers.xml
├── FodyWeavers.xsd
├── InteractiveDataDisplay.WPF
│ ├── Axes
│ │ ├── Axis.cs
│ │ ├── AxisGrid.cs
│ │ ├── AxisOrientation.cs
│ │ ├── ILabelProvider.cs
│ │ ├── LabelProvider.cs
│ │ ├── MinorTicksProvider.cs
│ │ ├── PlotAxis.cs
│ │ ├── RoundHelper.cs
│ │ └── TicksProvider.cs
│ ├── Chart.cs
│ ├── Common
│ │ ├── ArrayHelper.cs
│ │ ├── DataRect.cs
│ │ ├── IPalette.cs
│ │ ├── MathHelper.cs
│ │ ├── Palette.cs
│ │ └── Range.cs
│ ├── Figure.cs
│ ├── InteractiveDataDisplay.WPF.csproj
│ ├── Legend
│ │ ├── CountToVisibilityConverter.cs
│ │ ├── DefaultTemplates.xaml
│ │ ├── Legend.cs
│ │ ├── LegendItemsPanel.cs
│ │ └── SizeLegendControl.cs
│ ├── Navigation
│ │ ├── KeyboardNavigation.cs
│ │ └── MouseNavigation.cs
│ ├── Palette
│ │ ├── Palette.Converters.cs
│ │ └── PaletteControl.cs
│ ├── PlotBase.cs
│ ├── PlotCompositionChange.cs
│ ├── Plots
│ │ ├── Base
│ │ │ ├── BackgroundBitmapRenderer.cs
│ │ │ └── Plot.cs
│ │ ├── BingMaps
│ │ │ └── BingMapsChart.cs
│ │ ├── Heatmap
│ │ │ ├── HeatmapBuilder.cs
│ │ │ ├── HeatmapGraph.cs
│ │ │ └── HeatmapTooltipLayer.cs
│ │ ├── Line
│ │ │ └── LineGraph.cs
│ │ └── Markers
│ │ │ ├── CartesianMarkerGraph.cs
│ │ │ ├── DataSeries.cs
│ │ │ ├── DynamicMarkerViewModel.cs
│ │ │ ├── GenericDataSeries.cs
│ │ │ ├── MarkerGraph.Converters.cs
│ │ │ ├── MarkerGraph.cs
│ │ │ ├── MarkerGraphsWithTemplates.cs
│ │ │ └── MarkerTemplates.xaml
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Themes
│ │ └── Generic.xaml
│ ├── Transforms
│ │ └── DataTransforms.cs
│ └── VerticalContentControl.cs
├── Optick
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── AppBootStrapper.cs
│ ├── Controls
│ │ ├── AttachmentViewControl.xaml
│ │ ├── AttachmentViewControl.xaml.cs
│ │ ├── CaptureStats.xaml
│ │ ├── CaptureStats.xaml.cs
│ │ ├── CaptureThumbnail.xaml
│ │ ├── CaptureThumbnail.xaml.cs
│ │ ├── EditStorageListDialog.xaml
│ │ ├── EditStorageListDialog.xaml.cs
│ │ ├── EditTaskTrackerListDialog.xaml
│ │ ├── EditTaskTrackerListDialog.xaml.cs
│ │ ├── FileHistory.xaml
│ │ ├── FileHistory.xaml.cs
│ │ ├── FrameCapture.xaml
│ │ ├── FrameCapture.xaml.cs
│ │ ├── FunctionSearch.xaml
│ │ ├── FunctionSearch.xaml.cs
│ │ ├── RoutedEvents.cs
│ │ ├── Settings.cs
│ │ ├── SettingsControl.xaml
│ │ ├── SettingsControl.xaml.cs
│ │ ├── SharedSettings.cs
│ │ ├── TagsControl.xaml
│ │ └── TagsControl.xaml.cs
│ ├── FodyWeavers.xml
│ ├── FodyWeavers.xsd
│ ├── Frames
│ │ ├── FrameDataTable.xaml
│ │ ├── FrameDataTable.xaml.cs
│ │ ├── FrameInfo.xaml
│ │ ├── FrameInfo.xaml.cs
│ │ ├── SourceViewControl.xaml
│ │ └── SourceViewControl.xaml.cs
│ ├── Optick.csproj
│ ├── Platform
│ │ └── Platform.cs
│ ├── ProfilerClient.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── DesignTimeResources.xaml
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Resources
│ │ ├── Bug.ico
│ │ └── icon.ico
│ ├── SamplingFrameControl.xaml
│ ├── SamplingFrameControl.xaml.cs
│ ├── SearchBox.xaml
│ ├── SearchBox.xaml.cs
│ ├── SourceWindow.xaml
│ ├── SourceWindow.xaml.cs
│ ├── TaskManager
│ │ ├── AttachmentStorage.cs
│ │ ├── TaskTracker.cs
│ │ └── brofiler-github-07994fd14248.p12
│ ├── TimeLine
│ │ ├── Icons
│ │ │ ├── CallStack-icon.png
│ │ │ ├── Clear-icon.png
│ │ │ ├── ClearSampling-icon.png
│ │ │ ├── Eye-icon.png
│ │ │ ├── Filter-icon.png
│ │ │ ├── Glasses-icon.png
│ │ │ ├── Hook-icon.png
│ │ │ ├── Pause-icon.png
│ │ │ ├── Percent-icon.png
│ │ │ ├── Play-icon.png
│ │ │ ├── Save-icon.png
│ │ │ ├── Search-icon.png
│ │ │ ├── Source-icon.png
│ │ │ ├── Stop-icon.ico
│ │ │ ├── Stop-icon.png
│ │ │ ├── Timer-icon.png
│ │ │ ├── Trash2-icon.png
│ │ │ └── Warning-icon.png
│ │ ├── TimeLine.xaml
│ │ ├── TimeLine.xaml.cs
│ │ ├── TimeLineItem.xaml
│ │ └── TimeLineItem.xaml.cs
│ ├── ViewModels
│ │ ├── AddressBarViewModel.cs
│ │ ├── CaptureSettingsViewModel.cs
│ │ ├── FunctionSummaryViewModel.cs
│ │ ├── MainViewModel.cs
│ │ ├── MemoryStatsViewModel.cs
│ │ ├── ScreenShotViewModel.cs
│ │ ├── SummaryViewerModel.cs
│ │ └── TaskTrackerViewModel.cs
│ ├── Views
│ │ ├── AddressBarView.xaml
│ │ ├── AddressBarView.xaml.cs
│ │ ├── CaptureSettingsView.xaml
│ │ ├── CaptureSettingsView.xaml.cs
│ │ ├── FunctionDescriptionView.xaml
│ │ ├── FunctionDescriptionView.xaml.cs
│ │ ├── FunctionHistoryChartView.xaml
│ │ ├── FunctionHistoryChartView.xaml.cs
│ │ ├── FunctionHistoryTableView.xaml
│ │ ├── FunctionHistoryTableView.xaml.cs
│ │ ├── FunctionInstanceView.xaml
│ │ ├── FunctionInstanceView.xaml.cs
│ │ ├── FunctionSummaryView.xaml
│ │ ├── FunctionSummaryView.xaml.cs
│ │ ├── MainView.xaml
│ │ ├── MainView.xaml.cs
│ │ ├── ScreenShotView.xaml
│ │ ├── ScreenShotView.xaml.cs
│ │ ├── SummaryViewer.xaml
│ │ ├── SummaryViewer.xaml.cs
│ │ ├── TaskTrackerView.xaml
│ │ └── TaskTrackerView.xaml.cs
│ ├── app.config
│ ├── packages.config
│ └── themes
│ │ ├── BaseDark.xaml
│ │ ├── Blue.xaml
│ │ ├── Brushes.xaml
│ │ ├── Controls.xaml
│ │ ├── Steel.xaml
│ │ └── Window.xaml
├── OptickApp_vs2022.sln
├── OptickVSIX
│ ├── BuildProgressState.cs
│ ├── BuildProgressWindow.cs
│ ├── BuildProgressWindowCommand.cs
│ ├── OptickVSIX.csproj
│ ├── OptickVSIXPackage.cs
│ ├── OptickVSIXPackage.vsct
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Resources
│ │ ├── BuildProgressWindowCommand.png
│ │ └── Style.xaml
│ ├── ViewModels
│ │ └── BuildViewModel.cs
│ ├── Views
│ │ ├── BuildProgressWindowControl.xaml
│ │ └── BuildProgressWindowControl.xaml.cs
│ └── source.extension.vsixmanifest
├── Profiler.Controls
│ ├── ColorToBrushConverter.cs
│ ├── ControlUtils.cs
│ ├── Converters.cs
│ ├── FunctionSearch.xaml
│ ├── FunctionSearch.xaml.cs
│ ├── Icons
│ │ └── Icons.xaml
│ ├── Profiler.Controls.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── RoutedEvents.cs
│ ├── SourceView.cs
│ ├── ThreadView
│ │ ├── ChartRow.cs
│ │ ├── EventThreadView.xaml
│ │ ├── EventThreadView.xaml.cs
│ │ ├── EventsThreadRow.cs
│ │ ├── SamplingThreadView.xaml
│ │ ├── SamplingThreadView.xaml.cs
│ │ ├── ThreadNameView.xaml
│ │ ├── ThreadNameView.xaml.cs
│ │ ├── ThreadRow.cs
│ │ ├── ThreadViewControl.xaml
│ │ ├── ThreadViewControl.xaml.cs
│ │ └── ThreadViewSettings.cs
│ ├── ViewModels
│ │ ├── SamplingViewModel.cs
│ │ └── ThreadFilterViewModel.cs
│ ├── Views
│ │ ├── ThreadFilterView.xaml
│ │ └── ThreadFilterView.xaml.cs
│ └── packages.config
├── Profiler.Data
│ ├── Callstack.cs
│ ├── Capture.cs
│ ├── CaptureSettings.cs
│ ├── Communication
│ │ └── Message.cs
│ ├── Durationable.cs
│ ├── EventBoard.cs
│ ├── EventData.cs
│ ├── EventDescription.cs
│ ├── EventFrame.cs
│ ├── EventTree.cs
│ ├── Frame.cs
│ ├── FrameCollection.cs
│ ├── FunctionStats.cs
│ ├── Mode.cs
│ ├── Profiler.Data.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── ResponseHolder.cs
│ ├── SamplingFrame.cs
│ ├── Summary.cs
│ ├── Synchronization.cs
│ ├── SysCall.cs
│ ├── Tag.cs
│ ├── TraceGroup.cs
│ ├── Utils.cs
│ └── packages.config
├── Profiler.DirectX
│ ├── ComplexDynamicMesh.cs
│ ├── DirectXCanvas.xaml
│ ├── DirectXCanvas.xaml.cs
│ ├── DynamicBuffer.cs
│ ├── DynamicMesh.cs
│ ├── Fonts
│ │ ├── SegoeUI_16_Normal.fnt
│ │ ├── SegoeUI_16_Normal_0.png
│ │ ├── SegoeUI_20_Normal.fnt
│ │ ├── SegoeUI_20_Normal_0.png
│ │ ├── SegoeUI_24_Normal.fnt
│ │ ├── SegoeUI_24_Normal_0.png
│ │ ├── SegoeUI_28_Normal.fnt
│ │ ├── SegoeUI_28_Normal_0.png
│ │ ├── SegoeUI_32_Normal.fnt
│ │ └── SegoeUI_32_Normal_0.png
│ ├── Fragment.cs
│ ├── Mesh.cs
│ ├── Profiler.DirectX.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── RenderSettings.cs
│ ├── ScrollableWinFormsHost.cs
│ ├── Shaders
│ │ ├── Basic.fx
│ │ ├── Basic_ps.fxo
│ │ ├── Basic_vs.fxo
│ │ ├── Compile.bat
│ │ ├── Text.fx
│ │ ├── Text_ps.fxo
│ │ └── Text_vs.fxo
│ ├── TextManager.cs
│ ├── TextureLoader.cs
│ └── Utils.cs
├── Profiler.InfrastructureMvvm
│ ├── BaseViewModel.cs
│ ├── BoolToVisibilityConverter.cs
│ ├── BootStrapperBase.cs
│ ├── DialogManager.cs
│ ├── DialogViewModel.cs
│ ├── FileDialogService.cs
│ ├── IDialogManager.cs
│ ├── IDialogViewModel.cs
│ ├── IFileDialogService.cs
│ ├── IOnClosingHandler.cs
│ ├── IOnLoadedHandler.cs
│ ├── IUiExecution.cs
│ ├── IWindowManager.cs
│ ├── Profiler.InfrastructureMvvm.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── RelayCommand.cs
│ ├── RelayCommandAsync.cs
│ ├── RelayCommandGeneric.cs
│ ├── RelayCommandGenericAsync.cs
│ ├── ViewLocator.cs
│ ├── ViewModelLocator.cs
│ ├── ViewModelPresenter.cs
│ ├── WindowManager.cs
│ └── packages.config
├── Profiler.Interop
│ ├── DbgHelp.cs
│ ├── NtDll.cs
│ ├── Profiler.Interop.csproj
│ └── Properties
│ │ └── AssemblyInfo.cs
└── Profiler.Trace
│ ├── Config.cs
│ ├── DataCollector.cs
│ ├── DataEvents.cs
│ ├── DiagnosticsCollector.cs
│ ├── ETWCollector.cs
│ ├── Profiler.Trace.csproj
│ ├── Properties
│ └── AssemblyInfo.cs
│ └── packages.config
├── premake5.lua
├── samples
├── Common
│ ├── TaskScheduler
│ │ ├── README.txt
│ │ └── Scheduler
│ │ │ ├── Include
│ │ │ ├── MTAppInterop.h
│ │ │ ├── MTArrayView.h
│ │ │ ├── MTAtomic.h
│ │ │ ├── MTColorTable.h
│ │ │ ├── MTConcurrentRingBuffer.h
│ │ │ ├── MTConfig.h
│ │ │ ├── MTDebug.h
│ │ │ ├── MTFiberContext.h
│ │ │ ├── MTFiberContext.inl
│ │ │ ├── MTGroupedTask.h
│ │ │ ├── MTPlatform.h
│ │ │ ├── MTProfilerEventListener.h
│ │ │ ├── MTQueueMPMC.h
│ │ │ ├── MTScheduler.h
│ │ │ ├── MTScheduler.inl
│ │ │ ├── MTStackRequirements.h
│ │ │ ├── MTStaticVector.h
│ │ │ ├── MTTaskBucket.h
│ │ │ ├── MTTaskDesc.h
│ │ │ ├── MTTaskGroup.h
│ │ │ ├── MTTaskPool.h
│ │ │ ├── MTTaskQueue.h
│ │ │ ├── MTThreadContext.h
│ │ │ ├── MTTools.h
│ │ │ ├── MTTypes.h
│ │ │ ├── Platform
│ │ │ │ ├── Common
│ │ │ │ │ ├── MTAtomic.h
│ │ │ │ │ ├── MTSpinWait.h
│ │ │ │ │ └── MTThread.h
│ │ │ │ ├── Posix
│ │ │ │ │ ├── MTAtomic.h
│ │ │ │ │ ├── MTCommon.h
│ │ │ │ │ ├── MTEvent.h
│ │ │ │ │ ├── MTFiber.h
│ │ │ │ │ ├── MTMemory.h
│ │ │ │ │ ├── MTMutex.h
│ │ │ │ │ ├── MTThread.h
│ │ │ │ │ └── MTUtils.h
│ │ │ │ └── Windows
│ │ │ │ │ ├── MTAtomic.h
│ │ │ │ │ ├── MTCommon.h
│ │ │ │ │ ├── MTEvent.h
│ │ │ │ │ ├── MTFiber.h
│ │ │ │ │ ├── MTFiberDefault.h
│ │ │ │ │ ├── MTFiberOptimized.h
│ │ │ │ │ ├── MTMemory.h
│ │ │ │ │ ├── MTMutex.h
│ │ │ │ │ ├── MTThread.h
│ │ │ │ │ ├── MTUtils.h
│ │ │ │ │ ├── MicroWindows.cpp
│ │ │ │ │ └── MicroWindows.h
│ │ │ └── Scopes
│ │ │ │ └── MTScopes.h
│ │ │ └── Source
│ │ │ ├── MTDefaultAppInterop.cpp
│ │ │ ├── MTFiberContext.cpp
│ │ │ ├── MTScheduler.cpp
│ │ │ └── MTThreadContext.cpp
│ └── TestEngine
│ │ ├── TestEngine.cpp
│ │ ├── TestEngine.h
│ │ └── TestImage.h
├── ConsoleApp
│ └── main.cpp
├── ConsoleAppMT
│ └── main.cpp
├── DurangoUWP
│ ├── App.cpp
│ ├── App.h
│ ├── Assets
│ │ ├── LockScreenLogo.scale-200.png
│ │ ├── SplashScreen.scale-200.png
│ │ ├── Square150x150Logo.scale-200.png
│ │ ├── Square44x44Logo.scale-200.png
│ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png
│ │ ├── StoreLogo.png
│ │ └── Wide310x150Logo.scale-200.png
│ ├── BrofilerDurangoTest.vcxproj
│ ├── BrofilerDurangoTest.vcxproj.filters
│ ├── BrofilerDurangoTestMain.cpp
│ ├── BrofilerDurangoTestMain.h
│ ├── BrofilerDurangoTest_TemporaryKey.pfx
│ ├── BrofilerDurangoTest_backup.vcxproj
│ ├── BrofilerDurangoTest_backup.vcxproj.filters
│ ├── Common
│ │ ├── DeviceResources.cpp
│ │ ├── DeviceResources.h
│ │ ├── DirectXHelper.h
│ │ └── StepTimer.h
│ ├── Content
│ │ ├── Sample3DSceneRenderer.cpp
│ │ ├── Sample3DSceneRenderer.h
│ │ ├── SampleFpsTextRenderer.cpp
│ │ ├── SampleFpsTextRenderer.h
│ │ ├── SamplePixelShader.hlsl
│ │ ├── SampleVertexShader.hlsl
│ │ └── ShaderStructures.h
│ ├── Package.appxmanifest
│ ├── pch.cpp
│ └── pch.h
├── UnrealEnginePlugin
│ ├── Config
│ │ └── FilterPlugin.ini
│ ├── GUI
│ │ └── Config.xml
│ ├── OptickPlugin.uplugin
│ ├── Resources
│ │ └── Icon128.png
│ ├── Setup.bat
│ └── Source
│ │ ├── OptickPlugin.Build.cs
│ │ ├── Private
│ │ ├── OptickCommands.cpp
│ │ ├── OptickCommands.h
│ │ ├── OptickPlugin.cpp
│ │ ├── OptickStyle.cpp
│ │ ├── OptickStyle.h
│ │ └── OptickUE4Classes.h
│ │ ├── Public
│ │ └── IOptickPlugin.h
│ │ └── ThirdParty
│ │ └── Optick
│ │ └── README.txt
├── WindowsD3D12
│ ├── Camera.cpp
│ ├── Camera.h
│ ├── D3D12Multithreading.cpp
│ ├── D3D12Multithreading.h
│ ├── DXSample.cpp
│ ├── DXSample.h
│ ├── DXSampleHelper.h
│ ├── FrameResource.cpp
│ ├── FrameResource.h
│ ├── Main.cpp
│ ├── ScreenGrab12.cpp
│ ├── ScreenGrab12.h
│ ├── SquidRoom.bin
│ ├── SquidRoom.h
│ ├── StepTimer.h
│ ├── Win32Application.cpp
│ ├── Win32Application.h
│ ├── d3dx12.h
│ ├── shaders.hlsl
│ ├── stdafx.cpp
│ └── stdafx.h
└── WindowsVulkan
│ ├── assimp
│ ├── .editorconfig
│ ├── Compiler
│ │ ├── poppack1.h
│ │ ├── pstdint.h
│ │ └── pushpack1.h
│ ├── DefaultLogger.hpp
│ ├── Exporter.hpp
│ ├── IOStream.hpp
│ ├── IOSystem.hpp
│ ├── Importer.hpp
│ ├── LogStream.hpp
│ ├── Logger.hpp
│ ├── NullLogger.hpp
│ ├── ProgressHandler.hpp
│ ├── ai_assert.h
│ ├── anim.h
│ ├── camera.h
│ ├── cexport.h
│ ├── cfileio.h
│ ├── cimport.h
│ ├── color4.h
│ ├── color4.inl
│ ├── config.h
│ ├── defs.h
│ ├── importerdesc.h
│ ├── light.h
│ ├── material.h
│ ├── material.inl
│ ├── matrix3x3.h
│ ├── matrix3x3.inl
│ ├── matrix4x4.h
│ ├── matrix4x4.inl
│ ├── mesh.h
│ ├── metadata.h
│ ├── port
│ │ └── AndroidJNI
│ │ │ └── AndroidJNIIOSystem.h
│ ├── postprocess.h
│ ├── quaternion.h
│ ├── quaternion.inl
│ ├── scene.h
│ ├── texture.h
│ ├── types.h
│ ├── vector2.h
│ ├── vector2.inl
│ ├── vector3.h
│ ├── vector3.inl
│ └── version.h
│ ├── base
│ ├── VulkanAndroid.cpp
│ ├── VulkanAndroid.h
│ ├── VulkanBuffer.hpp
│ ├── VulkanDebug.cpp
│ ├── VulkanDebug.h
│ ├── VulkanDevice.hpp
│ ├── VulkanFrameBuffer.hpp
│ ├── VulkanHeightmap.hpp
│ ├── VulkanInitializers.hpp
│ ├── VulkanModel.hpp
│ ├── VulkanSwapChain.hpp
│ ├── VulkanTexture.hpp
│ ├── VulkanTools.cpp
│ ├── VulkanTools.h
│ ├── VulkanUIOverlay.cpp
│ ├── VulkanUIOverlay.h
│ ├── VulkanglTFModel.hpp
│ ├── benchmark.hpp
│ ├── camera.hpp
│ ├── frustum.hpp
│ ├── keycodes.hpp
│ ├── threadpool.hpp
│ ├── vulkanexamplebase.cpp
│ └── vulkanexamplebase.h
│ ├── data
│ ├── models
│ │ ├── retroufo.dae
│ │ ├── retroufo_glow.dae
│ │ ├── retroufo_license.txt
│ │ ├── retroufo_red.dae
│ │ ├── retroufo_red_lowpoly.dae
│ │ ├── sphere.3ds
│ │ └── sphere.obj
│ └── shaders
│ │ ├── base
│ │ ├── uioverlay.frag
│ │ ├── uioverlay.frag.spv
│ │ ├── uioverlay.vert
│ │ └── uioverlay.vert.spv
│ │ └── multithreading
│ │ ├── generate-spirv.bat
│ │ ├── phong.frag
│ │ ├── phong.frag.spv
│ │ ├── phong.vert
│ │ ├── phong.vert.spv
│ │ ├── starsphere.frag
│ │ ├── starsphere.frag.spv
│ │ ├── starsphere.vert
│ │ └── starsphere.vert.spv
│ ├── dll
│ └── assimp-vc140-mt.dll
│ ├── gli
│ ├── CMakeLists.txt
│ ├── clear.hpp
│ ├── comparison.hpp
│ ├── convert.hpp
│ ├── copy.hpp
│ ├── core
│ │ ├── bc.hpp
│ │ ├── bc.inl
│ │ ├── clear.hpp
│ │ ├── clear.inl
│ │ ├── comparison.inl
│ │ ├── convert.inl
│ │ ├── convert_func.hpp
│ │ ├── coord.hpp
│ │ ├── copy.inl
│ │ ├── duplicate.inl
│ │ ├── dx.inl
│ │ ├── file.hpp
│ │ ├── file.inl
│ │ ├── filter.hpp
│ │ ├── filter.inl
│ │ ├── filter_compute.hpp
│ │ ├── flip.hpp
│ │ ├── flip.inl
│ │ ├── format.inl
│ │ ├── generate_mipmaps.inl
│ │ ├── gl.inl
│ │ ├── image.inl
│ │ ├── levels.inl
│ │ ├── load.inl
│ │ ├── load_dds.inl
│ │ ├── load_kmg.inl
│ │ ├── load_ktx.inl
│ │ ├── make_texture.inl
│ │ ├── mipmaps_compute.hpp
│ │ ├── reduce.inl
│ │ ├── s3tc.hpp
│ │ ├── s3tc.inl
│ │ ├── sampler.inl
│ │ ├── sampler1d.inl
│ │ ├── sampler1d_array.inl
│ │ ├── sampler2d.inl
│ │ ├── sampler2d_array.inl
│ │ ├── sampler3d.inl
│ │ ├── sampler_cube.inl
│ │ ├── sampler_cube_array.inl
│ │ ├── save.inl
│ │ ├── save_dds.inl
│ │ ├── save_kmg.inl
│ │ ├── save_ktx.inl
│ │ ├── storage.hpp
│ │ ├── storage.inl
│ │ ├── storage_linear.hpp
│ │ ├── storage_linear.inl
│ │ ├── texture.inl
│ │ ├── texture1d.inl
│ │ ├── texture1d_array.inl
│ │ ├── texture2d.inl
│ │ ├── texture2d_array.inl
│ │ ├── texture3d.inl
│ │ ├── texture_cube.inl
│ │ ├── texture_cube_array.inl
│ │ ├── transform.inl
│ │ ├── view.inl
│ │ └── workaround.hpp
│ ├── duplicate.hpp
│ ├── dx.hpp
│ ├── format.hpp
│ ├── generate_mipmaps.hpp
│ ├── gl.hpp
│ ├── gli.hpp
│ ├── image.hpp
│ ├── levels.hpp
│ ├── load.hpp
│ ├── load_dds.hpp
│ ├── load_kmg.hpp
│ ├── load_ktx.hpp
│ ├── make_texture.hpp
│ ├── reduce.hpp
│ ├── sampler.hpp
│ ├── sampler1d.hpp
│ ├── sampler1d_array.hpp
│ ├── sampler2d.hpp
│ ├── sampler2d_array.hpp
│ ├── sampler3d.hpp
│ ├── sampler_cube.hpp
│ ├── sampler_cube_array.hpp
│ ├── save.hpp
│ ├── save_dds.hpp
│ ├── save_kmg.hpp
│ ├── save_ktx.hpp
│ ├── target.hpp
│ ├── texture.hpp
│ ├── texture1d.hpp
│ ├── texture1d_array.hpp
│ ├── texture2d.hpp
│ ├── texture2d_array.hpp
│ ├── texture3d.hpp
│ ├── texture_cube.hpp
│ ├── texture_cube_array.hpp
│ ├── transform.hpp
│ ├── type.hpp
│ └── view.hpp
│ ├── glm
│ ├── CMakeLists.txt
│ ├── common.hpp
│ ├── detail
│ │ ├── _features.hpp
│ │ ├── _fixes.hpp
│ │ ├── _noise.hpp
│ │ ├── _swizzle.hpp
│ │ ├── _swizzle_func.hpp
│ │ ├── _vectorize.hpp
│ │ ├── dummy.cpp
│ │ ├── func_common.hpp
│ │ ├── func_common.inl
│ │ ├── func_common_simd.inl
│ │ ├── func_exponential.hpp
│ │ ├── func_exponential.inl
│ │ ├── func_exponential_simd.inl
│ │ ├── func_geometric.hpp
│ │ ├── func_geometric.inl
│ │ ├── func_geometric_simd.inl
│ │ ├── func_integer.hpp
│ │ ├── func_integer.inl
│ │ ├── func_integer_simd.inl
│ │ ├── func_matrix.hpp
│ │ ├── func_matrix.inl
│ │ ├── func_matrix_simd.inl
│ │ ├── func_packing.hpp
│ │ ├── func_packing.inl
│ │ ├── func_packing_simd.inl
│ │ ├── func_trigonometric.hpp
│ │ ├── func_trigonometric.inl
│ │ ├── func_trigonometric_simd.inl
│ │ ├── func_vector_relational.hpp
│ │ ├── func_vector_relational.inl
│ │ ├── func_vector_relational_simd.inl
│ │ ├── glm.cpp
│ │ ├── precision.hpp
│ │ ├── setup.hpp
│ │ ├── type_float.hpp
│ │ ├── type_gentype.hpp
│ │ ├── type_gentype.inl
│ │ ├── type_half.hpp
│ │ ├── type_half.inl
│ │ ├── type_int.hpp
│ │ ├── type_mat.hpp
│ │ ├── type_mat.inl
│ │ ├── type_mat2x2.hpp
│ │ ├── type_mat2x2.inl
│ │ ├── type_mat2x3.hpp
│ │ ├── type_mat2x3.inl
│ │ ├── type_mat2x4.hpp
│ │ ├── type_mat2x4.inl
│ │ ├── type_mat3x2.hpp
│ │ ├── type_mat3x2.inl
│ │ ├── type_mat3x3.hpp
│ │ ├── type_mat3x3.inl
│ │ ├── type_mat3x4.hpp
│ │ ├── type_mat3x4.inl
│ │ ├── type_mat4x2.hpp
│ │ ├── type_mat4x2.inl
│ │ ├── type_mat4x3.hpp
│ │ ├── type_mat4x3.inl
│ │ ├── type_mat4x4.hpp
│ │ ├── type_mat4x4.inl
│ │ ├── type_mat4x4_simd.inl
│ │ ├── type_vec.hpp
│ │ ├── type_vec.inl
│ │ ├── type_vec1.hpp
│ │ ├── type_vec1.inl
│ │ ├── type_vec2.hpp
│ │ ├── type_vec2.inl
│ │ ├── type_vec3.hpp
│ │ ├── type_vec3.inl
│ │ ├── type_vec4.hpp
│ │ ├── type_vec4.inl
│ │ └── type_vec4_simd.inl
│ ├── exponential.hpp
│ ├── ext.hpp
│ ├── fwd.hpp
│ ├── geometric.hpp
│ ├── glm.hpp
│ ├── gtc
│ │ ├── bitfield.hpp
│ │ ├── bitfield.inl
│ │ ├── color_space.hpp
│ │ ├── color_space.inl
│ │ ├── constants.hpp
│ │ ├── constants.inl
│ │ ├── epsilon.hpp
│ │ ├── epsilon.inl
│ │ ├── functions.hpp
│ │ ├── functions.inl
│ │ ├── integer.hpp
│ │ ├── integer.inl
│ │ ├── matrix_access.hpp
│ │ ├── matrix_access.inl
│ │ ├── matrix_integer.hpp
│ │ ├── matrix_inverse.hpp
│ │ ├── matrix_inverse.inl
│ │ ├── matrix_transform.hpp
│ │ ├── matrix_transform.inl
│ │ ├── noise.hpp
│ │ ├── noise.inl
│ │ ├── packing.hpp
│ │ ├── packing.inl
│ │ ├── quaternion.hpp
│ │ ├── quaternion.inl
│ │ ├── quaternion_simd.inl
│ │ ├── random.hpp
│ │ ├── random.inl
│ │ ├── reciprocal.hpp
│ │ ├── reciprocal.inl
│ │ ├── round.hpp
│ │ ├── round.inl
│ │ ├── type_aligned.hpp
│ │ ├── type_precision.hpp
│ │ ├── type_precision.inl
│ │ ├── type_ptr.hpp
│ │ ├── type_ptr.inl
│ │ ├── ulp.hpp
│ │ ├── ulp.inl
│ │ ├── vec1.hpp
│ │ └── vec1.inl
│ ├── gtx
│ │ ├── associated_min_max.hpp
│ │ ├── associated_min_max.inl
│ │ ├── bit.hpp
│ │ ├── bit.inl
│ │ ├── closest_point.hpp
│ │ ├── closest_point.inl
│ │ ├── color_encoding.hpp
│ │ ├── color_encoding.inl
│ │ ├── color_space.hpp
│ │ ├── color_space.inl
│ │ ├── color_space_YCoCg.hpp
│ │ ├── color_space_YCoCg.inl
│ │ ├── common.hpp
│ │ ├── common.inl
│ │ ├── compatibility.hpp
│ │ ├── compatibility.inl
│ │ ├── component_wise.hpp
│ │ ├── component_wise.inl
│ │ ├── dual_quaternion.hpp
│ │ ├── dual_quaternion.inl
│ │ ├── euler_angles.hpp
│ │ ├── euler_angles.inl
│ │ ├── extend.hpp
│ │ ├── extend.inl
│ │ ├── extended_min_max.hpp
│ │ ├── extended_min_max.inl
│ │ ├── exterior_product.hpp
│ │ ├── exterior_product.inl
│ │ ├── fast_exponential.hpp
│ │ ├── fast_exponential.inl
│ │ ├── fast_square_root.hpp
│ │ ├── fast_square_root.inl
│ │ ├── fast_trigonometry.hpp
│ │ ├── fast_trigonometry.inl
│ │ ├── float_notmalize.inl
│ │ ├── gradient_paint.hpp
│ │ ├── gradient_paint.inl
│ │ ├── handed_coordinate_space.hpp
│ │ ├── handed_coordinate_space.inl
│ │ ├── hash.hpp
│ │ ├── hash.inl
│ │ ├── integer.hpp
│ │ ├── integer.inl
│ │ ├── intersect.hpp
│ │ ├── intersect.inl
│ │ ├── io.hpp
│ │ ├── io.inl
│ │ ├── log_base.hpp
│ │ ├── log_base.inl
│ │ ├── matrix_cross_product.hpp
│ │ ├── matrix_cross_product.inl
│ │ ├── matrix_decompose.hpp
│ │ ├── matrix_decompose.inl
│ │ ├── matrix_factorisation.hpp
│ │ ├── matrix_factorisation.inl
│ │ ├── matrix_interpolation.hpp
│ │ ├── matrix_interpolation.inl
│ │ ├── matrix_major_storage.hpp
│ │ ├── matrix_major_storage.inl
│ │ ├── matrix_operation.hpp
│ │ ├── matrix_operation.inl
│ │ ├── matrix_query.hpp
│ │ ├── matrix_query.inl
│ │ ├── matrix_transform_2d.hpp
│ │ ├── matrix_transform_2d.inl
│ │ ├── mixed_product.hpp
│ │ ├── mixed_product.inl
│ │ ├── norm.hpp
│ │ ├── norm.inl
│ │ ├── normal.hpp
│ │ ├── normal.inl
│ │ ├── normalize_dot.hpp
│ │ ├── normalize_dot.inl
│ │ ├── number_precision.hpp
│ │ ├── number_precision.inl
│ │ ├── optimum_pow.hpp
│ │ ├── optimum_pow.inl
│ │ ├── orthonormalize.hpp
│ │ ├── orthonormalize.inl
│ │ ├── perpendicular.hpp
│ │ ├── perpendicular.inl
│ │ ├── polar_coordinates.hpp
│ │ ├── polar_coordinates.inl
│ │ ├── projection.hpp
│ │ ├── projection.inl
│ │ ├── quaternion.hpp
│ │ ├── quaternion.inl
│ │ ├── range.hpp
│ │ ├── raw_data.hpp
│ │ ├── raw_data.inl
│ │ ├── rotate_normalized_axis.hpp
│ │ ├── rotate_normalized_axis.inl
│ │ ├── rotate_vector.hpp
│ │ ├── rotate_vector.inl
│ │ ├── scalar_multiplication.hpp
│ │ ├── scalar_relational.hpp
│ │ ├── scalar_relational.inl
│ │ ├── spline.hpp
│ │ ├── spline.inl
│ │ ├── std_based_type.hpp
│ │ ├── std_based_type.inl
│ │ ├── string_cast.hpp
│ │ ├── string_cast.inl
│ │ ├── transform.hpp
│ │ ├── transform.inl
│ │ ├── transform2.hpp
│ │ ├── transform2.inl
│ │ ├── type_aligned.hpp
│ │ ├── type_aligned.inl
│ │ ├── type_trait.hpp
│ │ ├── type_trait.inl
│ │ ├── vec_swizzle.hpp
│ │ ├── vector_angle.hpp
│ │ ├── vector_angle.inl
│ │ ├── vector_query.hpp
│ │ ├── vector_query.inl
│ │ ├── wrap.hpp
│ │ └── wrap.inl
│ ├── integer.hpp
│ ├── mat2x2.hpp
│ ├── mat2x3.hpp
│ ├── mat2x4.hpp
│ ├── mat3x2.hpp
│ ├── mat3x3.hpp
│ ├── mat3x4.hpp
│ ├── mat4x2.hpp
│ ├── mat4x3.hpp
│ ├── mat4x4.hpp
│ ├── matrix.hpp
│ ├── packing.hpp
│ ├── simd
│ │ ├── common.h
│ │ ├── exponential.h
│ │ ├── geometric.h
│ │ ├── integer.h
│ │ ├── matrix.h
│ │ ├── packing.h
│ │ ├── platform.h
│ │ ├── trigonometric.h
│ │ └── vector_relational.h
│ ├── trigonometric.hpp
│ ├── vec2.hpp
│ ├── vec3.hpp
│ ├── vec4.hpp
│ └── vector_relational.hpp
│ ├── imgui
│ ├── LICENSE.txt
│ ├── imconfig.h
│ ├── imgui.cpp
│ ├── imgui.h
│ ├── imgui_demo.cpp
│ ├── imgui_draw.cpp
│ ├── imgui_internal.h
│ ├── imgui_widgets.cpp
│ ├── imstb_rectpack.h
│ ├── imstb_textedit.h
│ └── imstb_truetype.h
│ ├── libs
│ └── assimp
│ │ ├── assimp-vc140-mt.lib
│ │ └── assimp.lib
│ └── multithreading.cpp
├── src
├── optick.config.h
├── optick.h
├── optick_capi.cpp
├── optick_capi.h
├── optick_common.h
├── optick_core.cpp
├── optick_core.freebsd.h
├── optick_core.h
├── optick_core.linux.h
├── optick_core.macos.h
├── optick_core.platform.h
├── optick_core.win.h
├── optick_gpu.cpp
├── optick_gpu.d3d12.cpp
├── optick_gpu.h
├── optick_gpu.vulkan.cpp
├── optick_memory.h
├── optick_message.cpp
├── optick_message.h
├── optick_miniz.cpp
├── optick_miniz.h
├── optick_serialization.cpp
├── optick_serialization.h
├── optick_server.cpp
└── optick_server.h
└── tools
├── GenerateProjects.bat
├── GenerateProjects_all.bat
├── GenerateProjects_cmake.bat
├── GenerateProjects_gpu.bat
├── Linux
└── premake5
├── MacOS
└── premake5
├── OptickConfig.cmake.in
├── Publish.bat
├── Publish_Main.bat
├── Publish_UnrealEngine.bat
├── RemoveXML.exe
├── Step1_PrepareVersion.cmd
├── StripNdaCode.cmd
├── Windows
└── premake5.exe
└── sunifdef.exe
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: optick
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: ['https://www.paypal.me/optick']
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | Bin/
2 | Optick/.vs/
3 | Optick/obj/
4 | OptickApp/obj/
5 | OptickApp/packages/
6 | OptickApp/.vs/
7 | gui/obj/
8 | gui/packages/
9 | gui/InteractiveDataDisplay.WPF/obj/
10 | gui/*/obj/
11 | gui/.vs/
12 | [Bb]uild*/
13 | Tools/Publish/
14 | *.suo
15 | *.user
16 | Publish/
17 | *.rej
18 | *.orig
19 | .DS_Store
20 | /Samples/UnrealEnginePlugin/Binaries
21 | /.vs
22 | /samples/UnrealEnginePlugin/GUI/Optick.exe
23 | samples/UnrealEnginePlugin/Source/ThirdParty/Optick/src
24 | *.bak
25 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language:
2 | - cpp
3 |
4 | os:
5 | - linux
6 | - osx
7 |
8 | compiler:
9 | - clang
10 | - gcc
11 |
12 |
13 | script:
14 | - if [ "$TRAVIS_OS_NAME" = "linux" ]; then ./tools/Linux/premake5 gmake && pushd build/gmake/ && make config=release_x64 && popd; fi
15 | - if [ "$TRAVIS_OS_NAME" = "osx" ]; then ./tools/MacOS/premake5 gmake && pushd build/gmake/ && make config=debug_x64 && popd; fi
--------------------------------------------------------------------------------
/CMakeSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "configurations": [
3 | {
4 | "name": "Linux-Debug",
5 | "generator": "Unix Makefiles",
6 | "remoteMachineName": "${defaultRemoteMachineName}",
7 | "configurationType": "Debug",
8 | "remoteCMakeListsRoot": "/var/tmp/src/${workspaceHash}/${name}",
9 | "cmakeExecutable": "/usr/bin",
10 | "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
11 | "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
12 | "remoteBuildRoot": "/var/tmp/build/${workspaceHash}/build/${name}",
13 | "remoteInstallRoot": "/var/tmp/build/${workspaceHash}/install/${name}",
14 | "remoteCopySources": true,
15 | "remoteCopySourcesOutputVerbosity": "Normal",
16 | "remoteCopySourcesConcurrentCopies": "10",
17 | "remoteCopySourcesMethod": "rsync",
18 | "remoteCopySourcesExclusionList": [
19 | ".vs",
20 | ".git",
21 | "Bin",
22 | "build",
23 | "gui",
24 | "stc",
25 | "tools",
26 | "publish",
27 | "samples/DurangoUWP",
28 | "samples/UnrealEnginePlugin",
29 | "samples/WindowsVulkan",
30 | "samples/WindowsD3D12"
31 | ],
32 | "rsyncCommandArgs": "-t --delete --delete-excluded",
33 | "remoteCopyBuildOutput": false,
34 | "cmakeCommandArgs": "",
35 | "buildCommandArgs": "",
36 | "ctestCommandArgs": "",
37 | "inheritEnvironments": [
38 | "linux_x64"
39 | ]
40 | }
41 | ]
42 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2019 Vadim Slyusarev
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | version: 2.0.{build}
2 |
3 | image: Visual Studio 2019
4 |
5 | platform:
6 | - x64
7 |
8 | configuration:
9 | - Debug
10 | - Release
11 |
12 | matrix:
13 | fast_finish: true
14 |
15 | before_build:
16 | - nuget restore gui/OptickApp_vs2022.sln
17 |
18 | build_script:
19 | - tools\Windows\premake5.exe vs2019
20 | - cd build/vs2019
21 | - MsBuild Optick.sln /t:Rebuild /p:Configuration=%CONFIGURATION%
22 | - cd ../../gui
23 | - MsBuild OptickApp_vs2022.sln /t:Rebuild /p:Configuration=%CONFIGURATION%
--------------------------------------------------------------------------------
/gui/AutoEmbedLibs/ICSharpCode.AvalonEdit.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/AutoEmbedLibs/ICSharpCode.AvalonEdit.dll
--------------------------------------------------------------------------------
/gui/AutoEmbedLibs/SharpDX.D3DCompiler.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/AutoEmbedLibs/SharpDX.D3DCompiler.dll
--------------------------------------------------------------------------------
/gui/AutoEmbedLibs/SharpDX.DXGI.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/AutoEmbedLibs/SharpDX.DXGI.dll
--------------------------------------------------------------------------------
/gui/AutoEmbedLibs/SharpDX.Direct2D1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/AutoEmbedLibs/SharpDX.Direct2D1.dll
--------------------------------------------------------------------------------
/gui/AutoEmbedLibs/SharpDX.Direct3D11.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/AutoEmbedLibs/SharpDX.Direct3D11.dll
--------------------------------------------------------------------------------
/gui/AutoEmbedLibs/SharpDX.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/AutoEmbedLibs/SharpDX.dll
--------------------------------------------------------------------------------
/gui/AutoEmbedLibs/System.Windows.Interactivity.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/AutoEmbedLibs/System.Windows.Interactivity.dll
--------------------------------------------------------------------------------
/gui/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.8)
2 | enable_language(CSharp)
3 |
4 | # TODO
5 |
--------------------------------------------------------------------------------
/gui/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/gui/InteractiveDataDisplay.WPF/Axes/AxisOrientation.cs:
--------------------------------------------------------------------------------
1 | // Copyright © Microsoft Corporation. All Rights Reserved.
2 | // Licensed under the MIT License.
3 |
4 | namespace InteractiveDataDisplay.WPF
5 | {
6 | ///
7 | /// Specifies axes orientation.
8 | ///
9 | public enum AxisOrientation
10 | {
11 | ///
12 | /// Axis will be vertical and ticks will be aligned to right.
13 | ///
14 | Left,
15 | ///
16 | /// Axis will be vertical and ticks will be aligned to left.
17 | ///
18 | Right,
19 | ///
20 | /// Axis will be horizontal and ticks will be aligned to bottom.
21 | ///
22 | Top,
23 | ///
24 | /// Axis will be horizontal and ticks will be aligned to top.
25 | ///
26 | Bottom
27 | }
28 | }
29 |
30 |
--------------------------------------------------------------------------------
/gui/InteractiveDataDisplay.WPF/Axes/ILabelProvider.cs:
--------------------------------------------------------------------------------
1 | // Copyright © Microsoft Corporation. All Rights Reserved.
2 | // Licensed under the MIT License.
3 |
4 | using System.Windows;
5 |
6 | namespace InteractiveDataDisplay.WPF
7 | {
8 | ///
9 | /// Defines a method to create labels as an array of from an array of double values.
10 | ///
11 | public interface ILabelProvider
12 | {
13 | ///
14 | /// Generates an array of labels from an array of double.
15 | ///
16 | /// An array of double ticks.
17 | ///
18 | FrameworkElement[] GetLabels(double[] ticks);
19 | }
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/gui/InteractiveDataDisplay.WPF/Axes/LabelProvider.cs:
--------------------------------------------------------------------------------
1 | // Copyright © Microsoft Corporation. All Rights Reserved.
2 | // Licensed under the MIT License.
3 |
4 | using System;
5 | using System.Windows;
6 | using System.Windows.Controls;
7 | using System.Collections.Generic;
8 | using System.Globalization;
9 |
10 | namespace InteractiveDataDisplay.WPF
11 | {
12 | ///
13 | /// Provides mechanisms to generate labels displayed on an axis by double ticks.
14 | ///
15 | public class LabelProvider : ILabelProvider
16 | {
17 | ///
18 | /// Generates an array of labels from an array of double.
19 | ///
20 | /// An array of double ticks.
21 | /// An array of .
22 | public FrameworkElement[] GetLabels(double[] ticks)
23 | {
24 | if (ticks == null)
25 | throw new ArgumentNullException("ticks");
26 |
27 | List Labels = new List();
28 | foreach (double tick in ticks)
29 | {
30 | TextBlock text = new TextBlock();
31 | text.Text = tick.ToString(CultureInfo.InvariantCulture);
32 | Labels.Add(text);
33 | }
34 | return Labels.ToArray();
35 | }
36 | }
37 | }
38 |
39 |
--------------------------------------------------------------------------------
/gui/InteractiveDataDisplay.WPF/Common/IPalette.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation. All Rights Reserved.
2 | // Licensed under the MIT License.
3 |
4 | // Copyright © 2010 Microsoft Corporation, All Rights Reserved.
5 | // This code released under the terms of the Microsoft Research License Agreement (MSR-LA, http://sds.codeplex.com/License)
6 | using System.Windows.Media;
7 |
8 | namespace InteractiveDataDisplay.WPF
9 | {
10 | ///
11 | /// Represents a color palette, which can convert double values to colors.
12 | ///
13 | public interface IPalette
14 | {
15 | ///
16 | /// Gets a color for the specified value.
17 | ///
18 | /// A value from the .
19 | /// A color.
20 | Color GetColor(double value);
21 |
22 | ///
23 | /// Gets the value indicating whether the contains absolute values
24 | /// or it is relative ([0...1]).
25 | ///
26 | bool IsNormalized { get; }
27 |
28 | ///
29 | /// Gets the range on which palette is defined.
30 | ///
31 | Range Range { get; }
32 | }
33 | }
34 |
35 |
36 |
--------------------------------------------------------------------------------
/gui/InteractiveDataDisplay.WPF/Legend/DefaultTemplates.xaml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/gui/Optick/AppBootStrapper.cs:
--------------------------------------------------------------------------------
1 | using Autofac;
2 | using Profiler.InfrastructureMvvm;
3 | using Profiler.ViewModels;
4 | using Profiler.Views;
5 | using Profiler.Controls;
6 |
7 | namespace Profiler
8 | {
9 | public class AppBootStrapper: BootStrapperBase
10 | {
11 | protected override void ConfigureContainer(ContainerBuilder builder)
12 | {
13 | base.ConfigureContainer(builder);
14 |
15 | builder.RegisterType().AsSelf().AsImplementedInterfaces().SingleInstance();
16 | builder.RegisterType().SingleInstance();
17 | builder.RegisterType().AsSelf().AsImplementedInterfaces().SingleInstance();
18 | builder.RegisterType().SingleInstance();
19 | builder.RegisterType().AsSelf().AsImplementedInterfaces();
20 | builder.RegisterType().AsSelf();
21 | builder.RegisterType().As();
22 |
23 | builder.RegisterType().AsSelf().AsImplementedInterfaces();
24 | builder.RegisterType().AsSelf();
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/gui/Optick/Controls/AttachmentViewControl.xaml.cs:
--------------------------------------------------------------------------------
1 | using Profiler.Data;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 | using System.Windows.Controls;
9 | using System.Windows.Data;
10 | using System.Windows.Documents;
11 | using System.Windows.Input;
12 | using System.Windows.Media;
13 | using System.Windows.Media.Imaging;
14 | using System.Windows.Navigation;
15 | using System.Windows.Shapes;
16 |
17 | namespace Profiler.Controls
18 | {
19 | public class AttachmnetTemplateSelector : DataTemplateSelector
20 | {
21 | public DataTemplate ImageTemplate { get; set; }
22 | public DataTemplate TextTemplate { get; set; }
23 | public DataTemplate OtherTemplate { get; set; }
24 |
25 | public override DataTemplate SelectTemplate(object item, DependencyObject container)
26 | {
27 | FileAttachment attachment = item as FileAttachment;
28 | if (attachment != null)
29 | {
30 | switch (attachment.FileType)
31 | {
32 | case FileAttachment.Type.IMAGE:
33 | return ImageTemplate;
34 |
35 | case FileAttachment.Type.TEXT:
36 | return TextTemplate;
37 | }
38 | }
39 | return OtherTemplate;
40 | }
41 | }
42 |
43 | ///
44 | /// Interaction logic for AttachmentViewControl.xaml
45 | ///
46 | public partial class AttachmentViewControl : UserControl
47 | {
48 | public AttachmentViewControl()
49 | {
50 | InitializeComponent();
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/gui/Optick/Controls/CaptureThumbnail.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/gui/Optick/Controls/CaptureThumbnail.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Profiler.Controls
4 | {
5 | ///
6 | /// Interaction logic for CaptureThumbnail.xaml
7 | ///
8 | public partial class CaptureThumbnail : UserControl
9 | {
10 | public CaptureThumbnail()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/gui/Optick/Controls/EditStorageListDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using MahApps.Metro.Controls.Dialogs;
2 | using Profiler.InfrastructureMvvm;
3 | using Profiler.TaskManager;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Collections.ObjectModel;
7 | using System.ComponentModel;
8 | using System.Diagnostics;
9 | using System.Linq;
10 | using System.Text;
11 | using System.Threading.Tasks;
12 | using System.Windows;
13 | using System.Windows.Controls;
14 | using System.Windows.Data;
15 | using System.Windows.Documents;
16 | using System.Windows.Input;
17 | using System.Windows.Media;
18 | using System.Windows.Media.Imaging;
19 | using System.Windows.Navigation;
20 | using System.Windows.Shapes;
21 |
22 | namespace Profiler.Controls
23 | {
24 | ///
25 | /// Interaction logic for EditTaskTrackerListDialog.xaml
26 | ///
27 | public partial class EditStorageListDialog : BaseMetroDialog
28 | {
29 | public EditStorageListDialog()
30 | {
31 | InitializeComponent();
32 | }
33 |
34 | public ICommand OKPressed { set { PART_AffirmativeButton.Command = value; } }
35 | public ICommand CancelPressed { set { PART_NegativeButton.Command = value; } }
36 |
37 | public ExternalStorage GetStorage()
38 | {
39 | return new NetworkStorage(UploadURL.Text, DownloadURL.Text);
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/gui/Optick/Controls/FileHistory.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/gui/Optick/Controls/RoutedEvents.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using Profiler.Views;
8 |
9 | namespace Profiler.Controls
10 | {
11 | public class OpenCaptureEventArgs : RoutedEventArgs
12 | {
13 | public String Path { get; set; }
14 | public Data.SummaryPack Summary { get; set; }
15 |
16 | public OpenCaptureEventArgs(String path, Data.SummaryPack summary = null)
17 | : base(MainView.OpenCaptureEvent)
18 | {
19 | Path = path;
20 | Summary = summary;
21 | }
22 | }
23 |
24 | public class SaveCaptureEventArgs : RoutedEventArgs
25 | {
26 | public String Path { get; set; }
27 | public Data.SummaryPack Summary { get; set; }
28 |
29 | public SaveCaptureEventArgs(String path)
30 | : base(MainView.SaveCaptureEvent)
31 | {
32 | Path = path;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/gui/Optick/Controls/SettingsControl.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/gui/Optick/Controls/SettingsControl.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace Profiler.Controls
17 | {
18 | ///
19 | /// Interaction logic for SettingsControl.xaml
20 | ///
21 | public partial class SettingsControl : UserControl
22 | {
23 | public SettingsControl()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/gui/Optick/Controls/TagsControl.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace Profiler.Controls
17 | {
18 | ///
19 | /// Interaction logic for TagsControl.xaml
20 | ///
21 | public partial class TagsControl : UserControl
22 | {
23 | public TagsControl()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/gui/Optick/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/gui/Optick/Frames/SourceViewControl.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
20 |
21 |
--------------------------------------------------------------------------------
/gui/Optick/Properties/DesignTimeResources.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/gui/Optick/Resources/Bug.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/Resources/Bug.ico
--------------------------------------------------------------------------------
/gui/Optick/Resources/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/Resources/icon.ico
--------------------------------------------------------------------------------
/gui/Optick/SamplingFrameControl.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/gui/Optick/SamplingFrameControl.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Windows;
6 | using System.Windows.Controls;
7 | using System.Windows.Data;
8 | using System.Windows.Documents;
9 | using System.Windows.Input;
10 | using System.Windows.Media;
11 | using System.Windows.Media.Imaging;
12 | using System.Windows.Navigation;
13 | using System.Windows.Shapes;
14 | using Profiler.Data;
15 |
16 | namespace Profiler
17 | {
18 | ///
19 | /// Interaction logic for SamplingFrameControl.xaml
20 | ///
21 | public partial class SamplingFrameControl : UserControl
22 | {
23 | public SamplingFrameControl()
24 | {
25 | InitializeComponent();
26 | Init();
27 | DataContextChanged += new DependencyPropertyChangedEventHandler(OnDataContextChanged);
28 | }
29 |
30 | void Init()
31 | {
32 | if (DataContext is SamplingFrame)
33 | {
34 | SamplingFrame frame = DataContext as SamplingFrame;
35 |
36 |
37 | }
38 | }
39 |
40 | private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
41 | {
42 | Init();
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/gui/Optick/SourceWindow.xaml:
--------------------------------------------------------------------------------
1 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/gui/Optick/SourceWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using MahApps.Metro.Controls;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Text;
5 | using System.Windows;
6 | using System.Windows.Controls;
7 | using System.Windows.Data;
8 | using System.Windows.Documents;
9 | using System.Windows.Input;
10 | using System.Windows.Media;
11 | using System.Windows.Media.Imaging;
12 | using System.Windows.Shapes;
13 |
14 | namespace Profiler
15 | {
16 | ///
17 | /// Interaction logic for SourceWindow.xaml
18 | ///
19 | public partial class SourceWindow : MetroWindow
20 | {
21 | public SourceWindow()
22 | {
23 | this.InitializeComponent();
24 | }
25 |
26 | private void Window_KeyDown(object sender, KeyEventArgs e)
27 | {
28 | if (e.Key == Key.Escape)
29 | {
30 | Close();
31 | }
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/gui/Optick/TaskManager/brofiler-github-07994fd14248.p12:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TaskManager/brofiler-github-07994fd14248.p12
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/CallStack-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/CallStack-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Clear-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Clear-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/ClearSampling-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/ClearSampling-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Eye-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Eye-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Filter-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Filter-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Glasses-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Glasses-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Hook-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Hook-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Pause-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Pause-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Percent-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Percent-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Play-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Play-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Save-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Save-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Search-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Search-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Source-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Source-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Stop-icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Stop-icon.ico
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Stop-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Stop-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Timer-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Timer-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Trash2-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Trash2-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/Icons/Warning-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Optick/TimeLine/Icons/Warning-icon.png
--------------------------------------------------------------------------------
/gui/Optick/TimeLine/TimeLineItem.xaml:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/gui/Optick/ViewModels/MainViewModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Reflection;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using Profiler.InfrastructureMvvm;
8 |
9 | namespace Profiler.ViewModels
10 | {
11 | public class MainViewModel: BaseViewModel
12 | {
13 | public String Version { get { return Assembly.GetEntryAssembly().GetName().Version.ToString(); } }
14 |
15 | private bool _isCapturing = false;
16 | public bool IsCapturing
17 | {
18 | get { return _isCapturing; }
19 | set { SetProperty(ref _isCapturing, value); }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/gui/Optick/ViewModels/ScreenShotViewModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Media;
3 | using System.Windows.Media.Imaging;
4 | using System.Windows.Input; //ICommand
5 | using Profiler.InfrastructureMvvm;
6 | using System.Windows;
7 |
8 | namespace Profiler.ViewModels
9 | {
10 | public class ScreenShotViewModel: BaseViewModel
11 | {
12 | #region properties
13 |
14 | ImageSource _attachmentImage;
15 | public ImageSource AttachmentImage
16 | {
17 | get { return _attachmentImage; }
18 | set { SetProperty(ref _attachmentImage, value); }
19 | }
20 |
21 | public string Title { get; set; }
22 |
23 | #endregion
24 |
25 | #region commands
26 |
27 | public ICommand CloseViewCommand { get; set; }
28 |
29 | #endregion
30 |
31 | #region constructor
32 | public ScreenShotViewModel(BitmapImage image =null, string title=null)
33 | {
34 | AttachmentImage = image;
35 | Title = title;
36 |
37 | CloseViewCommand = new RelayCommand(x =>
38 | {
39 | if (x != null)
40 | x.Close();
41 |
42 |
43 | });
44 | }
45 |
46 | #endregion
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/gui/Optick/Views/CaptureSettingsView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace Profiler.Views
17 | {
18 | ///
19 | /// Interaction logic for CaptureSettingsView.xaml
20 | ///
21 | public partial class CaptureSettingsView : UserControl
22 | {
23 | public CaptureSettingsView()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/gui/Optick/Views/FunctionDescriptionView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace Profiler.Views
17 | {
18 | ///
19 | /// Interaction logic for FunctionDescriptionView.xaml
20 | ///
21 | public partial class FunctionDescriptionView : UserControl
22 | {
23 | public FunctionDescriptionView()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/gui/Optick/Views/FunctionHistoryTableView.xaml.cs:
--------------------------------------------------------------------------------
1 | using Profiler.Data;
2 | using Profiler.ViewModels;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 | using System.Windows;
9 | using System.Windows.Controls;
10 | using System.Windows.Data;
11 | using System.Windows.Documents;
12 | using System.Windows.Input;
13 | using System.Windows.Media;
14 | using System.Windows.Media.Imaging;
15 | using System.Windows.Navigation;
16 | using System.Windows.Shapes;
17 |
18 | namespace Profiler.Views
19 | {
20 | ///
21 | /// Interaction logic for FunctionHistoryTableView.xaml
22 | ///
23 | public partial class FunctionHistoryTableView : UserControl
24 | {
25 | public FunctionHistoryTableView()
26 | {
27 | InitializeComponent();
28 | }
29 |
30 | private void FunctionInstanceDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
31 | {
32 | List indices = new List();
33 |
34 | foreach (FunctionStats.Sample sample in FunctionInstanceDataGrid.SelectedItems)
35 | indices.Add(sample.Index);
36 |
37 | if (indices.Count > 0)
38 | {
39 | FunctionViewModel vm = DataContext as FunctionViewModel;
40 | if (vm != null)
41 | vm.OnDataClick(this, indices);
42 | }
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/gui/Optick/Views/FunctionInstanceView.xaml.cs:
--------------------------------------------------------------------------------
1 | using Profiler.Data;
2 | using Profiler.ViewModels;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 | using System.Windows;
9 | using System.Windows.Controls;
10 | using System.Windows.Data;
11 | using System.Windows.Documents;
12 | using System.Windows.Input;
13 | using System.Windows.Media;
14 | using System.Windows.Media.Imaging;
15 | using System.Windows.Navigation;
16 | using System.Windows.Shapes;
17 |
18 | namespace Profiler.Views
19 | {
20 | ///
21 | /// Interaction logic for FunctionInstanceView.xaml
22 | ///
23 | public partial class FunctionInstanceView : UserControl
24 | {
25 | public FunctionInstanceView()
26 | {
27 | InitializeComponent();
28 | }
29 |
30 | private void FunctionInstanceDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
31 | {
32 | List indices = new List();
33 |
34 | foreach (FunctionStats.Sample sample in FunctionInstanceDataGrid.SelectedItems)
35 | indices.Add(sample.Index);
36 |
37 | if (indices.Count > 0)
38 | {
39 | FunctionViewModel vm = DataContext as FunctionViewModel;
40 | if (vm != null)
41 | vm.OnDataClick(this, indices);
42 | }
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/gui/Optick/Views/FunctionSummaryView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace Profiler.Views
17 | {
18 | ///
19 | /// Interaction logic for FunctionSummaryView.xaml
20 | ///
21 | public partial class FunctionSummaryView : UserControl
22 | {
23 | public FunctionSummaryView()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/gui/Optick/Views/ScreenShotView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Shapes;
14 | using MahApps.Metro.Controls;
15 |
16 | namespace Profiler.Views
17 | {
18 | ///
19 | /// Interaction logic for ScreenshotView.xaml
20 | ///
21 | public partial class ScreenShotView : MetroWindow
22 | {
23 | public ScreenShotView()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/gui/Optick/Views/SummaryViewer.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using Profiler.ViewModels;
9 |
10 | namespace Profiler.Views
11 | {
12 | ///
13 | /// Interaction logic for SummaryViewer.xaml
14 | ///
15 | public partial class SummaryViewer : UserControl
16 | {
17 | public SummaryViewer()
18 | {
19 | InitializeComponent();
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/gui/Optick/Views/TaskTrackerView.xaml.cs:
--------------------------------------------------------------------------------
1 | using MahApps.Metro.Controls;
2 | using MahApps.Metro.Controls.Dialogs;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 | using System.Windows;
9 | using System.Windows.Controls;
10 | using System.Windows.Data;
11 | using System.Windows.Documents;
12 | using System.Windows.Input;
13 | using System.Windows.Media;
14 | using System.Windows.Media.Imaging;
15 | using System.Windows.Navigation;
16 | using System.Windows.Shapes;
17 |
18 | namespace Profiler.Views
19 | {
20 | ///
21 | /// Interaction logic for TaskTrackerView.xaml
22 | ///
23 | public partial class TaskTrackerView : MetroWindow
24 | {
25 | public TaskTrackerView()
26 | {
27 | InitializeComponent();
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/gui/Optick/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/gui/Optick/themes/Brushes.xaml:
--------------------------------------------------------------------------------
1 |
5 | #FF888888
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/gui/OptickVSIX/BuildProgressState.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace OptickVSIX
8 | {
9 | public class BuildProgressState
10 | {
11 | public EnvDTE80.DTE2 DTE { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/gui/OptickVSIX/BuildProgressWindow.cs:
--------------------------------------------------------------------------------
1 | namespace OptickVSIX
2 | {
3 | using System;
4 | using System.Runtime.InteropServices;
5 | using Microsoft.VisualStudio.Shell;
6 |
7 | ///
8 | /// This class implements the tool window exposed by this package and hosts a user control.
9 | ///
10 | ///
11 | /// In Visual Studio tool windows are composed of a frame (implemented by the shell) and a pane,
12 | /// usually implemented by the package implementer.
13 | ///
14 | /// This class derives from the ToolWindowPane class provided from the MPF in order to use its
15 | /// implementation of the IVsUIElementPane interface.
16 | ///
17 | ///
18 | [Guid(WindowGuidString)]
19 | public class BuildProgressWindow : ToolWindowPane
20 | {
21 | public const string WindowGuidString = "86d4c770-4241-4cb2-a4b2-c79ac8b95834";
22 | public const string Title = "Build Progress Window";
23 |
24 | ///
25 | /// Initializes a new instance of the class.
26 | ///
27 | public BuildProgressWindow(BuildProgressState state) : base(null)
28 | {
29 | this.Caption = Title;
30 |
31 | // This is the user control hosted by the tool window; Note that, even if this class implements IDisposable,
32 | // we are not calling Dispose on this object. This is because ToolWindowPane calls Dispose on
33 | // the object returned by the Content property.
34 | this.Content = new BuildProgressWindowControl(state);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/gui/OptickVSIX/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("OptickVSIX")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("OptickVSIX")]
13 | [assembly: AssemblyCopyright("")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // Version information for an assembly consists of the following four values:
23 | //
24 | // Major Version
25 | // Minor Version
26 | // Build Number
27 | // Revision
28 | //
29 | // You can specify all the values or you can default the Build and Revision Numbers
30 | // by using the '*' as shown below:
31 | // [assembly: AssemblyVersion("1.0.*")]
32 | [assembly: AssemblyVersion("1.0.0.0")]
33 | [assembly: AssemblyFileVersion("1.0.0.0")]
34 |
--------------------------------------------------------------------------------
/gui/OptickVSIX/Resources/BuildProgressWindowCommand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/OptickVSIX/Resources/BuildProgressWindowCommand.png
--------------------------------------------------------------------------------
/gui/OptickVSIX/Resources/Style.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | 22
12 |
--------------------------------------------------------------------------------
/gui/OptickVSIX/source.extension.vsixmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | OptickVSIX
6 | Empty VSIX Project.
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/gui/Profiler.Controls/ColorToBrushConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Data;
3 | using System.Windows.Media;
4 | using Profiler.Data;
5 |
6 |
7 | namespace Profiler.Controls
8 | {
9 | public class ColorToBrushConverter : IValueConverter
10 | {
11 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
12 | {
13 | if (value is Color)
14 | return new SolidColorBrush((Color)value);
15 |
16 | return null;
17 | }
18 |
19 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
20 | {
21 | throw new NotImplementedException();
22 | }
23 | }
24 |
25 | public class CategoryWidthConverter : IMultiValueConverter
26 | {
27 | public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
28 | {
29 | double ratio = (double)values[0];
30 | double availiableSpace = (double)values[1];
31 |
32 | return Math.Max(ratio * availiableSpace - 1, 0);
33 | }
34 |
35 | public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
36 | {
37 | throw new NotImplementedException();
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/gui/Profiler.Controls/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Optick.Controls")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Optick.Controls")]
13 | [assembly: AssemblyCopyright("Copyright © 2020")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("2b515f9a-27ed-4a0f-85f1-2e73b838bd81")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/gui/Profiler.Controls/RoutedEvents.cs:
--------------------------------------------------------------------------------
1 | using Profiler.Data;
2 | using System;
3 | using System.Collections.Generic;
4 |
5 | using System.Windows;
6 |
7 | namespace Profiler.Controls
8 | {
9 | public class HighlightFrameEventArgs : RoutedEventArgs
10 | {
11 | public List Items { get; set; }
12 |
13 | public HighlightFrameEventArgs(IEnumerable items, bool focus = true)
14 | : base(ThreadViewControl.HighlightFrameEvent)
15 | {
16 | Items = new List(items);
17 | }
18 | }
19 |
20 | public class FocusFrameEventArgs : RoutedEventArgs
21 | {
22 | public Data.Frame Frame { get; set; }
23 | public IDurable Focus { get; set; }
24 |
25 | public FocusFrameEventArgs(RoutedEvent routedEvent, Data.Frame frame, IDurable focus = null) : base(routedEvent)
26 | {
27 | Frame = frame;
28 | Focus = focus;
29 | }
30 |
31 | public delegate void Handler(object sender, FocusFrameEventArgs e);
32 | }
33 |
34 | public class GlobalEvents
35 | {
36 | public static readonly RoutedEvent FocusFrameEvent = EventManager.RegisterRoutedEvent("FocusFrame", RoutingStrategy.Bubble, typeof(FocusFrameEventArgs.Handler), typeof(GlobalEvents));
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/gui/Profiler.Controls/ThreadView/SamplingThreadView.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/gui/Profiler.Controls/ThreadView/ThreadNameView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace Profiler.Controls
17 | {
18 | ///
19 | /// Interaction logic for ThreadNameView.xaml
20 | ///
21 | public partial class ThreadNameView : UserControl
22 | {
23 | public ThreadNameView()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/gui/Profiler.Controls/ThreadView/ThreadViewSettings.cs:
--------------------------------------------------------------------------------
1 | using Profiler.InfrastructureMvvm;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.ComponentModel.DataAnnotations;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | namespace Profiler.Controls
10 | {
11 | public enum ExpandMode
12 | {
13 | [Display(Name = "Expand MainThread", Description = "Expand MainThread Only")]
14 | ExpandMain,
15 | [Display(Name = "Expand All", Description = "Expand All Threads")]
16 | ExpandAll,
17 | [Display(Name = "Collapse All", Description = "Collapse All Threads")]
18 | CollapseAll,
19 | }
20 |
21 | public class ThreadViewSettings : BaseViewModel
22 | {
23 | public int CollapsedMaxThreadDepth { get; set; } = 2;
24 | public int ExpandedMaxThreadDepth { get; set; } = 12;
25 | public ExpandMode ThreadExpandMode { get; set; } = ExpandMode.ExpandAll;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/gui/Profiler.Controls/ViewModels/ThreadFilterViewModel.cs:
--------------------------------------------------------------------------------
1 | using Profiler.Data;
2 | using Profiler.InfrastructureMvvm;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | namespace Profiler.Controls.ViewModels
10 | {
11 | class ThreadFilterViewModel : BaseViewModel
12 | {
13 | private FrameGroup _group = null;
14 | public FrameGroup Group
15 | {
16 | get { return _group; }
17 | set { SetProperty(ref _group, value); }
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/gui/Profiler.Controls/Views/ThreadFilterView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace Profiler.Views
17 | {
18 | ///
19 | /// Interaction logic for ThreadFilterView.xaml
20 | ///
21 | public partial class ThreadFilterView : UserControl
22 | {
23 | public ThreadFilterView()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/gui/Profiler.Controls/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/gui/Profiler.Data/CaptureSettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Profiler.Data
8 | {
9 | public class CaptureSettings
10 | {
11 | public Mode Mode { get; set; } = (Mode.INSTRUMENTATION_CATEGORIES | Mode.INSTRUMENTATION_EVENTS);
12 | public UInt32 CategoryMask { get; set; } = UInt32.MaxValue;
13 | public UInt32 SamplingFrequencyHz { get; set; } = 1000;
14 | public UInt32 FrameLimit { get; set; } = 0;
15 | public UInt32 TimeLimitUs { get; set; } = 0;
16 | public UInt32 MaxSpikeLimitUs { get; set; } = 0;
17 | public UInt64 MemoryLimitMb { get; set; } = 0;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/gui/Profiler.Data/Frame.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.IO;
6 | using System.Windows.Media;
7 | using System.Windows;
8 |
9 | namespace Profiler.Data
10 | {
11 | public abstract class Frame
12 | {
13 | public DataResponse Response { get; private set; }
14 |
15 | public FrameGroup Group { get; set; }
16 | public virtual String Description { get; set; }
17 | public virtual String FilteredDescription { get; set; }
18 | public virtual double Duration { get; set; }
19 |
20 | public bool IsLoaded { get; protected set; }
21 | public abstract void Load();
22 |
23 | public Frame(DataResponse response, FrameGroup group)
24 | {
25 | Group = group;
26 | Response = response;
27 | }
28 |
29 | public abstract DataResponse.Type ResponseType { get; }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/gui/Profiler.Data/Mode.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Profiler.Data
8 | {
9 | public enum Mode
10 | {
11 | OFF = 0x0,
12 | INSTRUMENTATION_CATEGORIES = (1 << 0),
13 | INSTRUMENTATION_EVENTS = (1 << 1),
14 | SAMPLING = (1 << 2),
15 | TAGS = (1 << 3),
16 | AUTOSAMPLING = (1 << 4),
17 | SWITCH_CONTEXT = (1 << 5),
18 | IO = (1 << 6),
19 | GPU = (1 << 7),
20 | END_SCREENSHOT = (1 << 8),
21 | RESERVED_0 = (1 << 9),
22 | RESERVED_1 = (1 << 10),
23 | HW_COUNTERS = (1 << 11),
24 | LIVE = (1 << 12),
25 | RESERVED_2 = (1 << 13),
26 | RESERVED_3 = (1 << 14),
27 | RESERVED_4 = (1 << 15),
28 | SYS_CALLS = (1 << 16),
29 | OTHER_PROCESSES = (1 << 17),
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/gui/Profiler.Data/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Profiler.Data")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Profiler.Data")]
13 | [assembly: AssemblyCopyright("Copyright © 2020")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("37d3fa6a-86fa-43b2-8a4f-681daa3c5e63")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/gui/Profiler.Data/ResponseHolder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Profiler.Data
8 | {
9 | public abstract class IResponseHolder
10 | {
11 | public abstract DataResponse Response { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/gui/Profiler.Data/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/DirectXCanvas.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Fonts/SegoeUI_16_Normal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Profiler.DirectX/Fonts/SegoeUI_16_Normal_0.png
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Fonts/SegoeUI_20_Normal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Profiler.DirectX/Fonts/SegoeUI_20_Normal_0.png
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Fonts/SegoeUI_24_Normal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Profiler.DirectX/Fonts/SegoeUI_24_Normal_0.png
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Fonts/SegoeUI_28_Normal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Profiler.DirectX/Fonts/SegoeUI_28_Normal_0.png
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Fonts/SegoeUI_32_Normal_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Profiler.DirectX/Fonts/SegoeUI_32_Normal_0.png
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Fragment.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using SharpDX.Direct3D11;
7 |
8 | namespace Profiler.DirectX
9 | {
10 | public class Fragment : IDisposable
11 | {
12 | public PixelShader PS { get; set; }
13 | public VertexShader VS { get; set; }
14 | public InputLayout Layout { get; set; }
15 |
16 | public void Dispose()
17 | {
18 | PS.Dispose();
19 | VS.Dispose();
20 | Layout.Dispose();
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Optick.DirectX")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Optick.DirectX")]
13 | [assembly: AssemblyCopyright("Copyright © 2020")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("e86c057e-e135-4100-a4a4-c943c7f14c56")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/RenderSettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Profiler.DirectX
8 | {
9 | public class RenderSettings
10 | {
11 | public static double dpiScaleX = 1.0;
12 | public static double dpiScaleY = 1.0;
13 |
14 | static RenderSettings()
15 | {
16 | using (System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(IntPtr.Zero))
17 | {
18 | dpiScaleX = (g.DpiX / 96.0);
19 | dpiScaleY = (g.DpiY / 96.0);
20 | }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Shaders/Basic.fx:
--------------------------------------------------------------------------------
1 | cbuffer ConstantBuffer : register(b0)
2 | {
3 | matrix View;
4 | matrix World;
5 | }
6 |
7 | struct VS_IN
8 | {
9 | float2 pos : POSITION;
10 | float4 col : COLOR;
11 | };
12 |
13 | struct PS_IN
14 | {
15 | float4 pos : SV_POSITION;
16 | float4 col : COLOR;
17 | };
18 |
19 | PS_IN VS( VS_IN input )
20 | {
21 | PS_IN output = (PS_IN)0;
22 |
23 | float4x4 wv = mul(View, World);
24 |
25 | output.pos = mul(wv, float4(input.pos, 0.5f, 1.0f));
26 | output.col = input.col;
27 |
28 | return output;
29 | }
30 |
31 | float4 PS( PS_IN input ) : SV_Target
32 | {
33 | return input.col;
34 | }
35 |
36 | technique10 Render
37 | {
38 | pass P0
39 | {
40 | SetGeometryShader( 0 );
41 | SetVertexShader( CompileShader( vs_4_0, VS() ) );
42 | SetPixelShader( CompileShader( ps_4_0, PS() ) );
43 | }
44 | }
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Shaders/Basic_ps.fxo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Profiler.DirectX/Shaders/Basic_ps.fxo
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Shaders/Basic_vs.fxo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Profiler.DirectX/Shaders/Basic_vs.fxo
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Shaders/Compile.bat:
--------------------------------------------------------------------------------
1 | Echo Building shaders
2 | Echo Launch dir: "%~dp0"
3 | Echo Current dir: "%CD%"
4 | cd "%~dp0"
5 | PATH="c:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x64\"
6 | fxc.exe /T vs_4_0 /O3 /E VS /Fo Basic_vs.fxo Basic.fx
7 | fxc.exe /T ps_4_0 /O3 /E PS /Fo Basic_ps.fxo Basic.fx
8 | fxc.exe /T vs_4_0 /O3 /E VS /Fo Text_vs.fxo Text.fx
9 | fxc.exe /T ps_4_0 /O3 /E PS /Fo Text_ps.fxo Text.fx
10 |
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Shaders/Text.fx:
--------------------------------------------------------------------------------
1 | cbuffer ConstantBuffer : register(b0)
2 | {
3 | matrix View;
4 | matrix World;
5 | }
6 |
7 | Texture2D FontTexture : register(t0);
8 | SamplerState FontSampler : register(s0);
9 |
10 | struct VS_IN
11 | {
12 | float2 pos : POSITION;
13 | float2 uv : TEXCOORD0;
14 | float4 col : COLOR;
15 | };
16 |
17 | struct PS_IN
18 | {
19 | float4 pos : SV_POSITION;
20 | float2 uv : TEXCOORD0;
21 | float4 col : COLOR;
22 | };
23 |
24 | PS_IN VS(VS_IN input)
25 | {
26 | PS_IN output = (PS_IN)0;
27 |
28 | float4x4 wv = mul(View, World);
29 |
30 | output.pos = mul(wv, float4(input.pos, 0.5f, 1.0f));
31 | output.uv = input.uv;
32 | output.col = input.col;
33 |
34 | return output;
35 | }
36 |
37 | float4 PS(PS_IN input) : SV_Target
38 | {
39 | float4 tex = FontTexture.Sample(FontSampler, input.uv);
40 | return float4(input.col.rgb, tex.r);// *input.col;
41 | }
42 |
43 | technique10 Render
44 | {
45 | pass P0
46 | {
47 | SetGeometryShader(0);
48 | SetVertexShader(CompileShader(vs_4_0, VS()));
49 | SetPixelShader(CompileShader(ps_4_0, PS()));
50 | }
51 | }
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Shaders/Text_ps.fxo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Profiler.DirectX/Shaders/Text_ps.fxo
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Shaders/Text_vs.fxo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bombomby/optick/8abd28dee1a4034c973a3d32cd1777118e72df7e/gui/Profiler.DirectX/Shaders/Text_vs.fxo
--------------------------------------------------------------------------------
/gui/Profiler.DirectX/Utils.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Profiler.DirectX
8 | {
9 | public class Utils
10 | {
11 | public static SharpDX.Color Convert(System.Windows.Media.Color color)
12 | {
13 | return new SharpDX.Color(color.R, color.G, color.B, color.A);
14 | }
15 |
16 | public static SharpDX.Matrix Convert(System.Windows.Media.Matrix m)
17 | {
18 | return new SharpDX.Matrix((float)m.M11, (float)m.M12, 0.0f, 0.0f,
19 | (float)m.M21, (float)m.M22, 0.0f, 0.0f,
20 | 0.0f, 0.0f, 1.0f, 0.0f,
21 | (float)m.OffsetX, (float)m.OffsetY, 0.0f, 1.0f);
22 | }
23 |
24 | public static System.Windows.Point Convert(SharpDX.Vector2 pos)
25 | {
26 | return new System.Windows.Point(pos.X, pos.Y);
27 | }
28 |
29 | public static System.Windows.Media.Color MultiplyColor(System.Windows.Media.Color color, float mul)
30 | {
31 | return System.Windows.Media.Color.FromRgb((byte)(color.R * mul), (byte)(color.G * mul), (byte)(color.B * mul));
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/gui/Profiler.InfrastructureMvvm/BaseViewModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel; //INotifyPropertyChanged
4 | using System.Runtime.CompilerServices; //CallerMemberName
5 | // using System.Windows; //DependencyObject, DependencyProperty
6 |
7 | namespace Profiler.InfrastructureMvvm
8 | {
9 | public abstract class BaseViewModel : INotifyPropertyChanged // DependencyObject,
10 | {
11 | public event PropertyChangedEventHandler PropertyChanged;
12 |
13 | protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
14 | {
15 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
16 | }
17 |
18 | protected bool SetProperty(ref T field, T value,[CallerMemberName] string propertyName = null)
19 | {
20 | if (EqualityComparer.Default.Equals(field, value)) return false;
21 | field = value;
22 | OnPropertyChanged(propertyName);
23 | return true;
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/gui/Profiler.InfrastructureMvvm/BoolToVisibilityConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Globalization;
4 | using System.Windows;
5 | using System.Windows.Data;
6 |
7 | namespace Profiler.InfrastructureMvvm
8 | {
9 | public sealed class BoolToVisibilityConverter : BoolToVisibilityConverterGeneric
10 | {
11 | public BoolToVisibilityConverter() :
12 | base(Visibility.Visible, Visibility.Collapsed)
13 | { }
14 | }
15 |
16 | public class BoolToVisibilityConverterGeneric : IValueConverter
17 | {
18 | public BoolToVisibilityConverterGeneric(T trueValue, T falseValue)
19 | {
20 | True = trueValue;
21 | False = falseValue;
22 | }
23 |
24 | public T True { get; set; }
25 | public T False { get; set; }
26 |
27 | public virtual object Convert(object value, Type targetType, object parameter, CultureInfo culture)
28 | {
29 | return value is bool && ((bool)value) ? True : False;
30 | }
31 |
32 | public virtual object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
33 | {
34 | return value is T && EqualityComparer.Default.Equals((T)value, True);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/gui/Profiler.InfrastructureMvvm/IDialogViewModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Profiler.InfrastructureMvvm
8 | {
9 | ///
10 | /// Interface for dialog view models.
11 | ///
12 | public interface IDialogViewModel
13 | {
14 | ///
15 | /// This event is raised when the dialog was closed.
16 | ///
17 | event EventHandler Closed;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/gui/Profiler.InfrastructureMvvm/IFileDialogService.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Profiler.InfrastructureMvvm
3 | {
4 | public interface IFileDialogService
5 | {
6 | void ShowMessage(string message);
7 | string FilePath { get; set; }
8 | bool OpenFileDialog();
9 | bool OpenFolderDialog();
10 | bool SaveFileDialog();
11 | bool SaveFileDialog(string defaultFileName, string defaultExt, string filter = null, string initialDirectory = null);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/gui/Profiler.InfrastructureMvvm/IOnClosingHandler.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Profiler.InfrastructureMvvm
3 | {
4 | ///
5 | /// This interface can be implemented by view models, which want to be notified when
6 | /// the corresponding view is about to be closed.
7 | ///
8 | public interface IOnClosingHandler
9 | {
10 | ///
11 | /// This method is called when the corresponding view closes.
12 | ///
13 | ///
14 | /// When the corresponding view is a , this method is called when
15 | /// is raised; otherwise, when is raised.
16 | ///
17 | /// If you want to intercept when the corresponding window is about to be closed,
18 | /// use .
19 | void OnClosing();
20 | }
21 |
22 | ///
23 | /// This interface can be implemented by view models, which want to be notified when
24 | /// the corresponding window is about to be closed.
25 | ///
26 | public interface ICancelableOnClosingHandler
27 | {
28 | ///
29 | /// This method is called when the corresponding view's event was raised.
30 | ///
31 | /// the the window can be closed; otherwise, .
32 | bool OnClosing();
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/gui/Profiler.InfrastructureMvvm/IOnLoadedHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Profiler.InfrastructureMvvm
8 | {
9 | ///
10 | /// This interface can be implemented by view models, which want to be notified when
11 | /// the corresponding view was loaded.
12 | ///
13 | public interface IOnLoadedHandler
14 | {
15 | ///
16 | /// This method is called when the corresponding view's or
17 | /// event was raised.
18 | ///
19 | ///
20 | Task OnLoadedAsync();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/gui/Profiler.InfrastructureMvvm/IUiExecution.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Profiler.InfrastructureMvvm
8 | {
9 | ///
10 | /// Provides an method to execute an action in the dispatcher thread.
11 | ///
12 | public interface IUiExecution
13 | {
14 | ///
15 | /// Executes the passed action in the dispatcher thread.
16 | ///
17 | /// The action to execute.
18 | void Execute(Action action);
19 |
20 | ///
21 | /// Executes the passed action in the dispatcher thread asynchronously.
22 | ///
23 | /// The action to execute.
24 | Task ExecuteAsync(Action action);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/gui/Profiler.InfrastructureMvvm/IWindowManager.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | namespace Profiler.InfrastructureMvvm
4 | {
5 | ///
6 | /// Declares methods to show windows.
7 | ///
8 | public interface IWindowManager
9 | {
10 | ///
11 | /// Shows a window for a given view model type.
12 | ///
13 | /// An optional owner for the new window.
14 | /// The type of the view model.
15 | /// The window.
16 | Window ShowWindow(Window owningWindow = null);
17 |
18 | ///
19 | /// Shows a window for a given view model object.
20 | ///
21 | /// The view model for the window to be displayed.
22 | /// An optional owner for the new window.
23 | /// The window.
24 | Window ShowWindow(object viewModel, Window owningWindow = null);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/gui/Profiler.InfrastructureMvvm/RelayCommand.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Input; //ICommand
3 |
4 |
5 | namespace Profiler.InfrastructureMvvm
6 | {
7 | public class RelayCommand : ICommand
8 | {
9 | public Predicate